Macro Deodatis 1996 Wind Simulation Points: Difference between revisions

From LabRPS Documentation
Jump to navigation Jump to search
(Created page with "{{Macro |Name=Macro Deodatis 1996 Wind Simulation Points |Icon=Macro_Deodatis_1996_Wind_Simulation_Points.png |Description=This macro create simulation point according to G. Deodatis 1996. |Author=Koffi Daniel |Version=1.0 |Date=2024-04-15 |RPSVersion=All |Download=[https://wiki.freecad.org/images/f/f5/Macro_3D_Parametric_Curve.png ToolBar Icon] |SeeAlso=Macro Deodatis 1996 Mean Wind Profile }} ==Description== This macro create...")
 
 
(13 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Macro
{{Macro
|Name=Macro Deodatis 1996 Wind Simulation Points
|Name=Macro Deodatis 1996 Wind Simulation Points
|Icon=Macro_Deodatis_1996_Wind_Simulation_Points.png
|Description=This macro create simulation point according to G. Deodatis 1996.
|Description=This macro create simulation point according to G. Deodatis 1996.
|Author=Koffi Daniel
|Author=LabRPS
|Version=1.0
|Version=1.0
|Date=2024-04-15
|Date=2024-04-15
|RPSVersion=All
|RPSVersion=All
|Download=[https://wiki.freecad.org/images/f/f5/Macro_3D_Parametric_Curve.png ToolBar Icon]
|SeeAlso=[[Macro_Deodatis_1996_Mean_Wind_Profile|Macro Deodatis 1996 Mean Wind Profile]]
|SeeAlso=[[Macro_Deodatis_1996_Mean_Wind_Profile|Macro Deodatis 1996 Mean Wind Profile]]
}}
}}
This macro create simulation point according to G. Deodatis 1996. There are three simulation points created with WindLabFeatureLocationDistribution feature.
[[File:Deodatis1996WindSimulationPoints.png|1024px|center]]


==Description==
{{Caption|Simulation Point Distribution}}


This macro create simulation point according to G. Deodatis 1996. There are three simulation points created with WindLabFeatureLocationDistribution feature.
[[File:Macro_Deodatis_1996_Wind_Simulation_Points_Heighs.png|600px|Points Heights‎|center]]
[[File:Deodatis1996WindSimulationPoints.png|600px]]
{{Caption|Example Simulation Point Distribution}}


==Original Script==  
==Script==  


