From 4f5e13b1b9a750887f1773974b30555b7736d84d Mon Sep 17 00:00:00 2001 From: Mayank Chetan Date: Fri, 3 Jan 2025 11:23:10 -0700 Subject: [PATCH 1/6] updating OpenFAST model to v4.0; add to .gitignore --- .gitignore | 1 + .../IEA-15-240-RWT-Monopile.fst | 14 +- .../IEA-15-240-RWT-Monopile_AeroDyn15.dat | 91 +++++++----- .../IEA-15-240-RWT-Monopile_ElastoDyn.dat | 28 +++- .../IEA-15-240-RWT-Monopile_HydroDyn.dat | 131 +++++++----------- .../IEA-15-240-RWT-Monopile_SeaState.dat | 72 ++++++++++ .../IEA-15-240-RWT-Monopile_SubDyn.dat | 28 ++-- ...IEA-15-240-RWT-Monopile_wDTUcontroller.fst | 27 +++- .../IEA-15-240-RWT_AeroDyn15.dat | 91 +++++++----- .../IEA-15-240-RWT_OLAF.dat | 4 +- .../IEA-15-240-RWT_OLAF.fst | 14 +- .../IEA-15-240-RWT-UMaineSemi.fst | 30 ++-- .../IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat | 91 +++++++----- .../IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat | 28 +++- .../IEA-15-240-RWT-UMaineSemi_HydroDyn.dat | 125 ++++++----------- .../IEA-15-240-RWT-UMaineSemi_SeaState.dat | 72 ++++++++++ .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 26 ++-- .../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat | 20 +-- .../IEA-15-240-RWT_InflowFile.dat | 8 +- 19 files changed, 537 insertions(+), 364 deletions(-) create mode 100644 OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat create mode 100644 OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_SeaState.dat diff --git a/.gitignore b/.gitignore index 9d8c47f7..8cc104d2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.out *.outb *.sum +*.sum.yaml *.ech *.bts *.dbg diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile.fst b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile.fst index 82e5c429..82cb9ed6 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile.fst +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile.fst @@ -10,10 +10,11 @@ False Echo - Echo input data to .ech (flag) 99999.0 DT_UJac - Time between calls to get Jacobians (s) 1000000.0 UJacSclFact - Scaling factor used in Jacobians (-) ---------------------- FEATURE SWITCHES AND FLAGS ------------------------------ -1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades} -1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM} -2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15} +1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades; 3=Simplified ElastoDyn} +1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from ExtInflow} +2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDisk; 2=AeroDyn; 3=ExtLoads} 1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} +1 CompSeaSt - Compute sea state information (switch) {0=None; 1=SeaState} 1 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} 1 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF} 0 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} @@ -37,6 +38,7 @@ False Echo - Echo input data to .ech (flag) "../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string) "IEA-15-240-RWT-Monopile_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) "IEA-15-240-RWT-Monopile_ServoDyn.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string) +"IEA-15-240-RWT-Monopile_SeaState.dat" SeaStFile - Name of file containing sea state input parameters (quoted string) "IEA-15-240-RWT-Monopile_HydroDyn.dat" HydroFile - Name of file containing hydrodynamic input parameters (quoted string) "IEA-15-240-RWT-Monopile_SubDyn.dat" SubFile - Name of file containing sub-structural input parameters (quoted string) "none" MooringFile - Name of file containing mooring system input parameters (quoted string) @@ -47,7 +49,7 @@ False SumPrint - Print summary data to ".sum" (fla 99999.0 ChkptTime - Amount of time between creating checkpoint files for potential restart (s) "default" DT_Out - Time step for tabular output (s) (or "default") 0.0 TStart - Time to begin tabular output (s) -3 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both} +2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both 1 and 2, 4: uncompressed binary [.outb, 5: both 1 and 4} True TabDelim - Use tab delimiters in text tabular output file? (flag) {uses spaces if false} "ES10.3E2" OutFmt - Format used for text tabular output, excluding the time channel. Resulting field should be 10 characters. (quoted string) ---------------------- LINEARIZATION ------------------------------------------- @@ -56,8 +58,8 @@ False CalcSteady - Calculate a steady-state periodic operating 3 TrimCase - Controller parameter to be trimmed {1:yaw; 2:torque; 3:pitch} [used only if CalcSteady=True] (-) 0.001 TrimTol - Tolerance for the rotational speed convergence [used only if CalcSteady=True] (-) 0.01 TrimGain - Proportional gain for the rotational speed error (>0) [used only if CalcSteady=True] (rad/(rad/s) for yaw or pitch; Nm/(rad/s) for torque) -0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) -0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) +0.0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) +0.0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) 2 NLinTimes - Number of times to linearize (-) [>=1] [unused if Linearize=False] 30.000000, 60.000000 LinTimes - List of times at which to linearize (s) [1 to NLinTimes] [used only when Linearize=True and CalcSteady=False] 1 LinInputs - Inputs included in linearization (switch) {0=none; 1=standard; 2=all module inputs (debug)} [unused if Linearize=False] diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_AeroDyn15.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_AeroDyn15.dat index 59f6e268..e282ada5 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_AeroDyn15.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_AeroDyn15.dat @@ -2,43 +2,55 @@ IEA 15 MW Offshore Reference Turbine ====== General Options ============================================================================ False Echo - Echo the input to ".AD.ech"? (flag) -default DTAero - Time interval for aerodynamic calculations {or "default"} (s) -1 WakeMod - Type of wake/induction model (switch) {0=none, 1=BEMT, 2=DBEMT, 3=OLAF} [WakeMod cannot be 2 or 3 when linearizing] -2 AFAeroMod - Type of blade airfoil aerodynamics model (switch) {1=steady model, 2=Beddoes-Leishman unsteady model} [AFAeroMod must be 1 when linearizing] +Default DTAero - Time interval for aerodynamic calculations {or "default"} (s) +1 Wake_Mod - Wake/induction model (switch) {0=none, 1=BEMT, 3=OLAF} [Wake_Mod cannot be 2 or 3 when linearizing] 1 TwrPotent - Type tower influence on wind based on potential flow around the tower (switch) {0=none, 1=baseline potential flow, 2=potential flow with Bak correction} 1 TwrShadow - Calculate tower influence on wind based on downstream tower shadow (switch) {0=none, 1=Powles model, 2=Eames model} True TwrAero - Calculate tower aerodynamic loads? (flag) -False FrozenWake - Assume frozen wake during linearization? (flag) [used only when WakeMod=1 and when linearizing] -False CavitCheck - Perform cavitation check? (flag) [AFAeroMod must be 1 when CavitCheck=true] +False CavitCheck - Perform cavitation check? (flag) [UA_Mod must be 0 when CavitCheck=true] False Buoyancy - Include buoyancy effects? (flag) -False CompAA - Flag to compute AeroAcoustics calculation [only used when WakeMod=1 or 2] +False NacelleDrag - Include Nacelle Drag effects? (flag) +False CompAA - Flag to compute AeroAcoustics calculation [used only when Wake_Mod = 1 or 2] AeroAcousticsInput.dat AA_InputFile - AeroAcoustics input file [used only when CompAA=true] ====== Environmental Conditions =================================================================== "default" AirDens - Air density (kg/m^3) -"default" KinVisc - Kinematic air viscosity (m^2/s) -"default" SpdSound - Speed of sound (m/s) +"default" KinVisc - Kinematic viscosity of working fluid (m^2/s) +"default" SpdSound - Speed of sound in working fluid (m/s) "default" Patm - Atmospheric pressure (Pa) [used only when CavitCheck=True] -"default" Pvap - Vapour pressure of fluid (Pa) [used only when CavitCheck=True] -====== Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 SkewMod - Type of skewed-wake correction model (switch) {1=uncoupled, 2=Pitt/Peters, 3=coupled} [unused when WakeMod=0 or 3] -default SkewModFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when SkewMod=2; unused when WakeMod=0 or 3] -True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3] -True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when WakeMod=0 or 3] -True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when WakeMod=0 or 3] -True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when WakeMod=0 or 3] -True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when WakeMod=0,3 or TanInd=FALSE] -default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when WakeMod=0 or 3] -500 MaxIter - Maximum number of iteration steps (-) [unused when WakeMod=0] -====== Dynamic Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {1=constant tau1, 2=time-dependent tau1} (-) [used only when WakeMod=2] -29.03 tau1_const - Time constant for DBEMT (s) [used only when WakeMod=2 and DBEMT_Mod=1] -====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when WakeMod=3] -../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when WakeMod=3] -====== Beddoes-Leishman Unsteady Airfoil Aerodynamics Options ===================================== [used only when AFAeroMod=2] -3 UAMod - Unsteady Aero Model Switch (switch) {1=Baseline model (Original), 2=Gonzalez's variant (changes in Cn,Cc,Cm), 3=Minnema/Pierce variant (changes in Cc and Cm)} [used only when AFAeroMod=2] -True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when AFAeroMod=2] -0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] -1.0 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] +"default" Pvap - Vapour pressure of working fluid (Pa) [used only when CavitCheck=True] +====== Blade-Element/Momentum Theory Options ====================================================== [unused when Wake_Mod=0 or 3, except for BEM_Mod] +1 BEM_Mod - BEM model {1=legacy NoSweepPitchTwist, 2=polar} (switch) [used for all Wake_Mod to determine output coordinate system] +--- Skew correction +1 Skew_Mod - Skew model {0=No skew model, -1=Remove non-normal component for linearization, 1=skew model active} +False SkewMomCorr - Turn the skew momentum correction on or off [used only when Skew_Mod=1] +1 SkewRedistr_Mod - Type of skewed-wake correction model (switch) {0=no redistribution, 1=Glauert/Pitt/Peters, default=1} [used only when Skew_Mod=1] +default SkewRedistrFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when Skew_Mod=1 and SkewRedistr_Mod=1] +--- BEM algorithm +True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when Wake_Mod=0 or 3] +True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when Wake_Mod=0 or 3] +True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when Wake_Mod=0 or 3] +True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when Wake_Mod=0 or 3] +True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when Wake_Mod=0,3 or TanInd=FALSE] +Default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when Wake_Mod=0 or 3] +500 MaxIter - Maximum number of iteration steps (-) [unused when Wake_Mod=0] +--- Shear correction +False SectAvg - Use sector averaging (flag) +1 SectAvgWeighting - Weighting function for sector average {1=Uniform, default=1} within a sector centered on the blade (switch) [used only when SectAvg=True] +default SectAvgNPoints - Number of points per sectors (-) {default=5} [used only when SectAvg=True] +default SectAvgPsiBwd - Backward azimuth relative to blade where the sector starts (<=0) {default=-60} (deg) [used only when SectAvg=True] +default SectAvgPsiFwd - Forward azimuth relative to blade where the sector ends (>=0) {default=60} (deg) [used only when SectAvg=True] +--- Dynamic wake/inflow +2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {0=No Dynamic Wake, -1=Frozen Wake for linearization, 1:constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation} (-) +29.03 tau1_const - Time constant for DBEMT (s) [used only when Wake_Mod=2 and DBEMT_Mod=1] +====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when Wake_Mod=3] +../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when Wake_Mod=3] +====== Unsteady Airfoil Aerodynamics Options ==================================================== +True AoA34 - Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used] +3 UA_Mod - Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L HGM+vortex 5 states, 6=Oye, 7=Boeing-Vertol} +True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when UA_Mod>0] +3 IntegrationMethod - Switch to indicate which integration method UA uses (1=RK4, 2=AB4, 3=ABM4, 4=BDF2) +0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAStartRad=0] +1 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAEndRad=1] ====== Airfoil Information ========================================================================= 1 AFTabMod - Interpolation method for multiple airfoil tables {1=1D interpolation on AoA (first table only); 2=2D interpolation on AoA and Re; 3=2D interpolation on AoA and UserProp} (-) 1 InCol_Alfa - The column in the airfoil tables that contains the angle of attack (-) @@ -103,15 +115,18 @@ True UseBlCm - Include aerodynamic pitching moment in calc "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(2) - Name of file containing distributed aerodynamic properties for Blade #2 (-) [unused if NumBl < 2] "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(3) - Name of file containing distributed aerodynamic properties for Blade #3 (-) [unused if NumBl < 3] ====== Hub Properties ============================================================================== [used only when Buoyancy=True] -0.0 VolHub - Hub volume (m^3) -0.0 HubCenBx - Hub center of buoyancy x direction offset (m) -====== Nacelle Properties ========================================================================== [used only when Buoyancy=True] -0.0 VolNac - Nacelle volume (m^3) -0,0,0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) -====== Tail fin Aerodynamics ======================================================================== -False TFinAero - Calculate tail fin aerodynamics model (flag) -"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] -====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] +0 VolHub - Hub volume (m^3) +0 HubCenBx - Hub center of buoyancy x direction offset (m) +====== Nacelle Properties ========================================================================== [used only when Buoyancy=True or NacelleDrag=True] +0 VolNac - Nacelle volume (m^3) +0.0, 0.0, 0.0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) +0, 0, 0 NacArea - Projected area of the nacelle in X, Y, Z in the nacelle coordinate system (m^2) +0, 0, 0 NacCd - Drag coefficient for the nacelle areas defined above (-) +0, 0, 0 NacDragAC - Position of aerodynamic center of nacelle drag in nacelle coordinates (m) +====== Tail Fin Aerodynamics ======================================================================= +False TFinAero - Calculate tail fin aerodynamics model (flag) +"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] +====== Tower Influence and Aerodynamics ============================================================ [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or Buoyancy=True] 20 NumTwrNds - Number of tower nodes used in the analysis (-) [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] TwrElev TwrDiam TwrCd TwrTI TwrCb !TwrTI used only with TwrShadow=2, TwrCb used only with Buoyancy=True (m) (m) (-) (-) (-) diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ElastoDyn.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ElastoDyn.dat index 6c7ab265..760fa6a9 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ElastoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ElastoDyn.dat @@ -3,7 +3,7 @@ IEA 15 MW offshore reference model monopile configuration ---------------------- SIMULATION CONTROL -------------------------------------- False Echo - Echo input data to ".ech" (flag) 3 Method - Integration method: {1: RK4, 2: AB4, or 3: ABM4} (-) -"default" DT Integration time step (s) +Default DT - Integration time step (s) ---------------------- DEGREES OF FREEDOM -------------------------------------- True FlapDOF1 - First flapwise blade mode DOF (flag) True FlapDOF2 - Second flapwise blade mode DOF (flag) @@ -61,12 +61,12 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 0.0 NcIMUyn - Lateral distance from the tower-top to the nacelle IMU (meters) 0.0 NcIMUzn - Vertical distance from the tower-top to the nacelle IMU (meters) 4.349459414248071 Twr2Shft - Vertical distance from the tower-top to the rotor shaft (meters) -144.386 TowerHt - Height of tower above ground level [onshore] or MSL [offshore] (meters) -15. TowerBsHt - Height of tower base above ground level [onshore] or MSL [offshore] (meters) -0.0 PtfmCMxt - Downwind distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) -0.0 PtfmCMyt - Lateral distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) -15. PtfmCMzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) -15. PtfmRefzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters) +144.386 TowerHt - Height of tower relative to ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] (meters) +15. TowerBsHt - Height of tower base relative to ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] (meters) +0.0 PtfmCMxt - Downwind distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) +0.0 PtfmCMyt - Lateral distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) +15. PtfmCMzt - Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) +15. PtfmRefzt - Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point (meters) ---------------------- MASS AND INERTIA ---------------------------------------- 0.0 TipMass(1) - Tip-brake mass, blade 1 (kg) 0.0 TipMass(2) - Tip-brake mass, blade 2 (kg) @@ -81,6 +81,9 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 0.0 PtfmRIner - Platform inertia for roll tilt rotation about the platform CM (kg m^2) 0.0 PtfmPIner - Platform inertia for pitch tilt rotation about the platform CM (kg m^2) 100000000.0 PtfmYIner - Platform inertia for yaw rotation about the platform CM (kg m^2) +0.0 PtfmXYIner - Platform xy moment of inertia about the platform CM (=-int(xydm)) (kg m^2) +0.0 PtfmYZIner - Platform yz moment of inertia about the platform CM (=-int(yzdm)) (kg m^2) +0.0 PtfmXZIner - Platform xz moment of inertia about the platform CM (=-int(xzdm)) (kg m^2) ---------------------- BLADE --------------------------------------------------- 50 BldNodes - Number of blade nodes (per blade) used for analysis (-) "../IEA-15-240-RWT/IEA-15-240-RWT_ElastoDyn_blade.dat" BldFile1 - Name of file containing properties for blade 1 (quoted string) @@ -95,6 +98,17 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 0.0 TeetHStP - Rotor-teeter hard-stop position (degrees) [used only for 2 blades and when TeetMod=1] 0.0 TeetSSSp - Rotor-teeter soft-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1] 0.0 TeetHSSp - Rotor-teeter hard-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1] +---------------------- YAW-FRICTION -------------------------------------------- + 0 YawFrctMod - Yaw-friction model {0: none, 1: friction independent of yaw-bearing force and bending moment, 2: friction with Coulomb terms depending on yaw-bearing force and bending moment, 3: user defined model} (switch) + 300 M_CSmax - Maximum static Coulomb friction torque (N-m) [M_CSmax when YawFrctMod=1; |Fz|*M_CSmax when YawFrctMod=2 and Fz<0] + 0 M_FCSmax - Maximum static Coulomb friction torque proportional to yaw bearing shear force (N-m) [sqrt(Fx^2+Fy^2)*M_FCSmax; only used when YawFrctMod=2] + 0 M_MCSmax - Maximum static Coulomb friction torque proportional to yaw bearing bending moment (N-m) [sqrt(Mx^2+My^2)*M_MCSmax; only used when YawFrctMod=2] + 40 M_CD - Dynamic Coulomb friction moment (N-m) [M_CD when YawFrctMod=1; |Fz|*M_CD when YawFrctMod=2 and Fz<0] + 0 M_FCD - Dynamic Coulomb friction moment proportional to yaw bearing shear force (N-m) [sqrt(Fx^2+Fy^2)*M_FCD; only used when YawFrctMod=2] + 0 M_MCD - Dynamic Coulomb friction moment proportional to yaw bearing bending moment (N-m) [sqrt(Mx^2+My^2)*M_MCD; only used when YawFrctMod=2] + 0 sig_v - Linear viscous friction coefficient (N-m/(rad/s)) + 0 sig_v2 - Quadratic viscous friction coefficient (N-m/(rad/s)^2) + 0 OmgCut - Yaw angular velocity cutoff below which viscous friction is linearized (rad/s) ---------------------- DRIVETRAIN ---------------------------------------------- 100.0 GBoxEff - Gearbox efficiency (%) 1.0 GBRatio - Gearbox ratio (-) diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat index 58e5f2c9..e97224ec 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat @@ -1,100 +1,67 @@ ------- HydroDyn v2.03.* Input File -------------------------------------------- IEA 15 MW offshore reference model monopile configuration False Echo - Echo the input file data (flag) ----------------------- ENVIRONMENTAL CONDITIONS -------------------------------- - "default" WtrDens - Water density (kg/m^3) - "default" WtrDpth - Water depth (meters) - "default" MSL2SWL - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2] ----------------------- WAVES --------------------------------------------------- - 2 WaveMod - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch) - 0 WaveStMod - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0] - 3630 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT] - 0.25 WaveDT - Time step for incident wave calculations (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT] - 4.52 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3] - 9.45 WaveTp - Peak-spectral period of incident waves (sec) [used only when WaveMod=1 or 2] -"DEFAULT" WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz] - 0.15708 WvLowCOff - Low cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] - 3.2 WvHiCOff - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] - 0 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6] - 0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4] - 1 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1] - 1 WaveNDir - Number of wave directions (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only] - 90 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1] - 123456789 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] - RANLUX WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] -TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4] -"" WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6] - 1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [maximum of 9 output locations] - 0 WaveElevxi - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] - 0 WaveElevyi - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] ----------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6] -False WvDiffQTF - Full difference-frequency 2nd-order wave kinematics (flag) -False WvSumQTF - Full summation-frequency 2nd-order wave kinematics (flag) - 0 WvLowCOffD - Low frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] - 3.04292 WvHiCOffD - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] - 0.314159 WvLowCOffS - Low frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] - 3.2 WvHiCOffS - High frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] ----------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6] - 0 CurrMod - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch) - 0 CurrSSV0 - Sub-surface current velocity at still water level (m/s) [used only when CurrMod=1] -"DEFAULT" CurrSSDir - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1] - 20 CurrNSRef - Near-surface current reference depth (meters) [used only when CurrMod=1] - 0 CurrNSV0 - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1] - 0 CurrNSDir - Near-surface current heading direction (degrees) [used only when CurrMod=1] - 0 CurrDIV - Depth-independent current velocity (m/s) [used only when CurrMod=1] - 0 CurrDIDir - Depth-independent current heading direction (degrees) [used only when CurrMod=1] ---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6] 0 PotMod - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch) - 0 ExctnMod - Wave Excitation model {0: None, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE] + 0 ExctnMod - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE] + 0 ExctnDisp - Method of computing Wave Excitation {0: use undisplaced position, 1: use displaced position, 2: use low-pass filtered displaced position) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch) + 10 ExctnCutOff - Cutoff (corner) frequency of the low-pass time-filtered displaced position (Hz) [>0.0] [used only when PotMod=1, ExctnMod>0, and ExctnDisp=2]) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch) + 0 PtfmYMod - Model for large platform yaw offset {0: Static reference yaw offset based on PtfmRefY, 1: dynamic reference yaw offset based on low-pass filtering the PRP yaw motion with cutoff frequency PtfmYCutOff} (switch) + 0 PtfmRefY - Constant (if PtfmYMod=0) or initial (if PtfmYMod=1) platform reference yaw offset (deg) + 0.01 PtfmYCutOff - Cutoff frequency for the low-pass filtering of PRP yaw motion when PtfmYMod=1 [unused when PtfmYMod=0] (Hz) + 36 NExctnHdg - Number of evenly distributed platform yaw/heading angles over the range of [-180, 180) deg for which the wave excitation shall be computed [only used when PtfmYMod=1] (-) 0 RdtnMod - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE] - 60.0 RdtnTMax - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!] - 0.0 RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform] + 60 RdtnTMax - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod>0; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!] + 0.0 RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and ExctnMod>0 or RdtnMod>0; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform] 1 NBody - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] 1 NBodyMod - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] -"unused" PotFile - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!] - 1 WAMITULEN - Characteristic body length scale used to redimensionalize WAMIT output (meters) [only used when PotMod=1] - 0.0 PtfmRefxt - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] - 0.0 PtfmRefyt - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] - 0.0 PtfmRefzt - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0] - 0.0 PtfmRefztRot - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1] - 0.0 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!] - 0.0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] - 0.0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] +"unused" PotFile - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [1 to NBody if NBodyMod>1] [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!] + 1 WAMITULEN - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1] + 0 PtfmRefxt - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmRefyt - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmRefzt - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0] + 0 PtfmRefztRot - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1] + 0 PtfmVol0 - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!] + 0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1] ---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2] - 0 MnDrift - Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] - 0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. Used only when WaveDirMod=0] + 0 MnDrift - Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift /=8] + 0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0] 0 DiffQTF - Full difference-frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] 0 SumQTF - Full summation -frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} ----------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING -------------- - 0.0 AddF0 - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors] - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad) +---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING -------------- [unused with PotMod=0 or 2] + 0 AddF0 - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors] + 0 + 0 + 0 + 0 + 0 + 0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 AddBLin - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s)) + 0 0 0 0 0 0 AddBLin - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s)) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0 0 0 0 0 0 - 0 0 4389794.6 0 0 0 + 0 0 4389794.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) + 0 0 0 0 0 0 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +---------------------- STRIP THEORY OPTIONS -------------------------------------- + 0 WaveDisp - Method of computing Wave Kinematics {0: use undisplaced position, 1: use displaced position) } (switch) + 0 AMMod - Method of computing distributed added-mass force. (0: Only and always on nodes below SWL at the undisplaced position. 2: Up to the instantaneous free surface) [overwrite to 0 when WaveMod = 0 or 6 or when WaveStMod = 0 in SeaState] ---------------------- AXIAL COEFFICIENTS -------------------------------------- 1 NAxCoef - Number of axial coefficients (-) -AxCoefID AxCd AxCa AxCp - (-) (-) (-) (-) - 1 0.00 0.00 1.00 +AxCoefID AxCd AxCa AxCp AxFDMod AxVnCOff AxFDLoFSc + (-) (-) (-) (-) (-) (-) (-) + 1 0.00 0.00 1.00 0 0.00 1.00 ---------------------- MEMBER JOINTS ------------------------------------------- 2 NJoints - Number of joints (-) [must be exactly 0 or at least 2] JointID Jointxi Jointyi Jointzi JointAxID JointOvrlp [JointOvrlp= 0: do nothing at joint, 1: eliminate overlaps by calculating super member] @@ -107,22 +74,22 @@ PropSetID PropD PropThck (-) (m) (m) 1 10.0 0.055341 ---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) -------------- - SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG - (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) - 1.0 1.0 1.0 1.0 1.0 1.0 0.0 0.0 1.0 1.0 1.0 1.0 + SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG SimplCb SimplCbMG + (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) + 1.00 1.00 1.00 1.00 1.00 1.00 1.00 0.00 0.00 1.00 1.00 1.00 1.00 1.00 ---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) --------- 0 NCoefDpth - Number of depth-dependent coefficients (-) - Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG - (m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) +Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG DpthCb DpthCbMG +(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) ---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) -------- -0 NCoefMembers - Number of member-based coefficients (-) -MemberID_HydC MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 - (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) + 0 NCoefMembers - Number of member-based coefficients (-) +MemberID MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 MemberCb1 MemberCb2 MemberCbMG1 MemberCbMG2 + (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) -------------------- MEMBERS ------------------------------------------------- 1 NMembers - Number of members (-) -MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MDivSize MCoefMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory] - (-) (-) (-) (-) (-) (m) (switch) (flag) - 1 1 2 1 1 0.5 1 FALSE +MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MDivSize MCoefMod MHstLMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory] + (-) (-) (-) (-) (-) (m) (switch) (switch) (flag) + 1 1 2 1 1 0.5000 1 1 FALSE ---------------------- FILLED MEMBERS ------------------------------------------ 1 NFillGroups - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL] FillNumM FillMList FillFSLoc FillDens @@ -133,7 +100,7 @@ FillNumM FillMList FillFSLoc FillDens MGDpth MGThck MGDens (m) (m) (kg/m^3) ---------------------- MEMBER OUTPUT LIST -------------------------------------- - 0 NMOutputs - Number of member outputs (-) [must be < 10] + 0 NMOutputs - Number of member outputs (-) [must be <= 99] MemberID NOutLoc NodeLocs [NOutLoc < 10; node locations are normalized distance from the start of the member, and must be >=0 and <= 1] [unused if NMOutputs=0] (-) (-) (-) ---------------------- JOINT OUTPUT LIST --------------------------------------- diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat new file mode 100644 index 00000000..ae50715b --- /dev/null +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat @@ -0,0 +1,72 @@ +------- SeaState Input File ---------------------------------------------------- +IEA 15 MW offshore reference model monopile configuration +False Echo - Echo the input file data (flag) +---------------------- ENVIRONMENTAL CONDITIONS -------------------------------- + "default" WtrDens - Water density (kg/m^3) + "default" WtrDpth - Water depth (meters) + "default" MSL2SWL - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2] +---------------------- SPATIAL DISCRETIZATION --------------------------------------------------- + 5 X_HalfWidth – Half-width of the domain in the X direction (m) [>0, NOTE: X[nX] = nX*dX, where nX = {-NX+1,-NX+2,…,NX-1} and dX = X_HalfWidth/(NX-1)] + 5 Y_HalfWidth – Half-width of the domain in the Y direction (m) [>0, NOTE: Y[nY] = nY*dY, where nY = {-NY+1,-NY+2,…,NY-1} and dY = Y_HalfWidth/(NY-1)] +"default" Z_Depth – Depth of the domain the Z direction (m) relative to SWL [0 < Z_Depth <= WtrDpth+MSL2SWL; "default": Z_Depth = WtrDpth+MSL2SWL; Z[nZ] = ( COS( nZ*dthetaZ ) – 1 )*Z_Depth, where nZ = {0,1,…NZ-1} and dthetaZ = pi/( 2*(NZ-1) )] + 2 NX – Number of nodes in half of the X-direction domain (-) [>=2] + 2 NY – Number of nodes in half of the Y-direction domain (-) [>=2] + 15 NZ – Number of nodes in the Z direction (-) [>=2] +---------------------- WAVES --------------------------------------------------- + 2 WaveMod - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch) + 0 WaveStMod - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0] + 3630 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT] + 0.25 WaveDT - Time step for incident wave calculations (sec) [unused when WaveMod=0 or 7; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT] + 4.52 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3] + 9.45 WaveTp - Peak-spectral period of incident waves (sec) [used only when WaveMod=1 or 2] +"DEFAULT" WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz] + 0.15708 WvLowCOff - Low cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] + 3.2 WvHiCOff - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] + 0 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6] + 0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4] + 1 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1] + 1 WaveNDir - Number of wave directions (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only] + 90 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1] + 123456789 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] + RANLUX WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] +TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4] +"" WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6] +---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6] +False WvDiffQTF - Full difference-frequency 2nd-order wave kinematics (flag) +False WvSumQTF - Full summation-frequency 2nd-order wave kinematics (flag) + 0 WvLowCOffD - Low frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] + 3.04292 WvHiCOffD - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] + 0.314159 WvLowCOffS - Low frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] + 3.2 WvHiCOffS - High frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] +---------------------- CONSTRAINED WAVES --------------------------------------- + 0 ConstWaveMod - Constrained wave model: 0=none; 1=Constrained wave with specified crest elevation, alpha; 2=Constrained wave with guaranteed peak-to-trough crest height, HCrest (flag) + 1 CrestHmax - Crest height (2*alpha for ConstWaveMod=1 or HCrest for ConstWaveMod=2), must be larger than WaveHs (m) [unused when ConstWaveMod=0] + 60 CrestTime - Time at which the crest appears (s) [unused when ConstWaveMod=0] + 0 CrestXi - X-position of the crest (m) [unused when ConstWaveMod=0] + 0 CrestYi - Y-position of the crest (m) [unused when ConstWaveMod=0] +---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6] + 0 CurrMod - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch) + 0 CurrSSV0 - Sub-surface current velocity at still water level (m/s) [used only when CurrMod=1] +"DEFAULT" CurrSSDir - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1] + 20 CurrNSRef - Near-surface current reference depth (meters) [used only when CurrMod=1] + 0 CurrNSV0 - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1] + 0 CurrNSDir - Near-surface current heading direction (degrees) [used only when CurrMod=1] + 0 CurrDIV - Depth-independent current velocity (m/s) [used only when CurrMod=1] + 0 CurrDIDir - Depth-independent current heading direction (degrees) [used only when CurrMod=1] +---------------------- MacCamy-Fuchs diffraction model ------------------------- + 0 MCFD - MacCamy-Fuchs member radius (ignored if radius <= 0) [must be 0 when WaveMod 0 or 6] +---------------------- OUTPUT -------------------------------------------------- +False SeaStSum - Output a summary file [flag] + 2 OutSwtch - Output requested channels to: [1=SeaState.out, 2=GlueCode.out, 3=both files] +"ES11.4e2" OutFmt - Output format for numerical results (quoted string) [not checked for validity!] +"A11" OutSFmt - Output format for header strings (quoted string) [not checked for validity!] + 1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [maximum of 9 output locations] + 0 WaveElevxi - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] + 0 WaveElevyi - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] + 2 NWaveKin - Number of points where the wave kinematics can be output (-) [maximum of 9 output locations] + 5, -5 WaveKinxi - List of xi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] + 5, -5 WaveKinyi - List of yi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] + -10, -15 WaveKinzi - List of zi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] +---------------------- OUTPUT CHANNELS ----------------------------------------- +"Wave1Elev" - Wave elevation at the WAMIT reference point (0,0) +END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line) diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat index f97cafa3..e1054868 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat @@ -5,13 +5,11 @@ True Echo - Echo input data to ".SD.ech" (flag) "DEFAULT" SDdeltaT - Local Integration Step. If "default", the glue-code integration step will be used. 3 IntMethod - Integration Method [1/2/3/4 = RK4/AB4/ABM4/AM2]. True SttcSolve - Solve dynamics about static equilibrium point -False GuyanLoadCorrection - Include extra moment from lever arm at interface and rotate FEM for floating. -------------------- FEA and CRAIG-BAMPTON PARAMETERS--------------------------- - 3 FEMMod - FEM switch: element model in the FEM. [1= Euler-Bernoulli(E-B); 2=Tapered E-B (unavailable); 3= 2-node Timoshenko; 4= 2-node tapered Timoshenko (unavailable)] - 1 NDiv - Number of sub-elements per member -True CBMod - [T/F] If True perform C-B reduction, else full FEM dofs will be retained. If True, select Nmodes to retain in C-B reduced system. - 0 Nmodes - Number of internal modes to retain (ignored if CBMod=False). If Nmodes=0 --> Guyan Reduction. - 1 JDampings - Damping Ratios for each retained mode (% of critical) If Nmodes>0, list Nmodes structural damping ratios for each retained mode (% of critical), or a single damping ratio to be applied to all retained modes. (last entered value will be used for all remaining modes). +3 FEMMod - FEM switch: element model in the FEM. [1= Euler-Bernoulli(E-B); 2=Tapered E-B (unavailable); 3= 2-node Timoshenko; 4= 2-node tapered Timoshenko (unavailable)] +1 NDiv - Number of sub-elements per member +0 Nmodes - Number of internal modes to retain. If Nmodes=0 --> Guyan Reduction. If Nmodes<0 --> retain all modes. +1.000000 JDampings - Damping Ratios for each retained mode (% of critical) If Nmodes>0, list Nmodes structural damping ratios for each retained mode (% of critical), or a single damping ratio to be applied to all retained modes. (last entered value will be used for all remaining modes). 0 GuyanDampMod - Guyan damping {0=none, 1=Rayleigh Damping, 2=user specified 6x6 matrix}. 0.0 , 0.0 RayleighDamp - Mass and stiffness proportional damping coefficients (Rayleigh Damping) [only if GuyanDampMod=1]. 6 GuyanDampSize - Guyan damping matrix (6x6) [only if GuyanDampMod=2]. @@ -21,9 +19,9 @@ True CBMod - [T/F] If True perform C-B reduction, else full FE 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ----- STRUCTURE JOINTS: joints connect structure members (~Hydrodyn Input File)--- +---- STRUCTURE JOINTS: joints connect structure members (~Hydrodyn Input File) -------- 19 NJoints - Number of joints (-) - JointID JointXss JointYss JointZss JointType JointDirX JointDirY JointDirZ JointStiff + JointID JointXss JointYss JointZss JointType JointDirX JointDirY JointDirZ JointStiff ![Coordinates of Member joints in SS-Coordinate System][JointType={1:cantilever, 2:universal joint, 3:revolute joint, 4:spherical joint}] (-) (m) (m) (m) (-) (-) (-) (-) (Nm/rad) 1 0.00000 0.00000 -30.0000 1 0.0 0.0 0.0 0.0 2 0.00000 0.00000 -29.999 1 0.0 0.0 0.0 0.0 @@ -56,7 +54,7 @@ IJointID ItfTDXss ItfTDYss ItfTDZss ItfRDXss ItfRDYss ItfRDZss 19 1 1 1 1 1 1 ----------------------------------- MEMBERS -------------------------------------- 18 NMembers - Number of frame members - MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MType COSMID + MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MType COSMID ![MType={1:beam circ., 2:cable, 3:rigid, 4:beam arb.}. COMSID={-1:none}] (-) (-) (-) (-) (-) (-) (-) 1 1 2 1 1 1 2 2 3 1 1 1 @@ -76,8 +74,8 @@ IJointID ItfTDXss ItfTDYss ItfTDZss ItfRDXss ItfRDYss ItfRDZss 16 16 17 8 8 1 17 17 18 8 9 1 18 18 19 9 9 1 ------------------- MEMBER X-SECTION PROPERTY data 1/2 [isotropic material for now: use this table for circular-tubular elements] ------------------------ - 9 NPropSets - Number of structurally unique x-sections (i.e. how many groups of X-sectional properties are utilized throughout all of the members) +------------------ CIRCULAR BEAM CROSS-SECTION PROPERTIES ----------------------------- + 9 NPropSets - Number of structurally unique cross-sections PropSetID YoungE ShearG MatDens XsecD XsecT (-) (N/m2) (N/m2) (kg/m3) (m) (m) 1 2.00000e+11 79.3e9 7800.0 10.0 0.055341 @@ -89,7 +87,7 @@ PropSetID YoungE ShearG MatDens XsecD X 7 2.00000e+11 79.3e9 7800.0 10.0 0.043527 8 2.00000e+11 79.3e9 7800.0 10.0 0.042242 9 2.00000e+11 79.3e9 7800.0 10.0 0.041058 ------------------- MEMBER X-SECTION PROPERTY data 2/2 [isotropic material for now: use this table if any section other than circular, however provide COSM(i,j) below] ------------------------ +----------------- ARBITRARY BEAM CROSS-SECTION PROPERTIES ----------------------------- 0 NXPropSets - Number of structurally unique non-circular x-sections (if 0 the following table is ignored) PropSetID YoungE ShearG2 MatDens XsecA XsecAsx XsecAsy XsecJxx XsecJyy XsecJ0 (-) (N/m2) (N/m2) (kg/m3) (m2) (m2) (m2) (m4) (m4) (m4) @@ -101,7 +99,11 @@ PropSetID YoungE ShearG MatDens XsecD X 0 NRigidPropSets - Number of rigid link properties PropSetID MatDens (-) (kg/m) ----------------------- MEMBER COSINE MATRICES COSM(i,j) ------------------------ +----------------------- SPRING ELEMENT PROPERTIES ------------------------------------- + 0 NSpringPropSets - Number of spring properties +PropSetID k11 k12 k13 k14 k15 k16 k22 k23 k24 k25 k26 k33 k34 k35 k36 k44 k45 k46 k55 k56 k66 + (-) (N/m) (N/m) (N/m) (N/rad) (N/rad) (N/rad) (N/m) (N/m) (N/rad) (N/rad) (N/rad) (N/m) (N/rad) (N/rad) (N/rad) (Nm/rad) (Nm/rad) (Nm/rad) (Nm/rad) (Nm/rad) (Nm/rad) +---------------------- MEMBER COSINE MATRICES COSM(i,j) ------------------------------- 0 NCOSMs - Number of unique cosine matrices (i.e., of unique member alignments including principal axis rotations); ignored if NXPropSets=0 or 9999 in any element below COSMID COSM11 COSM12 COSM13 COSM21 COSM22 COSM23 COSM31 COSM32 COSM33 (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) diff --git a/OpenFAST/IEA-15-240-RWT-Monopile_wDTUcontroller/IEA-15-240-RWT-Monopile_wDTUcontroller.fst b/OpenFAST/IEA-15-240-RWT-Monopile_wDTUcontroller/IEA-15-240-RWT-Monopile_wDTUcontroller.fst index 01c96586..251b5e4b 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile_wDTUcontroller/IEA-15-240-RWT-Monopile_wDTUcontroller.fst +++ b/OpenFAST/IEA-15-240-RWT-Monopile_wDTUcontroller/IEA-15-240-RWT-Monopile_wDTUcontroller.fst @@ -10,22 +10,35 @@ False Echo - Echo input data to .ech (flag) 99999.0 DT_UJac - Time between calls to get Jacobians (s) 1000000.0 UJacSclFact - Scaling factor used in Jacobians (-) ---------------------- FEATURE SWITCHES AND FLAGS ------------------------------ -1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades} -1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM} -2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15} +1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades; 3=Simplified ElastoDyn} +1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from ExtInflow} +2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDisk; 2=AeroDyn; 3=ExtLoads} 1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} +1 CompSeaSt - Compute sea state information (switch) {0=None; 1=SeaState} 1 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} 1 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF} 0 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} 0 CompIce - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn} +0 MHK - MHK turbine type (switch) {0=Not an MHK turbine; 1=Fixed MHK turbine; 2=Floating MHK turbine} +---------------------- ENVIRONMENTAL CONDITIONS -------------------------------- +9.81 Gravity - Gravitational acceleration (m/s^2) +1.225 AirDens - Air density (kg/m^3) +1025 WtrDens - Water density (kg/m^3) +1.464e-05 KinVisc - Kinematic viscosity of working fluid (m^2/s) +335 SpdSound - Speed of sound in working fluid (m/s) +103500 Patm - Atmospheric pressure (Pa) [used only for an MHK turbine cavitation check] +1700 Pvap - Vapour pressure of working fluid (Pa) [used only for an MHK turbine cavitation check] +30 WtrDpth - Water depth (m) +0 MSL2SWL - Offset between still-water level and mean sea level (m) [positive upward] ---------------------- INPUT FILES --------------------------------------------- "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ElastoDyn.dat" EDFile - Name of file containing ElastoDyn input parameters (quoted string) "../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(1) - Name of file containing BeamDyn input parameters for blade 1 (quoted string) "../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(2) - Name of file containing BeamDyn input parameters for blade 2 (quoted string) "../IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat" BDBldFile(3) - Name of file containing BeamDyn input parameters for blade 3 (quoted string) "../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string) -"../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) +"../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) "IEA-15-240-RWT-Monopile_ServoDyn_wDTUcontroller.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string) +"../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat" SeaStFile - Name of file containing sea state input parameters (quoted string) "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat" HydroFile - Name of file containing hydrodynamic input parameters (quoted string) "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat" SubFile - Name of file containing sub-structural input parameters (quoted string) "none" MooringFile - Name of file containing mooring system input parameters (quoted string) @@ -36,7 +49,7 @@ False SumPrint - Print summary data to ".sum" (fla 99999.0 ChkptTime - Amount of time between creating checkpoint files for potential restart (s) "default" DT_Out - Time step for tabular output (s) (or "default") 0.0 TStart - Time to begin tabular output (s) -3 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both} +2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both 1 and 2, 4: uncompressed binary [.outb, 5: both 1 and 4} True TabDelim - Use tab delimiters in text tabular output file? (flag) {uses spaces if false} "ES10.3E2" OutFmt - Format used for text tabular output, excluding the time channel. Resulting field should be 10 characters. (quoted string) ---------------------- LINEARIZATION ------------------------------------------- @@ -45,8 +58,8 @@ False CalcSteady - Calculate a steady-state periodic operating 3 TrimCase - Controller parameter to be trimmed {1:yaw; 2:torque; 3:pitch} [used only if CalcSteady=True] (-) 0.001 TrimTol - Tolerance for the rotational speed convergence [used only if CalcSteady=True] (-) 0.01 TrimGain - Proportional gain for the rotational speed error (>0) [used only if CalcSteady=True] (rad/(rad/s) for yaw or pitch; Nm/(rad/s) for torque) -0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) -0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) +0.0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) +0.0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) 2 NLinTimes - Number of times to linearize (-) [>=1] [unused if Linearize=False] 30.000000, 60.000000 LinTimes - List of times at which to linearize (s) [1 to NLinTimes] [used only when Linearize=True and CalcSteady=False] 1 LinInputs - Inputs included in linearization (switch) {0=none; 1=standard; 2=all module inputs (debug)} [unused if Linearize=False] diff --git a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_AeroDyn15.dat b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_AeroDyn15.dat index 079ada18..6d044199 100644 --- a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_AeroDyn15.dat +++ b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_AeroDyn15.dat @@ -2,43 +2,55 @@ IEA 15 MW Offshore Reference Turbine ====== General Options ============================================================================ False Echo - Echo the input to ".AD.ech"? (flag) -default DTAero - Time interval for aerodynamic calculations {or "default"} (s) -3 WakeMod - Type of wake/induction model (switch) {0=none, 1=BEMT, 2=DBEMT, 3=OLAF} [WakeMod cannot be 2 or 3 when linearizing] -1 AFAeroMod - Type of blade airfoil aerodynamics model (switch) {1=steady model, 2=Beddoes-Leishman unsteady model} [AFAeroMod must be 1 when linearizing] +Default DTAero - Time interval for aerodynamic calculations {or "default"} (s) +3 Wake_Mod - Wake/induction model (switch) {0=none, 1=BEMT, 3=OLAF} [Wake_Mod cannot be 2 or 3 when linearizing] 1 TwrPotent - Type tower influence on wind based on potential flow around the tower (switch) {0=none, 1=baseline potential flow, 2=potential flow with Bak correction} 1 TwrShadow - Calculate tower influence on wind based on downstream tower shadow (switch) {0=none, 1=Powles model, 2=Eames model} True TwrAero - Calculate tower aerodynamic loads? (flag) -False FrozenWake - Assume frozen wake during linearization? (flag) [used only when WakeMod=1 and when linearizing] -False CavitCheck - Perform cavitation check? (flag) [AFAeroMod must be 1 when CavitCheck=true] +False CavitCheck - Perform cavitation check? (flag) [UA_Mod must be 0 when CavitCheck=true] False Buoyancy - Include buoyancy effects? (flag) -False CompAA - Flag to compute AeroAcoustics calculation [only used when WakeMod=1 or 2] +False NacelleDrag - Include Nacelle Drag effects? (flag) +False CompAA - Flag to compute AeroAcoustics calculation [used only when Wake_Mod = 1 or 2] AeroAcousticsInput.dat AA_InputFile - AeroAcoustics input file [used only when CompAA=true] ====== Environmental Conditions =================================================================== "default" AirDens - Air density (kg/m^3) -"default" KinVisc - Kinematic air viscosity (m^2/s) -"default" SpdSound - Speed of sound (m/s) +"default" KinVisc - Kinematic viscosity of working fluid (m^2/s) +"default" SpdSound - Speed of sound in working fluid (m/s) "default" Patm - Atmospheric pressure (Pa) [used only when CavitCheck=True] -"default" Pvap - Vapour pressure of fluid (Pa) [used only when CavitCheck=True] -====== Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 SkewMod - Type of skewed-wake correction model (switch) {1=uncoupled, 2=Pitt/Peters, 3=coupled} [unused when WakeMod=0 or 3] -default SkewModFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when SkewMod=2; unused when WakeMod=0 or 3] -True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3] -True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when WakeMod=0 or 3] -True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when WakeMod=0 or 3] -True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when WakeMod=0 or 3] -True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when WakeMod=0,3 or TanInd=FALSE] -default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when WakeMod=0 or 3] -500 MaxIter - Maximum number of iteration steps (-) [unused when WakeMod=0] -====== Dynamic Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {1=constant tau1, 2=time-dependent tau1} (-) [used only when WakeMod=2] -29.03 tau1_const - Time constant for DBEMT (s) [used only when WakeMod=2 and DBEMT_Mod=1] -====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when WakeMod=3] -../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when WakeMod=3] -====== Beddoes-Leishman Unsteady Airfoil Aerodynamics Options ===================================== [used only when AFAeroMod=2] -3 UAMod - Unsteady Aero Model Switch (switch) {1=Baseline model (Original), 2=Gonzalez's variant (changes in Cn,Cc,Cm), 3=Minnema/Pierce variant (changes in Cc and Cm)} [used only when AFAeroMod=2] -True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when AFAeroMod=2] -0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] -1.0 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] +"default" Pvap - Vapour pressure of working fluid (Pa) [used only when CavitCheck=True] +====== Blade-Element/Momentum Theory Options ====================================================== [unused when Wake_Mod=0 or 3, except for BEM_Mod] +1 BEM_Mod - BEM model {1=legacy NoSweepPitchTwist, 2=polar} (switch) [used for all Wake_Mod to determine output coordinate system] +--- Skew correction +2 Skew_Mod - Skew model {0=No skew model, -1=Remove non-normal component for linearization, 1=skew model active} +False SkewMomCorr - Turn the skew momentum correction on or off [used only when Skew_Mod=1] +default SkewRedistr_Mod - Type of skewed-wake correction model (switch) {0=no redistribution, 1=Glauert/Pitt/Peters, default=1} [used only when Skew_Mod=1] +default SkewRedistrFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when Skew_Mod=1 and SkewRedistr_Mod=1] +--- BEM algorithm +True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when Wake_Mod=0 or 3] +True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when Wake_Mod=0 or 3] +True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when Wake_Mod=0 or 3] +True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when Wake_Mod=0 or 3] +True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when Wake_Mod=0,3 or TanInd=FALSE] +Default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when Wake_Mod=0 or 3] +500 MaxIter - Maximum number of iteration steps (-) [unused when Wake_Mod=0] +--- Shear correction +False SectAvg - Use sector averaging (flag) +1 SectAvgWeighting - Weighting function for sector average {1=Uniform, default=1} within a sector centered on the blade (switch) [used only when SectAvg=True] +default SectAvgNPoints - Number of points per sectors (-) {default=5} [used only when SectAvg=True] +default SectAvgPsiBwd - Backward azimuth relative to blade where the sector starts (<=0) {default=-60} (deg) [used only when SectAvg=True] +default SectAvgPsiFwd - Forward azimuth relative to blade where the sector ends (>=0) {default=60} (deg) [used only when SectAvg=True] +--- Dynamic wake/inflow +2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {0=No Dynamic Wake, -1=Frozen Wake for linearization, 1:constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation} (-) +29.03 tau1_const - Time constant for DBEMT (s) [used only when Wake_Mod=2 and DBEMT_Mod=1] +====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when Wake_Mod=3] +../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when Wake_Mod=3] +====== Unsteady Airfoil Aerodynamics Options ==================================================== +True AoA34 - Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used] +3 UA_Mod - Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L HGM+vortex 5 states, 6=Oye, 7=Boeing-Vertol} +True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when UA_Mod>0] +3 IntegrationMethod - Switch to indicate which integration method UA uses (1=RK4, 2=AB4, 3=ABM4, 4=BDF2) +0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAStartRad=0] +1 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAEndRad=1] ====== Airfoil Information ========================================================================= 1 AFTabMod - Interpolation method for multiple airfoil tables {1=1D interpolation on AoA (first table only); 2=2D interpolation on AoA and Re; 3=2D interpolation on AoA and UserProp} (-) 1 InCol_Alfa - The column in the airfoil tables that contains the angle of attack (-) @@ -103,15 +115,18 @@ True UseBlCm - Include aerodynamic pitching moment in calc "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(2) - Name of file containing distributed aerodynamic properties for Blade #2 (-) [unused if NumBl < 2] "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(3) - Name of file containing distributed aerodynamic properties for Blade #3 (-) [unused if NumBl < 3] ====== Hub Properties ============================================================================== [used only when Buoyancy=True] -0.0 VolHub - Hub volume (m^3) -0.0 HubCenBx - Hub center of buoyancy x direction offset (m) -====== Nacelle Properties ========================================================================== [used only when Buoyancy=True] -0.0 VolNac - Nacelle volume (m^3) -0,0,0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) -====== Tail fin Aerodynamics ======================================================================== -False TFinAero - Calculate tail fin aerodynamics model (flag) -"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] -====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] +0 VolHub - Hub volume (m^3) +0 HubCenBx - Hub center of buoyancy x direction offset (m) +====== Nacelle Properties ========================================================================== [used only when Buoyancy=True or NacelleDrag=True] +0 VolNac - Nacelle volume (m^3) +0.0, 0.0, 0.0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) +0, 0, 0 NacArea - Projected area of the nacelle in X, Y, Z in the nacelle coordinate system (m^2) +0, 0, 0 NacCd - Drag coefficient for the nacelle areas defined above (-) +0, 0, 0 NacDragAC - Position of aerodynamic center of nacelle drag in nacelle coordinates (m) +====== Tail Fin Aerodynamics ======================================================================= +False TFinAero - Calculate tail fin aerodynamics model (flag) +"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] +====== Tower Influence and Aerodynamics ============================================================ [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or Buoyancy=True] 11 NumTwrNds - Number of tower nodes used in the analysis (-) [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] TwrElev TwrDiam TwrCd TwrTI TwrCb !TwrTI used only with TwrShadow=2, TwrCb used only with Buoyancy=True (m) (m) (-) (-) (-) diff --git a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat index f93315b9..957828f0 100644 --- a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat +++ b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat @@ -1,12 +1,12 @@ --------------------------- OLAF (cOnvecting LAgrangian Filaments) INPUT FILE ----------------- Free wake input file for the Helix test case --------------------------- GENERAL OPTIONS --------------------------------------------------- -default IntMethod Integration method {5: Forward Euler 1st order, default: 5} (switch) +default IntMethod - Integration method {1: RK4, 5: Forward Euler 1st order, default: 5} (switch) default DTfvw Time interval for wake propagation. {default: dtaero} (s) 0.0 FreeWakeStart Time when wake is free. (-) value = always free. {default: 0.0} (s) 5.0 FullCircStart Time at which full circulation is reached. {default: 0.0} (s) --------------------------- CIRCULATION SPECIFICATIONS ---------------------------------------- -default CircSolvingMethod Circulation solving method {1: Cl-Based, 2: No-Flow Through, 3: Prescribed, default: 1 }(switch) +default CircSolvMethod Circulation solving method {1: Cl-Based, 2: No-Flow Through, 3: Prescribed, default: 1 }(switch) default CircSolvConvCrit Convergence criteria {default: 0.001} [only if CircSolvingMethod=1] (-) default CircSolvRelaxation Relaxation factor {default: 0.1} [only if CircSolvingMethod=1] (-) default CircSolvMaxIter Maximum number of iterations for circulation solving {default: 30} (-) diff --git a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.fst b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.fst index 437a96ee..1fe24d62 100644 --- a/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.fst +++ b/OpenFAST/IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.fst @@ -10,10 +10,11 @@ False Echo - Echo input data to .ech (flag) 99999.0 DT_UJac - Time between calls to get Jacobians (s) 1000000.0 UJacSclFact - Scaling factor used in Jacobians (-) ---------------------- FEATURE SWITCHES AND FLAGS ------------------------------ -1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades} -1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM} -2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15} +1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades; 3=Simplified ElastoDyn} +1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from ExtInflow} +2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDisk; 2=AeroDyn; 3=ExtLoads} 1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} +1 CompSeaSt - Compute sea state information (switch) {0=None; 1=SeaState} 1 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} 1 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF} 0 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} @@ -37,6 +38,7 @@ False Echo - Echo input data to .ech (flag) "../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string) "IEA-15-240-RWT_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string) +"../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SeaState.dat" SeaStFile - Name of file containing sea state input parameters (quoted string) "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_HydroDyn.dat" HydroFile - Name of file containing hydrodynamic input parameters (quoted string) "../IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_SubDyn.dat" SubFile - Name of file containing sub-structural input parameters (quoted string) "none" MooringFile - Name of file containing mooring system input parameters (quoted string) @@ -47,7 +49,7 @@ False SumPrint - Print summary data to ".sum" (fla 99999.0 ChkptTime - Amount of time between creating checkpoint files for potential restart (s) "default" DT_Out - Time step for tabular output (s) (or "default") 0.0 TStart - Time to begin tabular output (s) -3 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both} +2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both 1 and 2, 4: uncompressed binary [.outb, 5: both 1 and 4} True TabDelim - Use tab delimiters in text tabular output file? (flag) {uses spaces if false} "ES10.3E2" OutFmt - Format used for text tabular output, excluding the time channel. Resulting field should be 10 characters. (quoted string) ---------------------- LINEARIZATION ------------------------------------------- @@ -56,8 +58,8 @@ False CalcSteady - Calculate a steady-state periodic operating 3 TrimCase - Controller parameter to be trimmed {1:yaw; 2:torque; 3:pitch} [used only if CalcSteady=True] (-) 0.001 TrimTol - Tolerance for the rotational speed convergence [used only if CalcSteady=True] (-) 0.01 TrimGain - Proportional gain for the rotational speed error (>0) [used only if CalcSteady=True] (rad/(rad/s) for yaw or pitch; Nm/(rad/s) for torque) -0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) -0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) +0.0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) +0.0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) 2 NLinTimes - Number of times to linearize (-) [>=1] [unused if Linearize=False] 30.000000, 60.000000 LinTimes - List of times at which to linearize (s) [1 to NLinTimes] [used only when Linearize=True and CalcSteady=False] 1 LinInputs - Inputs included in linearization (switch) {0=none; 1=standard; 2=all module inputs (debug)} [unused if Linearize=False] diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst index 751b61de..c00ef777 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst @@ -10,15 +10,16 @@ False Echo - Echo input data to .ech (flag) 99999.0 DT_UJac - Time between calls to get Jacobians (s) 1000000.0 UJacSclFact - Scaling factor used in Jacobians (-) ---------------------- FEATURE SWITCHES AND FLAGS ------------------------------ - 1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades} - 1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from OpenFOAM} - 2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDyn v14; 2=AeroDyn v15} - 1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} - 1 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} - 0 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF} - 3 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} - 0 CompIce - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn} - 0 MHK - MHK turbine type (switch) {0=Not an MHK turbine; 1=Fixed MHK turbine; 2=Floating MHK turbine} +1 CompElast - Compute structural dynamics (switch) {1=ElastoDyn; 2=ElastoDyn + BeamDyn for blades; 3=Simplified ElastoDyn} +1 CompInflow - Compute inflow wind velocities (switch) {0=still air; 1=InflowWind; 2=external from ExtInflow} +2 CompAero - Compute aerodynamic loads (switch) {0=None; 1=AeroDisk; 2=AeroDyn; 3=ExtLoads} +1 CompServo - Compute control and electrical-drive dynamics (switch) {0=None; 1=ServoDyn} +1 CompSeaSt - Compute sea state information (switch) {0=None; 1=SeaState} +1 CompHydro - Compute hydrodynamic loads (switch) {0=None; 1=HydroDyn} +0 CompSub - Compute sub-structural dynamics (switch) {0=None; 1=SubDyn; 2=External Platform MCKF} +3 CompMooring - Compute mooring system (switch) {0=None; 1=MAP++; 2=FEAMooring; 3=MoorDyn; 4=OrcaFlex} +0 CompIce - Compute ice loads (switch) {0=None; 1=IceFloe; 2=IceDyn} +0 MHK - MHK turbine type (switch) {0=Not an MHK turbine; 1=Fixed MHK turbine; 2=Floating MHK turbine} ---------------------- ENVIRONMENTAL CONDITIONS -------------------------------- 9.81 Gravity - Gravitational acceleration (m/s^2) 1.225 AirDens - Air density (kg/m^3) @@ -37,6 +38,7 @@ False Echo - Echo input data to .ech (flag) "../IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat" InflowFile - Name of file containing inflow wind input parameters (quoted string) "IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat" AeroFile - Name of file containing aerodynamic input parameters (quoted string) "IEA-15-240-RWT-UMaineSemi_ServoDyn.dat" ServoFile - Name of file containing control and electrical-drive input parameters (quoted string) +"IEA-15-240-RWT-UMaineSemi_SeaState.dat" SeaStFile - Name of file containing sea state input parameters (quoted string) "IEA-15-240-RWT-UMaineSemi_HydroDyn.dat" HydroFile - Name of file containing hydrodynamic input parameters (quoted string) "none" SubFile - Name of file containing sub-structural input parameters (quoted string) "IEA-15-240-RWT-UMaineSemi_MoorDyn.dat" MooringFile - Name of file containing mooring system input parameters (quoted string) @@ -45,9 +47,9 @@ False Echo - Echo input data to .ech (flag) False SumPrint - Print summary data to ".sum" (flag) 10.0 SttsTime - Amount of time between screen status messages (s) 99999.0 ChkptTime - Amount of time between creating checkpoint files for potential restart (s) -default DT_Out - Time step for tabular output (s) (or "default") -0.000000 TStart - Time to begin tabular output (s) -3 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both} +"default" DT_Out - Time step for tabular output (s) (or "default") +0.0 TStart - Time to begin tabular output (s) +2 OutFileFmt - Format for tabular (time-marching) output file (switch) {1: text file [.out], 2: binary file [.outb], 3: both 1 and 2, 4: uncompressed binary [.outb, 5: both 1 and 4} True TabDelim - Use tab delimiters in text tabular output file? (flag) {uses spaces if false} "ES10.3E2" OutFmt - Format used for text tabular output, excluding the time channel. Resulting field should be 10 characters. (quoted string) ---------------------- LINEARIZATION ------------------------------------------- @@ -56,8 +58,8 @@ False CalcSteady - Calculate a steady-state periodic operating 3 TrimCase - Controller parameter to be trimmed {1:yaw; 2:torque; 3:pitch} [used only if CalcSteady=True] (-) 0.001 TrimTol - Tolerance for the rotational speed convergence [used only if CalcSteady=True] (-) 0.01 TrimGain - Proportional gain for the rotational speed error (>0) [used only if CalcSteady=True] (rad/(rad/s) for yaw or pitch; Nm/(rad/s) for torque) -0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) -0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) +0.0 Twr_Kdmp - Damping factor for the tower [used only if CalcSteady=True] (N/(m/s)) +0.0 Bld_Kdmp - Damping factor for the blades [used only if CalcSteady=True] (N/(m/s)) 2 NLinTimes - Number of times to linearize (-) [>=1] [unused if Linearize=False] 30.000000, 60.000000 LinTimes - List of times at which to linearize (s) [1 to NLinTimes] [used only when Linearize=True and CalcSteady=False] 1 LinInputs - Inputs included in linearization (switch) {0=none; 1=standard; 2=all module inputs (debug)} [unused if Linearize=False] diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat index 81336ad4..2a7d1ff3 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_AeroDyn15.dat @@ -2,43 +2,55 @@ IEA 15 MW Offshore Reference Turbine ====== General Options ============================================================================ False Echo - Echo the input to ".AD.ech"? (flag) -default DTAero - Time interval for aerodynamic calculations {or "default"} (s) -1 WakeMod - Type of wake/induction model (switch) {0=none, 1=BEMT, 2=DBEMT, 3=OLAF} [WakeMod cannot be 2 or 3 when linearizing] -2 AFAeroMod - Type of blade airfoil aerodynamics model (switch) {1=steady model, 2=Beddoes-Leishman unsteady model} [AFAeroMod must be 1 when linearizing] +Default DTAero - Time interval for aerodynamic calculations {or "default"} (s) +1 Wake_Mod - Wake/induction model (switch) {0=none, 1=BEMT, 3=OLAF} [Wake_Mod cannot be 2 or 3 when linearizing] 1 TwrPotent - Type tower influence on wind based on potential flow around the tower (switch) {0=none, 1=baseline potential flow, 2=potential flow with Bak correction} 1 TwrShadow - Calculate tower influence on wind based on downstream tower shadow (switch) {0=none, 1=Powles model, 2=Eames model} True TwrAero - Calculate tower aerodynamic loads? (flag) -False FrozenWake - Assume frozen wake during linearization? (flag) [used only when WakeMod=1 and when linearizing] -False CavitCheck - Perform cavitation check? (flag) [AFAeroMod must be 1 when CavitCheck=true] +False CavitCheck - Perform cavitation check? (flag) [UA_Mod must be 0 when CavitCheck=true] False Buoyancy - Include buoyancy effects? (flag) -False CompAA - Flag to compute AeroAcoustics calculation [only used when WakeMod=1 or 2] +False NacelleDrag - Include Nacelle Drag effects? (flag) +False CompAA - Flag to compute AeroAcoustics calculation [used only when Wake_Mod = 1 or 2] AeroAcousticsInput.dat AA_InputFile - AeroAcoustics input file [used only when CompAA=true] ====== Environmental Conditions =================================================================== "default" AirDens - Air density (kg/m^3) -"default" KinVisc - Kinematic air viscosity (m^2/s) -"default" SpdSound - Speed of sound (m/s) +"default" KinVisc - Kinematic viscosity of working fluid (m^2/s) +"default" SpdSound - Speed of sound in working fluid (m/s) "default" Patm - Atmospheric pressure (Pa) [used only when CavitCheck=True] -"default" Pvap - Vapour pressure of fluid (Pa) [used only when CavitCheck=True] -====== Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 SkewMod - Type of skewed-wake correction model (switch) {1=uncoupled, 2=Pitt/Peters, 3=coupled} [unused when WakeMod=0 or 3] -default SkewModFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when SkewMod=2; unused when WakeMod=0 or 3] -True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3] -True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when WakeMod=0 or 3] -True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when WakeMod=0 or 3] -True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when WakeMod=0 or 3] -True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when WakeMod=0,3 or TanInd=FALSE] -default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when WakeMod=0 or 3] -500 MaxIter - Maximum number of iteration steps (-) [unused when WakeMod=0] -====== Dynamic Blade-Element/Momentum Theory Options ====================================================== [used only when WakeMod=1] -2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {1=constant tau1, 2=time-dependent tau1} (-) [used only when WakeMod=2] -29.03 tau1_const - Time constant for DBEMT (s) [used only when WakeMod=2 and DBEMT_Mod=1] -====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when WakeMod=3] -../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when WakeMod=3] -====== Beddoes-Leishman Unsteady Airfoil Aerodynamics Options ===================================== [used only when AFAeroMod=2] -3 UAMod - Unsteady Aero Model Switch (switch) {1=Baseline model (Original), 2=Gonzalez's variant (changes in Cn,Cc,Cm), 3=Minnema/Pierce variant (changes in Cc and Cm)} [used only when AFAeroMod=2] -True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when AFAeroMod=2] -0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] -1.0 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius) [used only when AFAeroMod=2] +"default" Pvap - Vapour pressure of working fluid (Pa) [used only when CavitCheck=True] +====== Blade-Element/Momentum Theory Options ====================================================== [unused when Wake_Mod=0 or 3, except for BEM_Mod] +1 BEM_Mod - BEM model {1=legacy NoSweepPitchTwist, 2=polar} (switch) [used for all Wake_Mod to determine output coordinate system] +--- Skew correction +1 Skew_Mod - Skew model {0=No skew model, -1=Remove non-normal component for linearization, 1=skew model active} +False SkewMomCorr - Turn the skew momentum correction on or off [used only when Skew_Mod=1] +default SkewRedistr_Mod - Type of skewed-wake correction model (switch) {0=no redistribution, 1=Glauert/Pitt/Peters, default=1} [used only when Skew_Mod=1] +default SkewRedistrFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when Skew_Mod=1 and SkewRedistr_Mod=1] +--- BEM algorithm +True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when Wake_Mod=0 or 3] +True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when Wake_Mod=0 or 3] +True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when Wake_Mod=0 or 3] +True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when Wake_Mod=0 or 3] +True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when Wake_Mod=0,3 or TanInd=FALSE] +Default IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when Wake_Mod=0 or 3] +500 MaxIter - Maximum number of iteration steps (-) [unused when Wake_Mod=0] +--- Shear correction +False SectAvg - Use sector averaging (flag) +1 SectAvgWeighting - Weighting function for sector average {1=Uniform, default=1} within a sector centered on the blade (switch) [used only when SectAvg=True] +default SectAvgNPoints - Number of points per sectors (-) {default=5} [used only when SectAvg=True] +default SectAvgPsiBwd - Backward azimuth relative to blade where the sector starts (<=0) {default=-60} (deg) [used only when SectAvg=True] +default SectAvgPsiFwd - Forward azimuth relative to blade where the sector ends (>=0) {default=60} (deg) [used only when SectAvg=True] +--- Dynamic wake/inflow +2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {0=No Dynamic Wake, -1=Frozen Wake for linearization, 1:constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation} (-) +29.03 tau1_const - Time constant for DBEMT (s) [used only when Wake_Mod=2 and DBEMT_Mod=1] +====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when Wake_Mod=3] +../IEA-15-240-RWT-OLAF/IEA-15-240-RWT_OLAF.dat OLAFInputFileName - Input file for OLAF [used only when Wake_Mod=3] +====== Unsteady Airfoil Aerodynamics Options ==================================================== +True AoA34 - Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used] +3 UA_Mod - Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L HGM+vortex 5 states, 6=Oye, 7=Boeing-Vertol} +True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when UA_Mod>0] +3 IntegrationMethod - Switch to indicate which integration method UA uses (1=RK4, 2=AB4, 3=ABM4, 4=BDF2) +0.1 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAStartRad=0] +1 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when UA_Mod>0; if line is missing UAEndRad=1] ====== Airfoil Information ========================================================================= 1 AFTabMod - Interpolation method for multiple airfoil tables {1=1D interpolation on AoA (first table only); 2=2D interpolation on AoA and Re; 3=2D interpolation on AoA and UserProp} (-) 1 InCol_Alfa - The column in the airfoil tables that contains the angle of attack (-) @@ -103,15 +115,18 @@ True UseBlCm - Include aerodynamic pitching moment in calc "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(2) - Name of file containing distributed aerodynamic properties for Blade #2 (-) [unused if NumBl < 2] "../IEA-15-240-RWT/IEA-15-240-RWT_AeroDyn15_blade.dat" ADBlFile(3) - Name of file containing distributed aerodynamic properties for Blade #3 (-) [unused if NumBl < 3] ====== Hub Properties ============================================================================== [used only when Buoyancy=True] -0.0 VolHub - Hub volume (m^3) -0.0 HubCenBx - Hub center of buoyancy x direction offset (m) -====== Nacelle Properties ========================================================================== [used only when Buoyancy=True] -0.0 VolNac - Nacelle volume (m^3) -0,0,0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) -====== Tail fin Aerodynamics ======================================================================== -False TFinAero - Calculate tail fin aerodynamics model (flag) -"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] -====== Tower Influence and Aerodynamics ============================================================= [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] +0 VolHub - Hub volume (m^3) +0 HubCenBx - Hub center of buoyancy x direction offset (m) +====== Nacelle Properties ========================================================================== [used only when Buoyancy=True or NacelleDrag=True] +0 VolNac - Nacelle volume (m^3) +0.0, 0.0, 0.0 NacCenB - Position of nacelle center of buoyancy from yaw bearing in nacelle coordinates (m) +0, 0, 0 NacArea - Projected area of the nacelle in X, Y, Z in the nacelle coordinate system (m^2) +0, 0, 0 NacCd - Drag coefficient for the nacelle areas defined above (-) +0, 0, 0 NacDragAC - Position of aerodynamic center of nacelle drag in nacelle coordinates (m) +====== Tail Fin Aerodynamics ======================================================================= +False TFinAero - Calculate tail fin aerodynamics model (flag) +"unused" TFinFile - Input file for tail fin aerodynamics [used only when TFinAero=True] +====== Tower Influence and Aerodynamics ============================================================ [used only when TwrPotent/=0, TwrShadow/=0, TwrAero=True, or Buoyancy=True] 11 NumTwrNds - Number of tower nodes used in the analysis (-) [used only when TwrPotent/=0, TwrShadow/=0, or TwrAero=True] TwrElev TwrDiam TwrCd TwrTI TwrCb !TwrTI used only with TwrShadow=2, TwrCb used only with Buoyancy=True (m) (m) (-) (-) (-) diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat index 2c755929..ed424c84 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat @@ -3,7 +3,7 @@ IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floati ---------------------- SIMULATION CONTROL -------------------------------------- False Echo - Echo input data to ".ech" (flag) 3 Method - Integration method: {1: RK4, 2: AB4, or 3: ABM4} (-) -"default" DT Integration time step (s) +"default" DT - Integration time step (s) ---------------------- DEGREES OF FREEDOM -------------------------------------- True FlapDOF1 - First flapwise blade mode DOF (flag) True FlapDOF2 - Second flapwise blade mode DOF (flag) @@ -61,12 +61,12 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 0.0 NcIMUyn - Lateral distance from the tower-top to the nacelle IMU (meters) 0.0 NcIMUzn - Vertical distance from the tower-top to the nacelle IMU (meters) 4.3495 Twr2Shft - Vertical distance from the tower-top to the rotor shaft (meters) - 144.386 TowerHt - Height of tower above ground level [onshore] or MSL [offshore] (meters) - 15 TowerBsHt - Height of tower base above ground level [onshore] or MSL [offshore] (meters) - 0 PtfmCMxt - Downwind distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) - 0 PtfmCMyt - Lateral distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) - -14.400 PtfmCMzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters) - 0 PtfmRefzt - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters) + 144.386 TowerHt - Height of tower relative to ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] (meters) + 15 TowerBsHt - Height of tower base relative to ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] (meters) + 0 PtfmCMxt - Downwind distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) + 0 PtfmCMyt - Lateral distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) + -14.400 PtfmCMzt - Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform CM (meters) + 0 PtfmRefzt - Vertical distance from the ground level [onshore], MSL [offshore wind or floating MHK], or seabed [fixed MHK] to the platform reference point (meters) ---------------------- MASS AND INERTIA ---------------------------------------- 0 TipMass(1) - Tip-brake mass, blade 1 (kg) 0 TipMass(2) - Tip-brake mass, blade 2 (kg) @@ -81,6 +81,9 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 1.2507E+10 PtfmRIner - Platform inertia for roll tilt rotation about the platform CM (kg m^2) 1.2507E+10 PtfmPIner - Platform inertia for pitch tilt rotation about the platform CM (kg m^2) 2.3667E+10 PtfmYIner - Platform inertia for yaw rotation about the platform CM (kg m^2) +0.0 PtfmXYIner - Platform xy moment of inertia about the platform CM (=-int(xydm)) (kg m^2) +0.0 PtfmYZIner - Platform yz moment of inertia about the platform CM (=-int(yzdm)) (kg m^2) +0.0 PtfmXZIner - Platform xz moment of inertia about the platform CM (=-int(xzdm)) (kg m^2) ---------------------- BLADE --------------------------------------------------- 50 BldNodes - Number of blade nodes (per blade) used for analysis (-) "../IEA-15-240-RWT/IEA-15-240-RWT_ElastoDyn_blade.dat" BldFile1 - Name of file containing properties for blade 1 (quoted string) @@ -95,6 +98,17 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 0 TeetHStP - Rotor-teeter hard-stop position (degrees) [used only for 2 blades and when TeetMod=1] 0 TeetSSSp - Rotor-teeter soft-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1] 0 TeetHSSp - Rotor-teeter hard-stop linear-spring constant (N-m/rad) [used only for 2 blades and when TeetMod=1] +---------------------- YAW-FRICTION -------------------------------------------- + 0 YawFrctMod - Yaw-friction model {0: none, 1: friction independent of yaw-bearing force and bending moment, 2: friction with Coulomb terms depending on yaw-bearing force and bending moment, 3: user defined model} (switch) + 300 M_CSmax - Maximum static Coulomb friction torque (N-m) [M_CSmax when YawFrctMod=1; |Fz|*M_CSmax when YawFrctMod=2 and Fz<0] + 0 M_FCSmax - Maximum static Coulomb friction torque proportional to yaw bearing shear force (N-m) [sqrt(Fx^2+Fy^2)*M_FCSmax; only used when YawFrctMod=2] + 0 M_MCSmax - Maximum static Coulomb friction torque proportional to yaw bearing bending moment (N-m) [sqrt(Mx^2+My^2)*M_MCSmax; only used when YawFrctMod=2] + 40 M_CD - Dynamic Coulomb friction moment (N-m) [M_CD when YawFrctMod=1; |Fz|*M_CD when YawFrctMod=2 and Fz<0] + 0 M_FCD - Dynamic Coulomb friction moment proportional to yaw bearing shear force (N-m) [sqrt(Fx^2+Fy^2)*M_FCD; only used when YawFrctMod=2] + 0 M_MCD - Dynamic Coulomb friction moment proportional to yaw bearing bending moment (N-m) [sqrt(Mx^2+My^2)*M_MCD; only used when YawFrctMod=2] + 0 sig_v - Linear viscous friction coefficient (N-m/(rad/s)) + 0 sig_v2 - Quadratic viscous friction coefficient (N-m/(rad/s)^2) + 0 OmgCut - Yaw angular velocity cutoff below which viscous friction is linearized (rad/s) ---------------------- DRIVETRAIN ---------------------------------------------- 100 GBoxEff - Gearbox efficiency (%) 1 GBRatio - Gearbox ratio (-) diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_HydroDyn.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_HydroDyn.dat index 2f8e7e11..19a8ce7d 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_HydroDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_HydroDyn.dat @@ -1,100 +1,67 @@ ------- HydroDyn v2.03.* Input File -------------------------------------------- IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform False Echo - Echo the input file data (flag) ----------------------- ENVIRONMENTAL CONDITIONS -------------------------------- - "default" WtrDens - Water density (kg/m^3) - "default" WtrDpth - Water depth (meters) - "default" MSL2SWL - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2] ----------------------- WAVES --------------------------------------------------- - 2 WaveMod - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch) - 0 WaveStMod - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0] - 850.00 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT] - 0.25 WaveDT - Time step for incident wave calculations (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT] - 1.10 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1 or 2] - 8.52 WaveTp - Peak spectral period of incident waves (sec) [used only when WaveMod=1 or 2] - DEFAULT WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz] - 0.111527 WvLowCOff - Low cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] - 3.2 WvHiCOff - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] - 0.00 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6] - 0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4] - 1 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1] - 1 WaveNDir - Number of wave directions (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only] - 90 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1] - -561580799 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] - RANLUX WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] - TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4] - "none" WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6] - 1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [maximum of 9 output locations] - 0 WaveElevxi - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] - 0 WaveElevyi - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] ----------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6] - True WvDiffQTF - Full difference-frequency 2nd-order wave kinematics (flag) - True WvSumQTF - Full summation-frequency 2nd-order wave kinematics (flag) - 0 WvLowCOffD - Low frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] - 0.737863 WvHiCOffD - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] - 0.314159 WvLowCOffS - Low frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] - 3.2 WvHiCOffS - High frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] ----------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6] - 0 CurrMod - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch) - 0 CurrSSV0 - Sub-surface current velocity at still water level (m/s) [used only when CurrMod=1] - "DEFAULT" CurrSSDir - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1] - 20 CurrNSRef - Near-surface current reference depth (meters) [used only when CurrMod=1] - 0 CurrNSV0 - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1] - 0 CurrNSDir - Near-surface current heading direction (degrees) [used only when CurrMod=1] - 0 CurrDIV - Depth-independent current velocity (m/s) [used only when CurrMod=1] - 0 CurrDIDir - Depth-independent current heading direction (degrees) [used only when CurrMod=1] ---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6] - 1 PotMod - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch) - 1 ExctnMod - Wave Excitation model {0: None, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE] - 1 RdtnMod - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE] - 60.0 RdtnTMax - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!] + 1 PotMod - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch) + 1 ExctnMod - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE] + 0 ExctnDisp - Method of computing Wave Excitation {0: use undisplaced position, 1: use displaced position, 2: use low-pass filtered displaced position) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch) + 10 ExctnCutOff - Cutoff (corner) frequency of the low-pass time-filtered displaced position (Hz) [>0.0] [used only when PotMod=1, ExctnMod>0, and ExctnDisp=2]) [only used when PotMod=1 and ExctnMod>0 and SeaState's WaveMod>0]} (switch) + 0 PtfmYMod - Model for large platform yaw offset {0: Static reference yaw offset based on PtfmRefY, 1: dynamic reference yaw offset based on low-pass filtering the PRP yaw motion with cutoff frequency PtfmYCutOff} (switch) + 0 PtfmRefY - Constant (if PtfmYMod=0) or initial (if PtfmYMod=1) platform reference yaw offset (deg) + 0.01 PtfmYCutOff - Cutoff frequency for the low-pass filtering of PRP yaw motion when PtfmYMod=1 [unused when PtfmYMod=0] (Hz) + 36 NExctnHdg - Number of evenly distributed platform yaw/heading angles over the range of [-180, 180) deg for which the wave excitation shall be computed [only used when PtfmYMod=1] (-) + 1 RdtnMod - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE] + 60 RdtnTMax - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod>0; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!] "DEFAULT" RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform] 1 NBody - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6] - 1 NBodyMod - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] + 1 NBodyMod - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1] "HydroData/IEA-15-240-RWT-UMaineSemi" PotFile - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!] - 1 WAMITULEN - Characteristic body length scale used to redimensionalize WAMIT output (meters) [only used when PotMod=1] - 0.0 PtfmRefxt - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] - 0.0 PtfmRefyt - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] - 0.0 PtfmRefzt - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0] - 0.0 PtfmRefztRot - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1] - 20206.34889 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!] - 0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] - 0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1] + 1 WAMITULEN - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1] + 0 PtfmRefxt - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmRefyt - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmRefzt - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0] + 0 PtfmRefztRot - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1] + 20206.34889 PtfmVol0 - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!] + 0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1] + 0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1] ---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2] - 0 MnDrift - Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] - 0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. Used only when WaveDirMod=0] - 12 DiffQTF - Full difference-frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] - 0 SumQTF - Full summation -frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} ----------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING -------------- + 0 MnDrift - Mean-drift 2nd-order forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift /=8] + 0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0] + 12 DiffQTF - Full difference-frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero] + 0 SumQTF - Full summation -frequency 2nd-order forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} +---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING -------------- [unused with PotMod=0 or 2] 0.0 AddF0 - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors] 0.0 0.0 0.0 0.0 0.0 - 0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad) + 0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 AddBLin - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s)) + 0 0 0 0 0 0 AddBLin - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s)) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.23E+05 0.00E+00 0.00E+00 0.00E+00 -8.92E+06 0.00E+00 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) +9.23E+05 0.00E+00 0.00E+00 0.00E+00 -8.92E+06 0.00E+00 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices] 0.00E+00 9.23E+05 0.00E+00 8.92E+06 0.00E+00 0.00E+00 0.00E+00 0.00E+00 2.30E+06 0.00E+00 0.00E+00 0.00E+00 0.00E+00 8.92E+06 0.00E+00 1.68E+10 0.00E+00 0.00E+00 -8.92E+06 0.00E+00 0.00E+00 0.00E+00 1.68E+10 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 4.80E+10 +---------------------- STRIP THEORY OPTIONS -------------------------------------- + 0 WaveDisp - Method of computing Wave Kinematics {0: use undisplaced position, 1: use displaced position) } (switch) + 0 AMMod - Method of computing distributed added-mass force. (0: Only and always on nodes below SWL at the undisplaced position. 2: Up to the instantaneous free surface) [overwrite to 0 when WaveMod = 0 or 6 or when WaveStMod = 0 in SeaState] ---------------------- AXIAL COEFFICIENTS -------------------------------------- -1 NAxCoef - Number of axial coefficients (-) - AxCoefID AxCd AxCa AxCp - (-) (-) (-) (-) - 1 0.0 0.0 1.0 + 1 NAxCoef - Number of axial coefficients (-) +AxCoefID AxCd AxCa AxCp AxFDMod AxVnCOff AxFDLoFSc + (-) (-) (-) (-) (-) (-) (-) + 1 0.00 0.00 1.00 0 0.00 1.00 ---------------------- MEMBER JOINTS ------------------------------------------- 0 NJoints - Number of joints (-) [must be exactly 0 or at least 2] JointID Jointxi Jointyi Jointzi JointAxID JointOvrlp [JointOvrlp= 0: do nothing at joint, 1: eliminate overlaps by calculating super member] @@ -104,21 +71,21 @@ False Echo - Echo the input file data (flag) PropSetID PropD PropThck (-) (m) (m) ---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) -------------- - SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG - (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) - 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCd SimplAxCdMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG SimplCb SimplCbMG + (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) + 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00 0.00 0.0 0.0 0.0 0.0 0.0 ---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) --------- -0 NCoefDpth - Number of depth-dependent coefficients (-) - Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG - (m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) + 0 NCoefDpth - Number of depth-dependent coefficients (-) +Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCd DpthAxCdMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG DpthCb DpthCbMG +(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) ---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) -------- -0 NCoefMembers - Number of member-based coefficients (-) -MemberID_HydC MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 - (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) + 0 NCoefMembers - Number of member-based coefficients (-) +MemberID MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCd1 MemberAxCd2 MemberAxCdMG1 MemberAxCdMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2 MemberCb1 MemberCb2 MemberCbMG1 MemberCbMG2 + (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) -------------------- MEMBERS ------------------------------------------------- 0 NMembers - Number of members (-) - MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MDivSize MCoefMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory] - (-) (-) (-) (-) (-) (m) (switch) (flag) + MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MDivSize MCoefMod MHstLMod PropPot [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory] + (-) (-) (-) (-) (-) (m) (switch) (switch) (flag) ---------------------- FILLED MEMBERS ------------------------------------------ 0 NFillGroups - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL] FillNumM FillMList FillFSLoc FillDens @@ -128,7 +95,7 @@ FillNumM FillMList FillFSLoc FillDens MGDpth MGThck MGDens (m) (m) (kg/m^3) ---------------------- MEMBER OUTPUT LIST -------------------------------------- - 0 NMOutputs - Number of member outputs (-) [must be < 10] + 0 NMOutputs - Number of member outputs (-) [must be <= 99] MemberID NOutLoc NodeLocs [NOutLoc < 10; node locations are normalized distance from the start of the member, and must be >=0 and <= 1] [unused if NMOutputs=0] (-) (-) (-) ---------------------- JOINT OUTPUT LIST --------------------------------------- diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_SeaState.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_SeaState.dat new file mode 100644 index 00000000..4e357206 --- /dev/null +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_SeaState.dat @@ -0,0 +1,72 @@ +------- SeaState Input File ---------------------------------------------------- +IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floating platform +False Echo - Echo the input file data (flag) +---------------------- ENVIRONMENTAL CONDITIONS -------------------------------- + "default" WtrDens - Water density (kg/m^3) + "default" WtrDpth - Water depth (meters) + "default" MSL2SWL - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2] +---------------------- SPATIAL DISCRETIZATION --------------------------------------------------- + 5 X_HalfWidth – Half-width of the domain in the X direction (m) [>0, NOTE: X[nX] = nX*dX, where nX = {-NX+1,-NX+2,…,NX-1} and dX = X_HalfWidth/(NX-1)] + 5 Y_HalfWidth – Half-width of the domain in the Y direction (m) [>0, NOTE: Y[nY] = nY*dY, where nY = {-NY+1,-NY+2,…,NY-1} and dY = Y_HalfWidth/(NY-1)] +"default" Z_Depth – Depth of the domain the Z direction (m) relative to SWL [0 < Z_Depth <= WtrDpth+MSL2SWL; "default": Z_Depth = WtrDpth+MSL2SWL; Z[nZ] = ( COS( nZ*dthetaZ ) – 1 )*Z_Depth, where nZ = {0,1,…NZ-1} and dthetaZ = pi/( 2*(NZ-1) )] + 2 NX – Number of nodes in half of the X-direction domain (-) [>=2] + 2 NY – Number of nodes in half of the Y-direction domain (-) [>=2] + 15 NZ – Number of nodes in the Z direction (-) [>=2] +---------------------- WAVES --------------------------------------------------- + 2 WaveMod - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch) + 0 WaveStMod - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0] + 850.00 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT] + 0.25 WaveDT - Time step for incident wave calculations (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT] + 1.10 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1 or 2] + 8.52 WaveTp - Peak spectral period of incident waves (sec) [used only when WaveMod=1 or 2] + DEFAULT WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz] + 0.111527 WvLowCOff - Low cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] + 3.2 WvHiCOff - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6] + 0.00 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6] + 0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4] + 1 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1] + 1 WaveNDir - Number of wave directions (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only] + 90 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1] + -561580799 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] + RANLUX WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6] + TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4] + "none" WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6] +---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6] + True WvDiffQTF - Full difference-frequency 2nd-order wave kinematics (flag) + True WvSumQTF - Full summation-frequency 2nd-order wave kinematics (flag) + 0 WvLowCOffD - Low frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] + 0.737863 WvHiCOffD - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method] + 0.314159 WvLowCOffS - Low frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] + 3.2 WvHiCOffS - High frequency cutoff used in the summation-frequencies (rad/s) [Only used with a summation-frequency method] +---------------------- CONSTRAINED WAVES --------------------------------------- + 0 ConstWaveMod - Constrained wave model: 0=none; 1=Constrained wave with specified crest elevation, alpha; 2=Constrained wave with guaranteed peak-to-trough crest height, HCrest (flag) + 1 CrestHmax - Crest height (2*alpha for ConstWaveMod=1 or HCrest for ConstWaveMod=2), must be larger than WaveHs (m) [unused when ConstWaveMod=0] + 60 CrestTime - Time at which the crest appears (s) [unused when ConstWaveMod=0] + 0 CrestXi - X-position of the crest (m) [unused when ConstWaveMod=0] + 0 CrestYi - Y-position of the crest (m) [unused when ConstWaveMod=0] +---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6] + 0 CurrMod - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch) + 0 CurrSSV0 - Sub-surface current velocity at still water level (m/s) [used only when CurrMod=1] + "DEFAULT" CurrSSDir - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1] + 20 CurrNSRef - Near-surface current reference depth (meters) [used only when CurrMod=1] + 0 CurrNSV0 - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1] + 0 CurrNSDir - Near-surface current heading direction (degrees) [used only when CurrMod=1] + 0 CurrDIV - Depth-independent current velocity (m/s) [used only when CurrMod=1] + 0 CurrDIDir - Depth-independent current heading direction (degrees) [used only when CurrMod=1] +---------------------- MacCamy-Fuchs diffraction model ------------------------- + 0 MCFD - MacCamy-Fuchs member radius (ignored if radius <= 0) [must be 0 when WaveMod 0 or 6] +---------------------- OUTPUT -------------------------------------------------- +False SeaStSum - Output a summary file [flag] + 2 OutSwtch - Output requested channels to: [1=SeaState.out, 2=GlueCode.out, 3=both files] +"ES11.4e2" OutFmt - Output format for numerical results (quoted string) [not checked for validity!] +"A11" OutSFmt - Output format for header strings (quoted string) [not checked for validity!] + 1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [maximum of 9 output locations] + 0 WaveElevxi - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] + 0 WaveElevyi - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0] + 2 NWaveKin - Number of points where the wave kinematics can be output (-) [maximum of 9 output locations] + 5, -5 WaveKinxi - List of xi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] + 5, -5 WaveKinyi - List of yi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] + -10, -15 WaveKinzi - List of zi-coordinates for points where the wave kinematics can be output (meters) [NWaveKin points, separated by commas or white space; usused if NWaveKin = 0] +---------------------- OUTPUT CHANNELS ----------------------------------------- +"Wave1Elev" - Wave elevation at the WAMIT reference point (0,0) +END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line) diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat index 33648fe8..2b902e66 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat @@ -57,22 +57,22 @@ True GenTiStp - Method to stop the generator {T: timed usin 9999.9 TYawManS - Time to start override yaw maneuver and end standard yaw control (s) 0.25 YawManRat - Yaw maneuver rate (in absolute value) (deg/s) 0.0 NacYawF - Final yaw angle for override yaw maneuvers (degrees) ----------------------- Aerodynamic Flow Control ------------------------------------- -0 AfCmode - Airfoil control mode {0- none, 1- cosine wave cycle, 4- user-defined from Simulink/Labview, 5- user-defined from Bladed-style DLL} -0.0 AfC_Mean - Mean level for sinusoidal cycling or steady value (-) [used only with AfCmode==1] -0.0 AfC_Amp - Amplitude for for cosine cycling of flap signal (AfC = AfC_Amp*cos(Azimuth+phase)+AfC_mean) (-) [used only with AfCmode==1] +---------------------- AERODYNAMIC FLOW CONTROL -------------------------------- +0 AfCmode - Airfoil control mode {0: none, 1: cosine wave cycle, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) +0.0 AfC_Mean - Mean level for cosine cycling or steady value (-) [used only with AfCmode==1] +0.0 AfC_Amp - Amplitude for for cosine cycling of flap signal (-) [used only with AfCmode==1] 0.0 AfC_phase - Phase relative to the blade azimuth (0 is vertical) for for cosine cycling of flap signal (deg) [used only with AfCmode==1] ----------------------- STRUCTURAL CONTROL --------------------------------------- -0 NumBStC - Number of blade structural controllers (integer) -"unused" BStCfiles - Name of the file for blade tuned mass damper (quoted string) [unused when CompNTMD is false] +---------------------- STRUCTURAL CONTROL -------------------------------------- + 0 NumBStC - Number of blade structural controllers (integer) +"unused" BStCfiles - Name of the files for blade structural controllers (quoted strings) [unused when NumBStC==0] 0 NumNStC - Number of nacelle structural controllers (integer) -"unused" NStCfiles - Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false] +"unused" NStCfiles - Name of the files for nacelle structural controllers (quoted strings) [unused when NumNStC==0] 0 NumTStC - Number of tower structural controllers (integer) -"unused" TStCfiles - Name of the file for tower tuned mass damper (quoted string) [unused when CompNTMD is false] -0 NumSStC - Number of sbustructure structural controllers (integer) -"unused" SStCfiles - Name of the file for sbustructure tuned mass damper (quoted string) [unused when CompNTMD is false] ----------------------- CABLE CONTROL ---------------------------------------- -0 CCmode - Cable control mode {0- none, 4- user-defined from Simulink/Labview, 5- user-defineAfC_phased from Bladed-style DLL} +"unused" TStCfiles - Name of the files for tower structural controllers (quoted strings) [unused when NumTStC==0] +0 NumSStC - Number of substructure structural controllers (integer) +"unused" SStCfiles - Name of the files for substructure structural controllers (quoted strings) [unused when NumSStC==0] +---------------------- CABLE CONTROL ------------------------------------------- +0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] "/usr/share/miniconda3/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "IEA-15-240-RWT-UMaineSemi_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] diff --git a/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat b/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat index 0c4ff9a7..0e599683 100644 --- a/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat +++ b/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_BeamDyn.dat @@ -5,16 +5,16 @@ False Echo - Echo input data to ".ech" (flag) True QuasiStaticInit - Use quasistatic pre-conditioning with centripetal accelerations in initialization (flag) [dynamic solve only] 0 rhoinf - Numerical damping parameter for generalized-alpha integrator 2 quadrature - Quadrature method: 1=Gaussian; 2=Trapezoidal (switch) - 2 refine - Refinement factor for trapezoidal quadrature (-). DEFAULT = 1 [used only when quadrature=2] -DEFAULT n_fact - Factorization frequency (-). DEFAULT = 5 -DEFAULT DTBeam - Time step size (s). -DEFAULT load_retries - Number of factored load retries before quitting the aimulation -DEFAULT NRMax - Max number of iterations in Newton-Ralphson algorithm (-). DEFAULT = 10 -DEFAULT stop_tol - Tolerance for stopping criterion (-) -DEFAULT tngt_stf_fd - Flag to use finite differenced tangent stiffness matrix (-) -DEFAULT tngt_stf_comp - Flag to compare analytical finite differenced tangent stiffness matrix (-) -DEFAULT tngt_stf_pert - perturbation size for finite differencing (-) -DEFAULT tngt_stf_difftol- Maximum allowable relative difference between analytical and fd tangent stiffness (-) + 2 refine - Refinement factor for trapezoidal quadrature (-) [DEFAULT = 1; used only when quadrature=2] +"DEFAULT" n_fact - Factorization frequency for the Jacobian in N-R iteration(-) [DEFAULT = 5] +"DEFAULT" DTBeam - Time step size (s) +"DEFAULT" load_retries - Number of factored load retries before quitting the simulation [DEFAULT = 20] +"DEFAULT" NRMax - Max number of iterations in Newton-Raphson algorithm (-) [DEFAULT = 10] +"DEFAULT" stop_tol - Tolerance for stopping criterion (-) [DEFAULT = 1E-5] +"DEFAULT" tngt_stf_fd - Use finite differenced tangent stiffness matrix? (flag) +"DEFAULT" tngt_stf_comp - Compare analytical finite differenced tangent stiffness matrix? (flag) +"DEFAULT" tngt_stf_pert - Perturbation size for finite differencing (-) [DEFAULT = 1E-6] +"DEFAULT" tngt_stf_difftol- Maximum allowable relative difference between analytical and fd tangent stiffness (-); [DEFAULT = 0.1] True RotStates - Orient states in the rotating frame during linearization? (flag) [used only when linearizing] ---------------------- GEOMETRY PARAMETER -------------------------------------- 1 member_total - Total number of members (-) diff --git a/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat b/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat index e88a20ef..b6c9be87 100644 --- a/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat +++ b/OpenFAST/IEA-15-240-RWT/IEA-15-240-RWT_InflowFile.dat @@ -3,7 +3,7 @@ IEA 15 MW Offshore Reference Turbine --------------------------------------------------------------------------------------------------------------- False Echo - Echo input data to .ech (flag) 1 WindType - switch for wind file type (1=steady; 2=uniform; 3=binary TurbSim FF; 4=binary Bladed-style FF; 5=HAWC format; 6=User defined; 7=native Bladed FF) -0.0 PropagationDir - Direction of wind propagation (meteoroligical rotation from aligned with X (positive rotates towards -Y) -- degrees) +0.0 PropagationDir - Direction of wind propagation (meteorological rotation from aligned with X (positive rotates towards -Y) -- degrees) (not used for native Bladed format WindType=7) 0.0 VFlowAng - Upflow angle (degrees) (not used for native Bladed format WindType=7) False VelInterpCubic - Use cubic interpolation for velocity in time (false=linear, true=cubic) [Used with WindType=2,3,4,5,7] 1 NWindVel - Number of points to output the wind velocity (0 to 9) @@ -20,9 +20,9 @@ False VelInterpCubic - Use cubic interpolation for velocity in 240.0 RefLength - Reference length for linear horizontal and vertical sheer (-) ================== Parameters for Binary TurbSim Full-Field files [used only for WindType = 3] ============== "none" FileName_BTS - Name of the Full field wind file to use (.bts) -================== Parameters for Binary Bladed-style Full-Field files [used only for WindType = 4] ========= -"none" FilenameRoot - Rootname of the full-field wind file to use (.wnd, .sum) -False TowerFile - Have tower file (.twr) (flag) +================== Parameters for Binary Bladed-style Full-Field files [used only for WindType = 4 or WindType = 7] ========= +"none" FilenameRoot - WindType=4: Rootname of the full-field wind file to use (.wnd, .sum); WindType=7: name of the intermediate file with wind scaling values +False TowerFile - Have tower file (.twr) (flag) ignored when WindType = 7 ================== Parameters for HAWC-format binary files [Only used with WindType = 5] ===================== "none" FileName_u - name of the file containing the u-component fluctuating wind (.bin) "none" FileName_v - name of the file containing the v-component fluctuating wind (.bin) From 50ff78a93f6e298b76e59d87233ee5e3ca79d3ba Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Sat, 4 Jan 2025 07:23:03 -0700 Subject: [PATCH 2/6] use copy of openfast_io functions instead of weio for OFv4 compatibility --- .github/workflows/CI_IEA15.yml | 2 +- tests/_test_functions.py | 36 +- tests/test_hawc2_openfast_rnaprops.py | 8 +- tests/test_xlsx_openfast.py | 12 +- tests/util/FAST_output_reader.py | 230 + tests/util/FAST_reader.py | 2982 +++++++- tests/util/FAST_vars_out.py | 9764 +++++++++++++++++++++++++ 7 files changed, 13007 insertions(+), 27 deletions(-) create mode 100644 tests/util/FAST_output_reader.py create mode 100644 tests/util/FAST_vars_out.py diff --git a/.github/workflows/CI_IEA15.yml b/.github/workflows/CI_IEA15.yml index 97697880..11f74199 100644 --- a/.github/workflows/CI_IEA15.yml +++ b/.github/workflows/CI_IEA15.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v2 + - uses: conda-incubator/setup-miniconda@v3 # https://github.com/marketplace/actions/setup-miniconda with: miniconda-version: "latest" diff --git a/tests/_test_functions.py b/tests/_test_functions.py index 7cff4ef5..c6c132ed 100644 --- a/tests/_test_functions.py +++ b/tests/_test_functions.py @@ -5,7 +5,8 @@ import numpy as np import pandas as pd import yaml -import weio +#import weio +import util.FAST_reader as ofio FROOT = Path(__file__).parents[1] # location of directory one level up (main GitHub) PI = np.pi # for convenience @@ -69,7 +70,11 @@ def calculate_mom_iner(out_diam, thick): def load_elastodyn_distprop(path): """Load distributed properties in ED file.""" - ed = weio.read(str(path)) + #fst = str(path).replace('_ElastoDyn.dat','.fst') + myobj = ofio.InputReader_OpenFAST() + myobj.read_ElastoDynTower(str(path)) + ed = myobj.fst_vt['ElastoDynTower'] + #ed = weio.read(str(path)) ''' with open(path, 'r', encoding='utf-8') as f: for il, line in enumerate(f): @@ -78,23 +83,30 @@ def load_elastodyn_distprop(path): break ed_distprop = np.loadtxt(path, skiprows=19, max_rows=ntwinpst) ''' - return ed['TowProp'] + towprop = np.c_[ed['HtFract'], ed['TMassDen'], ed['TwFAStif'], ed['TwSSStif']] + #return ed['TowProp'] + return towprop def load_subdyn_distprop(sd_path, outfit=1.0): """Load distributed properties in SD file.""" - sd = weio.read(str(sd_path)) - idx = np.int_( sd['Members'][:,-2] - 1 ) - idx = np.r_[0, idx] - #z = sd_dict['Joints'][:,3] - E = sd['BeamProp'][:,1] - #G = sd['BeamProp'][:,2] - rho = sd['BeamProp'][:,3] - D = sd['BeamProp'][:,4] - t = sd['BeamProp'][:,5] + myobj = ofio.InputReader_OpenFAST() + myobj.read_SubDyn(str(sd_path)) + sd = myobj.fst_vt['SubDyn'] + #sd = weio.read(str(sd_path)) + #idx = np.int_( sd['Members'][:,-2] - 1 ) + #idx = np.r_[0, idx] + ##z = sd_dict['Joints'][:,3] + idx = np.r_[1, sd['MPropSetID2']] - 1 + E = np.array( sd['YoungE1'] )#sd['BeamProp'][:,1] + ##G = sd['BeamProp'][:,2] + rho = np.array( sd['MatDens1'] ) #sd['BeamProp'][:,3] + D = np.array( sd['XsecD'] ) #sd['BeamProp'][:,4] + t = np.array( sd['XsecT'] ) #sd['BeamProp'][:,5] mpl = calculate_mpl(D[idx], t[idx], rho[idx], outfitting_factor=outfit) EI = E[idx] * calculate_mom_iner(D[idx], t[idx]) return mpl, EI, D[idx], t[idx] + def load_yaml(path): """Load the yaml file.""" diff --git a/tests/test_hawc2_openfast_rnaprops.py b/tests/test_hawc2_openfast_rnaprops.py index 56b38725..6fce17ae 100644 --- a/tests/test_hawc2_openfast_rnaprops.py +++ b/tests/test_hawc2_openfast_rnaprops.py @@ -7,7 +7,8 @@ """ import numpy as np from wetb.hawc2 import HTCFile -import weio +#import weio +import util.FAST_reader as ofio import _test_functions as tstf from _test_functions import FROOT @@ -26,7 +27,10 @@ def test_of_h2_onshore(self): h2_dir = h2_dir.as_posix() # wetb requires strings, not Path objects... h2_path = h2_path.as_posix() - ed_dict = weio.read(str(ed_path)) + myobj = ofio.InputReader_OpenFAST() + myobj.read_ElastoDyn( str(ed_path) ) + ed_dict = myobj.fst_vt['ElastoDyn'] + #ed_dict = weio.read(str(ed_path)) htc = HTCFile(h2_path, modelpath=h2_dir) htc_struc = htc.new_htc_structure diff --git a/tests/test_xlsx_openfast.py b/tests/test_xlsx_openfast.py index 1c4a5b64..60166f3e 100644 --- a/tests/test_xlsx_openfast.py +++ b/tests/test_xlsx_openfast.py @@ -1,4 +1,5 @@ -import weio +#import weio +import util.FAST_reader as ofio import os import pandas as pd import unittest @@ -8,8 +9,13 @@ class TestConsistency(unittest.TestCase): def test_nacelle_mass(self): # ElastoDyn vals - ED_mono = weio.read( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-Monopile', 'IEA-15-240-RWT-Monopile_ElastoDyn.dat') ) - ED_semi = weio.read( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-UMaineSemi', 'IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat') ) + #ED_mono = weio.read( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-Monopile', 'IEA-15-240-RWT-Monopile_ElastoDyn.dat') ) + #ED_semi = weio.read( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-UMaineSemi', 'IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat') ) + myobj = ofio.InputReader_OpenFAST() + myobj.read_ElastoDyn( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-Monopile', 'IEA-15-240-RWT-Monopile_ElastoDyn.dat') ) + ED_mono = myobj.fst_vt['ElastoDyn'].copy() + myobj.read_ElastoDyn( os.path.join(FROOT, 'OpenFAST', 'IEA-15-240-RWT-UMaineSemi', 'IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat') ) + ED_semi = myobj.fst_vt['ElastoDyn'].copy() # Excel tabular data tabdata = pd.read_excel( os.path.join(FROOT, 'Documentation', 'IEA-15-240-RWT_tabular.xlsx'), diff --git a/tests/util/FAST_output_reader.py b/tests/util/FAST_output_reader.py new file mode 100644 index 00000000..d81ba979 --- /dev/null +++ b/tests/util/FAST_output_reader.py @@ -0,0 +1,230 @@ +# +# Copyright 2017 National Renewable Energy Laboratory +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +''' +Created on 03/09/2015 +@author: MMPE +Copied from https://github.com/WISDEM/AeroelasticSE/tree/openmdao1/src/AeroelasticSE/old_files on 15 Aug 2016 by Ganesh Vijayakumar +''' +import os +import numpy as np +import struct + +class FASTOutputFile(): + """ + Read an OpenFAST ouput file (.out, .outb, .elev). + + Main methods + ------------ + - read, write, toDataFrame + """ + + def __init__(self, filename=None, method='numpy'): + """ + Load a FAST binary or ascii output file + + Parameters + ---------- + filename : str + filename + + Returns + ------- + data: ndarray + data values + info: dict + info containing: + - name: filename + - description: description of dataset + - attribute_names: list of attribute names + - attribute_units: list of attribute units + """ + + assert os.path.isfile(filename), "File, %s, does not exists" % filename + + ext = os.path.splitext(filename)[1] + if ext in ['.out']: + with open(filename, 'r') as f: + try: + f.readline() + except UnicodeDecodeError: + self.data, self.info = load_binary_output(filename) + + self.data, self.info = load_ascii_output(filename) + + elif ext == '.outb': + self.data, self.info, self.pack = load_binary_output(filename) + + else: + raise ValueError(f'File extension, {ext}, not supported') + + if method == 'pandas': + self.toDataFrame() + + + + def toDataFrame(self): + import pandas as pd + """ + Returns object into one DataFrame, or a dictionary of DataFrames + Borrowed from openfast_toolbox + """ + # --- Example (returning one DataFrame): + # return pd.DataFrame(data=np.zeros((10,2)),columns=['Col1','Col2']) + if self.info['attribute_units'] is not None: + if len(self.info['attribute_names'])!=len(self.info['attribute_units']): + cols=self.info['attribute_names'] + print('[WARN] not all columns have units! Skipping units') + else: + cols=[n+'_['+u.replace('sec','s')+']' for n,u in zip(self.info['attribute_names'],self.info['attribute_units'])] + else: + cols=self.info['attribute_names'] + if isinstance(self.data, pd.DataFrame): + df= self.data + df.columns=cols + else: + if len(cols)!=self.data.shape[1]: + raise Warning('Inconstistent number of columns between headers ({}) and data ({}) for file {}'.format(len(cols), self.data.shape[1], self.filename)) + df = pd.DataFrame(data=self.data,columns=cols) + + return df + + +def load_ascii_output(filename, headerLines = 8, descriptionLine = 4, attributeLine = 6, unitLine = 7, delimiter = None): + with open(filename) as f: + info = {} + info['name'] = os.path.splitext(os.path.basename(filename))[0] + header = [f.readline() for _ in range(headerLines)] + info['description'] = header[descriptionLine].strip() + info['attribute_names'] = header[attributeLine].strip().split(delimiter) + info['attribute_units'] = [unit[1:-1] for unit in header[unitLine].strip().split(delimiter)] #removing "()" + data = np.array([line.split(delimiter) for line in f.readlines()], dtype=float) + return data, info + +def load_binary_output(filename): + """ + Ported from ReadFASTbinary.m by Mads M Pedersen, DTU Wind + Info about ReadFASTbinary.m: + Author: Bonnie Jonkman, National Renewable Energy Laboratory + (c) 2012, National Renewable Energy Laboratory + Edited for FAST v7.02.00b-bjj 22-Oct-2012 + """ + + def fread(fid, n, type): + fmt, nbytes = {'uint8': ('B', 1), 'int16':('h', 2), 'int32':('i', 4), 'float32':('f', 4), 'float64':('d', 8)}[type] + return struct.unpack(fmt * n, fid.read(nbytes * n)) + + FileFmtID_WithTime = 1 # File identifiers used in FAST + FileFmtID_WithoutTime = 2 + FileFmtID_NoCompressWithoutTime = 3 + FileFmtID_ChanLen_In = 4 + + with open(filename, 'rb') as fid: + FileID = fread(fid, 1, 'int16')[0] # FAST output file format, INT(2) + + if FileID == FileFmtID_ChanLen_In: + LenName = fread(fid, 1, 'int16')[0] # Number of characters in channel names and units + else: + LenName = 10 # default number of characters per channel name + + + NumOutChans = fread(fid, 1, 'int32')[0] # The number of output channels, INT(4) + NT = fread(fid, 1, 'int32')[0] # The number of time steps, INT(4) + + if FileID == FileFmtID_WithTime: + TimeScl = fread(fid, 1, 'float64') # The time slopes for scaling, REAL(8) + TimeOff = fread(fid, 1, 'float64') # The time offsets for scaling, REAL(8) + else: + TimeOut1 = fread(fid, 1, 'float64') # The first time in the time series, REAL(8) + TimeIncr = fread(fid, 1, 'float64') # The time increment, REAL(8) + + if FileID != FileFmtID_NoCompressWithoutTime: + ColScl = fread(fid, NumOutChans, 'float32') # The channel slopes for scaling, REAL(4) + ColOff = fread(fid, NumOutChans, 'float32') # The channel offsets for scaling, REAL(4) + + LenDesc = fread(fid, 1, 'int32')[0] # The number of characters in the description string, INT(4) + DescStrASCII = fread(fid, LenDesc, 'uint8') # DescStr converted to ASCII + DescStr = "".join(map(chr, DescStrASCII)).strip() + + ChanName = [] # initialize the ChanName cell array + for iChan in range(NumOutChans + 1): + ChanNameASCII = fread(fid, LenName, 'uint8') # ChanName converted to numeric ASCII + ChanName.append("".join(map(chr, ChanNameASCII)).strip()) + + ChanUnit = [] # initialize the ChanUnit cell array + for iChan in range(NumOutChans + 1): + ChanUnitASCII = fread(fid, LenName, 'uint8') # ChanUnit converted to numeric ASCII + ChanUnit.append("".join(map(chr, ChanUnitASCII)).strip()[1:-1]) + + # get the channel time series + nPts = NT * NumOutChans # number of data points in the file + if FileID == FileFmtID_WithTime: + PackedTime = fread(fid, NT, 'int32') # read the time data + cnt = len(PackedTime) + if cnt < NT: + raise Exception('Could not read entire %s file: read %d of %d time values' % (filename, cnt, NT)) + + if FileID == FileFmtID_NoCompressWithoutTime: + PackedData = fread(fid, nPts, 'float64') # read the channel data + else: + PackedData = fread(fid, nPts, 'int16') # read the channel data + + cnt = len(PackedData) + if cnt < nPts: + raise Exception('Could not read entire %s file: read %d of %d values' % (filename, cnt, nPts)) + + if FileID == FileFmtID_NoCompressWithoutTime: + pack = np.array(PackedData).reshape(NT, NumOutChans) + data = pack + else: + # Scale the packed binary to real data + pack = np.array(PackedData).reshape(NT, NumOutChans) + data = (pack - ColOff) / ColScl + + if FileID == FileFmtID_WithTime: + time = (np.array(PackedTime) - TimeOff) / TimeScl; + else: + time = TimeOut1 + TimeIncr * np.arange(NT) + + data = np.concatenate([time.reshape(NT, 1), data], 1) + pack = np.concatenate([time.reshape(NT, 1), pack], 1) + + info = {'name': os.path.splitext(os.path.basename(filename))[0], + 'description': DescStr, + 'attribute_names': ChanName, + 'attribute_units': ChanUnit} + return data, info, pack + + + +if __name__=="__main__": + + from openfast_io.FileTools import check_rtest_cloned + + parent_dir = os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ) ) + os.sep + + of_outputfile = os.path.join(parent_dir, 'reg_tests', 'r-test', 'glue-codes', + 'openfast', '5MW_Land_BD_DLL_WTurb', '5MW_Land_BD_DLL_WTurb.outb') + + check_rtest_cloned(of_outputfile) + + d,i,p = load_binary_output(of_outputfile) + + print(tuple(i['attribute_names'])) + print(type(d)) + print(i) + print(len(i['attribute_names'])) + print(np.shape(d)) diff --git a/tests/util/FAST_reader.py b/tests/util/FAST_reader.py index 32c44225..2f214e16 100644 --- a/tests/util/FAST_reader.py +++ b/tests/util/FAST_reader.py @@ -2,9 +2,106 @@ import numpy as np from functools import reduce import operator +from .FAST_vars_out import FstOutput +from .FAST_output_reader import load_ascii_output + +try: + from rosco.toolbox.utilities import read_DISCON, load_from_txt + from rosco.toolbox import turbine as ROSCO_turbine + ROSCO = True +except: + ROSCO = False + + +def readline_filterComments(f): + """ + Filter out comments and empty lines from a file + + Args: + f: file handle + + Returns: + line: next line in the file that is not a comment or empty + """ + read = True + while read: + line = f.readline().strip() + if len(line)>0: + if line[0] != '!': + read = False + return line + +def read_array(f,len,split_val=None,array_type=str): + """ + Read an array of values from a line in a file + + Args: + f: file handle + len: number of values to read + split_val: value to stop reading at + array_type: type of values to return + + Returns: + arr: list of values read from the file line with the specified type + """ + + + strings = re.split(',| ',f.readline().strip()) + while '' in strings: # remove empties + strings.remove('') + + if len is None and split_val is None: + raise Exception('Must have len or split_val to use read_array') + + if len is not None: + arr = strings[:len] # select len strings + else: + arr = [] + for s in strings: + if s != split_val: + arr.append(s) + else: + break + + if array_type==str: + arr = [ar.replace('"','') for ar in arr] # remove quotes and commas + elif array_type==float: + arr = [float_read(ar) for ar in arr] + elif array_type==int: + arr = [int_read(ar) for ar in arr] + elif array_type==bool: + arr = [bool_read(ar) for ar in arr] + else: + raise Exception(f"read_array with type {str(array_type)} not currently supported") + + return arr + +def fix_path(name): + """ + split a path, then reconstruct it using os.path.join + + Args: + name: path to fix + + Returns: + new: reconstructed path + """ + name = re.split("\\|/", name) + new = name[0] + for i in range(1,len(name)): + new = os.path.join(new, name[i]) + return new def bool_read(text): - # convert true/false strings to boolean + """ + Read a boolean value from a string + + Args: + text: string to read + + Returns: + True if the string is 'true', False otherwise + """ if 'default' in text.lower(): return str(text) else: @@ -14,7 +111,15 @@ def bool_read(text): return False def float_read(text): - # return float with error handing for "default" values + """ + Read a float value from a string, with error handling for 'default' values + + Args: + text: string to read + + Returns: + float value if the string can be converted, string otherwise + """ if 'default' in text.lower(): return str(text) else: @@ -24,7 +129,15 @@ def float_read(text): return str(text) def int_read(text): - # return int with error handing for "default" values + """ + Read an integer value from a string, with error handling for 'default' values + + Args: + text: string to read + + Returns: + int value if the string can be converted, string otherwise + """ if 'default' in text.lower(): return str(text) else: @@ -33,18 +146,55 @@ def int_read(text): except: return str(text) +def quoted_read(text): + """ + Read a quoted value from a string (i.e. a value between quotes) + + Args: + text: string to read + + Returns: + quoted value if the string is quoted, unquoted value otherwise + + """ + if '"' in text: + return text.split('"')[1] + elif "'" in text: + return text.split("'")[1] + else: + return text + class InputReader_OpenFAST(object): """ OpenFAST input file reader """ def __init__(self): - self.FAST_directory = None # Path to fst directory files + self.FAST_InputFile = None # FAST input file (ext=.fst) + self.FAST_directory = '' # Path to fst directory files + self.path2dll = None # Path to dll file self.fst_vt = {} self.fst_vt['Fst'] = {} + self.fst_vt['outlist'] = FstOutput self.fst_vt['ElastoDyn'] = {} + self.fst_vt['SimpleElastoDyn'] = {} self.fst_vt['ElastoDynBlade'] = {} + self.fst_vt['ElastoDynTower'] = {} + self.fst_vt['InflowWind'] = {} + self.fst_vt['AeroDyn'] = {} + self.fst_vt['AeroDisk'] = {} + self.fst_vt['AeroDynBlade'] = {} + self.fst_vt['AeroDynPolar'] = {} + self.fst_vt['ServoDyn'] = {} + self.fst_vt['DISCON_in'] = {} + self.fst_vt['HydroDyn'] = {} + self.fst_vt['SeaState'] = {} + self.fst_vt['MoorDyn'] = {} + self.fst_vt['SubDyn'] = {} + self.fst_vt['ExtPtfm'] = {} + self.fst_vt['MAP'] = {} self.fst_vt['BeamDyn'] = {} self.fst_vt['BeamDynBlade'] = {} + self.fst_vt['WaterKin'] = {} def set_outlist(self, vartree_head, channel_list): """ Loop through a list of output channel names, recursively set them to True in the nested outlist dict """ @@ -71,6 +221,440 @@ def loop_dict(vartree, search_var, branch): var = var.replace(' ', '') loop_dict(vartree_head, var, []) + def read_outlist_freeForm(self,f,module): + ''' + Replacement for set_outlist that doesn't care about whether the channel is in the outlist vartree + Easier, but riskier because OpenFAST can crash + + Inputs: f - file handle + module - of OpenFAST, e.g. SubDyn, SeaState (these modules use this) + ''' + data = f.readline() + while data.split()[0] != 'END': + pattern = r'"?(.*?)"?' # grab only the text between quotes + data = re.findall(pattern, data)[0] + channels = data.split(',') # split on commas + channels = [c.strip() for c in channels] # strip whitespace + for c in channels: + self.fst_vt['outlist'][module][c] = True + data = f.readline() + + def read_outlist(self,f,module): + ''' + Read the outlist section of the FAST input file, genralized for most modules + + Inputs: f - file handle + module - of OpenFAST, e.g. ElastoDyn, ServoDyn, AeroDyn, AeroDisk, etc. + + ''' + data = f.readline().split()[0] # to counter if we dont have any quotes + while data != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = [row_string[0].split('\n')[0]] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist'][module], channel_list) + data = f.readline().split()[0] # to counter if we dont have any quotes + + def read_MainInput(self): + # Main FAST v8.16-v8.17 Input File + # Currently no differences between FASTv8.16 and OpenFAST. + fst_file = os.path.join(self.FAST_directory, self.FAST_InputFile) + f = open(fst_file) + + # Header of .fst file + f.readline() + self.fst_vt['description'] = f.readline().rstrip() + + # Simulation Control (fst_sim_ctrl) + f.readline() + self.fst_vt['Fst']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['Fst']['AbortLevel'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['TMax'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['DT'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['InterpOrder'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['NumCrctn'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['DT_UJac'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['UJacSclFact'] = float_read(f.readline().split()[0]) + + # Feature Switches and Flags (ftr_swtchs_flgs) + f.readline() + self.fst_vt['Fst']['CompElast'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompInflow'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompAero'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompServo'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompSeaSt'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompHydro'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompSub'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompMooring'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['CompIce'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['MHK'] = int(f.readline().split()[0]) + + # Environmental conditions + f.readline() + self.fst_vt['Fst']['Gravity'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['AirDens'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['WtrDens'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['KinVisc'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['SpdSound'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['Patm'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['Pvap'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['WtrDpth'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['MSL2SWL'] = float_read(f.readline().split()[0]) + + # Input Files (input_files) + f.readline() + self.fst_vt['Fst']['EDFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['BDBldFile(1)'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['BDBldFile(2)'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['BDBldFile(3)'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['InflowFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['AeroFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['ServoFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['SeaStFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['HydroFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['SubFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['MooringFile'] = quoted_read(f.readline().split()[0]) + self.fst_vt['Fst']['IceFile'] = quoted_read(f.readline().split()[0]) + + # FAST Output Parameters (fst_output_params) + f.readline() + self.fst_vt['Fst']['SumPrint'] = bool_read(f.readline().split()[0]) + self.fst_vt['Fst']['SttsTime'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['ChkptTime'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['DT_Out'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['TStart'] = float_read(f.readline().split()[0]) + self.fst_vt['Fst']['OutFileFmt'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['TabDelim'] = bool_read(f.readline().split()[0]) + self.fst_vt['Fst']['OutFmt'] = quoted_read(f.readline().split()[0]) + + # Fst + f.readline() + self.fst_vt['Fst']['Linearize'] = f.readline().split()[0] + self.fst_vt['Fst']['CalcSteady'] = f.readline().split()[0] + self.fst_vt['Fst']['TrimCase'] = f.readline().split()[0] + self.fst_vt['Fst']['TrimTol'] = f.readline().split()[0] + self.fst_vt['Fst']['TrimGain'] = f.readline().split()[0] + self.fst_vt['Fst']['Twr_Kdmp'] = f.readline().split()[0] + self.fst_vt['Fst']['Bld_Kdmp'] = f.readline().split()[0] + self.fst_vt['Fst']['NLinTimes'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['LinTimes'] = read_array(f, self.fst_vt['Fst']['NLinTimes'], array_type=float) + self.fst_vt['Fst']['LinInputs'] = f.readline().split()[0] + self.fst_vt['Fst']['LinOutputs'] = f.readline().split()[0] + self.fst_vt['Fst']['LinOutJac'] = f.readline().split()[0] + self.fst_vt['Fst']['LinOutMod'] = f.readline().split()[0] + + # Visualization () + f.readline() + self.fst_vt['Fst']['WrVTK'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['VTK_type'] = int(f.readline().split()[0]) + self.fst_vt['Fst']['VTK_fields'] = bool_read(f.readline().split()[0]) + self.fst_vt['Fst']['VTK_fps'] = float_read(f.readline().split()[0]) + + f.close() + + # File paths + self.fst_vt['Fst']['EDFile_path'] = os.path.split(self.fst_vt['Fst']['EDFile'])[0] + self.fst_vt['Fst']['BDBldFile(1_path)'] = os.path.split(self.fst_vt['Fst']['BDBldFile(1)'])[0] + self.fst_vt['Fst']['BDBldFile(2_path)'] = os.path.split(self.fst_vt['Fst']['BDBldFile(2)'])[0] + self.fst_vt['Fst']['BDBldFile(3_path)'] = os.path.split(self.fst_vt['Fst']['BDBldFile(3)'])[0] + self.fst_vt['Fst']['InflowFile_path'] = os.path.split(self.fst_vt['Fst']['InflowFile'])[0] + self.fst_vt['Fst']['AeroFile_path'] = os.path.split(self.fst_vt['Fst']['AeroFile'])[0] + self.fst_vt['Fst']['ServoFile_path'] = os.path.split(self.fst_vt['Fst']['ServoFile'])[0] + self.fst_vt['Fst']['HydroFile_path'] = os.path.split(self.fst_vt['Fst']['HydroFile'])[0] + self.fst_vt['Fst']['SubFile_path'] = os.path.split(self.fst_vt['Fst']['SubFile'])[0] + self.fst_vt['Fst']['MooringFile_path'] = os.path.split(self.fst_vt['Fst']['MooringFile'])[0] + self.fst_vt['Fst']['IceFile_path'] = os.path.split(self.fst_vt['Fst']['IceFile'])[0] + + def read_ElastoDyn(self, ed_file): + # ElastoDyn v1.03 Input File + # Currently no differences between FASTv8.16 and OpenFAST. + + f = open(ed_file) + + f.readline() + f.readline() + + # Simulation Control (ed_sim_ctrl) + f.readline() + self.fst_vt['ElastoDyn']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['Method'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['DT'] = float_read(f.readline().split()[0]) + + # Degrees of Freedom (dof) + f.readline() + self.fst_vt['ElastoDyn']['FlapDOF1'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['FlapDOF2'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['EdgeDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['DrTrDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['GenDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['YawDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TwFADOF1'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TwFADOF2'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TwSSDOF1'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TwSSDOF2'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmSgDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmSwDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmHvDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmRDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmPDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmYDOF'] = bool_read(f.readline().split()[0]) + + # Initial Conditions (init_conds) + f.readline() + self.fst_vt['ElastoDyn']['OoPDefl'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['IPDefl'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BlPitch1'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BlPitch2'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BlPitch3'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetDefl'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['Azimuth'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['RotSpeed'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacYaw'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TTDspFA'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TTDspSS'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmSurge'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmSway'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmHeave'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmRoll'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmPitch'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmYaw'] = float_read(f.readline().split()[0]) + + + # Turbine Configuration (turb_config) + f.readline() + self.fst_vt['ElastoDyn']['NumBl'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TipRad'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['HubRad'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PreCone(1)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PreCone(2)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PreCone(3)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['HubCM'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['UndSling'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['Delta3'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['AzimB1Up'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['OverHang'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['ShftGagL'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['ShftTilt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacCMxn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacCMyn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacCMzn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NcIMUxn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NcIMUyn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NcIMUzn'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['Twr2Shft'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TowerHt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TowerBsHt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmCMxt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmCMyt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmCMzt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmRefzt'] = float_read(f.readline().split()[0]) + + # Mass and Inertia (mass_inertia) + f.readline() + self.fst_vt['ElastoDyn']['TipMass(1)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TipMass(2)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TipMass(3)'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['HubMass'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['HubIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['GenIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacMass'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NacYIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['YawBrMass'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmMass'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmRIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmPIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmYIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmXYIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmYZIner'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['PtfmXZIner'] = float_read(f.readline().split()[0]) + + # ElastoDyn Blade (blade_struc) + f.readline() + self.fst_vt['ElastoDyn']['BldNodes'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BldFile1'] = quoted_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BldFile2'] = quoted_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BldFile3'] = quoted_read(f.readline().split()[0]) + + # Rotor-Teeter (rotor_teeter) + f.readline() + self.fst_vt['ElastoDyn']['TeetMod'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetDmpP'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetDmp'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetCDmp'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetSStP'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetHStP'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetSSSp'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TeetHSSp'] = float_read(f.readline().split()[0]) + + # Yaw friction + f.readline() + self.fst_vt['ElastoDyn']['YawFrctMod'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_CSmax'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_FCSmax'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_MCSmax'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_CD'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_FCD'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['M_MCD'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['sig_v'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['sig_v2'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['OmgCut'] = float_read(f.readline().split()[0]) + + # Drivetrain (drivetrain) + f.readline() + self.fst_vt['ElastoDyn']['GBoxEff'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['GBRatio'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['DTTorSpr'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['DTTorDmp'] = float_read(f.readline().split()[0]) + + # Furling (furling) + f.readline() + self.fst_vt['ElastoDyn']['Furling'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['FurlFile'] = os.path.join(self.FAST_directory, quoted_read(f.readline().split()[0])) # TODO: add furl file data to fst_vt, pointing to absolute path for now + + # Tower (tower) + f.readline() + self.fst_vt['ElastoDyn']['TwrNodes'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TwrFile'] = quoted_read(f.readline().split()[0]) + + # ED Output Parameters (ed_out_params) + f.readline() + self.fst_vt['ElastoDyn']['SumPrint'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['OutFile'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TabDelim'] = bool_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['TStart'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['DecFact'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['NTwGages'] = int(f.readline().split()[0]) + if self.fst_vt['ElastoDyn']['NTwGages'] != 0: #loop over elements if there are gauges to be added, otherwise assign directly + self.fst_vt['ElastoDyn']['TwrGagNd'] = read_array(f,self.fst_vt['ElastoDyn']['NTwGages'], array_type=int) + else: + self.fst_vt['ElastoDyn']['TwrGagNd'] = 0 + f.readline() + self.fst_vt['ElastoDyn']['NBlGages'] = int(f.readline().split()[0]) + if self.fst_vt['ElastoDyn']['NBlGages'] != 0: + self.fst_vt['ElastoDyn']['BldGagNd'] = read_array(f,self.fst_vt['ElastoDyn']['NBlGages'], array_type=int) + else: + self.fst_vt['ElastoDyn']['BldGagNd'] = 0 + f.readline() + + # Loop through output channel lines + f.readline() + data = f.readline() + # if data != '': + # while data.split()[0] != 'END': + # channels = data.split('"') + # channel_list = channels[1].split(',') + # self.set_outlist(self.fst_vt['outlist']['ElastoDyn'], channel_list) + + # data = f.readline() + # else: + # # there is a blank line between the outlist and the END of the file + # f.readline() + + # Handle the case if there are blank lines before the END statement, check if blank line + while data.split().__len__() == 0: + data = f.readline() + + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = row_string[0].split('\n')[0] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['ElastoDyn'], channel_list) + data = f.readline() + + # ElastoDyn optional outlist + try: + f.readline() + self.fst_vt['ElastoDyn']['BldNd_BladesOut'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDyn']['BldNd_BlOutNd'] = f.readline().split()[0] + + f.readline() + data = f.readline() + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + opt_channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + opt_channel_list = row_string[0].split('\n')[0] + else: + opt_channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['ElastoDyn_Nodes'], opt_channel_list) + data = f.readline() + except: + # The optinal outlist does not exist. + None + + f.close() + + def read_SimpleElastoDyn(self, sed_file): + # Read the Simplified ElastoDyn input file + f = open(sed_file) + + f.readline() + f.readline() + f.readline() + self.fst_vt['SimpleElastoDyn']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['IntMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['DT'] = float_read(f.readline().split()[0]) + + # Degrees of Freedom + f.readline() + self.fst_vt['SimpleElastoDyn']['GenDOF'] = bool_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['YawDOF'] = bool_read(f.readline().split()[0]) + + # Initial Conditions + f.readline() + self.fst_vt['SimpleElastoDyn']['Azimuth'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['BlPitch'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['RotSpeed'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['NacYaw'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['PtfmPitch'] = float_read(f.readline().split()[0]) + + # Turbine Configuration + f.readline() + self.fst_vt['SimpleElastoDyn']['NumBl'] = int_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['TipRad'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['HubRad'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['PreCone'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['OverHang'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['ShftTilt'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['Twr2Shft'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['TowerHt'] = float_read(f.readline().split()[0]) + + # Mass and Inertia + f.readline() + self.fst_vt['SimpleElastoDyn']['RotIner'] = float_read(f.readline().split()[0]) + self.fst_vt['SimpleElastoDyn']['GenIner'] = float_read(f.readline().split()[0]) + + # Drivetrain + f.readline() + self.fst_vt['SimpleElastoDyn']['GBoxRatio'] = float_read(f.readline().split()[0]) + + # Output + f.readline() + f.readline() + + self.read_outlist(f,'SimpleElastoDyn') + + f.close() + + + def read_ElastoDynBlade(self, blade_file): # ElastoDyn v1.00 Blade Input File # Currently no differences between FASTv8.16 and OpenFAST. @@ -128,6 +712,67 @@ def read_ElastoDynBlade(self, blade_file): f.close() + def read_ElastoDynTower(self, tower_file): + # ElastoDyn v1.00 Tower Input Files + # Currently no differences between FASTv8.16 and OpenFAST. + + f = open(tower_file) + + f.readline() + f.readline() + + # General Tower Paramters + f.readline() + self.fst_vt['ElastoDynTower']['NTwInpSt'] = int(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['TwrFADmp1'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['TwrFADmp2'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['TwrSSDmp1'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['TwrSSDmp2'] = float_read(f.readline().split()[0]) + + # Tower Adjustment Factors + f.readline() + self.fst_vt['ElastoDynTower']['FAStTunr1'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['FAStTunr2'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['SSStTunr1'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['SSStTunr2'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['AdjTwMa'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['AdjFASt'] = float_read(f.readline().split()[0]) + self.fst_vt['ElastoDynTower']['AdjSSSt'] = float_read(f.readline().split()[0]) + + # Distributed Tower Properties + f.readline() + f.readline() + f.readline() + self.fst_vt['ElastoDynTower']['HtFract'] = [None] * self.fst_vt['ElastoDynTower']['NTwInpSt'] + self.fst_vt['ElastoDynTower']['TMassDen'] = [None] * self.fst_vt['ElastoDynTower']['NTwInpSt'] + self.fst_vt['ElastoDynTower']['TwFAStif'] = [None] * self.fst_vt['ElastoDynTower']['NTwInpSt'] + self.fst_vt['ElastoDynTower']['TwSSStif'] = [None] * self.fst_vt['ElastoDynTower']['NTwInpSt'] + + for i in range(self.fst_vt['ElastoDynTower']['NTwInpSt']): + data = f.readline().split() + self.fst_vt['ElastoDynTower']['HtFract'][i] = float_read(data[0]) + self.fst_vt['ElastoDynTower']['TMassDen'][i] = float_read(data[1]) + self.fst_vt['ElastoDynTower']['TwFAStif'][i] = float_read(data[2]) + self.fst_vt['ElastoDynTower']['TwSSStif'][i] = float_read(data[3]) + + # Tower Mode Shapes + f.readline() + self.fst_vt['ElastoDynTower']['TwFAM1Sh'] = [None] * 5 + self.fst_vt['ElastoDynTower']['TwFAM2Sh'] = [None] * 5 + for i in range(5): + self.fst_vt['ElastoDynTower']['TwFAM1Sh'][i] = float_read(f.readline().split()[0]) + for i in range(5): + self.fst_vt['ElastoDynTower']['TwFAM2Sh'][i] = float_read(f.readline().split()[0]) + f.readline() + self.fst_vt['ElastoDynTower']['TwSSM1Sh'] = [None] * 5 + self.fst_vt['ElastoDynTower']['TwSSM2Sh'] = [None] * 5 + for i in range(5): + self.fst_vt['ElastoDynTower']['TwSSM1Sh'][i] = float_read(f.readline().split()[0]) + for i in range(5): + self.fst_vt['ElastoDynTower']['TwSSM2Sh'][i] = float_read(f.readline().split()[0]) + + f.close() + def read_BeamDyn(self, bd_file): # BeamDyn Input File f = open(bd_file) @@ -188,9 +833,9 @@ def read_BeamDyn(self, bd_file): #---------------------- OUTPUTS ------------------------------------------------- f.readline() self.fst_vt['BeamDyn']['SumPrint'] = bool_read(f.readline().split()[0]) - self.fst_vt['BeamDyn']['OutFmt'] = f.readline().split()[0][1:-1] + self.fst_vt['BeamDyn']['OutFmt'] = quoted_read(f.readline().split()[0]) self.fst_vt['BeamDyn']['NNodeOuts'] = int_read(f.readline().split()[0]) - self.fst_vt['BeamDyn']['OutNd'] = [idx.strip() for idx in f.readline().split('NNodeOuts')[0].split(',')] + self.fst_vt['BeamDyn']['OutNd'] = [idx.strip() for idx in f.readline().split('OutNd')[0].split(',')] # BeamDyn Outlist f.readline() data = f.readline() @@ -199,15 +844,39 @@ def read_BeamDyn(self, bd_file): channel_list = channels[1].split(',') self.set_outlist(self.fst_vt['outlist']['BeamDyn'], channel_list) data = f.readline() + + # BeamDyn optional outlist + try: + f.readline() + # self.fst_vt['BeamDyn']['BldNd_BladesOut'] = int(f.readline().split()[0]) + self.fst_vt['BeamDyn']['BldNd_BlOutNd'] = f.readline().split()[0] + + f.readline() + data = f.readline() + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + opt_channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + opt_channel_list = row_string[0].split('\n')[0] + else: + opt_channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['BeamDyn_Nodes'], opt_channel_list) + data = f.readline() + except: + # The optinal outlist does not exist. + None f.close() - self.read_BeamDynBlade() + beamdyn_blade_file = os.path.join(os.path.dirname(bd_file), self.fst_vt['BeamDyn']['BldFile']) + self.read_BeamDynBlade(beamdyn_blade_file) - def read_BeamDynBlade(self): + def read_BeamDynBlade(self, beamdyn_blade_file): # BeamDyn Blade - beamdyn_blade_file = os.path.join(self.FAST_directory, self.fst_vt['BeamDyn']['BldFile']) f = open(beamdyn_blade_file) f.readline() @@ -243,3 +912,2298 @@ def read_BeamDynBlade(self): f.readline() f.close() + + def read_InflowWind(self): + # InflowWind v3.01 + # Currently no differences between FASTv8.16 and OpenFAST. + inflow_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['InflowFile'])) + f = open(inflow_file) + + f.readline() + f.readline() + f.readline() + + # Inflow wind header parameters (inflow_wind) + self.fst_vt['InflowWind']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['WindType'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['PropagationDir'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['VFlowAng'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['VelInterpCubic'] = bool_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['NWindVel'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['WindVxiList'] = [idx.strip() for idx in f.readline().split('WindVxiList')[0].split(',')] + self.fst_vt['InflowWind']['WindVyiList'] = [idx.strip() for idx in f.readline().split('WindVyiList')[0].split(',')] + self.fst_vt['InflowWind']['WindVziList'] = [idx.strip() for idx in f.readline().split('WindVziList')[0].split(',')] + + # Parameters for Steady Wind Conditions [used only for WindType = 1] (steady_wind_params) + f.readline() + self.fst_vt['InflowWind']['HWindSpeed'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['RefHt'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['PLExp'] = float_read(f.readline().split()[0]) + + # Parameters for Uniform wind file [used only for WindType = 2] (uniform_wind_params) + f.readline() + self.fst_vt['InflowWind']['FileName_Uni'] = os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0])) + self.fst_vt['InflowWind']['RefHt_Uni'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['RefLength'] = float_read(f.readline().split()[0]) + + # Parameters for Binary TurbSim Full-Field files [used only for WindType = 3] (turbsim_wind_params) + f.readline() + self.fst_vt['InflowWind']['FileName_BTS'] = os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0])) + # Parameters for Binary Bladed-style Full-Field files [used only for WindType = 4] (bladed_wind_params) + f.readline() + self.fst_vt['InflowWind']['FileNameRoot'] = os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0])) + self.fst_vt['InflowWind']['TowerFile'] = bool_read(f.readline().split()[0]) + + # Parameters for HAWC-format binary files [Only used with WindType = 5] (hawc_wind_params) + f.readline() + self.fst_vt['InflowWind']['FileName_u'] = os.path.normpath(os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0]))) + self.fst_vt['InflowWind']['FileName_v'] = os.path.normpath(os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0]))) + self.fst_vt['InflowWind']['FileName_w'] = os.path.normpath(os.path.join(os.path.split(inflow_file)[0], quoted_read(f.readline().split()[0]))) + self.fst_vt['InflowWind']['nx'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['ny'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['nz'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['dx'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['dy'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['dz'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['RefHt_Hawc'] = float_read(f.readline().split()[0]) + + # Scaling parameters for turbulence (still hawc_wind_params) + f.readline() + self.fst_vt['InflowWind']['ScaleMethod'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['SFx'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['SFy'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['SFz'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['SigmaFx'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['SigmaFy'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['SigmaFz'] = float_read(f.readline().split()[0]) + + # Mean wind profile parameters (added to HAWC-format files) (still hawc_wind_params) + f.readline() + self.fst_vt['InflowWind']['URef'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['WindProfile'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['PLExp_Hawc'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['Z0'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['XOffset'] = float_read(f.readline().split()[0]) + + # LIDAR parameters + f.readline() + self.fst_vt['InflowWind']['SensorType'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['NumPulseGate'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['PulseSpacing'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['NumBeam'] = int(f.readline().split()[0]) + self.fst_vt['InflowWind']['FocalDistanceX'] = [idx.strip() for idx in f.readline().split('FocalDistanceX')[0].split(',')] + self.fst_vt['InflowWind']['FocalDistanceY'] = [idx.strip() for idx in f.readline().split('FocalDistanceY')[0].split(',')] + self.fst_vt['InflowWind']['FocalDistanceZ'] = [idx.strip() for idx in f.readline().split('FocalDistanceZ')[0].split(',')] + self.fst_vt['InflowWind']['RotorApexOffsetPos'] = [idx.strip() for idx in f.readline().split('RotorApexOffsetPos')[0].split(',')] + self.fst_vt['InflowWind']['URefLid'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['MeasurementInterval'] = float_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['LidRadialVel'] = bool_read(f.readline().split()[0]) + self.fst_vt['InflowWind']['ConsiderHubMotion'] = int(f.readline().split()[0]) + + # Inflow Wind Output Parameters (inflow_out_params) + f.readline() + self.fst_vt['InflowWind']['SumPrint'] = bool_read(f.readline().split()[0]) + + # InflowWind Outlist + f.readline() + data = f.readline() + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = row_string[0].split('\n')[0] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['InflowWind'], channel_list) + data = f.readline() + + f.close() + + def read_AeroDyn(self): + # AeroDyn v15.03 + + ad_file = os.path.join(self.FAST_directory, self.fst_vt['Fst']['AeroFile']) + f = open(ad_file) + + # General Option + f.readline() + f.readline() + f.readline() + self.fst_vt['AeroDyn']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['DTAero'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['Wake_Mod'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TwrPotent'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TwrShadow'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TwrAero'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['CavitCheck'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['Buoyancy'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['NacelleDrag'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['CompAA'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['AA_InputFile'] = f.readline().split()[0] + + # Environmental Conditions + f.readline() + self.fst_vt['AeroDyn']['AirDens'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['KinVisc'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SpdSound'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['Patm'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['Pvap'] = float_read(f.readline().split()[0]) + #self.fst_vt['AeroDyn']['FluidDepth'] = float_read(f.readline().split()[0]) + + f.readline() + self.fst_vt['AeroDyn']['BEM_Mod'] = int(f.readline().split()[0]) + + # Blade-Element/Momentum Theory Options + f.readline() + self.fst_vt['AeroDyn']['Skew_Mod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SkewMomCorr'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SkewRedistr_Mod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SkewRedistrFactor'] = float_read(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['TipLoss'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['HubLoss'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TanInd'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['AIDrag'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TIDrag'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['IndToler'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['MaxIter'] = int(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['SectAvg'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SectAvgWeighting'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SectAvgNPoints'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SectAvgPsiBwd'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['SectAvgPsiFwd'] = float_read(f.readline().split()[0]) + + + # Dynamic Blade-Element/Momentum Theory Options + f.readline() + self.fst_vt['AeroDyn']['DBEMT_Mod'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['tau1_const'] = float_read(f.readline().split()[0]) + + # Olaf -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options + f.readline() + self.fst_vt['AeroDyn']['OLAFInputFileName'] = quoted_read(f.readline().split()[0]) + + # Unsteady Airfoil Aerodynamics Options + f.readline() + self.fst_vt['AeroDyn']['AoA34'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['UA_Mod'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['FLookup'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['IntegrationMethod'] = int(f.readline().split()[0]) + + file_pos = f.tell() + line = f.readline() + if 'UAStartRad' in line: + self.fst_vt['AeroDyn']['UAStartRad'] = float_read(line.split()[0]) + else: + f.seek(file_pos) + + file_pos = f.tell() + line = f.readline() + if 'UAEndRad' in line: + self.fst_vt['AeroDyn']['UAEndRad'] = float_read(line.split()[0]) + else: + f.seek(file_pos) + + + # Airfoil Information + f.readline() + self.fst_vt['AeroDyn']['AFTabMod'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['InCol_Alfa'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['InCol_Cl'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['InCol_Cd'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['InCol_Cm'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['InCol_Cpmin'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['NumAFfiles'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['AFNames'] = [None] * self.fst_vt['AeroDyn']['NumAFfiles'] + for i in range(self.fst_vt['AeroDyn']['NumAFfiles']): + af_filename = fix_path(f.readline().split()[0])[1:-1] + self.fst_vt['AeroDyn']['AFNames'][i] = os.path.abspath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['AeroFile_path'], af_filename)) + + # Rotor/Blade Properties + f.readline() + self.fst_vt['AeroDyn']['UseBlCm'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['ADBlFile1'] = quoted_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['ADBlFile2'] = quoted_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['ADBlFile3'] = quoted_read(f.readline().split()[0]) + + # Hub, nacelle, and tail fin aerodynamics + f.readline() + self.fst_vt['AeroDyn']['VolHub'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['HubCenBx'] = float_read(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['VolNac'] = float_read(f.readline().split()[0]) + # data = [float(val) for val in f.readline().split(',')] + self.fst_vt['AeroDyn']['NacCenB'] = [idx.strip() for idx in f.readline().split('NacCenB')[0].split(',')] + + self.fst_vt['AeroDyn']['NacArea'] = [idx.strip() for idx in f.readline().split('NacArea')[0].split(',')] + self.fst_vt['AeroDyn']['NacCd'] = [idx.strip() for idx in f.readline().split('NacCd')[0].split(',')] + self.fst_vt['AeroDyn']['NacDragAC'] = [idx.strip() for idx in f.readline().split('NacDragAC')[0].split(',')] + f.readline() + self.fst_vt['AeroDyn']['TFinAero'] = bool_read(f.readline().split()[0]) + tfa_filename = fix_path(f.readline().split()[0])[1:-1] + self.fst_vt['AeroDyn']['TFinFile'] = os.path.abspath(os.path.join(self.FAST_directory, tfa_filename)) + + # Tower Influence and Aerodynamics + f.readline() + self.fst_vt['AeroDyn']['NumTwrNds'] = int(f.readline().split()[0]) + f.readline() + f.readline() + self.fst_vt['AeroDyn']['TwrElev'] = [None]*self.fst_vt['AeroDyn']['NumTwrNds'] + self.fst_vt['AeroDyn']['TwrDiam'] = [None]*self.fst_vt['AeroDyn']['NumTwrNds'] + self.fst_vt['AeroDyn']['TwrCd'] = [None]*self.fst_vt['AeroDyn']['NumTwrNds'] + self.fst_vt['AeroDyn']['TwrTI'] = [None]*self.fst_vt['AeroDyn']['NumTwrNds'] + self.fst_vt['AeroDyn']['TwrCb'] = [None]*self.fst_vt['AeroDyn']['NumTwrNds'] + for i in range(self.fst_vt['AeroDyn']['NumTwrNds']): + data = [float(val) for val in f.readline().split()] + self.fst_vt['AeroDyn']['TwrElev'][i] = data[0] + self.fst_vt['AeroDyn']['TwrDiam'][i] = data[1] + self.fst_vt['AeroDyn']['TwrCd'][i] = data[2] + self.fst_vt['AeroDyn']['TwrTI'][i] = data[3] + self.fst_vt['AeroDyn']['TwrCb'][i] = data[4] + + # Outputs + f.readline() + self.fst_vt['AeroDyn']['SumPrint'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['NBlOuts'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['BlOutNd'] = [idx.strip() for idx in f.readline().split('BlOutNd')[0].split(',')] + self.fst_vt['AeroDyn']['NTwOuts'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['TwOutNd'] = [idx.strip() for idx in f.readline().split('TwOutNd')[0].split(',')] + + # AeroDyn Outlist + f.readline() + data = f.readline() + + # Handle the case if there are blank lines before the END statement, check if blank line + while data.split().__len__() == 0: + data = f.readline() + + + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = row_string[0].split('\n')[0] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['AeroDyn'], channel_list) + data = f.readline() + + # AeroDyn optional outlist + try: + f.readline() + self.fst_vt['AeroDyn']['BldNd_BladesOut'] = int(f.readline().split()[0]) + self.fst_vt['AeroDyn']['BldNd_BlOutNd'] = f.readline().split()[0] + + f.readline() + data = f.readline() + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + opt_channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + opt_channel_list = row_string[0].split('\n')[0] + else: + opt_channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['AeroDyn_Nodes'], opt_channel_list) + data = f.readline() + except: + # The optinal outlist does not exist. + None + + f.close() + + self.read_AeroDynBlade() + self.read_AeroDynPolar() + self.read_AeroDynCoord() + olaf_filename = os.path.join(self.FAST_directory, self.fst_vt['AeroDyn']['OLAFInputFileName']) + if os.path.isfile(olaf_filename): + self.read_AeroDynOLAF(olaf_filename) + + def read_AeroDynBlade(self): + # AeroDyn v5.00 Blade Definition File + + ad_blade_file = os.path.join(self.FAST_directory, self.fst_vt['Fst']['AeroFile_path'], self.fst_vt['AeroDyn']['ADBlFile1']) + f = open(ad_blade_file) + + f.readline() + f.readline() + f.readline() + # Blade Properties + self.fst_vt['AeroDynBlade']['NumBlNds'] = int(f.readline().split()[0]) + f.readline() + f.readline() + self.fst_vt['AeroDynBlade']['BlSpn'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlCrvAC'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlSwpAC'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlCrvAng'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlTwist'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlChord'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlAFID'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlCb'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlCenBn'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + self.fst_vt['AeroDynBlade']['BlCenBt'] = [None]*self.fst_vt['AeroDynBlade']['NumBlNds'] + for i in range(self.fst_vt['AeroDynBlade']['NumBlNds']): + data = [float(val) for val in f.readline().split()] + self.fst_vt['AeroDynBlade']['BlSpn'][i] = data[0] + self.fst_vt['AeroDynBlade']['BlCrvAC'][i] = data[1] + self.fst_vt['AeroDynBlade']['BlSwpAC'][i] = data[2] + self.fst_vt['AeroDynBlade']['BlCrvAng'][i]= data[3] + self.fst_vt['AeroDynBlade']['BlTwist'][i] = data[4] + self.fst_vt['AeroDynBlade']['BlChord'][i] = data[5] + self.fst_vt['AeroDynBlade']['BlAFID'][i] = data[6] + if len(data) == 9: + self.fst_vt['AeroDynBlade']['BlCb'][i] = data[7] + self.fst_vt['AeroDynBlade']['BlCenBn'][i] = data[8] + self.fst_vt['AeroDynBlade']['BlCenBt'][i] = data[9] + else: + self.fst_vt['AeroDynBlade']['BlCb'][i] = 0.0 + self.fst_vt['AeroDynBlade']['BlCenBn'][i] = 0.0 + self.fst_vt['AeroDynBlade']['BlCenBt'][i] = 0.0 + + + f.close() + + def read_AeroDynPolar(self): + # AirfoilInfo v1.01 + + + self.fst_vt['AeroDyn']['af_data'] = [None]*self.fst_vt['AeroDyn']['NumAFfiles'] + + for afi, af_filename in enumerate(self.fst_vt['AeroDyn']['AFNames']): + f = open(af_filename) + # print af_filename + + polar = {} + + polar['InterpOrd'] = int_read(readline_filterComments(f).split()[0]) + temp = readline_filterComments(f).split() + if temp[1] == "RelThickness": + polar['RelThickness'] = float_read(temp[0]) + polar['NonDimArea'] = float_read(readline_filterComments(f).split()[0]) + else: + polar['NonDimArea'] = float_read(temp[0]) + # polar['NonDimArea'] = float_read(readline_filterComments(f).split()[0]) + polar['NumCoords'] = readline_filterComments(f).split()[0] + polar['BL_file'] = readline_filterComments(f).split()[0] + polar['NumTabs'] = int_read(readline_filterComments(f).split()[0]) + self.fst_vt['AeroDyn']['af_data'][afi] = [None]*polar['NumTabs'] + + for tab in range(polar['NumTabs']): # For multiple tables + polar['Re'] = float_read(readline_filterComments(f).split()[0]) * 1.e+6 + polar['UserProp'] = int_read(readline_filterComments(f).split()[0]) + polar['InclUAdata'] = bool_read(readline_filterComments(f).split()[0]) + + # Unsteady Aero Data + if polar['InclUAdata']: + polar['alpha0'] = float_read(readline_filterComments(f).split()[0]) + polar['alpha1'] = float_read(readline_filterComments(f).split()[0]) + polar['alpha2'] = float_read(readline_filterComments(f).split()[0]) + # polar['alphaUpper'] = float_read(readline_filterComments(f).split()[0]) + # polar['alphaLower'] = float_read(readline_filterComments(f).split()[0]) + polar['eta_e'] = float_read(readline_filterComments(f).split()[0]) + polar['C_nalpha'] = float_read(readline_filterComments(f).split()[0]) + polar['T_f0'] = float_read(readline_filterComments(f).split()[0]) + polar['T_V0'] = float_read(readline_filterComments(f).split()[0]) + polar['T_p'] = float_read(readline_filterComments(f).split()[0]) + polar['T_VL'] = float_read(readline_filterComments(f).split()[0]) + polar['b1'] = float_read(readline_filterComments(f).split()[0]) + polar['b2'] = float_read(readline_filterComments(f).split()[0]) + polar['b5'] = float_read(readline_filterComments(f).split()[0]) + polar['A1'] = float_read(readline_filterComments(f).split()[0]) + polar['A2'] = float_read(readline_filterComments(f).split()[0]) + polar['A5'] = float_read(readline_filterComments(f).split()[0]) + polar['S1'] = float_read(readline_filterComments(f).split()[0]) + polar['S2'] = float_read(readline_filterComments(f).split()[0]) + polar['S3'] = float_read(readline_filterComments(f).split()[0]) + polar['S4'] = float_read(readline_filterComments(f).split()[0]) + polar['Cn1'] = float_read(readline_filterComments(f).split()[0]) + polar['Cn2'] = float_read(readline_filterComments(f).split()[0]) + polar['St_sh'] = float_read(readline_filterComments(f).split()[0]) + polar['Cd0'] = float_read(readline_filterComments(f).split()[0]) + polar['Cm0'] = float_read(readline_filterComments(f).split()[0]) + polar['k0'] = float_read(readline_filterComments(f).split()[0]) + polar['k1'] = float_read(readline_filterComments(f).split()[0]) + polar['k2'] = float_read(readline_filterComments(f).split()[0]) + polar['k3'] = float_read(readline_filterComments(f).split()[0]) + polar['k1_hat'] = float_read(readline_filterComments(f).split()[0]) + polar['x_cp_bar'] = float_read(readline_filterComments(f).split()[0]) + polar['UACutout'] = float_read(readline_filterComments(f).split()[0]) + polar['filtCutOff'] = float_read(readline_filterComments(f).split()[0]) + + # Polar Data + polar['NumAlf'] = int_read(readline_filterComments(f).split()[0]) + polar['Alpha'] = [None]*polar['NumAlf'] + polar['Cl'] = [None]*polar['NumAlf'] + polar['Cd'] = [None]*polar['NumAlf'] + polar['Cm'] = [None]*polar['NumAlf'] + polar['Cpmin'] = [None]*polar['NumAlf'] + for i in range(polar['NumAlf']): + data = [float(val) for val in readline_filterComments(f).split()] + if self.fst_vt['AeroDyn']['InCol_Alfa'] > 0: + polar['Alpha'][i] = data[self.fst_vt['AeroDyn']['InCol_Alfa']-1] + if self.fst_vt['AeroDyn']['InCol_Cl'] > 0: + polar['Cl'][i] = data[self.fst_vt['AeroDyn']['InCol_Cl']-1] + if self.fst_vt['AeroDyn']['InCol_Cd'] > 0: + polar['Cd'][i] = data[self.fst_vt['AeroDyn']['InCol_Cd']-1] + if self.fst_vt['AeroDyn']['InCol_Cm'] > 0: + polar['Cm'][i] = data[self.fst_vt['AeroDyn']['InCol_Cm']-1] + if self.fst_vt['AeroDyn']['InCol_Cpmin'] > 0: + polar['Cpmin'][i] = data[self.fst_vt['AeroDyn']['InCol_Cpmin']-1] + + self.fst_vt['AeroDyn']['af_data'][afi][tab] = copy.copy(polar) # For multiple tables + + f.close() + + def read_AeroDynCoord(self): + + self.fst_vt['AeroDyn']['af_coord'] = [] + self.fst_vt['AeroDyn']['ac'] = np.zeros(len(self.fst_vt['AeroDyn']['AFNames'])) + + for afi, af_filename in enumerate(self.fst_vt['AeroDyn']['AFNames']): + self.fst_vt['AeroDyn']['af_coord'].append({}) + if not (self.fst_vt['AeroDyn']['af_data'][afi][0]['NumCoords'] == 0 or self.fst_vt['AeroDyn']['af_data'][afi][0]['NumCoords'] == '0'): + coord_filename = af_filename[0:af_filename.rfind(os.sep)] + os.sep + self.fst_vt['AeroDyn']['af_data'][afi][0]['NumCoords'][2:-1] + + f = open(coord_filename) + lines = f.readlines() + f.close() + lines = [line for line in lines if not line.strip().startswith('!')] + n_coords = int(lines[0].split()[0]) + + x = np.zeros(n_coords-1) + y = np.zeros(n_coords-1) + + self.fst_vt['AeroDyn']['ac'][afi] = float(lines[1].split()[0]) + + for j in range(2, n_coords+1): + x[j - 2], y[j - 2] = map(float, lines[j].split()) + + self.fst_vt['AeroDyn']['af_coord'][afi]['x'] = x + self.fst_vt['AeroDyn']['af_coord'][afi]['y'] = y + + + def read_AeroDynOLAF(self, olaf_filename): + + self.fst_vt['AeroDyn']['OLAF'] = {} + f = open(olaf_filename) + f.readline() + f.readline() + f.readline() + self.fst_vt['AeroDyn']['OLAF']['IntMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['DTfvw'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['FreeWakeStart'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['FullCircStart'] = float_read(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['OLAF']['CircSolvMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['CircSolvConvCrit'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['CircSolvRelaxation'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['CircSolvMaxIter'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['PrescribedCircFile'] = os.path.join(self.FAST_directory, quoted_read(f.readline().split()[0])) # unmodified by this script, hence pointing to absolute location + f.readline() + f.readline() + f.readline() + self.fst_vt['AeroDyn']['OLAF']['nNWPanels'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['nNWPanelsFree'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['nFWPanels'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['nFWPanelsFree'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['FWShedVorticity'] = bool_read(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['OLAF']['DiffusionMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['RegDeterMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['RegFunction'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['WakeRegMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['WakeRegFactor'] = float(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['WingRegFactor'] = float(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['CoreSpreadEddyVisc'] = int(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['OLAF']['TwrShadowOnWake'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['ShearModel'] = int_read(f.readline().split()[0]) + f.readline() + self.fst_vt['AeroDyn']['OLAF']['VelocityMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['TreeBranchFactor']= float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['PartPerSegment'] = int_read(f.readline().split()[0]) + f.readline() + f.readline() + self.fst_vt['AeroDyn']['OLAF']['WrVTk'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['nVTKBlades'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['VTKCoord'] = int_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['VTK_fps'] = float_read(f.readline().split()[0]) + self.fst_vt['AeroDyn']['OLAF']['nGridOut'] = int_read(f.readline().split()[0]) + f.readline() + f.close() + + def read_AeroDisk(self): + '''' + Reading the AeroDisk input file. + ''' + + aDisk_file = os.path.join(self.FAST_directory, self.fst_vt['Fst']['AeroFile']) + f = open(aDisk_file) + f.readline() + f.readline() + f.readline() + + # Simulation Control + self.fst_vt['AeroDisk']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['AeroDisk']['DT'] = float_read(f.readline().split()[0]) + + # Environmental Conditions + f.readline() + self.fst_vt['AeroDisk']['AirDens'] = float_read(f.readline().split()[0]) + + # Actuator Disk Properties + f.readline() + self.fst_vt['AeroDisk']['RotorRad'] = float_read(f.readline().split()[0]) + + # read InColNames - Input column headers (string) {may include a combination of "TSR, RtSpd, VRel, Pitch, Skew"} (up to 4 columns) + # Read between the quotes + self.fst_vt['AeroDisk']['InColNames'] = [x.strip() for x in quoted_read(f.readline().split('InColNames')[0]).split(',')] + + # read InColDims - Number of unique values in each column (-) (must have same number of columns as InColName) [each >=2] + self.fst_vt['AeroDisk']['InColDims'] = [int(x) for x in f.readline().split('InColDims')[0].split(',')] + + # read the contents table of the CSV file referenced next + # if the next line starts with an @, then it is a file reference + line = f.readline() + if line[0] == '@': + self.fst_vt['AeroDisk']['actuatorDiskFile'] = os.path.join(self.FAST_directory, line[1:].strip()) + + # using the load_ascii_output function to read the CSV file, ;) + data, info = load_ascii_output(self.fst_vt['AeroDisk']['actuatorDiskFile'], headerLines=3, + descriptionLine=0, attributeLine=1, unitLine=2, delimiter = ',') + self.fst_vt['AeroDisk']['actuatorDiskTable'] = {'dsc': info['description'], + 'attr': info['attribute_names'], + 'units': info['attribute_units'], + 'data': data} + else: + raise Exception('Expecting a file reference to the actuator disk CSV file') + + # read the output list + f.readline() + f.readline() + + self.read_outlist(f,'AeroDisk') + + f.close() + + + def read_ServoDyn(self): + # ServoDyn v1.05 Input File + # Currently no differences between FASTv8.16 and OpenFAST. + + + sd_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['ServoFile'])) + f = open(sd_file) + + f.readline() + f.readline() + + # Simulation Control (sd_sim_ctrl) + f.readline() + self.fst_vt['ServoDyn']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['DT'] = float_read(f.readline().split()[0]) + + # Pitch Control (pitch_ctrl) + f.readline() + self.fst_vt['ServoDyn']['PCMode'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TPCOn'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TPitManS1'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TPitManS2'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TPitManS3'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['PitManRat(1)'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['PitManRat(2)'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['PitManRat(3)'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['BlPitchF(1)'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['BlPitchF(2)'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['BlPitchF(3)'] = float_read(f.readline().split()[0]) + + # Geneartor and Torque Control (gen_torq_ctrl) + f.readline() + self.fst_vt['ServoDyn']['VSContrl'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenModel'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenEff'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenTiStr'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenTiStp'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['SpdGenOn'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TimGenOn'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TimGenOf'] = float_read(f.readline().split()[0]) + + # Simple Variable-Speed Torque Control (var_speed_torq_ctrl) + f.readline() + self.fst_vt['ServoDyn']['VS_RtGnSp'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['VS_RtTq'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['VS_Rgn2K'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['VS_SlPc'] = float_read(f.readline().split()[0]) + + # Simple Induction Generator (induct_gen) + f.readline() + self.fst_vt['ServoDyn']['SIG_SlPc'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['SIG_SySp'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['SIG_RtTq'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['SIG_PORt'] = float_read(f.readline().split()[0]) + + # Thevenin-Equivalent Induction Generator (theveq_induct_gen) + f.readline() + self.fst_vt['ServoDyn']['TEC_Freq'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_NPol'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_SRes'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_RRes'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_VLL'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_SLR'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_RLR'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TEC_MR'] = float_read(f.readline().split()[0]) + + # High-Speed Shaft Brake (shaft_brake) + f.readline() + self.fst_vt['ServoDyn']['HSSBrMode'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['THSSBrDp'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['HSSBrDT'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['HSSBrTqF'] = float_read(f.readline().split()[0]) + + # Nacelle-Yaw Control (nac_yaw_ctrl) + f.readline() + self.fst_vt['ServoDyn']['YCMode'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TYCOn'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['YawNeut'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['YawSpr'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['YawDamp'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TYawManS'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['YawManRat'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['NacYawF'] = float_read(f.readline().split()[0]) + + # Aero flow control + f.readline() + self.fst_vt['ServoDyn']['AfCmode'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['AfC_Mean'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['AfC_Amp'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['AfC_Phase'] = float_read(f.readline().split()[0]) + + # Structural Control + f.readline() + self.fst_vt['ServoDyn']['NumBStC'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['BStCfiles'] = read_array(f,self.fst_vt['ServoDyn']['NumBStC'], array_type=str) + self.fst_vt['ServoDyn']['NumNStC'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['NStCfiles'] = read_array(f,self.fst_vt['ServoDyn']['NumNStC'], array_type=str) + self.fst_vt['ServoDyn']['NumTStC'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TStCfiles'] = read_array(f,self.fst_vt['ServoDyn']['NumTStC'], array_type=str) + self.fst_vt['ServoDyn']['NumSStC'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['SStCfiles'] = read_array(f,self.fst_vt['ServoDyn']['NumSStC'], array_type=str) + + # Initialize Struct Control trees + self.fst_vt['BStC'] = [] * self.fst_vt['ServoDyn']['NumBStC'] + self.fst_vt['NStC'] = [] * self.fst_vt['ServoDyn']['NumNStC'] + self.fst_vt['TStC'] = [] * self.fst_vt['ServoDyn']['NumTStC'] + self.fst_vt['SStC'] = [] * self.fst_vt['ServoDyn']['NumSStC'] + + # Cable control + f.readline() + self.fst_vt['ServoDyn']['CCmode'] = int(f.readline().split()[0]) + + # Bladed Interface and Torque-Speed Look-Up Table (bladed_interface) + f.readline() + if self.path2dll == '' or self.path2dll == None: + self.fst_vt['ServoDyn']['DLL_FileName'] = os.path.abspath(os.path.normpath(os.path.join(os.path.split(sd_file)[0], quoted_read(f.readline().split()[0])))) + else: + f.readline() + self.fst_vt['ServoDyn']['DLL_FileName'] = self.path2dll + self.fst_vt['ServoDyn']['DLL_InFile'] = os.path.abspath(os.path.normpath(os.path.join(os.path.split(sd_file)[0], quoted_read(f.readline().split()[0])))) + self.fst_vt['ServoDyn']['DLL_ProcName'] = quoted_read(f.readline().split()[0]) + dll_dt_line = f.readline().split()[0] + try: + self.fst_vt['ServoDyn']['DLL_DT'] = float_read(dll_dt_line) + except: + self.fst_vt['ServoDyn']['DLL_DT'] = dll_dt_line[1:-1] + self.fst_vt['ServoDyn']['DLL_Ramp'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['BPCutoff'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['NacYaw_North'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['Ptch_Cntrl'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['Ptch_SetPnt'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['Ptch_Min'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['Ptch_Max'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['PtchRate_Min'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['PtchRate_Max'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['Gain_OM'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenSpd_MinOM'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenSpd_MaxOM'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenSpd_Dem'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenTrq_Dem'] = float_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['GenPwr_Dem'] = float_read(f.readline().split()[0]) + + f.readline() + + self.fst_vt['ServoDyn']['DLL_NumTrq'] = int(f.readline().split()[0]) + f.readline() + f.readline() + self.fst_vt['ServoDyn']['GenSpd_TLU'] = [None] * self.fst_vt['ServoDyn']['DLL_NumTrq'] + self.fst_vt['ServoDyn']['GenTrq_TLU'] = [None] * self.fst_vt['ServoDyn']['DLL_NumTrq'] + for i in range(self.fst_vt['ServoDyn']['DLL_NumTrq']): + data = f.readline().split() + self.fst_vt['ServoDyn']['GenSpd_TLU'][i] = float_read(data[0]) + self.fst_vt['ServoDyn']['GenTrq_TLU'][i] = float_read(data[0]) + + # ServoDyn Output Params (sd_out_params) + f.readline() + self.fst_vt['ServoDyn']['SumPrint'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['OutFile'] = int(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TabDelim'] = bool_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['ServoDyn']['TStart'] = float_read(f.readline().split()[0]) + + # ServoDyn Outlist + f.readline() + data = f.readline() + while data.split()[0] != 'END': + channels = data.split('"') + channel_list = channels[1].split(',') + self.set_outlist(self.fst_vt['outlist']['ServoDyn'], channel_list) + data = f.readline() + + f.close() + + def read_StC(self,filename): + ''' + return StC vt so it can be appended to fst_vt['XStC'] list + ''' + StC_vt = {} + + with open(os.path.join(self.FAST_directory, filename)) as f: + + f.readline() + f.readline() + f.readline() + StC_vt['Echo'] = bool_read(f.readline().split()[0]) # Echo - Echo input data to .ech (flag) + f.readline() # StC DEGREES OF FREEDOM + StC_vt['StC_DOF_MODE'] = int_read(f.readline().split()[0]) # 4 StC_DOF_MODE - DOF mode (switch) {0: No StC or TLCD DOF; 1: StC_X_DOF, StC_Y_DOF, and/or StC_Z_DOF (three independent StC DOFs); 2: StC_XY_DOF (Omni-Directional StC); 3: TLCD; 4: Prescribed force/moment time series} + StC_vt['StC_X_DOF'] = bool_read(f.readline().split()[0]) # false StC_X_DOF - DOF on or off for StC X (flag) [Used only when StC_DOF_MODE=1] + StC_vt['StC_Y_DOF'] = bool_read(f.readline().split()[0]) # false StC_Y_DOF - DOF on or off for StC Y (flag) [Used only when StC_DOF_MODE=1] + StC_vt['StC_Z_DOF'] = bool_read(f.readline().split()[0]) # false StC_Z_DOF - DOF on or off for StC Z (flag) [Used only when StC_DOF_MODE=1] + f.readline() # StC LOCATION + StC_vt['StC_P_X'] = float_read(f.readline().split()[0]) # -51.75 StC_P_X - At rest X position of StC (m) + StC_vt['StC_P_Y'] = float_read(f.readline().split()[0]) # 0 StC_P_Y - At rest Y position of StC (m) + StC_vt['StC_P_Z'] = float_read(f.readline().split()[0]) # -10 StC_P_Z - At rest Z position of StC (m) + f.readline() # StC INITIAL CONDITIONS + StC_vt['StC_X_DSP'] = float_read(f.readline().split()[0]) # 0 StC_X_DSP - StC X initial displacement (m) [relative to at rest position] + StC_vt['StC_Y_DSP'] = float_read(f.readline().split()[0]) # 0 StC_Y_DSP - StC Y initial displacement (m) [relative to at rest position] + StC_vt['StC_Z_DSP'] = float_read(f.readline().split()[0]) # 0 StC_Z_DSP - StC Z initial displacement (m) [relative to at rest position; used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_Z_PreLd'] = f.readline().split()[0] # "none" StC_Z_PreLd - StC Z prefloat_read(f.readline().split()[0]) #-load (N) {"gravity" to offset for gravity load; "none" or 0 to turn off} [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + f.readline() # StC CONFIGURATION + StC_vt['StC_X_PSP'] = float_read(f.readline().split()[0]) # 0 StC_X_PSP - Positive stop position (minimum X mass displacement) (m) + StC_vt['StC_X_NSP'] = float_read(f.readline().split()[0]) # 0 StC_X_NSP - Negative stop position (maximum X mass displacement) (m) + StC_vt['StC_Y_PSP'] = float_read(f.readline().split()[0]) # 0 StC_Y_PSP - Positive stop position (maximum Y mass displacement) (m) + StC_vt['StC_Y_NSP'] = float_read(f.readline().split()[0]) # 0 StC_Y_NSP - Negative stop position (minimum Y mass displacement) (m) + StC_vt['StC_Z_PSP'] = float_read(f.readline().split()[0]) # 0 StC_Z_PSP - Positive stop position (maximum Z mass displacement) (m) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_Z_NSP'] = float_read(f.readline().split()[0]) # 0 StC_Z_NSP - Negative stop position (minimum Z mass displacement) (m) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + f.readline() # StC MASS, STIFFNESS, & DAMPING + StC_vt['StC_X_M'] = float_read(f.readline().split()[0]) # 0 StC_X_M - StC X mass (kg) [must equal StC_Y_M for StC_DOF_MODE = 2] + StC_vt['StC_Y_M'] = float_read(f.readline().split()[0]) # 50 StC_Y_M - StC Y mass (kg) [must equal StC_X_M for StC_DOF_MODE = 2] + StC_vt['StC_Z_M'] = float_read(f.readline().split()[0]) # 0 StC_Z_M - StC Z mass (kg) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_XY_M'] = float_read(f.readline().split()[0]) # 0 StC_XY_M - StC XY mass (kg) [used only when StC_DOF_MODE=2] + StC_vt['StC_X_K'] = float_read(f.readline().split()[0]) # 2300 StC_X_K - StC X stiffness (N/m) + StC_vt['StC_Y_K'] = float_read(f.readline().split()[0]) # 2300 StC_Y_K - StC Y stiffness (N/m) + StC_vt['StC_Z_K'] = float_read(f.readline().split()[0]) # 0 StC_Z_K - StC Z stiffness (N/m) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_X_C'] = float_read(f.readline().split()[0]) # 35 StC_X_C - StC X damping (N/(m/s)) + StC_vt['StC_Y_C'] = float_read(f.readline().split()[0]) #float_read(f.readline().split()[0]) # 35 StC_Y_C - StC Y damping (N/(m/s)) + StC_vt['StC_Z_C'] = float_read(f.readline().split()[0]) # 0 StC_Z_C - StC Z damping (N/(m/s)) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_X_KS'] = float_read(f.readline().split()[0]) # 0 StC_X_KS - Stop spring X stiffness (N/m) + StC_vt['StC_Y_KS'] = float_read(f.readline().split()[0]) # 0 StC_Y_KS - Stop spring Y stiffness (N/m) + StC_vt['StC_Z_KS'] = float_read(f.readline().split()[0]) # 0 StC_Z_KS - Stop spring Z stiffness (N/m) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_X_CS'] = float_read(f.readline().split()[0]) # 0 StC_X_CS - Stop spring X damping (N/(m/s)) + StC_vt['StC_Y_CS'] = float_read(f.readline().split()[0]) # 0 StC_Y_CS - Stop spring Y damping (N/(m/s)) + StC_vt['StC_Z_CS'] = float_read(f.readline().split()[0]) # 0 StC_Z_CS - Stop spring Z damping (N/(m/s)) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + f.readline() # StC USER-DEFINED SPRING FORCES + StC_vt['Use_F_TBL'] = bool_read(f.readline().split()[0]) # False Use_F_TBL - Use spring force from user-defined table (flag) + StC_vt['NKInpSt'] = int_read(f.readline().split()[0]) # 17 NKInpSt - Number of spring force input stations + + StC_vt['SpringForceTable'] = {} + table = StC_vt['SpringForceTable'] + table['X'] = [None] * StC_vt['NKInpSt'] + table['F_X'] = [None] * StC_vt['NKInpSt'] + table['Y'] = [None] * StC_vt['NKInpSt'] + table['F_Y'] = [None] * StC_vt['NKInpSt'] + table['Z'] = [None] * StC_vt['NKInpSt'] + table['F_Z'] = [None] * StC_vt['NKInpSt'] + + f.readline() + # if StC_vt['Use_F_TBL']: + f.readline() + f.readline() + for i in range(StC_vt['NKInpSt']): + ln = f.readline().split() + table['X'][i] = float(ln[0]) + table['F_X'][i] = float(ln[1]) + table['Y'][i] = float(ln[2]) + table['F_Y'][i] = float(ln[3]) + table['Z'][i] = float(ln[4]) + table['F_Z'][i] = float(ln[5]) + # else: + # # Skip until next section + # data_line = f.readline().strip().split() + # while data_line[0][:3] != '---': + # data_line = f.readline().strip().split() + + # StructCtrl CONTROL, skip this readline() because it already happened + f.readline() + StC_vt['StC_CMODE'] = int_read(f.readline().split()[0]) # 5 StC_CMODE - Control mode (switch) {0:none; 1: Semi-Active Control Mode; 4: Active Control Mode through Simulink (not available); 5: Active Control Mode through Bladed interface} + StC_vt['StC_CChan'] = int_read(f.readline().split()[0]) # 0 StC_CChan - Control channel group (1:10) for stiffness and damping (StC_[XYZ]_K, StC_[XYZ]_C, and StC_[XYZ]_Brake) (specify additional channels for blade instances of StC active control -- one channel per blade) [used only when StC_DOF_MODE=1 or 2, and StC_CMODE=4 or 5] + StC_vt['StC_SA_MODE'] = int_read(f.readline().split()[0]) # 1 StC_SA_MODE - Semi-Active control mode {1: velocity-based ground hook control; 2: Inverse velocity-based ground hook control; 3: displacement-based ground hook control 4: Phase difference Algorithm with Friction Force 5: Phase difference Algorithm with Damping Force} (-) + StC_vt['StC_X_C_LOW'] = float_read(f.readline().split()[0]) # 0 StC_X_C_LOW - StC X low damping for ground hook control + StC_vt['StC_X_C_HIGH'] = float_read(f.readline().split()[0]) # 0 StC_X_C_HIGH - StC X high damping for ground hook control + StC_vt['StC_Y_C_HIGH'] = float_read(f.readline().split()[0]) # 0 StC_Y_C_HIGH - StC Y high damping for ground hook control + StC_vt['StC_Y_C_LOW'] = float_read(f.readline().split()[0]) # 0 StC_Y_C_LOW - StC Y low damping for ground hook control + StC_vt['StC_Z_C_HIGH'] = float_read(f.readline().split()[0]) # 0 StC_Z_C_HIGH - StC Z high damping for ground hook control [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_Z_C_LOW'] = float_read(f.readline().split()[0]) # 0 StC_Z_C_LOW - StC Z low damping for ground hook control [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + StC_vt['StC_X_C_BRAKE'] = float_read(f.readline().split()[0]) # 0 StC_X_C_BRAKE - StC X high damping for braking the StC (Don't use it now. should be zero) + StC_vt['StC_Y_C_BRAKE'] = float_read(f.readline().split()[0]) # 0 StC_Y_C_BRAKE - StC Y high damping for braking the StC (Don't use it now. should be zero) + StC_vt['StC_Z_C_BRAKE'] = float_read(f.readline().split()[0]) # 0 StC_Z_C_BRAKE - StC Z high damping for braking the StC (Don't use it now. should be zero) [used only when StC_DOF_MODE=1 and StC_Z_DOF=TRUE] + f.readline() # TLCD + StC_vt['L_X'] = float_read(f.readline().split()[0]) # 7.9325 L_X - X TLCD total length (m) + StC_vt['B_X'] = float_read(f.readline().split()[0]) # 6.5929 B_X - X TLCD horizontal length (m) + StC_vt['area_X'] = float_read(f.readline().split()[0]) # 2.0217 area_X - X TLCD cross-sectional area of vertical column (m^2) + StC_vt['area_ratio_X'] = float_read(f.readline().split()[0]) # 0.913 area_ratio_X - X TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-) + StC_vt['headLossCoeff_X'] = float_read(f.readline().split()[0]) # 2.5265 headLossCoeff_X - X TLCD head loss coeff (-) + StC_vt['rho_X'] = float_read(f.readline().split()[0]) # 1000 rho_X - X TLCD liquid density (kg/m^3) + StC_vt['L_Y'] = float_read(f.readline().split()[0]) # 3.5767 L_Y - Y TLCD total length (m) + StC_vt['B_Y'] = float_read(f.readline().split()[0]) # 2.1788 B_Y - Y TLCD horizontal length (m) + StC_vt['area_Y'] = float_read(f.readline().split()[0]) # 1.2252 area_Y - Y TLCD cross-sectional area of vertical column (m^2) + StC_vt['area_ratio_Y'] = float_read(f.readline().split()[0]) # 2.7232 area_ratio_Y - Y TLCD cross-sectional area ratio (vertical column area divided by horizontal column area) (-) + StC_vt['headLossCoeff_Y'] = float_read(f.readline().split()[0]) # 0.6433 headLossCoeff_Y - Y TLCD head loss coeff (-) + StC_vt['rho_Y'] = float_read(f.readline().split()[0]) # 1000 rho_Y - Y TLCD liquid density (kg/m^3) + f.readline() # PRESCRIBED TIME SERIES + StC_vt['PrescribedForcesCoord'] = int_read(f.readline().split()[0]) # 2 PrescribedForcesCoord- Prescribed forces are in global or local coordinates (switch) {1: global; 2: local} + # TODO: read in prescribed force time series, for now we just point to absolute path of input file + StC_vt['PrescribedForcesFile'] = os.path.join(self.FAST_directory, quoted_read(f.readline().split()[0])) # "Bld-TimeForceSeries.dat" PrescribedForcesFile - Time series force and moment (7 columns of time, FX, FY, FZ, MX, MY, MZ) + f.readline() + + return StC_vt + + def read_DISCON_in(self): + # Read the Bladed style Interface controller input file, intended for ROSCO https://github.com/NREL/ROSCO_toolbox + + discon_in_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['ServoDyn']['DLL_InFile'])) + + if os.path.exists(discon_in_file): + + # Read DISCON infiles + self.fst_vt['DISCON_in'] = read_DISCON(discon_in_file) + + # Some additional filename parsing + discon_dir = os.path.dirname(discon_in_file) + self.fst_vt['DISCON_in']['PerfFileName'] = os.path.abspath(os.path.join(discon_dir, self.fst_vt['DISCON_in']['PerfFileName'])) + + # Try to read rotor performance data if it is available + try: + pitch_vector, tsr_vector, Cp_table, Ct_table, Cq_table = load_from_txt(self.fst_vt['DISCON_in']['PerfFileName']) + + RotorPerformance = ROSCO_turbine.RotorPerformance + Cp = RotorPerformance(Cp_table, pitch_vector, tsr_vector) + Ct = RotorPerformance(Ct_table, pitch_vector, tsr_vector) + Cq = RotorPerformance(Cq_table, pitch_vector, tsr_vector) + + self.fst_vt['DISCON_in']['Cp'] = Cp + self.fst_vt['DISCON_in']['Ct'] = Ct + self.fst_vt['DISCON_in']['Cq'] = Cq + self.fst_vt['DISCON_in']['Cp_pitch_initial_rad'] = pitch_vector + self.fst_vt['DISCON_in']['Cp_TSR_initial'] = tsr_vector + self.fst_vt['DISCON_in']['Cp_table'] = Cp_table + self.fst_vt['DISCON_in']['Ct_table'] = Ct_table + self.fst_vt['DISCON_in']['Cq_table'] = Cq_table + except: + print('WARNING: Cp table not loaded!') + + # Add some DISCON entries that might be needed within WISDEM + self.fst_vt['DISCON_in']['v_rated'] = 1. + + else: + del self.fst_vt['DISCON_in'] + + def read_spd_trq(self, file): + ''' + read the speed-torque curve data to the fst_vt + ''' + spd_trq = {} + + f = open(os.path.normpath(os.path.join(self.FAST_directory, file))) + + spd_trq['header'] = f.readline() + + # handle arbritraty number of rows and two columns: RPM and Torque + data = f.readlines() + spd_trq['RPM'] = [float(line.split()[0]) for line in data] + spd_trq['Torque'] = [float(line.split()[1]) for line in data] + f.close() + + self.fst_vt['spd_trq'] = spd_trq + + + + + def read_HydroDyn(self, hd_file): + + f = open(hd_file) + + f.readline() + f.readline() + + self.fst_vt['HydroDyn']['Echo'] = bool_read(f.readline().split()[0]) + + # FLOATING PLATFORM + f.readline() + self.fst_vt['HydroDyn']['PotMod'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['ExctnMod'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['ExctnDisp'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['ExctnCutOff'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['PtfmYMod'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['PtfmRefY'] = float_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['PtfmYCutOff'] = float_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['NExctnHdg'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['RdtnMod'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['RdtnTMax'] = float_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['RdtnDT'] = float_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['NBody'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['NBodyMod'] = int_read(f.readline().split()[0]) + + # Get multiple potential files + pot_strings = read_array(f,self.fst_vt['HydroDyn']['NBody'],str) #re.split(',| ',f.readline().strip()) + pot_strings = [os.path.normpath(os.path.join(os.path.split(hd_file)[0],ps)) for ps in pot_strings] # make relative to hd_file + self.fst_vt['HydroDyn']['PotFile'] = pot_strings + self.fst_vt['HydroDyn']['WAMITULEN'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmRefxt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmRefyt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmRefzt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmRefztRot'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmVol0'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmCOBxt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + self.fst_vt['HydroDyn']['PtfmCOByt'] = read_array(f,self.fst_vt['HydroDyn']['NBody'], array_type=float) + + # 2ND-ORDER FLOATING PLATFORM FORCES + f.readline() + self.fst_vt['HydroDyn']['MnDrift'] = int_read(f.readline().split()[0]) # ? + self.fst_vt['HydroDyn']['NewmanApp'] = int_read(f.readline().split()[0]) # ? + self.fst_vt['HydroDyn']['DiffQTF'] = int_read(f.readline().split()[0]) # ? + self.fst_vt['HydroDyn']['SumQTF'] = int_read(f.readline().split()[0]) # ? + + # PLATFORM ADDITIONAL STIFFNESS AND DAMPING + f.readline() + # Get number of F0 terms [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors] + NBody = self.fst_vt['HydroDyn']['NBody'] + if self.fst_vt['HydroDyn']['NBodyMod'] == 1: + self.fst_vt['HydroDyn']['AddF0'] = [float(f.readline().strip().split()[0]) for i in range(6*NBody)] + elif self.fst_vt['HydroDyn']['NBodyMod'] > 1: + self.fst_vt['HydroDyn']['AddF0'] = [[float(idx) for idx in f.readline().strip().split()[:NBody]] for i in range(6)] + else: + raise Exception("Invalid value for fst_vt['HydroDyn']['NBodyMod']") + + self.fst_vt['HydroDyn']['AddCLin'] = np.array([[float(idx) for idx in f.readline().strip().split()[:6*NBody]] for i in range(6)]) + self.fst_vt['HydroDyn']['AddBLin'] = np.array([[float(idx) for idx in f.readline().strip().split()[:6*NBody]] for i in range(6)]) + self.fst_vt['HydroDyn']['AddBQuad'] = np.array([[float(idx) for idx in f.readline().strip().split()[:6*NBody]] for i in range(6)]) + + #STRIP THEORY OPTIONS + f.readline() + self.fst_vt['HydroDyn']['WaveDisp'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['AMMod'] = int_read(f.readline().split()[0]) + + #AXIAL COEFFICIENTS + f.readline() + self.fst_vt['HydroDyn']['NAxCoef'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['AxCoefID'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxCd'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxCa'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxCp'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxFDMod'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxVnCOff'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + self.fst_vt['HydroDyn']['AxFDLoFSc'] = [None]*self.fst_vt['HydroDyn']['NAxCoef'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NAxCoef']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['AxCoefID'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['AxCd'][i] = float_read(ln[1]) + self.fst_vt['HydroDyn']['AxCa'][i] = float_read(ln[2]) + self.fst_vt['HydroDyn']['AxCp'][i] = float_read(ln[3]) + self.fst_vt['HydroDyn']['AxFDMod'][i] = float_read(ln[4]) + self.fst_vt['HydroDyn']['AxVnCOff'][i] = float_read(ln[5]) + self.fst_vt['HydroDyn']['AxFDLoFSc'][i] = float_read(ln[6]) + + #MEMBER JOINTS + f.readline() + self.fst_vt['HydroDyn']['NJoints'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['JointID'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + self.fst_vt['HydroDyn']['Jointxi'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + self.fst_vt['HydroDyn']['Jointyi'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + self.fst_vt['HydroDyn']['Jointzi'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + self.fst_vt['HydroDyn']['JointAxID'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + self.fst_vt['HydroDyn']['JointOvrlp'] = [None]*self.fst_vt['HydroDyn']['NJoints'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NJoints']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['JointID'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['Jointxi'][i] = float(ln[1]) + self.fst_vt['HydroDyn']['Jointyi'][i] = float(ln[2]) + self.fst_vt['HydroDyn']['Jointzi'][i] = float(ln[3]) + self.fst_vt['HydroDyn']['JointAxID'][i] = int(ln[4]) + self.fst_vt['HydroDyn']['JointOvrlp'][i] = int(ln[5]) + + #MEMBER CROSS-SECTION PROPERTIES + f.readline() + self.fst_vt['HydroDyn']['NPropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['PropSetID'] = [None]*self.fst_vt['HydroDyn']['NPropSets'] + self.fst_vt['HydroDyn']['PropD'] = [None]*self.fst_vt['HydroDyn']['NPropSets'] + self.fst_vt['HydroDyn']['PropThck'] = [None]*self.fst_vt['HydroDyn']['NPropSets'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NPropSets']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['PropSetID'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['PropD'][i] = float(ln[1]) + self.fst_vt['HydroDyn']['PropThck'][i] = float(ln[2]) + + #SIMPLE HYDRODYNAMIC COEFFICIENTS + f.readline() + f.readline() + f.readline() + ln = f.readline().split() + self.fst_vt['HydroDyn']['SimplCd'] = float_read(ln[0]) + self.fst_vt['HydroDyn']['SimplCdMG'] = float_read(ln[1]) + self.fst_vt['HydroDyn']['SimplCa'] = float_read(ln[2]) + self.fst_vt['HydroDyn']['SimplCaMG'] = float_read(ln[3]) + self.fst_vt['HydroDyn']['SimplCp'] = float_read(ln[4]) + self.fst_vt['HydroDyn']['SimplCpMG'] = float_read(ln[5]) + self.fst_vt['HydroDyn']['SimplAxCd'] = float_read(ln[6]) + self.fst_vt['HydroDyn']['SimplAxCdMG'] = float_read(ln[7]) + self.fst_vt['HydroDyn']['SimplAxCa'] = float_read(ln[8]) + self.fst_vt['HydroDyn']['SimplAxCaMG'] = float_read(ln[9]) + self.fst_vt['HydroDyn']['SimplAxCp'] = float_read(ln[10]) + self.fst_vt['HydroDyn']['SimplAxCpMG'] = float_read(ln[11]) + self.fst_vt['HydroDyn']['SimplCb'] = float_read(ln[12]) + self.fst_vt['HydroDyn']['SimplCbMG'] = float_read(ln[13]) + + #DEPTH-BASED HYDRODYNAMIC COEFFICIENTS + f.readline() + self.fst_vt['HydroDyn']['NCoefDpth'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['Dpth'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCd'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCdMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCa'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCaMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCp'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCpMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCd'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCdMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCa'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCaMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCp'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthAxCpMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCb'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + self.fst_vt['HydroDyn']['DpthCbMG'] = [None]*self.fst_vt['HydroDyn']['NCoefDpth'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NCoefDpth']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['Dpth'][i] = float_read(ln[0]) + self.fst_vt['HydroDyn']['DpthCd'][i] = float_read(ln[1]) + self.fst_vt['HydroDyn']['DpthCdMG'][i] = float_read(ln[2]) + self.fst_vt['HydroDyn']['DpthCa'][i] = float_read(ln[3]) + self.fst_vt['HydroDyn']['DpthCaMG'][i] = float_read(ln[4]) + self.fst_vt['HydroDyn']['DpthCp'][i] = float_read(ln[5]) + self.fst_vt['HydroDyn']['DpthCpMG'][i] = float_read(ln[6]) + self.fst_vt['HydroDyn']['DpthAxCd'][i] = float_read(ln[7]) + self.fst_vt['HydroDyn']['DpthAxCdMG'][i] = float_read(ln[8]) + self.fst_vt['HydroDyn']['DpthAxCa'][i] = float_read(ln[9]) + self.fst_vt['HydroDyn']['DpthAxCaMG'][i] = float_read(ln[10]) + self.fst_vt['HydroDyn']['DpthAxCp'][i] = float_read(ln[11]) + self.fst_vt['HydroDyn']['DpthAxCpMG'][i] = float_read(ln[12]) + self.fst_vt['HydroDyn']['DpthCb'][i] = float_read(ln[13]) + self.fst_vt['HydroDyn']['DpthCbMG'][i] = float_read(ln[14]) + + #MEMBER-BASED HYDRODYNAMIC COEFFICIENTS + f.readline() + self.fst_vt['HydroDyn']['NCoefMembers'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['MemberID_HydC'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCd1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCd2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCdMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCdMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCa1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCa2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCaMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCaMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCp1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCp2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCpMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCpMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCd1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCd2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCdMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCdMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCa1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCa2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCaMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCaMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCp1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCp2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCpMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberAxCpMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCb1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCb2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCbMG1'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + self.fst_vt['HydroDyn']['MemberCbMG2'] = [None]*self.fst_vt['HydroDyn']['NCoefMembers'] + + f.readline() + f.readline() + for i in range(self.fst_vt['HydroDyn']['NCoefMembers']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['MemberID_HydC'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['MemberCd1'][i] = float_read(ln[1]) + self.fst_vt['HydroDyn']['MemberCd2'][i] = float_read(ln[2]) + self.fst_vt['HydroDyn']['MemberCdMG1'][i] = float_read(ln[3]) + self.fst_vt['HydroDyn']['MemberCdMG2'][i] = float_read(ln[4]) + self.fst_vt['HydroDyn']['MemberCa1'][i] = float_read(ln[5]) + self.fst_vt['HydroDyn']['MemberCa2'][i] = float_read(ln[6]) + self.fst_vt['HydroDyn']['MemberCaMG1'][i] = float_read(ln[7]) + self.fst_vt['HydroDyn']['MemberCaMG2'][i] = float_read(ln[8]) + self.fst_vt['HydroDyn']['MemberCp1'][i] = float_read(ln[9]) + self.fst_vt['HydroDyn']['MemberCp2'][i] = float_read(ln[10]) + self.fst_vt['HydroDyn']['MemberCpMG1'][i] = float_read(ln[11]) + self.fst_vt['HydroDyn']['MemberCpMG2'][i] = float_read(ln[12]) + self.fst_vt['HydroDyn']['MemberAxCd1'][i] = float_read(ln[13]) + self.fst_vt['HydroDyn']['MemberAxCd2'][i] = float_read(ln[14]) + self.fst_vt['HydroDyn']['MemberAxCdMG1'][i] = float_read(ln[15]) + self.fst_vt['HydroDyn']['MemberAxCdMG2'][i] = float_read(ln[16]) + self.fst_vt['HydroDyn']['MemberAxCa1'][i] = float_read(ln[17]) + self.fst_vt['HydroDyn']['MemberAxCa2'][i] = float_read(ln[18]) + self.fst_vt['HydroDyn']['MemberAxCaMG1'][i] = float_read(ln[19]) + self.fst_vt['HydroDyn']['MemberAxCaMG2'][i] = float_read(ln[20]) + self.fst_vt['HydroDyn']['MemberAxCp1'][i] = float_read(ln[21]) + self.fst_vt['HydroDyn']['MemberAxCp2'][i] = float_read(ln[22]) + self.fst_vt['HydroDyn']['MemberAxCpMG1'][i] = float_read(ln[23]) + self.fst_vt['HydroDyn']['MemberAxCpMG2'][i] = float_read(ln[24]) + self.fst_vt['HydroDyn']['MemberCb1'][i] = float_read(ln[25]) + self.fst_vt['HydroDyn']['MemberCb2'][i] = float_read(ln[26]) + self.fst_vt['HydroDyn']['MemberCbMG1'][i] = float_read(ln[27]) + self.fst_vt['HydroDyn']['MemberCbMG2'][i] = float_read(ln[28]) + + #MEMBERS + f.readline() + self.fst_vt['HydroDyn']['NMembers'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['MemberID'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MJointID1'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MJointID2'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MPropSetID1'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MPropSetID2'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MDivSize'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MCoefMod'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['MHstLMod'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + self.fst_vt['HydroDyn']['PropPot'] = [None]*self.fst_vt['HydroDyn']['NMembers'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NMembers']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['MemberID'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['MJointID1'][i] = int(ln[1]) + self.fst_vt['HydroDyn']['MJointID2'][i] = int(ln[2]) + self.fst_vt['HydroDyn']['MPropSetID1'][i] = int(ln[3]) + self.fst_vt['HydroDyn']['MPropSetID2'][i] = int(ln[4]) + self.fst_vt['HydroDyn']['MDivSize'][i] = float(ln[5]) + self.fst_vt['HydroDyn']['MCoefMod'][i] = int(ln[6]) + self.fst_vt['HydroDyn']['MHstLMod'][i] = int(ln[7]) + self.fst_vt['HydroDyn']['PropPot'][i] = bool_read(ln[8]) + + #FILLED MEMBERS + f.readline() + self.fst_vt['HydroDyn']['NFillGroups'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['FillNumM'] = [None]*self.fst_vt['HydroDyn']['NFillGroups'] + self.fst_vt['HydroDyn']['FillMList'] = [None]*self.fst_vt['HydroDyn']['NFillGroups'] + self.fst_vt['HydroDyn']['FillFSLoc'] = [None]*self.fst_vt['HydroDyn']['NFillGroups'] + self.fst_vt['HydroDyn']['FillDens'] = [None]*self.fst_vt['HydroDyn']['NFillGroups'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NFillGroups']): + ln = f.readline().split() + n_fill = int(ln[0]) + self.fst_vt['HydroDyn']['FillNumM'][i] = n_fill + self.fst_vt['HydroDyn']['FillMList'][i] = [int(j) for j in ln[1:1+n_fill]] + self.fst_vt['HydroDyn']['FillFSLoc'][i] = float(ln[n_fill+1]) + if ln[n_fill+2] == 'DEFAULT': + self.fst_vt['HydroDyn']['FillDens'][i] = 'DEFAULT' + else: + self.fst_vt['HydroDyn']['FillDens'][i] = float(ln[n_fill+2]) + + #MARINE GROWTH + f.readline() + self.fst_vt['HydroDyn']['NMGDepths'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['MGDpth'] = [None]*self.fst_vt['HydroDyn']['NMGDepths'] + self.fst_vt['HydroDyn']['MGThck'] = [None]*self.fst_vt['HydroDyn']['NMGDepths'] + self.fst_vt['HydroDyn']['MGDens'] = [None]*self.fst_vt['HydroDyn']['NMGDepths'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NMGDepths']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['MGDpth'][i] = float(ln[0]) + self.fst_vt['HydroDyn']['MGThck'][i] = float(ln[1]) + self.fst_vt['HydroDyn']['MGDens'][i] = float(ln[2]) + + #MEMBER OUTPUT LIST + f.readline() + self.fst_vt['HydroDyn']['NMOutputs'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['MemberID_out'] = [None]*self.fst_vt['HydroDyn']['NMOutputs'] + self.fst_vt['HydroDyn']['NOutLoc'] = [None]*self.fst_vt['HydroDyn']['NMOutputs'] + self.fst_vt['HydroDyn']['NodeLocs'] = [None]*self.fst_vt['HydroDyn']['NMOutputs'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['HydroDyn']['NMOutputs']): + ln = f.readline().split() + self.fst_vt['HydroDyn']['MemberID_out'][i] = int(ln[0]) + self.fst_vt['HydroDyn']['NOutLoc'][i] = int(ln[1]) + self.fst_vt['HydroDyn']['NodeLocs'][i] = float(ln[2]) + + #JOINT OUTPUT LIST + f.readline() + self.fst_vt['HydroDyn']['NJOutputs'] = int_read(f.readline().split()[0]) + if int(self.fst_vt['HydroDyn']['NJOutputs']) > 0: + self.fst_vt['HydroDyn']['JOutLst'] = [int(idx.strip()) for idx in f.readline().split('JOutLst')[0].split(',')] + else: + f.readline() + self.fst_vt['HydroDyn']['JOutLst'] = [0] + + #OUTPUT + f.readline() + self.fst_vt['HydroDyn']['HDSum'] = bool_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['OutAll'] = bool_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['OutSwtch'] = int_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['HydroDyn']['OutSFmt'] = quoted_read(f.readline().split()[0]) + + # HydroDyn Outlist + f.readline() + data = f.readline() + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = row_string[0].split('\n')[0] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['AeroDyn'], channel_list) + data = f.readline() + + f.close() + + def read_SeaState(self, ss_file): + + f = open(ss_file) + + f.readline() + f.readline() + + self.fst_vt['SeaState']['Echo'] = bool_read(f.readline().split()[0]) + # ENVIRONMENTAL CONDITIONS + f.readline() + self.fst_vt['SeaState']['WtrDens'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WtrDpth'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['MSL2SWL'] = float_read(f.readline().split()[0]) + + # SPATIAL DISCRETIZATION + f.readline() + self.fst_vt['SeaState']['X_HalfWidth'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['Y_HalfWidth'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['Z_Depth'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['NX'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['NY'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['NZ'] = int_read(f.readline().split()[0]) + + # WAVES + f.readline() + self.fst_vt['SeaState']['WaveMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveStMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveTMax'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveDT'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveHs'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveTp'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WavePkShp'] = float_read(f.readline().split()[0]) # default + self.fst_vt['SeaState']['WvLowCOff'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvHiCOff'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveDir'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveDirMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveDirSpread'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveNDir'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveDirRange'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveSeed1'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveSeed2'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveNDAmp'] = bool_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvKinFile'] = quoted_read(f.readline().split()[0]) + + # 2ND-ORDER WAVES + f.readline() + self.fst_vt['SeaState']['WvDiffQTF'] = bool_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvSumQTF'] = bool_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvLowCOffD'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvHiCOffD'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvLowCOffS'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WvHiCOffS'] = float_read(f.readline().split()[0]) + + # CONSTRAINED WAVE + f.readline() + self.fst_vt['SeaState']['ConstWaveMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CrestHmax'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CrestTime'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CrestXi'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CrestYi'] = float_read(f.readline().split()[0]) + + # CURRENT + f.readline() + self.fst_vt['SeaState']['CurrMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrSSV0'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrSSDir'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrNSRef'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrNSV0'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrNSDir'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrDIV'] = float_read(f.readline().split()[0]) + self.fst_vt['SeaState']['CurrDIDir'] = float_read(f.readline().split()[0]) + + # MacCamy-Fuchs Diffraction Model + f.readline() + self.fst_vt['SeaState']['MCFD'] = float_read(f.readline().split()[0]) + + # OUTPUT + f.readline() + self.fst_vt['SeaState']['SeaStSum'] = bool_read(f.readline().split()[0]) + self.fst_vt['SeaState']['OutSwtch'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['SeaState']['OutSFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['SeaState']['NWaveElev'] = int_read(f.readline().split()[0]) + self.fst_vt['SeaState']['WaveElevxi'] = [float_read(idx.strip()) for idx in f.readline().split('WaveElevxi')[0].replace(',',' ').split()] + self.fst_vt['SeaState']['WaveElevyi'] = [float_read(idx.strip()) for idx in f.readline().split('WaveElevyi')[0].replace(',',' ').split()] + self.fst_vt['SeaState']['NWaveKin'] = int_read(f.readline().split()[0]) + NWaveKin = self.fst_vt['SeaState']['NWaveKin'] + if NWaveKin: + self.fst_vt['SeaState']['WaveKinxi'] = [float_read(idx.strip()) for idx in f.readline().split('WaveKinxi')[0].replace(',',' ').split()] + self.fst_vt['SeaState']['WaveKinyi'] = [float_read(idx.strip()) for idx in f.readline().split('WaveKinyi')[0].replace(',',' ').split()] + self.fst_vt['SeaState']['WaveKinzi'] = [float_read(idx.strip()) for idx in f.readline().split('WaveKinzi')[0].replace(',',' ').split()] + else: + [f.readline() for i in range(3)] + # Unused, filled with dummy location + self.fst_vt['SeaState']['WaveKinxi'] = [0] + self.fst_vt['SeaState']['WaveKinyi'] = [0] + self.fst_vt['SeaState']['WaveKinzi'] = [0] + + + # SeaState Outlist + f.readline() + self.read_outlist_freeForm(f,'SeaState') + + f.close() + + + def read_SubDyn(self, sd_file): + + f = open(sd_file) + f.readline() + f.readline() + f.readline() + # SIMULATION CONTROL + self.fst_vt['SubDyn']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['SDdeltaT'] = float_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['IntMethod'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['SttcSolve'] = bool_read(f.readline().split()[0]) + # self.fst_vt['SubDyn']['GuyanLoadCorrection'] = bool_read(f.readline().split()[0]) + f.readline() + # FEA and CRAIG-BAMPTON PARAMETERS + self.fst_vt['SubDyn']['FEMMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['NDiv'] = int_read(f.readline().split()[0]) + # self.fst_vt['SubDyn']['CBMod'] = bool_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['Nmodes'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['JDampings'] = float_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['GuyanDampMod'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['RayleighDamp'] = read_array(f,2,array_type=float) + self.fst_vt['SubDyn']['GuyanDampSize'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['GuyanDamp'] = np.array([[float(idx) for idx in f.readline().strip().split()[:6]] for i in range(self.fst_vt['SubDyn']['GuyanDampSize'])]) + f.readline() + # STRUCTURE JOINTS + self.fst_vt['SubDyn']['NJoints'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['JointID'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointXss'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointYss'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointZss'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointType'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointDirX'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointDirY'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointDirZ'] = [None]*self.fst_vt['SubDyn']['NJoints'] + self.fst_vt['SubDyn']['JointStiff'] = [None]*self.fst_vt['SubDyn']['NJoints'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NJoints']): + ln = f.readline().split() + self.fst_vt['SubDyn']['JointID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['JointXss'][i] = float(ln[1]) + self.fst_vt['SubDyn']['JointYss'][i] = float(ln[2]) + self.fst_vt['SubDyn']['JointZss'][i] = float(ln[3]) + self.fst_vt['SubDyn']['JointType'][i] = int(ln[4]) + self.fst_vt['SubDyn']['JointDirX'][i] = float(ln[5]) + self.fst_vt['SubDyn']['JointDirY'][i] = float(ln[6]) + self.fst_vt['SubDyn']['JointDirZ'][i] = float(ln[7]) + self.fst_vt['SubDyn']['JointStiff'][i] = float(ln[8]) + f.readline() + # BASE REACTION JOINTS + self.fst_vt['SubDyn']['NReact'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['RJointID'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctTDXss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctTDYss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctTDZss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctRDXss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctRDYss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['RctRDZss'] = [None]*self.fst_vt['SubDyn']['NReact'] + self.fst_vt['SubDyn']['Rct_SoilFile'] = [None]*self.fst_vt['SubDyn']['NReact'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NReact']): + ln = f.readline().split() + self.fst_vt['SubDyn']['RJointID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['RctTDXss'][i] = int(ln[1]) + self.fst_vt['SubDyn']['RctTDYss'][i] = int(ln[2]) + self.fst_vt['SubDyn']['RctTDZss'][i] = int(ln[3]) + self.fst_vt['SubDyn']['RctRDXss'][i] = int(ln[4]) + self.fst_vt['SubDyn']['RctRDYss'][i] = int(ln[5]) + self.fst_vt['SubDyn']['RctRDZss'][i] = int(ln[6]) + if len(ln) == 8: + self.fst_vt['SubDyn']['Rct_SoilFile'][i] = ln[7] + else: + self.fst_vt['SubDyn']['Rct_SoilFile'][i] = 'None' + f.readline() + # INTERFACE JOINTS + self.fst_vt['SubDyn']['NInterf'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['IJointID'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfTDXss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfTDYss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfTDZss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfRDXss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfRDYss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + self.fst_vt['SubDyn']['ItfRDZss'] = [None]*self.fst_vt['SubDyn']['NInterf'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NInterf']): + ln = f.readline().split() + self.fst_vt['SubDyn']['IJointID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['ItfTDXss'][i] = int(ln[1]) + self.fst_vt['SubDyn']['ItfTDYss'][i] = int(ln[2]) + self.fst_vt['SubDyn']['ItfTDZss'][i] = int(ln[3]) + self.fst_vt['SubDyn']['ItfRDXss'][i] = int(ln[4]) + self.fst_vt['SubDyn']['ItfRDYss'][i] = int(ln[5]) + self.fst_vt['SubDyn']['ItfRDZss'][i] = int(ln[6]) + f.readline() + # MEMBERS + self.fst_vt['SubDyn']['NMembers'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['MemberID'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['MJointID1'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['MJointID2'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['MPropSetID1'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['MPropSetID2'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['MType'] = [None]*self.fst_vt['SubDyn']['NMembers'] + self.fst_vt['SubDyn']['M_COSMID'] = [None]*self.fst_vt['SubDyn']['NMembers'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NMembers']): + ln = f.readline().split() + self.fst_vt['SubDyn']['MemberID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['MJointID1'][i] = int(ln[1]) + self.fst_vt['SubDyn']['MJointID2'][i] = int(ln[2]) + self.fst_vt['SubDyn']['MPropSetID1'][i] = int(ln[3]) + self.fst_vt['SubDyn']['MPropSetID2'][i] = int(ln[4]) + self.fst_vt['SubDyn']['MType'][i] = int(ln[5]) + if len(ln) > 6: + self.fst_vt['SubDyn']['M_COSMID'][i] = int(ln[6]) + f.readline() + # MEMBER X-SECTION PROPERTY data 1/2 + self.fst_vt['SubDyn']['NPropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['PropSetID1'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + self.fst_vt['SubDyn']['YoungE1'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + self.fst_vt['SubDyn']['ShearG1'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + self.fst_vt['SubDyn']['MatDens1'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + self.fst_vt['SubDyn']['XsecD'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + self.fst_vt['SubDyn']['XsecT'] = [None]*self.fst_vt['SubDyn']['NPropSets'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NPropSets']): + ln = f.readline().split() + self.fst_vt['SubDyn']['PropSetID1'][i] = int(ln[0]) + self.fst_vt['SubDyn']['YoungE1'][i] = float(ln[1]) + self.fst_vt['SubDyn']['ShearG1'][i] = float(ln[2]) + self.fst_vt['SubDyn']['MatDens1'][i] = float(ln[3]) + self.fst_vt['SubDyn']['XsecD'][i] = float(ln[4]) + self.fst_vt['SubDyn']['XsecT'][i] = float(ln[5]) + f.readline() + # MEMBER X-SECTION PROPERTY data 2/2 + self.fst_vt['SubDyn']['NXPropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['PropSetID2'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['YoungE2'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['ShearG2'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['MatDens2'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecA'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecAsx'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecAsy'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecJxx'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecJyy'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + self.fst_vt['SubDyn']['XsecJ0'] = [None]*self.fst_vt['SubDyn']['NXPropSets'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NXPropSets']): + ln = f.readline().split() + self.fst_vt['SubDyn']['PropSetID2'][i] = int(ln[0]) + self.fst_vt['SubDyn']['YoungE2'][i] = float(ln[1]) + self.fst_vt['SubDyn']['ShearG2'][i] = float(ln[2]) + self.fst_vt['SubDyn']['MatDens2'][i] = float(ln[3]) + self.fst_vt['SubDyn']['XsecA'][i] = float(ln[4]) + self.fst_vt['SubDyn']['XsecAsx'][i] = float(ln[5]) + self.fst_vt['SubDyn']['XsecAsy'][i] = float(ln[6]) + self.fst_vt['SubDyn']['XsecJxx'][i] = float(ln[7]) + self.fst_vt['SubDyn']['XsecJyy'][i] = float(ln[8]) + self.fst_vt['SubDyn']['XsecJ0'][i] = float(ln[9]) + # CABLE PROPERTIES + f.readline() + self.fst_vt['SubDyn']['NCablePropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['CablePropSetID'] = [None]*self.fst_vt['SubDyn']['NCablePropSets'] + self.fst_vt['SubDyn']['CableEA'] = [None]*self.fst_vt['SubDyn']['NCablePropSets'] + self.fst_vt['SubDyn']['CableMatDens'] = [None]*self.fst_vt['SubDyn']['NCablePropSets'] + self.fst_vt['SubDyn']['CableT0'] = [None]*self.fst_vt['SubDyn']['NCablePropSets'] + f.readline() + f.readline() + for i in range(self.fst_vt['SubDyn']['NCablePropSets']): + ln = f.readline().split() + self.fst_vt['SubDyn']['CablePropSetID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['CableEA'][i] = float(ln[1]) + self.fst_vt['SubDyn']['CableMatDens'][i] = float(ln[2]) + self.fst_vt['SubDyn']['CableT0'][i] = float(ln[3]) + # RIGID LINK PROPERTIES + f.readline() + self.fst_vt['SubDyn']['NRigidPropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['RigidPropSetID'] = [None]*self.fst_vt['SubDyn']['NRigidPropSets'] + self.fst_vt['SubDyn']['RigidMatDens'] = [None]*self.fst_vt['SubDyn']['NRigidPropSets'] + f.readline() + f.readline() + for i in range(self.fst_vt['SubDyn']['NRigidPropSets']): + ln = f.readline().split() + self.fst_vt['SubDyn']['RigidPropSetID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['RigidMatDens'][i] = float(ln[1]) + # SPRING ELEMENT PROPERTIES + f.readline() + self.fst_vt['SubDyn']['NSpringPropSets'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['SpringPropSetID'] = [None]*self.fst_vt['SubDyn']['NSpringPropSets'] + spring_list = ['k11','k12','k13','k14','k15','k16', + 'k22','k23','k24','k25','k26', + 'k33','k34','k35','k36', + 'k44','k45','k46', + 'k55','k56', + 'k66'] + for sl in spring_list: # init list + self.fst_vt['SubDyn'][sl] = [None]*self.fst_vt['SubDyn']['NSpringPropSets'] + f.readline() + f.readline() + for i in range(self.fst_vt['SubDyn']['NSpringPropSets']): + ln = f.readline().split() + self.fst_vt['SubDyn']['SpringPropSetID'][i] = int(ln[0]) + for j, sl in enumerate(spring_list): + self.fst_vt['SubDyn'][sl][i] = ln[j+1] + + # MEMBER COSINE MATRICES + f.readline() + self.fst_vt['SubDyn']['NCOSMs'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['COSMID'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM11'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM12'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM13'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM21'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM22'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM23'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM31'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM32'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + self.fst_vt['SubDyn']['COSM33'] = [None]*self.fst_vt['SubDyn']['NCOSMs'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NCOSMs']): + ln = f.readline().split() + self.fst_vt['SubDyn']['COSMID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['COSM11'][i] = float(ln[1]) + self.fst_vt['SubDyn']['COSM12'][i] = float(ln[2]) + self.fst_vt['SubDyn']['COSM13'][i] = float(ln[3]) + self.fst_vt['SubDyn']['COSM21'][i] = float(ln[4]) + self.fst_vt['SubDyn']['COSM22'][i] = float(ln[5]) + self.fst_vt['SubDyn']['COSM23'][i] = float(ln[6]) + self.fst_vt['SubDyn']['COSM31'][i] = float(ln[7]) + self.fst_vt['SubDyn']['COSM32'][i] = float(ln[8]) + self.fst_vt['SubDyn']['COSM33'][i] = float(ln[9]) + f.readline() + # JOINT ADDITIONAL CONCENTRATED MASSES + self.fst_vt['SubDyn']['NCmass'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['CMJointID'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMass'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMXX'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMYY'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMZZ'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMXY'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMXZ'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['JMYZ'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['MCGX'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['MCGY'] = [None]*self.fst_vt['SubDyn']['NCmass'] + self.fst_vt['SubDyn']['MCGZ'] = [None]*self.fst_vt['SubDyn']['NCmass'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NCmass']): + ln = f.readline().split() + self.fst_vt['SubDyn']['CMJointID'][i] = int(ln[0]) + self.fst_vt['SubDyn']['JMass'][i] = float(ln[1]) + self.fst_vt['SubDyn']['JMXX'][i] = float(ln[2]) + self.fst_vt['SubDyn']['JMYY'][i] = float(ln[3]) + self.fst_vt['SubDyn']['JMZZ'][i] = float(ln[4]) + self.fst_vt['SubDyn']['JMXY'][i] = float(ln[5]) + self.fst_vt['SubDyn']['JMXZ'][i] = float(ln[6]) + self.fst_vt['SubDyn']['JMYZ'][i] = float(ln[7]) + self.fst_vt['SubDyn']['MCGX'][i] = float(ln[8]) + self.fst_vt['SubDyn']['MCGY'][i] = float(ln[9]) + self.fst_vt['SubDyn']['MCGZ'][i] = float(ln[10]) + f.readline() + # OUTPUT + self.fst_vt['SubDyn']['SumPrint'] = bool_read(f.readline().split()[0]) + file_pos = f.tell() + line = f.readline() + if 'OutCBModes' in line: + self.fst_vt['SubDyn']['OutCBModes'] = int_read(line.split()[0]) + else: + f.seek(file_pos) + file_pos = f.tell() + line = f.readline() + if 'OutFEMModes' in line: + self.fst_vt['SubDyn']['OutFEMModes'] = int_read(line.split()[0]) + else: + f.seek(file_pos) + self.fst_vt['SubDyn']['OutCOSM'] = bool_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['OutAll'] = bool_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['OutSwtch'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['TabDelim'] = bool_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['OutDec'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['OutSFmt'] = quoted_read(f.readline().split()[0]) + f.readline() + # MEMBER OUTPUT LIST + self.fst_vt['SubDyn']['NMOutputs'] = int_read(f.readline().split()[0]) + self.fst_vt['SubDyn']['MemberID_out'] = [None]*self.fst_vt['SubDyn']['NMOutputs'] + self.fst_vt['SubDyn']['NOutCnt'] = [None]*self.fst_vt['SubDyn']['NMOutputs'] + self.fst_vt['SubDyn']['NodeCnt'] = [[None]]*self.fst_vt['SubDyn']['NMOutputs'] + ln = f.readline().split() + ln = f.readline().split() + for i in range(self.fst_vt['SubDyn']['NMOutputs']): + ln = f.readline().split('!')[0].split() # allows for comments + self.fst_vt['SubDyn']['MemberID_out'][i] = int(ln[0]) + self.fst_vt['SubDyn']['NOutCnt'][i] = int(ln[1]) + self.fst_vt['SubDyn']['NodeCnt'][i] = [int(node) for node in ln[2:]] + f.readline() + # SSOutList + self.read_outlist_freeForm(f,'SubDyn') + + f.close() + + f.close() + + + def read_ExtPtfm(self, ep_file): + # ExtPtfm file based on documentation here: https://openfast.readthedocs.io/en/main/source/user/extptfm/input_files.html + + f = open(ep_file) + f.readline() + f.readline() + f.readline() + + # Simulation Control + self.fst_vt['ExtPtfm']['Echo'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['DT'] = float_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['IntMethod'] = int_read(f.readline().split()[0]) + f.readline() + + # Reduction inputs + self.fst_vt['ExtPtfm']['FileFormat'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['Red_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) + self.fst_vt['ExtPtfm']['RedCst_FileName'] = os.path.join(os.path.dirname(ep_file), quoted_read(f.readline().split()[0])) + self.fst_vt['ExtPtfm']['NActiveDOFList'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['ActiveDOFList'] = read_array(f,None,split_val='ActiveDOFList',array_type=int) + self.fst_vt['ExtPtfm']['NInitPosList'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['InitPosList'] = read_array(f,None,split_val='InitPosList',array_type=float) + self.fst_vt['ExtPtfm']['NInitVelList'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['InitVelList'] = read_array(f,None,split_val='InitVelList',array_type=float) + f.readline() + + # Output + self.fst_vt['ExtPtfm']['SumPrint'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['OutFile'] = int_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['TabDelim'] = bool_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['OutFmt'] = quoted_read(f.readline().split()[0]) + self.fst_vt['ExtPtfm']['TStart'] = float_read(f.readline().split()[0]) + + # Loop through output channel lines + f.readline() + data = f.readline() + + # Handle the case if there are blank lines before the END statement, check if blank line + while data.split().__len__() == 0: + data = f.readline() + + while data.split()[0] != 'END': + if data.find('"')>=0: + channels = data.split('"') + channel_list = channels[1].split(',') + else: + row_string = data.split(',') + if len(row_string)==1: + channel_list = row_string[0].split('\n')[0] + else: + channel_list = row_string + self.set_outlist(self.fst_vt['outlist']['ExtPtfm'], channel_list) # TODO: Need to figure this out as we dont have a full outlist for now, similar to MoorDyn + data = f.readline() + + if self.fst_vt['ExtPtfm']['FileFormat'] == 0: + self.fst_vt['ExtPtfm']['Guyan'] = {} + # self.read_Guyan(f) # TODO: need to impliment this. An example file not found to test + elif self.fst_vt['ExtPtfm']['FileFormat'] == 1: + self.fst_vt['ExtPtfm']['FlexASCII'] = {} + self.read_Superelement(self.fst_vt['ExtPtfm']['Red_FileName']) + + f.close() + + + def read_Superelement(self, superelement_file): + + + def detectAndReadExtPtfmSE(lines): + # Function based on https://github.com/OpenFAST/openfast_toolbox/blob/353643ed917d113ec8dfd765813fef7d09752757/openfast_toolbox/io/fast_input_file.py#L1932 + # Developed by Emmanuel Branlard (https://github.com/ebranlard) + + def readmat(n,m,lines,iStart): + M=np.zeros((n,m)) + for j in np.arange(n): + i=iStart+j + M[j,:]=np.array(lines[i].split()).astype(float) + return M + + if len(lines)<10: + return False + if not (lines[0][0]=='!' and lines[1][0]=='!'): + return False + if lines[1].lower().find('flex')<0: + return + if lines[2].lower().find('!dimension')<0: + return + + # --- At this stage we assume it's in the proper format + nDOFCommon = -1 + i=2 + try: + while i0: + if l[0]=='!': + if l.find('!dimension')==0: + self.fst_vt['ExtPtfm']['FlexASCII']['nDOF'] = int(l.split(':')[1]) + nDOFCommon = self.fst_vt['ExtPtfm']['FlexASCII']['nDOF'] + elif l.find('!time increment')==0: + self.fst_vt['ExtPtfm']['FlexASCII']['dt'] = float(l.split(':')[1]) + elif l.find('!total simulation time')==0: + self.fst_vt['ExtPtfm']['FlexASCII']['T'] = float(l.split(':')[1]) + elif len(l.strip())==0: + pass + else: + raise NameError('Unexcepted content found on line {}'.format(i)) + i+=1 + except NameError as e: + raise e + except: + raise + + return True + + + f = open(superelement_file) + lines=f.read().splitlines() + if not detectAndReadExtPtfmSE(lines): + raise NameError('Could not read Superelement file') + f.close() + + def read_MAP(self, map_file): + # MAP++ + + f = open(map_file) + f.readline() + f.readline() + f.readline() + + # Init line dictionary + line_dict = ['LineType', 'Diam', 'MassDenInAir', 'EA', 'CB', 'CIntDamp', 'Ca', 'Cdn', 'Cdt'] + for ld in line_dict: + self.fst_vt['MAP'][ld] = [] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MAP']['LineType'].append( str(data_line[0])) + self.fst_vt['MAP']['Diam'].append( float_read(data_line[1])) + self.fst_vt['MAP']['MassDenInAir'].append( float_read(data_line[2])) + self.fst_vt['MAP']['EA'].append( float_read(data_line[3])) + self.fst_vt['MAP']['CB'].append( float_read(data_line[4])) + self.fst_vt['MAP']['CIntDamp'].append( float_read(data_line[5])) + self.fst_vt['MAP']['Ca'].append( float_read(data_line[6])) + self.fst_vt['MAP']['Cdn'].append( float_read(data_line[7])) + self.fst_vt['MAP']['Cdt'].append( float_read(data_line[8])) + data_line = f.readline().strip().split() + #f.readline() + f.readline() + f.readline() + + # Init map nodes + node_types = ['Node','Type','X','Y','Z','M','B','FX','FY','FZ'] + for nt in node_types: + self.fst_vt['MAP'][nt] = [] + + data_node = f.readline().strip().split() + while data_node[0] and data_node[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MAP']['Node'].append(int(data_node[0])) + self.fst_vt['MAP']['Type'].append(str(data_node[1])) + self.fst_vt['MAP']['X'].append(float_read(data_node[2])) + self.fst_vt['MAP']['Y'].append(float_read(data_node[3])) + self.fst_vt['MAP']['Z'].append(float_read(data_node[4])) + self.fst_vt['MAP']['M'].append(float_read(data_node[5])) + self.fst_vt['MAP']['B'].append(float_read(data_node[6])) + self.fst_vt['MAP']['FX'].append(float_read(data_node[7])) + self.fst_vt['MAP']['FY'].append(float_read(data_node[8])) + self.fst_vt['MAP']['FZ'].append(float_read(data_node[9])) + data_node = f.readline().strip().split() + data_node = ''.join(data_node) # re-join for reading next section uniformly + # f.readline() + f.readline() + f.readline() + + # Init line properties + line_prop = ['Line', 'LineType', 'UnstrLen', 'NodeAnch', 'NodeFair', 'Flags'] + for lp in line_prop: + self.fst_vt['MAP'][lp] = [] + + data_line_prop = f.readline().strip().split() + while data_line_prop[0] and data_line_prop[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MAP']['Line'] .append( int(data_line_prop[0])) + self.fst_vt['MAP']['LineType'].append( str(data_line_prop[1])) + self.fst_vt['MAP']['UnstrLen'].append( float_read(data_line_prop[2])) + self.fst_vt['MAP']['NodeAnch'].append( int(data_line_prop[3])) + self.fst_vt['MAP']['NodeFair'].append( int(data_line_prop[4])) + self.fst_vt['MAP']['Flags'] .append( [str(val) for val in data_line_prop[5:]] ) + data_line_prop = f.readline().strip().split() + data_line_prop = ''.join(data_line_prop) # re-join for reading next section uniformly + # f.readline() + f.readline() + f.readline() + + self.fst_vt['MAP']['Option'] = [] # Solver options + # need to check for EOF here since we can have any number of solver options + data_solver = f.readline().strip().split() # Solver options + while len(data_solver) > 0: # stopping if we hit blank lines + self.fst_vt['MAP']['Option'].append([str(val) for val in data_solver]) + data_solver = f.readline().strip().split() + # self.fst_vt['MAP']['Option'] = [str(val) for val in f.readline().strip().split()] + f.close() + + def read_MoorDyn(self, moordyn_file): + + f = open(moordyn_file) + + # Init optional headers so they exist for writer, even if not read + self.fst_vt['MoorDyn']['Rod_Name'] = [] + self.fst_vt['MoorDyn']['Body_ID'] = [] + self.fst_vt['MoorDyn']['Rod_ID'] = [] + self.fst_vt['MoorDyn']['ChannelID'] = [] + + + # MoorDyn + f.readline() + f.readline() + self.fst_vt['MoorDyn']['Echo'] = bool_read(f.readline().split()[0]) + data_line = f.readline() + while data_line: + + # Split and join so all headers are same when detecting next section + data_line = data_line.strip().split() + data_line = ''.join(data_line).lower() + + # Line Types + if 'linetypes' in data_line or 'linedictionary' in data_line: + f.readline() + f.readline() + + # Line types + self.fst_vt['MoorDyn']['Name'] = [] + self.fst_vt['MoorDyn']['Diam'] = [] + self.fst_vt['MoorDyn']['MassDen'] = [] + self.fst_vt['MoorDyn']['EA'] = [] + self.fst_vt['MoorDyn']['BA_zeta'] = [] + self.fst_vt['MoorDyn']['EI'] = [] + self.fst_vt['MoorDyn']['Cd'] = [] + self.fst_vt['MoorDyn']['Ca'] = [] + self.fst_vt['MoorDyn']['CdAx'] = [] + self.fst_vt['MoorDyn']['CaAx'] = [] + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Name'].append(str(data_line[0])) + self.fst_vt['MoorDyn']['Diam'].append(float(data_line[1])) + self.fst_vt['MoorDyn']['MassDen'].append(float(data_line[2])) + self.fst_vt['MoorDyn']['EA'].append(float(data_line[3])) + self.fst_vt['MoorDyn']['BA_zeta'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['EI'].append(float(data_line[5])) + self.fst_vt['MoorDyn']['Cd'].append(float(data_line[6])) + self.fst_vt['MoorDyn']['Ca'].append(float(data_line[7])) + self.fst_vt['MoorDyn']['CdAx'].append(float(data_line[8])) + self.fst_vt['MoorDyn']['CaAx'].append(float(data_line[9])) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join + + elif 'rodtypes' in data_line or 'roddictionary' in data_line: + data_line = f.readline() + data_line = f.readline() + + self.fst_vt['MoorDyn']['Rod_Diam'] = [] + self.fst_vt['MoorDyn']['Rod_MassDen'] = [] + self.fst_vt['MoorDyn']['Rod_Cd'] = [] + self.fst_vt['MoorDyn']['Rod_Ca'] = [] + self.fst_vt['MoorDyn']['Rod_CdEnd'] = [] + self.fst_vt['MoorDyn']['Rod_CaEnd'] = [] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Rod_Name'].append(data_line[0]) + self.fst_vt['MoorDyn']['Rod_Diam'].append(float(data_line[1])) + self.fst_vt['MoorDyn']['Rod_MassDen'].append(float(data_line[2])) + self.fst_vt['MoorDyn']['Rod_Cd'].append(float(data_line[3])) + self.fst_vt['MoorDyn']['Rod_Ca'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['Rod_CdEnd'].append(float(data_line[5])) + self.fst_vt['MoorDyn']['Rod_CaEnd'].append(float(data_line[6])) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + + elif 'bodies' in data_line or 'bodylist' in data_line or 'bodyproperties' in data_line: + + f.readline() + f.readline() + self.fst_vt['MoorDyn']['Body_ID'] = [] + self.fst_vt['MoorDyn']['Body_Attachment'] = [] + self.fst_vt['MoorDyn']['X0'] = [] + self.fst_vt['MoorDyn']['Y0'] = [] + self.fst_vt['MoorDyn']['Z0'] = [] + self.fst_vt['MoorDyn']['r0'] = [] + self.fst_vt['MoorDyn']['p0'] = [] + self.fst_vt['MoorDyn']['y0'] = [] + self.fst_vt['MoorDyn']['Body_Mass'] = [] + self.fst_vt['MoorDyn']['Body_CG'] = [] + self.fst_vt['MoorDyn']['Body_I'] = [] + self.fst_vt['MoorDyn']['Body_Volume'] = [] + self.fst_vt['MoorDyn']['Body_CdA'] = [] + self.fst_vt['MoorDyn']['Body_Ca'] = [] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Body_ID'].append(int(data_line[0])) + self.fst_vt['MoorDyn']['Body_Attachment'].append(data_line[1]) + self.fst_vt['MoorDyn']['X0'].append(float(data_line[2])) + self.fst_vt['MoorDyn']['Y0'].append(float(data_line[3])) + self.fst_vt['MoorDyn']['Z0'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['r0'].append(float(data_line[5])) + self.fst_vt['MoorDyn']['p0'].append(float(data_line[6])) + self.fst_vt['MoorDyn']['y0'].append(float(data_line[7])) + self.fst_vt['MoorDyn']['Body_Mass'].append(float(data_line[8])) + self.fst_vt['MoorDyn']['Body_CG'].append([float(dl) for dl in data_line[9].split('|')]) + self.fst_vt['MoorDyn']['Body_I'].append([float(dl) for dl in data_line[10].split('|')]) + self.fst_vt['MoorDyn']['Body_Volume'].append(float(data_line[11])) + self.fst_vt['MoorDyn']['Body_CdA'].append([float(dl) for dl in data_line[12].split('|')]) + self.fst_vt['MoorDyn']['Body_Ca'].append([float(dl) for dl in data_line[13].split('|')]) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + + elif 'rods' in data_line or 'rodlist' in data_line or 'rodproperties' in data_line: + f.readline() + f.readline() + self.fst_vt['MoorDyn']['Rod_ID'] = [] + self.fst_vt['MoorDyn']['Rod_Type'] = [] + self.fst_vt['MoorDyn']['Rod_Attachment'] = [] + self.fst_vt['MoorDyn']['Xa'] = [] + self.fst_vt['MoorDyn']['Ya'] = [] + self.fst_vt['MoorDyn']['Za'] = [] + self.fst_vt['MoorDyn']['Xb'] = [] + self.fst_vt['MoorDyn']['Yb'] = [] + self.fst_vt['MoorDyn']['Zb'] = [] + self.fst_vt['MoorDyn']['Rod_NumSegs'] = [] + self.fst_vt['MoorDyn']['RodOutputs'] = [] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Rod_ID'].append(data_line[0]) + self.fst_vt['MoorDyn']['Rod_Type'].append(data_line[1]) + self.fst_vt['MoorDyn']['Rod_Attachment'].append(data_line[2]) + self.fst_vt['MoorDyn']['Xa'].append(float(data_line[3])) + self.fst_vt['MoorDyn']['Ya'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['Za'].append(float(data_line[5])) + self.fst_vt['MoorDyn']['Xb'].append(float(data_line[6])) + self.fst_vt['MoorDyn']['Yb'].append(float(data_line[7])) + self.fst_vt['MoorDyn']['Zb'].append(float(data_line[8])) + self.fst_vt['MoorDyn']['Rod_NumSegs'].append(int(data_line[9])) + self.fst_vt['MoorDyn']['RodOutputs'].append(data_line[10]) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + elif 'points' in data_line or 'connectionproperties' in data_line or \ + 'nodeproperties' in data_line or 'pointproperties' in data_line or \ + 'pointlist' in data_line: + + f.readline() + f.readline() + self.fst_vt['MoorDyn']['Point_ID'] = [] + self.fst_vt['MoorDyn']['Attachment'] = [] + self.fst_vt['MoorDyn']['X'] = [] + self.fst_vt['MoorDyn']['Y'] = [] + self.fst_vt['MoorDyn']['Z'] = [] + self.fst_vt['MoorDyn']['M'] = [] + self.fst_vt['MoorDyn']['V'] = [] + self.fst_vt['MoorDyn']['CdA'] = [] + self.fst_vt['MoorDyn']['CA'] = [] + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Point_ID'].append(int(data_line[0])) + self.fst_vt['MoorDyn']['Attachment'].append(str(data_line[1])) + self.fst_vt['MoorDyn']['X'].append(float(data_line[2])) + self.fst_vt['MoorDyn']['Y'].append(float(data_line[3])) + self.fst_vt['MoorDyn']['Z'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['M'].append(float(data_line[5])) + self.fst_vt['MoorDyn']['V'].append(float(data_line[6])) + self.fst_vt['MoorDyn']['CdA'].append(float(data_line[7])) + self.fst_vt['MoorDyn']['CA'].append(float(data_line[8])) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + elif 'lines' in data_line or 'lineproperties' in data_line or 'linelist' in data_line: + f.readline() + f.readline() + + # Lines + self.fst_vt['MoorDyn']['Line_ID'] = [] + self.fst_vt['MoorDyn']['LineType'] = [] + self.fst_vt['MoorDyn']['AttachA'] = [] + self.fst_vt['MoorDyn']['AttachB'] = [] + self.fst_vt['MoorDyn']['UnstrLen'] = [] + self.fst_vt['MoorDyn']['NumSegs'] = [] + self.fst_vt['MoorDyn']['Outputs'] = [] + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['Line_ID'].append(int(data_line[0])) + self.fst_vt['MoorDyn']['LineType'].append(str(data_line[1])) + self.fst_vt['MoorDyn']['AttachA'].append(str(data_line[2])) + self.fst_vt['MoorDyn']['AttachB'].append(str(data_line[3])) + self.fst_vt['MoorDyn']['UnstrLen'].append(float(data_line[4])) + self.fst_vt['MoorDyn']['NumSegs'].append(int(data_line[5])) + self.fst_vt['MoorDyn']['Outputs'].append(str(data_line[6])) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + elif 'control' in data_line.lower(): + f.readline() + f.readline() + + # read optional control inputs, there are other optional MoorDyn sections/inputs + self.fst_vt['MoorDyn']['ChannelID'] = [] + self.fst_vt['MoorDyn']['Lines_Control'] = [] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + self.fst_vt['MoorDyn']['ChannelID'].append(int(data_line[0])) + # Line(s) is a list of mooring lines, spaces are allowed between commas + control_lines = [] + for lines in data_line[1:]: + for line in lines.split(','): + control_lines.append(line.strip(',')) + + # Spaces show up in control_lines as '', remove them all + while '' in control_lines: + control_lines.remove('') + + self.fst_vt['MoorDyn']['Lines_Control'].append(control_lines) + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + + elif 'options' in data_line: + + # MoorDyn lets options be written in any order + # Solver options + self.fst_vt['MoorDyn']['options'] = [] # keep list of MoorDyn options + + string_options = ['WaterKin'] + + data_line = f.readline().strip().split() + while data_line[0] and data_line[0][:3] != '---': # OpenFAST searches for ---, so we'll do the same + + raw_value = data_line[0] + option_name = data_line[1] + + self.fst_vt['MoorDyn']['options'].append(option_name) + if option_name in string_options: + self.fst_vt['MoorDyn'][option_name] = raw_value.strip('"') + else: + self.fst_vt['MoorDyn'][option_name] = float(raw_value) + + data_line = f.readline().strip().split() + data_line = ''.join(data_line) # re-join for reading next section uniformly + + elif 'outputs' in data_line: + + self.read_outlist_freeForm(f,'MoorDyn') + + f.close() + break + + if 'WaterKin' in self.fst_vt['MoorDyn']['options']: + WaterKin_file = os.path.normpath(os.path.join(os.path.dirname(moordyn_file), self.fst_vt['MoorDyn']['WaterKin'])) + self.read_WaterKin(WaterKin_file) + + def read_WaterKin(self,WaterKin_file): + print('here') + + f = open(WaterKin_file) + f.readline() + f.readline() + f.readline() + + self.fst_vt['WaterKin']['WaveKinMod'] = int_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['WaveKinFile'] = f.readline().split()[0] # Will want to update this somehow with wave elevation + self.fst_vt['WaterKin']['dtWave'] = float_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['WaveDir'] = float_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['X_Type'] = int_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['X_Grid'] = read_array(f,None,split_val='-',array_type=float) + # re.split(',| ',f.readline().strip()) + self.fst_vt['WaterKin']['Y_Type'] = int_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['Y_Grid'] = read_array(f,None,split_val='-',array_type=float) + self.fst_vt['WaterKin']['Z_Type'] = int_read(f.readline().split()[0]) + self.fst_vt['WaterKin']['Z_Grid'] = read_array(f,None,split_val='-',array_type=float) + f.readline() + self.fst_vt['WaterKin']['CurrentMod'] = int_read(f.readline().split()[0]) + f.close() + + def execute(self): + + self.read_MainInput() + ed_file = os.path.join(self.FAST_directory, self.fst_vt['Fst']['EDFile']) + + if self.fst_vt['Fst']['CompElast'] == 3: # SimpleElastoDyn + self.read_SimpleElastoDyn(ed_file) + else: + self.read_ElastoDyn(ed_file) + if not os.path.isabs(self.fst_vt['ElastoDyn']['BldFile1']): + ed_blade_file = os.path.join(os.path.dirname(ed_file), self.fst_vt['ElastoDyn']['BldFile1']) + if self.fst_vt['Fst']['CompElast'] == 1 or os.path.isfile(ed_blade_file): # If elastodyn blade is being used OR if the blade file exists + self.read_ElastoDynBlade(ed_blade_file) + if not os.path.isabs(self.fst_vt['ElastoDyn']['TwrFile']): + ed_tower_file = os.path.join(os.path.dirname(ed_file), self.fst_vt['ElastoDyn']['TwrFile']) + self.read_ElastoDynTower(ed_tower_file) + + if self.fst_vt['Fst']['CompInflow'] == 1: + self.read_InflowWind() + # AeroDyn version selection + if self.fst_vt['Fst']['CompAero'] == 1: + self.read_AeroDisk() + elif self.fst_vt['Fst']['CompAero'] == 2: + self.read_AeroDyn() + + if self.fst_vt['Fst']['CompServo'] == 1: + self.read_ServoDyn() + # Read StC Files + for StC_file in self.fst_vt['ServoDyn']['BStCfiles']: + self.fst_vt['BStC'].append(self.read_StC(StC_file)) + for StC_file in self.fst_vt['ServoDyn']['NStCfiles']: + self.fst_vt['NStC'].append(self.read_StC(StC_file)) + for StC_file in self.fst_vt['ServoDyn']['TStCfiles']: + self.fst_vt['TStC'].append(self.read_StC(StC_file)) + for StC_file in self.fst_vt['ServoDyn']['SStCfiles']: + self.fst_vt['SStC'].append(self.read_StC(StC_file)) + if ROSCO: + self.read_DISCON_in() + if self.fst_vt['ServoDyn']['VSContrl'] == 3: # user-defined from routine UserVSCont refered + self.read_spd_trq('spd_trq.dat') + hd_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['HydroFile'])) + if os.path.isfile(hd_file): + self.read_HydroDyn(hd_file) + ss_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['SeaStFile'])) + if os.path.isfile(ss_file): + self.read_SeaState(ss_file) + sd_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['SubFile'])) + if os.path.isfile(sd_file): + if self.fst_vt['Fst']['CompSub'] == 1: + self.read_SubDyn(sd_file) + elif self.fst_vt['Fst']['CompSub'] == 2: + self.read_ExtPtfm(sd_file) + if self.fst_vt['Fst']['CompMooring'] == 1: # only MAP++ implemented for mooring models + map_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['MooringFile'])) + if os.path.isfile(map_file): + self.read_MAP(map_file) + if self.fst_vt['Fst']['CompMooring'] == 3: # MoorDyn implimented + moordyn_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['MooringFile'])) + if os.path.isfile(moordyn_file): + self.read_MoorDyn(moordyn_file) + bd_file = os.path.normpath(os.path.join(self.FAST_directory, self.fst_vt['Fst']['BDBldFile(1)'])) + if os.path.isfile(bd_file): + self.read_BeamDyn(bd_file) + +if __name__=="__main__": + from openfast_io.FileTools import check_rtest_cloned + + parent_dir = os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ) ) + os.sep + + # Read the model + fast = InputReader_OpenFAST() + fast.FAST_InputFile = '5MW_Land_BD_DLL_WTurb.fst' # FAST input file (ext=.fst) + fast.FAST_directory = os.path.join(parent_dir, 'reg_tests', 'r-test', + 'glue-codes', 'openfast', + '5MW_Land_BD_DLL_WTurb') # Path to fst directory files + + check_rtest_cloned(os.path.join(fast.FAST_directory)) + + fast.execute() diff --git a/tests/util/FAST_vars_out.py b/tests/util/FAST_vars_out.py new file mode 100644 index 00000000..8b3ac856 --- /dev/null +++ b/tests/util/FAST_vars_out.py @@ -0,0 +1,9764 @@ +""" Generated from FAST OutListParameters.xlsx files with AeroelasticSE/src/AeroelasticSE/Util/create_output_vars.py """ + + +""" AeroDyn """ +AeroDyn = {} + +# Tower +AeroDyn['TwN1VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 1; local tower coordinate system +AeroDyn['TwN1VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 1; local tower coordinate system +AeroDyn['TwN1VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 1; local tower coordinate system +AeroDyn['TwN2VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 2; local tower coordinate system +AeroDyn['TwN2VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 2; local tower coordinate system +AeroDyn['TwN2VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 2; local tower coordinate system +AeroDyn['TwN3VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 3; local tower coordinate system +AeroDyn['TwN3VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 3; local tower coordinate system +AeroDyn['TwN3VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 3; local tower coordinate system +AeroDyn['TwN4VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 4; local tower coordinate system +AeroDyn['TwN4VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 4; local tower coordinate system +AeroDyn['TwN4VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 4; local tower coordinate system +AeroDyn['TwN5VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 5; local tower coordinate system +AeroDyn['TwN5VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 5; local tower coordinate system +AeroDyn['TwN5VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 5; local tower coordinate system +AeroDyn['TwN6VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 6; local tower coordinate system +AeroDyn['TwN6VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 6; local tower coordinate system +AeroDyn['TwN6VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 6; local tower coordinate system +AeroDyn['TwN7VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 7; local tower coordinate system +AeroDyn['TwN7VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 7; local tower coordinate system +AeroDyn['TwN7VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 7; local tower coordinate system +AeroDyn['TwN8VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 8; local tower coordinate system +AeroDyn['TwN8VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 8; local tower coordinate system +AeroDyn['TwN8VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 8; local tower coordinate system +AeroDyn['TwN9VUndx'] = False # (m/s); Undisturbed x-component wind velocity at Tw node 9; local tower coordinate system +AeroDyn['TwN9VUndy'] = False # (m/s); Undisturbed y-component wind velocity at Tw node 9; local tower coordinate system +AeroDyn['TwN9VUndz'] = False # (m/s); Undisturbed z-component wind velocity at Tw node 9; local tower coordinate system +AeroDyn['TwN1STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 1; local tower coordinate system +AeroDyn['TwN1STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 1; local tower coordinate system +AeroDyn['TwN1STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 1; local tower coordinate system +AeroDyn['TwN2STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 2; local tower coordinate system +AeroDyn['TwN2STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 2; local tower coordinate system +AeroDyn['TwN2STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 2; local tower coordinate system +AeroDyn['TwN3STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 3; local tower coordinate system +AeroDyn['TwN3STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 3; local tower coordinate system +AeroDyn['TwN3STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 3; local tower coordinate system +AeroDyn['TwN4STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 4; local tower coordinate system +AeroDyn['TwN4STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 4; local tower coordinate system +AeroDyn['TwN4STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 4; local tower coordinate system +AeroDyn['TwN5STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 5; local tower coordinate system +AeroDyn['TwN5STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 5; local tower coordinate system +AeroDyn['TwN5STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 5; local tower coordinate system +AeroDyn['TwN6STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 6; local tower coordinate system +AeroDyn['TwN6STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 6; local tower coordinate system +AeroDyn['TwN6STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 6; local tower coordinate system +AeroDyn['TwN7STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 7; local tower coordinate system +AeroDyn['TwN7STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 7; local tower coordinate system +AeroDyn['TwN7STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 7; local tower coordinate system +AeroDyn['TwN8STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 8; local tower coordinate system +AeroDyn['TwN8STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 8; local tower coordinate system +AeroDyn['TwN8STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 8; local tower coordinate system +AeroDyn['TwN9STVx'] = False # (m/s); Structural translational velocity x-component at Tw node 9; local tower coordinate system +AeroDyn['TwN9STVy'] = False # (m/s); Structural translational velocity y-component at Tw node 9; local tower coordinate system +AeroDyn['TwN9STVz'] = False # (m/s); Structural translational velocity z-component at Tw node 9; local tower coordinate system +AeroDyn['TwN1Vrel'] = False # (m/s); Relative wind speed at Tw node 1; +AeroDyn['TwN2Vrel'] = False # (m/s); Relative wind speed at Tw node 2; +AeroDyn['TwN3Vrel'] = False # (m/s); Relative wind speed at Tw node 3; +AeroDyn['TwN4Vrel'] = False # (m/s); Relative wind speed at Tw node 4; +AeroDyn['TwN5Vrel'] = False # (m/s); Relative wind speed at Tw node 5; +AeroDyn['TwN6Vrel'] = False # (m/s); Relative wind speed at Tw node 6; +AeroDyn['TwN7Vrel'] = False # (m/s); Relative wind speed at Tw node 7; +AeroDyn['TwN8Vrel'] = False # (m/s); Relative wind speed at Tw node 8; +AeroDyn['TwN9Vrel'] = False # (m/s); Relative wind speed at Tw node 9; +AeroDyn['TwN1DynP'] = False # (Pa); Dynamic Pressure at Tw node 1; +AeroDyn['TwN2DynP'] = False # (Pa); Dynamic Pressure at Tw node 2; +AeroDyn['TwN3DynP'] = False # (Pa); Dynamic Pressure at Tw node 3; +AeroDyn['TwN4DynP'] = False # (Pa); Dynamic Pressure at Tw node 4; +AeroDyn['TwN5DynP'] = False # (Pa); Dynamic Pressure at Tw node 5; +AeroDyn['TwN6DynP'] = False # (Pa); Dynamic Pressure at Tw node 6; +AeroDyn['TwN7DynP'] = False # (Pa); Dynamic Pressure at Tw node 7; +AeroDyn['TwN8DynP'] = False # (Pa); Dynamic Pressure at Tw node 8; +AeroDyn['TwN9DynP'] = False # (Pa); Dynamic Pressure at Tw node 9; +AeroDyn['TwN1Re'] = False # (-); Reynolds number (in millions) at Tw node 1; +AeroDyn['TwN2Re'] = False # (-); Reynolds number (in millions) at Tw node 2; +AeroDyn['TwN3Re'] = False # (-); Reynolds number (in millions) at Tw node 3; +AeroDyn['TwN4Re'] = False # (-); Reynolds number (in millions) at Tw node 4; +AeroDyn['TwN5Re'] = False # (-); Reynolds number (in millions) at Tw node 5; +AeroDyn['TwN6Re'] = False # (-); Reynolds number (in millions) at Tw node 6; +AeroDyn['TwN7Re'] = False # (-); Reynolds number (in millions) at Tw node 7; +AeroDyn['TwN8Re'] = False # (-); Reynolds number (in millions) at Tw node 8; +AeroDyn['TwN9Re'] = False # (-); Reynolds number (in millions) at Tw node 9; +AeroDyn['TwN1M'] = False # (-); Mach number at Tw node 1; +AeroDyn['TwN2M'] = False # (-); Mach number at Tw node 2; +AeroDyn['TwN3M'] = False # (-); Mach number at Tw node 3; +AeroDyn['TwN4M'] = False # (-); Mach number at Tw node 4; +AeroDyn['TwN5M'] = False # (-); Mach number at Tw node 5; +AeroDyn['TwN6M'] = False # (-); Mach number at Tw node 6; +AeroDyn['TwN7M'] = False # (-); Mach number at Tw node 7; +AeroDyn['TwN8M'] = False # (-); Mach number at Tw node 8; +AeroDyn['TwN9M'] = False # (-); Mach number at Tw node 9; +AeroDyn['TwN1Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Fdx'] = False # (N/m); x-component of drag force per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Fdy'] = False # (N/m); y-component of drag force per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Fbx'] = False # (N/m); x-component of buoyant force per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Fby'] = False # (N/m); y-component of buoyant force per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Fbz'] = False # (N/m); z-component of buoyant force per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Mbx'] = False # (N-m/m); x-component of buoyant moment per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Mby'] = False # (N-m/m); y-component of buoyant moment per unit length at Tw node 9; local tower coordinate system +AeroDyn['TwN1Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 1; local tower coordinate system +AeroDyn['TwN2Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 2; local tower coordinate system +AeroDyn['TwN3Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 3; local tower coordinate system +AeroDyn['TwN4Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 4; local tower coordinate system +AeroDyn['TwN5Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 5; local tower coordinate system +AeroDyn['TwN6Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 6; local tower coordinate system +AeroDyn['TwN7Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 7; local tower coordinate system +AeroDyn['TwN8Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 8; local tower coordinate system +AeroDyn['TwN9Mbz'] = False # (N-m/m); z-component of buoyant moment per unit length at Tw node 9; local tower coordinate system + +# Blade +AeroDyn['B1Azimuth'] = False # (deg); Azimuth angle of blade 1; +AeroDyn['B2Azimuth'] = False # (deg); Azimuth angle of blade 2; +AeroDyn['B3Azimuth'] = False # (deg); Azimuth angle of blade 3; +AeroDyn['B1Pitch'] = False # (deg); Pitch angle of blade 1; +AeroDyn['B2Pitch'] = False # (deg); Pitch angle of blade 2; +AeroDyn['B3Pitch'] = False # (deg); Pitch angle of blade 3; +AeroDyn['B1AeroFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in x-direction); blade root coordinate system +AeroDyn['B1FldFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in x-direction); blade root coordinate system +AeroDyn['B1AeroFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in y-direction); blade root coordinate system +AeroDyn['B1FldFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in y-direction); blade root coordinate system +AeroDyn['B1AeroFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in z-direction); blade root coordinate system +AeroDyn['B1FldFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in z-direction); blade root coordinate system +AeroDyn['B1AeroMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in x-direction); blade root coordinate system +AeroDyn['B1FldMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in x-direction); blade root coordinate system +AeroDyn['B1AeroMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in y-direction); blade root coordinate system +AeroDyn['B1FldMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in y-direction); blade root coordinate system +AeroDyn['B1AeroMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in z-direction); blade root coordinate system +AeroDyn['B1FldMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in z-direction); blade root coordinate system +AeroDyn['B1AeroPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 1; +AeroDyn['B1FldPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 1; +AeroDyn['B2AeroFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in x-direction); blade root coordinate system +AeroDyn['B2FldFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in x-direction); blade root coordinate system +AeroDyn['B2AeroFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in y-direction); blade root coordinate system +AeroDyn['B2FldFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in y-direction); blade root coordinate system +AeroDyn['B2AeroFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in z-direction); blade root coordinate system +AeroDyn['B2FldFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in z-direction); blade root coordinate system +AeroDyn['B2AeroMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in x-direction); blade root coordinate system +AeroDyn['B2FldMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in x-direction); blade root coordinate system +AeroDyn['B2AeroMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in y-direction); blade root coordinate system +AeroDyn['B2FldMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in y-direction); blade root coordinate system +AeroDyn['B2AeroMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in z-direction); blade root coordinate system +AeroDyn['B2FldMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in z-direction); blade root coordinate system +AeroDyn['B2AeroPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 2; +AeroDyn['B2FldPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 2; +AeroDyn['B3AeroFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in x-direction); blade root coordinate system +AeroDyn['B3FldFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in x-direction); blade root coordinate system +AeroDyn['B3AeroFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in y-direction); blade root coordinate system +AeroDyn['B3FldFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in y-direction); blade root coordinate system +AeroDyn['B3AeroFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in z-direction); blade root coordinate system +AeroDyn['B3FldFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in z-direction); blade root coordinate system +AeroDyn['B3AeroMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in x-direction); blade root coordinate system +AeroDyn['B3FldMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in x-direction); blade root coordinate system +AeroDyn['B3AeroMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in y-direction); blade root coordinate system +AeroDyn['B3FldMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in y-direction); blade root coordinate system +AeroDyn['B3AeroMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in z-direction); blade root coordinate system +AeroDyn['B3FldMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in z-direction); blade root coordinate system +AeroDyn['B3AeroPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 3; +AeroDyn['B3FldPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 3; +AeroDyn['B4AeroFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in x-direction); blade root coordinate system +AeroDyn['B4FldFx'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in x-direction); blade root coordinate system +AeroDyn['B4AeroFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in y-direction); blade root coordinate system +AeroDyn['B4FldFy'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in y-direction); blade root coordinate system +AeroDyn['B4AeroFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in z-direction); blade root coordinate system +AeroDyn['B4FldFz'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in z-direction); blade root coordinate system +AeroDyn['B4AeroMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in x-direction); blade root coordinate system +AeroDyn['B4FldMx'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in x-direction); blade root coordinate system +AeroDyn['B4AeroMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in y-direction); blade root coordinate system +AeroDyn['B4FldMy'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in y-direction); blade root coordinate system +AeroDyn['B4AeroMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in z-direction); blade root coordinate system +AeroDyn['B4FldMz'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in z-direction); blade root coordinate system +AeroDyn['B4AeroPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 4; +AeroDyn['B4FldPwr'] = False # (W); Total aerodynamic/hydrodynamic power from blade 4; +AeroDyn['B1AeroFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in x-direction); global coordinate system +AeroDyn['B1FldFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in x-direction); global coordinate system +AeroDyn['B1AeroFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in y-direction); global coordinate system +AeroDyn['B1FldFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in y-direction); global coordinate system +AeroDyn['B1AeroFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in z-direction); global coordinate system +AeroDyn['B1FldFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 1 (force in z-direction); global coordinate system +AeroDyn['B1AeroMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in x-direction); global coordinate system +AeroDyn['B1FldMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in x-direction); global coordinate system +AeroDyn['B1AeroMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in y-direction); global coordinate system +AeroDyn['B1FldMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in y-direction); global coordinate system +AeroDyn['B1AeroMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in z-direction); global coordinate system +AeroDyn['B1FldMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 1 (moment in z-direction); global coordinate system +AeroDyn['B2AeroFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in x-direction); global coordinate system +AeroDyn['B2FldFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in x-direction); global coordinate system +AeroDyn['B2AeroFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in y-direction); global coordinate system +AeroDyn['B2FldFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in y-direction); global coordinate system +AeroDyn['B2AeroFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in z-direction); global coordinate system +AeroDyn['B2FldFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 2 (force in z-direction); global coordinate system +AeroDyn['B2AeroMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in x-direction); global coordinate system +AeroDyn['B2FldMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in x-direction); global coordinate system +AeroDyn['B2AeroMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in y-direction); global coordinate system +AeroDyn['B2FldMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in y-direction); global coordinate system +AeroDyn['B2AeroMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in z-direction); global coordinate system +AeroDyn['B2FldMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 2 (moment in z-direction); global coordinate system +AeroDyn['B3AeroFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in x-direction); global coordinate system +AeroDyn['B3FldFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in x-direction); global coordinate system +AeroDyn['B3AeroFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in y-direction); global coordinate system +AeroDyn['B3FldFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in y-direction); global coordinate system +AeroDyn['B3AeroFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in z-direction); global coordinate system +AeroDyn['B3FldFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 3 (force in z-direction); global coordinate system +AeroDyn['B3AeroMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in x-direction); global coordinate system +AeroDyn['B3FldMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in x-direction); global coordinate system +AeroDyn['B3AeroMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in y-direction); global coordinate system +AeroDyn['B3FldMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in y-direction); global coordinate system +AeroDyn['B3AeroMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in z-direction); global coordinate system +AeroDyn['B3FldMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 3 (moment in z-direction); global coordinate system +AeroDyn['B4AeroFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in x-direction); global coordinate system +AeroDyn['B4FldFxi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in x-direction); global coordinate system +AeroDyn['B4AeroFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in y-direction); global coordinate system +AeroDyn['B4FldFyi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in y-direction); global coordinate system +AeroDyn['B4AeroFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in z-direction); global coordinate system +AeroDyn['B4FldFzi'] = False # (N); Total blade aerodynamic/hydrodynamic load for blade 4 (force in z-direction); global coordinate system +AeroDyn['B4AeroMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in x-direction); global coordinate system +AeroDyn['B4FldMxi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in x-direction); global coordinate system +AeroDyn['B4AeroMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in y-direction); global coordinate system +AeroDyn['B4FldMyi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in y-direction); global coordinate system +AeroDyn['B4AeroMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in z-direction); global coordinate system +AeroDyn['B4FldMzi'] = False # (N-m); Total blade aerodynamic/hydrodynamic load for blade 4 (moment in z-direction); global coordinate system + +# Blade Nodal outputs +AeroDyn['B1N1VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B2N1VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B3N1VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VUndx'] = False # (m/s); x-component of undisturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VUndy'] = False # (m/s); y-component of undisturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VUndz'] = False # (m/s); z-component of undisturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B1N1VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B2N1VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B3N1VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VDisx'] = False # (m/s); x-component of disturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VDisy'] = False # (m/s); y-component of disturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9VDisz'] = False # (m/s); z-component of disturbed wind velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B1N1STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9STVx'] = False # (m/s); x-component of structural translational velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9STVy'] = False # (m/s); y-component of structural translational velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B1N1STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 1; local blade coordinate system +AeroDyn['B1N2STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 2; local blade coordinate system +AeroDyn['B1N3STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 3; local blade coordinate system +AeroDyn['B1N4STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 4; local blade coordinate system +AeroDyn['B1N5STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 5; local blade coordinate system +AeroDyn['B1N6STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 6; local blade coordinate system +AeroDyn['B1N7STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 7; local blade coordinate system +AeroDyn['B1N8STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 8; local blade coordinate system +AeroDyn['B1N9STVz'] = False # (m/s); z-component of structural translational velocity at Blade 1, Node 9; local blade coordinate system +AeroDyn['B2N1STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9STVx'] = False # (m/s); x-component of structural translational velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9STVy'] = False # (m/s); y-component of structural translational velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B2N1STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 1; local blade coordinate system +AeroDyn['B2N2STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 2; local blade coordinate system +AeroDyn['B2N3STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 3; local blade coordinate system +AeroDyn['B2N4STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 4; local blade coordinate system +AeroDyn['B2N5STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 5; local blade coordinate system +AeroDyn['B2N6STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 6; local blade coordinate system +AeroDyn['B2N7STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 7; local blade coordinate system +AeroDyn['B2N8STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 8; local blade coordinate system +AeroDyn['B2N9STVz'] = False # (m/s); z-component of structural translational velocity at Blade 2, Node 9; local blade coordinate system +AeroDyn['B3N1STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9STVx'] = False # (m/s); x-component of structural translational velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9STVy'] = False # (m/s); y-component of structural translational velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B3N1STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 1; local blade coordinate system +AeroDyn['B3N2STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 2; local blade coordinate system +AeroDyn['B3N3STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 3; local blade coordinate system +AeroDyn['B3N4STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 4; local blade coordinate system +AeroDyn['B3N5STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 5; local blade coordinate system +AeroDyn['B3N6STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 6; local blade coordinate system +AeroDyn['B3N7STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 7; local blade coordinate system +AeroDyn['B3N8STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 8; local blade coordinate system +AeroDyn['B3N9STVz'] = False # (m/s); z-component of structural translational velocity at Blade 3, Node 9; local blade coordinate system +AeroDyn['B1N1VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 1; +AeroDyn['B1N2VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 2; +AeroDyn['B1N3VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 3; +AeroDyn['B1N4VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 4; +AeroDyn['B1N5VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 5; +AeroDyn['B1N6VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 6; +AeroDyn['B1N7VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 7; +AeroDyn['B1N8VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 8; +AeroDyn['B1N9VRel'] = False # (m/s); Relvative wind speed at Blade 1, Node 9; +AeroDyn['B2N1VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 1; +AeroDyn['B2N2VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 2; +AeroDyn['B2N3VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 3; +AeroDyn['B2N4VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 4; +AeroDyn['B2N5VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 5; +AeroDyn['B2N6VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 6; +AeroDyn['B2N7VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 7; +AeroDyn['B2N8VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 8; +AeroDyn['B2N9VRel'] = False # (m/s); Relvative wind speed at Blade 2, Node 9; +AeroDyn['B3N1VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 1; +AeroDyn['B3N2VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 2; +AeroDyn['B3N3VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 3; +AeroDyn['B3N4VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 4; +AeroDyn['B3N5VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 5; +AeroDyn['B3N6VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 6; +AeroDyn['B3N7VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 7; +AeroDyn['B3N8VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 8; +AeroDyn['B3N9VRel'] = False # (m/s); Relvative wind speed at Blade 3, Node 9; +AeroDyn['B1N1DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 1; +AeroDyn['B1N2DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 2; +AeroDyn['B1N3DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 3; +AeroDyn['B1N4DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 4; +AeroDyn['B1N5DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 5; +AeroDyn['B1N6DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 6; +AeroDyn['B1N7DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 7; +AeroDyn['B1N8DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 8; +AeroDyn['B1N9DynP'] = False # (Pa); Dynamic pressure at Blade 1, Node 9; +AeroDyn['B2N1DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 1; +AeroDyn['B2N2DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 2; +AeroDyn['B2N3DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 3; +AeroDyn['B2N4DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 4; +AeroDyn['B2N5DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 5; +AeroDyn['B2N6DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 6; +AeroDyn['B2N7DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 7; +AeroDyn['B2N8DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 8; +AeroDyn['B2N9DynP'] = False # (Pa); Dynamic pressure at Blade 2, Node 9; +AeroDyn['B3N1DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 1; +AeroDyn['B3N2DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 2; +AeroDyn['B3N3DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 3; +AeroDyn['B3N4DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 4; +AeroDyn['B3N5DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 5; +AeroDyn['B3N6DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 6; +AeroDyn['B3N7DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 7; +AeroDyn['B3N8DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 8; +AeroDyn['B3N9DynP'] = False # (Pa); Dynamic pressure at Blade 3, Node 9; +AeroDyn['B1N1Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 1; +AeroDyn['B1N2Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 2; +AeroDyn['B1N3Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 3; +AeroDyn['B1N4Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 4; +AeroDyn['B1N5Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 5; +AeroDyn['B1N6Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 6; +AeroDyn['B1N7Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 7; +AeroDyn['B1N8Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 8; +AeroDyn['B1N9Re'] = False # (-); Reynolds number (in millions) at Blade 1, Node 9; +AeroDyn['B2N1Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 1; +AeroDyn['B2N2Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 2; +AeroDyn['B2N3Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 3; +AeroDyn['B2N4Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 4; +AeroDyn['B2N5Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 5; +AeroDyn['B2N6Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 6; +AeroDyn['B2N7Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 7; +AeroDyn['B2N8Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 8; +AeroDyn['B2N9Re'] = False # (-); Reynolds number (in millions) at Blade 2, Node 9; +AeroDyn['B3N1Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 1; +AeroDyn['B3N2Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 2; +AeroDyn['B3N3Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 3; +AeroDyn['B3N4Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 4; +AeroDyn['B3N5Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 5; +AeroDyn['B3N6Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 6; +AeroDyn['B3N7Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 7; +AeroDyn['B3N8Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 8; +AeroDyn['B3N9Re'] = False # (-); Reynolds number (in millions) at Blade 3, Node 9; +AeroDyn['B1N1M'] = False # (-); Mach number at Blade 1, Node 1; +AeroDyn['B1N2M'] = False # (-); Mach number at Blade 1, Node 2; +AeroDyn['B1N3M'] = False # (-); Mach number at Blade 1, Node 3; +AeroDyn['B1N4M'] = False # (-); Mach number at Blade 1, Node 4; +AeroDyn['B1N5M'] = False # (-); Mach number at Blade 1, Node 5; +AeroDyn['B1N6M'] = False # (-); Mach number at Blade 1, Node 6; +AeroDyn['B1N7M'] = False # (-); Mach number at Blade 1, Node 7; +AeroDyn['B1N8M'] = False # (-); Mach number at Blade 1, Node 8; +AeroDyn['B1N9M'] = False # (-); Mach number at Blade 1, Node 9; +AeroDyn['B2N1M'] = False # (-); Mach number at Blade 2, Node 1; +AeroDyn['B2N2M'] = False # (-); Mach number at Blade 2, Node 2; +AeroDyn['B2N3M'] = False # (-); Mach number at Blade 2, Node 3; +AeroDyn['B2N4M'] = False # (-); Mach number at Blade 2, Node 4; +AeroDyn['B2N5M'] = False # (-); Mach number at Blade 2, Node 5; +AeroDyn['B2N6M'] = False # (-); Mach number at Blade 2, Node 6; +AeroDyn['B2N7M'] = False # (-); Mach number at Blade 2, Node 7; +AeroDyn['B2N8M'] = False # (-); Mach number at Blade 2, Node 8; +AeroDyn['B2N9M'] = False # (-); Mach number at Blade 2, Node 9; +AeroDyn['B3N1M'] = False # (-); Mach number at Blade 3, Node 1; +AeroDyn['B3N2M'] = False # (-); Mach number at Blade 3, Node 2; +AeroDyn['B3N3M'] = False # (-); Mach number at Blade 3, Node 3; +AeroDyn['B3N4M'] = False # (-); Mach number at Blade 3, Node 4; +AeroDyn['B3N5M'] = False # (-); Mach number at Blade 3, Node 5; +AeroDyn['B3N6M'] = False # (-); Mach number at Blade 3, Node 6; +AeroDyn['B3N7M'] = False # (-); Mach number at Blade 3, Node 7; +AeroDyn['B3N8M'] = False # (-); Mach number at Blade 3, Node 8; +AeroDyn['B3N9M'] = False # (-); Mach number at Blade 3, Node 9; +AeroDyn['B1N1Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 1; +AeroDyn['B1N2Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 2; +AeroDyn['B1N3Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 3; +AeroDyn['B1N4Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 4; +AeroDyn['B1N5Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 5; +AeroDyn['B1N6Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 6; +AeroDyn['B1N7Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 7; +AeroDyn['B1N8Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 8; +AeroDyn['B1N9Vindx'] = False # (m/s); Axial induced wind velocity at Blade 1, Node 9; +AeroDyn['B2N1Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 1; +AeroDyn['B2N2Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 2; +AeroDyn['B2N3Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 3; +AeroDyn['B2N4Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 4; +AeroDyn['B2N5Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 5; +AeroDyn['B2N6Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 6; +AeroDyn['B2N7Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 7; +AeroDyn['B2N8Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 8; +AeroDyn['B2N9Vindx'] = False # (m/s); Axial induced wind velocity at Blade 2, Node 9; +AeroDyn['B3N1Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 1; +AeroDyn['B3N2Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 2; +AeroDyn['B3N3Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 3; +AeroDyn['B3N4Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 4; +AeroDyn['B3N5Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 5; +AeroDyn['B3N6Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 6; +AeroDyn['B3N7Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 7; +AeroDyn['B3N8Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 8; +AeroDyn['B3N9Vindx'] = False # (m/s); Axial induced wind velocity at Blade 3, Node 9; +AeroDyn['B1N1Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 1; +AeroDyn['B1N2Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 2; +AeroDyn['B1N3Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 3; +AeroDyn['B1N4Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 4; +AeroDyn['B1N5Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 5; +AeroDyn['B1N6Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 6; +AeroDyn['B1N7Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 7; +AeroDyn['B1N8Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 8; +AeroDyn['B1N9Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 1, Node 9; +AeroDyn['B2N1Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 1; +AeroDyn['B2N2Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 2; +AeroDyn['B2N3Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 3; +AeroDyn['B2N4Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 4; +AeroDyn['B2N5Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 5; +AeroDyn['B2N6Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 6; +AeroDyn['B2N7Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 7; +AeroDyn['B2N8Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 8; +AeroDyn['B2N9Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 2, Node 9; +AeroDyn['B3N1Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 1; +AeroDyn['B3N2Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 2; +AeroDyn['B3N3Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 3; +AeroDyn['B3N4Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 4; +AeroDyn['B3N5Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 5; +AeroDyn['B3N6Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 6; +AeroDyn['B3N7Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 7; +AeroDyn['B3N8Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 8; +AeroDyn['B3N9Vindy'] = False # (m/s); Tangential induced wind velocity at Blade 3, Node 9; +AeroDyn['B1N1AxInd'] = False # (-); Axial induction factor at Blade 1, Node 1; +AeroDyn['B1N2AxInd'] = False # (-); Axial induction factor at Blade 1, Node 2; +AeroDyn['B1N3AxInd'] = False # (-); Axial induction factor at Blade 1, Node 3; +AeroDyn['B1N4AxInd'] = False # (-); Axial induction factor at Blade 1, Node 4; +AeroDyn['B1N5AxInd'] = False # (-); Axial induction factor at Blade 1, Node 5; +AeroDyn['B1N6AxInd'] = False # (-); Axial induction factor at Blade 1, Node 6; +AeroDyn['B1N7AxInd'] = False # (-); Axial induction factor at Blade 1, Node 7; +AeroDyn['B1N8AxInd'] = False # (-); Axial induction factor at Blade 1, Node 8; +AeroDyn['B1N9AxInd'] = False # (-); Axial induction factor at Blade 1, Node 9; +AeroDyn['B2N1AxInd'] = False # (-); Axial induction factor at Blade 2, Node 1; +AeroDyn['B2N2AxInd'] = False # (-); Axial induction factor at Blade 2, Node 2; +AeroDyn['B2N3AxInd'] = False # (-); Axial induction factor at Blade 2, Node 3; +AeroDyn['B2N4AxInd'] = False # (-); Axial induction factor at Blade 2, Node 4; +AeroDyn['B2N5AxInd'] = False # (-); Axial induction factor at Blade 2, Node 5; +AeroDyn['B2N6AxInd'] = False # (-); Axial induction factor at Blade 2, Node 6; +AeroDyn['B2N7AxInd'] = False # (-); Axial induction factor at Blade 2, Node 7; +AeroDyn['B2N8AxInd'] = False # (-); Axial induction factor at Blade 2, Node 8; +AeroDyn['B2N9AxInd'] = False # (-); Axial induction factor at Blade 2, Node 9; +AeroDyn['B3N1AxInd'] = False # (-); Axial induction factor at Blade 3, Node 1; +AeroDyn['B3N2AxInd'] = False # (-); Axial induction factor at Blade 3, Node 2; +AeroDyn['B3N3AxInd'] = False # (-); Axial induction factor at Blade 3, Node 3; +AeroDyn['B3N4AxInd'] = False # (-); Axial induction factor at Blade 3, Node 4; +AeroDyn['B3N5AxInd'] = False # (-); Axial induction factor at Blade 3, Node 5; +AeroDyn['B3N6AxInd'] = False # (-); Axial induction factor at Blade 3, Node 6; +AeroDyn['B3N7AxInd'] = False # (-); Axial induction factor at Blade 3, Node 7; +AeroDyn['B3N8AxInd'] = False # (-); Axial induction factor at Blade 3, Node 8; +AeroDyn['B3N9AxInd'] = False # (-); Axial induction factor at Blade 3, Node 9; +AeroDyn['B1N1TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 1; +AeroDyn['B1N2TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 2; +AeroDyn['B1N3TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 3; +AeroDyn['B1N4TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 4; +AeroDyn['B1N5TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 5; +AeroDyn['B1N6TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 6; +AeroDyn['B1N7TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 7; +AeroDyn['B1N8TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 8; +AeroDyn['B1N9TnInd'] = False # (-); Tangential induction factor at Blade 1, Node 9; +AeroDyn['B2N1TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 1; +AeroDyn['B2N2TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 2; +AeroDyn['B2N3TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 3; +AeroDyn['B2N4TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 4; +AeroDyn['B2N5TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 5; +AeroDyn['B2N6TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 6; +AeroDyn['B2N7TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 7; +AeroDyn['B2N8TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 8; +AeroDyn['B2N9TnInd'] = False # (-); Tangential induction factor at Blade 2, Node 9; +AeroDyn['B3N1TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 1; +AeroDyn['B3N2TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 2; +AeroDyn['B3N3TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 3; +AeroDyn['B3N4TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 4; +AeroDyn['B3N5TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 5; +AeroDyn['B3N6TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 6; +AeroDyn['B3N7TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 7; +AeroDyn['B3N8TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 8; +AeroDyn['B3N9TnInd'] = False # (-); Tangential induction factor at Blade 3, Node 9; +AeroDyn['B1N1Alpha'] = False # (deg); Angle of attack at Blade 1, Node 1; +AeroDyn['B1N2Alpha'] = False # (deg); Angle of attack at Blade 1, Node 2; +AeroDyn['B1N3Alpha'] = False # (deg); Angle of attack at Blade 1, Node 3; +AeroDyn['B1N4Alpha'] = False # (deg); Angle of attack at Blade 1, Node 4; +AeroDyn['B1N5Alpha'] = False # (deg); Angle of attack at Blade 1, Node 5; +AeroDyn['B1N6Alpha'] = False # (deg); Angle of attack at Blade 1, Node 6; +AeroDyn['B1N7Alpha'] = False # (deg); Angle of attack at Blade 1, Node 7; +AeroDyn['B1N8Alpha'] = False # (deg); Angle of attack at Blade 1, Node 8; +AeroDyn['B1N9Alpha'] = False # (deg); Angle of attack at Blade 1, Node 9; +AeroDyn['B2N1Alpha'] = False # (deg); Angle of attack at Blade 2, Node 1; +AeroDyn['B2N2Alpha'] = False # (deg); Angle of attack at Blade 2, Node 2; +AeroDyn['B2N3Alpha'] = False # (deg); Angle of attack at Blade 2, Node 3; +AeroDyn['B2N4Alpha'] = False # (deg); Angle of attack at Blade 2, Node 4; +AeroDyn['B2N5Alpha'] = False # (deg); Angle of attack at Blade 2, Node 5; +AeroDyn['B2N6Alpha'] = False # (deg); Angle of attack at Blade 2, Node 6; +AeroDyn['B2N7Alpha'] = False # (deg); Angle of attack at Blade 2, Node 7; +AeroDyn['B2N8Alpha'] = False # (deg); Angle of attack at Blade 2, Node 8; +AeroDyn['B2N9Alpha'] = False # (deg); Angle of attack at Blade 2, Node 9; +AeroDyn['B3N1Alpha'] = False # (deg); Angle of attack at Blade 3, Node 1; +AeroDyn['B3N2Alpha'] = False # (deg); Angle of attack at Blade 3, Node 2; +AeroDyn['B3N3Alpha'] = False # (deg); Angle of attack at Blade 3, Node 3; +AeroDyn['B3N4Alpha'] = False # (deg); Angle of attack at Blade 3, Node 4; +AeroDyn['B3N5Alpha'] = False # (deg); Angle of attack at Blade 3, Node 5; +AeroDyn['B3N6Alpha'] = False # (deg); Angle of attack at Blade 3, Node 6; +AeroDyn['B3N7Alpha'] = False # (deg); Angle of attack at Blade 3, Node 7; +AeroDyn['B3N8Alpha'] = False # (deg); Angle of attack at Blade 3, Node 8; +AeroDyn['B3N9Alpha'] = False # (deg); Angle of attack at Blade 3, Node 9; +AeroDyn['B1N1Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 1; +AeroDyn['B1N2Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 2; +AeroDyn['B1N3Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 3; +AeroDyn['B1N4Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 4; +AeroDyn['B1N5Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 5; +AeroDyn['B1N6Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 6; +AeroDyn['B1N7Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 7; +AeroDyn['B1N8Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 8; +AeroDyn['B1N9Theta'] = False # (deg); Pitch+Twist angle at Blade 1, Node 9; +AeroDyn['B2N1Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 1; +AeroDyn['B2N2Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 2; +AeroDyn['B2N3Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 3; +AeroDyn['B2N4Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 4; +AeroDyn['B2N5Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 5; +AeroDyn['B2N6Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 6; +AeroDyn['B2N7Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 7; +AeroDyn['B2N8Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 8; +AeroDyn['B2N9Theta'] = False # (deg); Pitch+Twist angle at Blade 2, Node 9; +AeroDyn['B3N1Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 1; +AeroDyn['B3N2Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 2; +AeroDyn['B3N3Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 3; +AeroDyn['B3N4Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 4; +AeroDyn['B3N5Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 5; +AeroDyn['B3N6Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 6; +AeroDyn['B3N7Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 7; +AeroDyn['B3N8Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 8; +AeroDyn['B3N9Theta'] = False # (deg); Pitch+Twist angle at Blade 3, Node 9; +AeroDyn['B1N1Phi'] = False # (deg); Inflow angle at Blade 1, Node 1; +AeroDyn['B1N2Phi'] = False # (deg); Inflow angle at Blade 1, Node 2; +AeroDyn['B1N3Phi'] = False # (deg); Inflow angle at Blade 1, Node 3; +AeroDyn['B1N4Phi'] = False # (deg); Inflow angle at Blade 1, Node 4; +AeroDyn['B1N5Phi'] = False # (deg); Inflow angle at Blade 1, Node 5; +AeroDyn['B1N6Phi'] = False # (deg); Inflow angle at Blade 1, Node 6; +AeroDyn['B1N7Phi'] = False # (deg); Inflow angle at Blade 1, Node 7; +AeroDyn['B1N8Phi'] = False # (deg); Inflow angle at Blade 1, Node 8; +AeroDyn['B1N9Phi'] = False # (deg); Inflow angle at Blade 1, Node 9; +AeroDyn['B2N1Phi'] = False # (deg); Inflow angle at Blade 2, Node 1; +AeroDyn['B2N2Phi'] = False # (deg); Inflow angle at Blade 2, Node 2; +AeroDyn['B2N3Phi'] = False # (deg); Inflow angle at Blade 2, Node 3; +AeroDyn['B2N4Phi'] = False # (deg); Inflow angle at Blade 2, Node 4; +AeroDyn['B2N5Phi'] = False # (deg); Inflow angle at Blade 2, Node 5; +AeroDyn['B2N6Phi'] = False # (deg); Inflow angle at Blade 2, Node 6; +AeroDyn['B2N7Phi'] = False # (deg); Inflow angle at Blade 2, Node 7; +AeroDyn['B2N8Phi'] = False # (deg); Inflow angle at Blade 2, Node 8; +AeroDyn['B2N9Phi'] = False # (deg); Inflow angle at Blade 2, Node 9; +AeroDyn['B3N1Phi'] = False # (deg); Inflow angle at Blade 3, Node 1; +AeroDyn['B3N2Phi'] = False # (deg); Inflow angle at Blade 3, Node 2; +AeroDyn['B3N3Phi'] = False # (deg); Inflow angle at Blade 3, Node 3; +AeroDyn['B3N4Phi'] = False # (deg); Inflow angle at Blade 3, Node 4; +AeroDyn['B3N5Phi'] = False # (deg); Inflow angle at Blade 3, Node 5; +AeroDyn['B3N6Phi'] = False # (deg); Inflow angle at Blade 3, Node 6; +AeroDyn['B3N7Phi'] = False # (deg); Inflow angle at Blade 3, Node 7; +AeroDyn['B3N8Phi'] = False # (deg); Inflow angle at Blade 3, Node 8; +AeroDyn['B3N9Phi'] = False # (deg); Inflow angle at Blade 3, Node 9; +AeroDyn['B1N1Curve'] = False # (deg); Curvature angle at Blade 1, Node 1; +AeroDyn['B1N2Curve'] = False # (deg); Curvature angle at Blade 1, Node 2; +AeroDyn['B1N3Curve'] = False # (deg); Curvature angle at Blade 1, Node 3; +AeroDyn['B1N4Curve'] = False # (deg); Curvature angle at Blade 1, Node 4; +AeroDyn['B1N5Curve'] = False # (deg); Curvature angle at Blade 1, Node 5; +AeroDyn['B1N6Curve'] = False # (deg); Curvature angle at Blade 1, Node 6; +AeroDyn['B1N7Curve'] = False # (deg); Curvature angle at Blade 1, Node 7; +AeroDyn['B1N8Curve'] = False # (deg); Curvature angle at Blade 1, Node 8; +AeroDyn['B1N9Curve'] = False # (deg); Curvature angle at Blade 1, Node 9; +AeroDyn['B2N1Curve'] = False # (deg); Curvature angle at Blade 2, Node 1; +AeroDyn['B2N2Curve'] = False # (deg); Curvature angle at Blade 2, Node 2; +AeroDyn['B2N3Curve'] = False # (deg); Curvature angle at Blade 2, Node 3; +AeroDyn['B2N4Curve'] = False # (deg); Curvature angle at Blade 2, Node 4; +AeroDyn['B2N5Curve'] = False # (deg); Curvature angle at Blade 2, Node 5; +AeroDyn['B2N6Curve'] = False # (deg); Curvature angle at Blade 2, Node 6; +AeroDyn['B2N7Curve'] = False # (deg); Curvature angle at Blade 2, Node 7; +AeroDyn['B2N8Curve'] = False # (deg); Curvature angle at Blade 2, Node 8; +AeroDyn['B2N9Curve'] = False # (deg); Curvature angle at Blade 2, Node 9; +AeroDyn['B3N1Curve'] = False # (deg); Curvature angle at Blade 3, Node 1; +AeroDyn['B3N2Curve'] = False # (deg); Curvature angle at Blade 3, Node 2; +AeroDyn['B3N3Curve'] = False # (deg); Curvature angle at Blade 3, Node 3; +AeroDyn['B3N4Curve'] = False # (deg); Curvature angle at Blade 3, Node 4; +AeroDyn['B3N5Curve'] = False # (deg); Curvature angle at Blade 3, Node 5; +AeroDyn['B3N6Curve'] = False # (deg); Curvature angle at Blade 3, Node 6; +AeroDyn['B3N7Curve'] = False # (deg); Curvature angle at Blade 3, Node 7; +AeroDyn['B3N8Curve'] = False # (deg); Curvature angle at Blade 3, Node 8; +AeroDyn['B3N9Curve'] = False # (deg); Curvature angle at Blade 3, Node 9; +AeroDyn['B1N1Cl'] = False # (-); Lift force coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cl'] = False # (-); Lift force coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cl'] = False # (-); Lift force coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cl'] = False # (-); Lift force coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cl'] = False # (-); Lift force coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cl'] = False # (-); Lift force coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cl'] = False # (-); Lift force coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cl'] = False # (-); Lift force coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cl'] = False # (-); Lift force coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cl'] = False # (-); Lift force coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cl'] = False # (-); Lift force coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cl'] = False # (-); Lift force coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cl'] = False # (-); Lift force coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cl'] = False # (-); Lift force coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cl'] = False # (-); Lift force coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cl'] = False # (-); Lift force coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cl'] = False # (-); Lift force coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cl'] = False # (-); Lift force coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cl'] = False # (-); Lift force coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cl'] = False # (-); Lift force coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cl'] = False # (-); Lift force coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cl'] = False # (-); Lift force coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cl'] = False # (-); Lift force coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cl'] = False # (-); Lift force coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cl'] = False # (-); Lift force coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cl'] = False # (-); Lift force coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cl'] = False # (-); Lift force coefficient at Blade 3, Node 9; +AeroDyn['B1N1Cd'] = False # (-); Drag force coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cd'] = False # (-); Drag force coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cd'] = False # (-); Drag force coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cd'] = False # (-); Drag force coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cd'] = False # (-); Drag force coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cd'] = False # (-); Drag force coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cd'] = False # (-); Drag force coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cd'] = False # (-); Drag force coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cd'] = False # (-); Drag force coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cd'] = False # (-); Drag force coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cd'] = False # (-); Drag force coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cd'] = False # (-); Drag force coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cd'] = False # (-); Drag force coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cd'] = False # (-); Drag force coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cd'] = False # (-); Drag force coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cd'] = False # (-); Drag force coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cd'] = False # (-); Drag force coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cd'] = False # (-); Drag force coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cd'] = False # (-); Drag force coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cd'] = False # (-); Drag force coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cd'] = False # (-); Drag force coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cd'] = False # (-); Drag force coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cd'] = False # (-); Drag force coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cd'] = False # (-); Drag force coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cd'] = False # (-); Drag force coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cd'] = False # (-); Drag force coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cd'] = False # (-); Drag force coefficient at Blade 3, Node 9; +AeroDyn['B1N1Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cm'] = False # (-); Pitching moment coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cm'] = False # (-); Pitching moment coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cm'] = False # (-); Pitching moment coefficient at Blade 3, Node 9; +AeroDyn['B1N1Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cx'] = False # (-); Normal force (to plane) coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cx'] = False # (-); Normal force (to plane) coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cx'] = False # (-); Normal force (to plane) coefficient at Blade 3, Node 9; +AeroDyn['B1N1Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cy'] = False # (-); Tangential force (to plane) coefficient at Blade 3, Node 9; +AeroDyn['B1N1Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 1; +AeroDyn['B1N2Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 2; +AeroDyn['B1N3Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 3; +AeroDyn['B1N4Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 4; +AeroDyn['B1N5Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 5; +AeroDyn['B1N6Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 6; +AeroDyn['B1N7Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 7; +AeroDyn['B1N8Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 8; +AeroDyn['B1N9Cn'] = False # (-); Normal force (to chord) coefficient at Blade 1, Node 9; +AeroDyn['B2N1Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 1; +AeroDyn['B2N2Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 2; +AeroDyn['B2N3Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 3; +AeroDyn['B2N4Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 4; +AeroDyn['B2N5Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 5; +AeroDyn['B2N6Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 6; +AeroDyn['B2N7Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 7; +AeroDyn['B2N8Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 8; +AeroDyn['B2N9Cn'] = False # (-); Normal force (to chord) coefficient at Blade 2, Node 9; +AeroDyn['B3N1Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 1; +AeroDyn['B3N2Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 2; +AeroDyn['B3N3Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 3; +AeroDyn['B3N4Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 4; +AeroDyn['B3N5Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 5; +AeroDyn['B3N6Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 6; +AeroDyn['B3N7Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 7; +AeroDyn['B3N8Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 8; +AeroDyn['B3N9Cn'] = False # (-); Normal force (to chord) coefficient at Blade 3, Node 9; +AeroDyn['B1N1Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 1; +AeroDyn['B1N2Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 2; +AeroDyn['B1N3Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 3; +AeroDyn['B1N4Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 4; +AeroDyn['B1N5Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 5; +AeroDyn['B1N6Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 6; +AeroDyn['B1N7Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 7; +AeroDyn['B1N8Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 8; +AeroDyn['B1N9Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 1, Node 9; +AeroDyn['B2N1Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 1; +AeroDyn['B2N2Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 2; +AeroDyn['B2N3Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 3; +AeroDyn['B2N4Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 4; +AeroDyn['B2N5Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 5; +AeroDyn['B2N6Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 6; +AeroDyn['B2N7Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 7; +AeroDyn['B2N8Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 8; +AeroDyn['B2N9Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 2, Node 9; +AeroDyn['B3N1Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 1; +AeroDyn['B3N2Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 2; +AeroDyn['B3N3Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 3; +AeroDyn['B3N4Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 4; +AeroDyn['B3N5Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 5; +AeroDyn['B3N6Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 6; +AeroDyn['B3N7Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 7; +AeroDyn['B3N8Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 8; +AeroDyn['B3N9Ct'] = False # (-); Tangential force (to chord) coefficient at Blade 3, Node 9; +AeroDyn['B1N1Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 1; +AeroDyn['B1N2Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 2; +AeroDyn['B1N3Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 3; +AeroDyn['B1N4Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 4; +AeroDyn['B1N5Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 5; +AeroDyn['B1N6Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 6; +AeroDyn['B1N7Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 7; +AeroDyn['B1N8Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 8; +AeroDyn['B1N9Fl'] = False # (N/m); Lift force per unit length at Blade 1, Node 9; +AeroDyn['B2N1Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 1; +AeroDyn['B2N2Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 2; +AeroDyn['B2N3Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 3; +AeroDyn['B2N4Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 4; +AeroDyn['B2N5Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 5; +AeroDyn['B2N6Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 6; +AeroDyn['B2N7Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 7; +AeroDyn['B2N8Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 8; +AeroDyn['B2N9Fl'] = False # (N/m); Lift force per unit length at Blade 2, Node 9; +AeroDyn['B3N1Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 1; +AeroDyn['B3N2Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 2; +AeroDyn['B3N3Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 3; +AeroDyn['B3N4Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 4; +AeroDyn['B3N5Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 5; +AeroDyn['B3N6Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 6; +AeroDyn['B3N7Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 7; +AeroDyn['B3N8Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 8; +AeroDyn['B3N9Fl'] = False # (N/m); Lift force per unit length at Blade 3, Node 9; +AeroDyn['B1N1Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 1; +AeroDyn['B1N2Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 2; +AeroDyn['B1N3Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 3; +AeroDyn['B1N4Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 4; +AeroDyn['B1N5Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 5; +AeroDyn['B1N6Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 6; +AeroDyn['B1N7Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 7; +AeroDyn['B1N8Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 8; +AeroDyn['B1N9Fd'] = False # (N/m); Drag force per unit length at Blade 1, Node 9; +AeroDyn['B2N1Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 1; +AeroDyn['B2N2Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 2; +AeroDyn['B2N3Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 3; +AeroDyn['B2N4Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 4; +AeroDyn['B2N5Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 5; +AeroDyn['B2N6Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 6; +AeroDyn['B2N7Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 7; +AeroDyn['B2N8Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 8; +AeroDyn['B2N9Fd'] = False # (N/m); Drag force per unit length at Blade 2, Node 9; +AeroDyn['B3N1Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 1; +AeroDyn['B3N2Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 2; +AeroDyn['B3N3Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 3; +AeroDyn['B3N4Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 4; +AeroDyn['B3N5Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 5; +AeroDyn['B3N6Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 6; +AeroDyn['B3N7Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 7; +AeroDyn['B3N8Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 8; +AeroDyn['B3N9Fd'] = False # (N/m); Drag force per unit length at Blade 3, Node 9; +AeroDyn['B1N1Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 1; +AeroDyn['B1N2Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 2; +AeroDyn['B1N3Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 3; +AeroDyn['B1N4Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 4; +AeroDyn['B1N5Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 5; +AeroDyn['B1N6Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 6; +AeroDyn['B1N7Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 7; +AeroDyn['B1N8Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 8; +AeroDyn['B1N9Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 1, Node 9; +AeroDyn['B2N1Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 1; +AeroDyn['B2N2Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 2; +AeroDyn['B2N3Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 3; +AeroDyn['B2N4Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 4; +AeroDyn['B2N5Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 5; +AeroDyn['B2N6Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 6; +AeroDyn['B2N7Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 7; +AeroDyn['B2N8Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 8; +AeroDyn['B2N9Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 2, Node 9; +AeroDyn['B3N1Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 1; +AeroDyn['B3N2Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 2; +AeroDyn['B3N3Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 3; +AeroDyn['B3N4Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 4; +AeroDyn['B3N5Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 5; +AeroDyn['B3N6Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 6; +AeroDyn['B3N7Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 7; +AeroDyn['B3N8Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 8; +AeroDyn['B3N9Mm'] = False # (N-m/m); Pitching moment per unit length at Blade 3, Node 9; +AeroDyn['B1N1Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 1; +AeroDyn['B1N2Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 2; +AeroDyn['B1N3Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 3; +AeroDyn['B1N4Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 4; +AeroDyn['B1N5Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 5; +AeroDyn['B1N6Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 6; +AeroDyn['B1N7Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 7; +AeroDyn['B1N8Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 8; +AeroDyn['B1N9Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 1, Node 9; +AeroDyn['B2N1Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 1; +AeroDyn['B2N2Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 2; +AeroDyn['B2N3Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 3; +AeroDyn['B2N4Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 4; +AeroDyn['B2N5Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 5; +AeroDyn['B2N6Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 6; +AeroDyn['B2N7Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 7; +AeroDyn['B2N8Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 8; +AeroDyn['B2N9Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 2, Node 9; +AeroDyn['B3N1Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 1; +AeroDyn['B3N2Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 2; +AeroDyn['B3N3Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 3; +AeroDyn['B3N4Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 4; +AeroDyn['B3N5Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 5; +AeroDyn['B3N6Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 6; +AeroDyn['B3N7Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 7; +AeroDyn['B3N8Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 8; +AeroDyn['B3N9Fx'] = False # (N/m); Normal force (to plane) per unit length at Blade 3, Node 9; +AeroDyn['B1N1Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 1; +AeroDyn['B1N2Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 2; +AeroDyn['B1N3Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 3; +AeroDyn['B1N4Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 4; +AeroDyn['B1N5Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 5; +AeroDyn['B1N6Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 6; +AeroDyn['B1N7Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 7; +AeroDyn['B1N8Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 8; +AeroDyn['B1N9Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 1, Node 9; +AeroDyn['B2N1Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 1; +AeroDyn['B2N2Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 2; +AeroDyn['B2N3Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 3; +AeroDyn['B2N4Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 4; +AeroDyn['B2N5Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 5; +AeroDyn['B2N6Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 6; +AeroDyn['B2N7Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 7; +AeroDyn['B2N8Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 8; +AeroDyn['B2N9Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 2, Node 9; +AeroDyn['B3N1Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 1; +AeroDyn['B3N2Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 2; +AeroDyn['B3N3Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 3; +AeroDyn['B3N4Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 4; +AeroDyn['B3N5Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 5; +AeroDyn['B3N6Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 6; +AeroDyn['B3N7Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 7; +AeroDyn['B3N8Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 8; +AeroDyn['B3N9Fy'] = False # (N/m); Tangential force (to plane) per unit length at Blade 3, Node 9; +AeroDyn['B1N1Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 1; +AeroDyn['B1N2Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 2; +AeroDyn['B1N3Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 3; +AeroDyn['B1N4Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 4; +AeroDyn['B1N5Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 5; +AeroDyn['B1N6Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 6; +AeroDyn['B1N7Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 7; +AeroDyn['B1N8Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 8; +AeroDyn['B1N9Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 1, Node 9; +AeroDyn['B2N1Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 1; +AeroDyn['B2N2Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 2; +AeroDyn['B2N3Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 3; +AeroDyn['B2N4Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 4; +AeroDyn['B2N5Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 5; +AeroDyn['B2N6Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 6; +AeroDyn['B2N7Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 7; +AeroDyn['B2N8Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 8; +AeroDyn['B2N9Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 2, Node 9; +AeroDyn['B3N1Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 1; +AeroDyn['B3N2Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 2; +AeroDyn['B3N3Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 3; +AeroDyn['B3N4Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 4; +AeroDyn['B3N5Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 5; +AeroDyn['B3N6Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 6; +AeroDyn['B3N7Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 7; +AeroDyn['B3N8Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 8; +AeroDyn['B3N9Fn'] = False # (N/m); Normal force (to chord) per unit length at Blade 3, Node 9; +AeroDyn['B1N1Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 1; +AeroDyn['B1N2Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 2; +AeroDyn['B1N3Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 3; +AeroDyn['B1N4Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 4; +AeroDyn['B1N5Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 5; +AeroDyn['B1N6Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 6; +AeroDyn['B1N7Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 7; +AeroDyn['B1N8Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 8; +AeroDyn['B1N9Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 1, Node 9; +AeroDyn['B2N1Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 1; +AeroDyn['B2N2Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 2; +AeroDyn['B2N3Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 3; +AeroDyn['B2N4Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 4; +AeroDyn['B2N5Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 5; +AeroDyn['B2N6Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 6; +AeroDyn['B2N7Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 7; +AeroDyn['B2N8Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 8; +AeroDyn['B2N9Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 2, Node 9; +AeroDyn['B3N1Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 1; +AeroDyn['B3N2Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 2; +AeroDyn['B3N3Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 3; +AeroDyn['B3N4Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 4; +AeroDyn['B3N5Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 5; +AeroDyn['B3N6Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 6; +AeroDyn['B3N7Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 7; +AeroDyn['B3N8Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 8; +AeroDyn['B3N9Ft'] = False # (N/m); Tangential force (to chord) per unit length at Blade 3, Node 9; +AeroDyn['B1N1Clrnc'] = False # (m); Tower clearance at Blade 1, Node 1 (based on the absolute distance to the nearest point in the tower from B1N1 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N1 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N2Clrnc'] = False # (m); Tower clearance at Blade 1, Node 2 (based on the absolute distance to the nearest point in the tower from B1N2 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N2 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N3Clrnc'] = False # (m); Tower clearance at Blade 1, Node 3 (based on the absolute distance to the nearest point in the tower from B1N3 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N3 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N4Clrnc'] = False # (m); Tower clearance at Blade 1, Node 4 (based on the absolute distance to the nearest point in the tower from B1N4 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N4 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N5Clrnc'] = False # (m); Tower clearance at Blade 1, Node 5 (based on the absolute distance to the nearest point in the tower from B1N5 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N5 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N6Clrnc'] = False # (m); Tower clearance at Blade 1, Node 6 (based on the absolute distance to the nearest point in the tower from B1N6 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N6 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N7Clrnc'] = False # (m); Tower clearance at Blade 1, Node 7 (based on the absolute distance to the nearest point in the tower from B1N7 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N7 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N8Clrnc'] = False # (m); Tower clearance at Blade 1, Node 8 (based on the absolute distance to the nearest point in the tower from B1N8 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N8 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N9Clrnc'] = False # (m); Tower clearance at Blade 1, Node 9 (based on the absolute distance to the nearest point in the tower from B1N9 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B1N9 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N1Clrnc'] = False # (m); Tower clearance at Blade 2, Node 1 (based on the absolute distance to the nearest point in the tower from B2N1 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N1 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N2Clrnc'] = False # (m); Tower clearance at Blade 2, Node 2 (based on the absolute distance to the nearest point in the tower from B2N2 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N2 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N3Clrnc'] = False # (m); Tower clearance at Blade 2, Node 3 (based on the absolute distance to the nearest point in the tower from B2N3 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N3 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N4Clrnc'] = False # (m); Tower clearance at Blade 2, Node 4 (based on the absolute distance to the nearest point in the tower from B2N4 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N4 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N5Clrnc'] = False # (m); Tower clearance at Blade 2, Node 5 (based on the absolute distance to the nearest point in the tower from B2N5 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N5 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N6Clrnc'] = False # (m); Tower clearance at Blade 2, Node 6 (based on the absolute distance to the nearest point in the tower from B2N6 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N6 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N7Clrnc'] = False # (m); Tower clearance at Blade 2, Node 7 (based on the absolute distance to the nearest point in the tower from B2N7 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N7 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N8Clrnc'] = False # (m); Tower clearance at Blade 2, Node 8 (based on the absolute distance to the nearest point in the tower from B2N8 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N8 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B2N9Clrnc'] = False # (m); Tower clearance at Blade 2, Node 9 (based on the absolute distance to the nearest point in the tower from B2N9 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B2N9 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N1Clrnc'] = False # (m); Tower clearance at Blade 3, Node 1 (based on the absolute distance to the nearest point in the tower from B3N1 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N1 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N2Clrnc'] = False # (m); Tower clearance at Blade 3, Node 2 (based on the absolute distance to the nearest point in the tower from B3N2 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N2 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N3Clrnc'] = False # (m); Tower clearance at Blade 3, Node 3 (based on the absolute distance to the nearest point in the tower from B3N3 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N3 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N4Clrnc'] = False # (m); Tower clearance at Blade 3, Node 4 (based on the absolute distance to the nearest point in the tower from B3N4 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N4 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N5Clrnc'] = False # (m); Tower clearance at Blade 3, Node 5 (based on the absolute distance to the nearest point in the tower from B3N5 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N5 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N6Clrnc'] = False # (m); Tower clearance at Blade 3, Node 6 (based on the absolute distance to the nearest point in the tower from B3N6 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N6 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N7Clrnc'] = False # (m); Tower clearance at Blade 3, Node 7 (based on the absolute distance to the nearest point in the tower from B3N7 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N7 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N8Clrnc'] = False # (m); Tower clearance at Blade 3, Node 8 (based on the absolute distance to the nearest point in the tower from B3N8 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N8 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B3N9Clrnc'] = False # (m); Tower clearance at Blade 3, Node 9 (based on the absolute distance to the nearest point in the tower from B3N9 minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when B3N9 is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn['B1N1Cpmin'] = False # (-); Pressure coefficient blade 1 node 1; +AeroDyn['B1N2Cpmin'] = False # (-); Pressure coefficient blade 1 node 2; +AeroDyn['B1N3Cpmin'] = False # (-); Pressure coefficient blade 1 node 3; +AeroDyn['B1N4Cpmin'] = False # (-); Pressure coefficient blade 1 node 4; +AeroDyn['B1N5Cpmin'] = False # (-); Pressure coefficient blade 1 node 5; +AeroDyn['B1N6Cpmin'] = False # (-); Pressure coefficient blade 1 node 6; +AeroDyn['B1N7Cpmin'] = False # (-); Pressure coefficient blade 1 node 7; +AeroDyn['B1N8Cpmin'] = False # (-); Pressure coefficient blade 1 node 8; +AeroDyn['B1N9Cpmin'] = False # (-); Pressure coefficient blade 1 node 9; +AeroDyn['B2N1Cpmin'] = False # (-); Pressure coefficient blade 2 node 1; +AeroDyn['B2N2Cpmin'] = False # (-); Pressure coefficient blade 2 node 2; +AeroDyn['B2N3Cpmin'] = False # (-); Pressure coefficient blade 2 node 3; +AeroDyn['B2N4Cpmin'] = False # (-); Pressure coefficient blade 2 node 4; +AeroDyn['B2N5Cpmin'] = False # (-); Pressure coefficient blade 2 node 5; +AeroDyn['B2N6Cpmin'] = False # (-); Pressure coefficient blade 2 node 6; +AeroDyn['B2N7Cpmin'] = False # (-); Pressure coefficient blade 2 node 7; +AeroDyn['B2N8Cpmin'] = False # (-); Pressure coefficient blade 2 node 8; +AeroDyn['B2N9Cpmin'] = False # (-); Pressure coefficient blade 2 node 9; +AeroDyn['B3N1Cpmin'] = False # (-); Pressure coefficient blade 3 node 1; +AeroDyn['B3N2Cpmin'] = False # (-); Pressure coefficient blade 3 node 2; +AeroDyn['B3N3Cpmin'] = False # (-); Pressure coefficient blade 3 node 3; +AeroDyn['B3N4Cpmin'] = False # (-); Pressure coefficient blade 3 node 4; +AeroDyn['B3N5Cpmin'] = False # (-); Pressure coefficient blade 3 node 5; +AeroDyn['B3N6Cpmin'] = False # (-); Pressure coefficient blade 3 node 6; +AeroDyn['B3N7Cpmin'] = False # (-); Pressure coefficient blade 3 node 7; +AeroDyn['B3N8Cpmin'] = False # (-); Pressure coefficient blade 3 node 8; +AeroDyn['B3N9Cpmin'] = False # (-); Pressure coefficient blade 3 node 9; +AeroDyn['B1N1SigCr'] = False # (-); Critical cavitation number blade 1 node 1; +AeroDyn['B1N2SigCr'] = False # (-); Critical cavitation number blade 1 node 2; +AeroDyn['B1N3SigCr'] = False # (-); Critical cavitation number blade 1 node 3; +AeroDyn['B1N4SigCr'] = False # (-); Critical cavitation number blade 1 node 4; +AeroDyn['B1N5SigCr'] = False # (-); Critical cavitation number blade 1 node 5; +AeroDyn['B1N6SigCr'] = False # (-); Critical cavitation number blade 1 node 6; +AeroDyn['B1N7SigCr'] = False # (-); Critical cavitation number blade 1 node 7; +AeroDyn['B1N8SigCr'] = False # (-); Critical cavitation number blade 1 node 8; +AeroDyn['B1N9SigCr'] = False # (-); Critical cavitation number blade 1 node 9; +AeroDyn['B2N1SigCr'] = False # (-); Critical cavitation number blade 2 node 1; +AeroDyn['B2N2SigCr'] = False # (-); Critical cavitation number blade 2 node 2; +AeroDyn['B2N3SigCr'] = False # (-); Critical cavitation number blade 2 node 3; +AeroDyn['B2N4SigCr'] = False # (-); Critical cavitation number blade 2 node 4; +AeroDyn['B2N5SigCr'] = False # (-); Critical cavitation number blade 2 node 5; +AeroDyn['B2N6SigCr'] = False # (-); Critical cavitation number blade 2 node 6; +AeroDyn['B2N7SigCr'] = False # (-); Critical cavitation number blade 2 node 7; +AeroDyn['B2N8SigCr'] = False # (-); Critical cavitation number blade 2 node 8; +AeroDyn['B2N9SigCr'] = False # (-); Critical cavitation number blade 2 node 9; +AeroDyn['B3N1SigCr'] = False # (-); Critical cavitation number blade 3 node 1; +AeroDyn['B3N2SigCr'] = False # (-); Critical cavitation number blade 3 node 2; +AeroDyn['B3N3SigCr'] = False # (-); Critical cavitation number blade 3 node 3; +AeroDyn['B3N4SigCr'] = False # (-); Critical cavitation number blade 3 node 4; +AeroDyn['B3N5SigCr'] = False # (-); Critical cavitation number blade 3 node 5; +AeroDyn['B3N6SigCr'] = False # (-); Critical cavitation number blade 3 node 6; +AeroDyn['B3N7SigCr'] = False # (-); Critical cavitation number blade 3 node 7; +AeroDyn['B3N8SigCr'] = False # (-); Critical cavitation number blade 3 node 8; +AeroDyn['B3N9SigCr'] = False # (-); Critical cavitation number blade 3 node 9; +AeroDyn['B1N1SgCav'] = False # (-); Cavitation number blade 1 node 1; +AeroDyn['B1N2SgCav'] = False # (-); Cavitation number blade 1 node 2; +AeroDyn['B1N3SgCav'] = False # (-); Cavitation number blade 1 node 3; +AeroDyn['B1N4SgCav'] = False # (-); Cavitation number blade 1 node 4; +AeroDyn['B1N5SgCav'] = False # (-); Cavitation number blade 1 node 5; +AeroDyn['B1N6SgCav'] = False # (-); Cavitation number blade 1 node 6; +AeroDyn['B1N7SgCav'] = False # (-); Cavitation number blade 1 node 7; +AeroDyn['B1N8SgCav'] = False # (-); Cavitation number blade 1 node 8; +AeroDyn['B1N9SgCav'] = False # (-); Cavitation number blade 1 node 9; +AeroDyn['B2N1SgCav'] = False # (-); Cavitation number blade 2 node 1; +AeroDyn['B2N2SgCav'] = False # (-); Cavitation number blade 2 node 2; +AeroDyn['B2N3SgCav'] = False # (-); Cavitation number blade 2 node 3; +AeroDyn['B2N4SgCav'] = False # (-); Cavitation number blade 2 node 4; +AeroDyn['B2N5SgCav'] = False # (-); Cavitation number blade 2 node 5; +AeroDyn['B2N6SgCav'] = False # (-); Cavitation number blade 2 node 6; +AeroDyn['B2N7SgCav'] = False # (-); Cavitation number blade 2 node 7; +AeroDyn['B2N8SgCav'] = False # (-); Cavitation number blade 2 node 8; +AeroDyn['B2N9SgCav'] = False # (-); Cavitation number blade 2 node 9; +AeroDyn['B3N1SgCav'] = False # (-); Cavitation number blade 3 node 1; +AeroDyn['B3N2SgCav'] = False # (-); Cavitation number blade 3 node 2; +AeroDyn['B3N3SgCav'] = False # (-); Cavitation number blade 3 node 3; +AeroDyn['B3N4SgCav'] = False # (-); Cavitation number blade 3 node 4; +AeroDyn['B3N5SgCav'] = False # (-); Cavitation number blade 3 node 5; +AeroDyn['B3N6SgCav'] = False # (-); Cavitation number blade 3 node 6; +AeroDyn['B3N7SgCav'] = False # (-); Cavitation number blade 3 node 7; +AeroDyn['B3N8SgCav'] = False # (-); Cavitation number blade 3 node 8; +AeroDyn['B3N9SgCav'] = False # (-); Cavitation number blade 3 node 9; +AeroDyn['B1N1Gam'] = False # (m^2/s); Circulation on blade 1 at node 1; +AeroDyn['B1N2Gam'] = False # (m^2/s); Circulation on blade 1 at node 2; +AeroDyn['B1N3Gam'] = False # (m^2/s); Circulation on blade 1 at node 3; +AeroDyn['B1N4Gam'] = False # (m^2/s); Circulation on blade 1 at node 4; +AeroDyn['B1N5Gam'] = False # (m^2/s); Circulation on blade 1 at node 5; +AeroDyn['B1N6Gam'] = False # (m^2/s); Circulation on blade 1 at node 6; +AeroDyn['B1N7Gam'] = False # (m^2/s); Circulation on blade 1 at node 7; +AeroDyn['B1N8Gam'] = False # (m^2/s); Circulation on blade 1 at node 8; +AeroDyn['B1N9Gam'] = False # (m^2/s); Circulation on blade 1 at node 9; +AeroDyn['B2N1Gam'] = False # (m^2/s); Circulation on blade 2 at node 1; +AeroDyn['B2N2Gam'] = False # (m^2/s); Circulation on blade 2 at node 2; +AeroDyn['B2N3Gam'] = False # (m^2/s); Circulation on blade 2 at node 3; +AeroDyn['B2N4Gam'] = False # (m^2/s); Circulation on blade 2 at node 4; +AeroDyn['B2N5Gam'] = False # (m^2/s); Circulation on blade 2 at node 5; +AeroDyn['B2N6Gam'] = False # (m^2/s); Circulation on blade 2 at node 6; +AeroDyn['B2N7Gam'] = False # (m^2/s); Circulation on blade 2 at node 7; +AeroDyn['B2N8Gam'] = False # (m^2/s); Circulation on blade 2 at node 8; +AeroDyn['B2N9Gam'] = False # (m^2/s); Circulation on blade 2 at node 9; +AeroDyn['B3N1Gam'] = False # (m^2/s); Circulation on blade 3 at node 1; +AeroDyn['B3N2Gam'] = False # (m^2/s); Circulation on blade 3 at node 2; +AeroDyn['B3N3Gam'] = False # (m^2/s); Circulation on blade 3 at node 3; +AeroDyn['B3N4Gam'] = False # (m^2/s); Circulation on blade 3 at node 4; +AeroDyn['B3N5Gam'] = False # (m^2/s); Circulation on blade 3 at node 5; +AeroDyn['B3N6Gam'] = False # (m^2/s); Circulation on blade 3 at node 6; +AeroDyn['B3N7Gam'] = False # (m^2/s); Circulation on blade 3 at node 7; +AeroDyn['B3N8Gam'] = False # (m^2/s); Circulation on blade 3 at node 8; +AeroDyn['B3N9Gam'] = False # (m^2/s); Circulation on blade 3 at node 9; +AeroDyn['B1N1Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 1; +AeroDyn['B1N2Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 2; +AeroDyn['B1N3Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 3; +AeroDyn['B1N4Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 4; +AeroDyn['B1N5Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 5; +AeroDyn['B1N6Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 6; +AeroDyn['B1N7Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 7; +AeroDyn['B1N8Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 8; +AeroDyn['B1N9Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 1 node 9; +AeroDyn['B2N1Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 1; +AeroDyn['B2N2Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 2; +AeroDyn['B2N3Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 3; +AeroDyn['B2N4Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 4; +AeroDyn['B2N5Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 5; +AeroDyn['B2N6Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 6; +AeroDyn['B2N7Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 7; +AeroDyn['B2N8Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 8; +AeroDyn['B2N9Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 2 node 9; +AeroDyn['B3N1Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 1; +AeroDyn['B3N2Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 2; +AeroDyn['B3N3Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 3; +AeroDyn['B3N4Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 4; +AeroDyn['B3N5Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 5; +AeroDyn['B3N6Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 6; +AeroDyn['B3N7Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 7; +AeroDyn['B3N8Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 8; +AeroDyn['B3N9Fbn'] = False # (N/m); Buoyant force normal to chord per unit length at blade 3 node 9; +AeroDyn['B1N1Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 1; +AeroDyn['B1N2Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 2; +AeroDyn['B1N3Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 3; +AeroDyn['B1N4Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 4; +AeroDyn['B1N5Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 5; +AeroDyn['B1N6Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 6; +AeroDyn['B1N7Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 7; +AeroDyn['B1N8Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 8; +AeroDyn['B1N9Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 1 node 9; +AeroDyn['B2N1Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 1; +AeroDyn['B2N2Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 2; +AeroDyn['B2N3Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 3; +AeroDyn['B2N4Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 4; +AeroDyn['B2N5Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 5; +AeroDyn['B2N6Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 6; +AeroDyn['B2N7Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 7; +AeroDyn['B2N8Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 8; +AeroDyn['B2N9Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 2 node 9; +AeroDyn['B3N1Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 1; +AeroDyn['B3N2Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 2; +AeroDyn['B3N3Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 3; +AeroDyn['B3N4Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 4; +AeroDyn['B3N5Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 5; +AeroDyn['B3N6Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 6; +AeroDyn['B3N7Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 7; +AeroDyn['B3N8Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 8; +AeroDyn['B3N9Fbt'] = False # (N/m); Buoyant force tangential to chord per unit length at blade 3 node 9; +AeroDyn['B1N1Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 1; +AeroDyn['B1N2Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 2; +AeroDyn['B1N3Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 3; +AeroDyn['B1N4Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 4; +AeroDyn['B1N5Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 5; +AeroDyn['B1N6Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 6; +AeroDyn['B1N7Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 7; +AeroDyn['B1N8Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 8; +AeroDyn['B1N9Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 1 node 9; +AeroDyn['B2N1Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 1; +AeroDyn['B2N2Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 2; +AeroDyn['B2N3Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 3; +AeroDyn['B2N4Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 4; +AeroDyn['B2N5Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 5; +AeroDyn['B2N6Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 6; +AeroDyn['B2N7Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 7; +AeroDyn['B2N8Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 8; +AeroDyn['B2N9Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 2 node 9; +AeroDyn['B3N1Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 1; +AeroDyn['B3N2Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 2; +AeroDyn['B3N3Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 3; +AeroDyn['B3N4Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 4; +AeroDyn['B3N5Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 5; +AeroDyn['B3N6Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 6; +AeroDyn['B3N7Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 7; +AeroDyn['B3N8Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 8; +AeroDyn['B3N9Fbs'] = False # (N/m); Buoyant spanwise force per unit length at blade 3 node 9; +AeroDyn['B1N1Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 1; +AeroDyn['B1N2Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 2; +AeroDyn['B1N3Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 3; +AeroDyn['B1N4Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 4; +AeroDyn['B1N5Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 5; +AeroDyn['B1N6Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 6; +AeroDyn['B1N7Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 7; +AeroDyn['B1N8Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 8; +AeroDyn['B1N9Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 1 node 9; +AeroDyn['B2N1Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 1; +AeroDyn['B2N2Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 2; +AeroDyn['B2N3Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 3; +AeroDyn['B2N4Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 4; +AeroDyn['B2N5Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 5; +AeroDyn['B2N6Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 6; +AeroDyn['B2N7Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 7; +AeroDyn['B2N8Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 8; +AeroDyn['B2N9Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 2 node 9; +AeroDyn['B3N1Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 1; +AeroDyn['B3N2Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 2; +AeroDyn['B3N3Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 3; +AeroDyn['B3N4Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 4; +AeroDyn['B3N5Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 5; +AeroDyn['B3N6Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 6; +AeroDyn['B3N7Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 7; +AeroDyn['B3N8Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 8; +AeroDyn['B3N9Mbn'] = False # (N-m/m); Buoyant moment normal to chord per unit length at blade 3 node 9; +AeroDyn['B1N1Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 1; +AeroDyn['B1N2Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 2; +AeroDyn['B1N3Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 3; +AeroDyn['B1N4Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 4; +AeroDyn['B1N5Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 5; +AeroDyn['B1N6Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 6; +AeroDyn['B1N7Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 7; +AeroDyn['B1N8Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 8; +AeroDyn['B1N9Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 1 node 9; +AeroDyn['B2N1Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 1; +AeroDyn['B2N2Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 2; +AeroDyn['B2N3Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 3; +AeroDyn['B2N4Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 4; +AeroDyn['B2N5Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 5; +AeroDyn['B2N6Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 6; +AeroDyn['B2N7Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 7; +AeroDyn['B2N8Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 8; +AeroDyn['B2N9Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 2 node 9; +AeroDyn['B3N1Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 1; +AeroDyn['B3N2Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 2; +AeroDyn['B3N3Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 3; +AeroDyn['B3N4Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 4; +AeroDyn['B3N5Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 5; +AeroDyn['B3N6Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 6; +AeroDyn['B3N7Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 7; +AeroDyn['B3N8Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 8; +AeroDyn['B3N9Mbt'] = False # (N-m/m); Buoyant moment tangential to chord per unit length at blade 3 node 9; +AeroDyn['B1N1Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 1; +AeroDyn['B1N2Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 2; +AeroDyn['B1N3Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 3; +AeroDyn['B1N4Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 4; +AeroDyn['B1N5Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 5; +AeroDyn['B1N6Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 6; +AeroDyn['B1N7Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 7; +AeroDyn['B1N8Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 8; +AeroDyn['B1N9Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 1 node 9; +AeroDyn['B2N1Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 1; +AeroDyn['B2N2Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 2; +AeroDyn['B2N3Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 3; +AeroDyn['B2N4Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 4; +AeroDyn['B2N5Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 5; +AeroDyn['B2N6Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 6; +AeroDyn['B2N7Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 7; +AeroDyn['B2N8Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 8; +AeroDyn['B2N9Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 2 node 9; +AeroDyn['B3N1Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 1; +AeroDyn['B3N2Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 2; +AeroDyn['B3N3Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 3; +AeroDyn['B3N4Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 4; +AeroDyn['B3N5Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 5; +AeroDyn['B3N6Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 6; +AeroDyn['B3N7Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 7; +AeroDyn['B3N8Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 8; +AeroDyn['B3N9Mbs'] = False # (N-m/m); Buoyant spanwise moment per unit length at blade 3 node 9; + +# Rotor +AeroDyn['RtSpeed'] = False # (rpm); Rotor speed; +AeroDyn['RtTSR'] = False # (-); Rotor tip-speed ratio; +AeroDyn['RtVAvgxh'] = False # (m/s); Rotor-disk-averaged relative wind velocity (x-component); the hub coordinate system +AeroDyn['RtVAvgyh'] = False # (m/s); Rotor-disk-averaged relative wind velocity (y-component); the hub coordinate system +AeroDyn['RtVAvgzh'] = False # (m/s); Rotor-disk-averaged relative wind velocity (z-component); the hub coordinate system +AeroDyn['RtSkew'] = False # (deg); Rotor inflow-skew angle; +AeroDyn['RtAeroFxh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in x direction); the hub coordinate system +AeroDyn['RtFldFxh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in x direction); the hub coordinate system +AeroDyn['RtAeroFyh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in y direction); the hub coordinate system +AeroDyn['RtFldFyh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in y direction); the hub coordinate system +AeroDyn['RtAeroFzh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in z direction); the hub coordinate system +AeroDyn['RtFldFzh'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in z direction); the hub coordinate system +AeroDyn['RtAeroMxh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in x direction); the hub coordinate system +AeroDyn['RtFldMxh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in x direction); the hub coordinate system +AeroDyn['RtAeroMyh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in y direction); the hub coordinate system +AeroDyn['RtFldMyh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in y direction); the hub coordinate system +AeroDyn['RtAeroMzh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in z direction); the hub coordinate system +AeroDyn['RtFldMzh'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in z direction); the hub coordinate system +AeroDyn['RtAeroPwr'] = False # (W); Rotor aerodynamic/hydrodynamic power; +AeroDyn['RtFldPwr'] = False # (W); Rotor aerodynamic/hydrodynamic power; +AeroDyn['RtArea'] = False # (m^2); Rotor swept area; +AeroDyn['RtAeroCp'] = False # (-); Rotor aerodynamic/hydrodynamic power coefficient; +AeroDyn['RtFldCp'] = False # (-); Rotor aerodynamic/hydrodynamic power coefficient; +AeroDyn['RtAeroCq'] = False # (-); Rotor aerodynamic/hydrodynamic torque coefficient; +AeroDyn['RtFldCq'] = False # (-); Rotor aerodynamic/hydrodynamic torque coefficient; +AeroDyn['RtAeroCt'] = False # (-); Rotor aerodynamic/hydrodynamic thrust coefficient; +AeroDyn['RtFldCt'] = False # (-); Rotor aerodynamic/hydrodynamic thrust coefficient; +AeroDyn['DBEMTau1'] = False # (s); time-constant used in DBEMT; +AeroDyn['RtAeroFxi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in x direction); global coordinate system +AeroDyn['RtFldFxi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in x direction); global coordinate system +AeroDyn['RtFldFxg'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in x direction); global coordinate system +AeroDyn['RtAeroFyi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in y direction); global coordinate system +AeroDyn['RtFldFyi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in y direction); global coordinate system +AeroDyn['RtFldFyg'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in y direction); global coordinate system +AeroDyn['RtAeroFzi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in z direction); global coordinate system +AeroDyn['RtFldFzi'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in z direction); global coordinate system +AeroDyn['RtFldFzg'] = False # (N); Total rotor aerodynamic/hydrodynamic and buoyant load (force in z direction); global coordinate system +AeroDyn['RtAeroMxi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in x direction); global coordinate system +AeroDyn['RtFldMxi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in x direction); global coordinate system +AeroDyn['RtFldMxg'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in x direction); global coordinate system +AeroDyn['RtAeroMyi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in y direction); global coordinate system +AeroDyn['RtFldMyi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in y direction); global coordinate system +AeroDyn['RtFldMyg'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in y direction); global coordinate system +AeroDyn['RtAeroMzi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in z direction); global coordinate system +AeroDyn['RtFldMzi'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in z direction); global coordinate system +AeroDyn['RtFldMzg'] = False # (N-m); Total rotor aerodynamic/hydrodynamic and buoyant load (moment in z direction); global coordinate system + +# Hub +AeroDyn['HbFbx'] = False # (N); x-component of buoyant force at hub node; the hub coordinate system +AeroDyn['HbFby'] = False # (N); y-component of buoyant force at hub node; the hub coordinate system +AeroDyn['HbFbz'] = False # (N); z-component of buoyant force at hub node; the hub coordinate system +AeroDyn['HbMbx'] = False # (N-m); x-component of buoyant moment at hub node; the hub coordinate system +AeroDyn['HbMby'] = False # (N-m); y-component of buoyant moment at hub node; the hub coordinate system +AeroDyn['HbMbz'] = False # (N-m); z-component of buoyant moment at hub node; the hub coordinate system + +# Nacelle +AeroDyn['NcFbx'] = False # (N); x-component of buoyant force at nacelle node; the nacelle coordinate system +AeroDyn['NcFby'] = False # (N); y-component of buoyant force at nacelle node; the nacelle coordinate system +AeroDyn['NcFbz'] = False # (N); z-component of buoyant force at nacelle node; the nacelle coordinate system +AeroDyn['NcMbx'] = False # (N-m); x-component of buoyant moment at nacelle node; the nacelle coordinate system +AeroDyn['NcMby'] = False # (N-m); y-component of buoyant moment at nacelle node; the nacelle coordinate system +AeroDyn['NcMbz'] = False # (N-m); z-component of buoyant moment at nacelle node; the nacelle coordinate system + +# TailFin +AeroDyn['TFAlpha'] = False # (deg); Angle of attack of tailfin; tailfin coordinate system +AeroDyn['TFMach '] = False # (-); Mach number of tailfin flow; tailfin coordinate system +AeroDyn['TFRe '] = False # (-); Reynolds number of tailfin flow; tailfin coordinate system +AeroDyn['TFVrel '] = False # (m/s); Orthogonal relative velocity norm at the tailfin reference point; tailfin coordinate system +AeroDyn['TFVundxi'] = False # (m/s); Undisturbed wind velocity at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFVundyi'] = False # (m/s); Undisturbed wind velocity at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFVundzi'] = False # (m/s); Undisturbed wind velocity at the tailfin reference point in the inertial system (z-direction); global coordinate system +AeroDyn['TFVindxi'] = False # (m/s); Induced velocity at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFVindyi'] = False # (m/s); Induced velocity at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFVindzi'] = False # (m/s); Induced velocity at the tailfin reference point in the inertial system (z-direction); global coordinate system +AeroDyn['TFVrelxi'] = False # (m/s); Relative velocity at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFVrelyi'] = False # (m/s); Relative velocity at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFVrelzi'] = False # (m/s); Relative velocity at the tailfin reference point in the inertial system (z-direction); global coordinate system +AeroDyn['TFSTVxi'] = False # (m/s); Structural velocity at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFSTVyi'] = False # (m/s); Structural velocity at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFSTVzi'] = False # (m/s); Structural velocity at the tailfin reference point in the inertial system (z-direction); global coordinate system +AeroDyn['TFFxi'] = False # (N); Force at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFFyi'] = False # (N); Force at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFFzi'] = False # (N); Force at the tailfin reference point in the inertial system (z-direction); global coordinate system +AeroDyn['TFMxi'] = False # (N-m); Moment at the tailfin reference point in the inertial system (x-direction); global coordinate system +AeroDyn['TFMyi'] = False # (N-m); Moment at the tailfin reference point in the inertial system (y-direction); global coordinate system +AeroDyn['TFMzi'] = False # (N-m); Moment at the tailfin reference point in the inertial system (z-direction); global coordinate system + + +""" BeamDyn """ +BeamDyn = {} + +# Reaction Loads +BeamDyn['RootFxr'] = False # (N); x-component of the root reaction force expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['RootFyr'] = False # (N); y-component of the root reaction force expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['RootFzr'] = False # (N); z-component of the root reaction force expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['RootMxr'] = False # (N-m); x-component of the root reaction moment expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['RootMyr'] = False # (N-m); y-component of the root reaction moment expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['RootMzr'] = False # (N-m); z-component of the root reaction moment expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system + +# Tip Motions +BeamDyn['TipTDxr'] = False # (m); Tip translational deflection (relative to the undeflected position) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipTDyr'] = False # (m); Tip translational deflection (relative to the undeflected position) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipTDzr'] = False # (m); Tip translational deflection (relative to the undeflected position) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipRDxr'] = False # (-); Tip angular/rotational deflection Wiener-Milenkovi parameter (relative to the undeflected orientation) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipRDyr'] = False # (-); Tip angular/rotational deflection Wiener-Milenkovi parameter (relative to the undeflected orientation) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipRDzr'] = False # (-); Tip angular/rotational deflection Wiener-Milenkovi parameter (relative to the undeflected orientation) expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['TipTVXg'] = False # (m/s); Tip translational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipTVYg'] = False # (m/s); Tip translational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipTVZg'] = False # (m/s); Tip translational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipRVXg'] = False # (deg/s); Tip angular/rotational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipRVYg'] = False # (deg/s); Tip angular/rotational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipRVZg'] = False # (deg/s); Tip angular/rotational velocities (absolute) expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['TipTAXl'] = False # (m/s^2); Tip translational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['TipTAYl'] = False # (m/s^2); Tip translational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['TipTAZl'] = False # (m/s^2); Tip translational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['TipRAXl'] = False # (deg/s^2); Tip angular/rotational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['TipRAYl'] = False # (deg/s^2); Tip angular/rotational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['TipRAZl'] = False # (deg/s^2); Tip angular/rotational accelerations (absolute) expressed in l; l: a floating coordinate system local to the deflected beam + +# Sectional Loads +BeamDyn['N1Fxl'] = False # (N); Sectional force resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1Fyl'] = False # (N); Sectional force resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1Fzl'] = False # (N); Sectional force resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Fxl'] = False # (N); Sectional force resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Fyl'] = False # (N); Sectional force resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Fzl'] = False # (N); Sectional force resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Fxl'] = False # (N); Sectional force resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Fyl'] = False # (N); Sectional force resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Fzl'] = False # (N); Sectional force resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Fxl'] = False # (N); Sectional force resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Fyl'] = False # (N); Sectional force resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Fzl'] = False # (N); Sectional force resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Fxl'] = False # (N); Sectional force resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Fyl'] = False # (N); Sectional force resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Fzl'] = False # (N); Sectional force resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Fxl'] = False # (N); Sectional force resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Fyl'] = False # (N); Sectional force resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Fzl'] = False # (N); Sectional force resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Fxl'] = False # (N); Sectional force resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Fyl'] = False # (N); Sectional force resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Fzl'] = False # (N); Sectional force resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Fxl'] = False # (N); Sectional force resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Fyl'] = False # (N); Sectional force resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Fzl'] = False # (N); Sectional force resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Fxl'] = False # (N); Sectional force resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Fyl'] = False # (N); Sectional force resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Fzl'] = False # (N); Sectional force resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1Mxl'] = False # (N-m); Sectional moment resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1Myl'] = False # (N-m); Sectional moment resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1Mzl'] = False # (N-m); Sectional moment resultants at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Mxl'] = False # (N-m); Sectional moment resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Myl'] = False # (N-m); Sectional moment resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2Mzl'] = False # (N-m); Sectional moment resultants at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Mxl'] = False # (N-m); Sectional moment resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Myl'] = False # (N-m); Sectional moment resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3Mzl'] = False # (N-m); Sectional moment resultants at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Mxl'] = False # (N-m); Sectional moment resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Myl'] = False # (N-m); Sectional moment resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4Mzl'] = False # (N-m); Sectional moment resultants at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Mxl'] = False # (N-m); Sectional moment resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Myl'] = False # (N-m); Sectional moment resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5Mzl'] = False # (N-m); Sectional moment resultants at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Mxl'] = False # (N-m); Sectional moment resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Myl'] = False # (N-m); Sectional moment resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6Mzl'] = False # (N-m); Sectional moment resultants at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Mxl'] = False # (N-m); Sectional moment resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Myl'] = False # (N-m); Sectional moment resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7Mzl'] = False # (N-m); Sectional moment resultants at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Mxl'] = False # (N-m); Sectional moment resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Myl'] = False # (N-m); Sectional moment resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8Mzl'] = False # (N-m); Sectional moment resultants at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Mxl'] = False # (N-m); Sectional moment resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Myl'] = False # (N-m); Sectional moment resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9Mzl'] = False # (N-m); Sectional moment resultants at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam + +# Sectional Motions +BeamDyn['N1TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 1 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N2RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 2 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N3RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 3 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N4RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 4 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N5RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 5 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N6RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 6 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N7RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 7 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N8RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 8 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N9RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at Node 9 expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn['N1TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9TVXg'] = False # (m/s); Sectional translational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9TVYg'] = False # (m/s); Sectional translational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9TVZg'] = False # (m/s); Sectional translational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 1 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N2RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 2 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N3RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 3 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N4RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 4 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N5RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 5 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N6RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 6 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N7RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 7 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N8RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 8 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9RVXg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9RVYg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N9RVZg'] = False # (deg/s); Sectional angular/rotational velocities (absolute) at Node 9 expressed in g; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn['N1TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9TAXl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9TAYl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9TAZl'] = False # (m/s^2); Sectional translational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9RAXl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9RAYl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9RAZl'] = False # (deg/s^2); Sectional angular/rotational accelerations (absolute) at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam + +# Applied Loads +BeamDyn['N1PFxl'] = False # (N); Applied point forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1PFyl'] = False # (N); Applied point forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1PFzl'] = False # (N); Applied point forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PFxl'] = False # (N); Applied point forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PFyl'] = False # (N); Applied point forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PFzl'] = False # (N); Applied point forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PFxl'] = False # (N); Applied point forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PFyl'] = False # (N); Applied point forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PFzl'] = False # (N); Applied point forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PFxl'] = False # (N); Applied point forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PFyl'] = False # (N); Applied point forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PFzl'] = False # (N); Applied point forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PFxl'] = False # (N); Applied point forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PFyl'] = False # (N); Applied point forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PFzl'] = False # (N); Applied point forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PFxl'] = False # (N); Applied point forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PFyl'] = False # (N); Applied point forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PFzl'] = False # (N); Applied point forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PFxl'] = False # (N); Applied point forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PFyl'] = False # (N); Applied point forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PFzl'] = False # (N); Applied point forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PFxl'] = False # (N); Applied point forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PFyl'] = False # (N); Applied point forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PFzl'] = False # (N); Applied point forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PFxl'] = False # (N); Applied point forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PFyl'] = False # (N); Applied point forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PFzl'] = False # (N); Applied point forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1PMxl'] = False # (N-m); Applied point moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1PMyl'] = False # (N-m); Applied point moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1PMzl'] = False # (N-m); Applied point moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PMxl'] = False # (N-m); Applied point moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PMyl'] = False # (N-m); Applied point moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2PMzl'] = False # (N-m); Applied point moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PMxl'] = False # (N-m); Applied point moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PMyl'] = False # (N-m); Applied point moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3PMzl'] = False # (N-m); Applied point moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PMxl'] = False # (N-m); Applied point moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PMyl'] = False # (N-m); Applied point moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4PMzl'] = False # (N-m); Applied point moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PMxl'] = False # (N-m); Applied point moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PMyl'] = False # (N-m); Applied point moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5PMzl'] = False # (N-m); Applied point moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PMxl'] = False # (N-m); Applied point moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PMyl'] = False # (N-m); Applied point moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6PMzl'] = False # (N-m); Applied point moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PMxl'] = False # (N-m); Applied point moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PMyl'] = False # (N-m); Applied point moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7PMzl'] = False # (N-m); Applied point moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PMxl'] = False # (N-m); Applied point moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PMyl'] = False # (N-m); Applied point moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8PMzl'] = False # (N-m); Applied point moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PMxl'] = False # (N-m); Applied point moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PMyl'] = False # (N-m); Applied point moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9PMzl'] = False # (N-m); Applied point moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DFxl'] = False # (N/m); Applied distributed forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DFyl'] = False # (N/m); Applied distributed forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DFzl'] = False # (N/m); Applied distributed forces at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DFxl'] = False # (N/m); Applied distributed forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DFyl'] = False # (N/m); Applied distributed forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DFzl'] = False # (N/m); Applied distributed forces at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DFxl'] = False # (N/m); Applied distributed forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DFyl'] = False # (N/m); Applied distributed forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DFzl'] = False # (N/m); Applied distributed forces at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DFxl'] = False # (N/m); Applied distributed forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DFyl'] = False # (N/m); Applied distributed forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DFzl'] = False # (N/m); Applied distributed forces at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DFxl'] = False # (N/m); Applied distributed forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DFyl'] = False # (N/m); Applied distributed forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DFzl'] = False # (N/m); Applied distributed forces at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DFxl'] = False # (N/m); Applied distributed forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DFyl'] = False # (N/m); Applied distributed forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DFzl'] = False # (N/m); Applied distributed forces at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DFxl'] = False # (N/m); Applied distributed forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DFyl'] = False # (N/m); Applied distributed forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DFzl'] = False # (N/m); Applied distributed forces at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DFxl'] = False # (N/m); Applied distributed forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DFyl'] = False # (N/m); Applied distributed forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DFzl'] = False # (N/m); Applied distributed forces at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DFxl'] = False # (N/m); Applied distributed forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DFyl'] = False # (N/m); Applied distributed forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DFzl'] = False # (N/m); Applied distributed forces at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DMxl'] = False # (N-m/m); Applied distributed moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DMyl'] = False # (N-m/m); Applied distributed moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N1DMzl'] = False # (N-m/m); Applied distributed moments at Node 1 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DMxl'] = False # (N-m/m); Applied distributed moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DMyl'] = False # (N-m/m); Applied distributed moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N2DMzl'] = False # (N-m/m); Applied distributed moments at Node 2 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DMxl'] = False # (N-m/m); Applied distributed moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DMyl'] = False # (N-m/m); Applied distributed moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N3DMzl'] = False # (N-m/m); Applied distributed moments at Node 3 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DMxl'] = False # (N-m/m); Applied distributed moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DMyl'] = False # (N-m/m); Applied distributed moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N4DMzl'] = False # (N-m/m); Applied distributed moments at Node 4 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DMxl'] = False # (N-m/m); Applied distributed moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DMyl'] = False # (N-m/m); Applied distributed moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N5DMzl'] = False # (N-m/m); Applied distributed moments at Node 5 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DMxl'] = False # (N-m/m); Applied distributed moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DMyl'] = False # (N-m/m); Applied distributed moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N6DMzl'] = False # (N-m/m); Applied distributed moments at Node 6 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DMxl'] = False # (N-m/m); Applied distributed moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DMyl'] = False # (N-m/m); Applied distributed moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N7DMzl'] = False # (N-m/m); Applied distributed moments at Node 7 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DMxl'] = False # (N-m/m); Applied distributed moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DMyl'] = False # (N-m/m); Applied distributed moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N8DMzl'] = False # (N-m/m); Applied distributed moments at Node 8 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DMxl'] = False # (N-m/m); Applied distributed moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DMyl'] = False # (N-m/m); Applied distributed moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn['N9DMzl'] = False # (N-m/m); Applied distributed moments at Node 9 expressed in l; l: a floating coordinate system local to the deflected beam + +# Pitch Actuator +BeamDyn['PAngInp'] = False # (deg); Pitch angle input; +BeamDyn['PAngAct'] = False # (deg); Actual pitch angle ; +BeamDyn['PRatAct'] = False # (deg/s); Actual pitch rate; +BeamDyn['PAccAct'] = False # (deg/s^2); Actual pitch acceleration; + + +""" ElastoDyn """ +ElastoDyn = {} + +# Blade 1 Tip Motions +ElastoDyn['TipDxc1'] = True # (m); Blade 1 out-of-plane tip deflection (relative to the undeflected position); Directed along the xc1-axis +ElastoDyn['OoPDefl1'] = False # (m); Blade 1 out-of-plane tip deflection (relative to the undeflected position); Directed along the xc1-axis +ElastoDyn['TipDyc1'] = True # (m); Blade 1 in-plane tip deflection (relative to the undeflected position); Directed along the yc1-axis +ElastoDyn['IPDefl1'] = False # (m); Blade 1 in-plane tip deflection (relative to the undeflected position); Directed along the yc1-axis +ElastoDyn['TipDzc1'] = True # (m); Blade 1 axial tip deflection (relative to the undeflected position); Directed along the zc1- and zb1-axes +ElastoDyn['TipDzb1'] = True # (m); Blade 1 axial tip deflection (relative to the undeflected position); Directed along the zc1- and zb1-axes +ElastoDyn['TipDxb1'] = True # (m); Blade 1 flapwise tip deflection (relative to the undeflected position); Directed along the xb1-axis +ElastoDyn['TipDyb1'] = True # (m); Blade 1 edgewise tip deflection (relative to the undeflected position); Directed along the yb1-axis +ElastoDyn['TipALxb1'] = False # (m/s^2); Blade 1 local flapwise tip acceleration (absolute); Directed along the local xb1-axis +ElastoDyn['TipALyb1'] = False # (m/s^2); Blade 1 local edgewise tip acceleration (absolute); Directed along the local yb1-axis +ElastoDyn['TipALzb1'] = False # (m/s^2); Blade 1 local axial tip acceleration (absolute); Directed along the local zb1-axis +ElastoDyn['TipALgxb1'] = False # (m/s^2); Blade 1 local flapwise tip acceleration (relative to g); Directed along the local xb1-axis +ElastoDyn['TipALgyb1'] = False # (m/s^2); Blade 1 local edgewise tip acceleration (relative to g); Directed along the local yb1-axis +ElastoDyn['TipALgzb1'] = False # (m/s^2); Blade 1 local axial tip acceleration (relative to g); Directed along the local zb1-axis +ElastoDyn['TipRDxb1'] = False # (deg); Blade 1 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb1-axis +ElastoDyn['RollDefl1'] = False # (deg); Blade 1 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb1-axis +ElastoDyn['TipRDyb1'] = False # (deg); Blade 1 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb1-axis +ElastoDyn['PtchDefl1'] = False # (deg); Blade 1 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb1-axis +ElastoDyn['TipRDzc1'] = False # (deg); Blade 1 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc1- and zb1-axes +ElastoDyn['TipRDzb1'] = False # (deg); Blade 1 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc1- and zb1-axes +ElastoDyn['TwstDefl1'] = False # (deg); Blade 1 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc1- and zb1-axes +ElastoDyn['TipClrnc1'] = False # (m); Blade 1 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['TwrClrnc1'] = False # (m); Blade 1 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['Tip2Twr1'] = False # (m); Blade 1 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A + +# Blade 2 Tip Motions +ElastoDyn['TipDxc2'] = True # (m); Blade 2 out-of-plane tip deflection (relative to the pitch axis); Directed along the xc2-axis +ElastoDyn['OoPDefl2'] = False # (m); Blade 2 out-of-plane tip deflection (relative to the pitch axis); Directed along the xc2-axis +ElastoDyn['TipDyc2'] = True # (m); Blade 2 in-plane tip deflection (relative to the pitch axis); Directed along the yc2-axis +ElastoDyn['IPDefl2'] = False # (m); Blade 2 in-plane tip deflection (relative to the pitch axis); Directed along the yc2-axis +ElastoDyn['TipDzc2'] = True # (m); Blade 2 axial tip deflection (relative to the pitch axis); Directed along the zc2- and zb2-axes +ElastoDyn['TipDzb2'] = True # (m); Blade 2 axial tip deflection (relative to the pitch axis); Directed along the zc2- and zb2-axes +ElastoDyn['TipDxb2'] = True # (m); Blade 2 flapwise tip deflection (relative to the pitch axis); Directed along the xb2-axis +ElastoDyn['TipDyb2'] = True # (m); Blade 2 edgewise tip deflection (relative to the pitch axis); Directed along the yb2-axis +ElastoDyn['TipALxb2'] = False # (m/s^2); Blade 2 local flapwise tip acceleration (absolute); Directed along the local xb2-axis +ElastoDyn['TipALyb2'] = False # (m/s^2); Blade 2 local edgewise tip acceleration (absolute); Directed along the local yb2-axis +ElastoDyn['TipALzb2'] = False # (m/s^2); Blade 2 local axial tip acceleration (absolute); Directed along the local zb2-axis +ElastoDyn['TipALgxb2'] = False # (m/s^2); Blade 2 local flapwise tip acceleration (relative to g); Directed along the local xb2-axis +ElastoDyn['TipALgyb2'] = False # (m/s^2); Blade 2 local edgewise tip acceleration (relative to g); Directed along the local yb2-axis +ElastoDyn['TipALgzb2'] = False # (m/s^2); Blade 2 local axial tip acceleration (relative to g); Directed along the local zb2-axis +ElastoDyn['TipRDxb2'] = False # (deg); Blade 2 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb2-axis +ElastoDyn['RollDefl2'] = False # (deg); Blade 2 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb2-axis +ElastoDyn['TipRDyb2'] = False # (deg); Blade 2 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb2-axis +ElastoDyn['PtchDefl2'] = False # (deg); Blade 2 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb2-axis +ElastoDyn['TipRDzc2'] = False # (deg); Blade 2 torsional (angular/rotational) tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc2- and zb2-axes +ElastoDyn['TipRDzb2'] = False # (deg); Blade 2 torsional (angular/rotational) tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc2- and zb2-axes +ElastoDyn['TwstDefl2'] = False # (deg); Blade 2 torsional (angular/rotational) tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc2- and zb2-axes +ElastoDyn['TipClrnc2'] = False # (m); Blade 2 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['TwrClrnc2'] = False # (m); Blade 2 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['Tip2Twr2'] = False # (m); Blade 2 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A + +# Blade 3 Tip Motions +ElastoDyn['TipDxc3'] = True # (m); Blade 3 out-of-plane tip deflection (relative to the pitch axis); Directed along the xc3-axis +ElastoDyn['OoPDefl3'] = False # (m); Blade 3 out-of-plane tip deflection (relative to the pitch axis); Directed along the xc3-axis +ElastoDyn['TipDyc3'] = True # (m); Blade 3 in-plane tip deflection (relative to the pitch axis); Directed along the yc3-axis +ElastoDyn['IPDefl3'] = False # (m); Blade 3 in-plane tip deflection (relative to the pitch axis); Directed along the yc3-axis +ElastoDyn['TipDzc3'] = True # (m); Blade 3 axial tip deflection (relative to the pitch axis); Directed along the zc3- and zb3-axes +ElastoDyn['TipDzb3'] = True # (m); Blade 3 axial tip deflection (relative to the pitch axis); Directed along the zc3- and zb3-axes +ElastoDyn['TipDxb3'] = True # (m); Blade 3 flapwise tip deflection (relative to the pitch axis); Directed along the xb3-axis +ElastoDyn['TipDyb3'] = True # (m); Blade 3 edgewise tip deflection (relative to the pitch axis); Directed along the yb3-axis +ElastoDyn['TipALxb3'] = False # (m/s^2); Blade 3 local flapwise tip acceleration (absolute); Directed along the local xb3-axis +ElastoDyn['TipALyb3'] = False # (m/s^2); Blade 3 local edgewise tip acceleration (absolute); Directed along the local yb3-axis +ElastoDyn['TipALzb3'] = False # (m/s^2); Blade 3 local axial tip acceleration (absolute); Directed along the local zb3-axis +ElastoDyn['TipALgxb3'] = False # (m/s^2); Blade 3 local flapwise tip acceleration (relative to g); Directed along the local xb3-axis +ElastoDyn['TipALgyb3'] = False # (m/s^2); Blade 3 local edgewise tip acceleration (relative to g); Directed along the local yb3-axis +ElastoDyn['TipALgzb3'] = False # (m/s^2); Blade 3 local axial tip acceleration (relative to g); Directed along the local zb3-axis +ElastoDyn['TipRDxb3'] = False # (deg); Blade 3 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb3-axis +ElastoDyn['RollDefl3'] = False # (deg); Blade 3 roll (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the xb3-axis +ElastoDyn['TipRDyb3'] = False # (deg); Blade 3 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb3-axis +ElastoDyn['PtchDefl3'] = False # (deg); Blade 3 pitch (angular/rotational) tip deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the yb3-axis +ElastoDyn['TipRDzc3'] = False # (deg); Blade 3 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc3- and zb3-axes +ElastoDyn['TipRDzb3'] = False # (deg); Blade 3 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc3- and zb3-axes +ElastoDyn['TwstDefl3'] = False # (deg); Blade 3 torsional tip deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the zc3- and zb3-axes +ElastoDyn['TipClrnc3'] = False # (m); Blade 3 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['TwrClrnc3'] = False # (m); Blade 3 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A +ElastoDyn['Tip2Twr3'] = False # (m); Blade 3 tip-to-tower clearance estimate. This is computed as the perpendicular distance from the yaw axis to the tip of blade 1 when the blade tip is below the yaw bearing. When the tip of blade 1 is above the yaw bearing, it is computed as the absolute distance from the yaw bearing to the blade tip. Please note that you should reduce this value by the tower radius to obtain the actual tower clearance.; N/A + +# Blade 1 Local Span Motions +ElastoDyn['Spn1ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 1; Directed along the local xb1-axis +ElastoDyn['Spn1ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 1; Directed along the local yb1-axis +ElastoDyn['Spn1ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 1; Directed along the local zb1-axis +ElastoDyn['Spn2ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 2; Directed along the local xb1-axis +ElastoDyn['Spn2ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 2; Directed along the local yb1-axis +ElastoDyn['Spn2ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 2; Directed along the local zb1-axis +ElastoDyn['Spn3ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 3; Directed along the local xb1-axis +ElastoDyn['Spn3ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 3; Directed along the local yb1-axis +ElastoDyn['Spn3ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 3; Directed along the local zb1-axis +ElastoDyn['Spn4ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 4; Directed along the local xb1-axis +ElastoDyn['Spn4ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 4; Directed along the local yb1-axis +ElastoDyn['Spn4ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 4; Directed along the local zb1-axis +ElastoDyn['Spn5ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 5; Directed along the local xb1-axis +ElastoDyn['Spn5ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 5; Directed along the local yb1-axis +ElastoDyn['Spn5ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 5; Directed along the local zb1-axis +ElastoDyn['Spn6ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 6; Directed along the local xb1-axis +ElastoDyn['Spn6ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 6; Directed along the local yb1-axis +ElastoDyn['Spn6ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 6; Directed along the local zb1-axis +ElastoDyn['Spn7ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 7; Directed along the local xb1-axis +ElastoDyn['Spn7ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 7; Directed along the local yb1-axis +ElastoDyn['Spn7ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 7; Directed along the local zb1-axis +ElastoDyn['Spn8ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 8; Directed along the local xb1-axis +ElastoDyn['Spn8ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 8; Directed along the local yb1-axis +ElastoDyn['Spn8ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 8; Directed along the local zb1-axis +ElastoDyn['Spn9ALxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (absolute) of span station 9; Directed along the local xb1-axis +ElastoDyn['Spn9ALyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (absolute) of span station 9; Directed along the local yb1-axis +ElastoDyn['Spn9ALzb1'] = False # (m/s^2); Blade 1 local axial acceleration (absolute) of span station 9; Directed along the local zb1-axis +ElastoDyn['Spn1ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 1; Directed along the local xb1-axis +ElastoDyn['Spn1ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 1; Directed along the local yb1-axis +ElastoDyn['Spn1ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 1; Directed along the local zb1-axis +ElastoDyn['Spn2ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 2; Directed along the local xb1-axis +ElastoDyn['Spn2ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 2; Directed along the local yb1-axis +ElastoDyn['Spn2ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 2; Directed along the local zb1-axis +ElastoDyn['Spn3ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 3; Directed along the local xb1-axis +ElastoDyn['Spn3ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 3; Directed along the local yb1-axis +ElastoDyn['Spn3ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 3; Directed along the local zb1-axis +ElastoDyn['Spn4ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 4; Directed along the local xb1-axis +ElastoDyn['Spn4ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 4; Directed along the local yb1-axis +ElastoDyn['Spn4ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 4; Directed along the local zb1-axis +ElastoDyn['Spn5ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 5; Directed along the local xb1-axis +ElastoDyn['Spn5ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 5; Directed along the local yb1-axis +ElastoDyn['Spn5ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 5; Directed along the local zb1-axis +ElastoDyn['Spn6ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 6; Directed along the local xb1-axis +ElastoDyn['Spn6ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 6; Directed along the local yb1-axis +ElastoDyn['Spn6ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 6; Directed along the local zb1-axis +ElastoDyn['Spn7ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 7; Directed along the local xb1-axis +ElastoDyn['Spn7ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 7; Directed along the local yb1-axis +ElastoDyn['Spn7ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 7; Directed along the local zb1-axis +ElastoDyn['Spn8ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 8; Directed along the local xb1-axis +ElastoDyn['Spn8ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 8; Directed along the local yb1-axis +ElastoDyn['Spn8ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 8; Directed along the local zb1-axis +ElastoDyn['Spn9ALgxb1'] = False # (m/s^2); Blade 1 local flapwise acceleration (relative to g) of span station 9; Directed along the local xb1-axis +ElastoDyn['Spn9ALgyb1'] = False # (m/s^2); Blade 1 local edgewise acceleration (relative to g) of span station 9; Directed along the local yb1-axis +ElastoDyn['Spn9ALgzb1'] = False # (m/s^2); Blade 1 local axial acceleration (relative to g) of span station 9; Directed along the local zb1-axis +ElastoDyn['Spn1TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the xb1-axis +ElastoDyn['Spn1TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the yb1-axis +ElastoDyn['Spn1TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 1; Directed along the zb1-axis +ElastoDyn['Spn2TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the xb1-axis +ElastoDyn['Spn2TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the yb1-axis +ElastoDyn['Spn2TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 2; Directed along the zb1-axis +ElastoDyn['Spn3TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the xb1-axis +ElastoDyn['Spn3TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the yb1-axis +ElastoDyn['Spn3TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 3; Directed along the zb1-axis +ElastoDyn['Spn4TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the xb1-axis +ElastoDyn['Spn4TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the yb1-axis +ElastoDyn['Spn4TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 4; Directed along the zb1-axis +ElastoDyn['Spn5TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the xb1-axis +ElastoDyn['Spn5TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the yb1-axis +ElastoDyn['Spn5TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 5; Directed along the zb1-axis +ElastoDyn['Spn6TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the xb1-axis +ElastoDyn['Spn6TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the yb1-axis +ElastoDyn['Spn6TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 6; Directed along the zb1-axis +ElastoDyn['Spn7TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the xb1-axis +ElastoDyn['Spn7TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the yb1-axis +ElastoDyn['Spn7TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 7; Directed along the zb1-axis +ElastoDyn['Spn8TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the xb1-axis +ElastoDyn['Spn8TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the yb1-axis +ElastoDyn['Spn8TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 8; Directed along the zb1-axis +ElastoDyn['Spn9TDxb1'] = False # (m); Blade 1 local flapwise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the xb1-axis +ElastoDyn['Spn9TDyb1'] = False # (m); Blade 1 local edgewise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the yb1-axis +ElastoDyn['Spn9TDzb1'] = False # (m); Blade 1 local axial (translational) deflection (relative to the undeflected position) of span station 9; Directed along the zb1-axis +ElastoDyn['Spn1RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn1RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn1RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 1. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn2RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn2RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn2RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 2. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn3RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn3RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn3RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 3. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn4RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn4RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn4RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 4. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn5RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn5RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn5RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 5. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn6RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn6RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn6RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 6. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn7RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn7RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn7RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 7. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn8RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn8RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn8RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 8. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis +ElastoDyn['Spn9RDxb1'] = False # (deg); Blade 1 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb1-axis +ElastoDyn['Spn9RDyb1'] = False # (deg); Blade 1 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb1-axis +ElastoDyn['Spn9RDzb1'] = False # (deg); Blade 1 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 9. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb1-axis + +# Blade 2 Local Span Motions +ElastoDyn['Spn1ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 1; Directed along the local xb2-axis +ElastoDyn['Spn1ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 1; Directed along the local yb2-axis +ElastoDyn['Spn1ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 1; Directed along the local zb2-axis +ElastoDyn['Spn2ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 2; Directed along the local xb2-axis +ElastoDyn['Spn2ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 2; Directed along the local yb2-axis +ElastoDyn['Spn2ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 2; Directed along the local zb2-axis +ElastoDyn['Spn3ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 3; Directed along the local xb2-axis +ElastoDyn['Spn3ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 3; Directed along the local yb2-axis +ElastoDyn['Spn3ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 3; Directed along the local zb2-axis +ElastoDyn['Spn4ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 4; Directed along the local xb2-axis +ElastoDyn['Spn4ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 4; Directed along the local yb2-axis +ElastoDyn['Spn4ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 4; Directed along the local zb2-axis +ElastoDyn['Spn5ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 5; Directed along the local xb2-axis +ElastoDyn['Spn5ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 5; Directed along the local yb2-axis +ElastoDyn['Spn5ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 5; Directed along the local zb2-axis +ElastoDyn['Spn6ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 6; Directed along the local xb2-axis +ElastoDyn['Spn6ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 6; Directed along the local yb2-axis +ElastoDyn['Spn6ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 6; Directed along the local zb2-axis +ElastoDyn['Spn7ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 7; Directed along the local xb2-axis +ElastoDyn['Spn7ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 7; Directed along the local yb2-axis +ElastoDyn['Spn7ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 7; Directed along the local zb2-axis +ElastoDyn['Spn8ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 8; Directed along the local xb2-axis +ElastoDyn['Spn8ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 8; Directed along the local yb2-axis +ElastoDyn['Spn8ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 8; Directed along the local zb2-axis +ElastoDyn['Spn9ALxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (absolute) of span station 9; Directed along the local xb2-axis +ElastoDyn['Spn9ALyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (absolute) of span station 9; Directed along the local yb2-axis +ElastoDyn['Spn9ALzb2'] = False # (m/s^2); Blade 2 local axial acceleration (absolute) of span station 9; Directed along the local zb2-axis +ElastoDyn['Spn1ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 1; Directed along the local xb2-axis +ElastoDyn['Spn1ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 1; Directed along the local yb2-axis +ElastoDyn['Spn1ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 1; Directed along the local zb2-axis +ElastoDyn['Spn2ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 2; Directed along the local xb2-axis +ElastoDyn['Spn2ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 2; Directed along the local yb2-axis +ElastoDyn['Spn2ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 2; Directed along the local zb2-axis +ElastoDyn['Spn3ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 3; Directed along the local xb2-axis +ElastoDyn['Spn3ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 3; Directed along the local yb2-axis +ElastoDyn['Spn3ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 3; Directed along the local zb2-axis +ElastoDyn['Spn4ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 4; Directed along the local xb2-axis +ElastoDyn['Spn4ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 4; Directed along the local yb2-axis +ElastoDyn['Spn4ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 4; Directed along the local zb2-axis +ElastoDyn['Spn5ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 5; Directed along the local xb2-axis +ElastoDyn['Spn5ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 5; Directed along the local yb2-axis +ElastoDyn['Spn5ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 5; Directed along the local zb2-axis +ElastoDyn['Spn6ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 6; Directed along the local xb2-axis +ElastoDyn['Spn6ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 6; Directed along the local yb2-axis +ElastoDyn['Spn6ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 6; Directed along the local zb2-axis +ElastoDyn['Spn7ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 7; Directed along the local xb2-axis +ElastoDyn['Spn7ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 7; Directed along the local yb2-axis +ElastoDyn['Spn7ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 7; Directed along the local zb2-axis +ElastoDyn['Spn8ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 8; Directed along the local xb2-axis +ElastoDyn['Spn8ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 8; Directed along the local yb2-axis +ElastoDyn['Spn8ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 8; Directed along the local zb2-axis +ElastoDyn['Spn9ALgxb2'] = False # (m/s^2); Blade 2 local flapwise acceleration (relative to g) of span station 9; Directed along the local xb2-axis +ElastoDyn['Spn9ALgyb2'] = False # (m/s^2); Blade 2 local edgewise acceleration (relative to g) of span station 9; Directed along the local yb2-axis +ElastoDyn['Spn9ALgzb2'] = False # (m/s^2); Blade 2 local axial acceleration (relative to g) of span station 9; Directed along the local zb2-axis +ElastoDyn['Spn1TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the xb2-axis +ElastoDyn['Spn1TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the yb2-axis +ElastoDyn['Spn1TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 1; Directed along the zb2-axis +ElastoDyn['Spn2TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the xb2-axis +ElastoDyn['Spn2TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the yb2-axis +ElastoDyn['Spn2TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 2; Directed along the zb2-axis +ElastoDyn['Spn3TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the xb2-axis +ElastoDyn['Spn3TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the yb2-axis +ElastoDyn['Spn3TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 3; Directed along the zb2-axis +ElastoDyn['Spn4TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the xb2-axis +ElastoDyn['Spn4TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the yb2-axis +ElastoDyn['Spn4TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 4; Directed along the zb2-axis +ElastoDyn['Spn5TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the xb2-axis +ElastoDyn['Spn5TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the yb2-axis +ElastoDyn['Spn5TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 5; Directed along the zb2-axis +ElastoDyn['Spn6TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the xb2-axis +ElastoDyn['Spn6TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the yb2-axis +ElastoDyn['Spn6TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 6; Directed along the zb2-axis +ElastoDyn['Spn7TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the xb2-axis +ElastoDyn['Spn7TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the yb2-axis +ElastoDyn['Spn7TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 7; Directed along the zb2-axis +ElastoDyn['Spn8TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the xb2-axis +ElastoDyn['Spn8TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the yb2-axis +ElastoDyn['Spn8TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 8; Directed along the zb2-axis +ElastoDyn['Spn9TDxb2'] = False # (m); Blade 2 local flapwise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the xb2-axis +ElastoDyn['Spn9TDyb2'] = False # (m); Blade 2 local edgewise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the yb2-axis +ElastoDyn['Spn9TDzb2'] = False # (m); Blade 2 local axial (translational) deflection (relative to the undeflected position) of span station 9; Directed along the zb2-axis +ElastoDyn['Spn1RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn1RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn1RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 1. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn2RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn2RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn2RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 2. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn3RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn3RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn3RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 3. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn4RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn4RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn4RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 4. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn5RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn5RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn5RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 5. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn6RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn6RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn6RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 6. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn7RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn7RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn7RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 7. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn8RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn8RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn8RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 8. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis +ElastoDyn['Spn9RDxb2'] = False # (deg); Blade 2 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb2-axis +ElastoDyn['Spn9RDyb2'] = False # (deg); Blade 2 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb2-axis +ElastoDyn['Spn9RDzb2'] = False # (deg); Blade 2 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 9. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb2-axis + +# Blade 3 Local Span Motions +ElastoDyn['Spn1ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 1; Directed along the local xb3-axis +ElastoDyn['Spn1ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 1; Directed along the local yb3-axis +ElastoDyn['Spn1ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 1; Directed along the local zb3-axis +ElastoDyn['Spn2ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 2; Directed along the local xb3-axis +ElastoDyn['Spn2ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 2; Directed along the local yb3-axis +ElastoDyn['Spn2ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 2; Directed along the local zb3-axis +ElastoDyn['Spn3ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 3; Directed along the local xb3-axis +ElastoDyn['Spn3ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 3; Directed along the local yb3-axis +ElastoDyn['Spn3ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 3; Directed along the local zb3-axis +ElastoDyn['Spn4ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 4; Directed along the local xb3-axis +ElastoDyn['Spn4ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 4; Directed along the local yb3-axis +ElastoDyn['Spn4ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 4; Directed along the local zb3-axis +ElastoDyn['Spn5ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 5; Directed along the local xb3-axis +ElastoDyn['Spn5ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 5; Directed along the local yb3-axis +ElastoDyn['Spn5ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 5; Directed along the local zb3-axis +ElastoDyn['Spn6ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 6; Directed along the local xb3-axis +ElastoDyn['Spn6ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 6; Directed along the local yb3-axis +ElastoDyn['Spn6ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 6; Directed along the local zb3-axis +ElastoDyn['Spn7ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 7; Directed along the local xb3-axis +ElastoDyn['Spn7ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 7; Directed along the local yb3-axis +ElastoDyn['Spn7ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 7; Directed along the local zb3-axis +ElastoDyn['Spn8ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 8; Directed along the local xb3-axis +ElastoDyn['Spn8ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 8; Directed along the local yb3-axis +ElastoDyn['Spn8ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 8; Directed along the local zb3-axis +ElastoDyn['Spn9ALxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (absolute) of span station 9; Directed along the local xb3-axis +ElastoDyn['Spn9ALyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (absolute) of span station 9; Directed along the local yb3-axis +ElastoDyn['Spn9ALzb3'] = False # (m/s^2); Blade 3 local axial acceleration (absolute) of span station 9; Directed along the local zb3-axis +ElastoDyn['Spn1ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 1; Directed along the local xb3-axis +ElastoDyn['Spn1ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 1; Directed along the local yb3-axis +ElastoDyn['Spn1ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 1; Directed along the local zb3-axis +ElastoDyn['Spn2ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 2; Directed along the local xb3-axis +ElastoDyn['Spn2ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 2; Directed along the local yb3-axis +ElastoDyn['Spn2ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 2; Directed along the local zb3-axis +ElastoDyn['Spn3ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 3; Directed along the local xb3-axis +ElastoDyn['Spn3ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 3; Directed along the local yb3-axis +ElastoDyn['Spn3ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 3; Directed along the local zb3-axis +ElastoDyn['Spn4ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 4; Directed along the local xb3-axis +ElastoDyn['Spn4ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 4; Directed along the local yb3-axis +ElastoDyn['Spn4ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 4; Directed along the local zb3-axis +ElastoDyn['Spn5ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 5; Directed along the local xb3-axis +ElastoDyn['Spn5ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 5; Directed along the local yb3-axis +ElastoDyn['Spn5ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 5; Directed along the local zb3-axis +ElastoDyn['Spn6ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 6; Directed along the local xb3-axis +ElastoDyn['Spn6ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 6; Directed along the local yb3-axis +ElastoDyn['Spn6ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 6; Directed along the local zb3-axis +ElastoDyn['Spn7ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 7; Directed along the local xb3-axis +ElastoDyn['Spn7ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 7; Directed along the local yb3-axis +ElastoDyn['Spn7ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 7; Directed along the local zb3-axis +ElastoDyn['Spn8ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 8; Directed along the local xb3-axis +ElastoDyn['Spn8ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 8; Directed along the local yb3-axis +ElastoDyn['Spn8ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 8; Directed along the local zb3-axis +ElastoDyn['Spn9ALgxb3'] = False # (m/s^2); Blade 3 local flapwise acceleration (relative to g) of span station 9; Directed along the local xb3-axis +ElastoDyn['Spn9ALgyb3'] = False # (m/s^2); Blade 3 local edgewise acceleration (relative to g) of span station 9; Directed along the local yb3-axis +ElastoDyn['Spn9ALgzb3'] = False # (m/s^2); Blade 3 local axial acceleration (relative to g) of span station 9; Directed along the local zb3-axis +ElastoDyn['Spn1TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the xb3-axis +ElastoDyn['Spn1TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 1; Directed along the yb3-axis +ElastoDyn['Spn1TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 1; Directed along the zb3-axis +ElastoDyn['Spn2TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the xb3-axis +ElastoDyn['Spn2TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 2; Directed along the yb3-axis +ElastoDyn['Spn2TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 2; Directed along the zb3-axis +ElastoDyn['Spn3TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the xb3-axis +ElastoDyn['Spn3TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 3; Directed along the yb3-axis +ElastoDyn['Spn3TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 3; Directed along the zb3-axis +ElastoDyn['Spn4TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the xb3-axis +ElastoDyn['Spn4TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 4; Directed along the yb3-axis +ElastoDyn['Spn4TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 4; Directed along the zb3-axis +ElastoDyn['Spn5TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the xb3-axis +ElastoDyn['Spn5TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 5; Directed along the yb3-axis +ElastoDyn['Spn5TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 5; Directed along the zb3-axis +ElastoDyn['Spn6TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the xb3-axis +ElastoDyn['Spn6TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 6; Directed along the yb3-axis +ElastoDyn['Spn6TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 6; Directed along the zb3-axis +ElastoDyn['Spn7TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the xb3-axis +ElastoDyn['Spn7TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 7; Directed along the yb3-axis +ElastoDyn['Spn7TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 7; Directed along the zb3-axis +ElastoDyn['Spn8TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the xb3-axis +ElastoDyn['Spn8TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 8; Directed along the yb3-axis +ElastoDyn['Spn8TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 8; Directed along the zb3-axis +ElastoDyn['Spn9TDxb3'] = False # (m); Blade 3 local flapwise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the xb3-axis +ElastoDyn['Spn9TDyb3'] = False # (m); Blade 3 local edgewise (translational) deflection (relative to the undeflected position) of span station 9; Directed along the yb3-axis +ElastoDyn['Spn9TDzb3'] = False # (m); Blade 3 local axial (translational) deflection (relative to the undeflected position) of span station 9; Directed along the zb3-axis +ElastoDyn['Spn1RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn1RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 1. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn1RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 1. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn2RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn2RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 2. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn2RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 2. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn3RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn3RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 3. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn3RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 3. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn4RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn4RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 4. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn4RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 4. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn5RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn5RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 5. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn5RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 5. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn6RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn6RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 6. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn6RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 6. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn7RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn7RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 7. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn7RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 7. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn8RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn8RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 8. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn8RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 8. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis +ElastoDyn['Spn9RDxb3'] = False # (deg); Blade 3 local roll (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local xb3-axis +ElastoDyn['Spn9RDyb3'] = False # (deg); Blade 3 local pitch (angular/rotational) deflection (relative to the undeflected position) of span station 9. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small blade deflections, so that the rotation sequence does not matter.; About the local yb3-axis +ElastoDyn['Spn9RDzb3'] = False # (deg); Blade 3 local torsional (angular/rotational) deflection (relative to the undeflected position) of span station 9. This output will always be zero for FAST simulation results. Use it for examining blade torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. Please note that this output uses the opposite of the sign convention used for blade pitch angles.; About the local zb3-axis + +# Blade Pitch Motions +ElastoDyn['PtchPMzc1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +ElastoDyn['PtchPMzb1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +ElastoDyn['BldPitch1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +ElastoDyn['BlPitch1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +ElastoDyn['PtchPMzc2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +ElastoDyn['PtchPMzb2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +ElastoDyn['BldPitch2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +ElastoDyn['BlPitch2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +ElastoDyn['PtchPMzc3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes +ElastoDyn['PtchPMzb3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes +ElastoDyn['BldPitch3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes +ElastoDyn['BlPitch3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes + +# Teeter Motions +ElastoDyn['TeetPya'] = False # (deg); Rotor teeter angle (position); About the ya-axis +ElastoDyn['RotTeetP'] = False # (deg); Rotor teeter angle (position); About the ya-axis +ElastoDyn['TeetDefl'] = False # (deg); Rotor teeter angle (position); About the ya-axis +ElastoDyn['TeetVya'] = False # (deg/s); Rotor teeter angular velocity; About the ya-axis +ElastoDyn['RotTeetV'] = False # (deg/s); Rotor teeter angular velocity; About the ya-axis +ElastoDyn['TeetAya'] = False # (deg/s^2); Rotor teeter angular acceleration; About the ya-axis +ElastoDyn['RotTeetA'] = False # (deg/s^2); Rotor teeter angular acceleration; About the ya-axis + +# Shaft Motions +ElastoDyn['LSSTipPxa'] = False # (deg); Rotor azimuth angle (position); About the xa- and xs-axes +ElastoDyn['LSSTipPxs'] = False # (deg); Rotor azimuth angle (position); About the xa- and xs-axes +ElastoDyn['LSSTipP'] = False # (deg); Rotor azimuth angle (position); About the xa- and xs-axes +ElastoDyn['Azimuth'] = False # (deg); Rotor azimuth angle (position); About the xa- and xs-axes +ElastoDyn['LSSTipVxa'] = False # (rpm); Rotor azimuth angular speed; About the xa- and xs-axes +ElastoDyn['LSSTipVxs'] = False # (rpm); Rotor azimuth angular speed; About the xa- and xs-axes +ElastoDyn['LSSTipV'] = False # (rpm); Rotor azimuth angular speed; About the xa- and xs-axes +ElastoDyn['RotSpeed'] = False # (rpm); Rotor azimuth angular speed; About the xa- and xs-axes +ElastoDyn['LSSTipAxa'] = False # (deg/s^2); Rotor azimuth angular acceleration; About the xa- and xs-axes +ElastoDyn['LSSTipAxs'] = False # (deg/s^2); Rotor azimuth angular acceleration; About the xa- and xs-axes +ElastoDyn['LSSTipA'] = False # (deg/s^2); Rotor azimuth angular acceleration; About the xa- and xs-axes +ElastoDyn['RotAccel'] = False # (deg/s^2); Rotor azimuth angular acceleration; About the xa- and xs-axes +ElastoDyn['LSSGagPxa'] = False # (deg); Low-speed shaft strain gage azimuth angle (position) (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagPxs'] = False # (deg); Low-speed shaft strain gage azimuth angle (position) (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagP'] = False # (deg); Low-speed shaft strain gage azimuth angle (position) (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagVxa'] = False # (rpm); Low-speed shaft strain gage angular speed (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagVxs'] = False # (rpm); Low-speed shaft strain gage angular speed (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagV'] = False # (rpm); Low-speed shaft strain gage angular speed (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagAxa'] = False # (deg/s^2); Low-speed shaft strain gage angular acceleration (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagAxs'] = False # (deg/s^2); Low-speed shaft strain gage angular acceleration (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['LSSGagA'] = False # (deg/s^2); Low-speed shaft strain gage angular acceleration (on the gearbox side of the low-speed shaft); About the xa- and xs-axes +ElastoDyn['HSShftV'] = False # (rpm); Angular speed of the high-speed shaft and generator; Same sign as LSSGagVxa / LSSGagVxs / LSSGagV +ElastoDyn['GenSpeed'] = False # (rpm); Angular speed of the high-speed shaft and generator; Same sign as LSSGagVxa / LSSGagVxs / LSSGagV +ElastoDyn['HSShftA'] = False # (deg/s^2); Angular acceleration of the high-speed shaft and generator; Same sign as LSSGagAxa / LSSGagAxs / LSSGagA +ElastoDyn['GenAccel'] = False # (deg/s^2); Angular acceleration of the high-speed shaft and generator; Same sign as LSSGagAxa / LSSGagAxs / LSSGagA + +# Nacelle IMU Motions +ElastoDyn['NcIMUTVxs'] = False # (m/s); Nacelle inertial measurement unit translational velocity (absolute); Directed along the xs-axis +ElastoDyn['NcIMUTVys'] = False # (m/s); Nacelle inertial measurement unit translational velocity (absolute); Directed along the ys-axis +ElastoDyn['NcIMUTVzs'] = False # (m/s); Nacelle inertial measurement unit translational velocity (absolute); Directed along the zs-axis +ElastoDyn['NcIMUTAxs'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (absolute); Directed along the xs-axis +ElastoDyn['NcIMUTAys'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (absolute); Directed along the ys-axis +ElastoDyn['NcIMUTAzs'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (absolute); Directed along the zs-axis +ElastoDyn['NcIMUTAgxs'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (relative to g); Directed along the xs-axis +ElastoDyn['NcIMUTAgys'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (relative to g); Directed along the ys-axis +ElastoDyn['NcIMUTAgzs'] = False # (m/s^2); Nacelle inertial measurement unit translational acceleration (relative to g); Directed along the zs-axis +ElastoDyn['NcIMURVxs'] = False # (deg/s); Nacelle inertial measurement unit angular (rotational) velocity (absolute); About the xs-axis +ElastoDyn['NcIMURVys'] = False # (deg/s); Nacelle inertial measurement unit angular (rotational) velocity (absolute); About the ys-axis +ElastoDyn['NcIMURVzs'] = False # (deg/s); Nacelle inertial measurement unit angular (rotational) velocity (absolute); About the zs-axis +ElastoDyn['NcIMURAxs'] = False # (deg/s^2); Nacelle inertial measurement unit angular (rotational) acceleration (absolute); About the xs-axis +ElastoDyn['NcIMURAys'] = False # (deg/s^2); Nacelle inertial measurement unit angular (rotational) acceleration (absolute); About the ys-axis +ElastoDyn['NcIMURAzs'] = False # (deg/s^2); Nacelle inertial measurement unit angular (rotational) acceleration (absolute); About the zs-axis + +# Rotor-Furl Motions +ElastoDyn['RotFurlP'] = False # (deg); Rotor-furl angle (position); About the rotor-furl axis +ElastoDyn['RotFurl'] = False # (deg); Rotor-furl angle (position); About the rotor-furl axis +ElastoDyn['RotFurlV'] = False # (deg/s); Rotor-furl angular velocity; About the rotor-furl axis +ElastoDyn['RotFurlA'] = False # (deg/s^2); Rotor-furl angular acceleration; About the rotor-furl axis + +# Tail-Furl Motions +ElastoDyn['TailFurlP'] = False # (deg); Tail-furl angle (position); About the tail-furl axis +ElastoDyn['TailFurl'] = False # (deg); Tail-furl angle (position); About the tail-furl axis +ElastoDyn['TailFurlV'] = False # (deg/s); Tail-furl angular velocity; About the tail-furl axis +ElastoDyn['TailFurlA'] = False # (deg/s^2); Tail-furl angular acceleration; About the tail-furl axis + +# Nacelle Yaw Motions +ElastoDyn['YawPzn'] = False # (deg); Nacelle yaw angle (position); About the zn- and zp-axes +ElastoDyn['YawPzp'] = False # (deg); Nacelle yaw angle (position); About the zn- and zp-axes +ElastoDyn['NacYawP'] = False # (deg); Nacelle yaw angle (position); About the zn- and zp-axes +ElastoDyn['NacYaw'] = False # (deg); Nacelle yaw angle (position); About the zn- and zp-axes +ElastoDyn['YawPos'] = False # (deg); Nacelle yaw angle (position); About the zn- and zp-axes +ElastoDyn['YawVzn'] = False # (deg/s); Nacelle yaw angular velocity; About the zn- and zp-axes +ElastoDyn['YawVzp'] = False # (deg/s); Nacelle yaw angular velocity; About the zn- and zp-axes +ElastoDyn['NacYawV'] = False # (deg/s); Nacelle yaw angular velocity; About the zn- and zp-axes +ElastoDyn['YawRate'] = False # (deg/s); Nacelle yaw angular velocity; About the zn- and zp-axes +ElastoDyn['YawAzn'] = False # (deg/s^2); Nacelle yaw angular acceleration; About the zn- and zp-axes +ElastoDyn['YawAzp'] = False # (deg/s^2); Nacelle yaw angular acceleration; About the zn- and zp-axes +ElastoDyn['NacYawA'] = False # (deg/s^2); Nacelle yaw angular acceleration; About the zn- and zp-axes +ElastoDyn['YawAccel'] = False # (deg/s^2); Nacelle yaw angular acceleration; About the zn- and zp-axes + +# Tower-Top / Yaw Bearing Motions +ElastoDyn['TwrTpTDxi'] = False # (m); Tower-top / yaw bearing fore-aft (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the xi-axis +ElastoDyn['YawBrTDxi'] = False # (m); Tower-top / yaw bearing fore-aft (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the xi-axis +ElastoDyn['TwrTpTDyi'] = False # (m); Tower-top / yaw bearing side-to-side (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the yi-axis +ElastoDyn['YawBrTDyi'] = False # (m); Tower-top / yaw bearing side-to-side (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the yi-axis +ElastoDyn['TwrTpTDzi'] = False # (m); Tower-top / yaw bearing axial (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the zi-axis +ElastoDyn['YawBrTDzi'] = False # (m); Tower-top / yaw bearing axial (translational) deflection (relative to the undeflected position) including all platform motions; Directed along the zi-axis +ElastoDyn['YawBrTDxp'] = False # (m); Tower-top / yaw bearing fore-aft (translational) deflection (relative to the undeflected position); Directed along the xp-axis +ElastoDyn['YawBrTDyp'] = False # (m); Tower-top / yaw bearing side-to-side (translational) deflection (relative to the undeflected position); Directed along the yp-axis +ElastoDyn['YawBrTDzp'] = False # (m); Tower-top / yaw bearing axial (translational) deflection (relative to the undeflected position); Directed along the zp-axis +ElastoDyn['YawBrTDxt'] = False # (m); Tower-top / yaw bearing fore-aft (translational) deflection (relative to the undeflected position); Directed along the xt-axis +ElastoDyn['TTDspFA'] = False # (m); Tower-top / yaw bearing fore-aft (translational) deflection (relative to the undeflected position); Directed along the xt-axis +ElastoDyn['YawBrTDyt'] = False # (m); Tower-top / yaw bearing side-to-side (translation) deflection (relative to the undeflected position); Directed along the yt-axis +ElastoDyn['TTDspSS'] = False # (m); Tower-top / yaw bearing side-to-side (translation) deflection (relative to the undeflected position); Directed along the yt-axis +ElastoDyn['YawBrTDzt'] = False # (m); Tower-top / yaw bearing axial (translational) deflection (relative to the undeflected position); Directed along the zt-axis +ElastoDyn['TTDspAx'] = False # (m); Tower-top / yaw bearing axial (translational) deflection (relative to the undeflected position); Directed along the zt-axis +ElastoDyn['YawBrTVxp'] = False # (m/s); Tower-top / yaw bearing fore-aft (translational) velocity (absolute); Directed along the xp-axis +ElastoDyn['YawBrTVyp'] = False # (m/s); Tower-top / yaw bearing side-to-side (translational) velocity (absolute); Directed along the yp-axis +ElastoDyn['YawBrTVzp'] = False # (m/s); Tower-top / yaw bearing axial (translational) velocity (absolute); Directed along the zp-axis +ElastoDyn['YawBrTAxp'] = False # (m/s^2); Tower-top / yaw bearing fore-aft (translational) acceleration (absolute); Directed along the xp-axis +ElastoDyn['YawBrTAyp'] = False # (m/s^2); Tower-top / yaw bearing side-to-side (translational) acceleration (absolute); Directed along the yp-axis +ElastoDyn['YawBrTAzp'] = False # (m/s^2); Tower-top / yaw bearing axial (translational) acceleration (absolute); Directed along the zp-axis +ElastoDyn['YawBrTAgxp'] = False # (m/s^2); Tower-top / yaw bearing fore-aft (translational) acceleration (relative to g); Directed along the xp-axis +ElastoDyn['YawBrTAgyp'] = False # (m/s^2); Tower-top / yaw bearing side-to-side (translational) acceleration (relative to g); Directed along the yp-axis +ElastoDyn['YawBrTAgzp'] = False # (m/s^2); Tower-top / yaw bearing axial (translational) acceleration (relative to g); Directed along the zp-axis +ElastoDyn['YawBrRDxt'] = False # (deg); Tower-top / yaw bearing angular (rotational) roll deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the xt-axis +ElastoDyn['TTDspRoll'] = False # (deg); Tower-top / yaw bearing angular (rotational) roll deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the xt-axis +ElastoDyn['YawBrRDyt'] = False # (deg); Tower-top / yaw bearing angular (rotational) pitch deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the yt-axis +ElastoDyn['TTDspPtch'] = False # (deg); Tower-top / yaw bearing angular (rotational) pitch deflection (relative to the undeflected position). In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the yt-axis +ElastoDyn['YawBrRDzt'] = False # (deg); Tower-top / yaw bearing angular (rotational) torsion deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the zt-axis +ElastoDyn['TTDspTwst'] = False # (deg); Tower-top / yaw bearing angular (rotational) torsion deflection (relative to the undeflected position). This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the zt-axis +ElastoDyn['YawBrRVxp'] = False # (deg/s); Tower-top / yaw bearing angular (rotational) roll velocity (absolute); About the xp-axis +ElastoDyn['YawBrRVyp'] = False # (deg/s); Tower-top / yaw bearing angular (rotational) pitch velocity (absolute); About the yp-axis +ElastoDyn['YawBrRVzp'] = False # (deg/s); Tower-top / yaw bearing angular (rotational) torsion velocity. This output will always be very close to zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. (absolute); About the zp-axis +ElastoDyn['YawBrRAxp'] = False # (deg/s^2); Tower-top / yaw bearing angular (rotational) roll acceleration (absolute); About the xp-axis +ElastoDyn['YawBrRAyp'] = False # (deg/s^2); Tower-top / yaw bearing angular (rotational) pitch acceleration (absolute); About the yp-axis +ElastoDyn['YawBrRAzp'] = False # (deg/s^2); Tower-top / yaw bearing angular (rotational) torsion acceleration. This output will always be very close to zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. (absolute); About the zp-axis + +# Local Tower Motions +ElastoDyn['TwHt1ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 1 ; Directed along the local xt-axis +ElastoDyn['TwHt1ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 1 ; Directed along the local yt-axis +ElastoDyn['TwHt1ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 1 ; Directed along the local zt-axis +ElastoDyn['TwHt2ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 2; Directed along the local xt-axis +ElastoDyn['TwHt2ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 2; Directed along the local yt-axis +ElastoDyn['TwHt2ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 2; Directed along the local zt-axis +ElastoDyn['TwHt3ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 3; Directed along the local xt-axis +ElastoDyn['TwHt3ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 3; Directed along the local yt-axis +ElastoDyn['TwHt3ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 3; Directed along the local zt-axis +ElastoDyn['TwHt4ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 4; Directed along the local xt-axis +ElastoDyn['TwHt4ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 4; Directed along the local yt-axis +ElastoDyn['TwHt4ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 4; Directed along the local zt-axis +ElastoDyn['TwHt5ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 5; Directed along the local xt-axis +ElastoDyn['TwHt5ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 5; Directed along the local yt-axis +ElastoDyn['TwHt5ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 5; Directed along the local zt-axis +ElastoDyn['TwHt6ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 6; Directed along the local xt-axis +ElastoDyn['TwHt6ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 6; Directed along the local yt-axis +ElastoDyn['TwHt6ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 6; Directed along the local zt-axis +ElastoDyn['TwHt7ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 7; Directed along the local xt-axis +ElastoDyn['TwHt7ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 7; Directed along the local yt-axis +ElastoDyn['TwHt7ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 7; Directed along the local zt-axis +ElastoDyn['TwHt8ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 8; Directed along the local xt-axis +ElastoDyn['TwHt8ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 8; Directed along the local yt-axis +ElastoDyn['TwHt8ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 8; Directed along the local zt-axis +ElastoDyn['TwHt9ALxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (absolute) of tower gage 9; Directed along the local xt-axis +ElastoDyn['TwHt9ALyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (absolute) of tower gage 9; Directed along the local yt-axis +ElastoDyn['TwHt9ALzt'] = False # (m/s^2); Local tower axial (translational) acceleration (absolute) of tower gage 9; Directed along the local zt-axis +ElastoDyn['TwHt1ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 1 ; Directed along the local xt-axis +ElastoDyn['TwHt1ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 1 ; Directed along the local yt-axis +ElastoDyn['TwHt1ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 1 ; Directed along the local zt-axis +ElastoDyn['TwHt2ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 2; Directed along the local xt-axis +ElastoDyn['TwHt2ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 2; Directed along the local yt-axis +ElastoDyn['TwHt2ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 2; Directed along the local zt-axis +ElastoDyn['TwHt3ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 3; Directed along the local xt-axis +ElastoDyn['TwHt3ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 3; Directed along the local yt-axis +ElastoDyn['TwHt3ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 3; Directed along the local zt-axis +ElastoDyn['TwHt4ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 4; Directed along the local xt-axis +ElastoDyn['TwHt4ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 4; Directed along the local yt-axis +ElastoDyn['TwHt4ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 4; Directed along the local zt-axis +ElastoDyn['TwHt5ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 5; Directed along the local xt-axis +ElastoDyn['TwHt5ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 5; Directed along the local yt-axis +ElastoDyn['TwHt5ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 5; Directed along the local zt-axis +ElastoDyn['TwHt6ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 6; Directed along the local xt-axis +ElastoDyn['TwHt6ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 6; Directed along the local yt-axis +ElastoDyn['TwHt6ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 6; Directed along the local zt-axis +ElastoDyn['TwHt7ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 7; Directed along the local xt-axis +ElastoDyn['TwHt7ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 7; Directed along the local yt-axis +ElastoDyn['TwHt7ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 7; Directed along the local zt-axis +ElastoDyn['TwHt8ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 8; Directed along the local xt-axis +ElastoDyn['TwHt8ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 8; Directed along the local yt-axis +ElastoDyn['TwHt8ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 8; Directed along the local zt-axis +ElastoDyn['TwHt9ALgxt'] = False # (m/s^2); Local tower fore-aft (translational) acceleration (relative to g) of tower gage 9; Directed along the local xt-axis +ElastoDyn['TwHt9ALgyt'] = False # (m/s^2); Local tower side-to-side (translational) acceleration (relative to g) of tower gage 9; Directed along the local yt-axis +ElastoDyn['TwHt9ALgzt'] = False # (m/s^2); Local tower axial (translational) acceleration (relative to g) of tower gage 9; Directed along the local zt-axis +ElastoDyn['TwHt1TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 1; Directed along the local xt-axis +ElastoDyn['TwHt1TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 1; Directed along the local yt-axis +ElastoDyn['TwHt1TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 1; Directed along the local zt-axis +ElastoDyn['TwHt2TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 2; Directed along the local xt-axis +ElastoDyn['TwHt2TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 2; Directed along the local yt-axis +ElastoDyn['TwHt2TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 2; Directed along the local zt-axis +ElastoDyn['TwHt3TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 3; Directed along the local xt-axis +ElastoDyn['TwHt3TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 3; Directed along the local yt-axis +ElastoDyn['TwHt3TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 3; Directed along the local zt-axis +ElastoDyn['TwHt4TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 4; Directed along the local xt-axis +ElastoDyn['TwHt4TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 4; Directed along the local yt-axis +ElastoDyn['TwHt4TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 4; Directed along the local zt-axis +ElastoDyn['TwHt5TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 5; Directed along the local xt-axis +ElastoDyn['TwHt5TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 5; Directed along the local yt-axis +ElastoDyn['TwHt5TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 5; Directed along the local zt-axis +ElastoDyn['TwHt6TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 6; Directed along the local xt-axis +ElastoDyn['TwHt6TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 6; Directed along the local yt-axis +ElastoDyn['TwHt6TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 6; Directed along the local zt-axis +ElastoDyn['TwHt7TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 7; Directed along the local xt-axis +ElastoDyn['TwHt7TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 7; Directed along the local yt-axis +ElastoDyn['TwHt7TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 7; Directed along the local zt-axis +ElastoDyn['TwHt8TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 8; Directed along the local xt-axis +ElastoDyn['TwHt8TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 8; Directed along the local yt-axis +ElastoDyn['TwHt8TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 8; Directed along the local zt-axis +ElastoDyn['TwHt9TDxt'] = False # (m); Local tower fore-aft (translational) deflection (relative to the undeflected position) of tower gage 9; Directed along the local xt-axis +ElastoDyn['TwHt9TDyt'] = False # (m); Local tower side-to-side (translational) deflection (relative to the undeflected position) of tower gage 9; Directed along the local yt-axis +ElastoDyn['TwHt9TDzt'] = False # (m); Local tower axial (translational) deflection (relative to the undeflected position) of tower gage 9; Directed along the local zt-axis +ElastoDyn['TwHt1RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 1. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt1RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 1. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt1RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 1. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt2RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 2. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt2RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 2. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt2RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 2. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt3RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 3. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt3RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 3. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt3RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 3. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt4RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 4. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt4RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 4. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt4RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 4. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt5RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 5. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt5RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 5. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt5RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 5. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt6RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 6. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt6RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 6. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt6RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 6. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt7RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 7. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt7RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 7. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt7RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 7. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt8RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 8. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt8RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 8. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt8RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 8. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt9RDxt'] = False # (deg); Local tower angular (rotational) roll deflection (relative to the undeflected position) of tower gage 9. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local xt-axis +ElastoDyn['TwHt9RDyt'] = False # (deg); Local tower angular (rotational) pitch deflection (relative to the undeflected position) of tower gage 9. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower deflections, so that the rotation sequence does not matter.; About the local yt-axis +ElastoDyn['TwHt9RDzt'] = False # (deg); Local tower angular (rotational) torsion deflection (relative to the undeflected position) of tower gage 9. This output will always be zero for FAST simulation results. Use it for examining tower torsional deflections of ADAMS simulations run using ADAMS datasets created using the FAST-to-ADAMS preprocessor. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence.; About the local zt-axis +ElastoDyn['TwHt1TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 1; Directed along the local xi-axis +ElastoDyn['TwHt1TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 1; Directed along the local yi-axis +ElastoDyn['TwHt1TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 1; Directed along the local zi-axis +ElastoDyn['TwHt2TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 2; Directed along the local xi-axis +ElastoDyn['TwHt2TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 2; Directed along the local yi-axis +ElastoDyn['TwHt2TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 2; Directed along the local zi-axis +ElastoDyn['TwHt3TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 3; Directed along the local xi-axis +ElastoDyn['TwHt3TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 3; Directed along the local yi-axis +ElastoDyn['TwHt3TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 3; Directed along the local zi-axis +ElastoDyn['TwHt4TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 4; Directed along the local xi-axis +ElastoDyn['TwHt4TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 4; Directed along the local yi-axis +ElastoDyn['TwHt4TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 4; Directed along the local zi-axis +ElastoDyn['TwHt5TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 5; Directed along the local xi-axis +ElastoDyn['TwHt5TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 5; Directed along the local yi-axis +ElastoDyn['TwHt5TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 5; Directed along the local zi-axis +ElastoDyn['TwHt6TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 6; Directed along the local xi-axis +ElastoDyn['TwHt6TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 6; Directed along the local yi-axis +ElastoDyn['TwHt6TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 6; Directed along the local zi-axis +ElastoDyn['TwHt7TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 7; Directed along the local xi-axis +ElastoDyn['TwHt7TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 7; Directed along the local yi-axis +ElastoDyn['TwHt7TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 7; Directed along the local zi-axis +ElastoDyn['TwHt8TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 8; Directed along the local xi-axis +ElastoDyn['TwHt8TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 8; Directed along the local yi-axis +ElastoDyn['TwHt8TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 8; Directed along the local zi-axis +ElastoDyn['TwHt9TPxi'] = False # (m); xi-component of the translational position (relative to the inertia frame) of tower gage 9; Directed along the local xi-axis +ElastoDyn['TwHt9TPyi'] = False # (m); yi-component of the translational position (relative to the inertia frame) of tower gage 9; Directed along the local yi-axis +ElastoDyn['TwHt9TPzi'] = False # (m); zi-component of the translational position (relative to ground level [onshore] or MSL [offshore]) of tower gage 9; Directed along the local zi-axis +ElastoDyn['TwHt1RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 1. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt1RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 1. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt1RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 1. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt2RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 2. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt2RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 2. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt2RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 2. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt3RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 3. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt3RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 3. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt3RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 3. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt4RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 4. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt4RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 4. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt4RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 4. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt5RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 5. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt5RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 5. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt5RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 5. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt6RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 6. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt6RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 6. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt6RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 6. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt7RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 7. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt7RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 7. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt7RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 7. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt8RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 8. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt8RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 8. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt8RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 8. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis +ElastoDyn['TwHt9RPxi'] = False # (deg); xi-component of the rotational position (relative to the inertia frame) of tower gage 9. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local xi-axis +ElastoDyn['TwHt9RPyi'] = False # (deg); yi-component of the rotational position (relative to the inertia frame) of tower gage 9. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local yi-axis +ElastoDyn['TwHt9RPzi'] = False # (deg); zi-component of the rotational position (relative to the inertia frame) of tower gage 9. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small tower and platform rotational deflections, so that the rotation sequence does not matter.; About the local zi-axis + +# Platform Motions +ElastoDyn['PtfmTDxt'] = False # (m); Platform horizontal surge (translational) displacement; Directed along the xt-axis +ElastoDyn['PtfmTDyt'] = False # (m); Platform horizontal sway (translational) displacement; Directed along the yt-axis +ElastoDyn['PtfmTDzt'] = False # (m); Platform vertical heave (translational) displacement; Directed along the zt-axis +ElastoDyn['PtfmTDxi'] = False # (m); Platform horizontal surge (translational) displacement; Directed along the xi-axis +ElastoDyn['PtfmSurge'] = False # (m); Platform horizontal surge (translational) displacement; Directed along the xi-axis +ElastoDyn['PtfmTDyi'] = False # (m); Platform horizontal sway (translational) displacement; Directed along the yi-axis +ElastoDyn['PtfmSway'] = False # (m); Platform horizontal sway (translational) displacement; Directed along the yi-axis +ElastoDyn['PtfmTDzi'] = False # (m); Platform vertical heave (translational) displacement; Directed along the zi-axis +ElastoDyn['PtfmHeave'] = False # (m); Platform vertical heave (translational) displacement; Directed along the zi-axis +ElastoDyn['PtfmTVxt'] = False # (m/s); Platform horizontal surge (translational) velocity; Directed along the xt-axis +ElastoDyn['PtfmTVyt'] = False # (m/s); Platform horizontal sway (translational) velocity; Directed along the yt-axis +ElastoDyn['PtfmTVzt'] = False # (m/s); Platform vertical heave (translational) velocity; Directed along the zt-axis +ElastoDyn['PtfmTVxi'] = False # (m/s); Platform horizontal surge (translational) velocity; Directed along the xi-axis +ElastoDyn['PtfmTVyi'] = False # (m/s); Platform horizontal sway (translational) velocity; Directed along the yi-axis +ElastoDyn['PtfmTVzi'] = False # (m/s); Platform vertical heave (translational) velocity; Directed along the zi-axis +ElastoDyn['PtfmTAxt'] = False # (m/s^2); Platform horizontal surge (translational) acceleration; Directed along the xt-axis +ElastoDyn['PtfmTAyt'] = False # (m/s^2); Platform horizontal sway (translational) acceleration; Directed along the yt-axis +ElastoDyn['PtfmTAzt'] = False # (m/s^2); Platform vertical heave (translational) acceleration; Directed along the zt-axis +ElastoDyn['PtfmTAgxt'] = False # (m/s^2); Platform horizontal surge (translational) acceleration relative to g; Directed along the xt-axis +ElastoDyn['PtfmTAgyt'] = False # (m/s^2); Platform horizontal sway (translational) acceleration relative to g; Directed along the yt-axis +ElastoDyn['PtfmTAgzt'] = False # (m/s^2); Platform vertical heave (translational) acceleration relative to g; Directed along the zt-axis +ElastoDyn['PtfmTAxi'] = False # (m/s^2); Platform horizontal surge (translational) acceleration; Directed along the xi-axis +ElastoDyn['PtfmTAyi'] = False # (m/s^2); Platform horizontal sway (translational) acceleration; Directed along the yi-axis +ElastoDyn['PtfmTAzi'] = False # (m/s^2); Platform vertical heave (translational) acceleration; Directed along the zi-axis +ElastoDyn['PtfmTAgxi'] = False # (m/s^2); Platform horizontal surge (translational) acceleration relative to g; Directed along the xi-axis +ElastoDyn['PtfmTAgyi'] = False # (m/s^2); Platform horizontal sway (translational) acceleration relative to g; Directed along the yi-axis +ElastoDyn['PtfmTAgzi'] = False # (m/s^2); Platform vertical heave (translational) acceleration relative to g; Directed along the zi-axis +ElastoDyn['PtfmRDxi'] = False # (deg); Platform roll tilt angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the xi-axis +ElastoDyn['PtfmRoll'] = False # (deg); Platform roll tilt angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 3rd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the xi-axis +ElastoDyn['PtfmRDyi'] = False # (deg); Platform pitch tilt angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the yi-axis +ElastoDyn['PtfmPitch'] = False # (deg); Platform pitch tilt angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 2nd rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the yi-axis +ElastoDyn['PtfmRDzi'] = False # (deg); Platform yaw angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the zi-axis +ElastoDyn['PtfmYaw'] = False # (deg); Platform yaw angular (rotational) displacement. In ADAMS, it is output as an Euler angle computed as the 1st rotation in the yaw-pitch-roll rotation sequence. It is not output as an Euler angle in FAST, which assumes small rotational platform displacements, so that the rotation sequence does not matter.; About the zi-axis +ElastoDyn['PtfmRVxt'] = False # (deg/s); Platform roll tilt angular (rotational) velocity; About the xt-axis +ElastoDyn['PtfmRVyt'] = False # (deg/s); Platform pitch tilt angular (rotational) velocity; About the yt-axis +ElastoDyn['PtfmRVzt'] = False # (deg/s); Platform yaw angular (rotational) velocity; About the zt-axis +ElastoDyn['PtfmRVxi'] = False # (deg/s); Platform roll tilt angular (rotational) velocity; About the xi-axis +ElastoDyn['PtfmRVyi'] = False # (deg/s); Platform pitch tilt angular (rotational) velocity; About the yi-axis +ElastoDyn['PtfmRVzi'] = False # (deg/s); Platform yaw angular (rotational) velocity; About the zi-axis +ElastoDyn['PtfmRAxt'] = False # (deg/s^2); Platform roll tilt angular (rotational) acceleration; About the xt-axis +ElastoDyn['PtfmRAyt'] = False # (deg/s^2); Platform pitch tilt angular (rotational) acceleration; About the yt-axis +ElastoDyn['PtfmRAzt'] = False # (deg/s^2); Platform yaw angular (rotational) acceleration; About the zt-axis +ElastoDyn['PtfmRAxi'] = False # (deg/s^2); Platform roll tilt angular (rotational) acceleration; About the xi-axis +ElastoDyn['PtfmRAyi'] = False # (deg/s^2); Platform pitch tilt angular (rotational) acceleration; About the yi-axis +ElastoDyn['PtfmRAzi'] = False # (deg/s^2); Platform yaw angular (rotational) acceleration; About the zi-axis + +# Blade 1 Root Loads +ElastoDyn['RootFxc1'] = False # (kN); Blade 1 out-of-plane shear force at the blade root; Directed along the xc1-axis +ElastoDyn['RootFyc1'] = False # (kN); Blade 1 in-plane shear force at the blade root; Directed along the yc1-axis +ElastoDyn['RootFzc1'] = False # (kN); Blade 1 axial force at the blade root; Directed along the zc1- and zb1-axes +ElastoDyn['RootFzb1'] = False # (kN); Blade 1 axial force at the blade root; Directed along the zc1- and zb1-axes +ElastoDyn['RootFxb1'] = False # (kN); Blade 1 flapwise shear force at the blade root; Directed along the xb1-axis +ElastoDyn['RootFyb1'] = False # (kN); Blade 1 edgewise shear force at the blade root; Directed along the yb1-axis +ElastoDyn['RootMxc1'] = False # (kN-m); Blade 1 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc1-axis +ElastoDyn['RootMIP1'] = False # (kN-m); Blade 1 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc1-axis +ElastoDyn['RootMyc1'] = False # (kN-m); Blade 1 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc1-axis +ElastoDyn['RootMOoP1'] = False # (kN-m); Blade 1 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc1-axis +ElastoDyn['RootMzc1'] = False # (kN-m); Blade 1 pitching moment at the blade root; About the zc1- and zb1-axes +ElastoDyn['RootMzb1'] = False # (kN-m); Blade 1 pitching moment at the blade root; About the zc1- and zb1-axes +ElastoDyn['RootMxb1'] = False # (kN-m); Blade 1 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb1-axis +ElastoDyn['RootMEdg1'] = False # (kN-m); Blade 1 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb1-axis +ElastoDyn['RootMyb1'] = True # (kN-m); Blade 1 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb1-axis +ElastoDyn['RootMFlp1'] = False # (kN-m); Blade 1 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb1-axis + +# Blade 2 Root Loads +ElastoDyn['RootFxc2'] = False # (kN); Blade 2 out-of-plane shear force at the blade root; Directed along the xc2-axis +ElastoDyn['RootFyc2'] = False # (kN); Blade 2 in-plane shear force at the blade root; Directed along the yc2-axis +ElastoDyn['RootFzc2'] = False # (kN); Blade 2 axial force at the blade root; Directed along the zc2- and zb2-axes +ElastoDyn['RootFzb2'] = False # (kN); Blade 2 axial force at the blade root; Directed along the zc2- and zb2-axes +ElastoDyn['RootFxb2'] = False # (kN); Blade 2 flapwise shear force at the blade root; Directed along the xb2-axis +ElastoDyn['RootFyb2'] = False # (kN); Blade 2 edgewise shear force at the blade root; Directed along the yb2-axis +ElastoDyn['RootMxc2'] = False # (kN-m); Blade 2 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc2-axis +ElastoDyn['RootMIP2'] = False # (kN-m); Blade 2 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc2-axis +ElastoDyn['RootMyc2'] = False # (kN-m); Blade 2 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc2-axis +ElastoDyn['RootMOoP2'] = False # (kN-m); Blade 2 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc2-axis +ElastoDyn['RootMzc2'] = False # (kN-m); Blade 2 pitching moment at the blade root; About the zc2- and zb2-axes +ElastoDyn['RootMzb2'] = False # (kN-m); Blade 2 pitching moment at the blade root; About the zc2- and zb2-axes +ElastoDyn['RootMxb2'] = False # (kN-m); Blade 2 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb2-axis +ElastoDyn['RootMEdg2'] = False # (kN-m); Blade 2 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb2-axis +ElastoDyn['RootMyb2'] = True # (kN-m); Blade 2 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb2-axis +ElastoDyn['RootMFlp2'] = False # (kN-m); Blade 2 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb2-axis + +# Blade 3 Root Loads +ElastoDyn['RootFxc3'] = False # (kN); Blade 3 out-of-plane shear force at the blade root; Directed along the xc3-axis +ElastoDyn['RootFyc3'] = False # (kN); Blade 3 in-plane shear force at the blade root; Directed along the yc3-axis +ElastoDyn['RootFzc3'] = False # (kN); Blade 3 axial force at the blade root; Directed along the zc3- and zb3-axes +ElastoDyn['RootFzb3'] = False # (kN); Blade 3 axial force at the blade root; Directed along the zc3- and zb3-axes +ElastoDyn['RootFxb3'] = False # (kN); Blade 3 flapwise shear force at the blade root; Directed along the xb3-axis +ElastoDyn['RootFyb3'] = False # (kN); Blade 3 edgewise shear force at the blade root; Directed along the yb3-axis +ElastoDyn['RootMxc3'] = False # (kN-m); Blade 3 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc3-axis +ElastoDyn['RootMIP3'] = False # (kN-m); Blade 3 in-plane moment (i.e., the moment caused by in-plane forces) at the blade root; About the xc3-axis +ElastoDyn['RootMyc3'] = False # (kN-m); Blade 3 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc3-axis +ElastoDyn['RootMOoP3'] = False # (kN-m); Blade 3 out-of-plane moment (i.e., the moment caused by out-of-plane forces) at the blade root; About the yc3-axis +ElastoDyn['RootMzc3'] = False # (kN-m); Blade 3 pitching moment at the blade root; About the zc3- and zb3-axes +ElastoDyn['RootMzb3'] = False # (kN-m); Blade 3 pitching moment at the blade root; About the zc3- and zb3-axes +ElastoDyn['RootMxb3'] = False # (kN-m); Blade 3 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb3-axis +ElastoDyn['RootMEdg3'] = False # (kN-m); Blade 3 edgewise moment (i.e., the moment caused by edgewise forces) at the blade root; About the xb3-axis +ElastoDyn['RootMyb3'] = True # (kN-m); Blade 3 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb3-axis +ElastoDyn['RootMFlp3'] = False # (kN-m); Blade 3 flapwise moment (i.e., the moment caused by flapwise forces) at the blade root; About the yb3-axis + +# Blade 1 Local Span Loads +ElastoDyn['Spn1MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 1; About the local xb1-axis +ElastoDyn['Spn1MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 1; About the local yb1-axis +ElastoDyn['Spn1MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 1; About the local zb1-axis +ElastoDyn['Spn2MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 2; About the local xb1-axis +ElastoDyn['Spn2MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 2; About the local yb1-axis +ElastoDyn['Spn2MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 2; About the local zb1-axis +ElastoDyn['Spn3MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 3; About the local xb1-axis +ElastoDyn['Spn3MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 3; About the local yb1-axis +ElastoDyn['Spn3MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 3; About the local zb1-axis +ElastoDyn['Spn4MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 4; About the local xb1-axis +ElastoDyn['Spn4MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 4; About the local yb1-axis +ElastoDyn['Spn4MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 4; About the local zb1-axis +ElastoDyn['Spn5MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 5; About the local xb1-axis +ElastoDyn['Spn5MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 5; About the local yb1-axis +ElastoDyn['Spn5MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 5; About the local zb1-axis +ElastoDyn['Spn6MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 6; About the local xb1-axis +ElastoDyn['Spn6MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 6; About the local yb1-axis +ElastoDyn['Spn6MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 6; About the local zb1-axis +ElastoDyn['Spn7MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 7; About the local xb1-axis +ElastoDyn['Spn7MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 7; About the local yb1-axis +ElastoDyn['Spn7MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 7; About the local zb1-axis +ElastoDyn['Spn8MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 8; About the local xb1-axis +ElastoDyn['Spn8MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 8; About the local yb1-axis +ElastoDyn['Spn8MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 8; About the local zb1-axis +ElastoDyn['Spn9MLxb1'] = False # (kN-m); Blade 1 local edgewise moment at span station 9; About the local xb1-axis +ElastoDyn['Spn9MLyb1'] = False # (kN-m); Blade 1 local flapwise moment at span station 9; About the local yb1-axis +ElastoDyn['Spn9MLzb1'] = False # (kN-m); Blade 1 local pitching moment at span station 9; About the local zb1-axis +ElastoDyn['Spn1FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 1; Directed along the local xb1-axis +ElastoDyn['Spn1FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 1; Directed along the local yb1-axis +ElastoDyn['Spn1FLzb1'] = False # (kN); Blade 1 local axial force at span station 1; Directed along the local zb1-axis +ElastoDyn['Spn2FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 2; Directed along the local xb1-axis +ElastoDyn['Spn2FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 2; Directed along the local yb1-axis +ElastoDyn['Spn2FLzb1'] = False # (kN); Blade 1 local axial force at span station 2; Directed along the local zb1-axis +ElastoDyn['Spn3FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 3; Directed along the local xb1-axis +ElastoDyn['Spn3FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 3; Directed along the local yb1-axis +ElastoDyn['Spn3FLzb1'] = False # (kN); Blade 1 local axial force at span station 3; Directed along the local zb1-axis +ElastoDyn['Spn4FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 4; Directed along the local xb1-axis +ElastoDyn['Spn4FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 4; Directed along the local yb1-axis +ElastoDyn['Spn4FLzb1'] = False # (kN); Blade 1 local axial force at span station 4; Directed along the local zb1-axis +ElastoDyn['Spn5FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 5; Directed along the local xb1-axis +ElastoDyn['Spn5FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 5; Directed along the local yb1-axis +ElastoDyn['Spn5FLzb1'] = False # (kN); Blade 1 local axial force at span station 5; Directed along the local zb1-axis +ElastoDyn['Spn6FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 6; Directed along the local xb1-axis +ElastoDyn['Spn6FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 6; Directed along the local yb1-axis +ElastoDyn['Spn6FLzb1'] = False # (kN); Blade 1 local axial force at span station 6; Directed along the local zb1-axis +ElastoDyn['Spn7FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 7; Directed along the local xb1-axis +ElastoDyn['Spn7FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 7; Directed along the local yb1-axis +ElastoDyn['Spn7FLzb1'] = False # (kN); Blade 1 local axial force at span station 7; Directed along the local zb1-axis +ElastoDyn['Spn8FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 8; Directed along the local xb1-axis +ElastoDyn['Spn8FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 8; Directed along the local yb1-axis +ElastoDyn['Spn8FLzb1'] = False # (kN); Blade 1 local axial force at span station 8; Directed along the local zb1-axis +ElastoDyn['Spn9FLxb1'] = False # (kN); Blade 1 local flapwise shear force at span station 9; Directed along the local xb1-axis +ElastoDyn['Spn9FLyb1'] = False # (kN); Blade 1 local edgewise shear force at span station 9; Directed along the local yb1-axis +ElastoDyn['Spn9FLzb1'] = False # (kN); Blade 1 local axial force at span station 9; Directed along the local zb1-axis + +# Blade 2 Local Span Loads +ElastoDyn['Spn1MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 1; About the local xb2-axis +ElastoDyn['Spn1MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 1; About the local yb2-axis +ElastoDyn['Spn1MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 1; About the local zb2-axis +ElastoDyn['Spn2MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 2; About the local xb2-axis +ElastoDyn['Spn2MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 2; About the local yb2-axis +ElastoDyn['Spn2MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 2; About the local zb2-axis +ElastoDyn['Spn3MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 3; About the local xb2-axis +ElastoDyn['Spn3MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 3; About the local yb2-axis +ElastoDyn['Spn3MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 3; About the local zb2-axis +ElastoDyn['Spn4MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 4; About the local xb2-axis +ElastoDyn['Spn4MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 4; About the local yb2-axis +ElastoDyn['Spn4MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 4; About the local zb2-axis +ElastoDyn['Spn5MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 5; About the local xb2-axis +ElastoDyn['Spn5MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 5; About the local yb2-axis +ElastoDyn['Spn5MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 5; About the local zb2-axis +ElastoDyn['Spn6MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 6; About the local xb2-axis +ElastoDyn['Spn6MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 6; About the local yb2-axis +ElastoDyn['Spn6MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 6; About the local zb2-axis +ElastoDyn['Spn7MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 7; About the local xb2-axis +ElastoDyn['Spn7MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 7; About the local yb2-axis +ElastoDyn['Spn7MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 7; About the local zb2-axis +ElastoDyn['Spn8MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 8; About the local xb2-axis +ElastoDyn['Spn8MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 8; About the local yb2-axis +ElastoDyn['Spn8MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 8; About the local zb2-axis +ElastoDyn['Spn9MLxb2'] = False # (kN-m); Blade 2 local edgewise moment at span station 9; About the local xb2-axis +ElastoDyn['Spn9MLyb2'] = False # (kN-m); Blade 2 local flapwise moment at span station 9; About the local yb2-axis +ElastoDyn['Spn9MLzb2'] = False # (kN-m); Blade 2 local pitching moment at span station 9; About the local zb2-axis +ElastoDyn['Spn1FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 1; Directed along the local xb2-axis +ElastoDyn['Spn1FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 1; Directed along the local yb2-axis +ElastoDyn['Spn1FLzb2'] = False # (kN); Blade 2 local axial force at span station 1; Directed along the local zb2-axis +ElastoDyn['Spn2FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 2; Directed along the local xb2-axis +ElastoDyn['Spn2FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 2; Directed along the local yb2-axis +ElastoDyn['Spn2FLzb2'] = False # (kN); Blade 2 local axial force at span station 2; Directed along the local zb2-axis +ElastoDyn['Spn3FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 3; Directed along the local xb2-axis +ElastoDyn['Spn3FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 3; Directed along the local yb2-axis +ElastoDyn['Spn3FLzb2'] = False # (kN); Blade 2 local axial force at span station 3; Directed along the local zb2-axis +ElastoDyn['Spn4FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 4; Directed along the local xb2-axis +ElastoDyn['Spn4FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 4; Directed along the local yb2-axis +ElastoDyn['Spn4FLzb2'] = False # (kN); Blade 2 local axial force at span station 4; Directed along the local zb2-axis +ElastoDyn['Spn5FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 5; Directed along the local xb2-axis +ElastoDyn['Spn5FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 5; Directed along the local yb2-axis +ElastoDyn['Spn5FLzb2'] = False # (kN); Blade 2 local axial force at span station 5; Directed along the local zb2-axis +ElastoDyn['Spn6FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 6; Directed along the local xb2-axis +ElastoDyn['Spn6FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 6; Directed along the local yb2-axis +ElastoDyn['Spn6FLzb2'] = False # (kN); Blade 2 local axial force at span station 6; Directed along the local zb2-axis +ElastoDyn['Spn7FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 7; Directed along the local xb2-axis +ElastoDyn['Spn7FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 7; Directed along the local yb2-axis +ElastoDyn['Spn7FLzb2'] = False # (kN); Blade 2 local axial force at span station 7; Directed along the local zb2-axis +ElastoDyn['Spn8FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 8; Directed along the local xb2-axis +ElastoDyn['Spn8FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 8; Directed along the local yb2-axis +ElastoDyn['Spn8FLzb2'] = False # (kN); Blade 2 local axial force at span station 8; Directed along the local zb2-axis +ElastoDyn['Spn9FLxb2'] = False # (kN); Blade 2 local flapwise shear force at span station 9; Directed along the local xb2-axis +ElastoDyn['Spn9FLyb2'] = False # (kN); Blade 2 local edgewise shear force at span station 9; Directed along the local yb2-axis +ElastoDyn['Spn9FLzb2'] = False # (kN); Blade 2 local axial force at span station 9; Directed along the local zb2-axis + +# Blade 3 Local Span Loads +ElastoDyn['Spn1MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 1; About the local xb3-axis +ElastoDyn['Spn1MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 1; About the local yb3-axis +ElastoDyn['Spn1MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 1; About the local zb3-axis +ElastoDyn['Spn2MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 2; About the local xb3-axis +ElastoDyn['Spn2MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 2; About the local yb3-axis +ElastoDyn['Spn2MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 2; About the local zb3-axis +ElastoDyn['Spn3MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 3; About the local xb3-axis +ElastoDyn['Spn3MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 3; About the local yb3-axis +ElastoDyn['Spn3MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 3; About the local zb3-axis +ElastoDyn['Spn4MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 4; About the local xb3-axis +ElastoDyn['Spn4MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 4; About the local yb3-axis +ElastoDyn['Spn4MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 4; About the local zb3-axis +ElastoDyn['Spn5MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 5; About the local xb3-axis +ElastoDyn['Spn5MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 5; About the local yb3-axis +ElastoDyn['Spn5MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 5; About the local zb3-axis +ElastoDyn['Spn6MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 6; About the local xb3-axis +ElastoDyn['Spn6MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 6; About the local yb3-axis +ElastoDyn['Spn6MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 6; About the local zb3-axis +ElastoDyn['Spn7MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 7; About the local xb3-axis +ElastoDyn['Spn7MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 7; About the local yb3-axis +ElastoDyn['Spn7MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 7; About the local zb3-axis +ElastoDyn['Spn8MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 8; About the local xb3-axis +ElastoDyn['Spn8MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 8; About the local yb3-axis +ElastoDyn['Spn8MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 8; About the local zb3-axis +ElastoDyn['Spn9MLxb3'] = False # (kN-m); Blade 3 local edgewise moment at span station 9; About the local xb3-axis +ElastoDyn['Spn9MLyb3'] = False # (kN-m); Blade 3 local flapwise moment at span station 9; About the local yb3-axis +ElastoDyn['Spn9MLzb3'] = False # (kN-m); Blade 3 local pitching moment at span station 9; About the local zb3-axis +ElastoDyn['Spn1FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 1; Directed along the local xb3-axis +ElastoDyn['Spn1FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 1; Directed along the local yb3-axis +ElastoDyn['Spn1FLzb3'] = False # (kN); Blade 3 local axial force at span station 1; Directed along the local zb3-axis +ElastoDyn['Spn2FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 2; Directed along the local xb3-axis +ElastoDyn['Spn2FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 2; Directed along the local yb3-axis +ElastoDyn['Spn2FLzb3'] = False # (kN); Blade 3 local axial force at span station 2; Directed along the local zb3-axis +ElastoDyn['Spn3FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 3; Directed along the local xb3-axis +ElastoDyn['Spn3FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 3; Directed along the local yb3-axis +ElastoDyn['Spn3FLzb3'] = False # (kN); Blade 3 local axial force at span station 3; Directed along the local zb3-axis +ElastoDyn['Spn4FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 4; Directed along the local xb3-axis +ElastoDyn['Spn4FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 4; Directed along the local yb3-axis +ElastoDyn['Spn4FLzb3'] = False # (kN); Blade 3 local axial force at span station 4; Directed along the local zb3-axis +ElastoDyn['Spn5FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 5; Directed along the local xb3-axis +ElastoDyn['Spn5FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 5; Directed along the local yb3-axis +ElastoDyn['Spn5FLzb3'] = False # (kN); Blade 3 local axial force at span station 5; Directed along the local zb3-axis +ElastoDyn['Spn6FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 6; Directed along the local xb3-axis +ElastoDyn['Spn6FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 6; Directed along the local yb3-axis +ElastoDyn['Spn6FLzb3'] = False # (kN); Blade 3 local axial force at span station 6; Directed along the local zb3-axis +ElastoDyn['Spn7FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 7; Directed along the local xb3-axis +ElastoDyn['Spn7FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 7; Directed along the local yb3-axis +ElastoDyn['Spn7FLzb3'] = False # (kN); Blade 3 local axial force at span station 7; Directed along the local zb3-axis +ElastoDyn['Spn8FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 8; Directed along the local xb3-axis +ElastoDyn['Spn8FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 8; Directed along the local yb3-axis +ElastoDyn['Spn8FLzb3'] = False # (kN); Blade 3 local axial force at span station 8; Directed along the local zb3-axis +ElastoDyn['Spn9FLxb3'] = False # (kN); Blade 3 local flapwise shear force at span station 9; Directed along the local xb3-axis +ElastoDyn['Spn9FLyb3'] = False # (kN); Blade 3 local edgewise shear force at span station 9; Directed along the local yb3-axis +ElastoDyn['Spn9FLzb3'] = False # (kN); Blade 3 local axial force at span station 9; Directed along the local zb3-axis + +# Hub and Rotor Loads +ElastoDyn['LSShftFxa'] = False # (kN); Low-speed shaft thrust force (this is constant along the shaft and is equivalent to the rotor thrust force); Directed along the xa- and xs-axes +ElastoDyn['LSShftFxs'] = False # (kN); Low-speed shaft thrust force (this is constant along the shaft and is equivalent to the rotor thrust force); Directed along the xa- and xs-axes +ElastoDyn['LSSGagFxa'] = False # (kN); Low-speed shaft thrust force (this is constant along the shaft and is equivalent to the rotor thrust force); Directed along the xa- and xs-axes +ElastoDyn['LSSGagFxs'] = False # (kN); Low-speed shaft thrust force (this is constant along the shaft and is equivalent to the rotor thrust force); Directed along the xa- and xs-axes +ElastoDyn['RotThrust'] = False # (kN); Low-speed shaft thrust force (this is constant along the shaft and is equivalent to the rotor thrust force); Directed along the xa- and xs-axes +ElastoDyn['LSShftFya'] = False # (kN); Rotating low-speed shaft shear force (this is constant along the shaft); Directed along the ya-axis +ElastoDyn['LSSGagFya'] = False # (kN); Rotating low-speed shaft shear force (this is constant along the shaft); Directed along the ya-axis +ElastoDyn['LSShftFza'] = False # (kN); Rotating low-speed shaft shear force (this is constant along the shaft); Directed along the za-axis +ElastoDyn['LSSGagFza'] = False # (kN); Rotating low-speed shaft shear force (this is constant along the shaft); Directed along the za-axis +ElastoDyn['LSShftFys'] = True # (kN); Nonrotating low-speed shaft shear force (this is constant along the shaft); Directed along the ys-axis +ElastoDyn['LSSGagFys'] = False # (kN); Nonrotating low-speed shaft shear force (this is constant along the shaft); Directed along the ys-axis +ElastoDyn['LSShftFzs'] = True # (kN); Nonrotating low-speed shaft shear force (this is constant along the shaft); Directed along the zs-axis +ElastoDyn['LSSGagFzs'] = False # (kN); Nonrotating low-speed shaft shear force (this is constant along the shaft); Directed along the zs-axis +ElastoDyn['LSShftMxa'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['LSShftMxs'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['LSSGagMxa'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['LSSGagMxs'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['RotTorq'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['LSShftTq'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +ElastoDyn['LSSTipMya'] = False # (kN-m); Rotating low-speed shaft bending moment at the shaft tip (teeter pin for 2-blader, apex of rotation for 3-blader); About the ya-axis +ElastoDyn['LSSTipMza'] = False # (kN-m); Rotating low-speed shaft bending moment at the shaft tip (teeter pin for 2-blader, apex of rotation for 3-blader); About the za-axis +ElastoDyn['LSSTipMys'] = True # (kN-m); Nonrotating low-speed shaft bending moment at the shaft tip (teeter pin for 2-blader, apex of rotation for 3-blader); About the ys-axis +ElastoDyn['LSSTipMzs'] = True # (kN-m); Nonrotating low-speed shaft bending moment at the shaft tip (teeter pin for 2-blader, apex of rotation for 3-blader); About the zs-axis +ElastoDyn['RotPwr'] = False # (kW); Rotor power (this is equivalent to the low-speed shaft power); N/A +ElastoDyn['LSShftPwr'] = False # (kW); Rotor power (this is equivalent to the low-speed shaft power); N/A + +# Shaft Strain Gage Loads +ElastoDyn['LSSGagMya'] = False # (kN-m); Rotating low-speed shaft bending moment at the shaft's strain gage (shaft strain gage located by input ShftGagL); About the ya-axis +ElastoDyn['LSSGagMza'] = False # (kN-m); Rotating low-speed shaft bending moment at the shaft's strain gage (shaft strain gage located by input ShftGagL); About the za-axis +ElastoDyn['LSSGagMys'] = False # (kN-m); Nonrotating low-speed shaft bending moment at the shaft's strain gage (shaft strain gage located by input ShftGagL); About the ys-axis +ElastoDyn['LSSGagMzs'] = False # (kN-m); Nonrotating low-speed shaft bending moment at the shaft's strain gage (shaft strain gage located by input ShftGagL); About the zs-axis + +# High-Speed Shaft Loads +ElastoDyn['HSShftTq'] = False # (kN-m); High-speed shaft torque (this is constant along the shaft); Same sign as LSShftTq / RotTorq / LSShftMxa / LSShftMxs / LSSGagMxa / LSSGagMxs +ElastoDyn['HSSBrTq'] = False # (kN-m); High-speed shaft brake torque (i.e., the actual moment applied to the high-speed shaft by the brake); Always positive (indicating dissipation of power) +ElastoDyn['HSShftPwr'] = False # (kW); High-speed shaft power; Same sign as HSShftTq + +# Rotor-Furl Bearing Loads +ElastoDyn['RFrlBrM'] = False # (kN-m); Rotor-furl bearing moment; About the rotor-furl axis + +# Tail-Furl Bearing Loads +ElastoDyn['TFrlBrM'] = False # (kN-m); Tail-furl bearing moment; About the tail-furl axis + +# Tower-Top / Yaw Bearing Loads +ElastoDyn['YawBrFxn'] = False # (kN); Rotating (with nacelle) tower-top / yaw bearing shear force; Directed along the xn-axis +ElastoDyn['YawBrFyn'] = False # (kN); Rotating (with nacelle) tower-top / yaw bearing shear force; Directed along the yn-axis +ElastoDyn['YawBrFzn'] = False # (kN); Tower-top / yaw bearing axial force; Directed along the zn- and zp-axes +ElastoDyn['YawBrFzp'] = False # (kN); Tower-top / yaw bearing axial force; Directed along the zn- and zp-axes +ElastoDyn['YawBrFxp'] = False # (kN); Tower-top / yaw bearing fore-aft (nonrotating) shear force; Directed along the xp-axis +ElastoDyn['YawBrFyp'] = False # (kN); Tower-top / yaw bearing side-to-side (nonrotating) shear force; Directed along the yp-axis +ElastoDyn['YawBrMxn'] = False # (kN-m); Rotating (with nacelle) tower-top / yaw bearing roll moment; About the xn-axis +ElastoDyn['YawBrMyn'] = False # (kN-m); Rotating (with nacelle) tower-top / yaw bearing pitch moment; About the yn-axis +ElastoDyn['YawBrMzn'] = False # (kN-m); Tower-top / yaw bearing yaw moment; About the zn- and zp-axes +ElastoDyn['YawBrMzp'] = False # (kN-m); Tower-top / yaw bearing yaw moment; About the zn- and zp-axes +ElastoDyn['YawBrMxp'] = False # (kN-m); Nonrotating tower-top / yaw bearing roll moment; About the xp-axis +ElastoDyn['YawBrMyp'] = False # (kN-m); Nonrotating tower-top / yaw bearing pitch moment; About the yp-axis + +# Yaw Friction +ElastoDyn['YawFriMom'] = False # (kN-m); Calculated and corrected friction torque on yaw bearing; About the zn- and zp-axes +ElastoDyn['YawFriMfp'] = False # (kN-m); Yaw friction torque to bring yaw system to a stop at current time step; About the zn- and zp-axes +ElastoDyn['YawFriMz'] = False # (kN-m); External moment on yaw bearing not including inertial contributions; About the zn- and zp-axes +ElastoDyn['OmegaYF'] = False # (deg/s); Yaw rate used in YawFriMom calculation; Directed along the zn- and zp-axes +ElastoDyn['dOmegaYF'] = False # (deg/s^2); Yaw acceleration used in YawFriMom calculation; Directed along the zn- and zp-axes + +# Tower Base Loads +ElastoDyn['TwrBsFxt'] = False # (kN); Tower base fore-aft shear force; Directed along the xt-axis +ElastoDyn['TwrBsFyt'] = False # (kN); Tower base side-to-side shear force; Directed along the yt-axis +ElastoDyn['TwrBsFzt'] = False # (kN); Tower base axial force; Directed along the zt-axis +ElastoDyn['TwrBsMxt'] = False # (kN-m); Tower base roll (or side-to-side) moment (i.e., the moment caused by side-to-side forces); About the xt-axis +ElastoDyn['TwrBsMyt'] = True # (kN-m); Tower base pitching (or fore-aft) moment (i.e., the moment caused by fore-aft forces); About the yt-axis +ElastoDyn['TwrBsMzt'] = False # (kN-m); Tower base yaw (or torsional) moment; About the zt-axis + +# Local Tower Loads +ElastoDyn['TwHt1MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 1; About the local xt-axis +ElastoDyn['TwHt1MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 1; About the local yt-axis +ElastoDyn['TwHt1MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 1; About the local zt-axis +ElastoDyn['TwHt2MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 2; About the local xt-axis +ElastoDyn['TwHt2MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 2; About the local yt-axis +ElastoDyn['TwHt2MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 2; About the local zt-axis +ElastoDyn['TwHt3MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 3; About the local xt-axis +ElastoDyn['TwHt3MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 3; About the local yt-axis +ElastoDyn['TwHt3MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 3; About the local zt-axis +ElastoDyn['TwHt4MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 4; About the local xt-axis +ElastoDyn['TwHt4MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 4; About the local yt-axis +ElastoDyn['TwHt4MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 4; About the local zt-axis +ElastoDyn['TwHt5MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 5; About the local xt-axis +ElastoDyn['TwHt5MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 5; About the local yt-axis +ElastoDyn['TwHt5MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 5; About the local zt-axis +ElastoDyn['TwHt6MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 6; About the local xt-axis +ElastoDyn['TwHt6MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 6; About the local yt-axis +ElastoDyn['TwHt6MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 6; About the local zt-axis +ElastoDyn['TwHt7MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 7; About the local xt-axis +ElastoDyn['TwHt7MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 7; About the local yt-axis +ElastoDyn['TwHt7MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 7; About the local zt-axis +ElastoDyn['TwHt8MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 8; About the local xt-axis +ElastoDyn['TwHt8MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 8; About the local yt-axis +ElastoDyn['TwHt8MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 8; About the local zt-axis +ElastoDyn['TwHt9MLxt'] = False # (kN-m); Local tower roll (or side-to-side) moment of tower gage 9; About the local xt-axis +ElastoDyn['TwHt9MLyt'] = False # (kN-m); Local tower pitching (or fore-aft) moment of tower gage 9; About the local yt-axis +ElastoDyn['TwHt9MLzt'] = False # (kN-m); Local tower yaw (or torsional) moment of tower gage 9; About the local zt-axis +ElastoDyn['TwHt1FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 1; About the local xt-axis +ElastoDyn['TwHt1FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 1; About the local yt-axis +ElastoDyn['TwHt1FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 1; About the local zt-axis +ElastoDyn['TwHt2FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 2; About the local xt-axis +ElastoDyn['TwHt2FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 2; About the local yt-axis +ElastoDyn['TwHt2FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 2; About the local zt-axis +ElastoDyn['TwHt3FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 3; About the local xt-axis +ElastoDyn['TwHt3FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 3; About the local yt-axis +ElastoDyn['TwHt3FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 3; About the local zt-axis +ElastoDyn['TwHt4FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 4; About the local xt-axis +ElastoDyn['TwHt4FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 4; About the local yt-axis +ElastoDyn['TwHt4FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 4; About the local zt-axis +ElastoDyn['TwHt5FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 5; About the local xt-axis +ElastoDyn['TwHt5FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 5; About the local yt-axis +ElastoDyn['TwHt5FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 5; About the local zt-axis +ElastoDyn['TwHt6FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 6; About the local xt-axis +ElastoDyn['TwHt6FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 6; About the local yt-axis +ElastoDyn['TwHt6FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 6; About the local zt-axis +ElastoDyn['TwHt7FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 7; About the local xt-axis +ElastoDyn['TwHt7FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 7; About the local yt-axis +ElastoDyn['TwHt7FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 7; About the local zt-axis +ElastoDyn['TwHt8FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 8; About the local xt-axis +ElastoDyn['TwHt8FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 8; About the local yt-axis +ElastoDyn['TwHt8FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 8; About the local zt-axis +ElastoDyn['TwHt9FLxt'] = False # (kN); Local tower roll (or side-to-side) force of tower gage 9; About the local xt-axis +ElastoDyn['TwHt9FLyt'] = False # (kN); Local tower pitching (or fore-aft) force of tower gage 9; About the local yt-axis +ElastoDyn['TwHt9FLzt'] = False # (kN); Local tower yaw (or torsional) force of tower gage 9; About the local zt-axis + +# Internal Degrees of Freedom +ElastoDyn['Q_B1E1'] = False # (m); Displacement of 1st edgewise bending-mode DOF of blade 1; +ElastoDyn['Q_B2E1'] = False # (m); Displacement of 1st edgewise bending-mode DOF of blade 2; +ElastoDyn['Q_B3E1'] = False # (m); Displacement of 1st edgewise bending-mode DOF of blade 3; +ElastoDyn['Q_B1F1'] = False # (m); Displacement of 1st flapwise bending-mode DOF of blade 1; +ElastoDyn['Q_B2F1'] = False # (m); Displacement of 1st flapwise bending-mode DOF of blade 2; +ElastoDyn['Q_B3F1'] = False # (m); Displacement of 1st flapwise bending-mode DOF of blade 3; +ElastoDyn['Q_B1F2'] = False # (m); Displacement of 2nd flapwise bending-mode DOF of blade 1; +ElastoDyn['Q_B2F2'] = False # (m); Displacement of 2nd flapwise bending-mode DOF of blade 2; +ElastoDyn['Q_B3F2'] = False # (m); Displacement of 2nd flapwise bending-mode DOF of blade 3; +ElastoDyn['Q_Teet'] = False # (rad); Displacement of hub teetering DOF; +ElastoDyn['Q_DrTr'] = False # (rad); Displacement of drivetrain rotational-flexibility DOF; +ElastoDyn['Q_GeAz'] = False # (rad); Displacement of variable speed generator DOF; +ElastoDyn['Q_RFrl'] = False # (rad); Displacement of rotor-furl DOF; +ElastoDyn['Q_TFrl'] = False # (rad); Displacement of tail-furl DOF; +ElastoDyn['Q_Yaw'] = False # (rad); Displacement of nacelle yaw DOF; +ElastoDyn['Q_TFA1'] = False # (m); Displacement of 1st tower fore-aft bending mode DOF; +ElastoDyn['Q_TSS1'] = False # (m); Displacement of 1st tower side-to-side bending mode DOF; +ElastoDyn['Q_TFA2'] = False # (m); Displacement of 2nd tower fore-aft bending mode DOF; +ElastoDyn['Q_TSS2'] = False # (m); Displacement of 2nd tower side-to-side bending mode DOF; +ElastoDyn['Q_Sg'] = False # (m); Displacement of platform horizontal surge translation DOF; +ElastoDyn['Q_Sw'] = False # (m); Displacement of platform horizontal sway translation DOF; +ElastoDyn['Q_Hv'] = False # (m); Displacement of platform vertical heave translation DOF; +ElastoDyn['Q_R'] = False # (rad); Displacement of platform roll tilt rotation DOF; +ElastoDyn['Q_P'] = False # (rad); Displacement of platform pitch tilt rotation DOF; +ElastoDyn['Q_Y'] = False # (rad); Displacement of platform yaw rotation DOF; +ElastoDyn['QD_B1E1'] = False # (m/s); Velocity of 1st edgewise bending-mode DOF of blade 1; +ElastoDyn['QD_B2E1'] = False # (m/s); Velocity of 1st edgewise bending-mode DOF of blade 2; +ElastoDyn['QD_B3E1'] = False # (m/s); Velocity of 1st edgewise bending-mode DOF of blade 3; +ElastoDyn['QD_B1F1'] = False # (m/s); Velocity of 1st flapwise bending-mode DOF of blade 1; +ElastoDyn['QD_B2F1'] = False # (m/s); Velocity of 1st flapwise bending-mode DOF of blade 2; +ElastoDyn['QD_B3F1'] = False # (m/s); Velocity of 1st flapwise bending-mode DOF of blade 3; +ElastoDyn['QD_B1F2'] = False # (m/s); Velocity of 2nd flapwise bending-mode DOF of blade 1; +ElastoDyn['QD_B2F2'] = False # (m/s); Velocity of 2nd flapwise bending-mode DOF of blade 2; +ElastoDyn['QD_B3F2'] = False # (m/s); Velocity of 2nd flapwise bending-mode DOF of blade 3; +ElastoDyn['QD_Teet'] = False # (rad/s); Velocity of hub teetering DOF; +ElastoDyn['QD_DrTr'] = False # (rad/s); Velocity of drivetrain rotational-flexibility DOF; +ElastoDyn['QD_GeAz'] = False # (rad/s); Velocity of variable speed generator DOF; +ElastoDyn['QD_RFrl'] = False # (rad/s); Velocity of rotor-furl DOF; +ElastoDyn['QD_TFrl'] = False # (rad/s); Velocity of tail-furl DOF; +ElastoDyn['QD_Yaw'] = False # (rad/s); Velocity of nacelle yaw DOF; +ElastoDyn['QD_TFA1'] = False # (m/s); Velocity of 1st tower fore-aft bending mode DOF; +ElastoDyn['QD_TSS1'] = False # (m/s); Velocity of 1st tower side-to-side bending mode DOF; +ElastoDyn['QD_TFA2'] = False # (m/s); Velocity of 2nd tower fore-aft bending mode DOF; +ElastoDyn['QD_TSS2'] = False # (m/s); Velocity of 2nd tower side-to-side bending mode DOF; +ElastoDyn['QD_Sg'] = False # (m/s); Velocity of platform horizontal surge translation DOF; +ElastoDyn['QD_Sw'] = False # (m/s); Velocity of platform horizontal sway translation DOF; +ElastoDyn['QD_Hv'] = False # (m/s); Velocity of platform vertical heave translation DOF; +ElastoDyn['QD_R'] = False # (rad/s); Velocity of platform roll tilt rotation DOF; +ElastoDyn['QD_P'] = False # (rad/s); Velocity of platform pitch tilt rotation DOF; +ElastoDyn['QD_Y'] = False # (rad/s); Velocity of platform yaw rotation DOF; +ElastoDyn['QD2_B1E1'] = False # (m/s^2); Acceleration of 1st edgewise bending-mode DOF of blade 1; +ElastoDyn['QD2_B2E1'] = False # (m/s^2); Acceleration of 1st edgewise bending-mode DOF of blade 2; +ElastoDyn['QD2_B3E1'] = False # (m/s^2); Acceleration of 1st edgewise bending-mode DOF of blade 3; +ElastoDyn['QD2_B1F1'] = False # (m/s^2); Acceleration of 1st flapwise bending-mode DOF of blade 1; +ElastoDyn['QD2_B2F1'] = False # (m/s^2); Acceleration of 1st flapwise bending-mode DOF of blade 2; +ElastoDyn['QD2_B3F1'] = False # (m/s^2); Acceleration of 1st flapwise bending-mode DOF of blade 3; +ElastoDyn['QD2_B1F2'] = False # (m/s^2); Acceleration of 2nd flapwise bending-mode DOF of blade 1; +ElastoDyn['QD2_B2F2'] = False # (m/s^2); Acceleration of 2nd flapwise bending-mode DOF of blade 2; +ElastoDyn['QD2_B3F2'] = False # (m/s^2); Acceleration of 2nd flapwise bending-mode DOF of blade 3; +ElastoDyn['QD2_Teet'] = False # (rad/s^2); Acceleration of hub teetering DOF; +ElastoDyn['QD2_DrTr'] = False # (rad/s^2); Acceleration of drivetrain rotational-flexibility DOF; +ElastoDyn['QD2_GeAz'] = False # (rad/s^2); Acceleration of variable speed generator DOF; +ElastoDyn['QD2_RFrl'] = False # (rad/s^2); Acceleration of rotor-furl DOF; +ElastoDyn['QD2_TFrl'] = False # (rad/s^2); Acceleration of tail-furl DOF; +ElastoDyn['QD2_Yaw'] = False # (rad/s^2); Acceleration of nacelle yaw DOF; +ElastoDyn['QD2_TFA1'] = False # (m/s^2); Acceleration of 1st tower fore-aft bending mode DOF; +ElastoDyn['QD2_TSS1'] = False # (m/s^2); Acceleration of 1st tower side-to-side bending mode DOF; +ElastoDyn['QD2_TFA2'] = False # (m/s^2); Acceleration of 2nd tower fore-aft bending mode DOF; +ElastoDyn['QD2_TSS2'] = False # (m/s^2); Acceleration of 2nd tower side-to-side bending mode DOF; +ElastoDyn['QD2_Sg'] = False # (m/s^2); Acceleration of platform horizontal surge translation DOF; +ElastoDyn['QD2_Sw'] = False # (m/s^2); Acceleration of platform horizontal sway translation DOF; +ElastoDyn['QD2_Hv'] = False # (m/s^2); Acceleration of platform vertical heave translation DOF; +ElastoDyn['QD2_R'] = False # (rad/s^2); Acceleration of platform roll tilt rotation DOF; +ElastoDyn['QD2_P'] = False # (rad/s^2); Acceleration of platform pitch tilt rotation DOF; +ElastoDyn['QD2_Y'] = False # (rad/s^2); Acceleration of platform yaw rotation DOF; + + +""" InflowWind """ +InflowWind = {} + +# Wind Motions +InflowWind['Wind1VelX'] = False # (m/s); X component of wind at user selected wind point 1; Directed along the xi-axis +InflowWind['Wind1VelY'] = False # (m/s); Y component of wind at user selected wind point 1; Directed along the yi-axis +InflowWind['Wind1VelZ'] = False # (m/s); Z component of wind at user selected wind point 1; Directed along the zi-axis +InflowWind['Wind2VelX'] = False # (m/s); X component of wind at user selected wind point 2; Directed along the xi-axis +InflowWind['Wind2VelY'] = False # (m/s); Y component of wind at user selected wind point 2; Directed along the yi-axis +InflowWind['Wind2VelZ'] = False # (m/s); Z component of wind at user selected wind point 2; Directed along the zi-axis +InflowWind['Wind3VelX'] = False # (m/s); X component of wind at user selected wind point 3; Directed along the xi-axis +InflowWind['Wind3VelY'] = False # (m/s); Y component of wind at user selected wind point 3; Directed along the yi-axis +InflowWind['Wind3VelZ'] = False # (m/s); Z component of wind at user selected wind point 3; Directed along the zi-axis +InflowWind['Wind4VelX'] = False # (m/s); X component of wind at user selected wind point 4; Directed along the xi-axis +InflowWind['Wind4VelY'] = False # (m/s); Y component of wind at user selected wind point 4; Directed along the yi-axis +InflowWind['Wind4VelZ'] = False # (m/s); Z component of wind at user selected wind point 4; Directed along the zi-axis +InflowWind['Wind5VelX'] = False # (m/s); X component of wind at user selected wind point 5; Directed along the xi-axis +InflowWind['Wind5VelY'] = False # (m/s); Y component of wind at user selected wind point 5; Directed along the yi-axis +InflowWind['Wind5VelZ'] = False # (m/s); Z component of wind at user selected wind point 5; Directed along the zi-axis +InflowWind['Wind6VelX'] = False # (m/s); X component of wind at user selected wind point 6; Directed along the xi-axis +InflowWind['Wind6VelY'] = False # (m/s); Y component of wind at user selected wind point 6; Directed along the yi-axis +InflowWind['Wind6VelZ'] = False # (m/s); Z component of wind at user selected wind point 6; Directed along the zi-axis +InflowWind['Wind7VelX'] = False # (m/s); X component of wind at user selected wind point 7; Directed along the xi-axis +InflowWind['Wind7VelY'] = False # (m/s); Y component of wind at user selected wind point 7; Directed along the yi-axis +InflowWind['Wind7VelZ'] = False # (m/s); Z component of wind at user selected wind point 7; Directed along the zi-axis +InflowWind['Wind8VelX'] = False # (m/s); X component of wind at user selected wind point 8; Directed along the xi-axis +InflowWind['Wind8VelY'] = False # (m/s); Y component of wind at user selected wind point 8; Directed along the yi-axis +InflowWind['Wind8VelZ'] = False # (m/s); Z component of wind at user selected wind point 8; Directed along the zi-axis +InflowWind['Wind9VelX'] = False # (m/s); X component of wind at user selected wind point 9; Directed along the xi-axis +InflowWind['Wind9VelY'] = False # (m/s); Y component of wind at user selected wind point 9; Directed along the yi-axis +InflowWind['Wind9VelZ'] = False # (m/s); Z component of wind at user selected wind point 9; Directed along the zi-axis +InflowWind['WindHubVelX'] = False # (m/s); X component of wind at (moving) hub point; Directed along the xi-axis +InflowWind['WindHubVelY'] = False # (m/s); Y component of wind at (moving) hub point; Directed along the yi-axis +InflowWind['WindHubVelZ'] = False # (m/s); Z component of wind at (moving) hub point; Directed along the zi-axis +InflowWind['WindDiskVelX'] = False # (m/s); Disk-average X component of wind (at 70% span); Directed along the xi-axis +InflowWind['WindDiskVelY'] = False # (m/s); Disk-average Y component of wind (at 70% span); Directed along the yi-axis +InflowWind['WindDiskVelZ'] = False # (m/s); Disk-average Z component of wind (at 70% span); Directed along the zi-axis + +# Wind Accelerations +InflowWind['Wind1AccX'] = False # (m/s); X component of wind at user selected wind point 1; Directed along the xi-axis +InflowWind['Wind1AccY'] = False # (m/s); Y component of wind at user selected wind point 1; Directed along the yi-axis +InflowWind['Wind1AccZ'] = False # (m/s); Z component of wind at user selected wind point 1; Directed along the zi-axis +InflowWind['Wind2AccX'] = False # (m/s); X component of wind at user selected wind point 2; Directed along the xi-axis +InflowWind['Wind2AccY'] = False # (m/s); Y component of wind at user selected wind point 2; Directed along the yi-axis +InflowWind['Wind2AccZ'] = False # (m/s); Z component of wind at user selected wind point 2; Directed along the zi-axis +InflowWind['Wind3AccX'] = False # (m/s); X component of wind at user selected wind point 3; Directed along the xi-axis +InflowWind['Wind3AccY'] = False # (m/s); Y component of wind at user selected wind point 3; Directed along the yi-axis +InflowWind['Wind3AccZ'] = False # (m/s); Z component of wind at user selected wind point 3; Directed along the zi-axis +InflowWind['Wind4AccX'] = False # (m/s); X component of wind at user selected wind point 4; Directed along the xi-axis +InflowWind['Wind4AccY'] = False # (m/s); Y component of wind at user selected wind point 4; Directed along the yi-axis +InflowWind['Wind4AccZ'] = False # (m/s); Z component of wind at user selected wind point 4; Directed along the zi-axis +InflowWind['Wind5AccX'] = False # (m/s); X component of wind at user selected wind point 5; Directed along the xi-axis +InflowWind['Wind5AccY'] = False # (m/s); Y component of wind at user selected wind point 5; Directed along the yi-axis +InflowWind['Wind5AccZ'] = False # (m/s); Z component of wind at user selected wind point 5; Directed along the zi-axis +InflowWind['Wind6AccX'] = False # (m/s); X component of wind at user selected wind point 6; Directed along the xi-axis +InflowWind['Wind6AccY'] = False # (m/s); Y component of wind at user selected wind point 6; Directed along the yi-axis +InflowWind['Wind6AccZ'] = False # (m/s); Z component of wind at user selected wind point 6; Directed along the zi-axis +InflowWind['Wind7AccX'] = False # (m/s); X component of wind at user selected wind point 7; Directed along the xi-axis +InflowWind['Wind7AccY'] = False # (m/s); Y component of wind at user selected wind point 7; Directed along the yi-axis +InflowWind['Wind7AccZ'] = False # (m/s); Z component of wind at user selected wind point 7; Directed along the zi-axis +InflowWind['Wind8AccX'] = False # (m/s); X component of wind at user selected wind point 8; Directed along the xi-axis +InflowWind['Wind8AccY'] = False # (m/s); Y component of wind at user selected wind point 8; Directed along the yi-axis +InflowWind['Wind8AccZ'] = False # (m/s); Z component of wind at user selected wind point 8; Directed along the zi-axis +InflowWind['Wind9AccX'] = False # (m/s); X component of wind at user selected wind point 9; Directed along the xi-axis +InflowWind['Wind9AccY'] = False # (m/s); Y component of wind at user selected wind point 9; Directed along the yi-axis +InflowWind['Wind9AccZ'] = False # (m/s); Z component of wind at user selected wind point 9; Directed along the zi-axis + +# Wind Magnitude and Direction +InflowWind['Wind1VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 1; +InflowWind['Wind2VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 2; +InflowWind['Wind3VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 3; +InflowWind['Wind4VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 4; +InflowWind['Wind5VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 5; +InflowWind['Wind6VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 6; +InflowWind['Wind7VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 7; +InflowWind['Wind8VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 8; +InflowWind['Wind9VelXY'] = False # (m/s); XY (horizontal) wind magnitude at user selected wind point 9; +InflowWind['WindHubVelXY'] = False # (m/s); XY (horizontal) component of wind at (moving) hub point; +InflowWind['WindDiskVelXY'] = False # (m/s); XY (horizontal) component of disk-average wind (at 70% span); +InflowWind['Wind1VelMag'] = False # (m/s); wind magnitude at user selected wind point 1; +InflowWind['Wind2VelMag'] = False # (m/s); wind magnitude at user selected wind point 2; +InflowWind['Wind3VelMag'] = False # (m/s); wind magnitude at user selected wind point 3; +InflowWind['Wind4VelMag'] = False # (m/s); wind magnitude at user selected wind point 4; +InflowWind['Wind5VelMag'] = False # (m/s); wind magnitude at user selected wind point 5; +InflowWind['Wind6VelMag'] = False # (m/s); wind magnitude at user selected wind point 6; +InflowWind['Wind7VelMag'] = False # (m/s); wind magnitude at user selected wind point 7; +InflowWind['Wind8VelMag'] = False # (m/s); wind magnitude at user selected wind point 8; +InflowWind['Wind9VelMag'] = False # (m/s); wind magnitude at user selected wind point 9; +InflowWind['WindHubVelMag'] = False # (m/s); wind magnitude at (moving) hub point; +InflowWind['WindDiskVelMag'] = False # (m/s); wind magnitude of disk-average wind (at 70% span); +InflowWind['Wind1AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 1; +InflowWind['Wind2AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 2; +InflowWind['Wind3AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 3; +InflowWind['Wind4AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 4; +InflowWind['Wind5AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 5; +InflowWind['Wind6AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 6; +InflowWind['Wind7AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 7; +InflowWind['Wind8AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 8; +InflowWind['Wind9AngXY'] = False # (deg); Angle between X and Y wind velocity components at user selected wind point 9; +InflowWind['WindHubAngXY'] = False # (deg); Angle between X and Y wind velocity components at (moving) hub point; +InflowWind['WindDiskAngXY'] = False # (deg); Angle between X and Y wind velocity components of disk-average wind (at 70% span); + +# Wind Sensor Measurements +InflowWind['WindMeas1'] = False # (m/s); Wind measurement at sensor 1; Defined by sensor +InflowWind['WindMeas2'] = False # (m/s); Wind measurement at sensor 2; Defined by sensor +InflowWind['WindMeas3'] = False # (m/s); Wind measurement at sensor 3; Defined by sensor +InflowWind['WindMeas4'] = False # (m/s); Wind measurement at sensor 4; Defined by sensor +InflowWind['WindMeas5'] = False # (m/s); Wind measurement at sensor 5; Defined by sensor + + +""" ServoDyn """ +ServoDyn = {} + +# Airfoil control +ServoDyn['BlAirFlC1'] = False # (-); Blade 1 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) +ServoDyn['BlFlap1'] = False # (-); Blade 1 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) +ServoDyn['BlAirFlC2'] = False # (-); Blade 2 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) +ServoDyn['BlFlap2'] = False # (-); Blade 2 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) +ServoDyn['BlAirFlC3'] = False # (-); Blade 3 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) +ServoDyn['BlFlap3'] = False # (-); Blade 3 airfoil control command; Same units as provided in airfoil tables of AD15 (UserProp) + +# Pitch Control +ServoDyn['BlPitchC1'] = False # (deg); Blade 1 pitch angle command; Positive towards feather about the minus zc1- and minus zb1-axes +ServoDyn['BlPitchC2'] = False # (deg); Blade 2 pitch angle command; Positive towards feather about the minus zc2- and minus zb2-axes +ServoDyn['BlPitchC3'] = False # (deg); Blade 3 pitch angle command; Positive towards feather about the minus zc3- and minus zb3-axes + +# Generator and Torque Control +ServoDyn['GenTq'] = False # (kN-m); Electrical generator torque; Positive reflects power extracted and negative represents a motoring-up situation (power input) +ServoDyn['GenPwr'] = False # (kW); Electrical generator power; Same sign as GenTq + +# High Speed Shaft Brake +ServoDyn['HSSBrTqC'] = False # (kN-m); High-speed shaft brake torque command (i.e., the commanded moment applied to the high-speed shaft by the brake); Always positive (indicating dissipation of power) + +# Nacelle Yaw Control +ServoDyn['YawMomCom'] = False # (kN-m); Nacelle yaw moment command; About the zl- and zp-axes +ServoDyn['YawMom'] = False # (kN-m); Nacelle yaw moment command; About the zl- and zp-axes + +# Nacelle Structural Control (StC) +ServoDyn['NStC1_XQ'] = False # (m); Nacelle StC #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC1_XQD'] = False # (m/s); Nacelle StC #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC1_YQ'] = False # (m); Nacelle StC #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC1_YQD'] = False # (m/s); Nacelle StC #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC1_ZQ'] = False # (m); Nacelle StC #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC1_ZQD'] = False # (m/s); Nacelle StC #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC1_Fxi'] = False # (kN); Nacelle StC #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['NStC1_Fyi'] = False # (kN); Nacelle StC #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['NStC1_Fzi'] = False # (kN); Nacelle StC #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['NStC1_Mxi'] = False # (kN-m); Nacelle StC #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['NStC1_Myi'] = False # (kN-m); Nacelle StC #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['NStC1_Mzi'] = False # (kN-m); Nacelle StC #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['NStC1_Fxl'] = False # (kN); Nacelle StC #1 -- X resulting force; Local StC coordinates +ServoDyn['NStC1_Fyl'] = False # (kN); Nacelle StC #1 -- Y resulting force; Local StC coordinates +ServoDyn['NStC1_Fzl'] = False # (kN); Nacelle StC #1 -- Z resulting force; Local StC coordinates +ServoDyn['NStC1_Mxl'] = False # (kN-m); Nacelle StC #1 -- X resulting moment; Local StC coordinates +ServoDyn['NStC1_Myl'] = False # (kN-m); Nacelle StC #1 -- Y resulting moment; Local StC coordinates +ServoDyn['NStC1_Mzl'] = False # (kN-m); Nacelle StC #1 -- Z resulting moment; Local StC coordinates +ServoDyn['NStC2_XQ'] = False # (m); Nacelle StC #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC2_XQD'] = False # (m/s); Nacelle StC #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC2_YQ'] = False # (m); Nacelle StC #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC2_YQD'] = False # (m/s); Nacelle StC #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC2_ZQ'] = False # (m); Nacelle StC #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC2_ZQD'] = False # (m/s); Nacelle StC #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC2_Fxi'] = False # (kN); Nacelle StC #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['NStC2_Fyi'] = False # (kN); Nacelle StC #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['NStC2_Fzi'] = False # (kN); Nacelle StC #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['NStC2_Mxi'] = False # (kN-m); Nacelle StC #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['NStC2_Myi'] = False # (kN-m); Nacelle StC #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['NStC2_Mzi'] = False # (kN-m); Nacelle StC #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['NStC2_Fxl'] = False # (kN); Nacelle StC #2 -- X resulting force; Local StC coordinates +ServoDyn['NStC2_Fyl'] = False # (kN); Nacelle StC #2 -- Y resulting force; Local StC coordinates +ServoDyn['NStC2_Fzl'] = False # (kN); Nacelle StC #2 -- Z resulting force; Local StC coordinates +ServoDyn['NStC2_Mxl'] = False # (kN-m); Nacelle StC #2 -- X resulting moment; Local StC coordinates +ServoDyn['NStC2_Myl'] = False # (kN-m); Nacelle StC #2 -- Y resulting moment; Local StC coordinates +ServoDyn['NStC2_Mzl'] = False # (kN-m); Nacelle StC #2 -- Z resulting moment; Local StC coordinates +ServoDyn['NStC3_XQ'] = False # (m); Nacelle StC #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC3_XQD'] = False # (m/s); Nacelle StC #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC3_YQ'] = False # (m); Nacelle StC #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC3_YQD'] = False # (m/s); Nacelle StC #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC3_ZQ'] = False # (m); Nacelle StC #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC3_ZQD'] = False # (m/s); Nacelle StC #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC3_Fxi'] = False # (kN); Nacelle StC #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['NStC3_Fyi'] = False # (kN); Nacelle StC #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['NStC3_Fzi'] = False # (kN); Nacelle StC #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['NStC3_Mxi'] = False # (kN-m); Nacelle StC #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['NStC3_Myi'] = False # (kN-m); Nacelle StC #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['NStC3_Mzi'] = False # (kN-m); Nacelle StC #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['NStC3_Fxl'] = False # (kN); Nacelle StC #3 -- X resulting force; Local StC coordinates +ServoDyn['NStC3_Fyl'] = False # (kN); Nacelle StC #3 -- Y resulting force; Local StC coordinates +ServoDyn['NStC3_Fzl'] = False # (kN); Nacelle StC #3 -- Z resulting force; Local StC coordinates +ServoDyn['NStC3_Mxl'] = False # (kN-m); Nacelle StC #3 -- X resulting moment; Local StC coordinates +ServoDyn['NStC3_Myl'] = False # (kN-m); Nacelle StC #3 -- Y resulting moment; Local StC coordinates +ServoDyn['NStC3_Mzl'] = False # (kN-m); Nacelle StC #3 -- Z resulting moment; Local StC coordinates +ServoDyn['NStC4_XQ'] = False # (m); Nacelle StC #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC4_XQD'] = False # (m/s); Nacelle StC #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC4_YQ'] = False # (m); Nacelle StC #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC4_YQD'] = False # (m/s); Nacelle StC #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC4_ZQ'] = False # (m); Nacelle StC #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['NStC4_ZQD'] = False # (m/s); Nacelle StC #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['NStC4_Fxi'] = False # (kN); Nacelle StC #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['NStC4_Fyi'] = False # (kN); Nacelle StC #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['NStC4_Fzi'] = False # (kN); Nacelle StC #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['NStC4_Mxi'] = False # (kN-m); Nacelle StC #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['NStC4_Myi'] = False # (kN-m); Nacelle StC #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['NStC4_Mzi'] = False # (kN-m); Nacelle StC #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['NStC4_Fxl'] = False # (kN); Nacelle StC #4 -- X resulting force; Local StC coordinates +ServoDyn['NStC4_Fyl'] = False # (kN); Nacelle StC #4 -- Y resulting force; Local StC coordinates +ServoDyn['NStC4_Fzl'] = False # (kN); Nacelle StC #4 -- Z resulting force; Local StC coordinates +ServoDyn['NStC4_Mxl'] = False # (kN-m); Nacelle StC #4 -- X resulting moment; Local StC coordinates +ServoDyn['NStC4_Myl'] = False # (kN-m); Nacelle StC #4 -- Y resulting moment; Local StC coordinates +ServoDyn['NStC4_Mzl'] = False # (kN-m); Nacelle StC #4 -- Z resulting moment; Local StC coordinates + +# Tower Structural Control (StC) +ServoDyn['TStC1_XQ'] = False # (m); Tower StC #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC1_XQD'] = False # (m/s); Tower StC #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC1_YQ'] = False # (m); Tower StC #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC1_YQD'] = False # (m/s); Tower StC #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC1_ZQ'] = False # (m); Tower StC #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC1_ZQD'] = False # (m/s); Tower StC #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC1_Fxi'] = False # (kN); Tower StC #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['TStC1_Fyi'] = False # (kN); Tower StC #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['TStC1_Fzi'] = False # (kN); Tower StC #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['TStC1_Mxi'] = False # (kN-m); Tower StC #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['TStC1_Myi'] = False # (kN-m); Tower StC #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['TStC1_Mzi'] = False # (kN-m); Tower StC #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['TStC1_Fxl'] = False # (kN); Tower StC #1 -- X resulting force; Local StC coordinates +ServoDyn['TStC1_Fyl'] = False # (kN); Tower StC #1 -- Y resulting force; Local StC coordinates +ServoDyn['TStC1_Fzl'] = False # (kN); Tower StC #1 -- Z resulting force; Local StC coordinates +ServoDyn['TStC1_Mxl'] = False # (kN-m); Tower StC #1 -- X resulting moment; Local StC coordinates +ServoDyn['TStC1_Myl'] = False # (kN-m); Tower StC #1 -- Y resulting moment; Local StC coordinates +ServoDyn['TStC1_Mzl'] = False # (kN-m); Tower StC #1 -- Z resulting moment; Local StC coordinates +ServoDyn['TStC2_XQ'] = False # (m); Tower StC #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC2_XQD'] = False # (m/s); Tower StC #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC2_YQ'] = False # (m); Tower StC #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC2_YQD'] = False # (m/s); Tower StC #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC2_ZQ'] = False # (m); Tower StC #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC2_ZQD'] = False # (m/s); Tower StC #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC2_Fxi'] = False # (kN); Tower StC #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['TStC2_Fyi'] = False # (kN); Tower StC #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['TStC2_Fzi'] = False # (kN); Tower StC #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['TStC2_Mxi'] = False # (kN-m); Tower StC #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['TStC2_Myi'] = False # (kN-m); Tower StC #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['TStC2_Mzi'] = False # (kN-m); Tower StC #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['TStC2_Fxl'] = False # (kN); Tower StC #2 -- X resulting force; Local StC coordinates +ServoDyn['TStC2_Fyl'] = False # (kN); Tower StC #2 -- Y resulting force; Local StC coordinates +ServoDyn['TStC2_Fzl'] = False # (kN); Tower StC #2 -- Z resulting force; Local StC coordinates +ServoDyn['TStC2_Mxl'] = False # (kN-m); Tower StC #2 -- X resulting moment; Local StC coordinates +ServoDyn['TStC2_Myl'] = False # (kN-m); Tower StC #2 -- Y resulting moment; Local StC coordinates +ServoDyn['TStC2_Mzl'] = False # (kN-m); Tower StC #2 -- Z resulting moment; Local StC coordinates +ServoDyn['TStC3_XQ'] = False # (m); Tower StC #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC3_XQD'] = False # (m/s); Tower StC #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC3_YQ'] = False # (m); Tower StC #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC3_YQD'] = False # (m/s); Tower StC #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC3_ZQ'] = False # (m); Tower StC #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC3_ZQD'] = False # (m/s); Tower StC #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC3_Fxi'] = False # (kN); Tower StC #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['TStC3_Fyi'] = False # (kN); Tower StC #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['TStC3_Fzi'] = False # (kN); Tower StC #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['TStC3_Mxi'] = False # (kN-m); Tower StC #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['TStC3_Myi'] = False # (kN-m); Tower StC #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['TStC3_Mzi'] = False # (kN-m); Tower StC #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['TStC3_Fxl'] = False # (kN); Tower StC #3 -- X resulting force; Local StC coordinates +ServoDyn['TStC3_Fyl'] = False # (kN); Tower StC #3 -- Y resulting force; Local StC coordinates +ServoDyn['TStC3_Fzl'] = False # (kN); Tower StC #3 -- Z resulting force; Local StC coordinates +ServoDyn['TStC3_Mxl'] = False # (kN-m); Tower StC #3 -- X resulting moment; Local StC coordinates +ServoDyn['TStC3_Myl'] = False # (kN-m); Tower StC #3 -- Y resulting moment; Local StC coordinates +ServoDyn['TStC3_Mzl'] = False # (kN-m); Tower StC #3 -- Z resulting moment; Local StC coordinates +ServoDyn['TStC4_XQ'] = False # (m); Tower StC #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC4_XQD'] = False # (m/s); Tower StC #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC4_YQ'] = False # (m); Tower StC #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC4_YQD'] = False # (m/s); Tower StC #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC4_ZQ'] = False # (m); Tower StC #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['TStC4_ZQD'] = False # (m/s); Tower StC #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['TStC4_Fxi'] = False # (kN); Tower StC #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['TStC4_Fyi'] = False # (kN); Tower StC #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['TStC4_Fzi'] = False # (kN); Tower StC #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['TStC4_Mxi'] = False # (kN-m); Tower StC #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['TStC4_Myi'] = False # (kN-m); Tower StC #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['TStC4_Mzi'] = False # (kN-m); Tower StC #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['TStC4_Fxl'] = False # (kN); Tower StC #4 -- X resulting force; Local StC coordinates +ServoDyn['TStC4_Fyl'] = False # (kN); Tower StC #4 -- Y resulting force; Local StC coordinates +ServoDyn['TStC4_Fzl'] = False # (kN); Tower StC #4 -- Z resulting force; Local StC coordinates +ServoDyn['TStC4_Mxl'] = False # (kN-m); Tower StC #4 -- X resulting moment; Local StC coordinates +ServoDyn['TStC4_Myl'] = False # (kN-m); Tower StC #4 -- Y resulting moment; Local StC coordinates +ServoDyn['TStC4_Mzl'] = False # (kN-m); Tower StC #4 -- Z resulting moment; Local StC coordinates + +# Blade Structural Control (StC) +ServoDyn['BStC1_B1_XQ'] = False # (m); Blade StC #1 Blade #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B1_XQD'] = False # (m/s); Blade StC #1 Blade #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B1_YQ'] = False # (m); Blade StC #1 Blade #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B1_YQD'] = False # (m/s); Blade StC #1 Blade #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B1_ZQ'] = False # (m); Blade StC #1 Blade #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B1_ZQD'] = False # (m/s); Blade StC #1 Blade #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B1_Fxi'] = False # (kN); Blade StC #1 Blade #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B1_Fyi'] = False # (kN); Blade StC #1 Blade #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B1_Fzi'] = False # (kN); Blade StC #1 Blade #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B1_Mxi'] = False # (kN-m); Blade StC #1 Blade #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B1_Myi'] = False # (kN-m); Blade StC #1 Blade #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B1_Mzi'] = False # (kN-m); Blade StC #1 Blade #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B1_Fxl'] = False # (kN); Blade StC #1 Blade #1 -- X resulting force; Local StC coordinates +ServoDyn['BStC1_B1_Fyl'] = False # (kN); Blade StC #1 Blade #1 -- Y resulting force; Local StC coordinates +ServoDyn['BStC1_B1_Fzl'] = False # (kN); Blade StC #1 Blade #1 -- Z resulting force; Local StC coordinates +ServoDyn['BStC1_B1_Mxl'] = False # (kN-m); Blade StC #1 Blade #1 -- X resulting moment; Local StC coordinates +ServoDyn['BStC1_B1_Myl'] = False # (kN-m); Blade StC #1 Blade #1 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC1_B1_Mzl'] = False # (kN-m); Blade StC #1 Blade #1 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC2_B1_XQ'] = False # (m); Blade StC #2 Blade #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B1_XQD'] = False # (m/s); Blade StC #2 Blade #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B1_YQ'] = False # (m); Blade StC #2 Blade #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B1_YQD'] = False # (m/s); Blade StC #2 Blade #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B1_ZQ'] = False # (m); Blade StC #2 Blade #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B1_ZQD'] = False # (m/s); Blade StC #2 Blade #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B1_Fxi'] = False # (kN); Blade StC #2 Blade #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B1_Fyi'] = False # (kN); Blade StC #2 Blade #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B1_Fzi'] = False # (kN); Blade StC #2 Blade #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B1_Mxi'] = False # (kN-m); Blade StC #2 Blade #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B1_Myi'] = False # (kN-m); Blade StC #2 Blade #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B1_Mzi'] = False # (kN-m); Blade StC #2 Blade #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B1_Fxl'] = False # (kN); Blade StC #2 Blade #1 -- X resulting force; Local StC coordinates +ServoDyn['BStC2_B1_Fyl'] = False # (kN); Blade StC #2 Blade #1 -- Y resulting force; Local StC coordinates +ServoDyn['BStC2_B1_Fzl'] = False # (kN); Blade StC #2 Blade #1 -- Z resulting force; Local StC coordinates +ServoDyn['BStC2_B1_Mxl'] = False # (kN-m); Blade StC #2 Blade #1 -- X resulting moment; Local StC coordinates +ServoDyn['BStC2_B1_Myl'] = False # (kN-m); Blade StC #2 Blade #1 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC2_B1_Mzl'] = False # (kN-m); Blade StC #2 Blade #1 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC3_B1_XQ'] = False # (m); Blade StC #3 Blade #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B1_XQD'] = False # (m/s); Blade StC #3 Blade #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B1_YQ'] = False # (m); Blade StC #3 Blade #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B1_YQD'] = False # (m/s); Blade StC #3 Blade #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B1_ZQ'] = False # (m); Blade StC #3 Blade #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B1_ZQD'] = False # (m/s); Blade StC #3 Blade #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B1_Fxi'] = False # (kN); Blade StC #3 Blade #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B1_Fyi'] = False # (kN); Blade StC #3 Blade #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B1_Fzi'] = False # (kN); Blade StC #3 Blade #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B1_Mxi'] = False # (kN-m); Blade StC #3 Blade #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B1_Myi'] = False # (kN-m); Blade StC #3 Blade #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B1_Mzi'] = False # (kN-m); Blade StC #3 Blade #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B1_Fxl'] = False # (kN); Blade StC #3 Blade #1 -- X resulting force; Local StC coordinates +ServoDyn['BStC3_B1_Fyl'] = False # (kN); Blade StC #3 Blade #1 -- Y resulting force; Local StC coordinates +ServoDyn['BStC3_B1_Fzl'] = False # (kN); Blade StC #3 Blade #1 -- Z resulting force; Local StC coordinates +ServoDyn['BStC3_B1_Mxl'] = False # (kN-m); Blade StC #3 Blade #1 -- X resulting moment; Local StC coordinates +ServoDyn['BStC3_B1_Myl'] = False # (kN-m); Blade StC #3 Blade #1 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC3_B1_Mzl'] = False # (kN-m); Blade StC #3 Blade #1 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC4_B1_XQ'] = False # (m); Blade StC #4 Blade #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B1_XQD'] = False # (m/s); Blade StC #4 Blade #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B1_YQ'] = False # (m); Blade StC #4 Blade #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B1_YQD'] = False # (m/s); Blade StC #4 Blade #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B1_ZQ'] = False # (m); Blade StC #4 Blade #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B1_ZQD'] = False # (m/s); Blade StC #4 Blade #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B1_Fxi'] = False # (kN); Blade StC #4 Blade #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B1_Fyi'] = False # (kN); Blade StC #4 Blade #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B1_Fzi'] = False # (kN); Blade StC #4 Blade #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B1_Mxi'] = False # (kN-m); Blade StC #4 Blade #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B1_Myi'] = False # (kN-m); Blade StC #4 Blade #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B1_Mzi'] = False # (kN-m); Blade StC #4 Blade #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B1_Fxl'] = False # (kN); Blade StC #4 Blade #1 -- X resulting force; Local StC coordinates +ServoDyn['BStC4_B1_Fyl'] = False # (kN); Blade StC #4 Blade #1 -- Y resulting force; Local StC coordinates +ServoDyn['BStC4_B1_Fzl'] = False # (kN); Blade StC #4 Blade #1 -- Z resulting force; Local StC coordinates +ServoDyn['BStC4_B1_Mxl'] = False # (kN-m); Blade StC #4 Blade #1 -- X resulting moment; Local StC coordinates +ServoDyn['BStC4_B1_Myl'] = False # (kN-m); Blade StC #4 Blade #1 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC4_B1_Mzl'] = False # (kN-m); Blade StC #4 Blade #1 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC1_B2_XQ'] = False # (m); Blade StC #1 Blade #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B2_XQD'] = False # (m/s); Blade StC #1 Blade #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B2_YQ'] = False # (m); Blade StC #1 Blade #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B2_YQD'] = False # (m/s); Blade StC #1 Blade #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B2_ZQ'] = False # (m); Blade StC #1 Blade #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B2_ZQD'] = False # (m/s); Blade StC #1 Blade #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B2_Fxi'] = False # (kN); Blade StC #1 Blade #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B2_Fyi'] = False # (kN); Blade StC #1 Blade #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B2_Fzi'] = False # (kN); Blade StC #1 Blade #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B2_Mxi'] = False # (kN-m); Blade StC #1 Blade #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B2_Myi'] = False # (kN-m); Blade StC #1 Blade #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B2_Mzi'] = False # (kN-m); Blade StC #1 Blade #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B2_Fxl'] = False # (kN); Blade StC #1 Blade #2 -- X resulting force; Local StC coordinates +ServoDyn['BStC1_B2_Fyl'] = False # (kN); Blade StC #1 Blade #2 -- Y resulting force; Local StC coordinates +ServoDyn['BStC1_B2_Fzl'] = False # (kN); Blade StC #1 Blade #2 -- Z resulting force; Local StC coordinates +ServoDyn['BStC1_B2_Mxl'] = False # (kN-m); Blade StC #1 Blade #2 -- X resulting moment; Local StC coordinates +ServoDyn['BStC1_B2_Myl'] = False # (kN-m); Blade StC #1 Blade #2 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC1_B2_Mzl'] = False # (kN-m); Blade StC #1 Blade #2 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC2_B2_XQ'] = False # (m); Blade StC #2 Blade #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B2_XQD'] = False # (m/s); Blade StC #2 Blade #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B2_YQ'] = False # (m); Blade StC #2 Blade #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B2_YQD'] = False # (m/s); Blade StC #2 Blade #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B2_ZQ'] = False # (m); Blade StC #2 Blade #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B2_ZQD'] = False # (m/s); Blade StC #2 Blade #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B2_Fxi'] = False # (kN); Blade StC #2 Blade #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B2_Fyi'] = False # (kN); Blade StC #2 Blade #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B2_Fzi'] = False # (kN); Blade StC #2 Blade #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B2_Mxi'] = False # (kN-m); Blade StC #2 Blade #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B2_Myi'] = False # (kN-m); Blade StC #2 Blade #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B2_Mzi'] = False # (kN-m); Blade StC #2 Blade #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B2_Fxl'] = False # (kN); Blade StC #2 Blade #2 -- X resulting force; Local StC coordinates +ServoDyn['BStC2_B2_Fyl'] = False # (kN); Blade StC #2 Blade #2 -- Y resulting force; Local StC coordinates +ServoDyn['BStC2_B2_Fzl'] = False # (kN); Blade StC #2 Blade #2 -- Z resulting force; Local StC coordinates +ServoDyn['BStC2_B2_Mxl'] = False # (kN-m); Blade StC #2 Blade #2 -- X resulting moment; Local StC coordinates +ServoDyn['BStC2_B2_Myl'] = False # (kN-m); Blade StC #2 Blade #2 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC2_B2_Mzl'] = False # (kN-m); Blade StC #2 Blade #2 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC3_B2_XQ'] = False # (m); Blade StC #3 Blade #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B2_XQD'] = False # (m/s); Blade StC #3 Blade #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B2_YQ'] = False # (m); Blade StC #3 Blade #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B2_YQD'] = False # (m/s); Blade StC #3 Blade #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B2_ZQ'] = False # (m); Blade StC #3 Blade #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B2_ZQD'] = False # (m/s); Blade StC #3 Blade #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B2_Fxi'] = False # (kN); Blade StC #3 Blade #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B2_Fyi'] = False # (kN); Blade StC #3 Blade #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B2_Fzi'] = False # (kN); Blade StC #3 Blade #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B2_Mxi'] = False # (kN-m); Blade StC #3 Blade #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B2_Myi'] = False # (kN-m); Blade StC #3 Blade #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B2_Mzi'] = False # (kN-m); Blade StC #3 Blade #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B2_Fxl'] = False # (kN); Blade StC #3 Blade #2 -- X resulting force; Local StC coordinates +ServoDyn['BStC3_B2_Fyl'] = False # (kN); Blade StC #3 Blade #2 -- Y resulting force; Local StC coordinates +ServoDyn['BStC3_B2_Fzl'] = False # (kN); Blade StC #3 Blade #2 -- Z resulting force; Local StC coordinates +ServoDyn['BStC3_B2_Mxl'] = False # (kN-m); Blade StC #3 Blade #2 -- X resulting moment; Local StC coordinates +ServoDyn['BStC3_B2_Myl'] = False # (kN-m); Blade StC #3 Blade #2 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC3_B2_Mzl'] = False # (kN-m); Blade StC #3 Blade #2 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC4_B2_XQ'] = False # (m); Blade StC #4 Blade #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B2_XQD'] = False # (m/s); Blade StC #4 Blade #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B2_YQ'] = False # (m); Blade StC #4 Blade #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B2_YQD'] = False # (m/s); Blade StC #4 Blade #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B2_ZQ'] = False # (m); Blade StC #4 Blade #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B2_ZQD'] = False # (m/s); Blade StC #4 Blade #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B2_Fxi'] = False # (kN); Blade StC #4 Blade #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B2_Fyi'] = False # (kN); Blade StC #4 Blade #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B2_Fzi'] = False # (kN); Blade StC #4 Blade #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B2_Mxi'] = False # (kN-m); Blade StC #4 Blade #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B2_Myi'] = False # (kN-m); Blade StC #4 Blade #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B2_Mzi'] = False # (kN-m); Blade StC #4 Blade #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B2_Fxl'] = False # (kN); Blade StC #4 Blade #2 -- X resulting force; Local StC coordinates +ServoDyn['BStC4_B2_Fyl'] = False # (kN); Blade StC #4 Blade #2 -- Y resulting force; Local StC coordinates +ServoDyn['BStC4_B2_Fzl'] = False # (kN); Blade StC #4 Blade #2 -- Z resulting force; Local StC coordinates +ServoDyn['BStC4_B2_Mxl'] = False # (kN-m); Blade StC #4 Blade #2 -- X resulting moment; Local StC coordinates +ServoDyn['BStC4_B2_Myl'] = False # (kN-m); Blade StC #4 Blade #2 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC4_B2_Mzl'] = False # (kN-m); Blade StC #4 Blade #2 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC1_B3_XQ'] = False # (m); Blade StC #1 Blade #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B3_XQD'] = False # (m/s); Blade StC #1 Blade #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B3_YQ'] = False # (m); Blade StC #1 Blade #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B3_YQD'] = False # (m/s); Blade StC #1 Blade #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B3_ZQ'] = False # (m); Blade StC #1 Blade #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B3_ZQD'] = False # (m/s); Blade StC #1 Blade #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B3_Fxi'] = False # (kN); Blade StC #1 Blade #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B3_Fyi'] = False # (kN); Blade StC #1 Blade #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B3_Fzi'] = False # (kN); Blade StC #1 Blade #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B3_Mxi'] = False # (kN-m); Blade StC #1 Blade #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B3_Myi'] = False # (kN-m); Blade StC #1 Blade #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B3_Mzi'] = False # (kN-m); Blade StC #1 Blade #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B3_Fxl'] = False # (kN); Blade StC #1 Blade #3 -- X resulting force; Local StC coordinates +ServoDyn['BStC1_B3_Fyl'] = False # (kN); Blade StC #1 Blade #3 -- Y resulting force; Local StC coordinates +ServoDyn['BStC1_B3_Fzl'] = False # (kN); Blade StC #1 Blade #3 -- Z resulting force; Local StC coordinates +ServoDyn['BStC1_B3_Mxl'] = False # (kN-m); Blade StC #1 Blade #3 -- X resulting moment; Local StC coordinates +ServoDyn['BStC1_B3_Myl'] = False # (kN-m); Blade StC #1 Blade #3 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC1_B3_Mzl'] = False # (kN-m); Blade StC #1 Blade #3 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC2_B3_XQ'] = False # (m); Blade StC #2 Blade #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B3_XQD'] = False # (m/s); Blade StC #2 Blade #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B3_YQ'] = False # (m); Blade StC #2 Blade #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B3_YQD'] = False # (m/s); Blade StC #2 Blade #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B3_ZQ'] = False # (m); Blade StC #2 Blade #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B3_ZQD'] = False # (m/s); Blade StC #2 Blade #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B3_Fxi'] = False # (kN); Blade StC #2 Blade #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B3_Fyi'] = False # (kN); Blade StC #2 Blade #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B3_Fzi'] = False # (kN); Blade StC #2 Blade #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B3_Mxi'] = False # (kN-m); Blade StC #2 Blade #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B3_Myi'] = False # (kN-m); Blade StC #2 Blade #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B3_Mzi'] = False # (kN-m); Blade StC #2 Blade #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B3_Fxl'] = False # (kN); Blade StC #2 Blade #3 -- X resulting force; Local StC coordinates +ServoDyn['BStC2_B3_Fyl'] = False # (kN); Blade StC #2 Blade #3 -- Y resulting force; Local StC coordinates +ServoDyn['BStC2_B3_Fzl'] = False # (kN); Blade StC #2 Blade #3 -- Z resulting force; Local StC coordinates +ServoDyn['BStC2_B3_Mxl'] = False # (kN-m); Blade StC #2 Blade #3 -- X resulting moment; Local StC coordinates +ServoDyn['BStC2_B3_Myl'] = False # (kN-m); Blade StC #2 Blade #3 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC2_B3_Mzl'] = False # (kN-m); Blade StC #2 Blade #3 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC3_B3_XQ'] = False # (m); Blade StC #3 Blade #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B3_XQD'] = False # (m/s); Blade StC #3 Blade #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B3_YQ'] = False # (m); Blade StC #3 Blade #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B3_YQD'] = False # (m/s); Blade StC #3 Blade #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B3_ZQ'] = False # (m); Blade StC #3 Blade #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B3_ZQD'] = False # (m/s); Blade StC #3 Blade #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B3_Fxi'] = False # (kN); Blade StC #3 Blade #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B3_Fyi'] = False # (kN); Blade StC #3 Blade #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B3_Fzi'] = False # (kN); Blade StC #3 Blade #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B3_Mxi'] = False # (kN-m); Blade StC #3 Blade #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B3_Myi'] = False # (kN-m); Blade StC #3 Blade #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B3_Mzi'] = False # (kN-m); Blade StC #3 Blade #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B3_Fxl'] = False # (kN); Blade StC #3 Blade #3 -- X resulting force; Local StC coordinates +ServoDyn['BStC3_B3_Fyl'] = False # (kN); Blade StC #3 Blade #3 -- Y resulting force; Local StC coordinates +ServoDyn['BStC3_B3_Fzl'] = False # (kN); Blade StC #3 Blade #3 -- Z resulting force; Local StC coordinates +ServoDyn['BStC3_B3_Mxl'] = False # (kN-m); Blade StC #3 Blade #3 -- X resulting moment; Local StC coordinates +ServoDyn['BStC3_B3_Myl'] = False # (kN-m); Blade StC #3 Blade #3 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC3_B3_Mzl'] = False # (kN-m); Blade StC #3 Blade #3 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC4_B3_XQ'] = False # (m); Blade StC #4 Blade #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B3_XQD'] = False # (m/s); Blade StC #4 Blade #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B3_YQ'] = False # (m); Blade StC #4 Blade #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B3_YQD'] = False # (m/s); Blade StC #4 Blade #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B3_ZQ'] = False # (m); Blade StC #4 Blade #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B3_ZQD'] = False # (m/s); Blade StC #4 Blade #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B3_Fxi'] = False # (kN); Blade StC #4 Blade #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B3_Fyi'] = False # (kN); Blade StC #4 Blade #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B3_Fzi'] = False # (kN); Blade StC #4 Blade #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B3_Mxi'] = False # (kN-m); Blade StC #4 Blade #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B3_Myi'] = False # (kN-m); Blade StC #4 Blade #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B3_Mzi'] = False # (kN-m); Blade StC #4 Blade #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B3_Fxl'] = False # (kN); Blade StC #4 Blade #3 -- X resulting force; Local StC coordinates +ServoDyn['BStC4_B3_Fyl'] = False # (kN); Blade StC #4 Blade #3 -- Y resulting force; Local StC coordinates +ServoDyn['BStC4_B3_Fzl'] = False # (kN); Blade StC #4 Blade #3 -- Z resulting force; Local StC coordinates +ServoDyn['BStC4_B3_Mxl'] = False # (kN-m); Blade StC #4 Blade #3 -- X resulting moment; Local StC coordinates +ServoDyn['BStC4_B3_Myl'] = False # (kN-m); Blade StC #4 Blade #3 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC4_B3_Mzl'] = False # (kN-m); Blade StC #4 Blade #3 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC1_B4_XQ'] = False # (m); Blade StC #1 Blade #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B4_XQD'] = False # (m/s); Blade StC #1 Blade #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B4_YQ'] = False # (m); Blade StC #1 Blade #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B4_YQD'] = False # (m/s); Blade StC #1 Blade #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B4_ZQ'] = False # (m); Blade StC #1 Blade #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC1_B4_ZQD'] = False # (m/s); Blade StC #1 Blade #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC1_B4_Fxi'] = False # (kN); Blade StC #1 Blade #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B4_Fyi'] = False # (kN); Blade StC #1 Blade #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B4_Fzi'] = False # (kN); Blade StC #1 Blade #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC1_B4_Mxi'] = False # (kN-m); Blade StC #1 Blade #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B4_Myi'] = False # (kN-m); Blade StC #1 Blade #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B4_Mzi'] = False # (kN-m); Blade StC #1 Blade #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC1_B4_Fxl'] = False # (kN); Blade StC #1 Blade #4 -- X resulting force; Local StC coordinates +ServoDyn['BStC1_B4_Fyl'] = False # (kN); Blade StC #1 Blade #4 -- Y resulting force; Local StC coordinates +ServoDyn['BStC1_B4_Fzl'] = False # (kN); Blade StC #1 Blade #4 -- Z resulting force; Local StC coordinates +ServoDyn['BStC1_B4_Mxl'] = False # (kN-m); Blade StC #1 Blade #4 -- X resulting moment; Local StC coordinates +ServoDyn['BStC1_B4_Myl'] = False # (kN-m); Blade StC #1 Blade #4 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC1_B4_Mzl'] = False # (kN-m); Blade StC #1 Blade #4 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC2_B4_XQ'] = False # (m); Blade StC #2 Blade #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B4_XQD'] = False # (m/s); Blade StC #2 Blade #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B4_YQ'] = False # (m); Blade StC #2 Blade #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B4_YQD'] = False # (m/s); Blade StC #2 Blade #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B4_ZQ'] = False # (m); Blade StC #2 Blade #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC2_B4_ZQD'] = False # (m/s); Blade StC #2 Blade #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC2_B4_Fxi'] = False # (kN); Blade StC #2 Blade #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B4_Fyi'] = False # (kN); Blade StC #2 Blade #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B4_Fzi'] = False # (kN); Blade StC #2 Blade #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC2_B4_Mxi'] = False # (kN-m); Blade StC #2 Blade #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B4_Myi'] = False # (kN-m); Blade StC #2 Blade #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B4_Mzi'] = False # (kN-m); Blade StC #2 Blade #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC2_B4_Fxl'] = False # (kN); Blade StC #2 Blade #4 -- X resulting force; Local StC coordinates +ServoDyn['BStC2_B4_Fyl'] = False # (kN); Blade StC #2 Blade #4 -- Y resulting force; Local StC coordinates +ServoDyn['BStC2_B4_Fzl'] = False # (kN); Blade StC #2 Blade #4 -- Z resulting force; Local StC coordinates +ServoDyn['BStC2_B4_Mxl'] = False # (kN-m); Blade StC #2 Blade #4 -- X resulting moment; Local StC coordinates +ServoDyn['BStC2_B4_Myl'] = False # (kN-m); Blade StC #2 Blade #4 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC2_B4_Mzl'] = False # (kN-m); Blade StC #2 Blade #4 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC3_B4_XQ'] = False # (m); Blade StC #3 Blade #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B4_XQD'] = False # (m/s); Blade StC #3 Blade #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B4_YQ'] = False # (m); Blade StC #3 Blade #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B4_YQD'] = False # (m/s); Blade StC #3 Blade #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B4_ZQ'] = False # (m); Blade StC #3 Blade #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC3_B4_ZQD'] = False # (m/s); Blade StC #3 Blade #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC3_B4_Fxi'] = False # (kN); Blade StC #3 Blade #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B4_Fyi'] = False # (kN); Blade StC #3 Blade #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B4_Fzi'] = False # (kN); Blade StC #3 Blade #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC3_B4_Mxi'] = False # (kN-m); Blade StC #3 Blade #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B4_Myi'] = False # (kN-m); Blade StC #3 Blade #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B4_Mzi'] = False # (kN-m); Blade StC #3 Blade #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC3_B4_Fxl'] = False # (kN); Blade StC #3 Blade #4 -- X resulting force; Local StC coordinates +ServoDyn['BStC3_B4_Fyl'] = False # (kN); Blade StC #3 Blade #4 -- Y resulting force; Local StC coordinates +ServoDyn['BStC3_B4_Fzl'] = False # (kN); Blade StC #3 Blade #4 -- Z resulting force; Local StC coordinates +ServoDyn['BStC3_B4_Mxl'] = False # (kN-m); Blade StC #3 Blade #4 -- X resulting moment; Local StC coordinates +ServoDyn['BStC3_B4_Myl'] = False # (kN-m); Blade StC #3 Blade #4 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC3_B4_Mzl'] = False # (kN-m); Blade StC #3 Blade #4 -- Z resulting moment; Local StC coordinates +ServoDyn['BStC4_B4_XQ'] = False # (m); Blade StC #4 Blade #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B4_XQD'] = False # (m/s); Blade StC #4 Blade #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B4_YQ'] = False # (m); Blade StC #4 Blade #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B4_YQD'] = False # (m/s); Blade StC #4 Blade #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B4_ZQ'] = False # (m); Blade StC #4 Blade #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['BStC4_B4_ZQD'] = False # (m/s); Blade StC #4 Blade #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['BStC4_B4_Fxi'] = False # (kN); Blade StC #4 Blade #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B4_Fyi'] = False # (kN); Blade StC #4 Blade #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B4_Fzi'] = False # (kN); Blade StC #4 Blade #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['BStC4_B4_Mxi'] = False # (kN-m); Blade StC #4 Blade #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B4_Myi'] = False # (kN-m); Blade StC #4 Blade #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B4_Mzi'] = False # (kN-m); Blade StC #4 Blade #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['BStC4_B4_Fxl'] = False # (kN); Blade StC #4 Blade #4 -- X resulting force; Local StC coordinates +ServoDyn['BStC4_B4_Fyl'] = False # (kN); Blade StC #4 Blade #4 -- Y resulting force; Local StC coordinates +ServoDyn['BStC4_B4_Fzl'] = False # (kN); Blade StC #4 Blade #4 -- Z resulting force; Local StC coordinates +ServoDyn['BStC4_B4_Mxl'] = False # (kN-m); Blade StC #4 Blade #4 -- X resulting moment; Local StC coordinates +ServoDyn['BStC4_B4_Myl'] = False # (kN-m); Blade StC #4 Blade #4 -- Y resulting moment; Local StC coordinates +ServoDyn['BStC4_B4_Mzl'] = False # (kN-m); Blade StC #4 Blade #4 -- Z resulting moment; Local StC coordinates + +# Substructure Structural Control (StC) +ServoDyn['SStC1_XQ'] = False # (m); Substructure StC #1 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC1_XQD'] = False # (m/s); Substructure StC #1 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC1_YQ'] = False # (m); Substructure StC #1 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC1_YQD'] = False # (m/s); Substructure StC #1 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC1_ZQ'] = False # (m); Substructure StC #1 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC1_ZQD'] = False # (m/s); Substructure StC #1 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC1_Fxi'] = False # (kN); Substructure StC #1 -- X resulting force; Inertial (global) coordinates +ServoDyn['SStC1_Fyi'] = False # (kN); Substructure StC #1 -- Y resulting force; Inertial (global) coordinates +ServoDyn['SStC1_Fzi'] = False # (kN); Substructure StC #1 -- Z resulting force; Inertial (global) coordinates +ServoDyn['SStC1_Mxi'] = False # (kN-m); Substructure StC #1 -- X resulting moment; Inertial (global) coordinates +ServoDyn['SStC1_Myi'] = False # (kN-m); Substructure StC #1 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['SStC1_Mzi'] = False # (kN-m); Substructure StC #1 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['SStC1_Fxl'] = False # (kN); Substructure StC #1 -- X resulting force; Local StC coordinates +ServoDyn['SStC1_Fyl'] = False # (kN); Substructure StC #1 -- Y resulting force; Local StC coordinates +ServoDyn['SStC1_Fzl'] = False # (kN); Substructure StC #1 -- Z resulting force; Local StC coordinates +ServoDyn['SStC1_Mxl'] = False # (kN-m); Substructure StC #1 -- X resulting moment; Local StC coordinates +ServoDyn['SStC1_Myl'] = False # (kN-m); Substructure StC #1 -- Y resulting moment; Local StC coordinates +ServoDyn['SStC1_Mzl'] = False # (kN-m); Substructure StC #1 -- Z resulting moment; Local StC coordinates +ServoDyn['SStC2_XQ'] = False # (m); Substructure StC #2 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC2_XQD'] = False # (m/s); Substructure StC #2 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC2_YQ'] = False # (m); Substructure StC #2 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC2_YQD'] = False # (m/s); Substructure StC #2 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC2_ZQ'] = False # (m); Substructure StC #2 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC2_ZQD'] = False # (m/s); Substructure StC #2 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC2_Fxi'] = False # (kN); Substructure StC #2 -- X resulting force; Inertial (global) coordinates +ServoDyn['SStC2_Fyi'] = False # (kN); Substructure StC #2 -- Y resulting force; Inertial (global) coordinates +ServoDyn['SStC2_Fzi'] = False # (kN); Substructure StC #2 -- Z resulting force; Inertial (global) coordinates +ServoDyn['SStC2_Mxi'] = False # (kN-m); Substructure StC #2 -- X resulting moment; Inertial (global) coordinates +ServoDyn['SStC2_Myi'] = False # (kN-m); Substructure StC #2 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['SStC2_Mzi'] = False # (kN-m); Substructure StC #2 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['SStC2_Fxl'] = False # (kN); Substructure StC #2 -- X resulting force; Local StC coordinates +ServoDyn['SStC2_Fyl'] = False # (kN); Substructure StC #2 -- Y resulting force; Local StC coordinates +ServoDyn['SStC2_Fzl'] = False # (kN); Substructure StC #2 -- Z resulting force; Local StC coordinates +ServoDyn['SStC2_Mxl'] = False # (kN-m); Substructure StC #2 -- X resulting moment; Local StC coordinates +ServoDyn['SStC2_Myl'] = False # (kN-m); Substructure StC #2 -- Y resulting moment; Local StC coordinates +ServoDyn['SStC2_Mzl'] = False # (kN-m); Substructure StC #2 -- Z resulting moment; Local StC coordinates +ServoDyn['SStC3_XQ'] = False # (m); Substructure StC #3 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC3_XQD'] = False # (m/s); Substructure StC #3 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC3_YQ'] = False # (m); Substructure StC #3 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC3_YQD'] = False # (m/s); Substructure StC #3 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC3_ZQ'] = False # (m); Substructure StC #3 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC3_ZQD'] = False # (m/s); Substructure StC #3 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC3_Fxi'] = False # (kN); Substructure StC #3 -- X resulting force; Inertial (global) coordinates +ServoDyn['SStC3_Fyi'] = False # (kN); Substructure StC #3 -- Y resulting force; Inertial (global) coordinates +ServoDyn['SStC3_Fzi'] = False # (kN); Substructure StC #3 -- Z resulting force; Inertial (global) coordinates +ServoDyn['SStC3_Mxi'] = False # (kN-m); Substructure StC #3 -- X resulting moment; Inertial (global) coordinates +ServoDyn['SStC3_Myi'] = False # (kN-m); Substructure StC #3 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['SStC3_Mzi'] = False # (kN-m); Substructure StC #3 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['SStC3_Fxl'] = False # (kN); Substructure StC #3 -- X resulting force; Local StC coordinates +ServoDyn['SStC3_Fyl'] = False # (kN); Substructure StC #3 -- Y resulting force; Local StC coordinates +ServoDyn['SStC3_Fzl'] = False # (kN); Substructure StC #3 -- Z resulting force; Local StC coordinates +ServoDyn['SStC3_Mxl'] = False # (kN-m); Substructure StC #3 -- X resulting moment; Local StC coordinates +ServoDyn['SStC3_Myl'] = False # (kN-m); Substructure StC #3 -- Y resulting moment; Local StC coordinates +ServoDyn['SStC3_Mzl'] = False # (kN-m); Substructure StC #3 -- Z resulting moment; Local StC coordinates +ServoDyn['SStC4_XQ'] = False # (m); Substructure StC #4 -- X position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC4_XQD'] = False # (m/s); Substructure StC #4 -- X velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC4_YQ'] = False # (m); Substructure StC #4 -- Y position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC4_YQD'] = False # (m/s); Substructure StC #4 -- Y velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC4_ZQ'] = False # (m); Substructure StC #4 -- Z position (displacement); Relative to rest position in StC reference frame +ServoDyn['SStC4_ZQD'] = False # (m/s); Substructure StC #4 -- Z velocity; Relative to nacelle in StC reference frame +ServoDyn['SStC4_Fxi'] = False # (kN); Substructure StC #4 -- X resulting force; Inertial (global) coordinates +ServoDyn['SStC4_Fyi'] = False # (kN); Substructure StC #4 -- Y resulting force; Inertial (global) coordinates +ServoDyn['SStC4_Fzi'] = False # (kN); Substructure StC #4 -- Z resulting force; Inertial (global) coordinates +ServoDyn['SStC4_Mxi'] = False # (kN-m); Substructure StC #4 -- X resulting moment; Inertial (global) coordinates +ServoDyn['SStC4_Myi'] = False # (kN-m); Substructure StC #4 -- Y resulting moment; Inertial (global) coordinates +ServoDyn['SStC4_Mzi'] = False # (kN-m); Substructure StC #4 -- Z resulting moment; Inertial (global) coordinates +ServoDyn['SStC4_Fxl'] = False # (kN); Substructure StC #4 -- X resulting force; Local StC coordinates +ServoDyn['SStC4_Fyl'] = False # (kN); Substructure StC #4 -- Y resulting force; Local StC coordinates +ServoDyn['SStC4_Fzl'] = False # (kN); Substructure StC #4 -- Z resulting force; Local StC coordinates +ServoDyn['SStC4_Mxl'] = False # (kN-m); Substructure StC #4 -- X resulting moment; Local StC coordinates +ServoDyn['SStC4_Myl'] = False # (kN-m); Substructure StC #4 -- Y resulting moment; Local StC coordinates +ServoDyn['SStC4_Mzl'] = False # (kN-m); Substructure StC #4 -- Z resulting moment; Local StC coordinates + + +""" HydroDyn """ +HydroDyn = {} + +# Integrated Hydrodynamic Loads at (0,0,0) +HydroDyn['HydroFxi'] = False # (N); Total integrated hydrodynamic load along the global x-direction from both potential flow and strip theory at (0,0,0); +HydroDyn['HydroFyi'] = False # (N); Total integrated hydrodynamic load along the global y-direction from both potential flow and strip theory at (0,0,0); +HydroDyn['HydroFzi'] = False # (N); Total integrated hydrodynamic load along the global z-direction from both potential flow and strip theory at (0,0,0); +HydroDyn['HydroMxi'] = False # (N-m); Total integrated hydrodynamic moment about the global x-axis from both potential flow and strip theory at (0,0,0); +HydroDyn['HydroMyi'] = False # (N-m); Total integrated hydrodynamic moment about the global y-axis from both potential flow and strip theory at (0,0,0); +HydroDyn['HydroMzi'] = False # (N-m); Total integrated hydrodynamic moment about the global z-axis from both potential flow and strip theory at (0,0,0); + +# PRP Body Kinematics +HydroDyn['PRPSurge'] = False # (m); Displacement of the PRP (principal reference point) along the global x-axis; +HydroDyn['PRPSway'] = False # (m); Displacement of the PRP (principal reference point) along the global y-axis; +HydroDyn['PRPHeave'] = False # (m); Displacement of the PRP (principal reference point) along the global z-axis; +HydroDyn['PRPRoll'] = False # (rad); Rotation of the PRP (principal reference point) about the global x-axis at the PRP; +HydroDyn['PRPPitch'] = False # (rad); Rotation of the PRP (principal reference point) about the global y-axis at the PRP; +HydroDyn['PRPYaw'] = False # (rad); Rotation of the PRP (principal reference point) about the global z-axis at the PRP; +HydroDyn['PRPTVxi'] = False # (m/s); Translational velocity of the PRP (principal reference point) along the global x-axis; +HydroDyn['PRPTVyi'] = False # (m/s); Translational velocity of the PRP (principal reference point) along the global y-axis; +HydroDyn['PRPTVzi'] = False # (m/s); Translational velocity of the PRP (principal reference point) along the global z-axis; +HydroDyn['PRPRVxi'] = False # (rad/s); Rotation velocity of the PRP (principal reference point) about the global x-axis at the PRP; +HydroDyn['PRPRVyi'] = False # (rad/s); Rotation velocity of the PRP (principal reference point) about the global y-axis at the PRP; +HydroDyn['PRPRVzi'] = False # (rad/s); Rotation velocity of the PRP (principal reference point) about the global z-axis at the PRP; +HydroDyn['PRPTAxi'] = False # (m/s^2); Translational acceleration of the PRP (principal reference point) along the global x-axis; +HydroDyn['PRPTAyi'] = False # (m/s^2); Translational acceleration of the PRP (principal reference point) along the global y-axis; +HydroDyn['PRPTAzi'] = False # (m/s^2); Translational acceleration of the PRP (principal reference point) along the global z-axis; +HydroDyn['PRPRAxi'] = False # (rad/s^2); Rotation acceleration of the PRP (principal reference point) about the global x-axis at the PRP; +HydroDyn['PRPRAyi'] = False # (rad/s^2); Rotation acceleration of the PRP (principal reference point) about the global y-axis at the PRP; +HydroDyn['PRPRAzi'] = False # (rad/s^2); Rotation acceleration of the PRP (principal reference point) about the global z-axis at the PRP; + +# WAMIT Body Kinematics +HydroDyn['B1Surge'] = False # (m); Displacement of the 1st WAMIT body along the global x-axis; +HydroDyn['B1Sway'] = False # (m); Displacement of the 1st WAMIT body along the global y-axis; +HydroDyn['B1Heave'] = False # (m); Displacement of the 1st WAMIT body along the global z-axis; +HydroDyn['B1Roll'] = False # (rad); Rotation of the 1st WAMIT body about the global x-axis at the 1st WAMIT body's reference point; +HydroDyn['B1Pitch'] = False # (rad); Rotation of the 1st WAMIT body about the global y-axis at the 1st WAMIT body's reference point; +HydroDyn['B1Yaw'] = False # (rad); Rotation of the 1st WAMIT body about the global z-axis at the 1st WAMIT body's reference point; +HydroDyn['B1TVxi'] = False # (m/s); Translational velocity of the 1st WAMIT body along the global x-axis; +HydroDyn['B1TVyi'] = False # (m/s); Translational velocity of the 1st WAMIT body along the global y-axis; +HydroDyn['B1TVzi'] = False # (m/s); Translational velocity of the 1st WAMIT body along the global z-axis; +HydroDyn['B1RVxi'] = False # (rad/s); Rotational velocity of the 1st WAMIT body about the global x-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RVyi'] = False # (rad/s); Rotational velocity of the 1st WAMIT body about the global y-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RVzi'] = False # (rad/s); Rotational velocity of the 1st WAMIT body about the global z-axis at the 1st WAMIT body's reference point; +HydroDyn['B1TAxi'] = False # (m/s^2); Translational acceleration of the 1st WAMIT body along the global x-axis; +HydroDyn['B1TAyi'] = False # (m/s^2); Translational acceleration of the 1st WAMIT body along the global y-axis; +HydroDyn['B1TAzi'] = False # (m/s^2); Translational acceleration of the 1st WAMIT body along the global z-axis; +HydroDyn['B1RAxi'] = False # (rad/s^2); Rotational acceleration of the 1st WAMIT body about the global x-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RAyi'] = False # (rad/s^2); Rotational acceleration of the 1st WAMIT body about the global y-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RAzi'] = False # (rad/s^2); Rotational acceleration of the 1st WAMIT body about the global z-axis at the 1st WAMIT body's reference point; +HydroDyn['B2Surge'] = False # (m); Displacement of the 2nd WAMIT body along the global x-axis; +HydroDyn['B2Sway'] = False # (m); Displacement of the 2nd WAMIT body along the global y-axis; +HydroDyn['B2Heave'] = False # (m); Displacement of the 2nd WAMIT body along the global z-axis; +HydroDyn['B2Roll'] = False # (rad); Rotation of the 2nd WAMIT body about the global x-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2Pitch'] = False # (rad); Rotation of the 2nd WAMIT body about the global y-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2Yaw'] = False # (rad); Rotation of the 2nd WAMIT body about the global z-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2TVxi'] = False # (m/s); Translational velocity of the 2nd WAMIT body along the global x-axis; +HydroDyn['B2TVyi'] = False # (m/s); Translational velocity of the 2nd WAMIT body along the global y-axis; +HydroDyn['B2TVzi'] = False # (m/s); Translational velocity of the 2nd WAMIT body along the global z-axis; +HydroDyn['B2RVxi'] = False # (rad/s); Rotational velocity of the 2nd WAMIT body about the global x-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RVyi'] = False # (rad/s); Rotational velocity of the 2nd WAMIT body about the global y-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RVzi'] = False # (rad/s); Rotational velocity of the 2nd WAMIT body about the global z-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2TAxi'] = False # (m/s^2); Translational acceleration of the 2nd WAMIT body along the global x-axis; +HydroDyn['B2TAyi'] = False # (m/s^2); Translational acceleration of the 2nd WAMIT body along the global y-axis; +HydroDyn['B2TAzi'] = False # (m/s^2); Translational acceleration of the 2nd WAMIT body along the global z-axis; +HydroDyn['B2RAxi'] = False # (rad/s^2); Rotational acceleration of the 2nd WAMIT body about the global x-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RAyi'] = False # (rad/s^2); Rotational acceleration of the 2nd WAMIT body about the global y-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RAzi'] = False # (rad/s^2); Rotational acceleration of the 2nd WAMIT body about the global z-axis at the 2nd WAMIT body's reference point; +HydroDyn['B3Surge'] = False # (m); Displacement of the 3rd WAMIT body along the global x-axis; +HydroDyn['B3Sway'] = False # (m); Displacement of the 3rd WAMIT body along the global y-axis; +HydroDyn['B3Heave'] = False # (m); Displacement of the 3rd WAMIT body along the global z-axis; +HydroDyn['B3Roll'] = False # (rad); Rotation of the 3rd WAMIT body about the global x-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3Pitch'] = False # (rad); Rotation of the 3rd WAMIT body about the global y-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3Yaw'] = False # (rad); Rotation of the 3rd WAMIT body about the global z-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3TVxi'] = False # (m/s); Translational velocity of the 3rd WAMIT body along the global x-axis; +HydroDyn['B3TVyi'] = False # (m/s); Translational velocity of the 3rd WAMIT body along the global y-axis; +HydroDyn['B3TVzi'] = False # (m/s); Translational velocity of the 3rd WAMIT body along the global z-axis; +HydroDyn['B3RVxi'] = False # (rad/s); Rotational velocity of the 3rd WAMIT body about the global x-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RVyi'] = False # (rad/s); Rotational velocity of the 3rd WAMIT body about the global y-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RVzi'] = False # (rad/s); Rotational velocity of the 3rd WAMIT body about the global z-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3TAxi'] = False # (m/s^2); Translational acceleration of the 3rd WAMIT body along the global x-axis; +HydroDyn['B3TAyi'] = False # (m/s^2); Translational acceleration of the 3rd WAMIT body along the global y-axis; +HydroDyn['B3TAzi'] = False # (m/s^2); Translational acceleration of the 3rd WAMIT body along the global z-axis; +HydroDyn['B3RAxi'] = False # (rad/s^2); Rotational acceleration of the 3rd WAMIT body about the global x-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RAyi'] = False # (rad/s^2); Rotational acceleration of the 3rd WAMIT body about the global y-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RAzi'] = False # (rad/s^2); Rotational acceleration of the 3rd WAMIT body about the global z-axis at the 3rd WAMIT body's reference point; +HydroDyn['B4Surge'] = False # (m); Displacement of the 4th WAMIT body along the global x-axis; +HydroDyn['B4Sway'] = False # (m); Displacement of the 4th WAMIT body along the global y-axis; +HydroDyn['B4Heave'] = False # (m); Displacement of the 4th WAMIT body along the global z-axis; +HydroDyn['B4Roll'] = False # (rad); Rotation of the 4th WAMIT body about the global x-axis at the 4th WAMIT body's reference point; +HydroDyn['B4Pitch'] = False # (rad); Rotation of the 4th WAMIT body about the global y-axis at the 4th WAMIT body's reference point; +HydroDyn['B4Yaw'] = False # (rad); Rotation of the 4th WAMIT body about the global z-axis at the 4th WAMIT body's reference point; +HydroDyn['B4TVxi'] = False # (m/s); Translational velocity of the 4th WAMIT body along the global x-axis; +HydroDyn['B4TVyi'] = False # (m/s); Translational velocity of the 4th WAMIT body along the global y-axis; +HydroDyn['B4TVzi'] = False # (m/s); Translational velocity of the 4th WAMIT body along the global z-axis; +HydroDyn['B4RVxi'] = False # (rad/s); Rotational velocity of the 4th WAMIT body about the global x-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RVyi'] = False # (rad/s); Rotational velocity of the 4th WAMIT body about the global y-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RVzi'] = False # (rad/s); Rotational velocity of the 4th WAMIT body about the global z-axis at the 4th WAMIT body's reference point; +HydroDyn['B4TAxi'] = False # (m/s^2); Translational acceleration of the 4th WAMIT body along the global x-axis; +HydroDyn['B4TAyi'] = False # (m/s^2); Translational acceleration of the 4th WAMIT body along the global y-axis; +HydroDyn['B4TAzi'] = False # (m/s^2); Translational acceleration of the 4th WAMIT body along the global z-axis; +HydroDyn['B4RAxi'] = False # (rad/s^2); Rotational acceleration of the 4th WAMIT body about the global x-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RAyi'] = False # (rad/s^2); Rotational acceleration of the 4th WAMIT body about the global y-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RAzi'] = False # (rad/s^2); Rotational acceleration of the 4th WAMIT body about the global z-axis at the 4th WAMIT body's reference point; +HydroDyn['B5Surge'] = False # (m); Displacement of the 5th WAMIT body along the global x-axis; +HydroDyn['B5Sway'] = False # (m); Displacement of the 5th WAMIT body along the global y-axis; +HydroDyn['B5Heave'] = False # (m); Displacement of the 5th WAMIT body along the global z-axis; +HydroDyn['B5Roll'] = False # (rad); Rotation of the 5th WAMIT body about the global x-axis at the 5th WAMIT body's reference point; +HydroDyn['B5Pitch'] = False # (rad); Rotation of the 5th WAMIT body about the global y-axis at the 5th WAMIT body's reference point; +HydroDyn['B5Yaw'] = False # (rad); Rotation of the 5th WAMIT body about the global z-axis at the 5th WAMIT body's reference point; +HydroDyn['B5TVxi'] = False # (m/s); Translational velocity of the 5th WAMIT body along the global x-axis; +HydroDyn['B5TVyi'] = False # (m/s); Translational velocity of the 5th WAMIT body along the global y-axis; +HydroDyn['B5TVzi'] = False # (m/s); Translational velocity of the 5th WAMIT body along the global z-axis; +HydroDyn['B5RVxi'] = False # (rad/s); Rotational velocity of the 5th WAMIT body about the global x-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RVyi'] = False # (rad/s); Rotational velocity of the 5th WAMIT body about the global y-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RVzi'] = False # (rad/s); Rotational velocity of the 5th WAMIT body about the global z-axis at the 5th WAMIT body's reference point; +HydroDyn['B5TAxi'] = False # (m/s^2); Translational acceleration of the 5th WAMIT body along the global x-axis; +HydroDyn['B5TAyi'] = False # (m/s^2); Translational acceleration of the 5th WAMIT body along the global y-axis; +HydroDyn['B5TAzi'] = False # (m/s^2); Translational acceleration of the 5th WAMIT body along the global z-axis; +HydroDyn['B5RAxi'] = False # (rad/s^2); Rotational acceleration of the 5th WAMIT body about the global x-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RAyi'] = False # (rad/s^2); Rotational acceleration of the 5th WAMIT body about the global y-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RAzi'] = False # (rad/s^2); Rotational acceleration of the 5th WAMIT body about the global z-axis at the 5th WAMIT body's reference point; +HydroDyn['B6Surge'] = False # (m); Displacement of the 6th WAMIT body along the global x-axis; +HydroDyn['B6Sway'] = False # (m); Displacement of the 6th WAMIT body along the global y-axis; +HydroDyn['B6Heave'] = False # (m); Displacement of the 6th WAMIT body along the global z-axis; +HydroDyn['B6Roll'] = False # (rad); Rotation of the 6th WAMIT body about the global x-axis at the 6th WAMIT body's reference point; +HydroDyn['B6Pitch'] = False # (rad); Rotation of the 6th WAMIT body about the global y-axis at the 6th WAMIT body's reference point; +HydroDyn['B6Yaw'] = False # (rad); Rotation of the 6th WAMIT body about the global z-axis at the 6th WAMIT body's reference point; +HydroDyn['B6TVxi'] = False # (m/s); Translational velocity of the 6th WAMIT body along the global x-axis; +HydroDyn['B6TVyi'] = False # (m/s); Translational velocity of the 6th WAMIT body along the global y-axis; +HydroDyn['B6TVzi'] = False # (m/s); Translational velocity of the 6th WAMIT body along the global z-axis; +HydroDyn['B6RVxi'] = False # (rad/s); Rotational velocity of the 6th WAMIT body about the global x-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RVyi'] = False # (rad/s); Rotational velocity of the 6th WAMIT body about the global y-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RVzi'] = False # (rad/s); Rotational velocity of the 6th WAMIT body about the global z-axis at the 6th WAMIT body's reference point; +HydroDyn['B6TAxi'] = False # (m/s^2); Translational acceleration of the 6th WAMIT body along the global x-axis; +HydroDyn['B6TAyi'] = False # (m/s^2); Translational acceleration of the 6th WAMIT body along the global y-axis; +HydroDyn['B6TAzi'] = False # (m/s^2); Translational acceleration of the 6th WAMIT body along the global z-axis; +HydroDyn['B6RAxi'] = False # (rad/s^2); Rotational acceleration of the 6th WAMIT body about the global x-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RAyi'] = False # (rad/s^2); Rotational acceleration of the 6th WAMIT body about the global y-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RAzi'] = False # (rad/s^2); Rotational acceleration of the 6th WAMIT body about the global z-axis at the 6th WAMIT body's reference point; +HydroDyn['B7Surge'] = False # (m); Displacement of the 7th WAMIT body along the global x-axis; +HydroDyn['B7Sway'] = False # (m); Displacement of the 7th WAMIT body along the global y-axis; +HydroDyn['B7Heave'] = False # (m); Displacement of the 7th WAMIT body along the global z-axis; +HydroDyn['B7Roll'] = False # (rad); Rotation of the 7th WAMIT body about the global x-axis at the 7th WAMIT body's reference point; +HydroDyn['B7Pitch'] = False # (rad); Rotation of the 7th WAMIT body about the global y-axis at the 7th WAMIT body's reference point; +HydroDyn['B7Yaw'] = False # (rad); Rotation of the 7th WAMIT body about the global z-axis at the 7th WAMIT body's reference point; +HydroDyn['B7TVxi'] = False # (m/s); Translational velocity of the 7th WAMIT body along the global x-axis; +HydroDyn['B7TVyi'] = False # (m/s); Translational velocity of the 7th WAMIT body along the global y-axis; +HydroDyn['B7TVzi'] = False # (m/s); Translational velocity of the 7th WAMIT body along the global z-axis; +HydroDyn['B7RVxi'] = False # (rad/s); Rotational velocity of the 7th WAMIT body about the global x-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RVyi'] = False # (rad/s); Rotational velocity of the 7th WAMIT body about the global y-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RVzi'] = False # (rad/s); Rotational velocity of the 7th WAMIT body about the global z-axis at the 7th WAMIT body's reference point; +HydroDyn['B7TAxi'] = False # (m/s^2); Translational acceleration of the 7th WAMIT body along the global x-axis; +HydroDyn['B7TAyi'] = False # (m/s^2); Translational acceleration of the 7th WAMIT body along the global y-axis; +HydroDyn['B7TAzi'] = False # (m/s^2); Translational acceleration of the 7th WAMIT body along the global z-axis; +HydroDyn['B7RAxi'] = False # (rad/s^2); Rotational acceleration of the 7th WAMIT body about the global x-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RAyi'] = False # (rad/s^2); Rotational acceleration of the 7th WAMIT body about the global y-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RAzi'] = False # (rad/s^2); Rotational acceleration of the 7th WAMIT body about the global z-axis at the 7th WAMIT body's reference point; +HydroDyn['B8Surge'] = False # (m); Displacement of the 8th WAMIT body along the global x-axis; +HydroDyn['B8Sway'] = False # (m); Displacement of the 8th WAMIT body along the global y-axis; +HydroDyn['B8Heave'] = False # (m); Displacement of the 8th WAMIT body along the global z-axis; +HydroDyn['B8Roll'] = False # (rad); Rotation of the 8th WAMIT body about the global x-axis at the 8th WAMIT body's reference point; +HydroDyn['B8Pitch'] = False # (rad); Rotation of the 8th WAMIT body about the global y-axis at the 8th WAMIT body's reference point; +HydroDyn['B8Yaw'] = False # (rad); Rotation of the 8th WAMIT body about the global z-axis at the 8th WAMIT body's reference point; +HydroDyn['B8TVxi'] = False # (m/s); Translational velocity of the 8th WAMIT body along the global x-axis; +HydroDyn['B8TVyi'] = False # (m/s); Translational velocity of the 8th WAMIT body along the global y-axis; +HydroDyn['B8TVzi'] = False # (m/s); Translational velocity of the 8th WAMIT body along the global z-axis; +HydroDyn['B8RVxi'] = False # (rad/s); Rotational velocity of the 8th WAMIT body about the global x-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RVyi'] = False # (rad/s); Rotational velocity of the 8th WAMIT body about the global y-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RVzi'] = False # (rad/s); Rotational velocity of the 8th WAMIT body about the global z-axis at the 8th WAMIT body's reference point; +HydroDyn['B8TAxi'] = False # (m/s^2); Translational acceleration of the 8th WAMIT body along the global x-axis; +HydroDyn['B8TAyi'] = False # (m/s^2); Translational acceleration of the 8th WAMIT body along the global y-axis; +HydroDyn['B8TAzi'] = False # (m/s^2); Translational acceleration of the 8th WAMIT body along the global z-axis; +HydroDyn['B8RAxi'] = False # (rad/s^2); Rotational acceleration of the 8th WAMIT body about the global x-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RAyi'] = False # (rad/s^2); Rotational acceleration of the 8th WAMIT body about the global y-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RAzi'] = False # (rad/s^2); Rotational acceleration of the 8th WAMIT body about the global z-axis at the 8th WAMIT body's reference point; +HydroDyn['B9Surge'] = False # (m); Displacement of the 9th WAMIT body along the global x-axis; +HydroDyn['B9Sway'] = False # (m); Displacement of the 9th WAMIT body along the global y-axis; +HydroDyn['B9Heave'] = False # (m); Displacement of the 9th WAMIT body along the global z-axis; +HydroDyn['B9Roll'] = False # (rad); Rotation of the 9th WAMIT body about the global x-axis at the 9th WAMIT body's reference point; +HydroDyn['B9Pitch'] = False # (rad); Rotation of the 9th WAMIT body about the global y-axis at the 9th WAMIT body's reference point; +HydroDyn['B9Yaw'] = False # (rad); Rotation of the 9th WAMIT body about the global z-axis at the 9th WAMIT body's reference point; +HydroDyn['B9TVxi'] = False # (m/s); Translational velocity of the 9th WAMIT body along the global x-axis; +HydroDyn['B9TVyi'] = False # (m/s); Translational velocity of the 9th WAMIT body along the global y-axis; +HydroDyn['B9TVzi'] = False # (m/s); Translational velocity of the 9th WAMIT body along the global z-axis; +HydroDyn['B9RVxi'] = False # (rad/s); Rotational velocity of the 9th WAMIT body about the global x-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RVyi'] = False # (rad/s); Rotational velocity of the 9th WAMIT body about the global y-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RVzi'] = False # (rad/s); Rotational velocity of the 9th WAMIT body about the global z-axis at the 9th WAMIT body's reference point; +HydroDyn['B9TAxi'] = False # (m/s^2); Translational acceleration of the 9th WAMIT body along the global x-axis; +HydroDyn['B9TAyi'] = False # (m/s^2); Translational acceleration of the 9th WAMIT body along the global y-axis; +HydroDyn['B9TAzi'] = False # (m/s^2); Translational acceleration of the 9th WAMIT body along the global z-axis; +HydroDyn['B9RAxi'] = False # (rad/s^2); Rotational acceleration of the 9th WAMIT body about the global x-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RAyi'] = False # (rad/s^2); Rotational acceleration of the 9th WAMIT body about the global y-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RAzi'] = False # (rad/s^2); Rotational acceleration of the 9th WAMIT body about the global z-axis at the 9th WAMIT body's reference point; + +# WAMIT Body Forces +HydroDyn['B1AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 1st WAMIT body ; +HydroDyn['B1AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 1st WAMIT body ; +HydroDyn['B1AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 1st WAMIT body ; +HydroDyn['B1AddMxi'] = False # (N-m); Moment about the global x-axis at of the 1st WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B1AddMyi'] = False # (N-m); Moment about the global y-axis at of the 1st WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B1AddMzi'] = False # (N-m); Moment about the global z-axis at of the 1st WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B1WvsF1xi'] = False # (N); First-order wave-excitation force at the 1st WAMIT body from diffraction along the global x-axis; +HydroDyn['B1WvsF1yi'] = False # (N); First-order wave-excitation force at the 1st WAMIT body from diffraction along the global y-axis; +HydroDyn['B1WvsF1zi'] = False # (N); First-order wave-excitation force at the 1st WAMIT body from diffraction along the global z-axis; +HydroDyn['B1WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B1WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B1WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B1WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 1st WAMIT body from diffraction along the global x-axis; +HydroDyn['B1WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 1st WAMIT body from diffraction along the global y-axis; +HydroDyn['B1WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 1st WAMIT body from diffraction along the global z-axis; +HydroDyn['B1WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B1WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B1WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B1HdSFxi'] = False # (N); Hydrostatic force from the 1st WAMIT body along the global x-axis; +HydroDyn['B1HdSFyi'] = False # (N); Hydrostatic force from the 1st WAMIT body along the global y-axis; +HydroDyn['B1HdSFzi'] = False # (N); Hydrostatic force from the 1st WAMIT body along the global z-axis; +HydroDyn['B1HdSMxi'] = False # (N-m); Hydrostatic moment from the 1st WAMIT body about the global x-axis at the 1st WAMT body reference point; +HydroDyn['B1HdSMyi'] = False # (N-m); Hydrostatic moment from the 1st WAMIT body about the global y-axis at the 1st WAMT body reference point; +HydroDyn['B1HdSMzi'] = False # (N-m); Hydrostatic moment from the 1st WAMIT body about the global z-axis at the 1st WAMT body reference point; +HydroDyn['B1RdtFxi'] = False # (N); Wave-radiation force at the 1st WAMIT body along the global x-axis; +HydroDyn['B1RdtFyi'] = False # (N); Wave-radiation force at the 1st WAMIT body along the global y-axis; +HydroDyn['B1RdtFzi'] = False # (N); Wave-radiation force at the 1st WAMIT body along the global z-axis; +HydroDyn['B1RdtMxi'] = False # (N-m); Wave-radiation moment at the 1st WAMIT body about the global x-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RdtMyi'] = False # (N-m); Wave-radiation moment at the 1st WAMIT body about the global y-axis at the 1st WAMIT body's reference point; +HydroDyn['B1RdtMzi'] = False # (N-m); Wave-radiation moment at the 1st WAMIT body about the global z-axis at the 1st WAMIT body's reference point; +HydroDyn['B2AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 2nd WAMIT body ; +HydroDyn['B2AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 2nd WAMIT body ; +HydroDyn['B2AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 2nd WAMIT body ; +HydroDyn['B2AddMxi'] = False # (N-m); Moment about the global x-axis at of the 2nd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B2AddMyi'] = False # (N-m); Moment about the global y-axis at of the 2nd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B2AddMzi'] = False # (N-m); Moment about the global z-axis at of the 2nd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B2WvsF1xi'] = False # (N); First-order wave-excitation force at the 2nd WAMIT body from diffraction along the global x-axis; +HydroDyn['B2WvsF1yi'] = False # (N); First-order wave-excitation force at the 2nd WAMIT body from diffraction along the global y-axis; +HydroDyn['B2WvsF1zi'] = False # (N); First-order wave-excitation force at the 2nd WAMIT body from diffraction along the global z-axis; +HydroDyn['B2WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B2WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B2WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B2WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 2nd WAMIT body from diffraction along the global x-axis; +HydroDyn['B2WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 2nd WAMIT body from diffraction along the global y-axis; +HydroDyn['B2WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 2nd WAMIT body from diffraction along the global z-axis; +HydroDyn['B2WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B2WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B2WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B2HdSFxi'] = False # (N); Hydrostatic force from the 2nd WAMIT body along the global x-axis; +HydroDyn['B2HdSFyi'] = False # (N); Hydrostatic force from the 2nd WAMIT body along the global y-axis; +HydroDyn['B2HdSFzi'] = False # (N); Hydrostatic force from the 2nd WAMIT body along the global z-axis; +HydroDyn['B2HdSMxi'] = False # (N-m); Hydrostatic moment from the 2nd WAMIT body about the global x-axis at the 2nd WAMT body reference point; +HydroDyn['B2HdSMyi'] = False # (N-m); Hydrostatic moment from the 2nd WAMIT body about the global y-axis at the 2nd WAMT body reference point; +HydroDyn['B2HdSMzi'] = False # (N-m); Hydrostatic moment from the 2nd WAMIT body about the global z-axis at the 2nd WAMT body reference point; +HydroDyn['B2RdtFxi'] = False # (N); Wave-radiation force at the 2nd WAMIT body along the global x-axis; +HydroDyn['B2RdtFyi'] = False # (N); Wave-radiation force at the 2nd WAMIT body along the global y-axis; +HydroDyn['B2RdtFzi'] = False # (N); Wave-radiation force at the 2nd WAMIT body along the global z-axis; +HydroDyn['B2RdtMxi'] = False # (N-m); Wave-radiation moment at the 2nd WAMIT body about the global x-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RdtMyi'] = False # (N-m); Wave-radiation moment at the 2nd WAMIT body about the global y-axis at the 2nd WAMIT body's reference point; +HydroDyn['B2RdtMzi'] = False # (N-m); Wave-radiation moment at the 2nd WAMIT body about the global z-axis at the 2nd WAMIT body's reference point; +HydroDyn['B3AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 3rd WAMIT body ; +HydroDyn['B3AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 3rd WAMIT body ; +HydroDyn['B3AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 3rd WAMIT body ; +HydroDyn['B3AddMxi'] = False # (N-m); Moment about the global x-axis at of the 3rd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B3AddMyi'] = False # (N-m); Moment about the global y-axis at of the 3rd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B3AddMzi'] = False # (N-m); Moment about the global z-axis at of the 3rd WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B3WvsF1xi'] = False # (N); First-order wave-excitation force at the 3rd WAMIT body from diffraction along the global x-axis; +HydroDyn['B3WvsF1yi'] = False # (N); First-order wave-excitation force at the 3rd WAMIT body from diffraction along the global y-axis; +HydroDyn['B3WvsF1zi'] = False # (N); First-order wave-excitation force at the 3rd WAMIT body from diffraction along the global z-axis; +HydroDyn['B3WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B3WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B3WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B3WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 3rd WAMIT body from diffraction along the global x-axis; +HydroDyn['B3WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 3rd WAMIT body from diffraction along the global y-axis; +HydroDyn['B3WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 3rd WAMIT body from diffraction along the global z-axis; +HydroDyn['B3WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B3WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B3WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B3HdSFxi'] = False # (N); Hydrostatic force from the 3rd WAMIT body along the global x-axis; +HydroDyn['B3HdSFyi'] = False # (N); Hydrostatic force from the 3rd WAMIT body along the global y-axis; +HydroDyn['B3HdSFzi'] = False # (N); Hydrostatic force from the 3rd WAMIT body along the global z-axis; +HydroDyn['B3HdSMxi'] = False # (N-m); Hydrostatic moment from the 3rd WAMIT body about the global x-axis at the 3rd WAMT body reference point; +HydroDyn['B3HdSMyi'] = False # (N-m); Hydrostatic moment from the 3rd WAMIT body about the global y-axis at the 3rd WAMT body reference point; +HydroDyn['B3HdSMzi'] = False # (N-m); Hydrostatic moment from the 3rd WAMIT body about the global z-axis at the 3rd WAMT body reference point; +HydroDyn['B3RdtFxi'] = False # (N); Wave-radiation force at the 3rd WAMIT body along the global x-axis; +HydroDyn['B3RdtFyi'] = False # (N); Wave-radiation force at the 3rd WAMIT body along the global y-axis; +HydroDyn['B3RdtFzi'] = False # (N); Wave-radiation force at the 3rd WAMIT body along the global z-axis; +HydroDyn['B3RdtMxi'] = False # (N-m); Wave-radiation moment at the 3rd WAMIT body about the global x-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RdtMyi'] = False # (N-m); Wave-radiation moment at the 3rd WAMIT body about the global y-axis at the 3rd WAMIT body's reference point; +HydroDyn['B3RdtMzi'] = False # (N-m); Wave-radiation moment at the 3rd WAMIT body about the global z-axis at the 3rd WAMIT body's reference point; +HydroDyn['B4AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 4th WAMIT body ; +HydroDyn['B4AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 4th WAMIT body ; +HydroDyn['B4AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 4th WAMIT body ; +HydroDyn['B4AddMxi'] = False # (N-m); Moment about the global x-axis at of the 4th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B4AddMyi'] = False # (N-m); Moment about the global y-axis at of the 4th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B4AddMzi'] = False # (N-m); Moment about the global z-axis at of the 4th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B4WvsF1xi'] = False # (N); First-order wave-excitation force at the 4th WAMIT body from diffraction along the global x-axis; +HydroDyn['B4WvsF1yi'] = False # (N); First-order wave-excitation force at the 4th WAMIT body from diffraction along the global y-axis; +HydroDyn['B4WvsF1zi'] = False # (N); First-order wave-excitation force at the 4th WAMIT body from diffraction along the global z-axis; +HydroDyn['B4WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B4WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B4WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B4WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 4th WAMIT body from diffraction along the global x-axis; +HydroDyn['B4WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 4th WAMIT body from diffraction along the global y-axis; +HydroDyn['B4WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 4th WAMIT body from diffraction along the global z-axis; +HydroDyn['B4WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B4WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B4WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B4HdSFxi'] = False # (N); Hydrostatic force from the 4th WAMIT body along the global x-axis; +HydroDyn['B4HdSFyi'] = False # (N); Hydrostatic force from the 4th WAMIT body along the global y-axis; +HydroDyn['B4HdSFzi'] = False # (N); Hydrostatic force from the 4th WAMIT body along the global z-axis; +HydroDyn['B4HdSMxi'] = False # (N-m); Hydrostatic moment from the 4th WAMIT body about the global x-axis at the 4th WAMT body reference point; +HydroDyn['B4HdSMyi'] = False # (N-m); Hydrostatic moment from the 4th WAMIT body about the global y-axis at the 4th WAMT body reference point; +HydroDyn['B4HdSMzi'] = False # (N-m); Hydrostatic moment from the 4th WAMIT body about the global z-axis at the 4th WAMT body reference point; +HydroDyn['B4RdtFxi'] = False # (N); Wave-radiation force at the 4th WAMIT body along the global x-axis; +HydroDyn['B4RdtFyi'] = False # (N); Wave-radiation force at the 4th WAMIT body along the global y-axis; +HydroDyn['B4RdtFzi'] = False # (N); Wave-radiation force at the 4th WAMIT body along the global z-axis; +HydroDyn['B4RdtMxi'] = False # (N-m); Wave-radiation moment at the 4th WAMIT body about the global x-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RdtMyi'] = False # (N-m); Wave-radiation moment at the 4th WAMIT body about the global y-axis at the 4th WAMIT body's reference point; +HydroDyn['B4RdtMzi'] = False # (N-m); Wave-radiation moment at the 4th WAMIT body about the global z-axis at the 4th WAMIT body's reference point; +HydroDyn['B5AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 5th WAMIT body ; +HydroDyn['B5AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 5th WAMIT body ; +HydroDyn['B5AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 5th WAMIT body ; +HydroDyn['B5AddMxi'] = False # (N-m); Moment about the global x-axis at of the 5th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B5AddMyi'] = False # (N-m); Moment about the global y-axis at of the 5th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B5AddMzi'] = False # (N-m); Moment about the global z-axis at of the 5th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B5WvsF1xi'] = False # (N); First-order wave-excitation force at the 5th WAMIT body from diffraction along the global x-axis; +HydroDyn['B5WvsF1yi'] = False # (N); First-order wave-excitation force at the 5th WAMIT body from diffraction along the global y-axis; +HydroDyn['B5WvsF1zi'] = False # (N); First-order wave-excitation force at the 5th WAMIT body from diffraction along the global z-axis; +HydroDyn['B5WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B5WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B5WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B5WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 5th WAMIT body from diffraction along the global x-axis; +HydroDyn['B5WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 5th WAMIT body from diffraction along the global y-axis; +HydroDyn['B5WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 5th WAMIT body from diffraction along the global z-axis; +HydroDyn['B5WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B5WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B5WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B5HdSFxi'] = False # (N); Hydrostatic force from the 5th WAMIT body along the global x-axis; +HydroDyn['B5HdSFyi'] = False # (N); Hydrostatic force from the 5th WAMIT body along the global y-axis; +HydroDyn['B5HdSFzi'] = False # (N); Hydrostatic force from the 5th WAMIT body along the global z-axis; +HydroDyn['B5HdSMxi'] = False # (N-m); Hydrostatic moment from the 5th WAMIT body about the global x-axis at the 5th WAMT body reference point; +HydroDyn['B5HdSMyi'] = False # (N-m); Hydrostatic moment from the 5th WAMIT body about the global y-axis at the 5th WAMT body reference point; +HydroDyn['B5HdSMzi'] = False # (N-m); Hydrostatic moment from the 5th WAMIT body about the global z-axis at the 5th WAMT body reference point; +HydroDyn['B5RdtFxi'] = False # (N); Wave-radiation force at the 5th WAMIT body along the global x-axis; +HydroDyn['B5RdtFyi'] = False # (N); Wave-radiation force at the 5th WAMIT body along the global y-axis; +HydroDyn['B5RdtFzi'] = False # (N); Wave-radiation force at the 5th WAMIT body along the global z-axis; +HydroDyn['B5RdtMxi'] = False # (N-m); Wave-radiation moment at the 5th WAMIT body about the global x-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RdtMyi'] = False # (N-m); Wave-radiation moment at the 5th WAMIT body about the global y-axis at the 5th WAMIT body's reference point; +HydroDyn['B5RdtMzi'] = False # (N-m); Wave-radiation moment at the 5th WAMIT body about the global z-axis at the 5th WAMIT body's reference point; +HydroDyn['B6AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 6th WAMIT body ; +HydroDyn['B6AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 6th WAMIT body ; +HydroDyn['B6AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 6th WAMIT body ; +HydroDyn['B6AddMxi'] = False # (N-m); Moment about the global x-axis at of the 6th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B6AddMyi'] = False # (N-m); Moment about the global y-axis at of the 6th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B6AddMzi'] = False # (N-m); Moment about the global z-axis at of the 6th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B6WvsF1xi'] = False # (N); First-order wave-excitation force at the 6th WAMIT body from diffraction along the global x-axis; +HydroDyn['B6WvsF1yi'] = False # (N); First-order wave-excitation force at the 6th WAMIT body from diffraction along the global y-axis; +HydroDyn['B6WvsF1zi'] = False # (N); First-order wave-excitation force at the 6th WAMIT body from diffraction along the global z-axis; +HydroDyn['B6WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B6WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B6WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B6WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 6th WAMIT body from diffraction along the global x-axis; +HydroDyn['B6WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 6th WAMIT body from diffraction along the global y-axis; +HydroDyn['B6WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 6th WAMIT body from diffraction along the global z-axis; +HydroDyn['B6WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B6WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B6WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B6HdSFxi'] = False # (N); Hydrostatic force from the 6th WAMIT body along the global x-axis; +HydroDyn['B6HdSFyi'] = False # (N); Hydrostatic force from the 6th WAMIT body along the global y-axis; +HydroDyn['B6HdSFzi'] = False # (N); Hydrostatic force from the 6th WAMIT body along the global z-axis; +HydroDyn['B6HdSMxi'] = False # (N-m); Hydrostatic moment from the 6th WAMIT body about the global x-axis at the 6th WAMT body reference point; +HydroDyn['B6HdSMyi'] = False # (N-m); Hydrostatic moment from the 6th WAMIT body about the global y-axis at the 6th WAMT body reference point; +HydroDyn['B6HdSMzi'] = False # (N-m); Hydrostatic moment from the 6th WAMIT body about the global z-axis at the 6th WAMT body reference point; +HydroDyn['B6RdtFxi'] = False # (N); Wave-radiation force at the 6th WAMIT body along the global x-axis; +HydroDyn['B6RdtFyi'] = False # (N); Wave-radiation force at the 6th WAMIT body along the global y-axis; +HydroDyn['B6RdtFzi'] = False # (N); Wave-radiation force at the 6th WAMIT body along the global z-axis; +HydroDyn['B6RdtMxi'] = False # (N-m); Wave-radiation moment at the 6th WAMIT body about the global x-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RdtMyi'] = False # (N-m); Wave-radiation moment at the 6th WAMIT body about the global y-axis at the 6th WAMIT body's reference point; +HydroDyn['B6RdtMzi'] = False # (N-m); Wave-radiation moment at the 6th WAMIT body about the global z-axis at the 6th WAMIT body's reference point; +HydroDyn['B7AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 7th WAMIT body ; +HydroDyn['B7AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 7th WAMIT body ; +HydroDyn['B7AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 7th WAMIT body ; +HydroDyn['B7AddMxi'] = False # (N-m); Moment about the global x-axis at of the 7th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B7AddMyi'] = False # (N-m); Moment about the global y-axis at of the 7th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B7AddMzi'] = False # (N-m); Moment about the global z-axis at of the 7th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B7WvsF1xi'] = False # (N); First-order wave-excitation force at the 7th WAMIT body from diffraction along the global x-axis; +HydroDyn['B7WvsF1yi'] = False # (N); First-order wave-excitation force at the 7th WAMIT body from diffraction along the global y-axis; +HydroDyn['B7WvsF1zi'] = False # (N); First-order wave-excitation force at the 7th WAMIT body from diffraction along the global z-axis; +HydroDyn['B7WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B7WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B7WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B7WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 7th WAMIT body from diffraction along the global x-axis; +HydroDyn['B7WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 7th WAMIT body from diffraction along the global y-axis; +HydroDyn['B7WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 7th WAMIT body from diffraction along the global z-axis; +HydroDyn['B7WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B7WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B7WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B7HdSFxi'] = False # (N); Hydrostatic force from the 7th WAMIT body along the global x-axis; +HydroDyn['B7HdSFyi'] = False # (N); Hydrostatic force from the 7th WAMIT body along the global y-axis; +HydroDyn['B7HdSFzi'] = False # (N); Hydrostatic force from the 7th WAMIT body along the global z-axis; +HydroDyn['B7HdSMxi'] = False # (N-m); Hydrostatic moment from the 7th WAMIT body about the global x-axis at the 7th WAMT body reference point; +HydroDyn['B7HdSMyi'] = False # (N-m); Hydrostatic moment from the 7th WAMIT body about the global y-axis at the 7th WAMT body reference point; +HydroDyn['B7HdSMzi'] = False # (N-m); Hydrostatic moment from the 7th WAMIT body about the global z-axis at the 7th WAMT body reference point; +HydroDyn['B7RdtFxi'] = False # (N); Wave-radiation force at the 7th WAMIT body along the global x-axis; +HydroDyn['B7RdtFyi'] = False # (N); Wave-radiation force at the 7th WAMIT body along the global y-axis; +HydroDyn['B7RdtFzi'] = False # (N); Wave-radiation force at the 7th WAMIT body along the global z-axis; +HydroDyn['B7RdtMxi'] = False # (N-m); Wave-radiation moment at the 7th WAMIT body about the global x-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RdtMyi'] = False # (N-m); Wave-radiation moment at the 7th WAMIT body about the global y-axis at the 7th WAMIT body's reference point; +HydroDyn['B7RdtMzi'] = False # (N-m); Wave-radiation moment at the 7th WAMIT body about the global z-axis at the 7th WAMIT body's reference point; +HydroDyn['B8AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 8th WAMIT body ; +HydroDyn['B8AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 8th WAMIT body ; +HydroDyn['B8AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 8th WAMIT body ; +HydroDyn['B8AddMxi'] = False # (N-m); Moment about the global x-axis at of the 8th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B8AddMyi'] = False # (N-m); Moment about the global y-axis at of the 8th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B8AddMzi'] = False # (N-m); Moment about the global z-axis at of the 8th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B8WvsF1xi'] = False # (N); First-order wave-excitation force at the 8th WAMIT body from diffraction along the global x-axis; +HydroDyn['B8WvsF1yi'] = False # (N); First-order wave-excitation force at the 8th WAMIT body from diffraction along the global y-axis; +HydroDyn['B8WvsF1zi'] = False # (N); First-order wave-excitation force at the 8th WAMIT body from diffraction along the global z-axis; +HydroDyn['B8WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B8WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B8WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B8WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 8th WAMIT body from diffraction along the global x-axis; +HydroDyn['B8WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 8th WAMIT body from diffraction along the global y-axis; +HydroDyn['B8WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 8th WAMIT body from diffraction along the global z-axis; +HydroDyn['B8WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B8WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B8WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B8HdSFxi'] = False # (N); Hydrostatic force from the 8th WAMIT body along the global x-axis; +HydroDyn['B8HdSFyi'] = False # (N); Hydrostatic force from the 8th WAMIT body along the global y-axis; +HydroDyn['B8HdSFzi'] = False # (N); Hydrostatic force from the 8th WAMIT body along the global z-axis; +HydroDyn['B8HdSMxi'] = False # (N-m); Hydrostatic moment from the 8th WAMIT body about the global x-axis at the 8th WAMT body reference point; +HydroDyn['B8HdSMyi'] = False # (N-m); Hydrostatic moment from the 8th WAMIT body about the global y-axis at the 8th WAMT body reference point; +HydroDyn['B8HdSMzi'] = False # (N-m); Hydrostatic moment from the 8th WAMIT body about the global z-axis at the 8th WAMT body reference point; +HydroDyn['B8RdtFxi'] = False # (N); Wave-radiation force at the 8th WAMIT body along the global x-axis; +HydroDyn['B8RdtFyi'] = False # (N); Wave-radiation force at the 8th WAMIT body along the global y-axis; +HydroDyn['B8RdtFzi'] = False # (N); Wave-radiation force at the 8th WAMIT body along the global z-axis; +HydroDyn['B8RdtMxi'] = False # (N-m); Wave-radiation moment at the 8th WAMIT body about the global x-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RdtMyi'] = False # (N-m); Wave-radiation moment at the 8th WAMIT body about the global y-axis at the 8th WAMIT body's reference point; +HydroDyn['B8RdtMzi'] = False # (N-m); Wave-radiation moment at the 8th WAMIT body about the global z-axis at the 8th WAMIT body's reference point; +HydroDyn['B9AddFxi'] = False # (N); Force along the global x-axis due to additional preload, stiffness, and damping of the 9th WAMIT body ; +HydroDyn['B9AddFyi'] = False # (N); Force along the global y-axis due to additional preload, stiffness, and damping of the 9th WAMIT body ; +HydroDyn['B9AddFzi'] = False # (N); Force along the global z-axis due to additional preload, stiffness, and damping of the 9th WAMIT body ; +HydroDyn['B9AddMxi'] = False # (N-m); Moment about the global x-axis at of the 9th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B9AddMyi'] = False # (N-m); Moment about the global y-axis at of the 9th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B9AddMzi'] = False # (N-m); Moment about the global z-axis at of the 9th WAMIT body's reference point due to additional preload, stiffness, and damping ; +HydroDyn['B9WvsF1xi'] = False # (N); First-order wave-excitation force at the 9th WAMIT body from diffraction along the global x-axis; +HydroDyn['B9WvsF1yi'] = False # (N); First-order wave-excitation force at the 9th WAMIT body from diffraction along the global y-axis; +HydroDyn['B9WvsF1zi'] = False # (N); First-order wave-excitation force at the 9th WAMIT body from diffraction along the global z-axis; +HydroDyn['B9WvsM1xi'] = False # (N-m); First-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B9WvsM1yi'] = False # (N-m); First-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B9WvsM1zi'] = False # (N-m); First-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B9WvsFxi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 9th WAMIT body from diffraction along the global x-axis; +HydroDyn['B9WvsFyi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 9th WAMIT body from diffraction along the global y-axis; +HydroDyn['B9WvsFzi'] = False # (N); Total (first-order plus second-order) wave-excitation force at the 9th WAMIT body from diffraction along the global z-axis; +HydroDyn['B9WvsMxi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B9WvsMyi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B9WvsMzi'] = False # (N-m); Total (first-order plus second-order) wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B9HdSFxi'] = False # (N); Hydrostatic force from the 9th WAMIT body along the global x-axis; +HydroDyn['B9HdSFyi'] = False # (N); Hydrostatic force from the 9th WAMIT body along the global y-axis; +HydroDyn['B9HdSFzi'] = False # (N); Hydrostatic force from the 9th WAMIT body along the global z-axis; +HydroDyn['B9HdSMxi'] = False # (N-m); Hydrostatic moment from the 9th WAMIT body about the global x-axis at the 9th WAMT body reference point; +HydroDyn['B9HdSMyi'] = False # (N-m); Hydrostatic moment from the 9th WAMIT body about the global y-axis at the 9th WAMT body reference point; +HydroDyn['B9HdSMzi'] = False # (N-m); Hydrostatic moment from the 9th WAMIT body about the global z-axis at the 9th WAMT body reference point; +HydroDyn['B9RdtFxi'] = False # (N); Wave-radiation force at the 9th WAMIT body along the global x-axis; +HydroDyn['B9RdtFyi'] = False # (N); Wave-radiation force at the 9th WAMIT body along the global y-axis; +HydroDyn['B9RdtFzi'] = False # (N); Wave-radiation force at the 9th WAMIT body along the global z-axis; +HydroDyn['B9RdtMxi'] = False # (N-m); Wave-radiation moment at the 9th WAMIT body about the global x-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RdtMyi'] = False # (N-m); Wave-radiation moment at the 9th WAMIT body about the global y-axis at the 9th WAMIT body's reference point; +HydroDyn['B9RdtMzi'] = False # (N-m); Wave-radiation moment at the 9th WAMIT body about the global z-axis at the 9th WAMIT body's reference point; +HydroDyn['B1WvsF2xi'] = False # (N); Second-order wave-excitation force at the 1st WAMIT body from diffraction along the global x-axis; +HydroDyn['B1WvsF2yi'] = False # (N); Second-order wave-excitation force at the 1st WAMIT body from diffraction along the global y-axis; +HydroDyn['B1WvsF2zi'] = False # (N); Second-order wave-excitation force at the 1st WAMIT body from diffraction along the global z-axis; +HydroDyn['B1WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B1WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B1WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 1st WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B2WvsF2xi'] = False # (N); Second-order wave-excitation force at the 2nd WAMIT body from diffraction along the global x-axis; +HydroDyn['B2WvsF2yi'] = False # (N); Second-order wave-excitation force at the 2nd WAMIT body from diffraction along the global y-axis; +HydroDyn['B2WvsF2zi'] = False # (N); Second-order wave-excitation force at the 2nd WAMIT body from diffraction along the global z-axis; +HydroDyn['B2WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B2WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B2WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 2nd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B3WvsF2xi'] = False # (N); Second-order wave-excitation force at the 3rd WAMIT body from diffraction along the global x-axis; +HydroDyn['B3WvsF2yi'] = False # (N); Second-order wave-excitation force at the 3rd WAMIT body from diffraction along the global y-axis; +HydroDyn['B3WvsF2zi'] = False # (N); Second-order wave-excitation force at the 3rd WAMIT body from diffraction along the global z-axis; +HydroDyn['B3WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B3WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B3WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 3rd WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B4WvsF2xi'] = False # (N); Second-order wave-excitation force at the 4th WAMIT body from diffraction along the global x-axis; +HydroDyn['B4WvsF2yi'] = False # (N); Second-order wave-excitation force at the 4th WAMIT body from diffraction along the global y-axis; +HydroDyn['B4WvsF2zi'] = False # (N); Second-order wave-excitation force at the 4th WAMIT body from diffraction along the global z-axis; +HydroDyn['B4WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B4WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B4WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 4th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B5WvsF2xi'] = False # (N); Second-order wave-excitation force at the 5th WAMIT body from diffraction along the global x-axis; +HydroDyn['B5WvsF2yi'] = False # (N); Second-order wave-excitation force at the 5th WAMIT body from diffraction along the global y-axis; +HydroDyn['B5WvsF2zi'] = False # (N); Second-order wave-excitation force at the 5th WAMIT body from diffraction along the global z-axis; +HydroDyn['B5WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B5WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B5WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 5th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B6WvsF2xi'] = False # (N); Second-order wave-excitation force at the 6th WAMIT body from diffraction along the global x-axis; +HydroDyn['B6WvsF2yi'] = False # (N); Second-order wave-excitation force at the 6th WAMIT body from diffraction along the global y-axis; +HydroDyn['B6WvsF2zi'] = False # (N); Second-order wave-excitation force at the 6th WAMIT body from diffraction along the global z-axis; +HydroDyn['B6WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B6WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B6WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 6th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B7WvsF2xi'] = False # (N); Second-order wave-excitation force at the 7th WAMIT body from diffraction along the global x-axis; +HydroDyn['B7WvsF2yi'] = False # (N); Second-order wave-excitation force at the 7th WAMIT body from diffraction along the global y-axis; +HydroDyn['B7WvsF2zi'] = False # (N); Second-order wave-excitation force at the 7th WAMIT body from diffraction along the global z-axis; +HydroDyn['B7WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B7WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B7WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 7th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B8WvsF2xi'] = False # (N); Second-order wave-excitation force at the 8th WAMIT body from diffraction along the global x-axis; +HydroDyn['B8WvsF2yi'] = False # (N); Second-order wave-excitation force at the 8th WAMIT body from diffraction along the global y-axis; +HydroDyn['B8WvsF2zi'] = False # (N); Second-order wave-excitation force at the 8th WAMIT body from diffraction along the global z-axis; +HydroDyn['B8WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B8WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B8WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 8th WAMIT body reference point from diffraction about the global z-axis; +HydroDyn['B9WvsF2xi'] = False # (N); Second-order wave-excitation force at the 9th WAMIT body from diffraction along the global x-axis; +HydroDyn['B9WvsF2yi'] = False # (N); Second-order wave-excitation force at the 9th WAMIT body from diffraction along the global y-axis; +HydroDyn['B9WvsF2zi'] = False # (N); Second-order wave-excitation force at the 9th WAMIT body from diffraction along the global z-axis; +HydroDyn['B9WvsM2xi'] = False # (N-m); Second-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global x-axis; +HydroDyn['B9WvsM2yi'] = False # (N-m); Second-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global y-axis; +HydroDyn['B9WvsM2zi'] = False # (N-m); Second-order wave-excitation moment at the 9th WAMIT body reference point from diffraction about the global z-axis; + + +""" Morison """ +Morison = {} + +# Member-level Wave Kinematics +Morison['M1N1Axi'] = False # (m/s^2); fluid acceleration; +Morison['M1N2Axi'] = False # (m/s^2); ; +Morison['M1N3Axi'] = False # (m/s^2); ; +Morison['M1N4Axi'] = False # (m/s^2); ; +Morison['M1N5Axi'] = False # (m/s^2); ; +Morison['M1N6Axi'] = False # (m/s^2); ; +Morison['M1N7Axi'] = False # (m/s^2); ; +Morison['M1N8Axi'] = False # (m/s^2); ; +Morison['M1N9Axi'] = False # (m/s^2); ; +Morison['M2N1Axi'] = False # (m/s^2); ; +Morison['M2N2Axi'] = False # (m/s^2); ; +Morison['M2N3Axi'] = False # (m/s^2); ; +Morison['M2N4Axi'] = False # (m/s^2); ; +Morison['M2N5Axi'] = False # (m/s^2); ; +Morison['M2N6Axi'] = False # (m/s^2); ; +Morison['M2N7Axi'] = False # (m/s^2); ; +Morison['M2N8Axi'] = False # (m/s^2); ; +Morison['M2N9Axi'] = False # (m/s^2); ; +Morison['M3N1Axi'] = False # (m/s^2); ; +Morison['M3N2Axi'] = False # (m/s^2); ; +Morison['M3N3Axi'] = False # (m/s^2); ; +Morison['M3N4Axi'] = False # (m/s^2); ; +Morison['M3N5Axi'] = False # (m/s^2); ; +Morison['M3N6Axi'] = False # (m/s^2); ; +Morison['M3N7Axi'] = False # (m/s^2); ; +Morison['M3N8Axi'] = False # (m/s^2); ; +Morison['M3N9Axi'] = False # (m/s^2); ; +Morison['M4N1Axi'] = False # (m/s^2); ; +Morison['M4N2Axi'] = False # (m/s^2); ; +Morison['M4N3Axi'] = False # (m/s^2); ; +Morison['M4N4Axi'] = False # (m/s^2); ; +Morison['M4N5Axi'] = False # (m/s^2); ; +Morison['M4N6Axi'] = False # (m/s^2); ; +Morison['M4N7Axi'] = False # (m/s^2); ; +Morison['M4N8Axi'] = False # (m/s^2); ; +Morison['M4N9Axi'] = False # (m/s^2); ; +Morison['M5N1Axi'] = False # (m/s^2); ; +Morison['M5N2Axi'] = False # (m/s^2); ; +Morison['M5N3Axi'] = False # (m/s^2); ; +Morison['M5N4Axi'] = False # (m/s^2); ; +Morison['M5N5Axi'] = False # (m/s^2); ; +Morison['M5N6Axi'] = False # (m/s^2); ; +Morison['M5N7Axi'] = False # (m/s^2); ; +Morison['M5N8Axi'] = False # (m/s^2); ; +Morison['M5N9Axi'] = False # (m/s^2); ; +Morison['M6N1Axi'] = False # (m/s^2); ; +Morison['M6N2Axi'] = False # (m/s^2); ; +Morison['M6N3Axi'] = False # (m/s^2); ; +Morison['M6N4Axi'] = False # (m/s^2); ; +Morison['M6N5Axi'] = False # (m/s^2); ; +Morison['M6N6Axi'] = False # (m/s^2); ; +Morison['M6N7Axi'] = False # (m/s^2); ; +Morison['M6N8Axi'] = False # (m/s^2); ; +Morison['M6N9Axi'] = False # (m/s^2); ; +Morison['M7N1Axi'] = False # (m/s^2); ; +Morison['M7N2Axi'] = False # (m/s^2); ; +Morison['M7N3Axi'] = False # (m/s^2); ; +Morison['M7N4Axi'] = False # (m/s^2); ; +Morison['M7N5Axi'] = False # (m/s^2); ; +Morison['M7N6Axi'] = False # (m/s^2); ; +Morison['M7N7Axi'] = False # (m/s^2); ; +Morison['M7N8Axi'] = False # (m/s^2); ; +Morison['M7N9Axi'] = False # (m/s^2); ; +Morison['M8N1Axi'] = False # (m/s^2); ; +Morison['M8N2Axi'] = False # (m/s^2); ; +Morison['M8N3Axi'] = False # (m/s^2); ; +Morison['M8N4Axi'] = False # (m/s^2); ; +Morison['M8N5Axi'] = False # (m/s^2); ; +Morison['M8N6Axi'] = False # (m/s^2); ; +Morison['M8N7Axi'] = False # (m/s^2); ; +Morison['M8N8Axi'] = False # (m/s^2); ; +Morison['M8N9Axi'] = False # (m/s^2); ; +Morison['M9N1Axi'] = False # (m/s^2); ; +Morison['M9N2Axi'] = False # (m/s^2); ; +Morison['M9N3Axi'] = False # (m/s^2); ; +Morison['M9N4Axi'] = False # (m/s^2); ; +Morison['M9N5Axi'] = False # (m/s^2); ; +Morison['M9N6Axi'] = False # (m/s^2); ; +Morison['M9N7Axi'] = False # (m/s^2); ; +Morison['M9N8Axi'] = False # (m/s^2); ; +Morison['M9N9Axi'] = False # (m/s^2); ; +Morison['M1N1Ayi'] = False # (m/s^2); ; +Morison['M1N2Ayi'] = False # (m/s^2); ; +Morison['M1N3Ayi'] = False # (m/s^2); ; +Morison['M1N4Ayi'] = False # (m/s^2); ; +Morison['M1N5Ayi'] = False # (m/s^2); ; +Morison['M1N6Ayi'] = False # (m/s^2); ; +Morison['M1N7Ayi'] = False # (m/s^2); ; +Morison['M1N8Ayi'] = False # (m/s^2); ; +Morison['M1N9Ayi'] = False # (m/s^2); ; +Morison['M2N1Ayi'] = False # (m/s^2); ; +Morison['M2N2Ayi'] = False # (m/s^2); ; +Morison['M2N3Ayi'] = False # (m/s^2); ; +Morison['M2N4Ayi'] = False # (m/s^2); ; +Morison['M2N5Ayi'] = False # (m/s^2); ; +Morison['M2N6Ayi'] = False # (m/s^2); ; +Morison['M2N7Ayi'] = False # (m/s^2); ; +Morison['M2N8Ayi'] = False # (m/s^2); ; +Morison['M2N9Ayi'] = False # (m/s^2); ; +Morison['M3N1Ayi'] = False # (m/s^2); ; +Morison['M3N2Ayi'] = False # (m/s^2); ; +Morison['M3N3Ayi'] = False # (m/s^2); ; +Morison['M3N4Ayi'] = False # (m/s^2); ; +Morison['M3N5Ayi'] = False # (m/s^2); ; +Morison['M3N6Ayi'] = False # (m/s^2); ; +Morison['M3N7Ayi'] = False # (m/s^2); ; +Morison['M3N8Ayi'] = False # (m/s^2); ; +Morison['M3N9Ayi'] = False # (m/s^2); ; +Morison['M4N1Ayi'] = False # (m/s^2); ; +Morison['M4N2Ayi'] = False # (m/s^2); ; +Morison['M4N3Ayi'] = False # (m/s^2); ; +Morison['M4N4Ayi'] = False # (m/s^2); ; +Morison['M4N5Ayi'] = False # (m/s^2); ; +Morison['M4N6Ayi'] = False # (m/s^2); ; +Morison['M4N7Ayi'] = False # (m/s^2); ; +Morison['M4N8Ayi'] = False # (m/s^2); ; +Morison['M4N9Ayi'] = False # (m/s^2); ; +Morison['M5N1Ayi'] = False # (m/s^2); ; +Morison['M5N2Ayi'] = False # (m/s^2); ; +Morison['M5N3Ayi'] = False # (m/s^2); ; +Morison['M5N4Ayi'] = False # (m/s^2); ; +Morison['M5N5Ayi'] = False # (m/s^2); ; +Morison['M5N6Ayi'] = False # (m/s^2); ; +Morison['M5N7Ayi'] = False # (m/s^2); ; +Morison['M5N8Ayi'] = False # (m/s^2); ; +Morison['M5N9Ayi'] = False # (m/s^2); ; +Morison['M6N1Ayi'] = False # (m/s^2); ; +Morison['M6N2Ayi'] = False # (m/s^2); ; +Morison['M6N3Ayi'] = False # (m/s^2); ; +Morison['M6N4Ayi'] = False # (m/s^2); ; +Morison['M6N5Ayi'] = False # (m/s^2); ; +Morison['M6N6Ayi'] = False # (m/s^2); ; +Morison['M6N7Ayi'] = False # (m/s^2); ; +Morison['M6N8Ayi'] = False # (m/s^2); ; +Morison['M6N9Ayi'] = False # (m/s^2); ; +Morison['M7N1Ayi'] = False # (m/s^2); ; +Morison['M7N2Ayi'] = False # (m/s^2); ; +Morison['M7N3Ayi'] = False # (m/s^2); ; +Morison['M7N4Ayi'] = False # (m/s^2); ; +Morison['M7N5Ayi'] = False # (m/s^2); ; +Morison['M7N6Ayi'] = False # (m/s^2); ; +Morison['M7N7Ayi'] = False # (m/s^2); ; +Morison['M7N8Ayi'] = False # (m/s^2); ; +Morison['M7N9Ayi'] = False # (m/s^2); ; +Morison['M8N1Ayi'] = False # (m/s^2); ; +Morison['M8N2Ayi'] = False # (m/s^2); ; +Morison['M8N3Ayi'] = False # (m/s^2); ; +Morison['M8N4Ayi'] = False # (m/s^2); ; +Morison['M8N5Ayi'] = False # (m/s^2); ; +Morison['M8N6Ayi'] = False # (m/s^2); ; +Morison['M8N7Ayi'] = False # (m/s^2); ; +Morison['M8N8Ayi'] = False # (m/s^2); ; +Morison['M8N9Ayi'] = False # (m/s^2); ; +Morison['M9N1Ayi'] = False # (m/s^2); ; +Morison['M9N2Ayi'] = False # (m/s^2); ; +Morison['M9N3Ayi'] = False # (m/s^2); ; +Morison['M9N4Ayi'] = False # (m/s^2); ; +Morison['M9N5Ayi'] = False # (m/s^2); ; +Morison['M9N6Ayi'] = False # (m/s^2); ; +Morison['M9N7Ayi'] = False # (m/s^2); ; +Morison['M9N8Ayi'] = False # (m/s^2); ; +Morison['M9N9Ayi'] = False # (m/s^2); ; +Morison['M1N1Azi'] = False # (m/s^2); ; +Morison['M1N2Azi'] = False # (m/s^2); ; +Morison['M1N3Azi'] = False # (m/s^2); ; +Morison['M1N4Azi'] = False # (m/s^2); ; +Morison['M1N5Azi'] = False # (m/s^2); ; +Morison['M1N6Azi'] = False # (m/s^2); ; +Morison['M1N7Azi'] = False # (m/s^2); ; +Morison['M1N8Azi'] = False # (m/s^2); ; +Morison['M1N9Azi'] = False # (m/s^2); ; +Morison['M2N1Azi'] = False # (m/s^2); ; +Morison['M2N2Azi'] = False # (m/s^2); ; +Morison['M2N3Azi'] = False # (m/s^2); ; +Morison['M2N4Azi'] = False # (m/s^2); ; +Morison['M2N5Azi'] = False # (m/s^2); ; +Morison['M2N6Azi'] = False # (m/s^2); ; +Morison['M2N7Azi'] = False # (m/s^2); ; +Morison['M2N8Azi'] = False # (m/s^2); ; +Morison['M2N9Azi'] = False # (m/s^2); ; +Morison['M3N1Azi'] = False # (m/s^2); ; +Morison['M3N2Azi'] = False # (m/s^2); ; +Morison['M3N3Azi'] = False # (m/s^2); ; +Morison['M3N4Azi'] = False # (m/s^2); ; +Morison['M3N5Azi'] = False # (m/s^2); ; +Morison['M3N6Azi'] = False # (m/s^2); ; +Morison['M3N7Azi'] = False # (m/s^2); ; +Morison['M3N8Azi'] = False # (m/s^2); ; +Morison['M3N9Azi'] = False # (m/s^2); ; +Morison['M4N1Azi'] = False # (m/s^2); ; +Morison['M4N2Azi'] = False # (m/s^2); ; +Morison['M4N3Azi'] = False # (m/s^2); ; +Morison['M4N4Azi'] = False # (m/s^2); ; +Morison['M4N5Azi'] = False # (m/s^2); ; +Morison['M4N6Azi'] = False # (m/s^2); ; +Morison['M4N7Azi'] = False # (m/s^2); ; +Morison['M4N8Azi'] = False # (m/s^2); ; +Morison['M4N9Azi'] = False # (m/s^2); ; +Morison['M5N1Azi'] = False # (m/s^2); ; +Morison['M5N2Azi'] = False # (m/s^2); ; +Morison['M5N3Azi'] = False # (m/s^2); ; +Morison['M5N4Azi'] = False # (m/s^2); ; +Morison['M5N5Azi'] = False # (m/s^2); ; +Morison['M5N6Azi'] = False # (m/s^2); ; +Morison['M5N7Azi'] = False # (m/s^2); ; +Morison['M5N8Azi'] = False # (m/s^2); ; +Morison['M5N9Azi'] = False # (m/s^2); ; +Morison['M6N1Azi'] = False # (m/s^2); ; +Morison['M6N2Azi'] = False # (m/s^2); ; +Morison['M6N3Azi'] = False # (m/s^2); ; +Morison['M6N4Azi'] = False # (m/s^2); ; +Morison['M6N5Azi'] = False # (m/s^2); ; +Morison['M6N6Azi'] = False # (m/s^2); ; +Morison['M6N7Azi'] = False # (m/s^2); ; +Morison['M6N8Azi'] = False # (m/s^2); ; +Morison['M6N9Azi'] = False # (m/s^2); ; +Morison['M7N1Azi'] = False # (m/s^2); ; +Morison['M7N2Azi'] = False # (m/s^2); ; +Morison['M7N3Azi'] = False # (m/s^2); ; +Morison['M7N4Azi'] = False # (m/s^2); ; +Morison['M7N5Azi'] = False # (m/s^2); ; +Morison['M7N6Azi'] = False # (m/s^2); ; +Morison['M7N7Azi'] = False # (m/s^2); ; +Morison['M7N8Azi'] = False # (m/s^2); ; +Morison['M7N9Azi'] = False # (m/s^2); ; +Morison['M8N1Azi'] = False # (m/s^2); ; +Morison['M8N2Azi'] = False # (m/s^2); ; +Morison['M8N3Azi'] = False # (m/s^2); ; +Morison['M8N4Azi'] = False # (m/s^2); ; +Morison['M8N5Azi'] = False # (m/s^2); ; +Morison['M8N6Azi'] = False # (m/s^2); ; +Morison['M8N7Azi'] = False # (m/s^2); ; +Morison['M8N8Azi'] = False # (m/s^2); ; +Morison['M8N9Azi'] = False # (m/s^2); ; +Morison['M9N1Azi'] = False # (m/s^2); ; +Morison['M9N2Azi'] = False # (m/s^2); ; +Morison['M9N3Azi'] = False # (m/s^2); ; +Morison['M9N4Azi'] = False # (m/s^2); ; +Morison['M9N5Azi'] = False # (m/s^2); ; +Morison['M9N6Azi'] = False # (m/s^2); ; +Morison['M9N7Azi'] = False # (m/s^2); ; +Morison['M9N8Azi'] = False # (m/s^2); ; +Morison['M9N9Azi'] = False # (m/s^2); ; +Morison['M1N1Vxi'] = False # (m/s); fluid velocity; +Morison['M1N2Vxi'] = False # (m/s); ; +Morison['M1N3Vxi'] = False # (m/s); ; +Morison['M1N4Vxi'] = False # (m/s); ; +Morison['M1N5Vxi'] = False # (m/s); ; +Morison['M1N6Vxi'] = False # (m/s); ; +Morison['M1N7Vxi'] = False # (m/s); ; +Morison['M1N8Vxi'] = False # (m/s); ; +Morison['M1N9Vxi'] = False # (m/s); ; +Morison['M2N1Vxi'] = False # (m/s); ; +Morison['M2N2Vxi'] = False # (m/s); ; +Morison['M2N3Vxi'] = False # (m/s); ; +Morison['M2N4Vxi'] = False # (m/s); ; +Morison['M2N5Vxi'] = False # (m/s); ; +Morison['M2N6Vxi'] = False # (m/s); ; +Morison['M2N7Vxi'] = False # (m/s); ; +Morison['M2N8Vxi'] = False # (m/s); ; +Morison['M2N9Vxi'] = False # (m/s); ; +Morison['M3N1Vxi'] = False # (m/s); ; +Morison['M3N2Vxi'] = False # (m/s); ; +Morison['M3N3Vxi'] = False # (m/s); ; +Morison['M3N4Vxi'] = False # (m/s); ; +Morison['M3N5Vxi'] = False # (m/s); ; +Morison['M3N6Vxi'] = False # (m/s); ; +Morison['M3N7Vxi'] = False # (m/s); ; +Morison['M3N8Vxi'] = False # (m/s); ; +Morison['M3N9Vxi'] = False # (m/s); ; +Morison['M4N1Vxi'] = False # (m/s); ; +Morison['M4N2Vxi'] = False # (m/s); ; +Morison['M4N3Vxi'] = False # (m/s); ; +Morison['M4N4Vxi'] = False # (m/s); ; +Morison['M4N5Vxi'] = False # (m/s); ; +Morison['M4N6Vxi'] = False # (m/s); ; +Morison['M4N7Vxi'] = False # (m/s); ; +Morison['M4N8Vxi'] = False # (m/s); ; +Morison['M4N9Vxi'] = False # (m/s); ; +Morison['M5N1Vxi'] = False # (m/s); ; +Morison['M5N2Vxi'] = False # (m/s); ; +Morison['M5N3Vxi'] = False # (m/s); ; +Morison['M5N4Vxi'] = False # (m/s); ; +Morison['M5N5Vxi'] = False # (m/s); ; +Morison['M5N6Vxi'] = False # (m/s); ; +Morison['M5N7Vxi'] = False # (m/s); ; +Morison['M5N8Vxi'] = False # (m/s); ; +Morison['M5N9Vxi'] = False # (m/s); ; +Morison['M6N1Vxi'] = False # (m/s); ; +Morison['M6N2Vxi'] = False # (m/s); ; +Morison['M6N3Vxi'] = False # (m/s); ; +Morison['M6N4Vxi'] = False # (m/s); ; +Morison['M6N5Vxi'] = False # (m/s); ; +Morison['M6N6Vxi'] = False # (m/s); ; +Morison['M6N7Vxi'] = False # (m/s); ; +Morison['M6N8Vxi'] = False # (m/s); ; +Morison['M6N9Vxi'] = False # (m/s); ; +Morison['M7N1Vxi'] = False # (m/s); ; +Morison['M7N2Vxi'] = False # (m/s); ; +Morison['M7N3Vxi'] = False # (m/s); ; +Morison['M7N4Vxi'] = False # (m/s); ; +Morison['M7N5Vxi'] = False # (m/s); ; +Morison['M7N6Vxi'] = False # (m/s); ; +Morison['M7N7Vxi'] = False # (m/s); ; +Morison['M7N8Vxi'] = False # (m/s); ; +Morison['M7N9Vxi'] = False # (m/s); ; +Morison['M8N1Vxi'] = False # (m/s); ; +Morison['M8N2Vxi'] = False # (m/s); ; +Morison['M8N3Vxi'] = False # (m/s); ; +Morison['M8N4Vxi'] = False # (m/s); ; +Morison['M8N5Vxi'] = False # (m/s); ; +Morison['M8N6Vxi'] = False # (m/s); ; +Morison['M8N7Vxi'] = False # (m/s); ; +Morison['M8N8Vxi'] = False # (m/s); ; +Morison['M8N9Vxi'] = False # (m/s); ; +Morison['M9N1Vxi'] = False # (m/s); ; +Morison['M9N2Vxi'] = False # (m/s); ; +Morison['M9N3Vxi'] = False # (m/s); ; +Morison['M9N4Vxi'] = False # (m/s); ; +Morison['M9N5Vxi'] = False # (m/s); ; +Morison['M9N6Vxi'] = False # (m/s); ; +Morison['M9N7Vxi'] = False # (m/s); ; +Morison['M9N8Vxi'] = False # (m/s); ; +Morison['M9N9Vxi'] = False # (m/s); ; +Morison['M1N1Vyi'] = False # (m/s); ; +Morison['M1N2Vyi'] = False # (m/s); ; +Morison['M1N3Vyi'] = False # (m/s); ; +Morison['M1N4Vyi'] = False # (m/s); ; +Morison['M1N5Vyi'] = False # (m/s); ; +Morison['M1N6Vyi'] = False # (m/s); ; +Morison['M1N7Vyi'] = False # (m/s); ; +Morison['M1N8Vyi'] = False # (m/s); ; +Morison['M1N9Vyi'] = False # (m/s); ; +Morison['M2N1Vyi'] = False # (m/s); ; +Morison['M2N2Vyi'] = False # (m/s); ; +Morison['M2N3Vyi'] = False # (m/s); ; +Morison['M2N4Vyi'] = False # (m/s); ; +Morison['M2N5Vyi'] = False # (m/s); ; +Morison['M2N6Vyi'] = False # (m/s); ; +Morison['M2N7Vyi'] = False # (m/s); ; +Morison['M2N8Vyi'] = False # (m/s); ; +Morison['M2N9Vyi'] = False # (m/s); ; +Morison['M3N1Vyi'] = False # (m/s); ; +Morison['M3N2Vyi'] = False # (m/s); ; +Morison['M3N3Vyi'] = False # (m/s); ; +Morison['M3N4Vyi'] = False # (m/s); ; +Morison['M3N5Vyi'] = False # (m/s); ; +Morison['M3N6Vyi'] = False # (m/s); ; +Morison['M3N7Vyi'] = False # (m/s); ; +Morison['M3N8Vyi'] = False # (m/s); ; +Morison['M3N9Vyi'] = False # (m/s); ; +Morison['M4N1Vyi'] = False # (m/s); ; +Morison['M4N2Vyi'] = False # (m/s); ; +Morison['M4N3Vyi'] = False # (m/s); ; +Morison['M4N4Vyi'] = False # (m/s); ; +Morison['M4N5Vyi'] = False # (m/s); ; +Morison['M4N6Vyi'] = False # (m/s); ; +Morison['M4N7Vyi'] = False # (m/s); ; +Morison['M4N8Vyi'] = False # (m/s); ; +Morison['M4N9Vyi'] = False # (m/s); ; +Morison['M5N1Vyi'] = False # (m/s); ; +Morison['M5N2Vyi'] = False # (m/s); ; +Morison['M5N3Vyi'] = False # (m/s); ; +Morison['M5N4Vyi'] = False # (m/s); ; +Morison['M5N5Vyi'] = False # (m/s); ; +Morison['M5N6Vyi'] = False # (m/s); ; +Morison['M5N7Vyi'] = False # (m/s); ; +Morison['M5N8Vyi'] = False # (m/s); ; +Morison['M5N9Vyi'] = False # (m/s); ; +Morison['M6N1Vyi'] = False # (m/s); ; +Morison['M6N2Vyi'] = False # (m/s); ; +Morison['M6N3Vyi'] = False # (m/s); ; +Morison['M6N4Vyi'] = False # (m/s); ; +Morison['M6N5Vyi'] = False # (m/s); ; +Morison['M6N6Vyi'] = False # (m/s); ; +Morison['M6N7Vyi'] = False # (m/s); ; +Morison['M6N8Vyi'] = False # (m/s); ; +Morison['M6N9Vyi'] = False # (m/s); ; +Morison['M7N1Vyi'] = False # (m/s); ; +Morison['M7N2Vyi'] = False # (m/s); ; +Morison['M7N3Vyi'] = False # (m/s); ; +Morison['M7N4Vyi'] = False # (m/s); ; +Morison['M7N5Vyi'] = False # (m/s); ; +Morison['M7N6Vyi'] = False # (m/s); ; +Morison['M7N7Vyi'] = False # (m/s); ; +Morison['M7N8Vyi'] = False # (m/s); ; +Morison['M7N9Vyi'] = False # (m/s); ; +Morison['M8N1Vyi'] = False # (m/s); ; +Morison['M8N2Vyi'] = False # (m/s); ; +Morison['M8N3Vyi'] = False # (m/s); ; +Morison['M8N4Vyi'] = False # (m/s); ; +Morison['M8N5Vyi'] = False # (m/s); ; +Morison['M8N6Vyi'] = False # (m/s); ; +Morison['M8N7Vyi'] = False # (m/s); ; +Morison['M8N8Vyi'] = False # (m/s); ; +Morison['M8N9Vyi'] = False # (m/s); ; +Morison['M9N1Vyi'] = False # (m/s); ; +Morison['M9N2Vyi'] = False # (m/s); ; +Morison['M9N3Vyi'] = False # (m/s); ; +Morison['M9N4Vyi'] = False # (m/s); ; +Morison['M9N5Vyi'] = False # (m/s); ; +Morison['M9N6Vyi'] = False # (m/s); ; +Morison['M9N7Vyi'] = False # (m/s); ; +Morison['M9N8Vyi'] = False # (m/s); ; +Morison['M9N9Vyi'] = False # (m/s); ; +Morison['M1N1Vzi'] = False # (m/s); ; +Morison['M1N2Vzi'] = False # (m/s); ; +Morison['M1N3Vzi'] = False # (m/s); ; +Morison['M1N4Vzi'] = False # (m/s); ; +Morison['M1N5Vzi'] = False # (m/s); ; +Morison['M1N6Vzi'] = False # (m/s); ; +Morison['M1N7Vzi'] = False # (m/s); ; +Morison['M1N8Vzi'] = False # (m/s); ; +Morison['M1N9Vzi'] = False # (m/s); ; +Morison['M2N1Vzi'] = False # (m/s); ; +Morison['M2N2Vzi'] = False # (m/s); ; +Morison['M2N3Vzi'] = False # (m/s); ; +Morison['M2N4Vzi'] = False # (m/s); ; +Morison['M2N5Vzi'] = False # (m/s); ; +Morison['M2N6Vzi'] = False # (m/s); ; +Morison['M2N7Vzi'] = False # (m/s); ; +Morison['M2N8Vzi'] = False # (m/s); ; +Morison['M2N9Vzi'] = False # (m/s); ; +Morison['M3N1Vzi'] = False # (m/s); ; +Morison['M3N2Vzi'] = False # (m/s); ; +Morison['M3N3Vzi'] = False # (m/s); ; +Morison['M3N4Vzi'] = False # (m/s); ; +Morison['M3N5Vzi'] = False # (m/s); ; +Morison['M3N6Vzi'] = False # (m/s); ; +Morison['M3N7Vzi'] = False # (m/s); ; +Morison['M3N8Vzi'] = False # (m/s); ; +Morison['M3N9Vzi'] = False # (m/s); ; +Morison['M4N1Vzi'] = False # (m/s); ; +Morison['M4N2Vzi'] = False # (m/s); ; +Morison['M4N3Vzi'] = False # (m/s); ; +Morison['M4N4Vzi'] = False # (m/s); ; +Morison['M4N5Vzi'] = False # (m/s); ; +Morison['M4N6Vzi'] = False # (m/s); ; +Morison['M4N7Vzi'] = False # (m/s); ; +Morison['M4N8Vzi'] = False # (m/s); ; +Morison['M4N9Vzi'] = False # (m/s); ; +Morison['M5N1Vzi'] = False # (m/s); ; +Morison['M5N2Vzi'] = False # (m/s); ; +Morison['M5N3Vzi'] = False # (m/s); ; +Morison['M5N4Vzi'] = False # (m/s); ; +Morison['M5N5Vzi'] = False # (m/s); ; +Morison['M5N6Vzi'] = False # (m/s); ; +Morison['M5N7Vzi'] = False # (m/s); ; +Morison['M5N8Vzi'] = False # (m/s); ; +Morison['M5N9Vzi'] = False # (m/s); ; +Morison['M6N1Vzi'] = False # (m/s); ; +Morison['M6N2Vzi'] = False # (m/s); ; +Morison['M6N3Vzi'] = False # (m/s); ; +Morison['M6N4Vzi'] = False # (m/s); ; +Morison['M6N5Vzi'] = False # (m/s); ; +Morison['M6N6Vzi'] = False # (m/s); ; +Morison['M6N7Vzi'] = False # (m/s); ; +Morison['M6N8Vzi'] = False # (m/s); ; +Morison['M6N9Vzi'] = False # (m/s); ; +Morison['M7N1Vzi'] = False # (m/s); ; +Morison['M7N2Vzi'] = False # (m/s); ; +Morison['M7N3Vzi'] = False # (m/s); ; +Morison['M7N4Vzi'] = False # (m/s); ; +Morison['M7N5Vzi'] = False # (m/s); ; +Morison['M7N6Vzi'] = False # (m/s); ; +Morison['M7N7Vzi'] = False # (m/s); ; +Morison['M7N8Vzi'] = False # (m/s); ; +Morison['M7N9Vzi'] = False # (m/s); ; +Morison['M8N1Vzi'] = False # (m/s); ; +Morison['M8N2Vzi'] = False # (m/s); ; +Morison['M8N3Vzi'] = False # (m/s); ; +Morison['M8N4Vzi'] = False # (m/s); ; +Morison['M8N5Vzi'] = False # (m/s); ; +Morison['M8N6Vzi'] = False # (m/s); ; +Morison['M8N7Vzi'] = False # (m/s); ; +Morison['M8N8Vzi'] = False # (m/s); ; +Morison['M8N9Vzi'] = False # (m/s); ; +Morison['M9N1Vzi'] = False # (m/s); ; +Morison['M9N2Vzi'] = False # (m/s); ; +Morison['M9N3Vzi'] = False # (m/s); ; +Morison['M9N4Vzi'] = False # (m/s); ; +Morison['M9N5Vzi'] = False # (m/s); ; +Morison['M9N6Vzi'] = False # (m/s); ; +Morison['M9N7Vzi'] = False # (m/s); ; +Morison['M9N8Vzi'] = False # (m/s); ; +Morison['M9N9Vzi'] = False # (m/s); ; +Morison['M1N1DynP'] = False # (Pa); fluid dynamic pressure; +Morison['M1N2DynP'] = False # (Pa); ; +Morison['M1N3DynP'] = False # (Pa); ; +Morison['M1N4DynP'] = False # (Pa); ; +Morison['M1N5DynP'] = False # (Pa); ; +Morison['M1N6DynP'] = False # (Pa); ; +Morison['M1N7DynP'] = False # (Pa); ; +Morison['M1N8DynP'] = False # (Pa); ; +Morison['M1N9DynP'] = False # (Pa); ; +Morison['M2N1DynP'] = False # (Pa); ; +Morison['M2N2DynP'] = False # (Pa); ; +Morison['M2N3DynP'] = False # (Pa); ; +Morison['M2N4DynP'] = False # (Pa); ; +Morison['M2N5DynP'] = False # (Pa); ; +Morison['M2N6DynP'] = False # (Pa); ; +Morison['M2N7DynP'] = False # (Pa); ; +Morison['M2N8DynP'] = False # (Pa); ; +Morison['M2N9DynP'] = False # (Pa); ; +Morison['M3N1DynP'] = False # (Pa); ; +Morison['M3N2DynP'] = False # (Pa); ; +Morison['M3N3DynP'] = False # (Pa); ; +Morison['M3N4DynP'] = False # (Pa); ; +Morison['M3N5DynP'] = False # (Pa); ; +Morison['M3N6DynP'] = False # (Pa); ; +Morison['M3N7DynP'] = False # (Pa); ; +Morison['M3N8DynP'] = False # (Pa); ; +Morison['M3N9DynP'] = False # (Pa); ; +Morison['M4N1DynP'] = False # (Pa); ; +Morison['M4N2DynP'] = False # (Pa); ; +Morison['M4N3DynP'] = False # (Pa); ; +Morison['M4N4DynP'] = False # (Pa); ; +Morison['M4N5DynP'] = False # (Pa); ; +Morison['M4N6DynP'] = False # (Pa); ; +Morison['M4N7DynP'] = False # (Pa); ; +Morison['M4N8DynP'] = False # (Pa); ; +Morison['M4N9DynP'] = False # (Pa); ; +Morison['M5N1DynP'] = False # (Pa); ; +Morison['M5N2DynP'] = False # (Pa); ; +Morison['M5N3DynP'] = False # (Pa); ; +Morison['M5N4DynP'] = False # (Pa); ; +Morison['M5N5DynP'] = False # (Pa); ; +Morison['M5N6DynP'] = False # (Pa); ; +Morison['M5N7DynP'] = False # (Pa); ; +Morison['M5N8DynP'] = False # (Pa); ; +Morison['M5N9DynP'] = False # (Pa); ; +Morison['M6N1DynP'] = False # (Pa); ; +Morison['M6N2DynP'] = False # (Pa); ; +Morison['M6N3DynP'] = False # (Pa); ; +Morison['M6N4DynP'] = False # (Pa); ; +Morison['M6N5DynP'] = False # (Pa); ; +Morison['M6N6DynP'] = False # (Pa); ; +Morison['M6N7DynP'] = False # (Pa); ; +Morison['M6N8DynP'] = False # (Pa); ; +Morison['M6N9DynP'] = False # (Pa); ; +Morison['M7N1DynP'] = False # (Pa); ; +Morison['M7N2DynP'] = False # (Pa); ; +Morison['M7N3DynP'] = False # (Pa); ; +Morison['M7N4DynP'] = False # (Pa); ; +Morison['M7N5DynP'] = False # (Pa); ; +Morison['M7N6DynP'] = False # (Pa); ; +Morison['M7N7DynP'] = False # (Pa); ; +Morison['M7N8DynP'] = False # (Pa); ; +Morison['M7N9DynP'] = False # (Pa); ; +Morison['M8N1DynP'] = False # (Pa); ; +Morison['M8N2DynP'] = False # (Pa); ; +Morison['M8N3DynP'] = False # (Pa); ; +Morison['M8N4DynP'] = False # (Pa); ; +Morison['M8N5DynP'] = False # (Pa); ; +Morison['M8N6DynP'] = False # (Pa); ; +Morison['M8N7DynP'] = False # (Pa); ; +Morison['M8N8DynP'] = False # (Pa); ; +Morison['M8N9DynP'] = False # (Pa); ; +Morison['M9N1DynP'] = False # (Pa); ; +Morison['M9N2DynP'] = False # (Pa); ; +Morison['M9N3DynP'] = False # (Pa); ; +Morison['M9N4DynP'] = False # (Pa); ; +Morison['M9N5DynP'] = False # (Pa); ; +Morison['M9N6DynP'] = False # (Pa); ; +Morison['M9N7DynP'] = False # (Pa); ; +Morison['M9N8DynP'] = False # (Pa); ; +Morison['M9N9DynP'] = False # (Pa); ; +Morison['M1N1STVxi'] = False # (m/s); structure translational velocity; +Morison['M1N2STVxi'] = False # (m/s); ; +Morison['M1N3STVxi'] = False # (m/s); ; +Morison['M1N4STVxi'] = False # (m/s); ; +Morison['M1N5STVxi'] = False # (m/s); ; +Morison['M1N6STVxi'] = False # (m/s); ; +Morison['M1N7STVxi'] = False # (m/s); ; +Morison['M1N8STVxi'] = False # (m/s); ; +Morison['M1N9STVxi'] = False # (m/s); ; +Morison['M2N1STVxi'] = False # (m/s); ; +Morison['M2N2STVxi'] = False # (m/s); ; +Morison['M2N3STVxi'] = False # (m/s); ; +Morison['M2N4STVxi'] = False # (m/s); ; +Morison['M2N5STVxi'] = False # (m/s); ; +Morison['M2N6STVxi'] = False # (m/s); ; +Morison['M2N7STVxi'] = False # (m/s); ; +Morison['M2N8STVxi'] = False # (m/s); ; +Morison['M2N9STVxi'] = False # (m/s); ; +Morison['M3N1STVxi'] = False # (m/s); ; +Morison['M3N2STVxi'] = False # (m/s); ; +Morison['M3N3STVxi'] = False # (m/s); ; +Morison['M3N4STVxi'] = False # (m/s); ; +Morison['M3N5STVxi'] = False # (m/s); ; +Morison['M3N6STVxi'] = False # (m/s); ; +Morison['M3N7STVxi'] = False # (m/s); ; +Morison['M3N8STVxi'] = False # (m/s); ; +Morison['M3N9STVxi'] = False # (m/s); ; +Morison['M4N1STVxi'] = False # (m/s); ; +Morison['M4N2STVxi'] = False # (m/s); ; +Morison['M4N3STVxi'] = False # (m/s); ; +Morison['M4N4STVxi'] = False # (m/s); ; +Morison['M4N5STVxi'] = False # (m/s); ; +Morison['M4N6STVxi'] = False # (m/s); ; +Morison['M4N7STVxi'] = False # (m/s); ; +Morison['M4N8STVxi'] = False # (m/s); ; +Morison['M4N9STVxi'] = False # (m/s); ; +Morison['M5N1STVxi'] = False # (m/s); ; +Morison['M5N2STVxi'] = False # (m/s); ; +Morison['M5N3STVxi'] = False # (m/s); ; +Morison['M5N4STVxi'] = False # (m/s); ; +Morison['M5N5STVxi'] = False # (m/s); ; +Morison['M5N6STVxi'] = False # (m/s); ; +Morison['M5N7STVxi'] = False # (m/s); ; +Morison['M5N8STVxi'] = False # (m/s); ; +Morison['M5N9STVxi'] = False # (m/s); ; +Morison['M6N1STVxi'] = False # (m/s); ; +Morison['M6N2STVxi'] = False # (m/s); ; +Morison['M6N3STVxi'] = False # (m/s); ; +Morison['M6N4STVxi'] = False # (m/s); ; +Morison['M6N5STVxi'] = False # (m/s); ; +Morison['M6N6STVxi'] = False # (m/s); ; +Morison['M6N7STVxi'] = False # (m/s); ; +Morison['M6N8STVxi'] = False # (m/s); ; +Morison['M6N9STVxi'] = False # (m/s); ; +Morison['M7N1STVxi'] = False # (m/s); ; +Morison['M7N2STVxi'] = False # (m/s); ; +Morison['M7N3STVxi'] = False # (m/s); ; +Morison['M7N4STVxi'] = False # (m/s); ; +Morison['M7N5STVxi'] = False # (m/s); ; +Morison['M7N6STVxi'] = False # (m/s); ; +Morison['M7N7STVxi'] = False # (m/s); ; +Morison['M7N8STVxi'] = False # (m/s); ; +Morison['M7N9STVxi'] = False # (m/s); ; +Morison['M8N1STVxi'] = False # (m/s); ; +Morison['M8N2STVxi'] = False # (m/s); ; +Morison['M8N3STVxi'] = False # (m/s); ; +Morison['M8N4STVxi'] = False # (m/s); ; +Morison['M8N5STVxi'] = False # (m/s); ; +Morison['M8N6STVxi'] = False # (m/s); ; +Morison['M8N7STVxi'] = False # (m/s); ; +Morison['M8N8STVxi'] = False # (m/s); ; +Morison['M8N9STVxi'] = False # (m/s); ; +Morison['M9N1STVxi'] = False # (m/s); ; +Morison['M9N2STVxi'] = False # (m/s); ; +Morison['M9N3STVxi'] = False # (m/s); ; +Morison['M9N4STVxi'] = False # (m/s); ; +Morison['M9N5STVxi'] = False # (m/s); ; +Morison['M9N6STVxi'] = False # (m/s); ; +Morison['M9N7STVxi'] = False # (m/s); ; +Morison['M9N8STVxi'] = False # (m/s); ; +Morison['M9N9STVxi'] = False # (m/s); ; +Morison['M1N1STVyi'] = False # (m/s); ; +Morison['M1N2STVyi'] = False # (m/s); ; +Morison['M1N3STVyi'] = False # (m/s); ; +Morison['M1N4STVyi'] = False # (m/s); ; +Morison['M1N5STVyi'] = False # (m/s); ; +Morison['M1N6STVyi'] = False # (m/s); ; +Morison['M1N7STVyi'] = False # (m/s); ; +Morison['M1N8STVyi'] = False # (m/s); ; +Morison['M1N9STVyi'] = False # (m/s); ; +Morison['M2N1STVyi'] = False # (m/s); ; +Morison['M2N2STVyi'] = False # (m/s); ; +Morison['M2N3STVyi'] = False # (m/s); ; +Morison['M2N4STVyi'] = False # (m/s); ; +Morison['M2N5STVyi'] = False # (m/s); ; +Morison['M2N6STVyi'] = False # (m/s); ; +Morison['M2N7STVyi'] = False # (m/s); ; +Morison['M2N8STVyi'] = False # (m/s); ; +Morison['M2N9STVyi'] = False # (m/s); ; +Morison['M3N1STVyi'] = False # (m/s); ; +Morison['M3N2STVyi'] = False # (m/s); ; +Morison['M3N3STVyi'] = False # (m/s); ; +Morison['M3N4STVyi'] = False # (m/s); ; +Morison['M3N5STVyi'] = False # (m/s); ; +Morison['M3N6STVyi'] = False # (m/s); ; +Morison['M3N7STVyi'] = False # (m/s); ; +Morison['M3N8STVyi'] = False # (m/s); ; +Morison['M3N9STVyi'] = False # (m/s); ; +Morison['M4N1STVyi'] = False # (m/s); ; +Morison['M4N2STVyi'] = False # (m/s); ; +Morison['M4N3STVyi'] = False # (m/s); ; +Morison['M4N4STVyi'] = False # (m/s); ; +Morison['M4N5STVyi'] = False # (m/s); ; +Morison['M4N6STVyi'] = False # (m/s); ; +Morison['M4N7STVyi'] = False # (m/s); ; +Morison['M4N8STVyi'] = False # (m/s); ; +Morison['M4N9STVyi'] = False # (m/s); ; +Morison['M5N1STVyi'] = False # (m/s); ; +Morison['M5N2STVyi'] = False # (m/s); ; +Morison['M5N3STVyi'] = False # (m/s); ; +Morison['M5N4STVyi'] = False # (m/s); ; +Morison['M5N5STVyi'] = False # (m/s); ; +Morison['M5N6STVyi'] = False # (m/s); ; +Morison['M5N7STVyi'] = False # (m/s); ; +Morison['M5N8STVyi'] = False # (m/s); ; +Morison['M5N9STVyi'] = False # (m/s); ; +Morison['M6N1STVyi'] = False # (m/s); ; +Morison['M6N2STVyi'] = False # (m/s); ; +Morison['M6N3STVyi'] = False # (m/s); ; +Morison['M6N4STVyi'] = False # (m/s); ; +Morison['M6N5STVyi'] = False # (m/s); ; +Morison['M6N6STVyi'] = False # (m/s); ; +Morison['M6N7STVyi'] = False # (m/s); ; +Morison['M6N8STVyi'] = False # (m/s); ; +Morison['M6N9STVyi'] = False # (m/s); ; +Morison['M7N1STVyi'] = False # (m/s); ; +Morison['M7N2STVyi'] = False # (m/s); ; +Morison['M7N3STVyi'] = False # (m/s); ; +Morison['M7N4STVyi'] = False # (m/s); ; +Morison['M7N5STVyi'] = False # (m/s); ; +Morison['M7N6STVyi'] = False # (m/s); ; +Morison['M7N7STVyi'] = False # (m/s); ; +Morison['M7N8STVyi'] = False # (m/s); ; +Morison['M7N9STVyi'] = False # (m/s); ; +Morison['M8N1STVyi'] = False # (m/s); ; +Morison['M8N2STVyi'] = False # (m/s); ; +Morison['M8N3STVyi'] = False # (m/s); ; +Morison['M8N4STVyi'] = False # (m/s); ; +Morison['M8N5STVyi'] = False # (m/s); ; +Morison['M8N6STVyi'] = False # (m/s); ; +Morison['M8N7STVyi'] = False # (m/s); ; +Morison['M8N8STVyi'] = False # (m/s); ; +Morison['M8N9STVyi'] = False # (m/s); ; +Morison['M9N1STVyi'] = False # (m/s); ; +Morison['M9N2STVyi'] = False # (m/s); ; +Morison['M9N3STVyi'] = False # (m/s); ; +Morison['M9N4STVyi'] = False # (m/s); ; +Morison['M9N5STVyi'] = False # (m/s); ; +Morison['M9N6STVyi'] = False # (m/s); ; +Morison['M9N7STVyi'] = False # (m/s); ; +Morison['M9N8STVyi'] = False # (m/s); ; +Morison['M9N9STVyi'] = False # (m/s); ; +Morison['M1N1STVzi'] = False # (m/s); ; +Morison['M1N2STVzi'] = False # (m/s); ; +Morison['M1N3STVzi'] = False # (m/s); ; +Morison['M1N4STVzi'] = False # (m/s); ; +Morison['M1N5STVzi'] = False # (m/s); ; +Morison['M1N6STVzi'] = False # (m/s); ; +Morison['M1N7STVzi'] = False # (m/s); ; +Morison['M1N8STVzi'] = False # (m/s); ; +Morison['M1N9STVzi'] = False # (m/s); ; +Morison['M2N1STVzi'] = False # (m/s); ; +Morison['M2N2STVzi'] = False # (m/s); ; +Morison['M2N3STVzi'] = False # (m/s); ; +Morison['M2N4STVzi'] = False # (m/s); ; +Morison['M2N5STVzi'] = False # (m/s); ; +Morison['M2N6STVzi'] = False # (m/s); ; +Morison['M2N7STVzi'] = False # (m/s); ; +Morison['M2N8STVzi'] = False # (m/s); ; +Morison['M2N9STVzi'] = False # (m/s); ; +Morison['M3N1STVzi'] = False # (m/s); ; +Morison['M3N2STVzi'] = False # (m/s); ; +Morison['M3N3STVzi'] = False # (m/s); ; +Morison['M3N4STVzi'] = False # (m/s); ; +Morison['M3N5STVzi'] = False # (m/s); ; +Morison['M3N6STVzi'] = False # (m/s); ; +Morison['M3N7STVzi'] = False # (m/s); ; +Morison['M3N8STVzi'] = False # (m/s); ; +Morison['M3N9STVzi'] = False # (m/s); ; +Morison['M4N1STVzi'] = False # (m/s); ; +Morison['M4N2STVzi'] = False # (m/s); ; +Morison['M4N3STVzi'] = False # (m/s); ; +Morison['M4N4STVzi'] = False # (m/s); ; +Morison['M4N5STVzi'] = False # (m/s); ; +Morison['M4N6STVzi'] = False # (m/s); ; +Morison['M4N7STVzi'] = False # (m/s); ; +Morison['M4N8STVzi'] = False # (m/s); ; +Morison['M4N9STVzi'] = False # (m/s); ; +Morison['M5N1STVzi'] = False # (m/s); ; +Morison['M5N2STVzi'] = False # (m/s); ; +Morison['M5N3STVzi'] = False # (m/s); ; +Morison['M5N4STVzi'] = False # (m/s); ; +Morison['M5N5STVzi'] = False # (m/s); ; +Morison['M5N6STVzi'] = False # (m/s); ; +Morison['M5N7STVzi'] = False # (m/s); ; +Morison['M5N8STVzi'] = False # (m/s); ; +Morison['M5N9STVzi'] = False # (m/s); ; +Morison['M6N1STVzi'] = False # (m/s); ; +Morison['M6N2STVzi'] = False # (m/s); ; +Morison['M6N3STVzi'] = False # (m/s); ; +Morison['M6N4STVzi'] = False # (m/s); ; +Morison['M6N5STVzi'] = False # (m/s); ; +Morison['M6N6STVzi'] = False # (m/s); ; +Morison['M6N7STVzi'] = False # (m/s); ; +Morison['M6N8STVzi'] = False # (m/s); ; +Morison['M6N9STVzi'] = False # (m/s); ; +Morison['M7N1STVzi'] = False # (m/s); ; +Morison['M7N2STVzi'] = False # (m/s); ; +Morison['M7N3STVzi'] = False # (m/s); ; +Morison['M7N4STVzi'] = False # (m/s); ; +Morison['M7N5STVzi'] = False # (m/s); ; +Morison['M7N6STVzi'] = False # (m/s); ; +Morison['M7N7STVzi'] = False # (m/s); ; +Morison['M7N8STVzi'] = False # (m/s); ; +Morison['M7N9STVzi'] = False # (m/s); ; +Morison['M8N1STVzi'] = False # (m/s); ; +Morison['M8N2STVzi'] = False # (m/s); ; +Morison['M8N3STVzi'] = False # (m/s); ; +Morison['M8N4STVzi'] = False # (m/s); ; +Morison['M8N5STVzi'] = False # (m/s); ; +Morison['M8N6STVzi'] = False # (m/s); ; +Morison['M8N7STVzi'] = False # (m/s); ; +Morison['M8N8STVzi'] = False # (m/s); ; +Morison['M8N9STVzi'] = False # (m/s); ; +Morison['M9N1STVzi'] = False # (m/s); ; +Morison['M9N2STVzi'] = False # (m/s); ; +Morison['M9N3STVzi'] = False # (m/s); ; +Morison['M9N4STVzi'] = False # (m/s); ; +Morison['M9N5STVzi'] = False # (m/s); ; +Morison['M9N6STVzi'] = False # (m/s); ; +Morison['M9N7STVzi'] = False # (m/s); ; +Morison['M9N8STVzi'] = False # (m/s); ; +Morison['M9N9STVzi'] = False # (m/s); ; +Morison['M1N1STAxi'] = False # (m/s^2); structure translational Acceleration; +Morison['M1N2STAxi'] = False # (m/s^2); ; +Morison['M1N3STAxi'] = False # (m/s^2); ; +Morison['M1N4STAxi'] = False # (m/s^2); ; +Morison['M1N5STAxi'] = False # (m/s^2); ; +Morison['M1N6STAxi'] = False # (m/s^2); ; +Morison['M1N7STAxi'] = False # (m/s^2); ; +Morison['M1N8STAxi'] = False # (m/s^2); ; +Morison['M1N9STAxi'] = False # (m/s^2); ; +Morison['M2N1STAxi'] = False # (m/s^2); ; +Morison['M2N2STAxi'] = False # (m/s^2); ; +Morison['M2N3STAxi'] = False # (m/s^2); ; +Morison['M2N4STAxi'] = False # (m/s^2); ; +Morison['M2N5STAxi'] = False # (m/s^2); ; +Morison['M2N6STAxi'] = False # (m/s^2); ; +Morison['M2N7STAxi'] = False # (m/s^2); ; +Morison['M2N8STAxi'] = False # (m/s^2); ; +Morison['M2N9STAxi'] = False # (m/s^2); ; +Morison['M3N1STAxi'] = False # (m/s^2); ; +Morison['M3N2STAxi'] = False # (m/s^2); ; +Morison['M3N3STAxi'] = False # (m/s^2); ; +Morison['M3N4STAxi'] = False # (m/s^2); ; +Morison['M3N5STAxi'] = False # (m/s^2); ; +Morison['M3N6STAxi'] = False # (m/s^2); ; +Morison['M3N7STAxi'] = False # (m/s^2); ; +Morison['M3N8STAxi'] = False # (m/s^2); ; +Morison['M3N9STAxi'] = False # (m/s^2); ; +Morison['M4N1STAxi'] = False # (m/s^2); ; +Morison['M4N2STAxi'] = False # (m/s^2); ; +Morison['M4N3STAxi'] = False # (m/s^2); ; +Morison['M4N4STAxi'] = False # (m/s^2); ; +Morison['M4N5STAxi'] = False # (m/s^2); ; +Morison['M4N6STAxi'] = False # (m/s^2); ; +Morison['M4N7STAxi'] = False # (m/s^2); ; +Morison['M4N8STAxi'] = False # (m/s^2); ; +Morison['M4N9STAxi'] = False # (m/s^2); ; +Morison['M5N1STAxi'] = False # (m/s^2); ; +Morison['M5N2STAxi'] = False # (m/s^2); ; +Morison['M5N3STAxi'] = False # (m/s^2); ; +Morison['M5N4STAxi'] = False # (m/s^2); ; +Morison['M5N5STAxi'] = False # (m/s^2); ; +Morison['M5N6STAxi'] = False # (m/s^2); ; +Morison['M5N7STAxi'] = False # (m/s^2); ; +Morison['M5N8STAxi'] = False # (m/s^2); ; +Morison['M5N9STAxi'] = False # (m/s^2); ; +Morison['M6N1STAxi'] = False # (m/s^2); ; +Morison['M6N2STAxi'] = False # (m/s^2); ; +Morison['M6N3STAxi'] = False # (m/s^2); ; +Morison['M6N4STAxi'] = False # (m/s^2); ; +Morison['M6N5STAxi'] = False # (m/s^2); ; +Morison['M6N6STAxi'] = False # (m/s^2); ; +Morison['M6N7STAxi'] = False # (m/s^2); ; +Morison['M6N8STAxi'] = False # (m/s^2); ; +Morison['M6N9STAxi'] = False # (m/s^2); ; +Morison['M7N1STAxi'] = False # (m/s^2); ; +Morison['M7N2STAxi'] = False # (m/s^2); ; +Morison['M7N3STAxi'] = False # (m/s^2); ; +Morison['M7N4STAxi'] = False # (m/s^2); ; +Morison['M7N5STAxi'] = False # (m/s^2); ; +Morison['M7N6STAxi'] = False # (m/s^2); ; +Morison['M7N7STAxi'] = False # (m/s^2); ; +Morison['M7N8STAxi'] = False # (m/s^2); ; +Morison['M7N9STAxi'] = False # (m/s^2); ; +Morison['M8N1STAxi'] = False # (m/s^2); ; +Morison['M8N2STAxi'] = False # (m/s^2); ; +Morison['M8N3STAxi'] = False # (m/s^2); ; +Morison['M8N4STAxi'] = False # (m/s^2); ; +Morison['M8N5STAxi'] = False # (m/s^2); ; +Morison['M8N6STAxi'] = False # (m/s^2); ; +Morison['M8N7STAxi'] = False # (m/s^2); ; +Morison['M8N8STAxi'] = False # (m/s^2); ; +Morison['M8N9STAxi'] = False # (m/s^2); ; +Morison['M9N1STAxi'] = False # (m/s^2); ; +Morison['M9N2STAxi'] = False # (m/s^2); ; +Morison['M9N3STAxi'] = False # (m/s^2); ; +Morison['M9N4STAxi'] = False # (m/s^2); ; +Morison['M9N5STAxi'] = False # (m/s^2); ; +Morison['M9N6STAxi'] = False # (m/s^2); ; +Morison['M9N7STAxi'] = False # (m/s^2); ; +Morison['M9N8STAxi'] = False # (m/s^2); ; +Morison['M9N9STAxi'] = False # (m/s^2); ; +Morison['M1N1STAyi'] = False # (m/s^2); ; +Morison['M1N2STAyi'] = False # (m/s^2); ; +Morison['M1N3STAyi'] = False # (m/s^2); ; +Morison['M1N4STAyi'] = False # (m/s^2); ; +Morison['M1N5STAyi'] = False # (m/s^2); ; +Morison['M1N6STAyi'] = False # (m/s^2); ; +Morison['M1N7STAyi'] = False # (m/s^2); ; +Morison['M1N8STAyi'] = False # (m/s^2); ; +Morison['M1N9STAyi'] = False # (m/s^2); ; +Morison['M2N1STAyi'] = False # (m/s^2); ; +Morison['M2N2STAyi'] = False # (m/s^2); ; +Morison['M2N3STAyi'] = False # (m/s^2); ; +Morison['M2N4STAyi'] = False # (m/s^2); ; +Morison['M2N5STAyi'] = False # (m/s^2); ; +Morison['M2N6STAyi'] = False # (m/s^2); ; +Morison['M2N7STAyi'] = False # (m/s^2); ; +Morison['M2N8STAyi'] = False # (m/s^2); ; +Morison['M2N9STAyi'] = False # (m/s^2); ; +Morison['M3N1STAyi'] = False # (m/s^2); ; +Morison['M3N2STAyi'] = False # (m/s^2); ; +Morison['M3N3STAyi'] = False # (m/s^2); ; +Morison['M3N4STAyi'] = False # (m/s^2); ; +Morison['M3N5STAyi'] = False # (m/s^2); ; +Morison['M3N6STAyi'] = False # (m/s^2); ; +Morison['M3N7STAyi'] = False # (m/s^2); ; +Morison['M3N8STAyi'] = False # (m/s^2); ; +Morison['M3N9STAyi'] = False # (m/s^2); ; +Morison['M4N1STAyi'] = False # (m/s^2); ; +Morison['M4N2STAyi'] = False # (m/s^2); ; +Morison['M4N3STAyi'] = False # (m/s^2); ; +Morison['M4N4STAyi'] = False # (m/s^2); ; +Morison['M4N5STAyi'] = False # (m/s^2); ; +Morison['M4N6STAyi'] = False # (m/s^2); ; +Morison['M4N7STAyi'] = False # (m/s^2); ; +Morison['M4N8STAyi'] = False # (m/s^2); ; +Morison['M4N9STAyi'] = False # (m/s^2); ; +Morison['M5N1STAyi'] = False # (m/s^2); ; +Morison['M5N2STAyi'] = False # (m/s^2); ; +Morison['M5N3STAyi'] = False # (m/s^2); ; +Morison['M5N4STAyi'] = False # (m/s^2); ; +Morison['M5N5STAyi'] = False # (m/s^2); ; +Morison['M5N6STAyi'] = False # (m/s^2); ; +Morison['M5N7STAyi'] = False # (m/s^2); ; +Morison['M5N8STAyi'] = False # (m/s^2); ; +Morison['M5N9STAyi'] = False # (m/s^2); ; +Morison['M6N1STAyi'] = False # (m/s^2); ; +Morison['M6N2STAyi'] = False # (m/s^2); ; +Morison['M6N3STAyi'] = False # (m/s^2); ; +Morison['M6N4STAyi'] = False # (m/s^2); ; +Morison['M6N5STAyi'] = False # (m/s^2); ; +Morison['M6N6STAyi'] = False # (m/s^2); ; +Morison['M6N7STAyi'] = False # (m/s^2); ; +Morison['M6N8STAyi'] = False # (m/s^2); ; +Morison['M6N9STAyi'] = False # (m/s^2); ; +Morison['M7N1STAyi'] = False # (m/s^2); ; +Morison['M7N2STAyi'] = False # (m/s^2); ; +Morison['M7N3STAyi'] = False # (m/s^2); ; +Morison['M7N4STAyi'] = False # (m/s^2); ; +Morison['M7N5STAyi'] = False # (m/s^2); ; +Morison['M7N6STAyi'] = False # (m/s^2); ; +Morison['M7N7STAyi'] = False # (m/s^2); ; +Morison['M7N8STAyi'] = False # (m/s^2); ; +Morison['M7N9STAyi'] = False # (m/s^2); ; +Morison['M8N1STAyi'] = False # (m/s^2); ; +Morison['M8N2STAyi'] = False # (m/s^2); ; +Morison['M8N3STAyi'] = False # (m/s^2); ; +Morison['M8N4STAyi'] = False # (m/s^2); ; +Morison['M8N5STAyi'] = False # (m/s^2); ; +Morison['M8N6STAyi'] = False # (m/s^2); ; +Morison['M8N7STAyi'] = False # (m/s^2); ; +Morison['M8N8STAyi'] = False # (m/s^2); ; +Morison['M8N9STAyi'] = False # (m/s^2); ; +Morison['M9N1STAyi'] = False # (m/s^2); ; +Morison['M9N2STAyi'] = False # (m/s^2); ; +Morison['M9N3STAyi'] = False # (m/s^2); ; +Morison['M9N4STAyi'] = False # (m/s^2); ; +Morison['M9N5STAyi'] = False # (m/s^2); ; +Morison['M9N6STAyi'] = False # (m/s^2); ; +Morison['M9N7STAyi'] = False # (m/s^2); ; +Morison['M9N8STAyi'] = False # (m/s^2); ; +Morison['M9N9STAyi'] = False # (m/s^2); ; +Morison['M1N1STAzi'] = False # (m/s^2); ; +Morison['M1N2STAzi'] = False # (m/s^2); ; +Morison['M1N3STAzi'] = False # (m/s^2); ; +Morison['M1N4STAzi'] = False # (m/s^2); ; +Morison['M1N5STAzi'] = False # (m/s^2); ; +Morison['M1N6STAzi'] = False # (m/s^2); ; +Morison['M1N7STAzi'] = False # (m/s^2); ; +Morison['M1N8STAzi'] = False # (m/s^2); ; +Morison['M1N9STAzi'] = False # (m/s^2); ; +Morison['M2N1STAzi'] = False # (m/s^2); ; +Morison['M2N2STAzi'] = False # (m/s^2); ; +Morison['M2N3STAzi'] = False # (m/s^2); ; +Morison['M2N4STAzi'] = False # (m/s^2); ; +Morison['M2N5STAzi'] = False # (m/s^2); ; +Morison['M2N6STAzi'] = False # (m/s^2); ; +Morison['M2N7STAzi'] = False # (m/s^2); ; +Morison['M2N8STAzi'] = False # (m/s^2); ; +Morison['M2N9STAzi'] = False # (m/s^2); ; +Morison['M3N1STAzi'] = False # (m/s^2); ; +Morison['M3N2STAzi'] = False # (m/s^2); ; +Morison['M3N3STAzi'] = False # (m/s^2); ; +Morison['M3N4STAzi'] = False # (m/s^2); ; +Morison['M3N5STAzi'] = False # (m/s^2); ; +Morison['M3N6STAzi'] = False # (m/s^2); ; +Morison['M3N7STAzi'] = False # (m/s^2); ; +Morison['M3N8STAzi'] = False # (m/s^2); ; +Morison['M3N9STAzi'] = False # (m/s^2); ; +Morison['M4N1STAzi'] = False # (m/s^2); ; +Morison['M4N2STAzi'] = False # (m/s^2); ; +Morison['M4N3STAzi'] = False # (m/s^2); ; +Morison['M4N4STAzi'] = False # (m/s^2); ; +Morison['M4N5STAzi'] = False # (m/s^2); ; +Morison['M4N6STAzi'] = False # (m/s^2); ; +Morison['M4N7STAzi'] = False # (m/s^2); ; +Morison['M4N8STAzi'] = False # (m/s^2); ; +Morison['M4N9STAzi'] = False # (m/s^2); ; +Morison['M5N1STAzi'] = False # (m/s^2); ; +Morison['M5N2STAzi'] = False # (m/s^2); ; +Morison['M5N3STAzi'] = False # (m/s^2); ; +Morison['M5N4STAzi'] = False # (m/s^2); ; +Morison['M5N5STAzi'] = False # (m/s^2); ; +Morison['M5N6STAzi'] = False # (m/s^2); ; +Morison['M5N7STAzi'] = False # (m/s^2); ; +Morison['M5N8STAzi'] = False # (m/s^2); ; +Morison['M5N9STAzi'] = False # (m/s^2); ; +Morison['M6N1STAzi'] = False # (m/s^2); ; +Morison['M6N2STAzi'] = False # (m/s^2); ; +Morison['M6N3STAzi'] = False # (m/s^2); ; +Morison['M6N4STAzi'] = False # (m/s^2); ; +Morison['M6N5STAzi'] = False # (m/s^2); ; +Morison['M6N6STAzi'] = False # (m/s^2); ; +Morison['M6N7STAzi'] = False # (m/s^2); ; +Morison['M6N8STAzi'] = False # (m/s^2); ; +Morison['M6N9STAzi'] = False # (m/s^2); ; +Morison['M7N1STAzi'] = False # (m/s^2); ; +Morison['M7N2STAzi'] = False # (m/s^2); ; +Morison['M7N3STAzi'] = False # (m/s^2); ; +Morison['M7N4STAzi'] = False # (m/s^2); ; +Morison['M7N5STAzi'] = False # (m/s^2); ; +Morison['M7N6STAzi'] = False # (m/s^2); ; +Morison['M7N7STAzi'] = False # (m/s^2); ; +Morison['M7N8STAzi'] = False # (m/s^2); ; +Morison['M7N9STAzi'] = False # (m/s^2); ; +Morison['M8N1STAzi'] = False # (m/s^2); ; +Morison['M8N2STAzi'] = False # (m/s^2); ; +Morison['M8N3STAzi'] = False # (m/s^2); ; +Morison['M8N4STAzi'] = False # (m/s^2); ; +Morison['M8N5STAzi'] = False # (m/s^2); ; +Morison['M8N6STAzi'] = False # (m/s^2); ; +Morison['M8N7STAzi'] = False # (m/s^2); ; +Morison['M8N8STAzi'] = False # (m/s^2); ; +Morison['M8N9STAzi'] = False # (m/s^2); ; +Morison['M9N1STAzi'] = False # (m/s^2); ; +Morison['M9N2STAzi'] = False # (m/s^2); ; +Morison['M9N3STAzi'] = False # (m/s^2); ; +Morison['M9N4STAzi'] = False # (m/s^2); ; +Morison['M9N5STAzi'] = False # (m/s^2); ; +Morison['M9N6STAzi'] = False # (m/s^2); ; +Morison['M9N7STAzi'] = False # (m/s^2); ; +Morison['M9N8STAzi'] = False # (m/s^2); ; +Morison['M9N9STAzi'] = False # (m/s^2); ; + +# Morison Element Loads +Morison['M1N1FDxi'] = False # (N/m); x-component of the distributed viscous-drag force expressed in the inertial coordinate system; +Morison['M1N2FDxi'] = False # (N/m); ; +Morison['M1N3FDxi'] = False # (N/m); ; +Morison['M1N4FDxi'] = False # (N/m); ; +Morison['M1N5FDxi'] = False # (N/m); ; +Morison['M1N6FDxi'] = False # (N/m); ; +Morison['M1N7FDxi'] = False # (N/m); ; +Morison['M1N8FDxi'] = False # (N/m); ; +Morison['M1N9FDxi'] = False # (N/m); ; +Morison['M2N1FDxi'] = False # (N/m); ; +Morison['M2N2FDxi'] = False # (N/m); ; +Morison['M2N3FDxi'] = False # (N/m); ; +Morison['M2N4FDxi'] = False # (N/m); ; +Morison['M2N5FDxi'] = False # (N/m); ; +Morison['M2N6FDxi'] = False # (N/m); ; +Morison['M2N7FDxi'] = False # (N/m); ; +Morison['M2N8FDxi'] = False # (N/m); ; +Morison['M2N9FDxi'] = False # (N/m); ; +Morison['M3N1FDxi'] = False # (N/m); ; +Morison['M3N2FDxi'] = False # (N/m); ; +Morison['M3N3FDxi'] = False # (N/m); ; +Morison['M3N4FDxi'] = False # (N/m); ; +Morison['M3N5FDxi'] = False # (N/m); ; +Morison['M3N6FDxi'] = False # (N/m); ; +Morison['M3N7FDxi'] = False # (N/m); ; +Morison['M3N8FDxi'] = False # (N/m); ; +Morison['M3N9FDxi'] = False # (N/m); ; +Morison['M4N1FDxi'] = False # (N/m); ; +Morison['M4N2FDxi'] = False # (N/m); ; +Morison['M4N3FDxi'] = False # (N/m); ; +Morison['M4N4FDxi'] = False # (N/m); ; +Morison['M4N5FDxi'] = False # (N/m); ; +Morison['M4N6FDxi'] = False # (N/m); ; +Morison['M4N7FDxi'] = False # (N/m); ; +Morison['M4N8FDxi'] = False # (N/m); ; +Morison['M4N9FDxi'] = False # (N/m); ; +Morison['M5N1FDxi'] = False # (N/m); ; +Morison['M5N2FDxi'] = False # (N/m); ; +Morison['M5N3FDxi'] = False # (N/m); ; +Morison['M5N4FDxi'] = False # (N/m); ; +Morison['M5N5FDxi'] = False # (N/m); ; +Morison['M5N6FDxi'] = False # (N/m); ; +Morison['M5N7FDxi'] = False # (N/m); ; +Morison['M5N8FDxi'] = False # (N/m); ; +Morison['M5N9FDxi'] = False # (N/m); ; +Morison['M6N1FDxi'] = False # (N/m); ; +Morison['M6N2FDxi'] = False # (N/m); ; +Morison['M6N3FDxi'] = False # (N/m); ; +Morison['M6N4FDxi'] = False # (N/m); ; +Morison['M6N5FDxi'] = False # (N/m); ; +Morison['M6N6FDxi'] = False # (N/m); ; +Morison['M6N7FDxi'] = False # (N/m); ; +Morison['M6N8FDxi'] = False # (N/m); ; +Morison['M6N9FDxi'] = False # (N/m); ; +Morison['M7N1FDxi'] = False # (N/m); ; +Morison['M7N2FDxi'] = False # (N/m); ; +Morison['M7N3FDxi'] = False # (N/m); ; +Morison['M7N4FDxi'] = False # (N/m); ; +Morison['M7N5FDxi'] = False # (N/m); ; +Morison['M7N6FDxi'] = False # (N/m); ; +Morison['M7N7FDxi'] = False # (N/m); ; +Morison['M7N8FDxi'] = False # (N/m); ; +Morison['M7N9FDxi'] = False # (N/m); ; +Morison['M8N1FDxi'] = False # (N/m); ; +Morison['M8N2FDxi'] = False # (N/m); ; +Morison['M8N3FDxi'] = False # (N/m); ; +Morison['M8N4FDxi'] = False # (N/m); ; +Morison['M8N5FDxi'] = False # (N/m); ; +Morison['M8N6FDxi'] = False # (N/m); ; +Morison['M8N7FDxi'] = False # (N/m); ; +Morison['M8N8FDxi'] = False # (N/m); ; +Morison['M8N9FDxi'] = False # (N/m); ; +Morison['M9N1FDxi'] = False # (N/m); ; +Morison['M9N2FDxi'] = False # (N/m); ; +Morison['M9N3FDxi'] = False # (N/m); ; +Morison['M9N4FDxi'] = False # (N/m); ; +Morison['M9N5FDxi'] = False # (N/m); ; +Morison['M9N6FDxi'] = False # (N/m); ; +Morison['M9N7FDxi'] = False # (N/m); ; +Morison['M9N8FDxi'] = False # (N/m); ; +Morison['M9N9FDxi'] = False # (N/m); ; +Morison['M1N1FDyi'] = False # (N/m); y-component of the distributed viscous-drag force expressed in the inertial coordinate system; +Morison['M1N2FDyi'] = False # (N/m); ; +Morison['M1N3FDyi'] = False # (N/m); ; +Morison['M1N4FDyi'] = False # (N/m); ; +Morison['M1N5FDyi'] = False # (N/m); ; +Morison['M1N6FDyi'] = False # (N/m); ; +Morison['M1N7FDyi'] = False # (N/m); ; +Morison['M1N8FDyi'] = False # (N/m); ; +Morison['M1N9FDyi'] = False # (N/m); ; +Morison['M2N1FDyi'] = False # (N/m); ; +Morison['M2N2FDyi'] = False # (N/m); ; +Morison['M2N3FDyi'] = False # (N/m); ; +Morison['M2N4FDyi'] = False # (N/m); ; +Morison['M2N5FDyi'] = False # (N/m); ; +Morison['M2N6FDyi'] = False # (N/m); ; +Morison['M2N7FDyi'] = False # (N/m); ; +Morison['M2N8FDyi'] = False # (N/m); ; +Morison['M2N9FDyi'] = False # (N/m); ; +Morison['M3N1FDyi'] = False # (N/m); ; +Morison['M3N2FDyi'] = False # (N/m); ; +Morison['M3N3FDyi'] = False # (N/m); ; +Morison['M3N4FDyi'] = False # (N/m); ; +Morison['M3N5FDyi'] = False # (N/m); ; +Morison['M3N6FDyi'] = False # (N/m); ; +Morison['M3N7FDyi'] = False # (N/m); ; +Morison['M3N8FDyi'] = False # (N/m); ; +Morison['M3N9FDyi'] = False # (N/m); ; +Morison['M4N1FDyi'] = False # (N/m); ; +Morison['M4N2FDyi'] = False # (N/m); ; +Morison['M4N3FDyi'] = False # (N/m); ; +Morison['M4N4FDyi'] = False # (N/m); ; +Morison['M4N5FDyi'] = False # (N/m); ; +Morison['M4N6FDyi'] = False # (N/m); ; +Morison['M4N7FDyi'] = False # (N/m); ; +Morison['M4N8FDyi'] = False # (N/m); ; +Morison['M4N9FDyi'] = False # (N/m); ; +Morison['M5N1FDyi'] = False # (N/m); ; +Morison['M5N2FDyi'] = False # (N/m); ; +Morison['M5N3FDyi'] = False # (N/m); ; +Morison['M5N4FDyi'] = False # (N/m); ; +Morison['M5N5FDyi'] = False # (N/m); ; +Morison['M5N6FDyi'] = False # (N/m); ; +Morison['M5N7FDyi'] = False # (N/m); ; +Morison['M5N8FDyi'] = False # (N/m); ; +Morison['M5N9FDyi'] = False # (N/m); ; +Morison['M6N1FDyi'] = False # (N/m); ; +Morison['M6N2FDyi'] = False # (N/m); ; +Morison['M6N3FDyi'] = False # (N/m); ; +Morison['M6N4FDyi'] = False # (N/m); ; +Morison['M6N5FDyi'] = False # (N/m); ; +Morison['M6N6FDyi'] = False # (N/m); ; +Morison['M6N7FDyi'] = False # (N/m); ; +Morison['M6N8FDyi'] = False # (N/m); ; +Morison['M6N9FDyi'] = False # (N/m); ; +Morison['M7N1FDyi'] = False # (N/m); ; +Morison['M7N2FDyi'] = False # (N/m); ; +Morison['M7N3FDyi'] = False # (N/m); ; +Morison['M7N4FDyi'] = False # (N/m); ; +Morison['M7N5FDyi'] = False # (N/m); ; +Morison['M7N6FDyi'] = False # (N/m); ; +Morison['M7N7FDyi'] = False # (N/m); ; +Morison['M7N8FDyi'] = False # (N/m); ; +Morison['M7N9FDyi'] = False # (N/m); ; +Morison['M8N1FDyi'] = False # (N/m); ; +Morison['M8N2FDyi'] = False # (N/m); ; +Morison['M8N3FDyi'] = False # (N/m); ; +Morison['M8N4FDyi'] = False # (N/m); ; +Morison['M8N5FDyi'] = False # (N/m); ; +Morison['M8N6FDyi'] = False # (N/m); ; +Morison['M8N7FDyi'] = False # (N/m); ; +Morison['M8N8FDyi'] = False # (N/m); ; +Morison['M8N9FDyi'] = False # (N/m); ; +Morison['M9N1FDyi'] = False # (N/m); ; +Morison['M9N2FDyi'] = False # (N/m); ; +Morison['M9N3FDyi'] = False # (N/m); ; +Morison['M9N4FDyi'] = False # (N/m); ; +Morison['M9N5FDyi'] = False # (N/m); ; +Morison['M9N6FDyi'] = False # (N/m); ; +Morison['M9N7FDyi'] = False # (N/m); ; +Morison['M9N8FDyi'] = False # (N/m); ; +Morison['M9N9FDyi'] = False # (N/m); ; +Morison['M1N1FDzi'] = False # (N/m); z-component of the distributed viscous-drag force expressed in the inertial coordinate system; +Morison['M1N2FDzi'] = False # (N/m); ; +Morison['M1N3FDzi'] = False # (N/m); ; +Morison['M1N4FDzi'] = False # (N/m); ; +Morison['M1N5FDzi'] = False # (N/m); ; +Morison['M1N6FDzi'] = False # (N/m); ; +Morison['M1N7FDzi'] = False # (N/m); ; +Morison['M1N8FDzi'] = False # (N/m); ; +Morison['M1N9FDzi'] = False # (N/m); ; +Morison['M2N1FDzi'] = False # (N/m); ; +Morison['M2N2FDzi'] = False # (N/m); ; +Morison['M2N3FDzi'] = False # (N/m); ; +Morison['M2N4FDzi'] = False # (N/m); ; +Morison['M2N5FDzi'] = False # (N/m); ; +Morison['M2N6FDzi'] = False # (N/m); ; +Morison['M2N7FDzi'] = False # (N/m); ; +Morison['M2N8FDzi'] = False # (N/m); ; +Morison['M2N9FDzi'] = False # (N/m); ; +Morison['M3N1FDzi'] = False # (N/m); ; +Morison['M3N2FDzi'] = False # (N/m); ; +Morison['M3N3FDzi'] = False # (N/m); ; +Morison['M3N4FDzi'] = False # (N/m); ; +Morison['M3N5FDzi'] = False # (N/m); ; +Morison['M3N6FDzi'] = False # (N/m); ; +Morison['M3N7FDzi'] = False # (N/m); ; +Morison['M3N8FDzi'] = False # (N/m); ; +Morison['M3N9FDzi'] = False # (N/m); ; +Morison['M4N1FDzi'] = False # (N/m); ; +Morison['M4N2FDzi'] = False # (N/m); ; +Morison['M4N3FDzi'] = False # (N/m); ; +Morison['M4N4FDzi'] = False # (N/m); ; +Morison['M4N5FDzi'] = False # (N/m); ; +Morison['M4N6FDzi'] = False # (N/m); ; +Morison['M4N7FDzi'] = False # (N/m); ; +Morison['M4N8FDzi'] = False # (N/m); ; +Morison['M4N9FDzi'] = False # (N/m); ; +Morison['M5N1FDzi'] = False # (N/m); ; +Morison['M5N2FDzi'] = False # (N/m); ; +Morison['M5N3FDzi'] = False # (N/m); ; +Morison['M5N4FDzi'] = False # (N/m); ; +Morison['M5N5FDzi'] = False # (N/m); ; +Morison['M5N6FDzi'] = False # (N/m); ; +Morison['M5N7FDzi'] = False # (N/m); ; +Morison['M5N8FDzi'] = False # (N/m); ; +Morison['M5N9FDzi'] = False # (N/m); ; +Morison['M6N1FDzi'] = False # (N/m); ; +Morison['M6N2FDzi'] = False # (N/m); ; +Morison['M6N3FDzi'] = False # (N/m); ; +Morison['M6N4FDzi'] = False # (N/m); ; +Morison['M6N5FDzi'] = False # (N/m); ; +Morison['M6N6FDzi'] = False # (N/m); ; +Morison['M6N7FDzi'] = False # (N/m); ; +Morison['M6N8FDzi'] = False # (N/m); ; +Morison['M6N9FDzi'] = False # (N/m); ; +Morison['M7N1FDzi'] = False # (N/m); ; +Morison['M7N2FDzi'] = False # (N/m); ; +Morison['M7N3FDzi'] = False # (N/m); ; +Morison['M7N4FDzi'] = False # (N/m); ; +Morison['M7N5FDzi'] = False # (N/m); ; +Morison['M7N6FDzi'] = False # (N/m); ; +Morison['M7N7FDzi'] = False # (N/m); ; +Morison['M7N8FDzi'] = False # (N/m); ; +Morison['M7N9FDzi'] = False # (N/m); ; +Morison['M8N1FDzi'] = False # (N/m); ; +Morison['M8N2FDzi'] = False # (N/m); ; +Morison['M8N3FDzi'] = False # (N/m); ; +Morison['M8N4FDzi'] = False # (N/m); ; +Morison['M8N5FDzi'] = False # (N/m); ; +Morison['M8N6FDzi'] = False # (N/m); ; +Morison['M8N7FDzi'] = False # (N/m); ; +Morison['M8N8FDzi'] = False # (N/m); ; +Morison['M8N9FDzi'] = False # (N/m); ; +Morison['M9N1FDzi'] = False # (N/m); ; +Morison['M9N2FDzi'] = False # (N/m); ; +Morison['M9N3FDzi'] = False # (N/m); ; +Morison['M9N4FDzi'] = False # (N/m); ; +Morison['M9N5FDzi'] = False # (N/m); ; +Morison['M9N6FDzi'] = False # (N/m); ; +Morison['M9N7FDzi'] = False # (N/m); ; +Morison['M9N8FDzi'] = False # (N/m); ; +Morison['M9N9FDzi'] = False # (N/m); ; +Morison['M1N1FIxi'] = False # (N/m); x-component of the distributed fluid inertia force expressed in the inertial coordinate system; +Morison['M1N2FIxi'] = False # (N/m); ; +Morison['M1N3FIxi'] = False # (N/m); ; +Morison['M1N4FIxi'] = False # (N/m); ; +Morison['M1N5FIxi'] = False # (N/m); ; +Morison['M1N6FIxi'] = False # (N/m); ; +Morison['M1N7FIxi'] = False # (N/m); ; +Morison['M1N8FIxi'] = False # (N/m); ; +Morison['M1N9FIxi'] = False # (N/m); ; +Morison['M2N1FIxi'] = False # (N/m); ; +Morison['M2N2FIxi'] = False # (N/m); ; +Morison['M2N3FIxi'] = False # (N/m); ; +Morison['M2N4FIxi'] = False # (N/m); ; +Morison['M2N5FIxi'] = False # (N/m); ; +Morison['M2N6FIxi'] = False # (N/m); ; +Morison['M2N7FIxi'] = False # (N/m); ; +Morison['M2N8FIxi'] = False # (N/m); ; +Morison['M2N9FIxi'] = False # (N/m); ; +Morison['M3N1FIxi'] = False # (N/m); ; +Morison['M3N2FIxi'] = False # (N/m); ; +Morison['M3N3FIxi'] = False # (N/m); ; +Morison['M3N4FIxi'] = False # (N/m); ; +Morison['M3N5FIxi'] = False # (N/m); ; +Morison['M3N6FIxi'] = False # (N/m); ; +Morison['M3N7FIxi'] = False # (N/m); ; +Morison['M3N8FIxi'] = False # (N/m); ; +Morison['M3N9FIxi'] = False # (N/m); ; +Morison['M4N1FIxi'] = False # (N/m); ; +Morison['M4N2FIxi'] = False # (N/m); ; +Morison['M4N3FIxi'] = False # (N/m); ; +Morison['M4N4FIxi'] = False # (N/m); ; +Morison['M4N5FIxi'] = False # (N/m); ; +Morison['M4N6FIxi'] = False # (N/m); ; +Morison['M4N7FIxi'] = False # (N/m); ; +Morison['M4N8FIxi'] = False # (N/m); ; +Morison['M4N9FIxi'] = False # (N/m); ; +Morison['M5N1FIxi'] = False # (N/m); ; +Morison['M5N2FIxi'] = False # (N/m); ; +Morison['M5N3FIxi'] = False # (N/m); ; +Morison['M5N4FIxi'] = False # (N/m); ; +Morison['M5N5FIxi'] = False # (N/m); ; +Morison['M5N6FIxi'] = False # (N/m); ; +Morison['M5N7FIxi'] = False # (N/m); ; +Morison['M5N8FIxi'] = False # (N/m); ; +Morison['M5N9FIxi'] = False # (N/m); ; +Morison['M6N1FIxi'] = False # (N/m); ; +Morison['M6N2FIxi'] = False # (N/m); ; +Morison['M6N3FIxi'] = False # (N/m); ; +Morison['M6N4FIxi'] = False # (N/m); ; +Morison['M6N5FIxi'] = False # (N/m); ; +Morison['M6N6FIxi'] = False # (N/m); ; +Morison['M6N7FIxi'] = False # (N/m); ; +Morison['M6N8FIxi'] = False # (N/m); ; +Morison['M6N9FIxi'] = False # (N/m); ; +Morison['M7N1FIxi'] = False # (N/m); ; +Morison['M7N2FIxi'] = False # (N/m); ; +Morison['M7N3FIxi'] = False # (N/m); ; +Morison['M7N4FIxi'] = False # (N/m); ; +Morison['M7N5FIxi'] = False # (N/m); ; +Morison['M7N6FIxi'] = False # (N/m); ; +Morison['M7N7FIxi'] = False # (N/m); ; +Morison['M7N8FIxi'] = False # (N/m); ; +Morison['M7N9FIxi'] = False # (N/m); ; +Morison['M8N1FIxi'] = False # (N/m); ; +Morison['M8N2FIxi'] = False # (N/m); ; +Morison['M8N3FIxi'] = False # (N/m); ; +Morison['M8N4FIxi'] = False # (N/m); ; +Morison['M8N5FIxi'] = False # (N/m); ; +Morison['M8N6FIxi'] = False # (N/m); ; +Morison['M8N7FIxi'] = False # (N/m); ; +Morison['M8N8FIxi'] = False # (N/m); ; +Morison['M8N9FIxi'] = False # (N/m); ; +Morison['M9N1FIxi'] = False # (N/m); ; +Morison['M9N2FIxi'] = False # (N/m); ; +Morison['M9N3FIxi'] = False # (N/m); ; +Morison['M9N4FIxi'] = False # (N/m); ; +Morison['M9N5FIxi'] = False # (N/m); ; +Morison['M9N6FIxi'] = False # (N/m); ; +Morison['M9N7FIxi'] = False # (N/m); ; +Morison['M9N8FIxi'] = False # (N/m); ; +Morison['M9N9FIxi'] = False # (N/m); ; +Morison['M1N1FIyi'] = False # (N/m); y-component of the distributed fluid inertia force expressed in the inertial coordinate system; +Morison['M1N2FIyi'] = False # (N/m); ; +Morison['M1N3FIyi'] = False # (N/m); ; +Morison['M1N4FIyi'] = False # (N/m); ; +Morison['M1N5FIyi'] = False # (N/m); ; +Morison['M1N6FIyi'] = False # (N/m); ; +Morison['M1N7FIyi'] = False # (N/m); ; +Morison['M1N8FIyi'] = False # (N/m); ; +Morison['M1N9FIyi'] = False # (N/m); ; +Morison['M2N1FIyi'] = False # (N/m); ; +Morison['M2N2FIyi'] = False # (N/m); ; +Morison['M2N3FIyi'] = False # (N/m); ; +Morison['M2N4FIyi'] = False # (N/m); ; +Morison['M2N5FIyi'] = False # (N/m); ; +Morison['M2N6FIyi'] = False # (N/m); ; +Morison['M2N7FIyi'] = False # (N/m); ; +Morison['M2N8FIyi'] = False # (N/m); ; +Morison['M2N9FIyi'] = False # (N/m); ; +Morison['M3N1FIyi'] = False # (N/m); ; +Morison['M3N2FIyi'] = False # (N/m); ; +Morison['M3N3FIyi'] = False # (N/m); ; +Morison['M3N4FIyi'] = False # (N/m); ; +Morison['M3N5FIyi'] = False # (N/m); ; +Morison['M3N6FIyi'] = False # (N/m); ; +Morison['M3N7FIyi'] = False # (N/m); ; +Morison['M3N8FIyi'] = False # (N/m); ; +Morison['M3N9FIyi'] = False # (N/m); ; +Morison['M4N1FIyi'] = False # (N/m); ; +Morison['M4N2FIyi'] = False # (N/m); ; +Morison['M4N3FIyi'] = False # (N/m); ; +Morison['M4N4FIyi'] = False # (N/m); ; +Morison['M4N5FIyi'] = False # (N/m); ; +Morison['M4N6FIyi'] = False # (N/m); ; +Morison['M4N7FIyi'] = False # (N/m); ; +Morison['M4N8FIyi'] = False # (N/m); ; +Morison['M4N9FIyi'] = False # (N/m); ; +Morison['M5N1FIyi'] = False # (N/m); ; +Morison['M5N2FIyi'] = False # (N/m); ; +Morison['M5N3FIyi'] = False # (N/m); ; +Morison['M5N4FIyi'] = False # (N/m); ; +Morison['M5N5FIyi'] = False # (N/m); ; +Morison['M5N6FIyi'] = False # (N/m); ; +Morison['M5N7FIyi'] = False # (N/m); ; +Morison['M5N8FIyi'] = False # (N/m); ; +Morison['M5N9FIyi'] = False # (N/m); ; +Morison['M6N1FIyi'] = False # (N/m); ; +Morison['M6N2FIyi'] = False # (N/m); ; +Morison['M6N3FIyi'] = False # (N/m); ; +Morison['M6N4FIyi'] = False # (N/m); ; +Morison['M6N5FIyi'] = False # (N/m); ; +Morison['M6N6FIyi'] = False # (N/m); ; +Morison['M6N7FIyi'] = False # (N/m); ; +Morison['M6N8FIyi'] = False # (N/m); ; +Morison['M6N9FIyi'] = False # (N/m); ; +Morison['M7N1FIyi'] = False # (N/m); ; +Morison['M7N2FIyi'] = False # (N/m); ; +Morison['M7N3FIyi'] = False # (N/m); ; +Morison['M7N4FIyi'] = False # (N/m); ; +Morison['M7N5FIyi'] = False # (N/m); ; +Morison['M7N6FIyi'] = False # (N/m); ; +Morison['M7N7FIyi'] = False # (N/m); ; +Morison['M7N8FIyi'] = False # (N/m); ; +Morison['M7N9FIyi'] = False # (N/m); ; +Morison['M8N1FIyi'] = False # (N/m); ; +Morison['M8N2FIyi'] = False # (N/m); ; +Morison['M8N3FIyi'] = False # (N/m); ; +Morison['M8N4FIyi'] = False # (N/m); ; +Morison['M8N5FIyi'] = False # (N/m); ; +Morison['M8N6FIyi'] = False # (N/m); ; +Morison['M8N7FIyi'] = False # (N/m); ; +Morison['M8N8FIyi'] = False # (N/m); ; +Morison['M8N9FIyi'] = False # (N/m); ; +Morison['M9N1FIyi'] = False # (N/m); ; +Morison['M9N2FIyi'] = False # (N/m); ; +Morison['M9N3FIyi'] = False # (N/m); ; +Morison['M9N4FIyi'] = False # (N/m); ; +Morison['M9N5FIyi'] = False # (N/m); ; +Morison['M9N6FIyi'] = False # (N/m); ; +Morison['M9N7FIyi'] = False # (N/m); ; +Morison['M9N8FIyi'] = False # (N/m); ; +Morison['M9N9FIyi'] = False # (N/m); ; +Morison['M1N1FIzi'] = False # (N/m); z-component of the distributed fluid inertia force expressed in the inertial coordinate system; +Morison['M1N2FIzi'] = False # (N/m); ; +Morison['M1N3FIzi'] = False # (N/m); ; +Morison['M1N4FIzi'] = False # (N/m); ; +Morison['M1N5FIzi'] = False # (N/m); ; +Morison['M1N6FIzi'] = False # (N/m); ; +Morison['M1N7FIzi'] = False # (N/m); ; +Morison['M1N8FIzi'] = False # (N/m); ; +Morison['M1N9FIzi'] = False # (N/m); ; +Morison['M2N1FIzi'] = False # (N/m); ; +Morison['M2N2FIzi'] = False # (N/m); ; +Morison['M2N3FIzi'] = False # (N/m); ; +Morison['M2N4FIzi'] = False # (N/m); ; +Morison['M2N5FIzi'] = False # (N/m); ; +Morison['M2N6FIzi'] = False # (N/m); ; +Morison['M2N7FIzi'] = False # (N/m); ; +Morison['M2N8FIzi'] = False # (N/m); ; +Morison['M2N9FIzi'] = False # (N/m); ; +Morison['M3N1FIzi'] = False # (N/m); ; +Morison['M3N2FIzi'] = False # (N/m); ; +Morison['M3N3FIzi'] = False # (N/m); ; +Morison['M3N4FIzi'] = False # (N/m); ; +Morison['M3N5FIzi'] = False # (N/m); ; +Morison['M3N6FIzi'] = False # (N/m); ; +Morison['M3N7FIzi'] = False # (N/m); ; +Morison['M3N8FIzi'] = False # (N/m); ; +Morison['M3N9FIzi'] = False # (N/m); ; +Morison['M4N1FIzi'] = False # (N/m); ; +Morison['M4N2FIzi'] = False # (N/m); ; +Morison['M4N3FIzi'] = False # (N/m); ; +Morison['M4N4FIzi'] = False # (N/m); ; +Morison['M4N5FIzi'] = False # (N/m); ; +Morison['M4N6FIzi'] = False # (N/m); ; +Morison['M4N7FIzi'] = False # (N/m); ; +Morison['M4N8FIzi'] = False # (N/m); ; +Morison['M4N9FIzi'] = False # (N/m); ; +Morison['M5N1FIzi'] = False # (N/m); ; +Morison['M5N2FIzi'] = False # (N/m); ; +Morison['M5N3FIzi'] = False # (N/m); ; +Morison['M5N4FIzi'] = False # (N/m); ; +Morison['M5N5FIzi'] = False # (N/m); ; +Morison['M5N6FIzi'] = False # (N/m); ; +Morison['M5N7FIzi'] = False # (N/m); ; +Morison['M5N8FIzi'] = False # (N/m); ; +Morison['M5N9FIzi'] = False # (N/m); ; +Morison['M6N1FIzi'] = False # (N/m); ; +Morison['M6N2FIzi'] = False # (N/m); ; +Morison['M6N3FIzi'] = False # (N/m); ; +Morison['M6N4FIzi'] = False # (N/m); ; +Morison['M6N5FIzi'] = False # (N/m); ; +Morison['M6N6FIzi'] = False # (N/m); ; +Morison['M6N7FIzi'] = False # (N/m); ; +Morison['M6N8FIzi'] = False # (N/m); ; +Morison['M6N9FIzi'] = False # (N/m); ; +Morison['M7N1FIzi'] = False # (N/m); ; +Morison['M7N2FIzi'] = False # (N/m); ; +Morison['M7N3FIzi'] = False # (N/m); ; +Morison['M7N4FIzi'] = False # (N/m); ; +Morison['M7N5FIzi'] = False # (N/m); ; +Morison['M7N6FIzi'] = False # (N/m); ; +Morison['M7N7FIzi'] = False # (N/m); ; +Morison['M7N8FIzi'] = False # (N/m); ; +Morison['M7N9FIzi'] = False # (N/m); ; +Morison['M8N1FIzi'] = False # (N/m); ; +Morison['M8N2FIzi'] = False # (N/m); ; +Morison['M8N3FIzi'] = False # (N/m); ; +Morison['M8N4FIzi'] = False # (N/m); ; +Morison['M8N5FIzi'] = False # (N/m); ; +Morison['M8N6FIzi'] = False # (N/m); ; +Morison['M8N7FIzi'] = False # (N/m); ; +Morison['M8N8FIzi'] = False # (N/m); ; +Morison['M8N9FIzi'] = False # (N/m); ; +Morison['M9N1FIzi'] = False # (N/m); ; +Morison['M9N2FIzi'] = False # (N/m); ; +Morison['M9N3FIzi'] = False # (N/m); ; +Morison['M9N4FIzi'] = False # (N/m); ; +Morison['M9N5FIzi'] = False # (N/m); ; +Morison['M9N6FIzi'] = False # (N/m); ; +Morison['M9N7FIzi'] = False # (N/m); ; +Morison['M9N8FIzi'] = False # (N/m); ; +Morison['M9N9FIzi'] = False # (N/m); ; +Morison['M1N1FBxi'] = False # (N/m); x-component of the distributed bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FBxi'] = False # (N/m); ; +Morison['M1N3FBxi'] = False # (N/m); ; +Morison['M1N4FBxi'] = False # (N/m); ; +Morison['M1N5FBxi'] = False # (N/m); ; +Morison['M1N6FBxi'] = False # (N/m); ; +Morison['M1N7FBxi'] = False # (N/m); ; +Morison['M1N8FBxi'] = False # (N/m); ; +Morison['M1N9FBxi'] = False # (N/m); ; +Morison['M2N1FBxi'] = False # (N/m); ; +Morison['M2N2FBxi'] = False # (N/m); ; +Morison['M2N3FBxi'] = False # (N/m); ; +Morison['M2N4FBxi'] = False # (N/m); ; +Morison['M2N5FBxi'] = False # (N/m); ; +Morison['M2N6FBxi'] = False # (N/m); ; +Morison['M2N7FBxi'] = False # (N/m); ; +Morison['M2N8FBxi'] = False # (N/m); ; +Morison['M2N9FBxi'] = False # (N/m); ; +Morison['M3N1FBxi'] = False # (N/m); ; +Morison['M3N2FBxi'] = False # (N/m); ; +Morison['M3N3FBxi'] = False # (N/m); ; +Morison['M3N4FBxi'] = False # (N/m); ; +Morison['M3N5FBxi'] = False # (N/m); ; +Morison['M3N6FBxi'] = False # (N/m); ; +Morison['M3N7FBxi'] = False # (N/m); ; +Morison['M3N8FBxi'] = False # (N/m); ; +Morison['M3N9FBxi'] = False # (N/m); ; +Morison['M4N1FBxi'] = False # (N/m); ; +Morison['M4N2FBxi'] = False # (N/m); ; +Morison['M4N3FBxi'] = False # (N/m); ; +Morison['M4N4FBxi'] = False # (N/m); ; +Morison['M4N5FBxi'] = False # (N/m); ; +Morison['M4N6FBxi'] = False # (N/m); ; +Morison['M4N7FBxi'] = False # (N/m); ; +Morison['M4N8FBxi'] = False # (N/m); ; +Morison['M4N9FBxi'] = False # (N/m); ; +Morison['M5N1FBxi'] = False # (N/m); ; +Morison['M5N2FBxi'] = False # (N/m); ; +Morison['M5N3FBxi'] = False # (N/m); ; +Morison['M5N4FBxi'] = False # (N/m); ; +Morison['M5N5FBxi'] = False # (N/m); ; +Morison['M5N6FBxi'] = False # (N/m); ; +Morison['M5N7FBxi'] = False # (N/m); ; +Morison['M5N8FBxi'] = False # (N/m); ; +Morison['M5N9FBxi'] = False # (N/m); ; +Morison['M6N1FBxi'] = False # (N/m); ; +Morison['M6N2FBxi'] = False # (N/m); ; +Morison['M6N3FBxi'] = False # (N/m); ; +Morison['M6N4FBxi'] = False # (N/m); ; +Morison['M6N5FBxi'] = False # (N/m); ; +Morison['M6N6FBxi'] = False # (N/m); ; +Morison['M6N7FBxi'] = False # (N/m); ; +Morison['M6N8FBxi'] = False # (N/m); ; +Morison['M6N9FBxi'] = False # (N/m); ; +Morison['M7N1FBxi'] = False # (N/m); ; +Morison['M7N2FBxi'] = False # (N/m); ; +Morison['M7N3FBxi'] = False # (N/m); ; +Morison['M7N4FBxi'] = False # (N/m); ; +Morison['M7N5FBxi'] = False # (N/m); ; +Morison['M7N6FBxi'] = False # (N/m); ; +Morison['M7N7FBxi'] = False # (N/m); ; +Morison['M7N8FBxi'] = False # (N/m); ; +Morison['M7N9FBxi'] = False # (N/m); ; +Morison['M8N1FBxi'] = False # (N/m); ; +Morison['M8N2FBxi'] = False # (N/m); ; +Morison['M8N3FBxi'] = False # (N/m); ; +Morison['M8N4FBxi'] = False # (N/m); ; +Morison['M8N5FBxi'] = False # (N/m); ; +Morison['M8N6FBxi'] = False # (N/m); ; +Morison['M8N7FBxi'] = False # (N/m); ; +Morison['M8N8FBxi'] = False # (N/m); ; +Morison['M8N9FBxi'] = False # (N/m); ; +Morison['M9N1FBxi'] = False # (N/m); ; +Morison['M9N2FBxi'] = False # (N/m); ; +Morison['M9N3FBxi'] = False # (N/m); ; +Morison['M9N4FBxi'] = False # (N/m); ; +Morison['M9N5FBxi'] = False # (N/m); ; +Morison['M9N6FBxi'] = False # (N/m); ; +Morison['M9N7FBxi'] = False # (N/m); ; +Morison['M9N8FBxi'] = False # (N/m); ; +Morison['M9N9FBxi'] = False # (N/m); ; +Morison['M1N1FByi'] = False # (N/m); y-component of the distributed bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FByi'] = False # (N/m); ; +Morison['M1N3FByi'] = False # (N/m); ; +Morison['M1N4FByi'] = False # (N/m); ; +Morison['M1N5FByi'] = False # (N/m); ; +Morison['M1N6FByi'] = False # (N/m); ; +Morison['M1N7FByi'] = False # (N/m); ; +Morison['M1N8FByi'] = False # (N/m); ; +Morison['M1N9FByi'] = False # (N/m); ; +Morison['M2N1FByi'] = False # (N/m); ; +Morison['M2N2FByi'] = False # (N/m); ; +Morison['M2N3FByi'] = False # (N/m); ; +Morison['M2N4FByi'] = False # (N/m); ; +Morison['M2N5FByi'] = False # (N/m); ; +Morison['M2N6FByi'] = False # (N/m); ; +Morison['M2N7FByi'] = False # (N/m); ; +Morison['M2N8FByi'] = False # (N/m); ; +Morison['M2N9FByi'] = False # (N/m); ; +Morison['M3N1FByi'] = False # (N/m); ; +Morison['M3N2FByi'] = False # (N/m); ; +Morison['M3N3FByi'] = False # (N/m); ; +Morison['M3N4FByi'] = False # (N/m); ; +Morison['M3N5FByi'] = False # (N/m); ; +Morison['M3N6FByi'] = False # (N/m); ; +Morison['M3N7FByi'] = False # (N/m); ; +Morison['M3N8FByi'] = False # (N/m); ; +Morison['M3N9FByi'] = False # (N/m); ; +Morison['M4N1FByi'] = False # (N/m); ; +Morison['M4N2FByi'] = False # (N/m); ; +Morison['M4N3FByi'] = False # (N/m); ; +Morison['M4N4FByi'] = False # (N/m); ; +Morison['M4N5FByi'] = False # (N/m); ; +Morison['M4N6FByi'] = False # (N/m); ; +Morison['M4N7FByi'] = False # (N/m); ; +Morison['M4N8FByi'] = False # (N/m); ; +Morison['M4N9FByi'] = False # (N/m); ; +Morison['M5N1FByi'] = False # (N/m); ; +Morison['M5N2FByi'] = False # (N/m); ; +Morison['M5N3FByi'] = False # (N/m); ; +Morison['M5N4FByi'] = False # (N/m); ; +Morison['M5N5FByi'] = False # (N/m); ; +Morison['M5N6FByi'] = False # (N/m); ; +Morison['M5N7FByi'] = False # (N/m); ; +Morison['M5N8FByi'] = False # (N/m); ; +Morison['M5N9FByi'] = False # (N/m); ; +Morison['M6N1FByi'] = False # (N/m); ; +Morison['M6N2FByi'] = False # (N/m); ; +Morison['M6N3FByi'] = False # (N/m); ; +Morison['M6N4FByi'] = False # (N/m); ; +Morison['M6N5FByi'] = False # (N/m); ; +Morison['M6N6FByi'] = False # (N/m); ; +Morison['M6N7FByi'] = False # (N/m); ; +Morison['M6N8FByi'] = False # (N/m); ; +Morison['M6N9FByi'] = False # (N/m); ; +Morison['M7N1FByi'] = False # (N/m); ; +Morison['M7N2FByi'] = False # (N/m); ; +Morison['M7N3FByi'] = False # (N/m); ; +Morison['M7N4FByi'] = False # (N/m); ; +Morison['M7N5FByi'] = False # (N/m); ; +Morison['M7N6FByi'] = False # (N/m); ; +Morison['M7N7FByi'] = False # (N/m); ; +Morison['M7N8FByi'] = False # (N/m); ; +Morison['M7N9FByi'] = False # (N/m); ; +Morison['M8N1FByi'] = False # (N/m); ; +Morison['M8N2FByi'] = False # (N/m); ; +Morison['M8N3FByi'] = False # (N/m); ; +Morison['M8N4FByi'] = False # (N/m); ; +Morison['M8N5FByi'] = False # (N/m); ; +Morison['M8N6FByi'] = False # (N/m); ; +Morison['M8N7FByi'] = False # (N/m); ; +Morison['M8N8FByi'] = False # (N/m); ; +Morison['M8N9FByi'] = False # (N/m); ; +Morison['M9N1FByi'] = False # (N/m); ; +Morison['M9N2FByi'] = False # (N/m); ; +Morison['M9N3FByi'] = False # (N/m); ; +Morison['M9N4FByi'] = False # (N/m); ; +Morison['M9N5FByi'] = False # (N/m); ; +Morison['M9N6FByi'] = False # (N/m); ; +Morison['M9N7FByi'] = False # (N/m); ; +Morison['M9N8FByi'] = False # (N/m); ; +Morison['M9N9FByi'] = False # (N/m); ; +Morison['M1N1FBzi'] = False # (N/m); z-component of the distributed bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FBzi'] = False # (N/m); ; +Morison['M1N3FBzi'] = False # (N/m); ; +Morison['M1N4FBzi'] = False # (N/m); ; +Morison['M1N5FBzi'] = False # (N/m); ; +Morison['M1N6FBzi'] = False # (N/m); ; +Morison['M1N7FBzi'] = False # (N/m); ; +Morison['M1N8FBzi'] = False # (N/m); ; +Morison['M1N9FBzi'] = False # (N/m); ; +Morison['M2N1FBzi'] = False # (N/m); ; +Morison['M2N2FBzi'] = False # (N/m); ; +Morison['M2N3FBzi'] = False # (N/m); ; +Morison['M2N4FBzi'] = False # (N/m); ; +Morison['M2N5FBzi'] = False # (N/m); ; +Morison['M2N6FBzi'] = False # (N/m); ; +Morison['M2N7FBzi'] = False # (N/m); ; +Morison['M2N8FBzi'] = False # (N/m); ; +Morison['M2N9FBzi'] = False # (N/m); ; +Morison['M3N1FBzi'] = False # (N/m); ; +Morison['M3N2FBzi'] = False # (N/m); ; +Morison['M3N3FBzi'] = False # (N/m); ; +Morison['M3N4FBzi'] = False # (N/m); ; +Morison['M3N5FBzi'] = False # (N/m); ; +Morison['M3N6FBzi'] = False # (N/m); ; +Morison['M3N7FBzi'] = False # (N/m); ; +Morison['M3N8FBzi'] = False # (N/m); ; +Morison['M3N9FBzi'] = False # (N/m); ; +Morison['M4N1FBzi'] = False # (N/m); ; +Morison['M4N2FBzi'] = False # (N/m); ; +Morison['M4N3FBzi'] = False # (N/m); ; +Morison['M4N4FBzi'] = False # (N/m); ; +Morison['M4N5FBzi'] = False # (N/m); ; +Morison['M4N6FBzi'] = False # (N/m); ; +Morison['M4N7FBzi'] = False # (N/m); ; +Morison['M4N8FBzi'] = False # (N/m); ; +Morison['M4N9FBzi'] = False # (N/m); ; +Morison['M5N1FBzi'] = False # (N/m); ; +Morison['M5N2FBzi'] = False # (N/m); ; +Morison['M5N3FBzi'] = False # (N/m); ; +Morison['M5N4FBzi'] = False # (N/m); ; +Morison['M5N5FBzi'] = False # (N/m); ; +Morison['M5N6FBzi'] = False # (N/m); ; +Morison['M5N7FBzi'] = False # (N/m); ; +Morison['M5N8FBzi'] = False # (N/m); ; +Morison['M5N9FBzi'] = False # (N/m); ; +Morison['M6N1FBzi'] = False # (N/m); ; +Morison['M6N2FBzi'] = False # (N/m); ; +Morison['M6N3FBzi'] = False # (N/m); ; +Morison['M6N4FBzi'] = False # (N/m); ; +Morison['M6N5FBzi'] = False # (N/m); ; +Morison['M6N6FBzi'] = False # (N/m); ; +Morison['M6N7FBzi'] = False # (N/m); ; +Morison['M6N8FBzi'] = False # (N/m); ; +Morison['M6N9FBzi'] = False # (N/m); ; +Morison['M7N1FBzi'] = False # (N/m); ; +Morison['M7N2FBzi'] = False # (N/m); ; +Morison['M7N3FBzi'] = False # (N/m); ; +Morison['M7N4FBzi'] = False # (N/m); ; +Morison['M7N5FBzi'] = False # (N/m); ; +Morison['M7N6FBzi'] = False # (N/m); ; +Morison['M7N7FBzi'] = False # (N/m); ; +Morison['M7N8FBzi'] = False # (N/m); ; +Morison['M7N9FBzi'] = False # (N/m); ; +Morison['M8N1FBzi'] = False # (N/m); ; +Morison['M8N2FBzi'] = False # (N/m); ; +Morison['M8N3FBzi'] = False # (N/m); ; +Morison['M8N4FBzi'] = False # (N/m); ; +Morison['M8N5FBzi'] = False # (N/m); ; +Morison['M8N6FBzi'] = False # (N/m); ; +Morison['M8N7FBzi'] = False # (N/m); ; +Morison['M8N8FBzi'] = False # (N/m); ; +Morison['M8N9FBzi'] = False # (N/m); ; +Morison['M9N1FBzi'] = False # (N/m); ; +Morison['M9N2FBzi'] = False # (N/m); ; +Morison['M9N3FBzi'] = False # (N/m); ; +Morison['M9N4FBzi'] = False # (N/m); ; +Morison['M9N5FBzi'] = False # (N/m); ; +Morison['M9N6FBzi'] = False # (N/m); ; +Morison['M9N7FBzi'] = False # (N/m); ; +Morison['M9N8FBzi'] = False # (N/m); ; +Morison['M9N9FBzi'] = False # (N/m); ; +Morison['M1N1MBxi'] = False # (N-m/m); x-component of the distributed bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MBxi'] = False # (N-m/m); ; +Morison['M1N3MBxi'] = False # (N-m/m); ; +Morison['M1N4MBxi'] = False # (N-m/m); ; +Morison['M1N5MBxi'] = False # (N-m/m); ; +Morison['M1N6MBxi'] = False # (N-m/m); ; +Morison['M1N7MBxi'] = False # (N-m/m); ; +Morison['M1N8MBxi'] = False # (N-m/m); ; +Morison['M1N9MBxi'] = False # (N-m/m); ; +Morison['M2N1MBxi'] = False # (N-m/m); ; +Morison['M2N2MBxi'] = False # (N-m/m); ; +Morison['M2N3MBxi'] = False # (N-m/m); ; +Morison['M2N4MBxi'] = False # (N-m/m); ; +Morison['M2N5MBxi'] = False # (N-m/m); ; +Morison['M2N6MBxi'] = False # (N-m/m); ; +Morison['M2N7MBxi'] = False # (N-m/m); ; +Morison['M2N8MBxi'] = False # (N-m/m); ; +Morison['M2N9MBxi'] = False # (N-m/m); ; +Morison['M3N1MBxi'] = False # (N-m/m); ; +Morison['M3N2MBxi'] = False # (N-m/m); ; +Morison['M3N3MBxi'] = False # (N-m/m); ; +Morison['M3N4MBxi'] = False # (N-m/m); ; +Morison['M3N5MBxi'] = False # (N-m/m); ; +Morison['M3N6MBxi'] = False # (N-m/m); ; +Morison['M3N7MBxi'] = False # (N-m/m); ; +Morison['M3N8MBxi'] = False # (N-m/m); ; +Morison['M3N9MBxi'] = False # (N-m/m); ; +Morison['M4N1MBxi'] = False # (N-m/m); ; +Morison['M4N2MBxi'] = False # (N-m/m); ; +Morison['M4N3MBxi'] = False # (N-m/m); ; +Morison['M4N4MBxi'] = False # (N-m/m); ; +Morison['M4N5MBxi'] = False # (N-m/m); ; +Morison['M4N6MBxi'] = False # (N-m/m); ; +Morison['M4N7MBxi'] = False # (N-m/m); ; +Morison['M4N8MBxi'] = False # (N-m/m); ; +Morison['M4N9MBxi'] = False # (N-m/m); ; +Morison['M5N1MBxi'] = False # (N-m/m); ; +Morison['M5N2MBxi'] = False # (N-m/m); ; +Morison['M5N3MBxi'] = False # (N-m/m); ; +Morison['M5N4MBxi'] = False # (N-m/m); ; +Morison['M5N5MBxi'] = False # (N-m/m); ; +Morison['M5N6MBxi'] = False # (N-m/m); ; +Morison['M5N7MBxi'] = False # (N-m/m); ; +Morison['M5N8MBxi'] = False # (N-m/m); ; +Morison['M5N9MBxi'] = False # (N-m/m); ; +Morison['M6N1MBxi'] = False # (N-m/m); ; +Morison['M6N2MBxi'] = False # (N-m/m); ; +Morison['M6N3MBxi'] = False # (N-m/m); ; +Morison['M6N4MBxi'] = False # (N-m/m); ; +Morison['M6N5MBxi'] = False # (N-m/m); ; +Morison['M6N6MBxi'] = False # (N-m/m); ; +Morison['M6N7MBxi'] = False # (N-m/m); ; +Morison['M6N8MBxi'] = False # (N-m/m); ; +Morison['M6N9MBxi'] = False # (N-m/m); ; +Morison['M7N1MBxi'] = False # (N-m/m); ; +Morison['M7N2MBxi'] = False # (N-m/m); ; +Morison['M7N3MBxi'] = False # (N-m/m); ; +Morison['M7N4MBxi'] = False # (N-m/m); ; +Morison['M7N5MBxi'] = False # (N-m/m); ; +Morison['M7N6MBxi'] = False # (N-m/m); ; +Morison['M7N7MBxi'] = False # (N-m/m); ; +Morison['M7N8MBxi'] = False # (N-m/m); ; +Morison['M7N9MBxi'] = False # (N-m/m); ; +Morison['M8N1MBxi'] = False # (N-m/m); ; +Morison['M8N2MBxi'] = False # (N-m/m); ; +Morison['M8N3MBxi'] = False # (N-m/m); ; +Morison['M8N4MBxi'] = False # (N-m/m); ; +Morison['M8N5MBxi'] = False # (N-m/m); ; +Morison['M8N6MBxi'] = False # (N-m/m); ; +Morison['M8N7MBxi'] = False # (N-m/m); ; +Morison['M8N8MBxi'] = False # (N-m/m); ; +Morison['M8N9MBxi'] = False # (N-m/m); ; +Morison['M9N1MBxi'] = False # (N-m/m); ; +Morison['M9N2MBxi'] = False # (N-m/m); ; +Morison['M9N3MBxi'] = False # (N-m/m); ; +Morison['M9N4MBxi'] = False # (N-m/m); ; +Morison['M9N5MBxi'] = False # (N-m/m); ; +Morison['M9N6MBxi'] = False # (N-m/m); ; +Morison['M9N7MBxi'] = False # (N-m/m); ; +Morison['M9N8MBxi'] = False # (N-m/m); ; +Morison['M9N9MBxi'] = False # (N-m/m); ; +Morison['M1N1MByi'] = False # (N-m/m); y-component of the distributed bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MByi'] = False # (N-m/m); ; +Morison['M1N3MByi'] = False # (N-m/m); ; +Morison['M1N4MByi'] = False # (N-m/m); ; +Morison['M1N5MByi'] = False # (N-m/m); ; +Morison['M1N6MByi'] = False # (N-m/m); ; +Morison['M1N7MByi'] = False # (N-m/m); ; +Morison['M1N8MByi'] = False # (N-m/m); ; +Morison['M1N9MByi'] = False # (N-m/m); ; +Morison['M2N1MByi'] = False # (N-m/m); ; +Morison['M2N2MByi'] = False # (N-m/m); ; +Morison['M2N3MByi'] = False # (N-m/m); ; +Morison['M2N4MByi'] = False # (N-m/m); ; +Morison['M2N5MByi'] = False # (N-m/m); ; +Morison['M2N6MByi'] = False # (N-m/m); ; +Morison['M2N7MByi'] = False # (N-m/m); ; +Morison['M2N8MByi'] = False # (N-m/m); ; +Morison['M2N9MByi'] = False # (N-m/m); ; +Morison['M3N1MByi'] = False # (N-m/m); ; +Morison['M3N2MByi'] = False # (N-m/m); ; +Morison['M3N3MByi'] = False # (N-m/m); ; +Morison['M3N4MByi'] = False # (N-m/m); ; +Morison['M3N5MByi'] = False # (N-m/m); ; +Morison['M3N6MByi'] = False # (N-m/m); ; +Morison['M3N7MByi'] = False # (N-m/m); ; +Morison['M3N8MByi'] = False # (N-m/m); ; +Morison['M3N9MByi'] = False # (N-m/m); ; +Morison['M4N1MByi'] = False # (N-m/m); ; +Morison['M4N2MByi'] = False # (N-m/m); ; +Morison['M4N3MByi'] = False # (N-m/m); ; +Morison['M4N4MByi'] = False # (N-m/m); ; +Morison['M4N5MByi'] = False # (N-m/m); ; +Morison['M4N6MByi'] = False # (N-m/m); ; +Morison['M4N7MByi'] = False # (N-m/m); ; +Morison['M4N8MByi'] = False # (N-m/m); ; +Morison['M4N9MByi'] = False # (N-m/m); ; +Morison['M5N1MByi'] = False # (N-m/m); ; +Morison['M5N2MByi'] = False # (N-m/m); ; +Morison['M5N3MByi'] = False # (N-m/m); ; +Morison['M5N4MByi'] = False # (N-m/m); ; +Morison['M5N5MByi'] = False # (N-m/m); ; +Morison['M5N6MByi'] = False # (N-m/m); ; +Morison['M5N7MByi'] = False # (N-m/m); ; +Morison['M5N8MByi'] = False # (N-m/m); ; +Morison['M5N9MByi'] = False # (N-m/m); ; +Morison['M6N1MByi'] = False # (N-m/m); ; +Morison['M6N2MByi'] = False # (N-m/m); ; +Morison['M6N3MByi'] = False # (N-m/m); ; +Morison['M6N4MByi'] = False # (N-m/m); ; +Morison['M6N5MByi'] = False # (N-m/m); ; +Morison['M6N6MByi'] = False # (N-m/m); ; +Morison['M6N7MByi'] = False # (N-m/m); ; +Morison['M6N8MByi'] = False # (N-m/m); ; +Morison['M6N9MByi'] = False # (N-m/m); ; +Morison['M7N1MByi'] = False # (N-m/m); ; +Morison['M7N2MByi'] = False # (N-m/m); ; +Morison['M7N3MByi'] = False # (N-m/m); ; +Morison['M7N4MByi'] = False # (N-m/m); ; +Morison['M7N5MByi'] = False # (N-m/m); ; +Morison['M7N6MByi'] = False # (N-m/m); ; +Morison['M7N7MByi'] = False # (N-m/m); ; +Morison['M7N8MByi'] = False # (N-m/m); ; +Morison['M7N9MByi'] = False # (N-m/m); ; +Morison['M8N1MByi'] = False # (N-m/m); ; +Morison['M8N2MByi'] = False # (N-m/m); ; +Morison['M8N3MByi'] = False # (N-m/m); ; +Morison['M8N4MByi'] = False # (N-m/m); ; +Morison['M8N5MByi'] = False # (N-m/m); ; +Morison['M8N6MByi'] = False # (N-m/m); ; +Morison['M8N7MByi'] = False # (N-m/m); ; +Morison['M8N8MByi'] = False # (N-m/m); ; +Morison['M8N9MByi'] = False # (N-m/m); ; +Morison['M9N1MByi'] = False # (N-m/m); ; +Morison['M9N2MByi'] = False # (N-m/m); ; +Morison['M9N3MByi'] = False # (N-m/m); ; +Morison['M9N4MByi'] = False # (N-m/m); ; +Morison['M9N5MByi'] = False # (N-m/m); ; +Morison['M9N6MByi'] = False # (N-m/m); ; +Morison['M9N7MByi'] = False # (N-m/m); ; +Morison['M9N8MByi'] = False # (N-m/m); ; +Morison['M9N9MByi'] = False # (N-m/m); ; +Morison['M1N1MBzi'] = False # (N-m/m); z-component of the distributed bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MBzi'] = False # (N-m/m); ; +Morison['M1N3MBzi'] = False # (N-m/m); ; +Morison['M1N4MBzi'] = False # (N-m/m); ; +Morison['M1N5MBzi'] = False # (N-m/m); ; +Morison['M1N6MBzi'] = False # (N-m/m); ; +Morison['M1N7MBzi'] = False # (N-m/m); ; +Morison['M1N8MBzi'] = False # (N-m/m); ; +Morison['M1N9MBzi'] = False # (N-m/m); ; +Morison['M2N1MBzi'] = False # (N-m/m); ; +Morison['M2N2MBzi'] = False # (N-m/m); ; +Morison['M2N3MBzi'] = False # (N-m/m); ; +Morison['M2N4MBzi'] = False # (N-m/m); ; +Morison['M2N5MBzi'] = False # (N-m/m); ; +Morison['M2N6MBzi'] = False # (N-m/m); ; +Morison['M2N7MBzi'] = False # (N-m/m); ; +Morison['M2N8MBzi'] = False # (N-m/m); ; +Morison['M2N9MBzi'] = False # (N-m/m); ; +Morison['M3N1MBzi'] = False # (N-m/m); ; +Morison['M3N2MBzi'] = False # (N-m/m); ; +Morison['M3N3MBzi'] = False # (N-m/m); ; +Morison['M3N4MBzi'] = False # (N-m/m); ; +Morison['M3N5MBzi'] = False # (N-m/m); ; +Morison['M3N6MBzi'] = False # (N-m/m); ; +Morison['M3N7MBzi'] = False # (N-m/m); ; +Morison['M3N8MBzi'] = False # (N-m/m); ; +Morison['M3N9MBzi'] = False # (N-m/m); ; +Morison['M4N1MBzi'] = False # (N-m/m); ; +Morison['M4N2MBzi'] = False # (N-m/m); ; +Morison['M4N3MBzi'] = False # (N-m/m); ; +Morison['M4N4MBzi'] = False # (N-m/m); ; +Morison['M4N5MBzi'] = False # (N-m/m); ; +Morison['M4N6MBzi'] = False # (N-m/m); ; +Morison['M4N7MBzi'] = False # (N-m/m); ; +Morison['M4N8MBzi'] = False # (N-m/m); ; +Morison['M4N9MBzi'] = False # (N-m/m); ; +Morison['M5N1MBzi'] = False # (N-m/m); ; +Morison['M5N2MBzi'] = False # (N-m/m); ; +Morison['M5N3MBzi'] = False # (N-m/m); ; +Morison['M5N4MBzi'] = False # (N-m/m); ; +Morison['M5N5MBzi'] = False # (N-m/m); ; +Morison['M5N6MBzi'] = False # (N-m/m); ; +Morison['M5N7MBzi'] = False # (N-m/m); ; +Morison['M5N8MBzi'] = False # (N-m/m); ; +Morison['M5N9MBzi'] = False # (N-m/m); ; +Morison['M6N1MBzi'] = False # (N-m/m); ; +Morison['M6N2MBzi'] = False # (N-m/m); ; +Morison['M6N3MBzi'] = False # (N-m/m); ; +Morison['M6N4MBzi'] = False # (N-m/m); ; +Morison['M6N5MBzi'] = False # (N-m/m); ; +Morison['M6N6MBzi'] = False # (N-m/m); ; +Morison['M6N7MBzi'] = False # (N-m/m); ; +Morison['M6N8MBzi'] = False # (N-m/m); ; +Morison['M6N9MBzi'] = False # (N-m/m); ; +Morison['M7N1MBzi'] = False # (N-m/m); ; +Morison['M7N2MBzi'] = False # (N-m/m); ; +Morison['M7N3MBzi'] = False # (N-m/m); ; +Morison['M7N4MBzi'] = False # (N-m/m); ; +Morison['M7N5MBzi'] = False # (N-m/m); ; +Morison['M7N6MBzi'] = False # (N-m/m); ; +Morison['M7N7MBzi'] = False # (N-m/m); ; +Morison['M7N8MBzi'] = False # (N-m/m); ; +Morison['M7N9MBzi'] = False # (N-m/m); ; +Morison['M8N1MBzi'] = False # (N-m/m); ; +Morison['M8N2MBzi'] = False # (N-m/m); ; +Morison['M8N3MBzi'] = False # (N-m/m); ; +Morison['M8N4MBzi'] = False # (N-m/m); ; +Morison['M8N5MBzi'] = False # (N-m/m); ; +Morison['M8N6MBzi'] = False # (N-m/m); ; +Morison['M8N7MBzi'] = False # (N-m/m); ; +Morison['M8N8MBzi'] = False # (N-m/m); ; +Morison['M8N9MBzi'] = False # (N-m/m); ; +Morison['M9N1MBzi'] = False # (N-m/m); ; +Morison['M9N2MBzi'] = False # (N-m/m); ; +Morison['M9N3MBzi'] = False # (N-m/m); ; +Morison['M9N4MBzi'] = False # (N-m/m); ; +Morison['M9N5MBzi'] = False # (N-m/m); ; +Morison['M9N6MBzi'] = False # (N-m/m); ; +Morison['M9N7MBzi'] = False # (N-m/m); ; +Morison['M9N8MBzi'] = False # (N-m/m); ; +Morison['M9N9MBzi'] = False # (N-m/m); ; +Morison['M1N1FBFxi'] = False # (N/m); x-component of the distributed filled fluid bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FBFxi'] = False # (N/m); ; +Morison['M1N3FBFxi'] = False # (N/m); ; +Morison['M1N4FBFxi'] = False # (N/m); ; +Morison['M1N5FBFxi'] = False # (N/m); ; +Morison['M1N6FBFxi'] = False # (N/m); ; +Morison['M1N7FBFxi'] = False # (N/m); ; +Morison['M1N8FBFxi'] = False # (N/m); ; +Morison['M1N9FBFxi'] = False # (N/m); ; +Morison['M2N1FBFxi'] = False # (N/m); ; +Morison['M2N2FBFxi'] = False # (N/m); ; +Morison['M2N3FBFxi'] = False # (N/m); ; +Morison['M2N4FBFxi'] = False # (N/m); ; +Morison['M2N5FBFxi'] = False # (N/m); ; +Morison['M2N6FBFxi'] = False # (N/m); ; +Morison['M2N7FBFxi'] = False # (N/m); ; +Morison['M2N8FBFxi'] = False # (N/m); ; +Morison['M2N9FBFxi'] = False # (N/m); ; +Morison['M3N1FBFxi'] = False # (N/m); ; +Morison['M3N2FBFxi'] = False # (N/m); ; +Morison['M3N3FBFxi'] = False # (N/m); ; +Morison['M3N4FBFxi'] = False # (N/m); ; +Morison['M3N5FBFxi'] = False # (N/m); ; +Morison['M3N6FBFxi'] = False # (N/m); ; +Morison['M3N7FBFxi'] = False # (N/m); ; +Morison['M3N8FBFxi'] = False # (N/m); ; +Morison['M3N9FBFxi'] = False # (N/m); ; +Morison['M4N1FBFxi'] = False # (N/m); ; +Morison['M4N2FBFxi'] = False # (N/m); ; +Morison['M4N3FBFxi'] = False # (N/m); ; +Morison['M4N4FBFxi'] = False # (N/m); ; +Morison['M4N5FBFxi'] = False # (N/m); ; +Morison['M4N6FBFxi'] = False # (N/m); ; +Morison['M4N7FBFxi'] = False # (N/m); ; +Morison['M4N8FBFxi'] = False # (N/m); ; +Morison['M4N9FBFxi'] = False # (N/m); ; +Morison['M5N1FBFxi'] = False # (N/m); ; +Morison['M5N2FBFxi'] = False # (N/m); ; +Morison['M5N3FBFxi'] = False # (N/m); ; +Morison['M5N4FBFxi'] = False # (N/m); ; +Morison['M5N5FBFxi'] = False # (N/m); ; +Morison['M5N6FBFxi'] = False # (N/m); ; +Morison['M5N7FBFxi'] = False # (N/m); ; +Morison['M5N8FBFxi'] = False # (N/m); ; +Morison['M5N9FBFxi'] = False # (N/m); ; +Morison['M6N1FBFxi'] = False # (N/m); ; +Morison['M6N2FBFxi'] = False # (N/m); ; +Morison['M6N3FBFxi'] = False # (N/m); ; +Morison['M6N4FBFxi'] = False # (N/m); ; +Morison['M6N5FBFxi'] = False # (N/m); ; +Morison['M6N6FBFxi'] = False # (N/m); ; +Morison['M6N7FBFxi'] = False # (N/m); ; +Morison['M6N8FBFxi'] = False # (N/m); ; +Morison['M6N9FBFxi'] = False # (N/m); ; +Morison['M7N1FBFxi'] = False # (N/m); ; +Morison['M7N2FBFxi'] = False # (N/m); ; +Morison['M7N3FBFxi'] = False # (N/m); ; +Morison['M7N4FBFxi'] = False # (N/m); ; +Morison['M7N5FBFxi'] = False # (N/m); ; +Morison['M7N6FBFxi'] = False # (N/m); ; +Morison['M7N7FBFxi'] = False # (N/m); ; +Morison['M7N8FBFxi'] = False # (N/m); ; +Morison['M7N9FBFxi'] = False # (N/m); ; +Morison['M8N1FBFxi'] = False # (N/m); ; +Morison['M8N2FBFxi'] = False # (N/m); ; +Morison['M8N3FBFxi'] = False # (N/m); ; +Morison['M8N4FBFxi'] = False # (N/m); ; +Morison['M8N5FBFxi'] = False # (N/m); ; +Morison['M8N6FBFxi'] = False # (N/m); ; +Morison['M8N7FBFxi'] = False # (N/m); ; +Morison['M8N8FBFxi'] = False # (N/m); ; +Morison['M8N9FBFxi'] = False # (N/m); ; +Morison['M9N1FBFxi'] = False # (N/m); ; +Morison['M9N2FBFxi'] = False # (N/m); ; +Morison['M9N3FBFxi'] = False # (N/m); ; +Morison['M9N4FBFxi'] = False # (N/m); ; +Morison['M9N5FBFxi'] = False # (N/m); ; +Morison['M9N6FBFxi'] = False # (N/m); ; +Morison['M9N7FBFxi'] = False # (N/m); ; +Morison['M9N8FBFxi'] = False # (N/m); ; +Morison['M9N9FBFxi'] = False # (N/m); ; +Morison['M1N1FBFyi'] = False # (N/m); y-component of the distributed filled fluid bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FBFyi'] = False # (N/m); ; +Morison['M1N3FBFyi'] = False # (N/m); ; +Morison['M1N4FBFyi'] = False # (N/m); ; +Morison['M1N5FBFyi'] = False # (N/m); ; +Morison['M1N6FBFyi'] = False # (N/m); ; +Morison['M1N7FBFyi'] = False # (N/m); ; +Morison['M1N8FBFyi'] = False # (N/m); ; +Morison['M1N9FBFyi'] = False # (N/m); ; +Morison['M2N1FBFyi'] = False # (N/m); ; +Morison['M2N2FBFyi'] = False # (N/m); ; +Morison['M2N3FBFyi'] = False # (N/m); ; +Morison['M2N4FBFyi'] = False # (N/m); ; +Morison['M2N5FBFyi'] = False # (N/m); ; +Morison['M2N6FBFyi'] = False # (N/m); ; +Morison['M2N7FBFyi'] = False # (N/m); ; +Morison['M2N8FBFyi'] = False # (N/m); ; +Morison['M2N9FBFyi'] = False # (N/m); ; +Morison['M3N1FBFyi'] = False # (N/m); ; +Morison['M3N2FBFyi'] = False # (N/m); ; +Morison['M3N3FBFyi'] = False # (N/m); ; +Morison['M3N4FBFyi'] = False # (N/m); ; +Morison['M3N5FBFyi'] = False # (N/m); ; +Morison['M3N6FBFyi'] = False # (N/m); ; +Morison['M3N7FBFyi'] = False # (N/m); ; +Morison['M3N8FBFyi'] = False # (N/m); ; +Morison['M3N9FBFyi'] = False # (N/m); ; +Morison['M4N1FBFyi'] = False # (N/m); ; +Morison['M4N2FBFyi'] = False # (N/m); ; +Morison['M4N3FBFyi'] = False # (N/m); ; +Morison['M4N4FBFyi'] = False # (N/m); ; +Morison['M4N5FBFyi'] = False # (N/m); ; +Morison['M4N6FBFyi'] = False # (N/m); ; +Morison['M4N7FBFyi'] = False # (N/m); ; +Morison['M4N8FBFyi'] = False # (N/m); ; +Morison['M4N9FBFyi'] = False # (N/m); ; +Morison['M5N1FBFyi'] = False # (N/m); ; +Morison['M5N2FBFyi'] = False # (N/m); ; +Morison['M5N3FBFyi'] = False # (N/m); ; +Morison['M5N4FBFyi'] = False # (N/m); ; +Morison['M5N5FBFyi'] = False # (N/m); ; +Morison['M5N6FBFyi'] = False # (N/m); ; +Morison['M5N7FBFyi'] = False # (N/m); ; +Morison['M5N8FBFyi'] = False # (N/m); ; +Morison['M5N9FBFyi'] = False # (N/m); ; +Morison['M6N1FBFyi'] = False # (N/m); ; +Morison['M6N2FBFyi'] = False # (N/m); ; +Morison['M6N3FBFyi'] = False # (N/m); ; +Morison['M6N4FBFyi'] = False # (N/m); ; +Morison['M6N5FBFyi'] = False # (N/m); ; +Morison['M6N6FBFyi'] = False # (N/m); ; +Morison['M6N7FBFyi'] = False # (N/m); ; +Morison['M6N8FBFyi'] = False # (N/m); ; +Morison['M6N9FBFyi'] = False # (N/m); ; +Morison['M7N1FBFyi'] = False # (N/m); ; +Morison['M7N2FBFyi'] = False # (N/m); ; +Morison['M7N3FBFyi'] = False # (N/m); ; +Morison['M7N4FBFyi'] = False # (N/m); ; +Morison['M7N5FBFyi'] = False # (N/m); ; +Morison['M7N6FBFyi'] = False # (N/m); ; +Morison['M7N7FBFyi'] = False # (N/m); ; +Morison['M7N8FBFyi'] = False # (N/m); ; +Morison['M7N9FBFyi'] = False # (N/m); ; +Morison['M8N1FBFyi'] = False # (N/m); ; +Morison['M8N2FBFyi'] = False # (N/m); ; +Morison['M8N3FBFyi'] = False # (N/m); ; +Morison['M8N4FBFyi'] = False # (N/m); ; +Morison['M8N5FBFyi'] = False # (N/m); ; +Morison['M8N6FBFyi'] = False # (N/m); ; +Morison['M8N7FBFyi'] = False # (N/m); ; +Morison['M8N8FBFyi'] = False # (N/m); ; +Morison['M8N9FBFyi'] = False # (N/m); ; +Morison['M9N1FBFyi'] = False # (N/m); ; +Morison['M9N2FBFyi'] = False # (N/m); ; +Morison['M9N3FBFyi'] = False # (N/m); ; +Morison['M9N4FBFyi'] = False # (N/m); ; +Morison['M9N5FBFyi'] = False # (N/m); ; +Morison['M9N6FBFyi'] = False # (N/m); ; +Morison['M9N7FBFyi'] = False # (N/m); ; +Morison['M9N8FBFyi'] = False # (N/m); ; +Morison['M9N9FBFyi'] = False # (N/m); ; +Morison['M1N1FBFzi'] = False # (N/m); z-component of the distributed filled fluid bouyancy force expressed in the inertial coordinate system; +Morison['M1N2FBFzi'] = False # (N/m); ; +Morison['M1N3FBFzi'] = False # (N/m); ; +Morison['M1N4FBFzi'] = False # (N/m); ; +Morison['M1N5FBFzi'] = False # (N/m); ; +Morison['M1N6FBFzi'] = False # (N/m); ; +Morison['M1N7FBFzi'] = False # (N/m); ; +Morison['M1N8FBFzi'] = False # (N/m); ; +Morison['M1N9FBFzi'] = False # (N/m); ; +Morison['M2N1FBFzi'] = False # (N/m); ; +Morison['M2N2FBFzi'] = False # (N/m); ; +Morison['M2N3FBFzi'] = False # (N/m); ; +Morison['M2N4FBFzi'] = False # (N/m); ; +Morison['M2N5FBFzi'] = False # (N/m); ; +Morison['M2N6FBFzi'] = False # (N/m); ; +Morison['M2N7FBFzi'] = False # (N/m); ; +Morison['M2N8FBFzi'] = False # (N/m); ; +Morison['M2N9FBFzi'] = False # (N/m); ; +Morison['M3N1FBFzi'] = False # (N/m); ; +Morison['M3N2FBFzi'] = False # (N/m); ; +Morison['M3N3FBFzi'] = False # (N/m); ; +Morison['M3N4FBFzi'] = False # (N/m); ; +Morison['M3N5FBFzi'] = False # (N/m); ; +Morison['M3N6FBFzi'] = False # (N/m); ; +Morison['M3N7FBFzi'] = False # (N/m); ; +Morison['M3N8FBFzi'] = False # (N/m); ; +Morison['M3N9FBFzi'] = False # (N/m); ; +Morison['M4N1FBFzi'] = False # (N/m); ; +Morison['M4N2FBFzi'] = False # (N/m); ; +Morison['M4N3FBFzi'] = False # (N/m); ; +Morison['M4N4FBFzi'] = False # (N/m); ; +Morison['M4N5FBFzi'] = False # (N/m); ; +Morison['M4N6FBFzi'] = False # (N/m); ; +Morison['M4N7FBFzi'] = False # (N/m); ; +Morison['M4N8FBFzi'] = False # (N/m); ; +Morison['M4N9FBFzi'] = False # (N/m); ; +Morison['M5N1FBFzi'] = False # (N/m); ; +Morison['M5N2FBFzi'] = False # (N/m); ; +Morison['M5N3FBFzi'] = False # (N/m); ; +Morison['M5N4FBFzi'] = False # (N/m); ; +Morison['M5N5FBFzi'] = False # (N/m); ; +Morison['M5N6FBFzi'] = False # (N/m); ; +Morison['M5N7FBFzi'] = False # (N/m); ; +Morison['M5N8FBFzi'] = False # (N/m); ; +Morison['M5N9FBFzi'] = False # (N/m); ; +Morison['M6N1FBFzi'] = False # (N/m); ; +Morison['M6N2FBFzi'] = False # (N/m); ; +Morison['M6N3FBFzi'] = False # (N/m); ; +Morison['M6N4FBFzi'] = False # (N/m); ; +Morison['M6N5FBFzi'] = False # (N/m); ; +Morison['M6N6FBFzi'] = False # (N/m); ; +Morison['M6N7FBFzi'] = False # (N/m); ; +Morison['M6N8FBFzi'] = False # (N/m); ; +Morison['M6N9FBFzi'] = False # (N/m); ; +Morison['M7N1FBFzi'] = False # (N/m); ; +Morison['M7N2FBFzi'] = False # (N/m); ; +Morison['M7N3FBFzi'] = False # (N/m); ; +Morison['M7N4FBFzi'] = False # (N/m); ; +Morison['M7N5FBFzi'] = False # (N/m); ; +Morison['M7N6FBFzi'] = False # (N/m); ; +Morison['M7N7FBFzi'] = False # (N/m); ; +Morison['M7N8FBFzi'] = False # (N/m); ; +Morison['M7N9FBFzi'] = False # (N/m); ; +Morison['M8N1FBFzi'] = False # (N/m); ; +Morison['M8N2FBFzi'] = False # (N/m); ; +Morison['M8N3FBFzi'] = False # (N/m); ; +Morison['M8N4FBFzi'] = False # (N/m); ; +Morison['M8N5FBFzi'] = False # (N/m); ; +Morison['M8N6FBFzi'] = False # (N/m); ; +Morison['M8N7FBFzi'] = False # (N/m); ; +Morison['M8N8FBFzi'] = False # (N/m); ; +Morison['M8N9FBFzi'] = False # (N/m); ; +Morison['M9N1FBFzi'] = False # (N/m); ; +Morison['M9N2FBFzi'] = False # (N/m); ; +Morison['M9N3FBFzi'] = False # (N/m); ; +Morison['M9N4FBFzi'] = False # (N/m); ; +Morison['M9N5FBFzi'] = False # (N/m); ; +Morison['M9N6FBFzi'] = False # (N/m); ; +Morison['M9N7FBFzi'] = False # (N/m); ; +Morison['M9N8FBFzi'] = False # (N/m); ; +Morison['M9N9FBFzi'] = False # (N/m); ; +Morison['M1N1MBFxi'] = False # (N-m/m); x-component of the distributed filled fluid bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MBFxi'] = False # (N-m/m); ; +Morison['M1N3MBFxi'] = False # (N-m/m); ; +Morison['M1N4MBFxi'] = False # (N-m/m); ; +Morison['M1N5MBFxi'] = False # (N-m/m); ; +Morison['M1N6MBFxi'] = False # (N-m/m); ; +Morison['M1N7MBFxi'] = False # (N-m/m); ; +Morison['M1N8MBFxi'] = False # (N-m/m); ; +Morison['M1N9MBFxi'] = False # (N-m/m); ; +Morison['M2N1MBFxi'] = False # (N-m/m); ; +Morison['M2N2MBFxi'] = False # (N-m/m); ; +Morison['M2N3MBFxi'] = False # (N-m/m); ; +Morison['M2N4MBFxi'] = False # (N-m/m); ; +Morison['M2N5MBFxi'] = False # (N-m/m); ; +Morison['M2N6MBFxi'] = False # (N-m/m); ; +Morison['M2N7MBFxi'] = False # (N-m/m); ; +Morison['M2N8MBFxi'] = False # (N-m/m); ; +Morison['M2N9MBFxi'] = False # (N-m/m); ; +Morison['M3N1MBFxi'] = False # (N-m/m); ; +Morison['M3N2MBFxi'] = False # (N-m/m); ; +Morison['M3N3MBFxi'] = False # (N-m/m); ; +Morison['M3N4MBFxi'] = False # (N-m/m); ; +Morison['M3N5MBFxi'] = False # (N-m/m); ; +Morison['M3N6MBFxi'] = False # (N-m/m); ; +Morison['M3N7MBFxi'] = False # (N-m/m); ; +Morison['M3N8MBFxi'] = False # (N-m/m); ; +Morison['M3N9MBFxi'] = False # (N-m/m); ; +Morison['M4N1MBFxi'] = False # (N-m/m); ; +Morison['M4N2MBFxi'] = False # (N-m/m); ; +Morison['M4N3MBFxi'] = False # (N-m/m); ; +Morison['M4N4MBFxi'] = False # (N-m/m); ; +Morison['M4N5MBFxi'] = False # (N-m/m); ; +Morison['M4N6MBFxi'] = False # (N-m/m); ; +Morison['M4N7MBFxi'] = False # (N-m/m); ; +Morison['M4N8MBFxi'] = False # (N-m/m); ; +Morison['M4N9MBFxi'] = False # (N-m/m); ; +Morison['M5N1MBFxi'] = False # (N-m/m); ; +Morison['M5N2MBFxi'] = False # (N-m/m); ; +Morison['M5N3MBFxi'] = False # (N-m/m); ; +Morison['M5N4MBFxi'] = False # (N-m/m); ; +Morison['M5N5MBFxi'] = False # (N-m/m); ; +Morison['M5N6MBFxi'] = False # (N-m/m); ; +Morison['M5N7MBFxi'] = False # (N-m/m); ; +Morison['M5N8MBFxi'] = False # (N-m/m); ; +Morison['M5N9MBFxi'] = False # (N-m/m); ; +Morison['M6N1MBFxi'] = False # (N-m/m); ; +Morison['M6N2MBFxi'] = False # (N-m/m); ; +Morison['M6N3MBFxi'] = False # (N-m/m); ; +Morison['M6N4MBFxi'] = False # (N-m/m); ; +Morison['M6N5MBFxi'] = False # (N-m/m); ; +Morison['M6N6MBFxi'] = False # (N-m/m); ; +Morison['M6N7MBFxi'] = False # (N-m/m); ; +Morison['M6N8MBFxi'] = False # (N-m/m); ; +Morison['M6N9MBFxi'] = False # (N-m/m); ; +Morison['M7N1MBFxi'] = False # (N-m/m); ; +Morison['M7N2MBFxi'] = False # (N-m/m); ; +Morison['M7N3MBFxi'] = False # (N-m/m); ; +Morison['M7N4MBFxi'] = False # (N-m/m); ; +Morison['M7N5MBFxi'] = False # (N-m/m); ; +Morison['M7N6MBFxi'] = False # (N-m/m); ; +Morison['M7N7MBFxi'] = False # (N-m/m); ; +Morison['M7N8MBFxi'] = False # (N-m/m); ; +Morison['M7N9MBFxi'] = False # (N-m/m); ; +Morison['M8N1MBFxi'] = False # (N-m/m); ; +Morison['M8N2MBFxi'] = False # (N-m/m); ; +Morison['M8N3MBFxi'] = False # (N-m/m); ; +Morison['M8N4MBFxi'] = False # (N-m/m); ; +Morison['M8N5MBFxi'] = False # (N-m/m); ; +Morison['M8N6MBFxi'] = False # (N-m/m); ; +Morison['M8N7MBFxi'] = False # (N-m/m); ; +Morison['M8N8MBFxi'] = False # (N-m/m); ; +Morison['M8N9MBFxi'] = False # (N-m/m); ; +Morison['M9N1MBFxi'] = False # (N-m/m); ; +Morison['M9N2MBFxi'] = False # (N-m/m); ; +Morison['M9N3MBFxi'] = False # (N-m/m); ; +Morison['M9N4MBFxi'] = False # (N-m/m); ; +Morison['M9N5MBFxi'] = False # (N-m/m); ; +Morison['M9N6MBFxi'] = False # (N-m/m); ; +Morison['M9N7MBFxi'] = False # (N-m/m); ; +Morison['M9N8MBFxi'] = False # (N-m/m); ; +Morison['M9N9MBFxi'] = False # (N-m/m); ; +Morison['M1N1MBFyi'] = False # (N-m/m); y-component of the distributed filled fluid bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MBFyi'] = False # (N-m/m); ; +Morison['M1N3MBFyi'] = False # (N-m/m); ; +Morison['M1N4MBFyi'] = False # (N-m/m); ; +Morison['M1N5MBFyi'] = False # (N-m/m); ; +Morison['M1N6MBFyi'] = False # (N-m/m); ; +Morison['M1N7MBFyi'] = False # (N-m/m); ; +Morison['M1N8MBFyi'] = False # (N-m/m); ; +Morison['M1N9MBFyi'] = False # (N-m/m); ; +Morison['M2N1MBFyi'] = False # (N-m/m); ; +Morison['M2N2MBFyi'] = False # (N-m/m); ; +Morison['M2N3MBFyi'] = False # (N-m/m); ; +Morison['M2N4MBFyi'] = False # (N-m/m); ; +Morison['M2N5MBFyi'] = False # (N-m/m); ; +Morison['M2N6MBFyi'] = False # (N-m/m); ; +Morison['M2N7MBFyi'] = False # (N-m/m); ; +Morison['M2N8MBFyi'] = False # (N-m/m); ; +Morison['M2N9MBFyi'] = False # (N-m/m); ; +Morison['M3N1MBFyi'] = False # (N-m/m); ; +Morison['M3N2MBFyi'] = False # (N-m/m); ; +Morison['M3N3MBFyi'] = False # (N-m/m); ; +Morison['M3N4MBFyi'] = False # (N-m/m); ; +Morison['M3N5MBFyi'] = False # (N-m/m); ; +Morison['M3N6MBFyi'] = False # (N-m/m); ; +Morison['M3N7MBFyi'] = False # (N-m/m); ; +Morison['M3N8MBFyi'] = False # (N-m/m); ; +Morison['M3N9MBFyi'] = False # (N-m/m); ; +Morison['M4N1MBFyi'] = False # (N-m/m); ; +Morison['M4N2MBFyi'] = False # (N-m/m); ; +Morison['M4N3MBFyi'] = False # (N-m/m); ; +Morison['M4N4MBFyi'] = False # (N-m/m); ; +Morison['M4N5MBFyi'] = False # (N-m/m); ; +Morison['M4N6MBFyi'] = False # (N-m/m); ; +Morison['M4N7MBFyi'] = False # (N-m/m); ; +Morison['M4N8MBFyi'] = False # (N-m/m); ; +Morison['M4N9MBFyi'] = False # (N-m/m); ; +Morison['M5N1MBFyi'] = False # (N-m/m); ; +Morison['M5N2MBFyi'] = False # (N-m/m); ; +Morison['M5N3MBFyi'] = False # (N-m/m); ; +Morison['M5N4MBFyi'] = False # (N-m/m); ; +Morison['M5N5MBFyi'] = False # (N-m/m); ; +Morison['M5N6MBFyi'] = False # (N-m/m); ; +Morison['M5N7MBFyi'] = False # (N-m/m); ; +Morison['M5N8MBFyi'] = False # (N-m/m); ; +Morison['M5N9MBFyi'] = False # (N-m/m); ; +Morison['M6N1MBFyi'] = False # (N-m/m); ; +Morison['M6N2MBFyi'] = False # (N-m/m); ; +Morison['M6N3MBFyi'] = False # (N-m/m); ; +Morison['M6N4MBFyi'] = False # (N-m/m); ; +Morison['M6N5MBFyi'] = False # (N-m/m); ; +Morison['M6N6MBFyi'] = False # (N-m/m); ; +Morison['M6N7MBFyi'] = False # (N-m/m); ; +Morison['M6N8MBFyi'] = False # (N-m/m); ; +Morison['M6N9MBFyi'] = False # (N-m/m); ; +Morison['M7N1MBFyi'] = False # (N-m/m); ; +Morison['M7N2MBFyi'] = False # (N-m/m); ; +Morison['M7N3MBFyi'] = False # (N-m/m); ; +Morison['M7N4MBFyi'] = False # (N-m/m); ; +Morison['M7N5MBFyi'] = False # (N-m/m); ; +Morison['M7N6MBFyi'] = False # (N-m/m); ; +Morison['M7N7MBFyi'] = False # (N-m/m); ; +Morison['M7N8MBFyi'] = False # (N-m/m); ; +Morison['M7N9MBFyi'] = False # (N-m/m); ; +Morison['M8N1MBFyi'] = False # (N-m/m); ; +Morison['M8N2MBFyi'] = False # (N-m/m); ; +Morison['M8N3MBFyi'] = False # (N-m/m); ; +Morison['M8N4MBFyi'] = False # (N-m/m); ; +Morison['M8N5MBFyi'] = False # (N-m/m); ; +Morison['M8N6MBFyi'] = False # (N-m/m); ; +Morison['M8N7MBFyi'] = False # (N-m/m); ; +Morison['M8N8MBFyi'] = False # (N-m/m); ; +Morison['M8N9MBFyi'] = False # (N-m/m); ; +Morison['M9N1MBFyi'] = False # (N-m/m); ; +Morison['M9N2MBFyi'] = False # (N-m/m); ; +Morison['M9N3MBFyi'] = False # (N-m/m); ; +Morison['M9N4MBFyi'] = False # (N-m/m); ; +Morison['M9N5MBFyi'] = False # (N-m/m); ; +Morison['M9N6MBFyi'] = False # (N-m/m); ; +Morison['M9N7MBFyi'] = False # (N-m/m); ; +Morison['M9N8MBFyi'] = False # (N-m/m); ; +Morison['M9N9MBFyi'] = False # (N-m/m); ; +Morison['M1N1MBFzi'] = False # (N-m/m); z-component of the distributed filled fluid bouyancy moment expressed in the inertial coordinate system; +Morison['M1N2MBFzi'] = False # (N-m/m); ; +Morison['M1N3MBFzi'] = False # (N-m/m); ; +Morison['M1N4MBFzi'] = False # (N-m/m); ; +Morison['M1N5MBFzi'] = False # (N-m/m); ; +Morison['M1N6MBFzi'] = False # (N-m/m); ; +Morison['M1N7MBFzi'] = False # (N-m/m); ; +Morison['M1N8MBFzi'] = False # (N-m/m); ; +Morison['M1N9MBFzi'] = False # (N-m/m); ; +Morison['M2N1MBFzi'] = False # (N-m/m); ; +Morison['M2N2MBFzi'] = False # (N-m/m); ; +Morison['M2N3MBFzi'] = False # (N-m/m); ; +Morison['M2N4MBFzi'] = False # (N-m/m); ; +Morison['M2N5MBFzi'] = False # (N-m/m); ; +Morison['M2N6MBFzi'] = False # (N-m/m); ; +Morison['M2N7MBFzi'] = False # (N-m/m); ; +Morison['M2N8MBFzi'] = False # (N-m/m); ; +Morison['M2N9MBFzi'] = False # (N-m/m); ; +Morison['M3N1MBFzi'] = False # (N-m/m); ; +Morison['M3N2MBFzi'] = False # (N-m/m); ; +Morison['M3N3MBFzi'] = False # (N-m/m); ; +Morison['M3N4MBFzi'] = False # (N-m/m); ; +Morison['M3N5MBFzi'] = False # (N-m/m); ; +Morison['M3N6MBFzi'] = False # (N-m/m); ; +Morison['M3N7MBFzi'] = False # (N-m/m); ; +Morison['M3N8MBFzi'] = False # (N-m/m); ; +Morison['M3N9MBFzi'] = False # (N-m/m); ; +Morison['M4N1MBFzi'] = False # (N-m/m); ; +Morison['M4N2MBFzi'] = False # (N-m/m); ; +Morison['M4N3MBFzi'] = False # (N-m/m); ; +Morison['M4N4MBFzi'] = False # (N-m/m); ; +Morison['M4N5MBFzi'] = False # (N-m/m); ; +Morison['M4N6MBFzi'] = False # (N-m/m); ; +Morison['M4N7MBFzi'] = False # (N-m/m); ; +Morison['M4N8MBFzi'] = False # (N-m/m); ; +Morison['M4N9MBFzi'] = False # (N-m/m); ; +Morison['M5N1MBFzi'] = False # (N-m/m); ; +Morison['M5N2MBFzi'] = False # (N-m/m); ; +Morison['M5N3MBFzi'] = False # (N-m/m); ; +Morison['M5N4MBFzi'] = False # (N-m/m); ; +Morison['M5N5MBFzi'] = False # (N-m/m); ; +Morison['M5N6MBFzi'] = False # (N-m/m); ; +Morison['M5N7MBFzi'] = False # (N-m/m); ; +Morison['M5N8MBFzi'] = False # (N-m/m); ; +Morison['M5N9MBFzi'] = False # (N-m/m); ; +Morison['M6N1MBFzi'] = False # (N-m/m); ; +Morison['M6N2MBFzi'] = False # (N-m/m); ; +Morison['M6N3MBFzi'] = False # (N-m/m); ; +Morison['M6N4MBFzi'] = False # (N-m/m); ; +Morison['M6N5MBFzi'] = False # (N-m/m); ; +Morison['M6N6MBFzi'] = False # (N-m/m); ; +Morison['M6N7MBFzi'] = False # (N-m/m); ; +Morison['M6N8MBFzi'] = False # (N-m/m); ; +Morison['M6N9MBFzi'] = False # (N-m/m); ; +Morison['M7N1MBFzi'] = False # (N-m/m); ; +Morison['M7N2MBFzi'] = False # (N-m/m); ; +Morison['M7N3MBFzi'] = False # (N-m/m); ; +Morison['M7N4MBFzi'] = False # (N-m/m); ; +Morison['M7N5MBFzi'] = False # (N-m/m); ; +Morison['M7N6MBFzi'] = False # (N-m/m); ; +Morison['M7N7MBFzi'] = False # (N-m/m); ; +Morison['M7N8MBFzi'] = False # (N-m/m); ; +Morison['M7N9MBFzi'] = False # (N-m/m); ; +Morison['M8N1MBFzi'] = False # (N-m/m); ; +Morison['M8N2MBFzi'] = False # (N-m/m); ; +Morison['M8N3MBFzi'] = False # (N-m/m); ; +Morison['M8N4MBFzi'] = False # (N-m/m); ; +Morison['M8N5MBFzi'] = False # (N-m/m); ; +Morison['M8N6MBFzi'] = False # (N-m/m); ; +Morison['M8N7MBFzi'] = False # (N-m/m); ; +Morison['M8N8MBFzi'] = False # (N-m/m); ; +Morison['M8N9MBFzi'] = False # (N-m/m); ; +Morison['M9N1MBFzi'] = False # (N-m/m); ; +Morison['M9N2MBFzi'] = False # (N-m/m); ; +Morison['M9N3MBFzi'] = False # (N-m/m); ; +Morison['M9N4MBFzi'] = False # (N-m/m); ; +Morison['M9N5MBFzi'] = False # (N-m/m); ; +Morison['M9N6MBFzi'] = False # (N-m/m); ; +Morison['M9N7MBFzi'] = False # (N-m/m); ; +Morison['M9N8MBFzi'] = False # (N-m/m); ; +Morison['M9N9MBFzi'] = False # (N-m/m); ; +Morison['M1N1FMGxi'] = False # (N/m); x-component of the distributed marine growth weight force expressed in the inertial coordinate system; +Morison['M1N2FMGxi'] = False # (N/m); ; +Morison['M1N3FMGxi'] = False # (N/m); ; +Morison['M1N4FMGxi'] = False # (N/m); ; +Morison['M1N5FMGxi'] = False # (N/m); ; +Morison['M1N6FMGxi'] = False # (N/m); ; +Morison['M1N7FMGxi'] = False # (N/m); ; +Morison['M1N8FMGxi'] = False # (N/m); ; +Morison['M1N9FMGxi'] = False # (N/m); ; +Morison['M2N1FMGxi'] = False # (N/m); ; +Morison['M2N2FMGxi'] = False # (N/m); ; +Morison['M2N3FMGxi'] = False # (N/m); ; +Morison['M2N4FMGxi'] = False # (N/m); ; +Morison['M2N5FMGxi'] = False # (N/m); ; +Morison['M2N6FMGxi'] = False # (N/m); ; +Morison['M2N7FMGxi'] = False # (N/m); ; +Morison['M2N8FMGxi'] = False # (N/m); ; +Morison['M2N9FMGxi'] = False # (N/m); ; +Morison['M3N1FMGxi'] = False # (N/m); ; +Morison['M3N2FMGxi'] = False # (N/m); ; +Morison['M3N3FMGxi'] = False # (N/m); ; +Morison['M3N4FMGxi'] = False # (N/m); ; +Morison['M3N5FMGxi'] = False # (N/m); ; +Morison['M3N6FMGxi'] = False # (N/m); ; +Morison['M3N7FMGxi'] = False # (N/m); ; +Morison['M3N8FMGxi'] = False # (N/m); ; +Morison['M3N9FMGxi'] = False # (N/m); ; +Morison['M4N1FMGxi'] = False # (N/m); ; +Morison['M4N2FMGxi'] = False # (N/m); ; +Morison['M4N3FMGxi'] = False # (N/m); ; +Morison['M4N4FMGxi'] = False # (N/m); ; +Morison['M4N5FMGxi'] = False # (N/m); ; +Morison['M4N6FMGxi'] = False # (N/m); ; +Morison['M4N7FMGxi'] = False # (N/m); ; +Morison['M4N8FMGxi'] = False # (N/m); ; +Morison['M4N9FMGxi'] = False # (N/m); ; +Morison['M5N1FMGxi'] = False # (N/m); ; +Morison['M5N2FMGxi'] = False # (N/m); ; +Morison['M5N3FMGxi'] = False # (N/m); ; +Morison['M5N4FMGxi'] = False # (N/m); ; +Morison['M5N5FMGxi'] = False # (N/m); ; +Morison['M5N6FMGxi'] = False # (N/m); ; +Morison['M5N7FMGxi'] = False # (N/m); ; +Morison['M5N8FMGxi'] = False # (N/m); ; +Morison['M5N9FMGxi'] = False # (N/m); ; +Morison['M6N1FMGxi'] = False # (N/m); ; +Morison['M6N2FMGxi'] = False # (N/m); ; +Morison['M6N3FMGxi'] = False # (N/m); ; +Morison['M6N4FMGxi'] = False # (N/m); ; +Morison['M6N5FMGxi'] = False # (N/m); ; +Morison['M6N6FMGxi'] = False # (N/m); ; +Morison['M6N7FMGxi'] = False # (N/m); ; +Morison['M6N8FMGxi'] = False # (N/m); ; +Morison['M6N9FMGxi'] = False # (N/m); ; +Morison['M7N1FMGxi'] = False # (N/m); ; +Morison['M7N2FMGxi'] = False # (N/m); ; +Morison['M7N3FMGxi'] = False # (N/m); ; +Morison['M7N4FMGxi'] = False # (N/m); ; +Morison['M7N5FMGxi'] = False # (N/m); ; +Morison['M7N6FMGxi'] = False # (N/m); ; +Morison['M7N7FMGxi'] = False # (N/m); ; +Morison['M7N8FMGxi'] = False # (N/m); ; +Morison['M7N9FMGxi'] = False # (N/m); ; +Morison['M8N1FMGxi'] = False # (N/m); ; +Morison['M8N2FMGxi'] = False # (N/m); ; +Morison['M8N3FMGxi'] = False # (N/m); ; +Morison['M8N4FMGxi'] = False # (N/m); ; +Morison['M8N5FMGxi'] = False # (N/m); ; +Morison['M8N6FMGxi'] = False # (N/m); ; +Morison['M8N7FMGxi'] = False # (N/m); ; +Morison['M8N8FMGxi'] = False # (N/m); ; +Morison['M8N9FMGxi'] = False # (N/m); ; +Morison['M9N1FMGxi'] = False # (N/m); ; +Morison['M9N2FMGxi'] = False # (N/m); ; +Morison['M9N3FMGxi'] = False # (N/m); ; +Morison['M9N4FMGxi'] = False # (N/m); ; +Morison['M9N5FMGxi'] = False # (N/m); ; +Morison['M9N6FMGxi'] = False # (N/m); ; +Morison['M9N7FMGxi'] = False # (N/m); ; +Morison['M9N8FMGxi'] = False # (N/m); ; +Morison['M9N9FMGxi'] = False # (N/m); ; +Morison['M1N1FMGyi'] = False # (N/m); y-component of the distributed marine growth weight force expressed in the inertial coordinate system; +Morison['M1N2FMGyi'] = False # (N/m); ; +Morison['M1N3FMGyi'] = False # (N/m); ; +Morison['M1N4FMGyi'] = False # (N/m); ; +Morison['M1N5FMGyi'] = False # (N/m); ; +Morison['M1N6FMGyi'] = False # (N/m); ; +Morison['M1N7FMGyi'] = False # (N/m); ; +Morison['M1N8FMGyi'] = False # (N/m); ; +Morison['M1N9FMGyi'] = False # (N/m); ; +Morison['M2N1FMGyi'] = False # (N/m); ; +Morison['M2N2FMGyi'] = False # (N/m); ; +Morison['M2N3FMGyi'] = False # (N/m); ; +Morison['M2N4FMGyi'] = False # (N/m); ; +Morison['M2N5FMGyi'] = False # (N/m); ; +Morison['M2N6FMGyi'] = False # (N/m); ; +Morison['M2N7FMGyi'] = False # (N/m); ; +Morison['M2N8FMGyi'] = False # (N/m); ; +Morison['M2N9FMGyi'] = False # (N/m); ; +Morison['M3N1FMGyi'] = False # (N/m); ; +Morison['M3N2FMGyi'] = False # (N/m); ; +Morison['M3N3FMGyi'] = False # (N/m); ; +Morison['M3N4FMGyi'] = False # (N/m); ; +Morison['M3N5FMGyi'] = False # (N/m); ; +Morison['M3N6FMGyi'] = False # (N/m); ; +Morison['M3N7FMGyi'] = False # (N/m); ; +Morison['M3N8FMGyi'] = False # (N/m); ; +Morison['M3N9FMGyi'] = False # (N/m); ; +Morison['M4N1FMGyi'] = False # (N/m); ; +Morison['M4N2FMGyi'] = False # (N/m); ; +Morison['M4N3FMGyi'] = False # (N/m); ; +Morison['M4N4FMGyi'] = False # (N/m); ; +Morison['M4N5FMGyi'] = False # (N/m); ; +Morison['M4N6FMGyi'] = False # (N/m); ; +Morison['M4N7FMGyi'] = False # (N/m); ; +Morison['M4N8FMGyi'] = False # (N/m); ; +Morison['M4N9FMGyi'] = False # (N/m); ; +Morison['M5N1FMGyi'] = False # (N/m); ; +Morison['M5N2FMGyi'] = False # (N/m); ; +Morison['M5N3FMGyi'] = False # (N/m); ; +Morison['M5N4FMGyi'] = False # (N/m); ; +Morison['M5N5FMGyi'] = False # (N/m); ; +Morison['M5N6FMGyi'] = False # (N/m); ; +Morison['M5N7FMGyi'] = False # (N/m); ; +Morison['M5N8FMGyi'] = False # (N/m); ; +Morison['M5N9FMGyi'] = False # (N/m); ; +Morison['M6N1FMGyi'] = False # (N/m); ; +Morison['M6N2FMGyi'] = False # (N/m); ; +Morison['M6N3FMGyi'] = False # (N/m); ; +Morison['M6N4FMGyi'] = False # (N/m); ; +Morison['M6N5FMGyi'] = False # (N/m); ; +Morison['M6N6FMGyi'] = False # (N/m); ; +Morison['M6N7FMGyi'] = False # (N/m); ; +Morison['M6N8FMGyi'] = False # (N/m); ; +Morison['M6N9FMGyi'] = False # (N/m); ; +Morison['M7N1FMGyi'] = False # (N/m); ; +Morison['M7N2FMGyi'] = False # (N/m); ; +Morison['M7N3FMGyi'] = False # (N/m); ; +Morison['M7N4FMGyi'] = False # (N/m); ; +Morison['M7N5FMGyi'] = False # (N/m); ; +Morison['M7N6FMGyi'] = False # (N/m); ; +Morison['M7N7FMGyi'] = False # (N/m); ; +Morison['M7N8FMGyi'] = False # (N/m); ; +Morison['M7N9FMGyi'] = False # (N/m); ; +Morison['M8N1FMGyi'] = False # (N/m); ; +Morison['M8N2FMGyi'] = False # (N/m); ; +Morison['M8N3FMGyi'] = False # (N/m); ; +Morison['M8N4FMGyi'] = False # (N/m); ; +Morison['M8N5FMGyi'] = False # (N/m); ; +Morison['M8N6FMGyi'] = False # (N/m); ; +Morison['M8N7FMGyi'] = False # (N/m); ; +Morison['M8N8FMGyi'] = False # (N/m); ; +Morison['M8N9FMGyi'] = False # (N/m); ; +Morison['M9N1FMGyi'] = False # (N/m); ; +Morison['M9N2FMGyi'] = False # (N/m); ; +Morison['M9N3FMGyi'] = False # (N/m); ; +Morison['M9N4FMGyi'] = False # (N/m); ; +Morison['M9N5FMGyi'] = False # (N/m); ; +Morison['M9N6FMGyi'] = False # (N/m); ; +Morison['M9N7FMGyi'] = False # (N/m); ; +Morison['M9N8FMGyi'] = False # (N/m); ; +Morison['M9N9FMGyi'] = False # (N/m); ; +Morison['M1N1FMGzi'] = False # (N/m); z-component of the distributed marine growth weight force expressed in the inertial coordinate system; +Morison['M1N2FMGzi'] = False # (N/m); ; +Morison['M1N3FMGzi'] = False # (N/m); ; +Morison['M1N4FMGzi'] = False # (N/m); ; +Morison['M1N5FMGzi'] = False # (N/m); ; +Morison['M1N6FMGzi'] = False # (N/m); ; +Morison['M1N7FMGzi'] = False # (N/m); ; +Morison['M1N8FMGzi'] = False # (N/m); ; +Morison['M1N9FMGzi'] = False # (N/m); ; +Morison['M2N1FMGzi'] = False # (N/m); ; +Morison['M2N2FMGzi'] = False # (N/m); ; +Morison['M2N3FMGzi'] = False # (N/m); ; +Morison['M2N4FMGzi'] = False # (N/m); ; +Morison['M2N5FMGzi'] = False # (N/m); ; +Morison['M2N6FMGzi'] = False # (N/m); ; +Morison['M2N7FMGzi'] = False # (N/m); ; +Morison['M2N8FMGzi'] = False # (N/m); ; +Morison['M2N9FMGzi'] = False # (N/m); ; +Morison['M3N1FMGzi'] = False # (N/m); ; +Morison['M3N2FMGzi'] = False # (N/m); ; +Morison['M3N3FMGzi'] = False # (N/m); ; +Morison['M3N4FMGzi'] = False # (N/m); ; +Morison['M3N5FMGzi'] = False # (N/m); ; +Morison['M3N6FMGzi'] = False # (N/m); ; +Morison['M3N7FMGzi'] = False # (N/m); ; +Morison['M3N8FMGzi'] = False # (N/m); ; +Morison['M3N9FMGzi'] = False # (N/m); ; +Morison['M4N1FMGzi'] = False # (N/m); ; +Morison['M4N2FMGzi'] = False # (N/m); ; +Morison['M4N3FMGzi'] = False # (N/m); ; +Morison['M4N4FMGzi'] = False # (N/m); ; +Morison['M4N5FMGzi'] = False # (N/m); ; +Morison['M4N6FMGzi'] = False # (N/m); ; +Morison['M4N7FMGzi'] = False # (N/m); ; +Morison['M4N8FMGzi'] = False # (N/m); ; +Morison['M4N9FMGzi'] = False # (N/m); ; +Morison['M5N1FMGzi'] = False # (N/m); ; +Morison['M5N2FMGzi'] = False # (N/m); ; +Morison['M5N3FMGzi'] = False # (N/m); ; +Morison['M5N4FMGzi'] = False # (N/m); ; +Morison['M5N5FMGzi'] = False # (N/m); ; +Morison['M5N6FMGzi'] = False # (N/m); ; +Morison['M5N7FMGzi'] = False # (N/m); ; +Morison['M5N8FMGzi'] = False # (N/m); ; +Morison['M5N9FMGzi'] = False # (N/m); ; +Morison['M6N1FMGzi'] = False # (N/m); ; +Morison['M6N2FMGzi'] = False # (N/m); ; +Morison['M6N3FMGzi'] = False # (N/m); ; +Morison['M6N4FMGzi'] = False # (N/m); ; +Morison['M6N5FMGzi'] = False # (N/m); ; +Morison['M6N6FMGzi'] = False # (N/m); ; +Morison['M6N7FMGzi'] = False # (N/m); ; +Morison['M6N8FMGzi'] = False # (N/m); ; +Morison['M6N9FMGzi'] = False # (N/m); ; +Morison['M7N1FMGzi'] = False # (N/m); ; +Morison['M7N2FMGzi'] = False # (N/m); ; +Morison['M7N3FMGzi'] = False # (N/m); ; +Morison['M7N4FMGzi'] = False # (N/m); ; +Morison['M7N5FMGzi'] = False # (N/m); ; +Morison['M7N6FMGzi'] = False # (N/m); ; +Morison['M7N7FMGzi'] = False # (N/m); ; +Morison['M7N8FMGzi'] = False # (N/m); ; +Morison['M7N9FMGzi'] = False # (N/m); ; +Morison['M8N1FMGzi'] = False # (N/m); ; +Morison['M8N2FMGzi'] = False # (N/m); ; +Morison['M8N3FMGzi'] = False # (N/m); ; +Morison['M8N4FMGzi'] = False # (N/m); ; +Morison['M8N5FMGzi'] = False # (N/m); ; +Morison['M8N6FMGzi'] = False # (N/m); ; +Morison['M8N7FMGzi'] = False # (N/m); ; +Morison['M8N8FMGzi'] = False # (N/m); ; +Morison['M8N9FMGzi'] = False # (N/m); ; +Morison['M9N1FMGzi'] = False # (N/m); ; +Morison['M9N2FMGzi'] = False # (N/m); ; +Morison['M9N3FMGzi'] = False # (N/m); ; +Morison['M9N4FMGzi'] = False # (N/m); ; +Morison['M9N5FMGzi'] = False # (N/m); ; +Morison['M9N6FMGzi'] = False # (N/m); ; +Morison['M9N7FMGzi'] = False # (N/m); ; +Morison['M9N8FMGzi'] = False # (N/m); ; +Morison['M9N9FMGzi'] = False # (N/m); ; +Morison['M1N1MMGxi'] = False # (N-m/m); x-component of the distributed marine growth weight moment expressed in the inertial coordinate system; +Morison['M1N2MMGxi'] = False # (N-m/m); ; +Morison['M1N3MMGxi'] = False # (N-m/m); ; +Morison['M1N4MMGxi'] = False # (N-m/m); ; +Morison['M1N5MMGxi'] = False # (N-m/m); ; +Morison['M1N6MMGxi'] = False # (N-m/m); ; +Morison['M1N7MMGxi'] = False # (N-m/m); ; +Morison['M1N8MMGxi'] = False # (N-m/m); ; +Morison['M1N9MMGxi'] = False # (N-m/m); ; +Morison['M2N1MMGxi'] = False # (N-m/m); ; +Morison['M2N2MMGxi'] = False # (N-m/m); ; +Morison['M2N3MMGxi'] = False # (N-m/m); ; +Morison['M2N4MMGxi'] = False # (N-m/m); ; +Morison['M2N5MMGxi'] = False # (N-m/m); ; +Morison['M2N6MMGxi'] = False # (N-m/m); ; +Morison['M2N7MMGxi'] = False # (N-m/m); ; +Morison['M2N8MMGxi'] = False # (N-m/m); ; +Morison['M2N9MMGxi'] = False # (N-m/m); ; +Morison['M3N1MMGxi'] = False # (N-m/m); ; +Morison['M3N2MMGxi'] = False # (N-m/m); ; +Morison['M3N3MMGxi'] = False # (N-m/m); ; +Morison['M3N4MMGxi'] = False # (N-m/m); ; +Morison['M3N5MMGxi'] = False # (N-m/m); ; +Morison['M3N6MMGxi'] = False # (N-m/m); ; +Morison['M3N7MMGxi'] = False # (N-m/m); ; +Morison['M3N8MMGxi'] = False # (N-m/m); ; +Morison['M3N9MMGxi'] = False # (N-m/m); ; +Morison['M4N1MMGxi'] = False # (N-m/m); ; +Morison['M4N2MMGxi'] = False # (N-m/m); ; +Morison['M4N3MMGxi'] = False # (N-m/m); ; +Morison['M4N4MMGxi'] = False # (N-m/m); ; +Morison['M4N5MMGxi'] = False # (N-m/m); ; +Morison['M4N6MMGxi'] = False # (N-m/m); ; +Morison['M4N7MMGxi'] = False # (N-m/m); ; +Morison['M4N8MMGxi'] = False # (N-m/m); ; +Morison['M4N9MMGxi'] = False # (N-m/m); ; +Morison['M5N1MMGxi'] = False # (N-m/m); ; +Morison['M5N2MMGxi'] = False # (N-m/m); ; +Morison['M5N3MMGxi'] = False # (N-m/m); ; +Morison['M5N4MMGxi'] = False # (N-m/m); ; +Morison['M5N5MMGxi'] = False # (N-m/m); ; +Morison['M5N6MMGxi'] = False # (N-m/m); ; +Morison['M5N7MMGxi'] = False # (N-m/m); ; +Morison['M5N8MMGxi'] = False # (N-m/m); ; +Morison['M5N9MMGxi'] = False # (N-m/m); ; +Morison['M6N1MMGxi'] = False # (N-m/m); ; +Morison['M6N2MMGxi'] = False # (N-m/m); ; +Morison['M6N3MMGxi'] = False # (N-m/m); ; +Morison['M6N4MMGxi'] = False # (N-m/m); ; +Morison['M6N5MMGxi'] = False # (N-m/m); ; +Morison['M6N6MMGxi'] = False # (N-m/m); ; +Morison['M6N7MMGxi'] = False # (N-m/m); ; +Morison['M6N8MMGxi'] = False # (N-m/m); ; +Morison['M6N9MMGxi'] = False # (N-m/m); ; +Morison['M7N1MMGxi'] = False # (N-m/m); ; +Morison['M7N2MMGxi'] = False # (N-m/m); ; +Morison['M7N3MMGxi'] = False # (N-m/m); ; +Morison['M7N4MMGxi'] = False # (N-m/m); ; +Morison['M7N5MMGxi'] = False # (N-m/m); ; +Morison['M7N6MMGxi'] = False # (N-m/m); ; +Morison['M7N7MMGxi'] = False # (N-m/m); ; +Morison['M7N8MMGxi'] = False # (N-m/m); ; +Morison['M7N9MMGxi'] = False # (N-m/m); ; +Morison['M8N1MMGxi'] = False # (N-m/m); ; +Morison['M8N2MMGxi'] = False # (N-m/m); ; +Morison['M8N3MMGxi'] = False # (N-m/m); ; +Morison['M8N4MMGxi'] = False # (N-m/m); ; +Morison['M8N5MMGxi'] = False # (N-m/m); ; +Morison['M8N6MMGxi'] = False # (N-m/m); ; +Morison['M8N7MMGxi'] = False # (N-m/m); ; +Morison['M8N8MMGxi'] = False # (N-m/m); ; +Morison['M8N9MMGxi'] = False # (N-m/m); ; +Morison['M9N1MMGxi'] = False # (N-m/m); ; +Morison['M9N2MMGxi'] = False # (N-m/m); ; +Morison['M9N3MMGxi'] = False # (N-m/m); ; +Morison['M9N4MMGxi'] = False # (N-m/m); ; +Morison['M9N5MMGxi'] = False # (N-m/m); ; +Morison['M9N6MMGxi'] = False # (N-m/m); ; +Morison['M9N7MMGxi'] = False # (N-m/m); ; +Morison['M9N8MMGxi'] = False # (N-m/m); ; +Morison['M9N9MMGxi'] = False # (N-m/m); ; +Morison['M1N1MMGyi'] = False # (N-m/m); y-component of the distributed marine growth weight moment expressed in the inertial coordinate system; +Morison['M1N2MMGyi'] = False # (N-m/m); ; +Morison['M1N3MMGyi'] = False # (N-m/m); ; +Morison['M1N4MMGyi'] = False # (N-m/m); ; +Morison['M1N5MMGyi'] = False # (N-m/m); ; +Morison['M1N6MMGyi'] = False # (N-m/m); ; +Morison['M1N7MMGyi'] = False # (N-m/m); ; +Morison['M1N8MMGyi'] = False # (N-m/m); ; +Morison['M1N9MMGyi'] = False # (N-m/m); ; +Morison['M2N1MMGyi'] = False # (N-m/m); ; +Morison['M2N2MMGyi'] = False # (N-m/m); ; +Morison['M2N3MMGyi'] = False # (N-m/m); ; +Morison['M2N4MMGyi'] = False # (N-m/m); ; +Morison['M2N5MMGyi'] = False # (N-m/m); ; +Morison['M2N6MMGyi'] = False # (N-m/m); ; +Morison['M2N7MMGyi'] = False # (N-m/m); ; +Morison['M2N8MMGyi'] = False # (N-m/m); ; +Morison['M2N9MMGyi'] = False # (N-m/m); ; +Morison['M3N1MMGyi'] = False # (N-m/m); ; +Morison['M3N2MMGyi'] = False # (N-m/m); ; +Morison['M3N3MMGyi'] = False # (N-m/m); ; +Morison['M3N4MMGyi'] = False # (N-m/m); ; +Morison['M3N5MMGyi'] = False # (N-m/m); ; +Morison['M3N6MMGyi'] = False # (N-m/m); ; +Morison['M3N7MMGyi'] = False # (N-m/m); ; +Morison['M3N8MMGyi'] = False # (N-m/m); ; +Morison['M3N9MMGyi'] = False # (N-m/m); ; +Morison['M4N1MMGyi'] = False # (N-m/m); ; +Morison['M4N2MMGyi'] = False # (N-m/m); ; +Morison['M4N3MMGyi'] = False # (N-m/m); ; +Morison['M4N4MMGyi'] = False # (N-m/m); ; +Morison['M4N5MMGyi'] = False # (N-m/m); ; +Morison['M4N6MMGyi'] = False # (N-m/m); ; +Morison['M4N7MMGyi'] = False # (N-m/m); ; +Morison['M4N8MMGyi'] = False # (N-m/m); ; +Morison['M4N9MMGyi'] = False # (N-m/m); ; +Morison['M5N1MMGyi'] = False # (N-m/m); ; +Morison['M5N2MMGyi'] = False # (N-m/m); ; +Morison['M5N3MMGyi'] = False # (N-m/m); ; +Morison['M5N4MMGyi'] = False # (N-m/m); ; +Morison['M5N5MMGyi'] = False # (N-m/m); ; +Morison['M5N6MMGyi'] = False # (N-m/m); ; +Morison['M5N7MMGyi'] = False # (N-m/m); ; +Morison['M5N8MMGyi'] = False # (N-m/m); ; +Morison['M5N9MMGyi'] = False # (N-m/m); ; +Morison['M6N1MMGyi'] = False # (N-m/m); ; +Morison['M6N2MMGyi'] = False # (N-m/m); ; +Morison['M6N3MMGyi'] = False # (N-m/m); ; +Morison['M6N4MMGyi'] = False # (N-m/m); ; +Morison['M6N5MMGyi'] = False # (N-m/m); ; +Morison['M6N6MMGyi'] = False # (N-m/m); ; +Morison['M6N7MMGyi'] = False # (N-m/m); ; +Morison['M6N8MMGyi'] = False # (N-m/m); ; +Morison['M6N9MMGyi'] = False # (N-m/m); ; +Morison['M7N1MMGyi'] = False # (N-m/m); ; +Morison['M7N2MMGyi'] = False # (N-m/m); ; +Morison['M7N3MMGyi'] = False # (N-m/m); ; +Morison['M7N4MMGyi'] = False # (N-m/m); ; +Morison['M7N5MMGyi'] = False # (N-m/m); ; +Morison['M7N6MMGyi'] = False # (N-m/m); ; +Morison['M7N7MMGyi'] = False # (N-m/m); ; +Morison['M7N8MMGyi'] = False # (N-m/m); ; +Morison['M7N9MMGyi'] = False # (N-m/m); ; +Morison['M8N1MMGyi'] = False # (N-m/m); ; +Morison['M8N2MMGyi'] = False # (N-m/m); ; +Morison['M8N3MMGyi'] = False # (N-m/m); ; +Morison['M8N4MMGyi'] = False # (N-m/m); ; +Morison['M8N5MMGyi'] = False # (N-m/m); ; +Morison['M8N6MMGyi'] = False # (N-m/m); ; +Morison['M8N7MMGyi'] = False # (N-m/m); ; +Morison['M8N8MMGyi'] = False # (N-m/m); ; +Morison['M8N9MMGyi'] = False # (N-m/m); ; +Morison['M9N1MMGyi'] = False # (N-m/m); ; +Morison['M9N2MMGyi'] = False # (N-m/m); ; +Morison['M9N3MMGyi'] = False # (N-m/m); ; +Morison['M9N4MMGyi'] = False # (N-m/m); ; +Morison['M9N5MMGyi'] = False # (N-m/m); ; +Morison['M9N6MMGyi'] = False # (N-m/m); ; +Morison['M9N7MMGyi'] = False # (N-m/m); ; +Morison['M9N8MMGyi'] = False # (N-m/m); ; +Morison['M9N9MMGyi'] = False # (N-m/m); ; +Morison['M1N1MMGzi'] = False # (N-m/m); z-component of the distributed marine growth weight moment expressed in the inertial coordinate system; +Morison['M1N2MMGzi'] = False # (N-m/m); ; +Morison['M1N3MMGzi'] = False # (N-m/m); ; +Morison['M1N4MMGzi'] = False # (N-m/m); ; +Morison['M1N5MMGzi'] = False # (N-m/m); ; +Morison['M1N6MMGzi'] = False # (N-m/m); ; +Morison['M1N7MMGzi'] = False # (N-m/m); ; +Morison['M1N8MMGzi'] = False # (N-m/m); ; +Morison['M1N9MMGzi'] = False # (N-m/m); ; +Morison['M2N1MMGzi'] = False # (N-m/m); ; +Morison['M2N2MMGzi'] = False # (N-m/m); ; +Morison['M2N3MMGzi'] = False # (N-m/m); ; +Morison['M2N4MMGzi'] = False # (N-m/m); ; +Morison['M2N5MMGzi'] = False # (N-m/m); ; +Morison['M2N6MMGzi'] = False # (N-m/m); ; +Morison['M2N7MMGzi'] = False # (N-m/m); ; +Morison['M2N8MMGzi'] = False # (N-m/m); ; +Morison['M2N9MMGzi'] = False # (N-m/m); ; +Morison['M3N1MMGzi'] = False # (N-m/m); ; +Morison['M3N2MMGzi'] = False # (N-m/m); ; +Morison['M3N3MMGzi'] = False # (N-m/m); ; +Morison['M3N4MMGzi'] = False # (N-m/m); ; +Morison['M3N5MMGzi'] = False # (N-m/m); ; +Morison['M3N6MMGzi'] = False # (N-m/m); ; +Morison['M3N7MMGzi'] = False # (N-m/m); ; +Morison['M3N8MMGzi'] = False # (N-m/m); ; +Morison['M3N9MMGzi'] = False # (N-m/m); ; +Morison['M4N1MMGzi'] = False # (N-m/m); ; +Morison['M4N2MMGzi'] = False # (N-m/m); ; +Morison['M4N3MMGzi'] = False # (N-m/m); ; +Morison['M4N4MMGzi'] = False # (N-m/m); ; +Morison['M4N5MMGzi'] = False # (N-m/m); ; +Morison['M4N6MMGzi'] = False # (N-m/m); ; +Morison['M4N7MMGzi'] = False # (N-m/m); ; +Morison['M4N8MMGzi'] = False # (N-m/m); ; +Morison['M4N9MMGzi'] = False # (N-m/m); ; +Morison['M5N1MMGzi'] = False # (N-m/m); ; +Morison['M5N2MMGzi'] = False # (N-m/m); ; +Morison['M5N3MMGzi'] = False # (N-m/m); ; +Morison['M5N4MMGzi'] = False # (N-m/m); ; +Morison['M5N5MMGzi'] = False # (N-m/m); ; +Morison['M5N6MMGzi'] = False # (N-m/m); ; +Morison['M5N7MMGzi'] = False # (N-m/m); ; +Morison['M5N8MMGzi'] = False # (N-m/m); ; +Morison['M5N9MMGzi'] = False # (N-m/m); ; +Morison['M6N1MMGzi'] = False # (N-m/m); ; +Morison['M6N2MMGzi'] = False # (N-m/m); ; +Morison['M6N3MMGzi'] = False # (N-m/m); ; +Morison['M6N4MMGzi'] = False # (N-m/m); ; +Morison['M6N5MMGzi'] = False # (N-m/m); ; +Morison['M6N6MMGzi'] = False # (N-m/m); ; +Morison['M6N7MMGzi'] = False # (N-m/m); ; +Morison['M6N8MMGzi'] = False # (N-m/m); ; +Morison['M6N9MMGzi'] = False # (N-m/m); ; +Morison['M7N1MMGzi'] = False # (N-m/m); ; +Morison['M7N2MMGzi'] = False # (N-m/m); ; +Morison['M7N3MMGzi'] = False # (N-m/m); ; +Morison['M7N4MMGzi'] = False # (N-m/m); ; +Morison['M7N5MMGzi'] = False # (N-m/m); ; +Morison['M7N6MMGzi'] = False # (N-m/m); ; +Morison['M7N7MMGzi'] = False # (N-m/m); ; +Morison['M7N8MMGzi'] = False # (N-m/m); ; +Morison['M7N9MMGzi'] = False # (N-m/m); ; +Morison['M8N1MMGzi'] = False # (N-m/m); ; +Morison['M8N2MMGzi'] = False # (N-m/m); ; +Morison['M8N3MMGzi'] = False # (N-m/m); ; +Morison['M8N4MMGzi'] = False # (N-m/m); ; +Morison['M8N5MMGzi'] = False # (N-m/m); ; +Morison['M8N6MMGzi'] = False # (N-m/m); ; +Morison['M8N7MMGzi'] = False # (N-m/m); ; +Morison['M8N8MMGzi'] = False # (N-m/m); ; +Morison['M8N9MMGzi'] = False # (N-m/m); ; +Morison['M9N1MMGzi'] = False # (N-m/m); ; +Morison['M9N2MMGzi'] = False # (N-m/m); ; +Morison['M9N3MMGzi'] = False # (N-m/m); ; +Morison['M9N4MMGzi'] = False # (N-m/m); ; +Morison['M9N5MMGzi'] = False # (N-m/m); ; +Morison['M9N6MMGzi'] = False # (N-m/m); ; +Morison['M9N7MMGzi'] = False # (N-m/m); ; +Morison['M9N8MMGzi'] = False # (N-m/m); ; +Morison['M9N9MMGzi'] = False # (N-m/m); ; +Morison['M1N1FAMxi'] = False # (N/m); x-component of the distributed added mass force due to the member's displacement of the external fluid, expressed in the inertial coordinate system; +Morison['M1N2FAMxi'] = False # (N/m); ; +Morison['M1N3FAMxi'] = False # (N/m); ; +Morison['M1N4FAMxi'] = False # (N/m); ; +Morison['M1N5FAMxi'] = False # (N/m); ; +Morison['M1N6FAMxi'] = False # (N/m); ; +Morison['M1N7FAMxi'] = False # (N/m); ; +Morison['M1N8FAMxi'] = False # (N/m); ; +Morison['M1N9FAMxi'] = False # (N/m); ; +Morison['M2N1FAMxi'] = False # (N/m); ; +Morison['M2N2FAMxi'] = False # (N/m); ; +Morison['M2N3FAMxi'] = False # (N/m); ; +Morison['M2N4FAMxi'] = False # (N/m); ; +Morison['M2N5FAMxi'] = False # (N/m); ; +Morison['M2N6FAMxi'] = False # (N/m); ; +Morison['M2N7FAMxi'] = False # (N/m); ; +Morison['M2N8FAMxi'] = False # (N/m); ; +Morison['M2N9FAMxi'] = False # (N/m); ; +Morison['M3N1FAMxi'] = False # (N/m); ; +Morison['M3N2FAMxi'] = False # (N/m); ; +Morison['M3N3FAMxi'] = False # (N/m); ; +Morison['M3N4FAMxi'] = False # (N/m); ; +Morison['M3N5FAMxi'] = False # (N/m); ; +Morison['M3N6FAMxi'] = False # (N/m); ; +Morison['M3N7FAMxi'] = False # (N/m); ; +Morison['M3N8FAMxi'] = False # (N/m); ; +Morison['M3N9FAMxi'] = False # (N/m); ; +Morison['M4N1FAMxi'] = False # (N/m); ; +Morison['M4N2FAMxi'] = False # (N/m); ; +Morison['M4N3FAMxi'] = False # (N/m); ; +Morison['M4N4FAMxi'] = False # (N/m); ; +Morison['M4N5FAMxi'] = False # (N/m); ; +Morison['M4N6FAMxi'] = False # (N/m); ; +Morison['M4N7FAMxi'] = False # (N/m); ; +Morison['M4N8FAMxi'] = False # (N/m); ; +Morison['M4N9FAMxi'] = False # (N/m); ; +Morison['M5N1FAMxi'] = False # (N/m); ; +Morison['M5N2FAMxi'] = False # (N/m); ; +Morison['M5N3FAMxi'] = False # (N/m); ; +Morison['M5N4FAMxi'] = False # (N/m); ; +Morison['M5N5FAMxi'] = False # (N/m); ; +Morison['M5N6FAMxi'] = False # (N/m); ; +Morison['M5N7FAMxi'] = False # (N/m); ; +Morison['M5N8FAMxi'] = False # (N/m); ; +Morison['M5N9FAMxi'] = False # (N/m); ; +Morison['M6N1FAMxi'] = False # (N/m); ; +Morison['M6N2FAMxi'] = False # (N/m); ; +Morison['M6N3FAMxi'] = False # (N/m); ; +Morison['M6N4FAMxi'] = False # (N/m); ; +Morison['M6N5FAMxi'] = False # (N/m); ; +Morison['M6N6FAMxi'] = False # (N/m); ; +Morison['M6N7FAMxi'] = False # (N/m); ; +Morison['M6N8FAMxi'] = False # (N/m); ; +Morison['M6N9FAMxi'] = False # (N/m); ; +Morison['M7N1FAMxi'] = False # (N/m); ; +Morison['M7N2FAMxi'] = False # (N/m); ; +Morison['M7N3FAMxi'] = False # (N/m); ; +Morison['M7N4FAMxi'] = False # (N/m); ; +Morison['M7N5FAMxi'] = False # (N/m); ; +Morison['M7N6FAMxi'] = False # (N/m); ; +Morison['M7N7FAMxi'] = False # (N/m); ; +Morison['M7N8FAMxi'] = False # (N/m); ; +Morison['M7N9FAMxi'] = False # (N/m); ; +Morison['M8N1FAMxi'] = False # (N/m); ; +Morison['M8N2FAMxi'] = False # (N/m); ; +Morison['M8N3FAMxi'] = False # (N/m); ; +Morison['M8N4FAMxi'] = False # (N/m); ; +Morison['M8N5FAMxi'] = False # (N/m); ; +Morison['M8N6FAMxi'] = False # (N/m); ; +Morison['M8N7FAMxi'] = False # (N/m); ; +Morison['M8N8FAMxi'] = False # (N/m); ; +Morison['M8N9FAMxi'] = False # (N/m); ; +Morison['M9N1FAMxi'] = False # (N/m); ; +Morison['M9N2FAMxi'] = False # (N/m); ; +Morison['M9N3FAMxi'] = False # (N/m); ; +Morison['M9N4FAMxi'] = False # (N/m); ; +Morison['M9N5FAMxi'] = False # (N/m); ; +Morison['M9N6FAMxi'] = False # (N/m); ; +Morison['M9N7FAMxi'] = False # (N/m); ; +Morison['M9N8FAMxi'] = False # (N/m); ; +Morison['M9N9FAMxi'] = False # (N/m); ; +Morison['M1N1FAMyi'] = False # (N/m); y-component of the distributed added mass force due to the member's displacement of the external fluid, expressed in the inertial coordinate system; +Morison['M1N2FAMyi'] = False # (N/m); ; +Morison['M1N3FAMyi'] = False # (N/m); ; +Morison['M1N4FAMyi'] = False # (N/m); ; +Morison['M1N5FAMyi'] = False # (N/m); ; +Morison['M1N6FAMyi'] = False # (N/m); ; +Morison['M1N7FAMyi'] = False # (N/m); ; +Morison['M1N8FAMyi'] = False # (N/m); ; +Morison['M1N9FAMyi'] = False # (N/m); ; +Morison['M2N1FAMyi'] = False # (N/m); ; +Morison['M2N2FAMyi'] = False # (N/m); ; +Morison['M2N3FAMyi'] = False # (N/m); ; +Morison['M2N4FAMyi'] = False # (N/m); ; +Morison['M2N5FAMyi'] = False # (N/m); ; +Morison['M2N6FAMyi'] = False # (N/m); ; +Morison['M2N7FAMyi'] = False # (N/m); ; +Morison['M2N8FAMyi'] = False # (N/m); ; +Morison['M2N9FAMyi'] = False # (N/m); ; +Morison['M3N1FAMyi'] = False # (N/m); ; +Morison['M3N2FAMyi'] = False # (N/m); ; +Morison['M3N3FAMyi'] = False # (N/m); ; +Morison['M3N4FAMyi'] = False # (N/m); ; +Morison['M3N5FAMyi'] = False # (N/m); ; +Morison['M3N6FAMyi'] = False # (N/m); ; +Morison['M3N7FAMyi'] = False # (N/m); ; +Morison['M3N8FAMyi'] = False # (N/m); ; +Morison['M3N9FAMyi'] = False # (N/m); ; +Morison['M4N1FAMyi'] = False # (N/m); ; +Morison['M4N2FAMyi'] = False # (N/m); ; +Morison['M4N3FAMyi'] = False # (N/m); ; +Morison['M4N4FAMyi'] = False # (N/m); ; +Morison['M4N5FAMyi'] = False # (N/m); ; +Morison['M4N6FAMyi'] = False # (N/m); ; +Morison['M4N7FAMyi'] = False # (N/m); ; +Morison['M4N8FAMyi'] = False # (N/m); ; +Morison['M4N9FAMyi'] = False # (N/m); ; +Morison['M5N1FAMyi'] = False # (N/m); ; +Morison['M5N2FAMyi'] = False # (N/m); ; +Morison['M5N3FAMyi'] = False # (N/m); ; +Morison['M5N4FAMyi'] = False # (N/m); ; +Morison['M5N5FAMyi'] = False # (N/m); ; +Morison['M5N6FAMyi'] = False # (N/m); ; +Morison['M5N7FAMyi'] = False # (N/m); ; +Morison['M5N8FAMyi'] = False # (N/m); ; +Morison['M5N9FAMyi'] = False # (N/m); ; +Morison['M6N1FAMyi'] = False # (N/m); ; +Morison['M6N2FAMyi'] = False # (N/m); ; +Morison['M6N3FAMyi'] = False # (N/m); ; +Morison['M6N4FAMyi'] = False # (N/m); ; +Morison['M6N5FAMyi'] = False # (N/m); ; +Morison['M6N6FAMyi'] = False # (N/m); ; +Morison['M6N7FAMyi'] = False # (N/m); ; +Morison['M6N8FAMyi'] = False # (N/m); ; +Morison['M6N9FAMyi'] = False # (N/m); ; +Morison['M7N1FAMyi'] = False # (N/m); ; +Morison['M7N2FAMyi'] = False # (N/m); ; +Morison['M7N3FAMyi'] = False # (N/m); ; +Morison['M7N4FAMyi'] = False # (N/m); ; +Morison['M7N5FAMyi'] = False # (N/m); ; +Morison['M7N6FAMyi'] = False # (N/m); ; +Morison['M7N7FAMyi'] = False # (N/m); ; +Morison['M7N8FAMyi'] = False # (N/m); ; +Morison['M7N9FAMyi'] = False # (N/m); ; +Morison['M8N1FAMyi'] = False # (N/m); ; +Morison['M8N2FAMyi'] = False # (N/m); ; +Morison['M8N3FAMyi'] = False # (N/m); ; +Morison['M8N4FAMyi'] = False # (N/m); ; +Morison['M8N5FAMyi'] = False # (N/m); ; +Morison['M8N6FAMyi'] = False # (N/m); ; +Morison['M8N7FAMyi'] = False # (N/m); ; +Morison['M8N8FAMyi'] = False # (N/m); ; +Morison['M8N9FAMyi'] = False # (N/m); ; +Morison['M9N1FAMyi'] = False # (N/m); ; +Morison['M9N2FAMyi'] = False # (N/m); ; +Morison['M9N3FAMyi'] = False # (N/m); ; +Morison['M9N4FAMyi'] = False # (N/m); ; +Morison['M9N5FAMyi'] = False # (N/m); ; +Morison['M9N6FAMyi'] = False # (N/m); ; +Morison['M9N7FAMyi'] = False # (N/m); ; +Morison['M9N8FAMyi'] = False # (N/m); ; +Morison['M9N9FAMyi'] = False # (N/m); ; +Morison['M1N1FAMzi'] = False # (N/m); z-component of the distributed added mass force due to the member's displacement of the external fluid, expressed in the inertial coordinate system; +Morison['M1N2FAMzi'] = False # (N/m); ; +Morison['M1N3FAMzi'] = False # (N/m); ; +Morison['M1N4FAMzi'] = False # (N/m); ; +Morison['M1N5FAMzi'] = False # (N/m); ; +Morison['M1N6FAMzi'] = False # (N/m); ; +Morison['M1N7FAMzi'] = False # (N/m); ; +Morison['M1N8FAMzi'] = False # (N/m); ; +Morison['M1N9FAMzi'] = False # (N/m); ; +Morison['M2N1FAMzi'] = False # (N/m); ; +Morison['M2N2FAMzi'] = False # (N/m); ; +Morison['M2N3FAMzi'] = False # (N/m); ; +Morison['M2N4FAMzi'] = False # (N/m); ; +Morison['M2N5FAMzi'] = False # (N/m); ; +Morison['M2N6FAMzi'] = False # (N/m); ; +Morison['M2N7FAMzi'] = False # (N/m); ; +Morison['M2N8FAMzi'] = False # (N/m); ; +Morison['M2N9FAMzi'] = False # (N/m); ; +Morison['M3N1FAMzi'] = False # (N/m); ; +Morison['M3N2FAMzi'] = False # (N/m); ; +Morison['M3N3FAMzi'] = False # (N/m); ; +Morison['M3N4FAMzi'] = False # (N/m); ; +Morison['M3N5FAMzi'] = False # (N/m); ; +Morison['M3N6FAMzi'] = False # (N/m); ; +Morison['M3N7FAMzi'] = False # (N/m); ; +Morison['M3N8FAMzi'] = False # (N/m); ; +Morison['M3N9FAMzi'] = False # (N/m); ; +Morison['M4N1FAMzi'] = False # (N/m); ; +Morison['M4N2FAMzi'] = False # (N/m); ; +Morison['M4N3FAMzi'] = False # (N/m); ; +Morison['M4N4FAMzi'] = False # (N/m); ; +Morison['M4N5FAMzi'] = False # (N/m); ; +Morison['M4N6FAMzi'] = False # (N/m); ; +Morison['M4N7FAMzi'] = False # (N/m); ; +Morison['M4N8FAMzi'] = False # (N/m); ; +Morison['M4N9FAMzi'] = False # (N/m); ; +Morison['M5N1FAMzi'] = False # (N/m); ; +Morison['M5N2FAMzi'] = False # (N/m); ; +Morison['M5N3FAMzi'] = False # (N/m); ; +Morison['M5N4FAMzi'] = False # (N/m); ; +Morison['M5N5FAMzi'] = False # (N/m); ; +Morison['M5N6FAMzi'] = False # (N/m); ; +Morison['M5N7FAMzi'] = False # (N/m); ; +Morison['M5N8FAMzi'] = False # (N/m); ; +Morison['M5N9FAMzi'] = False # (N/m); ; +Morison['M6N1FAMzi'] = False # (N/m); ; +Morison['M6N2FAMzi'] = False # (N/m); ; +Morison['M6N3FAMzi'] = False # (N/m); ; +Morison['M6N4FAMzi'] = False # (N/m); ; +Morison['M6N5FAMzi'] = False # (N/m); ; +Morison['M6N6FAMzi'] = False # (N/m); ; +Morison['M6N7FAMzi'] = False # (N/m); ; +Morison['M6N8FAMzi'] = False # (N/m); ; +Morison['M6N9FAMzi'] = False # (N/m); ; +Morison['M7N1FAMzi'] = False # (N/m); ; +Morison['M7N2FAMzi'] = False # (N/m); ; +Morison['M7N3FAMzi'] = False # (N/m); ; +Morison['M7N4FAMzi'] = False # (N/m); ; +Morison['M7N5FAMzi'] = False # (N/m); ; +Morison['M7N6FAMzi'] = False # (N/m); ; +Morison['M7N7FAMzi'] = False # (N/m); ; +Morison['M7N8FAMzi'] = False # (N/m); ; +Morison['M7N9FAMzi'] = False # (N/m); ; +Morison['M8N1FAMzi'] = False # (N/m); ; +Morison['M8N2FAMzi'] = False # (N/m); ; +Morison['M8N3FAMzi'] = False # (N/m); ; +Morison['M8N4FAMzi'] = False # (N/m); ; +Morison['M8N5FAMzi'] = False # (N/m); ; +Morison['M8N6FAMzi'] = False # (N/m); ; +Morison['M8N7FAMzi'] = False # (N/m); ; +Morison['M8N8FAMzi'] = False # (N/m); ; +Morison['M8N9FAMzi'] = False # (N/m); ; +Morison['M9N1FAMzi'] = False # (N/m); ; +Morison['M9N2FAMzi'] = False # (N/m); ; +Morison['M9N3FAMzi'] = False # (N/m); ; +Morison['M9N4FAMzi'] = False # (N/m); ; +Morison['M9N5FAMzi'] = False # (N/m); ; +Morison['M9N6FAMzi'] = False # (N/m); ; +Morison['M9N7FAMzi'] = False # (N/m); ; +Morison['M9N8FAMzi'] = False # (N/m); ; +Morison['M9N9FAMzi'] = False # (N/m); ; +Morison['M1N1FAGxi'] = False # (N/m); x-component of the distributed marine growth mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAGxi'] = False # (N/m); ; +Morison['M1N3FAGxi'] = False # (N/m); ; +Morison['M1N4FAGxi'] = False # (N/m); ; +Morison['M1N5FAGxi'] = False # (N/m); ; +Morison['M1N6FAGxi'] = False # (N/m); ; +Morison['M1N7FAGxi'] = False # (N/m); ; +Morison['M1N8FAGxi'] = False # (N/m); ; +Morison['M1N9FAGxi'] = False # (N/m); ; +Morison['M2N1FAGxi'] = False # (N/m); ; +Morison['M2N2FAGxi'] = False # (N/m); ; +Morison['M2N3FAGxi'] = False # (N/m); ; +Morison['M2N4FAGxi'] = False # (N/m); ; +Morison['M2N5FAGxi'] = False # (N/m); ; +Morison['M2N6FAGxi'] = False # (N/m); ; +Morison['M2N7FAGxi'] = False # (N/m); ; +Morison['M2N8FAGxi'] = False # (N/m); ; +Morison['M2N9FAGxi'] = False # (N/m); ; +Morison['M3N1FAGxi'] = False # (N/m); ; +Morison['M3N2FAGxi'] = False # (N/m); ; +Morison['M3N3FAGxi'] = False # (N/m); ; +Morison['M3N4FAGxi'] = False # (N/m); ; +Morison['M3N5FAGxi'] = False # (N/m); ; +Morison['M3N6FAGxi'] = False # (N/m); ; +Morison['M3N7FAGxi'] = False # (N/m); ; +Morison['M3N8FAGxi'] = False # (N/m); ; +Morison['M3N9FAGxi'] = False # (N/m); ; +Morison['M4N1FAGxi'] = False # (N/m); ; +Morison['M4N2FAGxi'] = False # (N/m); ; +Morison['M4N3FAGxi'] = False # (N/m); ; +Morison['M4N4FAGxi'] = False # (N/m); ; +Morison['M4N5FAGxi'] = False # (N/m); ; +Morison['M4N6FAGxi'] = False # (N/m); ; +Morison['M4N7FAGxi'] = False # (N/m); ; +Morison['M4N8FAGxi'] = False # (N/m); ; +Morison['M4N9FAGxi'] = False # (N/m); ; +Morison['M5N1FAGxi'] = False # (N/m); ; +Morison['M5N2FAGxi'] = False # (N/m); ; +Morison['M5N3FAGxi'] = False # (N/m); ; +Morison['M5N4FAGxi'] = False # (N/m); ; +Morison['M5N5FAGxi'] = False # (N/m); ; +Morison['M5N6FAGxi'] = False # (N/m); ; +Morison['M5N7FAGxi'] = False # (N/m); ; +Morison['M5N8FAGxi'] = False # (N/m); ; +Morison['M5N9FAGxi'] = False # (N/m); ; +Morison['M6N1FAGxi'] = False # (N/m); ; +Morison['M6N2FAGxi'] = False # (N/m); ; +Morison['M6N3FAGxi'] = False # (N/m); ; +Morison['M6N4FAGxi'] = False # (N/m); ; +Morison['M6N5FAGxi'] = False # (N/m); ; +Morison['M6N6FAGxi'] = False # (N/m); ; +Morison['M6N7FAGxi'] = False # (N/m); ; +Morison['M6N8FAGxi'] = False # (N/m); ; +Morison['M6N9FAGxi'] = False # (N/m); ; +Morison['M7N1FAGxi'] = False # (N/m); ; +Morison['M7N2FAGxi'] = False # (N/m); ; +Morison['M7N3FAGxi'] = False # (N/m); ; +Morison['M7N4FAGxi'] = False # (N/m); ; +Morison['M7N5FAGxi'] = False # (N/m); ; +Morison['M7N6FAGxi'] = False # (N/m); ; +Morison['M7N7FAGxi'] = False # (N/m); ; +Morison['M7N8FAGxi'] = False # (N/m); ; +Morison['M7N9FAGxi'] = False # (N/m); ; +Morison['M8N1FAGxi'] = False # (N/m); ; +Morison['M8N2FAGxi'] = False # (N/m); ; +Morison['M8N3FAGxi'] = False # (N/m); ; +Morison['M8N4FAGxi'] = False # (N/m); ; +Morison['M8N5FAGxi'] = False # (N/m); ; +Morison['M8N6FAGxi'] = False # (N/m); ; +Morison['M8N7FAGxi'] = False # (N/m); ; +Morison['M8N8FAGxi'] = False # (N/m); ; +Morison['M8N9FAGxi'] = False # (N/m); ; +Morison['M9N1FAGxi'] = False # (N/m); ; +Morison['M9N2FAGxi'] = False # (N/m); ; +Morison['M9N3FAGxi'] = False # (N/m); ; +Morison['M9N4FAGxi'] = False # (N/m); ; +Morison['M9N5FAGxi'] = False # (N/m); ; +Morison['M9N6FAGxi'] = False # (N/m); ; +Morison['M9N7FAGxi'] = False # (N/m); ; +Morison['M9N8FAGxi'] = False # (N/m); ; +Morison['M9N9FAGxi'] = False # (N/m); ; +Morison['M1N1FAGyi'] = False # (N/m); y-component of the distributed marine growth mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAGyi'] = False # (N/m); ; +Morison['M1N3FAGyi'] = False # (N/m); ; +Morison['M1N4FAGyi'] = False # (N/m); ; +Morison['M1N5FAGyi'] = False # (N/m); ; +Morison['M1N6FAGyi'] = False # (N/m); ; +Morison['M1N7FAGyi'] = False # (N/m); ; +Morison['M1N8FAGyi'] = False # (N/m); ; +Morison['M1N9FAGyi'] = False # (N/m); ; +Morison['M2N1FAGyi'] = False # (N/m); ; +Morison['M2N2FAGyi'] = False # (N/m); ; +Morison['M2N3FAGyi'] = False # (N/m); ; +Morison['M2N4FAGyi'] = False # (N/m); ; +Morison['M2N5FAGyi'] = False # (N/m); ; +Morison['M2N6FAGyi'] = False # (N/m); ; +Morison['M2N7FAGyi'] = False # (N/m); ; +Morison['M2N8FAGyi'] = False # (N/m); ; +Morison['M2N9FAGyi'] = False # (N/m); ; +Morison['M3N1FAGyi'] = False # (N/m); ; +Morison['M3N2FAGyi'] = False # (N/m); ; +Morison['M3N3FAGyi'] = False # (N/m); ; +Morison['M3N4FAGyi'] = False # (N/m); ; +Morison['M3N5FAGyi'] = False # (N/m); ; +Morison['M3N6FAGyi'] = False # (N/m); ; +Morison['M3N7FAGyi'] = False # (N/m); ; +Morison['M3N8FAGyi'] = False # (N/m); ; +Morison['M3N9FAGyi'] = False # (N/m); ; +Morison['M4N1FAGyi'] = False # (N/m); ; +Morison['M4N2FAGyi'] = False # (N/m); ; +Morison['M4N3FAGyi'] = False # (N/m); ; +Morison['M4N4FAGyi'] = False # (N/m); ; +Morison['M4N5FAGyi'] = False # (N/m); ; +Morison['M4N6FAGyi'] = False # (N/m); ; +Morison['M4N7FAGyi'] = False # (N/m); ; +Morison['M4N8FAGyi'] = False # (N/m); ; +Morison['M4N9FAGyi'] = False # (N/m); ; +Morison['M5N1FAGyi'] = False # (N/m); ; +Morison['M5N2FAGyi'] = False # (N/m); ; +Morison['M5N3FAGyi'] = False # (N/m); ; +Morison['M5N4FAGyi'] = False # (N/m); ; +Morison['M5N5FAGyi'] = False # (N/m); ; +Morison['M5N6FAGyi'] = False # (N/m); ; +Morison['M5N7FAGyi'] = False # (N/m); ; +Morison['M5N8FAGyi'] = False # (N/m); ; +Morison['M5N9FAGyi'] = False # (N/m); ; +Morison['M6N1FAGyi'] = False # (N/m); ; +Morison['M6N2FAGyi'] = False # (N/m); ; +Morison['M6N3FAGyi'] = False # (N/m); ; +Morison['M6N4FAGyi'] = False # (N/m); ; +Morison['M6N5FAGyi'] = False # (N/m); ; +Morison['M6N6FAGyi'] = False # (N/m); ; +Morison['M6N7FAGyi'] = False # (N/m); ; +Morison['M6N8FAGyi'] = False # (N/m); ; +Morison['M6N9FAGyi'] = False # (N/m); ; +Morison['M7N1FAGyi'] = False # (N/m); ; +Morison['M7N2FAGyi'] = False # (N/m); ; +Morison['M7N3FAGyi'] = False # (N/m); ; +Morison['M7N4FAGyi'] = False # (N/m); ; +Morison['M7N5FAGyi'] = False # (N/m); ; +Morison['M7N6FAGyi'] = False # (N/m); ; +Morison['M7N7FAGyi'] = False # (N/m); ; +Morison['M7N8FAGyi'] = False # (N/m); ; +Morison['M7N9FAGyi'] = False # (N/m); ; +Morison['M8N1FAGyi'] = False # (N/m); ; +Morison['M8N2FAGyi'] = False # (N/m); ; +Morison['M8N3FAGyi'] = False # (N/m); ; +Morison['M8N4FAGyi'] = False # (N/m); ; +Morison['M8N5FAGyi'] = False # (N/m); ; +Morison['M8N6FAGyi'] = False # (N/m); ; +Morison['M8N7FAGyi'] = False # (N/m); ; +Morison['M8N8FAGyi'] = False # (N/m); ; +Morison['M8N9FAGyi'] = False # (N/m); ; +Morison['M9N1FAGyi'] = False # (N/m); ; +Morison['M9N2FAGyi'] = False # (N/m); ; +Morison['M9N3FAGyi'] = False # (N/m); ; +Morison['M9N4FAGyi'] = False # (N/m); ; +Morison['M9N5FAGyi'] = False # (N/m); ; +Morison['M9N6FAGyi'] = False # (N/m); ; +Morison['M9N7FAGyi'] = False # (N/m); ; +Morison['M9N8FAGyi'] = False # (N/m); ; +Morison['M9N9FAGyi'] = False # (N/m); ; +Morison['M1N1FAGzi'] = False # (N/m); z-component of the distributed marine growth mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAGzi'] = False # (N/m); ; +Morison['M1N3FAGzi'] = False # (N/m); ; +Morison['M1N4FAGzi'] = False # (N/m); ; +Morison['M1N5FAGzi'] = False # (N/m); ; +Morison['M1N6FAGzi'] = False # (N/m); ; +Morison['M1N7FAGzi'] = False # (N/m); ; +Morison['M1N8FAGzi'] = False # (N/m); ; +Morison['M1N9FAGzi'] = False # (N/m); ; +Morison['M2N1FAGzi'] = False # (N/m); ; +Morison['M2N2FAGzi'] = False # (N/m); ; +Morison['M2N3FAGzi'] = False # (N/m); ; +Morison['M2N4FAGzi'] = False # (N/m); ; +Morison['M2N5FAGzi'] = False # (N/m); ; +Morison['M2N6FAGzi'] = False # (N/m); ; +Morison['M2N7FAGzi'] = False # (N/m); ; +Morison['M2N8FAGzi'] = False # (N/m); ; +Morison['M2N9FAGzi'] = False # (N/m); ; +Morison['M3N1FAGzi'] = False # (N/m); ; +Morison['M3N2FAGzi'] = False # (N/m); ; +Morison['M3N3FAGzi'] = False # (N/m); ; +Morison['M3N4FAGzi'] = False # (N/m); ; +Morison['M3N5FAGzi'] = False # (N/m); ; +Morison['M3N6FAGzi'] = False # (N/m); ; +Morison['M3N7FAGzi'] = False # (N/m); ; +Morison['M3N8FAGzi'] = False # (N/m); ; +Morison['M3N9FAGzi'] = False # (N/m); ; +Morison['M4N1FAGzi'] = False # (N/m); ; +Morison['M4N2FAGzi'] = False # (N/m); ; +Morison['M4N3FAGzi'] = False # (N/m); ; +Morison['M4N4FAGzi'] = False # (N/m); ; +Morison['M4N5FAGzi'] = False # (N/m); ; +Morison['M4N6FAGzi'] = False # (N/m); ; +Morison['M4N7FAGzi'] = False # (N/m); ; +Morison['M4N8FAGzi'] = False # (N/m); ; +Morison['M4N9FAGzi'] = False # (N/m); ; +Morison['M5N1FAGzi'] = False # (N/m); ; +Morison['M5N2FAGzi'] = False # (N/m); ; +Morison['M5N3FAGzi'] = False # (N/m); ; +Morison['M5N4FAGzi'] = False # (N/m); ; +Morison['M5N5FAGzi'] = False # (N/m); ; +Morison['M5N6FAGzi'] = False # (N/m); ; +Morison['M5N7FAGzi'] = False # (N/m); ; +Morison['M5N8FAGzi'] = False # (N/m); ; +Morison['M5N9FAGzi'] = False # (N/m); ; +Morison['M6N1FAGzi'] = False # (N/m); ; +Morison['M6N2FAGzi'] = False # (N/m); ; +Morison['M6N3FAGzi'] = False # (N/m); ; +Morison['M6N4FAGzi'] = False # (N/m); ; +Morison['M6N5FAGzi'] = False # (N/m); ; +Morison['M6N6FAGzi'] = False # (N/m); ; +Morison['M6N7FAGzi'] = False # (N/m); ; +Morison['M6N8FAGzi'] = False # (N/m); ; +Morison['M6N9FAGzi'] = False # (N/m); ; +Morison['M7N1FAGzi'] = False # (N/m); ; +Morison['M7N2FAGzi'] = False # (N/m); ; +Morison['M7N3FAGzi'] = False # (N/m); ; +Morison['M7N4FAGzi'] = False # (N/m); ; +Morison['M7N5FAGzi'] = False # (N/m); ; +Morison['M7N6FAGzi'] = False # (N/m); ; +Morison['M7N7FAGzi'] = False # (N/m); ; +Morison['M7N8FAGzi'] = False # (N/m); ; +Morison['M7N9FAGzi'] = False # (N/m); ; +Morison['M8N1FAGzi'] = False # (N/m); ; +Morison['M8N2FAGzi'] = False # (N/m); ; +Morison['M8N3FAGzi'] = False # (N/m); ; +Morison['M8N4FAGzi'] = False # (N/m); ; +Morison['M8N5FAGzi'] = False # (N/m); ; +Morison['M8N6FAGzi'] = False # (N/m); ; +Morison['M8N7FAGzi'] = False # (N/m); ; +Morison['M8N8FAGzi'] = False # (N/m); ; +Morison['M8N9FAGzi'] = False # (N/m); ; +Morison['M9N1FAGzi'] = False # (N/m); ; +Morison['M9N2FAGzi'] = False # (N/m); ; +Morison['M9N3FAGzi'] = False # (N/m); ; +Morison['M9N4FAGzi'] = False # (N/m); ; +Morison['M9N5FAGzi'] = False # (N/m); ; +Morison['M9N6FAGzi'] = False # (N/m); ; +Morison['M9N7FAGzi'] = False # (N/m); ; +Morison['M9N8FAGzi'] = False # (N/m); ; +Morison['M9N9FAGzi'] = False # (N/m); ; +Morison['M1N1MAGxi'] = False # (N-m/m); x-component of the distributed marine growth mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAGxi'] = False # (N-m/m); ; +Morison['M1N3MAGxi'] = False # (N-m/m); ; +Morison['M1N4MAGxi'] = False # (N-m/m); ; +Morison['M1N5MAGxi'] = False # (N-m/m); ; +Morison['M1N6MAGxi'] = False # (N-m/m); ; +Morison['M1N7MAGxi'] = False # (N-m/m); ; +Morison['M1N8MAGxi'] = False # (N-m/m); ; +Morison['M1N9MAGxi'] = False # (N-m/m); ; +Morison['M2N1MAGxi'] = False # (N-m/m); ; +Morison['M2N2MAGxi'] = False # (N-m/m); ; +Morison['M2N3MAGxi'] = False # (N-m/m); ; +Morison['M2N4MAGxi'] = False # (N-m/m); ; +Morison['M2N5MAGxi'] = False # (N-m/m); ; +Morison['M2N6MAGxi'] = False # (N-m/m); ; +Morison['M2N7MAGxi'] = False # (N-m/m); ; +Morison['M2N8MAGxi'] = False # (N-m/m); ; +Morison['M2N9MAGxi'] = False # (N-m/m); ; +Morison['M3N1MAGxi'] = False # (N-m/m); ; +Morison['M3N2MAGxi'] = False # (N-m/m); ; +Morison['M3N3MAGxi'] = False # (N-m/m); ; +Morison['M3N4MAGxi'] = False # (N-m/m); ; +Morison['M3N5MAGxi'] = False # (N-m/m); ; +Morison['M3N6MAGxi'] = False # (N-m/m); ; +Morison['M3N7MAGxi'] = False # (N-m/m); ; +Morison['M3N8MAGxi'] = False # (N-m/m); ; +Morison['M3N9MAGxi'] = False # (N-m/m); ; +Morison['M4N1MAGxi'] = False # (N-m/m); ; +Morison['M4N2MAGxi'] = False # (N-m/m); ; +Morison['M4N3MAGxi'] = False # (N-m/m); ; +Morison['M4N4MAGxi'] = False # (N-m/m); ; +Morison['M4N5MAGxi'] = False # (N-m/m); ; +Morison['M4N6MAGxi'] = False # (N-m/m); ; +Morison['M4N7MAGxi'] = False # (N-m/m); ; +Morison['M4N8MAGxi'] = False # (N-m/m); ; +Morison['M4N9MAGxi'] = False # (N-m/m); ; +Morison['M5N1MAGxi'] = False # (N-m/m); ; +Morison['M5N2MAGxi'] = False # (N-m/m); ; +Morison['M5N3MAGxi'] = False # (N-m/m); ; +Morison['M5N4MAGxi'] = False # (N-m/m); ; +Morison['M5N5MAGxi'] = False # (N-m/m); ; +Morison['M5N6MAGxi'] = False # (N-m/m); ; +Morison['M5N7MAGxi'] = False # (N-m/m); ; +Morison['M5N8MAGxi'] = False # (N-m/m); ; +Morison['M5N9MAGxi'] = False # (N-m/m); ; +Morison['M6N1MAGxi'] = False # (N-m/m); ; +Morison['M6N2MAGxi'] = False # (N-m/m); ; +Morison['M6N3MAGxi'] = False # (N-m/m); ; +Morison['M6N4MAGxi'] = False # (N-m/m); ; +Morison['M6N5MAGxi'] = False # (N-m/m); ; +Morison['M6N6MAGxi'] = False # (N-m/m); ; +Morison['M6N7MAGxi'] = False # (N-m/m); ; +Morison['M6N8MAGxi'] = False # (N-m/m); ; +Morison['M6N9MAGxi'] = False # (N-m/m); ; +Morison['M7N1MAGxi'] = False # (N-m/m); ; +Morison['M7N2MAGxi'] = False # (N-m/m); ; +Morison['M7N3MAGxi'] = False # (N-m/m); ; +Morison['M7N4MAGxi'] = False # (N-m/m); ; +Morison['M7N5MAGxi'] = False # (N-m/m); ; +Morison['M7N6MAGxi'] = False # (N-m/m); ; +Morison['M7N7MAGxi'] = False # (N-m/m); ; +Morison['M7N8MAGxi'] = False # (N-m/m); ; +Morison['M7N9MAGxi'] = False # (N-m/m); ; +Morison['M8N1MAGxi'] = False # (N-m/m); ; +Morison['M8N2MAGxi'] = False # (N-m/m); ; +Morison['M8N3MAGxi'] = False # (N-m/m); ; +Morison['M8N4MAGxi'] = False # (N-m/m); ; +Morison['M8N5MAGxi'] = False # (N-m/m); ; +Morison['M8N6MAGxi'] = False # (N-m/m); ; +Morison['M8N7MAGxi'] = False # (N-m/m); ; +Morison['M8N8MAGxi'] = False # (N-m/m); ; +Morison['M8N9MAGxi'] = False # (N-m/m); ; +Morison['M9N1MAGxi'] = False # (N-m/m); ; +Morison['M9N2MAGxi'] = False # (N-m/m); ; +Morison['M9N3MAGxi'] = False # (N-m/m); ; +Morison['M9N4MAGxi'] = False # (N-m/m); ; +Morison['M9N5MAGxi'] = False # (N-m/m); ; +Morison['M9N6MAGxi'] = False # (N-m/m); ; +Morison['M9N7MAGxi'] = False # (N-m/m); ; +Morison['M9N8MAGxi'] = False # (N-m/m); ; +Morison['M9N9MAGxi'] = False # (N-m/m); ; +Morison['M1N1MAGyi'] = False # (N-m/m); y-component of the distributed marine growth mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAGyi'] = False # (N-m/m); ; +Morison['M1N3MAGyi'] = False # (N-m/m); ; +Morison['M1N4MAGyi'] = False # (N-m/m); ; +Morison['M1N5MAGyi'] = False # (N-m/m); ; +Morison['M1N6MAGyi'] = False # (N-m/m); ; +Morison['M1N7MAGyi'] = False # (N-m/m); ; +Morison['M1N8MAGyi'] = False # (N-m/m); ; +Morison['M1N9MAGyi'] = False # (N-m/m); ; +Morison['M2N1MAGyi'] = False # (N-m/m); ; +Morison['M2N2MAGyi'] = False # (N-m/m); ; +Morison['M2N3MAGyi'] = False # (N-m/m); ; +Morison['M2N4MAGyi'] = False # (N-m/m); ; +Morison['M2N5MAGyi'] = False # (N-m/m); ; +Morison['M2N6MAGyi'] = False # (N-m/m); ; +Morison['M2N7MAGyi'] = False # (N-m/m); ; +Morison['M2N8MAGyi'] = False # (N-m/m); ; +Morison['M2N9MAGyi'] = False # (N-m/m); ; +Morison['M3N1MAGyi'] = False # (N-m/m); ; +Morison['M3N2MAGyi'] = False # (N-m/m); ; +Morison['M3N3MAGyi'] = False # (N-m/m); ; +Morison['M3N4MAGyi'] = False # (N-m/m); ; +Morison['M3N5MAGyi'] = False # (N-m/m); ; +Morison['M3N6MAGyi'] = False # (N-m/m); ; +Morison['M3N7MAGyi'] = False # (N-m/m); ; +Morison['M3N8MAGyi'] = False # (N-m/m); ; +Morison['M3N9MAGyi'] = False # (N-m/m); ; +Morison['M4N1MAGyi'] = False # (N-m/m); ; +Morison['M4N2MAGyi'] = False # (N-m/m); ; +Morison['M4N3MAGyi'] = False # (N-m/m); ; +Morison['M4N4MAGyi'] = False # (N-m/m); ; +Morison['M4N5MAGyi'] = False # (N-m/m); ; +Morison['M4N6MAGyi'] = False # (N-m/m); ; +Morison['M4N7MAGyi'] = False # (N-m/m); ; +Morison['M4N8MAGyi'] = False # (N-m/m); ; +Morison['M4N9MAGyi'] = False # (N-m/m); ; +Morison['M5N1MAGyi'] = False # (N-m/m); ; +Morison['M5N2MAGyi'] = False # (N-m/m); ; +Morison['M5N3MAGyi'] = False # (N-m/m); ; +Morison['M5N4MAGyi'] = False # (N-m/m); ; +Morison['M5N5MAGyi'] = False # (N-m/m); ; +Morison['M5N6MAGyi'] = False # (N-m/m); ; +Morison['M5N7MAGyi'] = False # (N-m/m); ; +Morison['M5N8MAGyi'] = False # (N-m/m); ; +Morison['M5N9MAGyi'] = False # (N-m/m); ; +Morison['M6N1MAGyi'] = False # (N-m/m); ; +Morison['M6N2MAGyi'] = False # (N-m/m); ; +Morison['M6N3MAGyi'] = False # (N-m/m); ; +Morison['M6N4MAGyi'] = False # (N-m/m); ; +Morison['M6N5MAGyi'] = False # (N-m/m); ; +Morison['M6N6MAGyi'] = False # (N-m/m); ; +Morison['M6N7MAGyi'] = False # (N-m/m); ; +Morison['M6N8MAGyi'] = False # (N-m/m); ; +Morison['M6N9MAGyi'] = False # (N-m/m); ; +Morison['M7N1MAGyi'] = False # (N-m/m); ; +Morison['M7N2MAGyi'] = False # (N-m/m); ; +Morison['M7N3MAGyi'] = False # (N-m/m); ; +Morison['M7N4MAGyi'] = False # (N-m/m); ; +Morison['M7N5MAGyi'] = False # (N-m/m); ; +Morison['M7N6MAGyi'] = False # (N-m/m); ; +Morison['M7N7MAGyi'] = False # (N-m/m); ; +Morison['M7N8MAGyi'] = False # (N-m/m); ; +Morison['M7N9MAGyi'] = False # (N-m/m); ; +Morison['M8N1MAGyi'] = False # (N-m/m); ; +Morison['M8N2MAGyi'] = False # (N-m/m); ; +Morison['M8N3MAGyi'] = False # (N-m/m); ; +Morison['M8N4MAGyi'] = False # (N-m/m); ; +Morison['M8N5MAGyi'] = False # (N-m/m); ; +Morison['M8N6MAGyi'] = False # (N-m/m); ; +Morison['M8N7MAGyi'] = False # (N-m/m); ; +Morison['M8N8MAGyi'] = False # (N-m/m); ; +Morison['M8N9MAGyi'] = False # (N-m/m); ; +Morison['M9N1MAGyi'] = False # (N-m/m); ; +Morison['M9N2MAGyi'] = False # (N-m/m); ; +Morison['M9N3MAGyi'] = False # (N-m/m); ; +Morison['M9N4MAGyi'] = False # (N-m/m); ; +Morison['M9N5MAGyi'] = False # (N-m/m); ; +Morison['M9N6MAGyi'] = False # (N-m/m); ; +Morison['M9N7MAGyi'] = False # (N-m/m); ; +Morison['M9N8MAGyi'] = False # (N-m/m); ; +Morison['M9N9MAGyi'] = False # (N-m/m); ; +Morison['M1N1MAGzi'] = False # (N-m/m); z-component of the distributed marine growth mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAGzi'] = False # (N-m/m); ; +Morison['M1N3MAGzi'] = False # (N-m/m); ; +Morison['M1N4MAGzi'] = False # (N-m/m); ; +Morison['M1N5MAGzi'] = False # (N-m/m); ; +Morison['M1N6MAGzi'] = False # (N-m/m); ; +Morison['M1N7MAGzi'] = False # (N-m/m); ; +Morison['M1N8MAGzi'] = False # (N-m/m); ; +Morison['M1N9MAGzi'] = False # (N-m/m); ; +Morison['M2N1MAGzi'] = False # (N-m/m); ; +Morison['M2N2MAGzi'] = False # (N-m/m); ; +Morison['M2N3MAGzi'] = False # (N-m/m); ; +Morison['M2N4MAGzi'] = False # (N-m/m); ; +Morison['M2N5MAGzi'] = False # (N-m/m); ; +Morison['M2N6MAGzi'] = False # (N-m/m); ; +Morison['M2N7MAGzi'] = False # (N-m/m); ; +Morison['M2N8MAGzi'] = False # (N-m/m); ; +Morison['M2N9MAGzi'] = False # (N-m/m); ; +Morison['M3N1MAGzi'] = False # (N-m/m); ; +Morison['M3N2MAGzi'] = False # (N-m/m); ; +Morison['M3N3MAGzi'] = False # (N-m/m); ; +Morison['M3N4MAGzi'] = False # (N-m/m); ; +Morison['M3N5MAGzi'] = False # (N-m/m); ; +Morison['M3N6MAGzi'] = False # (N-m/m); ; +Morison['M3N7MAGzi'] = False # (N-m/m); ; +Morison['M3N8MAGzi'] = False # (N-m/m); ; +Morison['M3N9MAGzi'] = False # (N-m/m); ; +Morison['M4N1MAGzi'] = False # (N-m/m); ; +Morison['M4N2MAGzi'] = False # (N-m/m); ; +Morison['M4N3MAGzi'] = False # (N-m/m); ; +Morison['M4N4MAGzi'] = False # (N-m/m); ; +Morison['M4N5MAGzi'] = False # (N-m/m); ; +Morison['M4N6MAGzi'] = False # (N-m/m); ; +Morison['M4N7MAGzi'] = False # (N-m/m); ; +Morison['M4N8MAGzi'] = False # (N-m/m); ; +Morison['M4N9MAGzi'] = False # (N-m/m); ; +Morison['M5N1MAGzi'] = False # (N-m/m); ; +Morison['M5N2MAGzi'] = False # (N-m/m); ; +Morison['M5N3MAGzi'] = False # (N-m/m); ; +Morison['M5N4MAGzi'] = False # (N-m/m); ; +Morison['M5N5MAGzi'] = False # (N-m/m); ; +Morison['M5N6MAGzi'] = False # (N-m/m); ; +Morison['M5N7MAGzi'] = False # (N-m/m); ; +Morison['M5N8MAGzi'] = False # (N-m/m); ; +Morison['M5N9MAGzi'] = False # (N-m/m); ; +Morison['M6N1MAGzi'] = False # (N-m/m); ; +Morison['M6N2MAGzi'] = False # (N-m/m); ; +Morison['M6N3MAGzi'] = False # (N-m/m); ; +Morison['M6N4MAGzi'] = False # (N-m/m); ; +Morison['M6N5MAGzi'] = False # (N-m/m); ; +Morison['M6N6MAGzi'] = False # (N-m/m); ; +Morison['M6N7MAGzi'] = False # (N-m/m); ; +Morison['M6N8MAGzi'] = False # (N-m/m); ; +Morison['M6N9MAGzi'] = False # (N-m/m); ; +Morison['M7N1MAGzi'] = False # (N-m/m); ; +Morison['M7N2MAGzi'] = False # (N-m/m); ; +Morison['M7N3MAGzi'] = False # (N-m/m); ; +Morison['M7N4MAGzi'] = False # (N-m/m); ; +Morison['M7N5MAGzi'] = False # (N-m/m); ; +Morison['M7N6MAGzi'] = False # (N-m/m); ; +Morison['M7N7MAGzi'] = False # (N-m/m); ; +Morison['M7N8MAGzi'] = False # (N-m/m); ; +Morison['M7N9MAGzi'] = False # (N-m/m); ; +Morison['M8N1MAGzi'] = False # (N-m/m); ; +Morison['M8N2MAGzi'] = False # (N-m/m); ; +Morison['M8N3MAGzi'] = False # (N-m/m); ; +Morison['M8N4MAGzi'] = False # (N-m/m); ; +Morison['M8N5MAGzi'] = False # (N-m/m); ; +Morison['M8N6MAGzi'] = False # (N-m/m); ; +Morison['M8N7MAGzi'] = False # (N-m/m); ; +Morison['M8N8MAGzi'] = False # (N-m/m); ; +Morison['M8N9MAGzi'] = False # (N-m/m); ; +Morison['M9N1MAGzi'] = False # (N-m/m); ; +Morison['M9N2MAGzi'] = False # (N-m/m); ; +Morison['M9N3MAGzi'] = False # (N-m/m); ; +Morison['M9N4MAGzi'] = False # (N-m/m); ; +Morison['M9N5MAGzi'] = False # (N-m/m); ; +Morison['M9N6MAGzi'] = False # (N-m/m); ; +Morison['M9N7MAGzi'] = False # (N-m/m); ; +Morison['M9N8MAGzi'] = False # (N-m/m); ; +Morison['M9N9MAGzi'] = False # (N-m/m); ; +Morison['M1N1FAFxi'] = False # (N/m); x-component of the distributed flooding/ballasting mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAFxi'] = False # (N/m); ; +Morison['M1N3FAFxi'] = False # (N/m); ; +Morison['M1N4FAFxi'] = False # (N/m); ; +Morison['M1N5FAFxi'] = False # (N/m); ; +Morison['M1N6FAFxi'] = False # (N/m); ; +Morison['M1N7FAFxi'] = False # (N/m); ; +Morison['M1N8FAFxi'] = False # (N/m); ; +Morison['M1N9FAFxi'] = False # (N/m); ; +Morison['M2N1FAFxi'] = False # (N/m); ; +Morison['M2N2FAFxi'] = False # (N/m); ; +Morison['M2N3FAFxi'] = False # (N/m); ; +Morison['M2N4FAFxi'] = False # (N/m); ; +Morison['M2N5FAFxi'] = False # (N/m); ; +Morison['M2N6FAFxi'] = False # (N/m); ; +Morison['M2N7FAFxi'] = False # (N/m); ; +Morison['M2N8FAFxi'] = False # (N/m); ; +Morison['M2N9FAFxi'] = False # (N/m); ; +Morison['M3N1FAFxi'] = False # (N/m); ; +Morison['M3N2FAFxi'] = False # (N/m); ; +Morison['M3N3FAFxi'] = False # (N/m); ; +Morison['M3N4FAFxi'] = False # (N/m); ; +Morison['M3N5FAFxi'] = False # (N/m); ; +Morison['M3N6FAFxi'] = False # (N/m); ; +Morison['M3N7FAFxi'] = False # (N/m); ; +Morison['M3N8FAFxi'] = False # (N/m); ; +Morison['M3N9FAFxi'] = False # (N/m); ; +Morison['M4N1FAFxi'] = False # (N/m); ; +Morison['M4N2FAFxi'] = False # (N/m); ; +Morison['M4N3FAFxi'] = False # (N/m); ; +Morison['M4N4FAFxi'] = False # (N/m); ; +Morison['M4N5FAFxi'] = False # (N/m); ; +Morison['M4N6FAFxi'] = False # (N/m); ; +Morison['M4N7FAFxi'] = False # (N/m); ; +Morison['M4N8FAFxi'] = False # (N/m); ; +Morison['M4N9FAFxi'] = False # (N/m); ; +Morison['M5N1FAFxi'] = False # (N/m); ; +Morison['M5N2FAFxi'] = False # (N/m); ; +Morison['M5N3FAFxi'] = False # (N/m); ; +Morison['M5N4FAFxi'] = False # (N/m); ; +Morison['M5N5FAFxi'] = False # (N/m); ; +Morison['M5N6FAFxi'] = False # (N/m); ; +Morison['M5N7FAFxi'] = False # (N/m); ; +Morison['M5N8FAFxi'] = False # (N/m); ; +Morison['M5N9FAFxi'] = False # (N/m); ; +Morison['M6N1FAFxi'] = False # (N/m); ; +Morison['M6N2FAFxi'] = False # (N/m); ; +Morison['M6N3FAFxi'] = False # (N/m); ; +Morison['M6N4FAFxi'] = False # (N/m); ; +Morison['M6N5FAFxi'] = False # (N/m); ; +Morison['M6N6FAFxi'] = False # (N/m); ; +Morison['M6N7FAFxi'] = False # (N/m); ; +Morison['M6N8FAFxi'] = False # (N/m); ; +Morison['M6N9FAFxi'] = False # (N/m); ; +Morison['M7N1FAFxi'] = False # (N/m); ; +Morison['M7N2FAFxi'] = False # (N/m); ; +Morison['M7N3FAFxi'] = False # (N/m); ; +Morison['M7N4FAFxi'] = False # (N/m); ; +Morison['M7N5FAFxi'] = False # (N/m); ; +Morison['M7N6FAFxi'] = False # (N/m); ; +Morison['M7N7FAFxi'] = False # (N/m); ; +Morison['M7N8FAFxi'] = False # (N/m); ; +Morison['M7N9FAFxi'] = False # (N/m); ; +Morison['M8N1FAFxi'] = False # (N/m); ; +Morison['M8N2FAFxi'] = False # (N/m); ; +Morison['M8N3FAFxi'] = False # (N/m); ; +Morison['M8N4FAFxi'] = False # (N/m); ; +Morison['M8N5FAFxi'] = False # (N/m); ; +Morison['M8N6FAFxi'] = False # (N/m); ; +Morison['M8N7FAFxi'] = False # (N/m); ; +Morison['M8N8FAFxi'] = False # (N/m); ; +Morison['M8N9FAFxi'] = False # (N/m); ; +Morison['M9N1FAFxi'] = False # (N/m); ; +Morison['M9N2FAFxi'] = False # (N/m); ; +Morison['M9N3FAFxi'] = False # (N/m); ; +Morison['M9N4FAFxi'] = False # (N/m); ; +Morison['M9N5FAFxi'] = False # (N/m); ; +Morison['M9N6FAFxi'] = False # (N/m); ; +Morison['M9N7FAFxi'] = False # (N/m); ; +Morison['M9N8FAFxi'] = False # (N/m); ; +Morison['M9N9FAFxi'] = False # (N/m); ; +Morison['M1N1FAFyi'] = False # (N/m); y-component of the distributed flooding/ballasting mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAFyi'] = False # (N/m); ; +Morison['M1N3FAFyi'] = False # (N/m); ; +Morison['M1N4FAFyi'] = False # (N/m); ; +Morison['M1N5FAFyi'] = False # (N/m); ; +Morison['M1N6FAFyi'] = False # (N/m); ; +Morison['M1N7FAFyi'] = False # (N/m); ; +Morison['M1N8FAFyi'] = False # (N/m); ; +Morison['M1N9FAFyi'] = False # (N/m); ; +Morison['M2N1FAFyi'] = False # (N/m); ; +Morison['M2N2FAFyi'] = False # (N/m); ; +Morison['M2N3FAFyi'] = False # (N/m); ; +Morison['M2N4FAFyi'] = False # (N/m); ; +Morison['M2N5FAFyi'] = False # (N/m); ; +Morison['M2N6FAFyi'] = False # (N/m); ; +Morison['M2N7FAFyi'] = False # (N/m); ; +Morison['M2N8FAFyi'] = False # (N/m); ; +Morison['M2N9FAFyi'] = False # (N/m); ; +Morison['M3N1FAFyi'] = False # (N/m); ; +Morison['M3N2FAFyi'] = False # (N/m); ; +Morison['M3N3FAFyi'] = False # (N/m); ; +Morison['M3N4FAFyi'] = False # (N/m); ; +Morison['M3N5FAFyi'] = False # (N/m); ; +Morison['M3N6FAFyi'] = False # (N/m); ; +Morison['M3N7FAFyi'] = False # (N/m); ; +Morison['M3N8FAFyi'] = False # (N/m); ; +Morison['M3N9FAFyi'] = False # (N/m); ; +Morison['M4N1FAFyi'] = False # (N/m); ; +Morison['M4N2FAFyi'] = False # (N/m); ; +Morison['M4N3FAFyi'] = False # (N/m); ; +Morison['M4N4FAFyi'] = False # (N/m); ; +Morison['M4N5FAFyi'] = False # (N/m); ; +Morison['M4N6FAFyi'] = False # (N/m); ; +Morison['M4N7FAFyi'] = False # (N/m); ; +Morison['M4N8FAFyi'] = False # (N/m); ; +Morison['M4N9FAFyi'] = False # (N/m); ; +Morison['M5N1FAFyi'] = False # (N/m); ; +Morison['M5N2FAFyi'] = False # (N/m); ; +Morison['M5N3FAFyi'] = False # (N/m); ; +Morison['M5N4FAFyi'] = False # (N/m); ; +Morison['M5N5FAFyi'] = False # (N/m); ; +Morison['M5N6FAFyi'] = False # (N/m); ; +Morison['M5N7FAFyi'] = False # (N/m); ; +Morison['M5N8FAFyi'] = False # (N/m); ; +Morison['M5N9FAFyi'] = False # (N/m); ; +Morison['M6N1FAFyi'] = False # (N/m); ; +Morison['M6N2FAFyi'] = False # (N/m); ; +Morison['M6N3FAFyi'] = False # (N/m); ; +Morison['M6N4FAFyi'] = False # (N/m); ; +Morison['M6N5FAFyi'] = False # (N/m); ; +Morison['M6N6FAFyi'] = False # (N/m); ; +Morison['M6N7FAFyi'] = False # (N/m); ; +Morison['M6N8FAFyi'] = False # (N/m); ; +Morison['M6N9FAFyi'] = False # (N/m); ; +Morison['M7N1FAFyi'] = False # (N/m); ; +Morison['M7N2FAFyi'] = False # (N/m); ; +Morison['M7N3FAFyi'] = False # (N/m); ; +Morison['M7N4FAFyi'] = False # (N/m); ; +Morison['M7N5FAFyi'] = False # (N/m); ; +Morison['M7N6FAFyi'] = False # (N/m); ; +Morison['M7N7FAFyi'] = False # (N/m); ; +Morison['M7N8FAFyi'] = False # (N/m); ; +Morison['M7N9FAFyi'] = False # (N/m); ; +Morison['M8N1FAFyi'] = False # (N/m); ; +Morison['M8N2FAFyi'] = False # (N/m); ; +Morison['M8N3FAFyi'] = False # (N/m); ; +Morison['M8N4FAFyi'] = False # (N/m); ; +Morison['M8N5FAFyi'] = False # (N/m); ; +Morison['M8N6FAFyi'] = False # (N/m); ; +Morison['M8N7FAFyi'] = False # (N/m); ; +Morison['M8N8FAFyi'] = False # (N/m); ; +Morison['M8N9FAFyi'] = False # (N/m); ; +Morison['M9N1FAFyi'] = False # (N/m); ; +Morison['M9N2FAFyi'] = False # (N/m); ; +Morison['M9N3FAFyi'] = False # (N/m); ; +Morison['M9N4FAFyi'] = False # (N/m); ; +Morison['M9N5FAFyi'] = False # (N/m); ; +Morison['M9N6FAFyi'] = False # (N/m); ; +Morison['M9N7FAFyi'] = False # (N/m); ; +Morison['M9N8FAFyi'] = False # (N/m); ; +Morison['M9N9FAFyi'] = False # (N/m); ; +Morison['M1N1FAFzi'] = False # (N/m); z-component of the distributed flooding/ballasting mass inertia force, expressed in the inertial coordinate system; +Morison['M1N2FAFzi'] = False # (N/m); ; +Morison['M1N3FAFzi'] = False # (N/m); ; +Morison['M1N4FAFzi'] = False # (N/m); ; +Morison['M1N5FAFzi'] = False # (N/m); ; +Morison['M1N6FAFzi'] = False # (N/m); ; +Morison['M1N7FAFzi'] = False # (N/m); ; +Morison['M1N8FAFzi'] = False # (N/m); ; +Morison['M1N9FAFzi'] = False # (N/m); ; +Morison['M2N1FAFzi'] = False # (N/m); ; +Morison['M2N2FAFzi'] = False # (N/m); ; +Morison['M2N3FAFzi'] = False # (N/m); ; +Morison['M2N4FAFzi'] = False # (N/m); ; +Morison['M2N5FAFzi'] = False # (N/m); ; +Morison['M2N6FAFzi'] = False # (N/m); ; +Morison['M2N7FAFzi'] = False # (N/m); ; +Morison['M2N8FAFzi'] = False # (N/m); ; +Morison['M2N9FAFzi'] = False # (N/m); ; +Morison['M3N1FAFzi'] = False # (N/m); ; +Morison['M3N2FAFzi'] = False # (N/m); ; +Morison['M3N3FAFzi'] = False # (N/m); ; +Morison['M3N4FAFzi'] = False # (N/m); ; +Morison['M3N5FAFzi'] = False # (N/m); ; +Morison['M3N6FAFzi'] = False # (N/m); ; +Morison['M3N7FAFzi'] = False # (N/m); ; +Morison['M3N8FAFzi'] = False # (N/m); ; +Morison['M3N9FAFzi'] = False # (N/m); ; +Morison['M4N1FAFzi'] = False # (N/m); ; +Morison['M4N2FAFzi'] = False # (N/m); ; +Morison['M4N3FAFzi'] = False # (N/m); ; +Morison['M4N4FAFzi'] = False # (N/m); ; +Morison['M4N5FAFzi'] = False # (N/m); ; +Morison['M4N6FAFzi'] = False # (N/m); ; +Morison['M4N7FAFzi'] = False # (N/m); ; +Morison['M4N8FAFzi'] = False # (N/m); ; +Morison['M4N9FAFzi'] = False # (N/m); ; +Morison['M5N1FAFzi'] = False # (N/m); ; +Morison['M5N2FAFzi'] = False # (N/m); ; +Morison['M5N3FAFzi'] = False # (N/m); ; +Morison['M5N4FAFzi'] = False # (N/m); ; +Morison['M5N5FAFzi'] = False # (N/m); ; +Morison['M5N6FAFzi'] = False # (N/m); ; +Morison['M5N7FAFzi'] = False # (N/m); ; +Morison['M5N8FAFzi'] = False # (N/m); ; +Morison['M5N9FAFzi'] = False # (N/m); ; +Morison['M6N1FAFzi'] = False # (N/m); ; +Morison['M6N2FAFzi'] = False # (N/m); ; +Morison['M6N3FAFzi'] = False # (N/m); ; +Morison['M6N4FAFzi'] = False # (N/m); ; +Morison['M6N5FAFzi'] = False # (N/m); ; +Morison['M6N6FAFzi'] = False # (N/m); ; +Morison['M6N7FAFzi'] = False # (N/m); ; +Morison['M6N8FAFzi'] = False # (N/m); ; +Morison['M6N9FAFzi'] = False # (N/m); ; +Morison['M7N1FAFzi'] = False # (N/m); ; +Morison['M7N2FAFzi'] = False # (N/m); ; +Morison['M7N3FAFzi'] = False # (N/m); ; +Morison['M7N4FAFzi'] = False # (N/m); ; +Morison['M7N5FAFzi'] = False # (N/m); ; +Morison['M7N6FAFzi'] = False # (N/m); ; +Morison['M7N7FAFzi'] = False # (N/m); ; +Morison['M7N8FAFzi'] = False # (N/m); ; +Morison['M7N9FAFzi'] = False # (N/m); ; +Morison['M8N1FAFzi'] = False # (N/m); ; +Morison['M8N2FAFzi'] = False # (N/m); ; +Morison['M8N3FAFzi'] = False # (N/m); ; +Morison['M8N4FAFzi'] = False # (N/m); ; +Morison['M8N5FAFzi'] = False # (N/m); ; +Morison['M8N6FAFzi'] = False # (N/m); ; +Morison['M8N7FAFzi'] = False # (N/m); ; +Morison['M8N8FAFzi'] = False # (N/m); ; +Morison['M8N9FAFzi'] = False # (N/m); ; +Morison['M9N1FAFzi'] = False # (N/m); ; +Morison['M9N2FAFzi'] = False # (N/m); ; +Morison['M9N3FAFzi'] = False # (N/m); ; +Morison['M9N4FAFzi'] = False # (N/m); ; +Morison['M9N5FAFzi'] = False # (N/m); ; +Morison['M9N6FAFzi'] = False # (N/m); ; +Morison['M9N7FAFzi'] = False # (N/m); ; +Morison['M9N8FAFzi'] = False # (N/m); ; +Morison['M9N9FAFzi'] = False # (N/m); ; +Morison['M1N1MAFxi'] = False # (N-m/m); x-component of the distributed flooding/ballasting mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAFxi'] = False # (N-m/m); ; +Morison['M1N3MAFxi'] = False # (N-m/m); ; +Morison['M1N4MAFxi'] = False # (N-m/m); ; +Morison['M1N5MAFxi'] = False # (N-m/m); ; +Morison['M1N6MAFxi'] = False # (N-m/m); ; +Morison['M1N7MAFxi'] = False # (N-m/m); ; +Morison['M1N8MAFxi'] = False # (N-m/m); ; +Morison['M1N9MAFxi'] = False # (N-m/m); ; +Morison['M2N1MAFxi'] = False # (N-m/m); ; +Morison['M2N2MAFxi'] = False # (N-m/m); ; +Morison['M2N3MAFxi'] = False # (N-m/m); ; +Morison['M2N4MAFxi'] = False # (N-m/m); ; +Morison['M2N5MAFxi'] = False # (N-m/m); ; +Morison['M2N6MAFxi'] = False # (N-m/m); ; +Morison['M2N7MAFxi'] = False # (N-m/m); ; +Morison['M2N8MAFxi'] = False # (N-m/m); ; +Morison['M2N9MAFxi'] = False # (N-m/m); ; +Morison['M3N1MAFxi'] = False # (N-m/m); ; +Morison['M3N2MAFxi'] = False # (N-m/m); ; +Morison['M3N3MAFxi'] = False # (N-m/m); ; +Morison['M3N4MAFxi'] = False # (N-m/m); ; +Morison['M3N5MAFxi'] = False # (N-m/m); ; +Morison['M3N6MAFxi'] = False # (N-m/m); ; +Morison['M3N7MAFxi'] = False # (N-m/m); ; +Morison['M3N8MAFxi'] = False # (N-m/m); ; +Morison['M3N9MAFxi'] = False # (N-m/m); ; +Morison['M4N1MAFxi'] = False # (N-m/m); ; +Morison['M4N2MAFxi'] = False # (N-m/m); ; +Morison['M4N3MAFxi'] = False # (N-m/m); ; +Morison['M4N4MAFxi'] = False # (N-m/m); ; +Morison['M4N5MAFxi'] = False # (N-m/m); ; +Morison['M4N6MAFxi'] = False # (N-m/m); ; +Morison['M4N7MAFxi'] = False # (N-m/m); ; +Morison['M4N8MAFxi'] = False # (N-m/m); ; +Morison['M4N9MAFxi'] = False # (N-m/m); ; +Morison['M5N1MAFxi'] = False # (N-m/m); ; +Morison['M5N2MAFxi'] = False # (N-m/m); ; +Morison['M5N3MAFxi'] = False # (N-m/m); ; +Morison['M5N4MAFxi'] = False # (N-m/m); ; +Morison['M5N5MAFxi'] = False # (N-m/m); ; +Morison['M5N6MAFxi'] = False # (N-m/m); ; +Morison['M5N7MAFxi'] = False # (N-m/m); ; +Morison['M5N8MAFxi'] = False # (N-m/m); ; +Morison['M5N9MAFxi'] = False # (N-m/m); ; +Morison['M6N1MAFxi'] = False # (N-m/m); ; +Morison['M6N2MAFxi'] = False # (N-m/m); ; +Morison['M6N3MAFxi'] = False # (N-m/m); ; +Morison['M6N4MAFxi'] = False # (N-m/m); ; +Morison['M6N5MAFxi'] = False # (N-m/m); ; +Morison['M6N6MAFxi'] = False # (N-m/m); ; +Morison['M6N7MAFxi'] = False # (N-m/m); ; +Morison['M6N8MAFxi'] = False # (N-m/m); ; +Morison['M6N9MAFxi'] = False # (N-m/m); ; +Morison['M7N1MAFxi'] = False # (N-m/m); ; +Morison['M7N2MAFxi'] = False # (N-m/m); ; +Morison['M7N3MAFxi'] = False # (N-m/m); ; +Morison['M7N4MAFxi'] = False # (N-m/m); ; +Morison['M7N5MAFxi'] = False # (N-m/m); ; +Morison['M7N6MAFxi'] = False # (N-m/m); ; +Morison['M7N7MAFxi'] = False # (N-m/m); ; +Morison['M7N8MAFxi'] = False # (N-m/m); ; +Morison['M7N9MAFxi'] = False # (N-m/m); ; +Morison['M8N1MAFxi'] = False # (N-m/m); ; +Morison['M8N2MAFxi'] = False # (N-m/m); ; +Morison['M8N3MAFxi'] = False # (N-m/m); ; +Morison['M8N4MAFxi'] = False # (N-m/m); ; +Morison['M8N5MAFxi'] = False # (N-m/m); ; +Morison['M8N6MAFxi'] = False # (N-m/m); ; +Morison['M8N7MAFxi'] = False # (N-m/m); ; +Morison['M8N8MAFxi'] = False # (N-m/m); ; +Morison['M8N9MAFxi'] = False # (N-m/m); ; +Morison['M9N1MAFxi'] = False # (N-m/m); ; +Morison['M9N2MAFxi'] = False # (N-m/m); ; +Morison['M9N3MAFxi'] = False # (N-m/m); ; +Morison['M9N4MAFxi'] = False # (N-m/m); ; +Morison['M9N5MAFxi'] = False # (N-m/m); ; +Morison['M9N6MAFxi'] = False # (N-m/m); ; +Morison['M9N7MAFxi'] = False # (N-m/m); ; +Morison['M9N8MAFxi'] = False # (N-m/m); ; +Morison['M9N9MAFxi'] = False # (N-m/m); ; +Morison['M1N1MAFyi'] = False # (N-m/m); y-component of the distributed flooding/ballasting mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAFyi'] = False # (N-m/m); ; +Morison['M1N3MAFyi'] = False # (N-m/m); ; +Morison['M1N4MAFyi'] = False # (N-m/m); ; +Morison['M1N5MAFyi'] = False # (N-m/m); ; +Morison['M1N6MAFyi'] = False # (N-m/m); ; +Morison['M1N7MAFyi'] = False # (N-m/m); ; +Morison['M1N8MAFyi'] = False # (N-m/m); ; +Morison['M1N9MAFyi'] = False # (N-m/m); ; +Morison['M2N1MAFyi'] = False # (N-m/m); ; +Morison['M2N2MAFyi'] = False # (N-m/m); ; +Morison['M2N3MAFyi'] = False # (N-m/m); ; +Morison['M2N4MAFyi'] = False # (N-m/m); ; +Morison['M2N5MAFyi'] = False # (N-m/m); ; +Morison['M2N6MAFyi'] = False # (N-m/m); ; +Morison['M2N7MAFyi'] = False # (N-m/m); ; +Morison['M2N8MAFyi'] = False # (N-m/m); ; +Morison['M2N9MAFyi'] = False # (N-m/m); ; +Morison['M3N1MAFyi'] = False # (N-m/m); ; +Morison['M3N2MAFyi'] = False # (N-m/m); ; +Morison['M3N3MAFyi'] = False # (N-m/m); ; +Morison['M3N4MAFyi'] = False # (N-m/m); ; +Morison['M3N5MAFyi'] = False # (N-m/m); ; +Morison['M3N6MAFyi'] = False # (N-m/m); ; +Morison['M3N7MAFyi'] = False # (N-m/m); ; +Morison['M3N8MAFyi'] = False # (N-m/m); ; +Morison['M3N9MAFyi'] = False # (N-m/m); ; +Morison['M4N1MAFyi'] = False # (N-m/m); ; +Morison['M4N2MAFyi'] = False # (N-m/m); ; +Morison['M4N3MAFyi'] = False # (N-m/m); ; +Morison['M4N4MAFyi'] = False # (N-m/m); ; +Morison['M4N5MAFyi'] = False # (N-m/m); ; +Morison['M4N6MAFyi'] = False # (N-m/m); ; +Morison['M4N7MAFyi'] = False # (N-m/m); ; +Morison['M4N8MAFyi'] = False # (N-m/m); ; +Morison['M4N9MAFyi'] = False # (N-m/m); ; +Morison['M5N1MAFyi'] = False # (N-m/m); ; +Morison['M5N2MAFyi'] = False # (N-m/m); ; +Morison['M5N3MAFyi'] = False # (N-m/m); ; +Morison['M5N4MAFyi'] = False # (N-m/m); ; +Morison['M5N5MAFyi'] = False # (N-m/m); ; +Morison['M5N6MAFyi'] = False # (N-m/m); ; +Morison['M5N7MAFyi'] = False # (N-m/m); ; +Morison['M5N8MAFyi'] = False # (N-m/m); ; +Morison['M5N9MAFyi'] = False # (N-m/m); ; +Morison['M6N1MAFyi'] = False # (N-m/m); ; +Morison['M6N2MAFyi'] = False # (N-m/m); ; +Morison['M6N3MAFyi'] = False # (N-m/m); ; +Morison['M6N4MAFyi'] = False # (N-m/m); ; +Morison['M6N5MAFyi'] = False # (N-m/m); ; +Morison['M6N6MAFyi'] = False # (N-m/m); ; +Morison['M6N7MAFyi'] = False # (N-m/m); ; +Morison['M6N8MAFyi'] = False # (N-m/m); ; +Morison['M6N9MAFyi'] = False # (N-m/m); ; +Morison['M7N1MAFyi'] = False # (N-m/m); ; +Morison['M7N2MAFyi'] = False # (N-m/m); ; +Morison['M7N3MAFyi'] = False # (N-m/m); ; +Morison['M7N4MAFyi'] = False # (N-m/m); ; +Morison['M7N5MAFyi'] = False # (N-m/m); ; +Morison['M7N6MAFyi'] = False # (N-m/m); ; +Morison['M7N7MAFyi'] = False # (N-m/m); ; +Morison['M7N8MAFyi'] = False # (N-m/m); ; +Morison['M7N9MAFyi'] = False # (N-m/m); ; +Morison['M8N1MAFyi'] = False # (N-m/m); ; +Morison['M8N2MAFyi'] = False # (N-m/m); ; +Morison['M8N3MAFyi'] = False # (N-m/m); ; +Morison['M8N4MAFyi'] = False # (N-m/m); ; +Morison['M8N5MAFyi'] = False # (N-m/m); ; +Morison['M8N6MAFyi'] = False # (N-m/m); ; +Morison['M8N7MAFyi'] = False # (N-m/m); ; +Morison['M8N8MAFyi'] = False # (N-m/m); ; +Morison['M8N9MAFyi'] = False # (N-m/m); ; +Morison['M9N1MAFyi'] = False # (N-m/m); ; +Morison['M9N2MAFyi'] = False # (N-m/m); ; +Morison['M9N3MAFyi'] = False # (N-m/m); ; +Morison['M9N4MAFyi'] = False # (N-m/m); ; +Morison['M9N5MAFyi'] = False # (N-m/m); ; +Morison['M9N6MAFyi'] = False # (N-m/m); ; +Morison['M9N7MAFyi'] = False # (N-m/m); ; +Morison['M9N8MAFyi'] = False # (N-m/m); ; +Morison['M9N9MAFyi'] = False # (N-m/m); ; +Morison['M1N1MAFzi'] = False # (N-m/m); z-component of the distributed flooding/ballasting mass inertia moment, expressed in the inertial coordinate system; +Morison['M1N2MAFzi'] = False # (N-m/m); ; +Morison['M1N3MAFzi'] = False # (N-m/m); ; +Morison['M1N4MAFzi'] = False # (N-m/m); ; +Morison['M1N5MAFzi'] = False # (N-m/m); ; +Morison['M1N6MAFzi'] = False # (N-m/m); ; +Morison['M1N7MAFzi'] = False # (N-m/m); ; +Morison['M1N8MAFzi'] = False # (N-m/m); ; +Morison['M1N9MAFzi'] = False # (N-m/m); ; +Morison['M2N1MAFzi'] = False # (N-m/m); ; +Morison['M2N2MAFzi'] = False # (N-m/m); ; +Morison['M2N3MAFzi'] = False # (N-m/m); ; +Morison['M2N4MAFzi'] = False # (N-m/m); ; +Morison['M2N5MAFzi'] = False # (N-m/m); ; +Morison['M2N6MAFzi'] = False # (N-m/m); ; +Morison['M2N7MAFzi'] = False # (N-m/m); ; +Morison['M2N8MAFzi'] = False # (N-m/m); ; +Morison['M2N9MAFzi'] = False # (N-m/m); ; +Morison['M3N1MAFzi'] = False # (N-m/m); ; +Morison['M3N2MAFzi'] = False # (N-m/m); ; +Morison['M3N3MAFzi'] = False # (N-m/m); ; +Morison['M3N4MAFzi'] = False # (N-m/m); ; +Morison['M3N5MAFzi'] = False # (N-m/m); ; +Morison['M3N6MAFzi'] = False # (N-m/m); ; +Morison['M3N7MAFzi'] = False # (N-m/m); ; +Morison['M3N8MAFzi'] = False # (N-m/m); ; +Morison['M3N9MAFzi'] = False # (N-m/m); ; +Morison['M4N1MAFzi'] = False # (N-m/m); ; +Morison['M4N2MAFzi'] = False # (N-m/m); ; +Morison['M4N3MAFzi'] = False # (N-m/m); ; +Morison['M4N4MAFzi'] = False # (N-m/m); ; +Morison['M4N5MAFzi'] = False # (N-m/m); ; +Morison['M4N6MAFzi'] = False # (N-m/m); ; +Morison['M4N7MAFzi'] = False # (N-m/m); ; +Morison['M4N8MAFzi'] = False # (N-m/m); ; +Morison['M4N9MAFzi'] = False # (N-m/m); ; +Morison['M5N1MAFzi'] = False # (N-m/m); ; +Morison['M5N2MAFzi'] = False # (N-m/m); ; +Morison['M5N3MAFzi'] = False # (N-m/m); ; +Morison['M5N4MAFzi'] = False # (N-m/m); ; +Morison['M5N5MAFzi'] = False # (N-m/m); ; +Morison['M5N6MAFzi'] = False # (N-m/m); ; +Morison['M5N7MAFzi'] = False # (N-m/m); ; +Morison['M5N8MAFzi'] = False # (N-m/m); ; +Morison['M5N9MAFzi'] = False # (N-m/m); ; +Morison['M6N1MAFzi'] = False # (N-m/m); ; +Morison['M6N2MAFzi'] = False # (N-m/m); ; +Morison['M6N3MAFzi'] = False # (N-m/m); ; +Morison['M6N4MAFzi'] = False # (N-m/m); ; +Morison['M6N5MAFzi'] = False # (N-m/m); ; +Morison['M6N6MAFzi'] = False # (N-m/m); ; +Morison['M6N7MAFzi'] = False # (N-m/m); ; +Morison['M6N8MAFzi'] = False # (N-m/m); ; +Morison['M6N9MAFzi'] = False # (N-m/m); ; +Morison['M7N1MAFzi'] = False # (N-m/m); ; +Morison['M7N2MAFzi'] = False # (N-m/m); ; +Morison['M7N3MAFzi'] = False # (N-m/m); ; +Morison['M7N4MAFzi'] = False # (N-m/m); ; +Morison['M7N5MAFzi'] = False # (N-m/m); ; +Morison['M7N6MAFzi'] = False # (N-m/m); ; +Morison['M7N7MAFzi'] = False # (N-m/m); ; +Morison['M7N8MAFzi'] = False # (N-m/m); ; +Morison['M7N9MAFzi'] = False # (N-m/m); ; +Morison['M8N1MAFzi'] = False # (N-m/m); ; +Morison['M8N2MAFzi'] = False # (N-m/m); ; +Morison['M8N3MAFzi'] = False # (N-m/m); ; +Morison['M8N4MAFzi'] = False # (N-m/m); ; +Morison['M8N5MAFzi'] = False # (N-m/m); ; +Morison['M8N6MAFzi'] = False # (N-m/m); ; +Morison['M8N7MAFzi'] = False # (N-m/m); ; +Morison['M8N8MAFzi'] = False # (N-m/m); ; +Morison['M8N9MAFzi'] = False # (N-m/m); ; +Morison['M9N1MAFzi'] = False # (N-m/m); ; +Morison['M9N2MAFzi'] = False # (N-m/m); ; +Morison['M9N3MAFzi'] = False # (N-m/m); ; +Morison['M9N4MAFzi'] = False # (N-m/m); ; +Morison['M9N5MAFzi'] = False # (N-m/m); ; +Morison['M9N6MAFzi'] = False # (N-m/m); ; +Morison['M9N7MAFzi'] = False # (N-m/m); ; +Morison['M9N8MAFzi'] = False # (N-m/m); ; +Morison['M9N9MAFzi'] = False # (N-m/m); ; + +# Joint-level Wave Kinematics +Morison['J1Vxi'] = False # (m/s); fluid velocity at the joint; +Morison['J2Vxi'] = False # (m/s); ; +Morison['J3Vxi'] = False # (m/s); ; +Morison['J4Vxi'] = False # (m/s); ; +Morison['J5Vxi'] = False # (m/s); ; +Morison['J6Vxi'] = False # (m/s); ; +Morison['J7Vxi'] = False # (m/s); ; +Morison['J8Vxi'] = False # (m/s); ; +Morison['J9Vxi'] = False # (m/s); ; +Morison['J1Vyi'] = False # (m/s); ; +Morison['J2Vyi'] = False # (m/s); ; +Morison['J3Vyi'] = False # (m/s); ; +Morison['J4Vyi'] = False # (m/s); ; +Morison['J5Vyi'] = False # (m/s); ; +Morison['J6Vyi'] = False # (m/s); ; +Morison['J7Vyi'] = False # (m/s); ; +Morison['J8Vyi'] = False # (m/s); ; +Morison['J9Vyi'] = False # (m/s); ; +Morison['J1Vzi'] = False # (m/s); ; +Morison['J2Vzi'] = False # (m/s); ; +Morison['J3Vzi'] = False # (m/s); ; +Morison['J4Vzi'] = False # (m/s); ; +Morison['J5Vzi'] = False # (m/s); ; +Morison['J6Vzi'] = False # (m/s); ; +Morison['J7Vzi'] = False # (m/s); ; +Morison['J8Vzi'] = False # (m/s); ; +Morison['J9Vzi'] = False # (m/s); ; +Morison['J1Axi'] = False # (m/s^2); fluid acceleration at the joint; +Morison['J2Axi'] = False # (m/s^2); ; +Morison['J3Axi'] = False # (m/s^2); ; +Morison['J4Axi'] = False # (m/s^2); ; +Morison['J5Axi'] = False # (m/s^2); ; +Morison['J6Axi'] = False # (m/s^2); ; +Morison['J7Axi'] = False # (m/s^2); ; +Morison['J8Axi'] = False # (m/s^2); ; +Morison['J9Axi'] = False # (m/s^2); ; +Morison['J1Ayi'] = False # (m/s^2); ; +Morison['J2Ayi'] = False # (m/s^2); ; +Morison['J3Ayi'] = False # (m/s^2); ; +Morison['J4Ayi'] = False # (m/s^2); ; +Morison['J5Ayi'] = False # (m/s^2); ; +Morison['J6Ayi'] = False # (m/s^2); ; +Morison['J7Ayi'] = False # (m/s^2); ; +Morison['J8Ayi'] = False # (m/s^2); ; +Morison['J9Ayi'] = False # (m/s^2); ; +Morison['J1Azi'] = False # (m/s^2); ; +Morison['J2Azi'] = False # (m/s^2); ; +Morison['J3Azi'] = False # (m/s^2); ; +Morison['J4Azi'] = False # (m/s^2); ; +Morison['J5Azi'] = False # (m/s^2); ; +Morison['J6Azi'] = False # (m/s^2); ; +Morison['J7Azi'] = False # (m/s^2); ; +Morison['J8Azi'] = False # (m/s^2); ; +Morison['J9Azi'] = False # (m/s^2); ; +Morison['J1DynP'] = False # (Pa); fluid dynamic pressure at the joint; +Morison['J2DynP'] = False # (Pa); ; +Morison['J3DynP'] = False # (Pa); ; +Morison['J4DynP'] = False # (Pa); ; +Morison['J5DynP'] = False # (Pa); ; +Morison['J6DynP'] = False # (Pa); ; +Morison['J7DynP'] = False # (Pa); ; +Morison['J8DynP'] = False # (Pa); ; +Morison['J9DynP'] = False # (Pa); ; +Morison['J1WaveElev'] = False # (m); total wave elevation at the X,Y location of the joint; +Morison['J2WaveElev'] = False # (m); ; +Morison['J3WaveElev'] = False # (m); ; +Morison['J4WaveElev'] = False # (m); ; +Morison['J5WaveElev'] = False # (m); ; +Morison['J6WaveElev'] = False # (m); ; +Morison['J7WaveElev'] = False # (m); ; +Morison['J8WaveElev'] = False # (m); ; +Morison['J9WaveElev'] = False # (m); ; +Morison['J1WaveElv1'] = False # (m); wave elevation at the X,Y location of the joint due to 1st order effects; +Morison['J2WaveElv1'] = False # (m); ; +Morison['J3WaveElv1'] = False # (m); ; +Morison['J4WaveElv1'] = False # (m); ; +Morison['J5WaveElv1'] = False # (m); ; +Morison['J6WaveElv1'] = False # (m); ; +Morison['J7WaveElv1'] = False # (m); ; +Morison['J8WaveElv1'] = False # (m); ; +Morison['J9WaveElv1'] = False # (m); ; +Morison['J1WaveElv2'] = False # (m); wave elevation at the X,Y location of the joint due to 2nd order effects; +Morison['J2WaveElv2'] = False # (m); ; +Morison['J3WaveElv2'] = False # (m); ; +Morison['J4WaveElv2'] = False # (m); ; +Morison['J5WaveElv2'] = False # (m); ; +Morison['J6WaveElv2'] = False # (m); ; +Morison['J7WaveElv2'] = False # (m); ; +Morison['J8WaveElv2'] = False # (m); ; +Morison['J9WaveElv2'] = False # (m); ; +Morison['J1STVxi'] = False # (m/s); structural translational velocity at the joint; +Morison['J2STVxi'] = False # (m/s); ; +Morison['J3STVxi'] = False # (m/s); ; +Morison['J4STVxi'] = False # (m/s); ; +Morison['J5STVxi'] = False # (m/s); ; +Morison['J6STVxi'] = False # (m/s); ; +Morison['J7STVxi'] = False # (m/s); ; +Morison['J8STVxi'] = False # (m/s); ; +Morison['J9STVxi'] = False # (m/s); ; +Morison['J1STVyi'] = False # (m/s); ; +Morison['J2STVyi'] = False # (m/s); ; +Morison['J3STVyi'] = False # (m/s); ; +Morison['J4STVyi'] = False # (m/s); ; +Morison['J5STVyi'] = False # (m/s); ; +Morison['J6STVyi'] = False # (m/s); ; +Morison['J7STVyi'] = False # (m/s); ; +Morison['J8STVyi'] = False # (m/s); ; +Morison['J9STVyi'] = False # (m/s); ; +Morison['J1STVzi'] = False # (m/s); ; +Morison['J2STVzi'] = False # (m/s); ; +Morison['J3STVzi'] = False # (m/s); ; +Morison['J4STVzi'] = False # (m/s); ; +Morison['J5STVzi'] = False # (m/s); ; +Morison['J6STVzi'] = False # (m/s); ; +Morison['J7STVzi'] = False # (m/s); ; +Morison['J8STVzi'] = False # (m/s); ; +Morison['J9STVzi'] = False # (m/s); ; +Morison['J1STAxi'] = False # (m/s^2); structural translational acceleration at the joint; +Morison['J2STAxi'] = False # (m/s^2); ; +Morison['J3STAxi'] = False # (m/s^2); ; +Morison['J4STAxi'] = False # (m/s^2); ; +Morison['J5STAxi'] = False # (m/s^2); ; +Morison['J6STAxi'] = False # (m/s^2); ; +Morison['J7STAxi'] = False # (m/s^2); ; +Morison['J8STAxi'] = False # (m/s^2); ; +Morison['J9STAxi'] = False # (m/s^2); ; +Morison['J1STAyi'] = False # (m/s^2); ; +Morison['J2STAyi'] = False # (m/s^2); ; +Morison['J3STAyi'] = False # (m/s^2); ; +Morison['J4STAyi'] = False # (m/s^2); ; +Morison['J5STAyi'] = False # (m/s^2); ; +Morison['J6STAyi'] = False # (m/s^2); ; +Morison['J7STAyi'] = False # (m/s^2); ; +Morison['J8STAyi'] = False # (m/s^2); ; +Morison['J9STAyi'] = False # (m/s^2); ; +Morison['J1STAzi'] = False # (m/s^2); ; +Morison['J2STAzi'] = False # (m/s^2); ; +Morison['J3STAzi'] = False # (m/s^2); ; +Morison['J4STAzi'] = False # (m/s^2); ; +Morison['J5STAzi'] = False # (m/s^2); ; +Morison['J6STAzi'] = False # (m/s^2); ; +Morison['J7STAzi'] = False # (m/s^2); ; +Morison['J8STAzi'] = False # (m/s^2); ; +Morison['J9STAzi'] = False # (m/s^2); ; + +# Joint Loads +Morison['J1FDxi'] = False # (N); axial viscous-drag forces; +Morison['J2FDxi'] = False # (N); ; +Morison['J3FDxi'] = False # (N); ; +Morison['J4FDxi'] = False # (N); ; +Morison['J5FDxi'] = False # (N); ; +Morison['J6FDxi'] = False # (N); ; +Morison['J7FDxi'] = False # (N); ; +Morison['J8FDxi'] = False # (N); ; +Morison['J9FDxi'] = False # (N); ; +Morison['J1FDyi'] = False # (N); ; +Morison['J2FDyi'] = False # (N); ; +Morison['J3FDyi'] = False # (N); ; +Morison['J4FDyi'] = False # (N); ; +Morison['J5FDyi'] = False # (N); ; +Morison['J6FDyi'] = False # (N); ; +Morison['J7FDyi'] = False # (N); ; +Morison['J8FDyi'] = False # (N); ; +Morison['J9FDyi'] = False # (N); ; +Morison['J1FDzi'] = False # (N); ; +Morison['J2FDzi'] = False # (N); ; +Morison['J3FDzi'] = False # (N); ; +Morison['J4FDzi'] = False # (N); ; +Morison['J5FDzi'] = False # (N); ; +Morison['J6FDzi'] = False # (N); ; +Morison['J7FDzi'] = False # (N); ; +Morison['J8FDzi'] = False # (N); ; +Morison['J9FDzi'] = False # (N); ; +Morison['J1FBxi'] = False # (N); end-effect buoyancy forces; +Morison['J2FBxi'] = False # (N); ; +Morison['J3FBxi'] = False # (N); ; +Morison['J4FBxi'] = False # (N); ; +Morison['J5FBxi'] = False # (N); ; +Morison['J6FBxi'] = False # (N); ; +Morison['J7FBxi'] = False # (N); ; +Morison['J8FBxi'] = False # (N); ; +Morison['J9FBxi'] = False # (N); ; +Morison['J1FByi'] = False # (N); ; +Morison['J2FByi'] = False # (N); ; +Morison['J3FByi'] = False # (N); ; +Morison['J4FByi'] = False # (N); ; +Morison['J5FByi'] = False # (N); ; +Morison['J6FByi'] = False # (N); ; +Morison['J7FByi'] = False # (N); ; +Morison['J8FByi'] = False # (N); ; +Morison['J9FByi'] = False # (N); ; +Morison['J1FBzi'] = False # (N); ; +Morison['J2FBzi'] = False # (N); ; +Morison['J3FBzi'] = False # (N); ; +Morison['J4FBzi'] = False # (N); ; +Morison['J5FBzi'] = False # (N); ; +Morison['J6FBzi'] = False # (N); ; +Morison['J7FBzi'] = False # (N); ; +Morison['J8FBzi'] = False # (N); ; +Morison['J9FBzi'] = False # (N); ; +Morison['J1MBxi'] = False # (N-m); end-effect buoyancy moments; +Morison['J2MBxi'] = False # (N-m); ; +Morison['J3MBxi'] = False # (N-m); ; +Morison['J4MBxi'] = False # (N-m); ; +Morison['J5MBxi'] = False # (N-m); ; +Morison['J6MBxi'] = False # (N-m); ; +Morison['J7MBxi'] = False # (N-m); ; +Morison['J8MBxi'] = False # (N-m); ; +Morison['J9MBxi'] = False # (N-m); ; +Morison['J1MByi'] = False # (N-m); ; +Morison['J2MByi'] = False # (N-m); ; +Morison['J3MByi'] = False # (N-m); ; +Morison['J4MByi'] = False # (N-m); ; +Morison['J5MByi'] = False # (N-m); ; +Morison['J6MByi'] = False # (N-m); ; +Morison['J7MByi'] = False # (N-m); ; +Morison['J8MByi'] = False # (N-m); ; +Morison['J9MByi'] = False # (N-m); ; +Morison['J1MBzi'] = False # (N-m); ; +Morison['J2MBzi'] = False # (N-m); ; +Morison['J3MBzi'] = False # (N-m); ; +Morison['J4MBzi'] = False # (N-m); ; +Morison['J5MBzi'] = False # (N-m); ; +Morison['J6MBzi'] = False # (N-m); ; +Morison['J7MBzi'] = False # (N-m); ; +Morison['J8MBzi'] = False # (N-m); ; +Morison['J9MBzi'] = False # (N-m); ; +Morison['J1FBFxi'] = False # (N); end-effect buoyancy forces due to ballasting/flooding; +Morison['J2FBFxi'] = False # (N); ; +Morison['J3FBFxi'] = False # (N); ; +Morison['J4FBFxi'] = False # (N); ; +Morison['J5FBFxi'] = False # (N); ; +Morison['J6FBFxi'] = False # (N); ; +Morison['J7FBFxi'] = False # (N); ; +Morison['J8FBFxi'] = False # (N); ; +Morison['J9FBFxi'] = False # (N); ; +Morison['J1FBFyi'] = False # (N); ; +Morison['J2FBFyi'] = False # (N); ; +Morison['J3FBFyi'] = False # (N); ; +Morison['J4FBFyi'] = False # (N); ; +Morison['J5FBFyi'] = False # (N); ; +Morison['J6FBFyi'] = False # (N); ; +Morison['J7FBFyi'] = False # (N); ; +Morison['J8FBFyi'] = False # (N); ; +Morison['J9FBFyi'] = False # (N); ; +Morison['J1FBFzi'] = False # (N); ; +Morison['J2FBFzi'] = False # (N); ; +Morison['J3FBFzi'] = False # (N); ; +Morison['J4FBFzi'] = False # (N); ; +Morison['J5FBFzi'] = False # (N); ; +Morison['J6FBFzi'] = False # (N); ; +Morison['J7FBFzi'] = False # (N); ; +Morison['J8FBFzi'] = False # (N); ; +Morison['J9FBFzi'] = False # (N); ; +Morison['J1MBFxi'] = False # (N-m); end-effect buoyancy moments due to ballasting/flooding; +Morison['J2MBFxi'] = False # (N-m); ; +Morison['J3MBFxi'] = False # (N-m); ; +Morison['J4MBFxi'] = False # (N-m); ; +Morison['J5MBFxi'] = False # (N-m); ; +Morison['J6MBFxi'] = False # (N-m); ; +Morison['J7MBFxi'] = False # (N-m); ; +Morison['J8MBFxi'] = False # (N-m); ; +Morison['J9MBFxi'] = False # (N-m); ; +Morison['J1MBFyi'] = False # (N-m); ; +Morison['J2MBFyi'] = False # (N-m); ; +Morison['J3MBFyi'] = False # (N-m); ; +Morison['J4MBFyi'] = False # (N-m); ; +Morison['J5MBFyi'] = False # (N-m); ; +Morison['J6MBFyi'] = False # (N-m); ; +Morison['J7MBFyi'] = False # (N-m); ; +Morison['J8MBFyi'] = False # (N-m); ; +Morison['J9MBFyi'] = False # (N-m); ; +Morison['J1MBFzi'] = False # (N-m); ; +Morison['J2MBFzi'] = False # (N-m); ; +Morison['J3MBFzi'] = False # (N-m); ; +Morison['J4MBFzi'] = False # (N-m); ; +Morison['J5MBFzi'] = False # (N-m); ; +Morison['J6MBFzi'] = False # (N-m); ; +Morison['J7MBFzi'] = False # (N-m); ; +Morison['J8MBFzi'] = False # (N-m); ; +Morison['J9MBFzi'] = False # (N-m); ; +Morison['J1FIxi'] = False # (N); end-effect fluid inertia forces ; +Morison['J2FIxi'] = False # (N); ; +Morison['J3FIxi'] = False # (N); ; +Morison['J4FIxi'] = False # (N); ; +Morison['J5FIxi'] = False # (N); ; +Morison['J6FIxi'] = False # (N); ; +Morison['J7FIxi'] = False # (N); ; +Morison['J8FIxi'] = False # (N); ; +Morison['J9FIxi'] = False # (N); ; +Morison['J1FIyi'] = False # (N); ; +Morison['J2FIyi'] = False # (N); ; +Morison['J3FIyi'] = False # (N); ; +Morison['J4FIyi'] = False # (N); ; +Morison['J5FIyi'] = False # (N); ; +Morison['J6FIyi'] = False # (N); ; +Morison['J7FIyi'] = False # (N); ; +Morison['J8FIyi'] = False # (N); ; +Morison['J9FIyi'] = False # (N); ; +Morison['J1FIzi'] = False # (N); ; +Morison['J2FIzi'] = False # (N); ; +Morison['J3FIzi'] = False # (N); ; +Morison['J4FIzi'] = False # (N); ; +Morison['J5FIzi'] = False # (N); ; +Morison['J6FIzi'] = False # (N); ; +Morison['J7FIzi'] = False # (N); ; +Morison['J8FIzi'] = False # (N); ; +Morison['J9FIzi'] = False # (N); ; +Morison['J1FAMxi'] = False # (N); added mass forces; +Morison['J2FAMxi'] = False # (N); ; +Morison['J3FAMxi'] = False # (N); ; +Morison['J4FAMxi'] = False # (N); ; +Morison['J5FAMxi'] = False # (N); ; +Morison['J6FAMxi'] = False # (N); ; +Morison['J7FAMxi'] = False # (N); ; +Morison['J8FAMxi'] = False # (N); ; +Morison['J9FAMxi'] = False # (N); ; +Morison['J1FAMyi'] = False # (N); ; +Morison['J2FAMyi'] = False # (N); ; +Morison['J3FAMyi'] = False # (N); ; +Morison['J4FAMyi'] = False # (N); ; +Morison['J5FAMyi'] = False # (N); ; +Morison['J6FAMyi'] = False # (N); ; +Morison['J7FAMyi'] = False # (N); ; +Morison['J8FAMyi'] = False # (N); ; +Morison['J9FAMyi'] = False # (N); ; +Morison['J1FAMzi'] = False # (N); ; +Morison['J2FAMzi'] = False # (N); ; +Morison['J3FAMzi'] = False # (N); ; +Morison['J4FAMzi'] = False # (N); ; +Morison['J5FAMzi'] = False # (N); ; +Morison['J6FAMzi'] = False # (N); ; +Morison['J7FAMzi'] = False # (N); ; +Morison['J8FAMzi'] = False # (N); ; +Morison['J9FAMzi'] = False # (N); ; +Morison['J1FAGxi'] = False # (N); end effect marine growth inertia; +Morison['J2FAGxi'] = False # (N); ; +Morison['J3FAGxi'] = False # (N); ; +Morison['J4FAGxi'] = False # (N); ; +Morison['J5FAGxi'] = False # (N); ; +Morison['J6FAGxi'] = False # (N); ; +Morison['J7FAGxi'] = False # (N); ; +Morison['J8FAGxi'] = False # (N); ; +Morison['J9FAGxi'] = False # (N); ; +Morison['J1FAGyi'] = False # (N); ; +Morison['J2FAGyi'] = False # (N); ; +Morison['J3FAGyi'] = False # (N); ; +Morison['J4FAGyi'] = False # (N); ; +Morison['J5FAGyi'] = False # (N); ; +Morison['J6FAGyi'] = False # (N); ; +Morison['J7FAGyi'] = False # (N); ; +Morison['J8FAGyi'] = False # (N); ; +Morison['J9FAGyi'] = False # (N); ; +Morison['J1FAGzi'] = False # (N); ; +Morison['J2FAGzi'] = False # (N); ; +Morison['J3FAGzi'] = False # (N); ; +Morison['J4FAGzi'] = False # (N); ; +Morison['J5FAGzi'] = False # (N); ; +Morison['J6FAGzi'] = False # (N); ; +Morison['J7FAGzi'] = False # (N); ; +Morison['J8FAGzi'] = False # (N); ; +Morison['J9FAGzi'] = False # (N); ; +Morison['J1MAGxi'] = False # (N-m); ; +Morison['J2MAGxi'] = False # (N-m); ; +Morison['J3MAGxi'] = False # (N-m); ; +Morison['J4MAGxi'] = False # (N-m); ; +Morison['J5MAGxi'] = False # (N-m); ; +Morison['J6MAGxi'] = False # (N-m); ; +Morison['J7MAGxi'] = False # (N-m); ; +Morison['J8MAGxi'] = False # (N-m); ; +Morison['J9MAGxi'] = False # (N-m); ; +Morison['J1MAGyi'] = False # (N-m); ; +Morison['J2MAGyi'] = False # (N-m); ; +Morison['J3MAGyi'] = False # (N-m); ; +Morison['J4MAGyi'] = False # (N-m); ; +Morison['J5MAGyi'] = False # (N-m); ; +Morison['J6MAGyi'] = False # (N-m); ; +Morison['J7MAGyi'] = False # (N-m); ; +Morison['J8MAGyi'] = False # (N-m); ; +Morison['J9MAGyi'] = False # (N-m); ; +Morison['J1MAGzi'] = False # (N-m); ; +Morison['J2MAGzi'] = False # (N-m); ; +Morison['J3MAGzi'] = False # (N-m); ; +Morison['J4MAGzi'] = False # (N-m); ; +Morison['J5MAGzi'] = False # (N-m); ; +Morison['J6MAGzi'] = False # (N-m); ; +Morison['J7MAGzi'] = False # (N-m); ; +Morison['J8MAGzi'] = False # (N-m); ; +Morison['J9MAGzi'] = False # (N-m); ; +Morison['J1FMGxi'] = False # (N); end effect marine growth weight; +Morison['J2FMGxi'] = False # (N); ; +Morison['J3FMGxi'] = False # (N); ; +Morison['J4FMGxi'] = False # (N); ; +Morison['J5FMGxi'] = False # (N); ; +Morison['J6FMGxi'] = False # (N); ; +Morison['J7FMGxi'] = False # (N); ; +Morison['J8FMGxi'] = False # (N); ; +Morison['J9FMGxi'] = False # (N); ; +Morison['J1FMGyi'] = False # (N); ; +Morison['J2FMGyi'] = False # (N); ; +Morison['J3FMGyi'] = False # (N); ; +Morison['J4FMGyi'] = False # (N); ; +Morison['J5FMGyi'] = False # (N); ; +Morison['J6FMGyi'] = False # (N); ; +Morison['J7FMGyi'] = False # (N); ; +Morison['J8FMGyi'] = False # (N); ; +Morison['J9FMGyi'] = False # (N); ; +Morison['J1FMGzi'] = False # (N); ; +Morison['J2FMGzi'] = False # (N); ; +Morison['J3FMGzi'] = False # (N); ; +Morison['J4FMGzi'] = False # (N); ; +Morison['J5FMGzi'] = False # (N); ; +Morison['J6FMGzi'] = False # (N); ; +Morison['J7FMGzi'] = False # (N); ; +Morison['J8FMGzi'] = False # (N); ; +Morison['J9FMGzi'] = False # (N); ; + + +""" SeaState """ +SeaState = {} + +# Wave Elevations +SeaState['Wave1Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['Wave2Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['Wave3Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['Wave4Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['Wave5Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['Wave6Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['Wave7Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['Wave8Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['Wave9Elev'] = False # (m); Total (first-order plus second-order) wave elevation (global Z height) at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['Wave1Elv1'] = False # (m); First-order wave elevation (global Z height) at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['Wave2Elv1'] = False # (m); First-order wave elevation (global Z height) at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['Wave3Elv1'] = False # (m); First-order wave elevation (global Z height) at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['Wave4Elv1'] = False # (m); First-order wave elevation (global Z height) at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['Wave5Elv1'] = False # (m); First-order wave elevation (global Z height) at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['Wave6Elv1'] = False # (m); First-order wave elevation (global Z height) at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['Wave7Elv1'] = False # (m); First-order wave elevation (global Z height) at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['Wave8Elv1'] = False # (m); First-order wave elevation (global Z height) at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['Wave9Elv1'] = False # (m); First-order wave elevation (global Z height) at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['Wave1Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['Wave2Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['Wave3Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['Wave4Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['Wave5Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['Wave6Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['Wave7Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['Wave8Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['Wave9Elv2'] = False # (m); Second-order wave elevation (global Z height) at the 9th user-requested location (location is specified in the global coordinate system); + +# Wave Kinematics +SeaState['FVel1xi'] = False # (m/s); fluid velocity along the global x-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FVel2xi'] = False # (m/s); fluid velocity along the global x-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FVel3xi'] = False # (m/s); fluid velocity along the global x-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FVel4xi'] = False # (m/s); fluid velocity along the global x-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FVel5xi'] = False # (m/s); fluid velocity along the global x-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FVel6xi'] = False # (m/s); fluid velocity along the global x-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FVel7xi'] = False # (m/s); fluid velocity along the global x-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FVel8xi'] = False # (m/s); fluid velocity along the global x-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FVel9xi'] = False # (m/s); fluid velocity along the global x-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FVel1yi'] = False # (m/s); fluid velocity along the global y-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FVel2yi'] = False # (m/s); fluid velocity along the global y-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FVel3yi'] = False # (m/s); fluid velocity along the global y-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FVel4yi'] = False # (m/s); fluid velocity along the global y-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FVel5yi'] = False # (m/s); fluid velocity along the global y-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FVel6yi'] = False # (m/s); fluid velocity along the global y-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FVel7yi'] = False # (m/s); fluid velocity along the global y-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FVel8yi'] = False # (m/s); fluid velocity along the global y-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FVel9yi'] = False # (m/s); fluid velocity along the global y-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FVel1zi'] = False # (m/s); fluid velocity along the global z-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FVel2zi'] = False # (m/s); fluid velocity along the global z-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FVel3zi'] = False # (m/s); fluid velocity along the global z-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FVel4zi'] = False # (m/s); fluid velocity along the global z-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FVel5zi'] = False # (m/s); fluid velocity along the global z-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FVel6zi'] = False # (m/s); fluid velocity along the global z-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FVel7zi'] = False # (m/s); fluid velocity along the global z-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FVel8zi'] = False # (m/s); fluid velocity along the global z-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FVel9zi'] = False # (m/s); fluid velocity along the global z-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc1xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FAcc2xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc3xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc4xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc5xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc6xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc7xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc8xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc9xi'] = False # (m/s^2); fluid acceleration along the global x-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc1yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FAcc2yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc3yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc4yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc5yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc6yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc7yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc8yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc9yi'] = False # (m/s^2); fluid acceleration along the global y-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc1zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FAcc2zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc3zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FAcc4zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc5zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc6zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc7zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc8zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FAcc9zi'] = False # (m/s^2); fluid acceleration along the global z-direction at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP1'] = False # (Pa); fluid dynamic pressure at the 1st user-requested location (location is specified in the global coordinate system); +SeaState['FDynP2'] = False # (Pa); fluid dynamic pressure at the 2nd user-requested location (location is specified in the global coordinate system); +SeaState['FDynP3'] = False # (Pa); fluid dynamic pressure at the 3rd user-requested location (location is specified in the global coordinate system); +SeaState['FDynP4'] = False # (Pa); fluid dynamic pressure at the 4th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP5'] = False # (Pa); fluid dynamic pressure at the 5th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP6'] = False # (Pa); fluid dynamic pressure at the 6th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP7'] = False # (Pa); fluid dynamic pressure at the 7th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP8'] = False # (Pa); fluid dynamic pressure at the 8th user-requested location (location is specified in the global coordinate system); +SeaState['FDynP9'] = False # (Pa); fluid dynamic pressure at the 9th user-requested location (location is specified in the global coordinate system); +SeaState['FAccMCF1xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF2xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF3xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF4xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF5xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF6xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF7xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF8xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF9xi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF1yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF2yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF3yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF4yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF5yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF6yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF7yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF8yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF9yi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF1zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF2zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF3zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF4zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF5zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF6zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF7zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF8zi'] = False # (m/s^2); fluid acceleration with MCF approximation; +SeaState['FAccMCF9zi'] = False # (m/s^2); fluid acceleration with MCF approximation; + + +""" SubDyn """ +SubDyn = {} + +# Member Forces (MxxNxChannelName) +SubDyn['FKxe'] = False # (N); ; +SubDyn['FKye'] = False # (N); ; +SubDyn['FKze'] = False # (N); ; +SubDyn['FMxe'] = False # (N); ; +SubDyn['FMye'] = False # (N); ; +SubDyn['FMze'] = False # (N); ; +SubDyn['MKxe'] = False # (N*m); ; +SubDyn['MKye'] = False # (N*m); ; +SubDyn['MKze'] = False # (N*m); ; +SubDyn['MMxe'] = False # (N*m); ; +SubDyn['MMye'] = False # (N*m); ; +SubDyn['MMze'] = False # (N*m); ; + +# Displacements (MxxNxChannelName) +SubDyn['TDxss'] = False # (m); ; +SubDyn['TDyss'] = False # (m); ; +SubDyn['TDzss'] = False # (m); ; +SubDyn['RDxe'] = False # (rad); ; +SubDyn['RDye'] = False # (rad); ; +SubDyn['RDze'] = False # (rad); ; + +# Accelerations (MxxNxChannelName) +SubDyn['TAxe'] = False # (m/s^2); ; +SubDyn['TAye'] = False # (m/s^2); ; +SubDyn['TAze'] = False # (m/s^2); ; +SubDyn['RAxe'] = False # (rad/s^2); ; +SubDyn['RAye'] = False # (rad/s^2); ; +SubDyn['RAze'] = False # (rad/s^2); ; + +# Reactions +SubDyn['ReactFXss'] = False # (N); ; +SubDyn['ReactFYss'] = False # (N); ; +SubDyn['ReactFZss'] = False # (N); ; +SubDyn['ReactMXss'] = False # (N*m); ; +SubDyn['ReactMYss'] = False # (N*m); ; +SubDyn['ReactMZss'] = False # (N*m); ; +SubDyn['IntfFXss'] = False # (N); ; +SubDyn['IntfFYss'] = False # (N); ; +SubDyn['IntfFZss'] = False # (N); ; +SubDyn['IntfMXss'] = False # (N*m); ; +SubDyn['IntfMYss'] = False # (N*m); ; +SubDyn['IntfMZss'] = False # (N*m); ; + +# Interface Deflections +SubDyn['IntfTDXss'] = False # (m); ; +SubDyn['IntfTDYss'] = False # (m); ; +SubDyn['IntfTDZss'] = False # (m); ; +SubDyn['IntfRDXss'] = False # (rad); ; +SubDyn['IntfRDYss'] = False # (rad); ; +SubDyn['IntfRDZss'] = False # (rad); ; + +# Interface Accelerations +SubDyn['IntfTAXss'] = False # (m/s^2); ; +SubDyn['IntfTAYss'] = False # (m/s^2); ; +SubDyn['IntfTAZss'] = False # (m/s^2); ; +SubDyn['IntfRAXss'] = False # (rad/s^2); ; +SubDyn['IntfRAYss'] = False # (rad/s^2); ; +SubDyn['IntfRAZss'] = False # (rad/s^2); ; + +# Modal Parameters (NameXX for mode number XX) +SubDyn['SSqm'] = False # (-); ; +SubDyn['SSqmd'] = False # (1/s); ; +SubDyn['SSqmdd'] = False # (1/s^2); ; + +""" WAMIT """ +WAMIT = {} + +# WAMIT Body Forces +WAMIT['Wave1El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave2El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave3El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave4El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave5El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave6El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave7El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave8El2'] = False # (m); 2nd order wave elevation correction; +WAMIT['Wave9El2'] = False # (m); 2nd order wave elevation correction; + +# WAMIT second order Body Forces +WAMIT['WavesF2xi'] = False # (N); ; +WAMIT['WavesF2yi'] = False # (N); ; +WAMIT['WavesF2zi'] = False # (N); ; +WAMIT['WavesM2xi'] = False # (N m); ; +WAMIT['WavesM2yi'] = False # (N m); ; +WAMIT['WavesM2zi'] = False # (N m); ; + +# WAMIT Body Forces +WAMIT['WavesFxi'] = False # (N); ; +WAMIT['WavesFyi'] = False # (N); ; +WAMIT['WavesFzi'] = False # (N); ; +WAMIT['WavesMxi'] = False # (N m); ; +WAMIT['WavesMyi'] = False # (N m); ; +WAMIT['WavesMzi'] = False # (N m); ; +WAMIT['HdrStcFxi'] = False # (N); ; +WAMIT['HdrStcFyi'] = False # (N); ; +WAMIT['HdrStcFzi'] = False # (N); ; +WAMIT['HdrStcMxi'] = False # (N m); ; +WAMIT['HdrStcMyi'] = False # (N m); ; +WAMIT['HdrStcMzi'] = False # (N m); ; +WAMIT['RdtnFxi'] = False # (N); ; +WAMIT['RdtnFyi'] = False # (N); ; +WAMIT['RdtnFzi'] = False # (N); ; +WAMIT['RdtnMxi'] = False # (N m); ; +WAMIT['RdtnMyi'] = False # (N m); ; +WAMIT['RdtnMzi'] = False # (N m); ; + +""" AeroDyn_Nodes """ +AeroDyn_Nodes = {} + +# Blade +AeroDyn_Nodes['VUndx'] = False # (m/s); (will be deprecated) x-component of undisturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VUndy'] = False # (m/s); (will be deprecated) y-component of undisturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VUndz'] = False # (m/s); (will be deprecated) z-component of undisturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VUndxi'] = False # (m/s); x-component of undisturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VUndyi'] = False # (m/s); y-component of undisturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VUndzi'] = False # (m/s); z-component of undisturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VUndxp'] = False # (m/s); x-component of undisturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VUndyp'] = False # (m/s); y-component of undisturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VUndzp'] = False # (m/s); z-component of undisturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VUndxl'] = False # (m/s); x-component of undisturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VUndyl'] = False # (m/s); y-component of undisturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VUndzl'] = False # (m/s); z-component of undisturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VUndxa'] = False # (m/s); x-component of undisturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['VUndya'] = False # (m/s); y-component of undisturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['VUndza'] = False # (m/s); z-component of undisturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['VDisx'] = False # (m/s); (will be deprecated) x-component of disturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VDisy'] = False # (m/s); (will be deprecated) y-component of disturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VDisz'] = False # (m/s); (will be deprecated) z-component of disturbed wind velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['VDisxi'] = False # (m/s); x-component of disturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VDisyi'] = False # (m/s); y-component of disturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VDiszi'] = False # (m/s); z-component of disturbed wind velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['VDisxp'] = False # (m/s); x-component of disturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VDisyp'] = False # (m/s); y-component of disturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VDiszp'] = False # (m/s); z-component of disturbed wind velocity at each node; polar coordinate system +AeroDyn_Nodes['VDisxl'] = False # (m/s); x-component of disturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VDisyl'] = False # (m/s); y-component of disturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VDiszl'] = False # (m/s); z-component of disturbed wind velocity at each node; local-polar coordinate system +AeroDyn_Nodes['VDisxa'] = False # (m/s); x-component of disturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['VDisya'] = False # (m/s); y-component of disturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['VDisza'] = False # (m/s); z-component of disturbed wind velocity at each node; airfoil coordinate system +AeroDyn_Nodes['STVx'] = False # (m/s); (will be deprecated) x-component of structural translational velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['STVy'] = False # (m/s); (will be deprecated) y-component of structural translational velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['STVz'] = False # (m/s); (will be deprecated) z-component of structural translational velocity at each node; ill-defined / implementation specific +AeroDyn_Nodes['STVxi'] = False # (m/s); x-component of structural translational velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['STVyi'] = False # (m/s); y-component of structural translational velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['STVzi'] = False # (m/s); z-component of structural translational velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['STVxp'] = False # (m/s); x-component of structural translational velocity at each node; polar coordinate system +AeroDyn_Nodes['STVyp'] = False # (m/s); y-component of structural translational velocity at each node; polar coordinate system +AeroDyn_Nodes['STVzp'] = False # (m/s); z-component of structural translational velocity at each node; polar coordinate system +AeroDyn_Nodes['STVxl'] = False # (m/s); x-component of structural translational velocity at each node; local-polar coordinate system +AeroDyn_Nodes['STVyl'] = False # (m/s); y-component of structural translational velocity at each node; local-polar coordinate system +AeroDyn_Nodes['STVzl'] = False # (m/s); z-component of structural translational velocity at each node; local-polar coordinate system +AeroDyn_Nodes['STVxa'] = False # (m/s); x-component of structural translational velocity at each node; airfoil coordinate system +AeroDyn_Nodes['STVya'] = False # (m/s); y-component of structural translational velocity at each node; airfoil coordinate system +AeroDyn_Nodes['STVza'] = False # (m/s); z-component of structural translational velocity at each node; airfoil coordinate system +AeroDyn_Nodes['Vindx'] = False # (m/s); (will be deprecated) Axial induced wind velocity at each node; local blade coordinate system +AeroDyn_Nodes['Vindy'] = False # (m/s); (will be deprecated) Tangential induced wind velocity at each node; local blade coordinate system +AeroDyn_Nodes['Vindxi'] = False # (m/s); x-component of induced velocity at each node ; inertial/global coordinate system +AeroDyn_Nodes['Vindyi'] = False # (m/s); y-component of induced velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['Vindzi'] = False # (m/s); z-component of induced velocity at each node; inertial/global coordinate system +AeroDyn_Nodes['Vindxp'] = False # (m/s); x-component of induced velocity at each node ; polar coordinate system +AeroDyn_Nodes['Uin'] = False # (m/s); x-component of induced velocity at each node ; polar coordinate system +AeroDyn_Nodes['Vindyp'] = False # (m/s); y-component of induced velocity at each node; polar coordinate system +AeroDyn_Nodes['Uit'] = False # (m/s); y-component of induced velocity at each node; polar coordinate system +AeroDyn_Nodes['Vindzp'] = False # (m/s); z-component of induced velocity at each node; polar coordinate system +AeroDyn_Nodes['Uir'] = False # (m/s); z-component of induced velocity at each node; polar coordinate system +AeroDyn_Nodes['Vindxl'] = False # (m/s); x-component of induced velocity at each node ; local-polar coordinate system +AeroDyn_Nodes['Vindyl'] = False # (m/s); y-component of induced velocity at each node; local-polar coordinate system +AeroDyn_Nodes['Vindzl'] = False # (m/s); z-component of induced velocity at each node; local-polar coordinate system +AeroDyn_Nodes['Vindxa'] = False # (m/s); x-component of induced velocity at each node ; airfoil coordinate system +AeroDyn_Nodes['Vindya'] = False # (m/s); y-component of induced velocity at each node; airfoil coordinate system +AeroDyn_Nodes['Vindza'] = False # (m/s); z-component of induced velocity at each node; airfoil coordinate system +AeroDyn_Nodes['Vx'] = False # (m/s); (will be deprecated) Local axial velocity (VDisx - STVx); ill-defined / implementation specific +AeroDyn_Nodes['Vy'] = False # (m/s); (will be deprecated) Local tangential velocity (VDisy - STVy); ill-defined / implementation specific +AeroDyn_Nodes['VRel'] = False # (m/s); Relative wind speed at each node, computed using x-y components in the airfoil system; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['DynP'] = False # (Pa); Dynamic pressure at each node; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Re'] = False # (-); Reynolds number (in millions) at each node; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['M'] = False # (-); Mach number at each node; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['AxInd'] = False # (-); Axial induction factor at each node; implementation specific +AeroDyn_Nodes['TnInd'] = False # (-); Tangential induction factor at each node; implementation specific +AeroDyn_Nodes['AxInd_qs'] = False # (-); Quasi-steady axial induction factor as computed within the quasi-steady BEM algorithm (before DBEMT and skew correction); implementation specific +AeroDyn_Nodes['TnInd_qs'] = False # (-); Quasi-steady tangential induction factor as computed within the quasi-steady BEM algorithm (before DBEMT and skew correction); implementation specific +AeroDyn_Nodes['Alpha'] = False # (deg); Angle of attack at each node; airfoil coordinate system +AeroDyn_Nodes['Phi'] = False # (deg); Inflow angle at each node; ill-defined / implementation specific +AeroDyn_Nodes['Theta'] = False # (deg); Pitch+Twist angle at each node; +AeroDyn_Nodes['Curve'] = False # (deg); Curvature angle at each node; +AeroDyn_Nodes['Toe'] = False # (deg); Toe angle at each node; +AeroDyn_Nodes['Cl'] = False # (-); Lift force coefficient at each node, including unsteady effects; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Cd'] = False # (-); Drag force coefficient at each node, including unsteady effects; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Cm'] = False # (-); Pitching moment coefficient at each node, including unsteady effects; about za, airfoil coordinate system +AeroDyn_Nodes['Cma'] = False # (-); Pitching moment coefficient at each node, including unsteady effects; about za, airfoil coordinate system +AeroDyn_Nodes['Cx'] = False # (-); (will be deprecated) Normal force (to plane) coefficient at each node; ill-defined / implementation specific +AeroDyn_Nodes['Cy'] = False # (-); (will be deprecated) Tangential force (to plane) coefficient at each node; ill-defined / implementation specific +AeroDyn_Nodes['Cn'] = False # (-); Normal force (to chord) coefficient at each node; airfoil coordinate system +AeroDyn_Nodes['Cxa'] = False # (-); Normal force (to chord) coefficient at each node; airfoil coordinate system +AeroDyn_Nodes['Ct'] = False # (-); Tangential force (to chord) coefficient at each node - Negative along ya!; airfoil coordinate system +AeroDyn_Nodes['Fxi'] = False # (N/m); Force per unit length in the x direction; inertial/global coordinate system +AeroDyn_Nodes['Fyi'] = False # (N/m); Force per unit length in the y direction; inertial/global coordinate system +AeroDyn_Nodes['Fzi'] = False # (N/m); Force per unit length in the z direction; inertial/global coordinate system +AeroDyn_Nodes['Mxi'] = False # (N-m/m); Moment per unit length in the x direction; inertial/global coordinate system +AeroDyn_Nodes['Myi'] = False # (N-m/m); Moment per unit length in the y direction; inertial/global coordinate system +AeroDyn_Nodes['Mzi'] = False # (N-m/m); Moment per unit length in the z direction; inertial/global coordinate system +AeroDyn_Nodes['Fxp'] = False # (N/m); Force per unit length in the x direction; polar coordinate system +AeroDyn_Nodes['Fyp'] = False # (N/m); Force per unit length in the y direction; polar coordinate system +AeroDyn_Nodes['Fzp'] = False # (N/m); Force per unit length in the z direction; polar coordinate system +AeroDyn_Nodes['Mxp'] = False # (N-m/m); Moment per unit length in the x direction; polar coordinate system +AeroDyn_Nodes['Myp'] = False # (N-m/m); Moment per unit length in the y direction; polar coordinate system +AeroDyn_Nodes['Mzp'] = False # (N-m/m); Moment per unit length in the z direction; polar coordinate system +AeroDyn_Nodes['Fxl'] = False # (N/m); Force per unit length in the x direction; local-polar coordinate system +AeroDyn_Nodes['Fyl'] = False # (N/m); Force per unit length in the y direction; local-polar coordinate system +AeroDyn_Nodes['Fzl'] = False # (N/m); Force per unit length in the z direction; local-polar coordinate system +AeroDyn_Nodes['Mxl'] = False # (N-m/m); Moment per unit length in the x direction; local-polar coordinate system +AeroDyn_Nodes['Myl'] = False # (N-m/m); Moment per unit length in the y direction; local-polar coordinate system +AeroDyn_Nodes['Mzl'] = False # (N-m/m); Moment per unit length in the z direction; local-polar coordinate system +AeroDyn_Nodes['Fl'] = False # (N/m); Lift force per unit length at each node; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Fd'] = False # (N/m); Drag force per unit length at each node; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Mm'] = False # (N-m/m); Pitching moment per unit length at each node; about za, airfoil coordinate system +AeroDyn_Nodes['Mza'] = False # (N-m/m); Pitching moment per unit length at each node; about za, airfoil coordinate system +AeroDyn_Nodes['Fx'] = False # (N/m); (will be deprecated) Normal force (to plane) per unit length at each node; ill-defined / implementation specific +AeroDyn_Nodes['Fy'] = False # (N/m); (will be deprecated) Tangential force (to plane) per unit length at each node; ill-defined / implementation specific +AeroDyn_Nodes['Fn'] = False # (N/m); Normal force (to chord) per unit length at each node; airfoil coordinate system +AeroDyn_Nodes['Fxa'] = False # (N/m); Normal force (to chord) per unit length at each node; airfoil coordinate system +AeroDyn_Nodes['Ft'] = False # (N/m); Tangential force (to chord) per unit length at each node - Negative along ya!; airfoil coordinate system +AeroDyn_Nodes['Gam'] = False # (m^2/s); Gamma -- circulation on blade; about za, airfoil coordinate system +AeroDyn_Nodes['Clrnc'] = False # (m); Tower clearance at each node (based on the absolute distance to the nearest point in the tower from blade node B#N# minus the local tower radius, in the deflected configuration); please note that this clearance is only approximate because the calculation assumes that the blade is a line with no volume (however, the calculation does use the local tower radius); when blade node B#N# is above the tower top (or below the tower base), the absolute distance to the tower top (or base) minus the local tower radius, in the deflected configuration, is output; +AeroDyn_Nodes['GeomPhi'] = False # (1/0); Geometric phi? If phi was solved using normal BEMT equations, GeomPhi = 1; otherwise, if it was solved geometrically, GeomPhi = 0.; +AeroDyn_Nodes['Chi'] = False # (deg); Skew angle (used in skewed wake correction); +AeroDyn_Nodes['UA_Flag'] = False # (-); Flag indicating if UA is turned on for this node.; +AeroDyn_Nodes['UA_x1'] = False # (rad); time-history of wake vorticity contributing to effective angle of attack; +AeroDyn_Nodes['UA_x2'] = False # (rad); time-history of wake vorticity contributing to effective angle of attack; +AeroDyn_Nodes['UA_x3'] = False # (-); dimension of cl (UAMod4) or cn (UAMod5); lagging the fully-attached coefficient; +AeroDyn_Nodes['UA_x4'] = False # (-); UAMod4 and 5 separation factor; +AeroDyn_Nodes['UA_x5'] = False # (-); UAMod5 vortex term; +AeroDyn_Nodes['Debug1'] = False # (-); Placeholders for debugging channels; +AeroDyn_Nodes['Debug2'] = False # (-); Placeholders for debugging channels; +AeroDyn_Nodes['Debug3'] = False # (-); Placeholders for debugging channels; +AeroDyn_Nodes['CpMin'] = False # (-); Pressure coefficient; +AeroDyn_Nodes['SgCav'] = False # (-); Cavitation number; +AeroDyn_Nodes['SigCr'] = False # (-); Critical cavitation number; +AeroDyn_Nodes['BEM_F_qs'] = False # (-); Tip/hub loss factor in quasi-steady BEM algorithm; +AeroDyn_Nodes['BEM_k_qs'] = False # (-); k factor in quasi-steady BEM algorithm; +AeroDyn_Nodes['BEM_kp_qs'] = False # (-); kp factor in quasi-steady BEM algorithm; +AeroDyn_Nodes['BEM_CT_qs'] = False # (-); Quasi-steady thrust coefficient as computed by the quasi-steady BEM algorithm. ; +AeroDyn_Nodes['Cl_qs'] = False # (-); Static portion of lift force coefficient at each node, without unsteady effects; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Cd_qs'] = False # (-); Static portion of drag force coefficient at each node, without unsteady effects; in xa-ya plane, airfoil coordinate system +AeroDyn_Nodes['Cm_qs'] = False # (-); Static portion of pitching moment coefficient at each node, without unsteady effects; about za, airfoil coordinate system +AeroDyn_Nodes['Fbxi'] = False # (N/m); Buoyancy force per unit length in the x direction; inertial/global coordinate system +AeroDyn_Nodes['Fbyi'] = False # (N/m); Buoyancy force per unit length in the y direction; inertial/global coordinate system +AeroDyn_Nodes['Fbzi'] = False # (N/m); Buoyancy force per unit length in the z direction; inertial/global coordinate system +AeroDyn_Nodes['Mbxi'] = False # (N-m/m); Buoyancy moment per unit length in the x direction; inertial/global coordinate system +AeroDyn_Nodes['Mbyi'] = False # (N-m/m); Buoyancy moment per unit length in the y direction; inertial/global coordinate system +AeroDyn_Nodes['Mbzi'] = False # (N-m/m); Buoyancy moment per unit length in the z direction; inertial/global coordinate system +AeroDyn_Nodes['Fbxp'] = False # (N/m); Buoyancy force per unit length in the x direction; polar coordinate system +AeroDyn_Nodes['Fbyp'] = False # (N/m); Buoyancy force per unit length in the y direction; polar coordinate system +AeroDyn_Nodes['Fbzp'] = False # (N/m); Buoyancy force per unit length in the z direction; polar coordinate system +AeroDyn_Nodes['Mbxp'] = False # (N-m/m); Buoyancy moment per unit length in the x direction; polar coordinate system +AeroDyn_Nodes['Mbyp'] = False # (N-m/m); Buoyancy moment per unit length in the y direction; polar coordinate system +AeroDyn_Nodes['Mbzp'] = False # (N-m/m); Buoyancy moment per unit length in the z direction; polar coordinate system +AeroDyn_Nodes['Fbxl'] = False # (N/m); Buoyancy force per unit length in the x direction; local-polar coordinate system +AeroDyn_Nodes['Fbyl'] = False # (N/m); Buoyancy force per unit length in the y direction; local-polar coordinate system +AeroDyn_Nodes['Fbzl'] = False # (N/m); Buoyancy force per unit length in the z direction; local-polar coordinate system +AeroDyn_Nodes['Mbxl'] = False # (N-m/m); Buoyancy moment per unit length in the x direction; local-polar coordinate system +AeroDyn_Nodes['Mbyl'] = False # (N-m/m); Buoyancy moment per unit length in the y direction; local-polar coordinate system +AeroDyn_Nodes['Mbzl'] = False # (N-m/m); Buoyancy moment per unit length in the z direction; local-polar coordinate system +AeroDyn_Nodes['Fbxa'] = False # (N/m); Buoyancy force per unit length in the x direction; airfoil coordinate system +AeroDyn_Nodes['Fbn'] = False # (N/m); Buoyancy force per unit length in the x direction; airfoil coordinate system +AeroDyn_Nodes['Fbya'] = False # (N/m); Buoyancy force per unit length in the y direction; airfoil coordinate system +AeroDyn_Nodes['Fbt'] = False # (N/m); Buoyancy force per unit length in the y direction; airfoil coordinate system +AeroDyn_Nodes['Fbza'] = False # (N/m); Buoyancy force per unit length in the z direction; airfoil coordinate system +AeroDyn_Nodes['Fbs'] = False # (N/m); Buoyancy force per unit length in the z direction; airfoil coordinate system +AeroDyn_Nodes['Mbxa'] = False # (N-m/m); Buoyancy moment per unit length in the x direction; airfoil coordinate system +AeroDyn_Nodes['Mbn'] = False # (N-m/m); Buoyancy moment per unit length in the x direction; airfoil coordinate system +AeroDyn_Nodes['Mbya'] = False # (N-m/m); Buoyancy moment per unit length in the y direction; airfoil coordinate system +AeroDyn_Nodes['Mbt'] = False # (N-m/m); Buoyancy moment per unit length in the y direction; airfoil coordinate system +AeroDyn_Nodes['Mbza'] = False # (N-m/m); Buoyancy moment per unit length in the z direction; airfoil coordinate system +AeroDyn_Nodes['Mbs'] = False # (N-m/m); Buoyancy moment per unit length in the z direction; airfoil coordinate system + + +""" BeamDyn_Nodes """ +BeamDyn_Nodes = {} + +# Sectional Loads +BeamDyn_Nodes['FxL'] = False # (N); Sectional force resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FyL'] = False # (N); Sectional force resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FzL'] = False # (N); Sectional force resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MxL'] = False # (N-m); Sectional moment resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MyL'] = False # (N-m); Sectional moment resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MzL'] = False # (N-m); Sectional moment resultants at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['Fxr'] = False # (N); Sectional force resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['Fyr'] = False # (N); Sectional force resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['Fzr'] = False # (N); Sectional force resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['Mxr'] = False # (N-m); Sectional moment resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['Myr'] = False # (N-m); Sectional moment resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['Mzr'] = False # (N-m); Sectional moment resultants at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system + +# Sectional Motions +BeamDyn_Nodes['TDxr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TDyr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TDzr'] = False # (m); Sectional translational deflection (relative to the undeflected position) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RDxr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RDyr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RDzr'] = False # (-); Sectional angular/rotational deflection Wiener-Milenkovic parameter (relative to the undeflected orientation) at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['AbsXg'] = False # (m); Node position in X (global coordinate) ; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['AbsYg'] = False # (m); Node position in Y (global coordinate) ; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['AbsZg'] = False # (m); Node position in Z (global coordinate) ; g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['AbsXr'] = False # (m); Node position in X (relative to root) ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['AbsYr'] = False # (m); Node position in Y (relative to root) ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['AbsZr'] = False # (m); Node position in Z (relative to root) ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TVxg'] = False # (m/s); Sectional translational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['TVyg'] = False # (m/s); Sectional translational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['TVzg'] = False # (m/s); Sectional translational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['TVxl'] = False # (m/s); Sectional translational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TVyl'] = False # (m/s); Sectional translational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TVzl'] = False # (m/s); Sectional translational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TVxr'] = False # (m/s); Sectional translational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TVyr'] = False # (m/s); Sectional translational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TVzr'] = False # (m/s); Sectional translational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RVxg'] = False # (deg/s); Sectional angular/rotational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['RVyg'] = False # (deg/s); Sectional angular/rotational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['RVzg'] = False # (deg/s); Sectional angular/rotational velocities (absolute); g: the global inertial frame coordinate system; when coupled to FAST, this is equivalent to FAST s global inertial frame (i) coordinate system +BeamDyn_Nodes['RVxl'] = False # (deg/s); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RVyl'] = False # (deg/s); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RVzl'] = False # (deg/s); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RVxr'] = False # (deg/s); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RVyr'] = False # (deg/s); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RVzr'] = False # (deg/s); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TAxl'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TAyl'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TAzl'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['TAxr'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TAyr'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['TAzr'] = False # (m/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RAxl'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RAyl'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RAzl'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['RAxr'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RAyr'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['RAzr'] = False # (deg/s^2); Sectional angular/rotational velocities (absolute); r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system + +# Applied Loads +BeamDyn_Nodes['PFxL'] = False # (N); Applied point forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['PFyL'] = False # (N); Applied point forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['PFzL'] = False # (N); Applied point forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['PMxL'] = False # (N-m); Applied point moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['PMyL'] = False # (N-m); Applied point moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['PMzL'] = False # (N-m); Applied point moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DFxL'] = False # (N/m); Applied distributed forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DFyL'] = False # (N/m); Applied distributed forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DFzL'] = False # (N/m); Applied distributed forces at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DMxL'] = False # (N-m/m); Applied distributed moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DMyL'] = False # (N-m/m); Applied distributed moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DMzL'] = False # (N-m/m); Applied distributed moments at each node expressed in l; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['DFxR'] = False # (N/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['DFyR'] = False # (N/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['DFzR'] = False # (N/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['DMxR'] = False # (N-m/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['DMyR'] = False # (N-m/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['DMzR'] = False # (N-m/m); Applied distributed forces at each node expressed in r; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system + +# Sectional Partial Loads (debugging) +BeamDyn_Nodes['FFbxl'] = False # (N); Gyroscopic force x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFbyl'] = False # (N); Gyroscopic force y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFbzl'] = False # (N); Gyroscopic force z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFbxr'] = False # (N); Gyroscopic force x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFbyr'] = False # (N); Gyroscopic force y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFbzr'] = False # (N); Gyroscopic force z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFbxl'] = False # (N-m); Gyroscopic moment about x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFbyl'] = False # (N-m); Gyroscopic moment about y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFbzl'] = False # (N-m); Gyroscopic moment about z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFbxr'] = False # (N-m); Gyroscopic moment about x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFbyr'] = False # (N-m); Gyroscopic moment about y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFbzr'] = False # (N-m); Gyroscopic moment about z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFcxl'] = False # (N); Elastic restoring force Fc x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFcyl'] = False # (N); Elastic restoring force Fc y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFczl'] = False # (N); Elastic restoring force Fc z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFcxr'] = False # (N); Elastic restoring force Fc x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFcyr'] = False # (N); Elastic restoring force Fc y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFczr'] = False # (N); Elastic restoring force Fc z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFcxl'] = False # (N-m); Elastic restoring moment Fc about x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFcyl'] = False # (N-m); Elastic restoring moment Fc about y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFczl'] = False # (N-m); Elastic restoring moment Fc about z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFcxr'] = False # (N-m); Elastic restoring moment Fc about x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFcyr'] = False # (N-m); Elastic restoring moment Fc about y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFczr'] = False # (N-m); Elastic restoring moment Fc about z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFdxl'] = False # (N); Elastic restoring force Fd x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFdyl'] = False # (N); Elastic restoring force Fd y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFdzl'] = False # (N); Elastic restoring force Fd z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFdxr'] = False # (N); Elastic restoring force Fd x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFdyr'] = False # (N); Elastic restoring force Fd y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFdzr'] = False # (N); Elastic restoring force Fd z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFdxl'] = False # (N-m); Elastic restoring moment Fd about x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFdyl'] = False # (N-m); Elastic restoring moment Fd about y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFdzl'] = False # (N-m); Elastic restoring moment Fd about z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFdxr'] = False # (N-m); Elastic restoring moment Fd about x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFdyr'] = False # (N-m); Elastic restoring moment Fd about y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFdzr'] = False # (N-m); Elastic restoring moment Fd about z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFgxl'] = False # (N); Gravity force x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFgyl'] = False # (N); Gravity force y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFgzl'] = False # (N); Gravity force z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFgxr'] = False # (N); Gravity force x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFgyr'] = False # (N); Gravity force y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFgzr'] = False # (N); Gravity force z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFgxl'] = False # (N-m); Gravity moment about x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFgyl'] = False # (N-m); Gravity moment about y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFgzl'] = False # (N-m); Gravity moment about z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFgxr'] = False # (N-m); Gravity moment about x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFgyr'] = False # (N-m); Gravity moment about y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFgzr'] = False # (N-m); Gravity moment about z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFixl'] = False # (N); Inertial force x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFiyl'] = False # (N); Inertial force y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFizl'] = False # (N); Inertial force z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['FFixr'] = False # (N); Inertial force x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFiyr'] = False # (N); Inertial force y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['FFizr'] = False # (N); Inertial force z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFixl'] = False # (N-m); Inertial moment about x ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFiyl'] = False # (N-m); Inertial moment about y ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFizl'] = False # (N-m); Inertial moment about z ; l: a floating coordinate system local to the deflected beam +BeamDyn_Nodes['MFixr'] = False # (N-m); Inertial moment about x ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFiyr'] = False # (N-m); Inertial moment about y ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system +BeamDyn_Nodes['MFizr'] = False # (N-m); Inertial moment about z ; r: a floating reference coordinate system fixed to the root of the moving beam; when coupled to FAST for blades, this is equivalent to the IEC blade (b) coordinate system + + +""" ElastoDyn_Nodes """ +ElastoDyn_Nodes = {} + +# Local Span Motions +ElastoDyn_Nodes['ALx'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local xb-axis +ElastoDyn_Nodes['Ax'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local xb-axis +ElastoDyn_Nodes['ALy'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local yb-axis +ElastoDyn_Nodes['Ay'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local yb-axis +ElastoDyn_Nodes['ALz'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local zb-axis +ElastoDyn_Nodes['Az'] = False # (m/s^2); local flapwise acceleration (absolute) of node; Directed along the local zb-axis +ElastoDyn_Nodes['TDx'] = False # (m); local flapwise (translational) deflection (relative to the undeflected position) of node; Directed along the xb-axis +ElastoDyn_Nodes['UxB'] = False # (m); local flapwise (translational) deflection (relative to the undeflected position) of node; Directed along the xb-axis +ElastoDyn_Nodes['TDy'] = False # (m); local edgewise (translational) deflection (relative to the undeflected position) of node; Directed along the yb-axis +ElastoDyn_Nodes['UyB'] = False # (m); local edgewise (translational) deflection (relative to the undeflected position) of node; Directed along the yb-axis +ElastoDyn_Nodes['TDz'] = False # (m); local axial (translational) deflection (relative to the undeflected position) of node; Directed along the zb-axis +ElastoDyn_Nodes['UzB'] = False # (m); local axial (translational) deflection (relative to the undeflected position) of node; Directed along the zb-axis +ElastoDyn_Nodes['RDx'] = False # (deg); Local rotational displacement about x-axis (relative to undeflected); About the local xb-axis +ElastoDyn_Nodes['Rx'] = False # (deg); Local rotational displacement about x-axis (relative to undeflected); About the local xb-axis +ElastoDyn_Nodes['RDy'] = False # (deg); Local rotational displacement about y-axis (relative to undeflected); About the local yb-axis +ElastoDyn_Nodes['Ry'] = False # (deg); Local rotational displacement about y-axis (relative to undeflected); About the local yb-axis +ElastoDyn_Nodes['RDz'] = False # (deg); Local rotational displacement about z-axis (relative to undeflected); About the local zb-axis +ElastoDyn_Nodes['Rz'] = False # (deg); Local rotational displacement about z-axis (relative to undeflected); About the local zb-axis + +# Local Span Loads +ElastoDyn_Nodes['MLx'] = False # (kN-m); local edgewise moment at node; About the local xb-axis +ElastoDyn_Nodes['Mx'] = False # (kN-m); local edgewise moment at node; About the local xb-axis +ElastoDyn_Nodes['MLy'] = False # (kN-m); local flapwise moment at node; About the local yb-axis +ElastoDyn_Nodes['My'] = False # (kN-m); local flapwise moment at node; About the local yb-axis +ElastoDyn_Nodes['MLz'] = False # (kN-m); local pitching moment at node; About the local zb-axis +ElastoDyn_Nodes['MLzNT'] = False # (kN-m); local pitching moment at node; About the local zb-axis +ElastoDyn_Nodes['MzL'] = False # (kN-m); local pitching moment at node; About the local zb-axis +ElastoDyn_Nodes['Mz'] = False # (kN-m); local pitching moment at node; About the local zb-axis +ElastoDyn_Nodes['FLx'] = False # (kN); local flapwise shear force at node; Directed along the local xb-axis +ElastoDyn_Nodes['Fx'] = False # (kN); local flapwise shear force at node; Directed along the local xb-axis +ElastoDyn_Nodes['FLy'] = False # (kN); local edgewise shear force at node; Directed along the local yb-axis +ElastoDyn_Nodes['Fy'] = False # (kN); local edgewise shear force at node; Directed along the local yb-axis +ElastoDyn_Nodes['FLz'] = False # (kN); local axial force at node; Directed along the local zb-axis +ElastoDyn_Nodes['FLzNT'] = False # (kN); local axial force at node; Directed along the local zb-axis +ElastoDyn_Nodes['FzL'] = False # (kN); local axial force at node; Directed along the local zb-axis +ElastoDyn_Nodes['Fz'] = False # (kN); local axial force at node; Directed along the local zb-axis +ElastoDyn_Nodes['MLxNT'] = False # (kN-m); Edgewise moment in local coordinate system (initial structural twist removed); About the local xb-axis +ElastoDyn_Nodes['MxL'] = False # (kN-m); Edgewise moment in local coordinate system (initial structural twist removed); About the local xb-axis +ElastoDyn_Nodes['MlyNT'] = False # (kN-m); Flapwise shear moment in local coordinate system (initial structural twist removed); About the local yb-axis +ElastoDyn_Nodes['MyL'] = False # (kN-m); Flapwise shear moment in local coordinate system (initial structural twist removed); About the local yb-axis +ElastoDyn_Nodes['FLxNT'] = False # (kN); Flapwise shear force in local coordinate system (initial structural twist removed); Directed along the local xb-axis +ElastoDyn_Nodes['FxL'] = False # (kN); Flapwise shear force in local coordinate system (initial structural twist removed); Directed along the local xb-axis +ElastoDyn_Nodes['FlyNT'] = False # (kN); Edgewise shear force in local coordinate system (initial structural twist removed); Directed along the local yb-axis +ElastoDyn_Nodes['FyL'] = False # (kN); Edgewise shear force in local coordinate system (initial structural twist removed); Directed along the local yb-axis + +""" MoorDyn """ +# THIS IS NOT A COMPLETE LIST! +# the "flexible naming system" discussed on page 7-8 of the documentation is not included +# http://www.matt-hall.ca/files/MoorDyn-Users-Guide-2017-08-16.pdf + +# also assuming that like other OpenFAST variables, it is limited to 9 output locations per veriable, i.e. FairTen1-FairTen9 +# TODO: Handle the flexible outputs for moordyn. This will require a different approach than the current dictionary structure. + +MoorDyn = {} +MoorDyn['FairTen1'] = False # (); ; +MoorDyn['FairTen2'] = False # (); ; +MoorDyn['FairTen3'] = False # (); ; +MoorDyn['FairTen4'] = False # (); ; +MoorDyn['FairTen5'] = False # (); ; +MoorDyn['FairTen6'] = False # (); ; +MoorDyn['FairTen7'] = False # (); ; +MoorDyn['FairTen8'] = False # (); ; +MoorDyn['FairTen9'] = False # (); ; +MoorDyn['AnchTen1'] = False # (); ; +MoorDyn['AnchTen2'] = False # (); ; +MoorDyn['AnchTen3'] = False # (); ; +MoorDyn['AnchTen4'] = False # (); ; +MoorDyn['AnchTen5'] = False # (); ; +MoorDyn['AnchTen6'] = False # (); ; +MoorDyn['AnchTen7'] = False # (); ; +MoorDyn['AnchTen8'] = False # (); ; +MoorDyn['AnchTen9'] = False # (); ; + + + + + +""" ExtPtfm """ +# THIS IS NOT A COMPLETE LIST! +# Need to handle in different way based on documentaion here: https://openfast.readthedocs.io/en/main/source/user/extptfm/input_files.html#output-channels +# TODO: Handle the flexible outputs for ExtPtfm. This will require a different approach than the current dictionary structure. + +ExtPtfm = {} +ExtPtfm['IntrfFx'] = False # - Platform interface force - Directed along the x-direction (N) +ExtPtfm['IntrfFy'] = False # - Platform interface force - Directed along the y-direction (N) +ExtPtfm['IntrfFz'] = False # - Platform interface force - Directed along the z-direction (N) +ExtPtfm['IntrfMx'] = False # - Platform interface moment - Directed along the x-direction (Nm) +ExtPtfm['IntrfMy'] = False # - Platform interface moment - Directed along the y-direction (Nm) +ExtPtfm['IntrfMz'] = False # - Platform interface moment - Directed along the z-direction (Nm) +ExtPtfm['InpF_Fx'] = False # - Reduced Input force at interface point - Directed along the x-direction (N) +ExtPtfm['InpF_Fy'] = False # - Reduced Input force at interface point - Directed along the y-direction (N) +ExtPtfm['InpF_Fz'] = False # - Reduced Input force at interface point - Directed along the z-direction (N) +ExtPtfm['InpF_Mx'] = False # - Reduced Input moment at interface point - Directed along the x-direction (Nm) +ExtPtfm['InpF_My'] = False # - Reduced Input moment at interface point - Directed along the y-direction (Nm) +ExtPtfm['InpF_Mz'] = False # - Reduced Input moment at interface point - Directed along the z-direction (Nm) +ExtPtfm['CBQ_001'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_002'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_003'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_004'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_005'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_006'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_007'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_010'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_011'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_012'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_013'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_014'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_015'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_016'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_017'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_020'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_021'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_022'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_023'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_024'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBQ_025'] = False # - Modal displacement of internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_001'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_002'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_003'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_004'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_005'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_006'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_007'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_010'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_011'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_012'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_013'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_014'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_015'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_016'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_017'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_020'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_021'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_022'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_023'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_024'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['CBF_025'] = False # - Modal force on internal Craig-Bampton mode number XXX (-) +ExtPtfm['WavElev'] = False # - Wave elevation (m) + +""" AeroDisk """ +AeroDisk = {} + +# All channels +AeroDisk['ADSpeed'] = False # (rpm); Actuator disk rotational speed; +AeroDisk['ADTSR'] = False # (-); Actuator disk tip-speed ratio; +AeroDisk['ADPitch'] = False # (deg); Actuator disk collective blade-pitch angle; +AeroDisk['ADVWindx'] = False # (m/s); Actuator-disk-average wind velocity; local coordinate system - X +AeroDisk['ADVWindy'] = False # (m/s); Actuator-disk-average wind velocity; local coordinate system - Y +AeroDisk['ADVWindz'] = False # (m/s); Actuator-disk-average wind velocity; local coordinate system - Z +AeroDisk['ADVWindxi'] = False # (m/s); Actuator-disk-average wind velocity; global (inertial) coordinate system - X +AeroDisk['ADVWindyi'] = False # (m/s); Actuator-disk-average wind velocity; global (inertial) coordinate system - Y +AeroDisk['ADVWindzi'] = False # (m/s); Actuator-disk-average wind velocity; global (inertial) coordinate system - Z +AeroDisk['ADSTVx'] = False # (m/s); Actuator-disk structural translation velocity; local coordinate system - X +AeroDisk['ADSTVy'] = False # (m/s); Actuator-disk structural translation velocity; local coordinate system - Y +AeroDisk['ADSTVz'] = False # (m/s); Actuator-disk structural translation velocity; local coordinate system - Z +AeroDisk['ADSTVxi'] = False # (m/s); Actuator-disk structural translation velocity; global (inertial) coordinate system - X +AeroDisk['ADSTVyi'] = False # (m/s); Actuator-disk structural translation velocity; global (inertial) coordinate system - Y +AeroDisk['ADSTVzi'] = False # (m/s); Actuator-disk structural translation velocity; global (inertial) coordinate system - Z +AeroDisk['ADVRel'] = False # (m/s); Actuator-disk -average relative wind speed; +AeroDisk['ADSkew'] = False # (deg); Actuator-disk inflow-skew angle; +AeroDisk['ADYawErr'] = False # (deg); Actuator-disk yaw-error angle; +AeroDisk['ADCp'] = False # (-); Actuator-disk coeficent of power; +AeroDisk['ADCt'] = False # (-); Actuator-disk coeficent of thrust; +AeroDisk['ADCq'] = False # (-); Actuator-disk coeficent of torque; +AeroDisk['ADFx'] = False # (N); Actuator-disk aerodynamic force; local coordinate system - X +AeroDisk['ADFy'] = False # (N); Actuator-disk aerodynamic force; local coordinate system - Y +AeroDisk['ADFz'] = False # (N); Actuator-disk aerodynamic force; local coordinate system - Z +AeroDisk['ADFxi'] = False # (N); Actuator-disk aerodynamic force; global (inertial) coordinate system - X +AeroDisk['ADFyi'] = False # (N); Actuator-disk aerodynamic force; global (inertial) coordinate system - Y +AeroDisk['ADFzi'] = False # (N); Actuator-disk aerodynamic force; global (inertial) coordinate system - Z +AeroDisk['ADMx'] = False # (N-m); Actuator-disk aerodynamic moment; local coordinate system - X +AeroDisk['ADMy'] = False # (N-m); Actuator-disk aerodynamic moment; local coordinate system - Y +AeroDisk['ADMz'] = False # (N-m); Actuator-disk aerodynamic moment; local coordinate system - Z +AeroDisk['ADMxi'] = False # (N-m); Actuator-disk aerodynamic moment; global (inertial) coordinate system - X +AeroDisk['ADMyi'] = False # (N-m); Actuator-disk aerodynamic moment; global (inertial) coordinate system - Y +AeroDisk['ADMzi'] = False # (N-m); Actuator-disk aerodynamic moment; global (inertial) coordinate system - Z +AeroDisk['ADPower'] = False # (W); Actuator-disk power; + + +""" SimpleElastoDyn """ +SimpleElastoDyn = {} + +# Outputs +SimpleElastoDyn['Azimuth'] = False # (deg); Rotor azimuth angle (position); +SimpleElastoDyn['RotSpeed'] = False # (rpm); Rotor azimuth angular speed; +SimpleElastoDyn['LSSTipVxa'] = False # (rpm); Rotor azimuth angular speed; +SimpleElastoDyn['LSSTipVxs'] = False # (rpm); Rotor azimuth angular speed; +SimpleElastoDyn['LSSTipV'] = False # (rpm); Rotor azimuth angular speed; +SimpleElastoDyn['RotAcc'] = False # (deg/s^2); Rotor azimuth angular acceleration; +SimpleElastoDyn['LSSTipAxs'] = False # (deg/s^2); Rotor azimuth angular acceleration; +SimpleElastoDyn['LSSTipA'] = False # (deg/s^2); Rotor azimuth angular acceleration; +SimpleElastoDyn['LSSTipAxa'] = False # (deg/s^2); Rotor azimuth angular acceleration; +SimpleElastoDyn['GenSpeed'] = False # (rpm); Angular speed of the high-speed shaft and generator; +SimpleElastoDyn['HSShftV'] = False # (rpm); Angular speed of the high-speed shaft and generator; +SimpleElastoDyn['GenAcc'] = False # (deg/s^2); Angular acceleration of the high-speed shaft and generator; +SimpleElastoDyn['HSShftA'] = False # (deg/s^2); Angular acceleration of the high-speed shaft and generator; +SimpleElastoDyn['Yaw'] = False # (deg); Commanded yaw position from controller; +SimpleElastoDyn['YawRate'] = False # (deg/s); commanded yaw rate from controller; + +# Blade Pitch Motions +SimpleElastoDyn['BldPitch1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +SimpleElastoDyn['BlPitch1'] = False # (deg); Blade 1 pitch angle (position); Positive towards feather about the minus zc1- and minus zb1-axes +SimpleElastoDyn['BldPitch2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +SimpleElastoDyn['BlPitch2'] = False # (deg); Blade 2 pitch angle (position); Positive towards feather about the minus zc2- and minus zb2-axes +SimpleElastoDyn['BldPitch3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes +SimpleElastoDyn['BlPitch3'] = False # (deg); Blade 3 pitch angle (position); Positive towards feather about the minus zc3- and minus zb3-axes + +# Hub and Rotor Loads +SimpleElastoDyn['RotTorq'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +SimpleElastoDyn['LSShftTq'] = False # (kN-m); Low-speed shaft torque (this is constant along the shaft and is equivalent to the rotor torque); About the xa- and xs-axes +SimpleElastoDyn['RotPwr'] = False # (kW); Rotor power (this is equivalent to the low-speed shaft power); N/A +SimpleElastoDyn['LSShftPwr'] = False # (kW); Rotor power (this is equivalent to the low-speed shaft power); N/A + + +""" Final Output Dictionary """ +FstOutput = {} +FstOutput['AeroDyn'] = AeroDyn +FstOutput['BeamDyn'] = BeamDyn +FstOutput['ElastoDyn'] = ElastoDyn +FstOutput['InflowWind'] = InflowWind +FstOutput['ServoDyn'] = ServoDyn +FstOutput['HydroDyn'] = HydroDyn +FstOutput['Morison'] = Morison +FstOutput['SeaState'] = SeaState +FstOutput['SubDyn'] = SubDyn +FstOutput['WAMIT'] = WAMIT +FstOutput['AeroDyn_Nodes'] = AeroDyn_Nodes +FstOutput['BeamDyn_Nodes'] = BeamDyn_Nodes +FstOutput['ElastoDyn_Nodes'] = ElastoDyn_Nodes +FstOutput['MoorDyn'] = MoorDyn +FstOutput['ExtPtfm'] = ExtPtfm +FstOutput['AeroDisk'] = AeroDisk +FstOutput['SimpleElastoDyn'] = SimpleElastoDyn \ No newline at end of file From 07422359cb2ce678edfb54d8bafef9c720c30301 Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Sat, 4 Jan 2025 07:44:46 -0700 Subject: [PATCH 3/6] trying to find discon file --- .github/workflows/CI_IEA15.yml | 2 +- tests/environment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI_IEA15.yml b/.github/workflows/CI_IEA15.yml index 11f74199..97697880 100644 --- a/.github/workflows/CI_IEA15.yml +++ b/.github/workflows/CI_IEA15.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v3 + - uses: conda-incubator/setup-miniconda@v2 # https://github.com/marketplace/actions/setup-miniconda with: miniconda-version: "latest" diff --git a/tests/environment.yml b/tests/environment.yml index 9b3cd426..133c4a87 100644 --- a/tests/environment.yml +++ b/tests/environment.yml @@ -30,7 +30,7 @@ dependencies: - psutil - pbr - pytables - - rosco ==2.9.0 + - rosco ==2.9.5 - sshtunnel - simpy - tomli From 64416b61330f2c3a24f66ae979872fdec2835e32 Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Sat, 4 Jan 2025 07:51:15 -0700 Subject: [PATCH 4/6] debugging --- .github/workflows/CI_IEA15.yml | 18 +++++++++--------- tests/environment.yml | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/CI_IEA15.yml b/.github/workflows/CI_IEA15.yml index 97697880..07d020cb 100644 --- a/.github/workflows/CI_IEA15.yml +++ b/.github/workflows/CI_IEA15.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v2 + - uses: conda-incubator/setup-miniconda@v3 # https://github.com/marketplace/actions/setup-miniconda with: miniconda-version: "latest" @@ -28,16 +28,16 @@ jobs: # Install WEIO - - name: Install WEIO - shell: bash -l {0} - run: | - git clone https://github.com/ebranlard/weio - cd weio - python -m pip install -e . + #- name: Install WEIO + # shell: bash -l {0} + # run: | + # git clone https://github.com/ebranlard/weio + # cd weio + # python -m pip install -e . # Debugging session - #- name: Setup tmate session - # uses: mxschmitt/action-tmate@v3 + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 # Run all tests - name: Run tests diff --git a/tests/environment.yml b/tests/environment.yml index 133c4a87..9c7f8229 100644 --- a/tests/environment.yml +++ b/tests/environment.yml @@ -23,6 +23,7 @@ dependencies: - openpyxl - pandas - paramiko + - pip - pyarrow - pynacl - pytest From 059a9e380141ae23217f22043daeeae7ce62403c Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Sat, 4 Jan 2025 08:01:41 -0700 Subject: [PATCH 5/6] trying more rigorous discon path --- .github/workflows/CI_IEA15.yml | 10 +++++++--- .../IEA-15-240-RWT-Monopile_ServoDyn.dat | 2 +- .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/CI_IEA15.yml b/.github/workflows/CI_IEA15.yml index 07d020cb..fe62846d 100644 --- a/.github/workflows/CI_IEA15.yml +++ b/.github/workflows/CI_IEA15.yml @@ -36,9 +36,13 @@ jobs: # python -m pip install -e . # Debugging session - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - + #- name: Setup tmate session + # uses: mxschmitt/action-tmate@v3 + - name: Debugging output + run: | + conda list + printenv + # Run all tests - name: Run tests shell: bash -l {0} diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat index b25ce5a2..90671dba 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat @@ -74,7 +74,7 @@ True GenTiStp - Method to stop the generator {T: timed usin ---------------------- CABLE CONTROL ---------------------------------------- 0 CCmode - Cable control mode {0- none, 4- user-defined from Simulink/Labview, 5- user-defineAfC_phased from Bladed-style DLL} ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"/usr/share/miniconda3/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"${CONDA}/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "IEA-15-240-RWT-Monopile_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat index 2b902e66..3e053672 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat @@ -74,7 +74,7 @@ True GenTiStp - Method to stop the generator {T: timed usin ---------------------- CABLE CONTROL ------------------------------------------- 0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"/usr/share/miniconda3/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"${CONDA}/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "IEA-15-240-RWT-UMaineSemi_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] From 9c92c4f91aa14e83765b9b1bd80974fe7acb0229 Mon Sep 17 00:00:00 2001 From: Garrett Barter Date: Sat, 4 Jan 2025 08:07:51 -0700 Subject: [PATCH 6/6] fortran does not like shell variables --- .../IEA-15-240-RWT-Monopile_ServoDyn.dat | 2 +- .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat index 90671dba..303e20b5 100644 --- a/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ServoDyn.dat @@ -74,7 +74,7 @@ True GenTiStp - Method to stop the generator {T: timed usin ---------------------- CABLE CONTROL ---------------------------------------- 0 CCmode - Cable control mode {0- none, 4- user-defined from Simulink/Labview, 5- user-defineAfC_phased from Bladed-style DLL} ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"${CONDA}/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"/home/runner/miniconda3/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "IEA-15-240-RWT-Monopile_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] diff --git a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat index 3e053672..d5174e17 100644 --- a/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat +++ b/OpenFAST/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat @@ -74,7 +74,7 @@ True GenTiStp - Method to stop the generator {T: timed usin ---------------------- CABLE CONTROL ------------------------------------------- 0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] -"${CONDA}/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] +"/home/runner/miniconda3/envs/test/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "IEA-15-240-RWT-UMaineSemi_DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface]