fast_advance_states() - ed_updatestates - SolveOption2a_Inp2BD - ed_calc_output 更新数据 - BD updatestates - SolveOption2b_Inp2IfW Ifw根据ED结果更新 - ifw updatestates - SolveOption2c_Inp2AD_SrvD - ifw calcoutput - AD_InputSolve_IfW - SrvD_InputSolve - ``! from Ifw`` - WindDir - HorWindV - LidSpeed - MsrPositionsX - MsrPositionsY - MsrPositionsZ - - ``! from ED`` - YawAngle - Yaw - YawRate - LSS_Spd - HSS_Spd - RotSpeed - RootMxc - RootMyc - YawBrTAxp - YawBrTAyp - LSSTipPxa - LSSTipMxa - LSSTipMya - LSSTipMza - LSSTipMys - LSSTipMzs - YawBrMyn - YawBrMzn - NcIMURAxs - NcIMURAys - NcIMURAzs - RotPwr - LSShftFxa - LSShftFys - LSShftFzs - SrvD_UpdateStates - SrvD_CopyInput - SrvD_Input_ExtrapInterp - SrvD_UpdateDiscState - SrvD_Input_ExtrapInterp - DLL_controller_call - Torque_UpdateStates - Pitch_UpdateStates - Yaw_UpdateStates - TipBrake_UpdateStates - ! Blade Nacelle Tower Platform StrucCtrl,但是NumSStC = 0 这部分代码跳过 - ! Compute ElecPwr and GenTrq for controller (and DLL needs this saved): - CalculateTorque CalcOutputs_And_SolveForInputs - SolveOption2 - AD_CalcOutput - SrvD_CalcOutput - ED_InputSolve ED接收AD SD输入 - BladeLoads.force/moment - towerloads.force/moment - GenTrq - HSSBrTrqC - BlPitchCom - YawMom - StrucCtrl loads 暂时没有 - NacelleLoads.force/moment - Transfer_SrvD_to_SD_MD - ! 都在ifw更新后 - SrvD_InputSolve - ResetRemapFlags ed 到Bladed dll的输出: ``` y%RotPwr = m%AllOuts( RotPwr)*1000. DO K=1,p%NumBl y%RootMxc(K) = m%AllOuts( RootMxc(K) )*1000. y%RootMyc(K) = m%AllOuts( RootMyc(K) )*1000. END DO y%YawBrTAxp = m%AllOuts( YawBrTAxp) y%YawBrTAyp = m%AllOuts( YawBrTAyp) !y%LSSTipPxa = m%AllOuts( LSSTipPxa)*D2R ! bjj: did this above already y%LSSTipMxa = m%AllOuts(LSShftMxa)*1000. y%LSSTipMya = m%AllOuts(LSSTipMya)*1000. ! Rotating hub My (GL co-ords) (Nm) y%LSSTipMza = m%AllOuts(LSSTipMza)*1000. ! Rotating hub Mz (GL co-ords) (Nm) y%LSSTipMys = m%AllOuts(LSSTipMys)*1000. ! Fixed hub My (GL co-ords) (Nm) y%LSSTipMzs = m%AllOuts(LSSTipMzs)*1000. ! Fixed hub Mz (GL co-ords) (Nm) y%YawBrMyn = m%AllOuts( YawBrMyn)*1000. ! Yaw bearing My (GL co-ords) (Nm) !tower accel y%YawBrMzn = m%AllOuts( YawBrMzn)*1000. ! Yaw bearing Mz (GL co-ords) (Nm) y%NcIMURAxs = m%AllOuts(NcIMURAxs)*D2R ! Nacelle roll acceleration (rad/s^2) -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system y%NcIMURAys = m%AllOuts(NcIMURAys)*D2R ! Nacelle nodding acceleration (rad/s^2) y%NcIMURAzs = m%AllOuts(NcIMURAzs)*D2R ! Nacelle yaw acceleration (rad/s^2) -- this is in the shaft (tilted) coordinate system, instead of the nacelle (nontilted) coordinate system y%LSShftFxa = m%AllOuts(LSShftFxa)*1000. ! Rotating low-speed shaft force x (GL co-ords) (N) y%LSShftFys = m%AllOuts(LSShftFys)*1000. ! Nonrotating low-speed shaft force y (GL co-ords) (N) y%LSShftFzs = m%AllOuts(LSShftFzs)*1000. ! Nonrotating low-speed shaft force z (GL co-ords) (N) ``` ``` m%AllOuts(LSShftMxa) = DOT_PRODUCT( MomLPRot, m%CoordSys%e1 ) m%AllOuts( RotPwr) = ( x%QDT(DOF_GeAz) + x%QDT(DOF_DrTr) )*m%AllOuts(LSShftMxa) DO K=1,p%NumBl m%AllOuts( RootMxc(K) ) = DOT_PRODUCT( MomH0B(:,K), m%CoordSys%i1(K,:) ) m%AllOuts( RootMyc(K) ) = DOT_PRODUCT( MomH0B(:,K), m%CoordSys%i2(K,:) ) END DO !K m%AllOuts(YawBrTAxp) = DOT_PRODUCT( LinAccEO, m%CoordSys%b1 ) m%AllOuts(YawBrTAyp) = -DOT_PRODUCT( LinAccEO, m%CoordSys%b3 ) y%LSSTipPxa = x%QT (DOF_GeAz) + x%QT (DOF_DrTr) + p%AzimB1Up + PiBy2 m%AllOuts(LSSTipPxa) = y%LSSTipPxa*R2D m%AllOuts(LSShftMxa) = DOT_PRODUCT( MomLPRot, m%CoordSys%e1 ) m%AllOuts(LSSTipMya) = DOT_PRODUCT( MomLPRot, m%CoordSys%e2 ) m%AllOuts(LSSTipMza) = DOT_PRODUCT( MomLPRot, m%CoordSys%e3 ) m%AllOuts(LSSTipMys) = -DOT_PRODUCT( MomLPRot, m%CoordSys%c3 ) m%AllOuts(LSSTipMzs) = DOT_PRODUCT( MomLPRot, m%CoordSys%c2 ) m%AllOuts( YawBrMyn) = -DOT_PRODUCT( MomBNcRt, m%CoordSys%d3 ) m%AllOuts( YawBrMzn) = DOT_PRODUCT( MomBNcRt, m%CoordSys%d2 ) m%AllOuts(NcIMURAxs) = DOT_PRODUCT( AngAccER , m%CoordSys%c1 )*R2D m%AllOuts(NcIMURAys) = -1.0*DOT_PRODUCT( AngAccER , m%CoordSys%c3 )*R2D m%AllOuts(NcIMURAzs) = DOT_PRODUCT( AngAccER , m%CoordSys%c2 )*R2D m%AllOuts(LSShftFxa) = DOT_PRODUCT( FrcPRot, m%CoordSys%e1 ) m%AllOuts(LSShftFys) = -DOT_PRODUCT( FrcPRot, m%CoordSys%c3 ) m%AllOuts(LSShftFzs) = DOT_PRODUCT( FrcPRot, m%CoordSys%c2 ) ```