You can find the updated code (16/04/2024) on the following Github repository:
You can find the source code on the following Github repository:
[https://github.com/LabRPS/LabRPS-macros/blob/master/WindLab/Deodatis1996/Deodatis1996_LocationDistribution.RPSMacro Get the code here!]
[https://github.com/LabRPS/LabRPS-macros/blob/master/WindLab/Deodatis1996/Deodatis1996_LocationDistribution.RPSMacro Get the code here!]


==Modified Script==
'''Macro_Deodatis_1996_Wind_Simulation_Points.RPSMacro'''
 
[[File:Macro_Deodatis_1996_Wind_Simulation_Points_Heighs.png|600px|Points Heights‎]]


 
{{Code|code=
'''Macro Deodatis 1996 Wind Simulation Points.FCMacro'''
 
{{MacroCode|code=
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# (c) Koffi Daniel 2024
# (c) Koffi Daniel 2024
import LabRPS
from LabRPS import Vector as vec
import WindLab
import WindLab
import GeneralToolsGui
import WindLabObjects
import WindLabObjects
from LabRPS import Vector as vec
import LabRPS
import numpy


#install the WindLab plugin with all its plugged features
def compute():
installResuslt = WindLab.installPlugin("WindLabPlugin")
    installResuslt = WindLab.installPlugin("WindLabPlugin")


doc = LabRPS.newDocument()
    doc = LabRPS.ActiveDocument
    if not doc:
      doc = LabRPS.newDocument()


# create new simulation with default name "Simulation"
    # create WindLab simulation called "Simulation"
sim = WindLabObjects.makeSimulation(doc)
    sim = WindLabObjects.makeSimulation(doc, "Simulation")
      
      
# check if the simulation is successfully created
    # check if the simulation does really exist
if not sim:
    if not sim:
    LabRPS.Console.PrintError("The simulation does not exist.\n")
      LabRPS.Console.PrintError("The simulation does not exist.\n")
      # abord the computation
 
    featureType = "General Distribution"
    featureGroup = "Location Distribution"
 
    # create the feature and add it to the existing simulation (you may refer to the WindLab Workbench page in
    # case you don't understand the next line)
    genSimPoints= WindLabObjects.makeFeature("MyNewFeature", sim.Name, featureType, featureGroup)
      
      
# set simulation parameters
    # check if the created feature is good
sim.NumberOfFrequency = 2048
    if not genSimPoints:
sim.MaxFrequency = "0.64 Hz" # 4 rad/s;
      LabRPS.Console.PrintError("Error on creating the uniform points feature.\n")
sim.FrequencyIncrement = "0.00031 Hz" # 0.00195 rad/s;
      # abord the computation
sim.TimeIncrement = "0.785 s"
sim.NumberOfTimeIncrements = 9651


# create new location distribution in the simulation called "Simulation"
    # create the simulation points by their coordinates
loc = WindLabObjects.makeFeature("SimulationPoints", "Simulation", "Location Distribution", "General Distribution")
    v1 = vec(0, 0, 35)
      
     v2 = vec(0, 0, 40)
# check if the created location distribution feature is null
     v3 = vec(0, 0, 140)
if not loc:
     LabRPS.Console.PrintError("Error on creating the location distribution.\n")


# find all the feature which are location distribution feature
    # add the points to the locations
myFeatures = sim.findAllWindLabFeaturesOfThisType('WindLabAPI::WindLabFeatureLocationDistribution')
    genSimPoints.Locations = [v1, v2, v3]


#find all rps types
    # compute the simulation points coordinates. WindLab will internally use the "genSimPoints" feature
rpsTypes = sim.getRPSTypesOfPluggableFeatures()
    simPoints = sim.computeLocationCoordinateMatrixP3()
print(rpsTypes)


v1 = vec(0, 0, 35)
    # now you can convert the coordinate matrix to numpy array and use it for any other purposes
v2 = vec(0, 0, 40)
    arr = numpy.asarray(simPoints)
v3 = vec(0, 0, 140)
loc.Locations = [v1, v2, v3]


# run the method "computeLocationCoordinateMatrixP3" of the feature and store the result.
    # you can also show the result in a table, pass False as last argument to the function to ask
# Note that here, this method will be called for the active location distribution feature
    # LabRPS to only show the data without plotting them
locRes = sim.computeLocationCoordinateMatrixP3()
    GeneralToolsGui.GeneralToolsPyTool.showArray(sim.getSimulationData().numberOfSpatialPosition, 4, simPoints, False)


if LabRPS.GuiUp:
compute()
    import WindLabGui
    #show the location coordinate in Alphaplot
    WindLabGui.WindLabPythonPluginUtilities.showArray(sim.getSimulationData().numberOfSpatialPosition, 4, locRes)
    loc.ViewObject.Document.activeView().viewAxonometric()
    loc.ViewObject.Document.activeView().fitAll()
 
    import numpy
    import matplotlib.pyplot as plt
    arr = numpy.asarray(locRes)
    fig, ax = plt.subplots()
    fig.suptitle('Location Distribution')
    ax.plot(arr[:,0], arr[:,3], 'o-')
    ax.set_xlabel('Simulation Point Number')
    ax.set_ylabel('Height (m)')
    ax.grid(True)
    plt.show()
   
doc.recompute()


}}
}}


{{clear}}
{{clear}}

Latest revision as of 19:59, 17 January 2025

Macro Deodatis 1996 Wind Simulation Points.png Macro Deodatis 1996 Wind Simulation Points

Description
This macro create simulation point according to G. Deodatis 1996.

Macro version: 1.0
Last modified: 2024-04-15
LabRPS version: All
Author: LabRPS
Author
LabRPS
Download
None
Links
Macro Version
1.0
Date last modified
2024-04-15
LabRPS Version(s)
All
Default shortcut
None
See also
Macro Deodatis 1996 Mean Wind Profile

This macro create simulation point according to G. Deodatis 1996. There are three simulation points created with WindLabFeatureLocationDistribution feature.

Deodatis1996WindSimulationPoints.png

Simulation Point Distribution

Points Heights‎

Script

You can find the source code on the following Github repository: Get the code here!

Macro_Deodatis_1996_Wind_Simulation_Points.RPSMacro

# -*- coding: utf-8 -*-
# (c) Koffi Daniel 2024
import WindLab
import GeneralToolsGui
import WindLabObjects
from LabRPS import Vector as vec
import LabRPS
import numpy

def compute():
    installResuslt = WindLab.installPlugin("WindLabPlugin")

    doc = LabRPS.ActiveDocument
    if not doc:
       doc = LabRPS.newDocument()

    # create WindLab simulation called "Simulation"
    sim = WindLabObjects.makeSimulation(doc, "Simulation")
    
    # check if the simulation does really exist
    if not sim:
       LabRPS.Console.PrintError("The simulation does not exist.\n")
       # abord the computation 
  
    featureType = "General Distribution"
    featureGroup = "Location Distribution"
  
    # create the feature and add it to the existing simulation (you may refer to the WindLab Workbench page in 
    # case you don't understand the next line)
    genSimPoints= WindLabObjects.makeFeature("MyNewFeature", sim.Name, featureType, featureGroup)
    
    # check if the created feature is good
    if not genSimPoints:
       LabRPS.Console.PrintError("Error on creating the uniform points feature.\n")
       # abord the computation

    # create the simulation points by their coordinates
    v1 = vec(0, 0, 35)
    v2 = vec(0, 0, 40)
    v3 = vec(0, 0, 140)

    # add the points to the locations
    genSimPoints.Locations = [v1, v2, v3]

    # compute the simulation points coordinates. WindLab will internally use the "genSimPoints" feature
    simPoints = sim.computeLocationCoordinateMatrixP3()

    # now you can convert the coordinate matrix to numpy array and use it for any other purposes
    arr = numpy.asarray(simPoints)

    # you can also show the result in a table, pass False as last argument to the function to ask 
    # LabRPS to only show the data without plotting them
    GeneralToolsGui.GeneralToolsPyTool.showArray(sim.getSimulationData().numberOfSpatialPosition, 4, simPoints, False)

compute()