Skip to content

Commit

Permalink
Added 2P IPC for load reductions, some refactoring, updated parameter…
Browse files Browse the repository at this point in the history
… files
  • Loading branch information
Unknown committed Aug 29, 2018
1 parent c6ca59c commit e8c7720
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 64 deletions.
12 changes: 6 additions & 6 deletions Parameter_files/DTU10MW/ControllerParameters.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
2 ! F_FilterType - 1 = first-order low-pass filter, 2 = second-order low-pass filter
2.5132741 ! F_CornerFreq - Corner frequency (-3dB point) in the low-pass filters, filtering generator speed and pitch control signals, [rad/s]
0.7 ! F_Damping - Damping coefficient if F_FilterType = 2, unused otherwise
0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions)
0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contrbution to pitch from IPC), [rad]
8E-10 ! IPC_KI - Integral gain for the individual pitch controller, [-].
0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) on = 1/off = 0
0.6283185 ! IPC_omegaLP - Low-pass filter corner frequency for the individual pitch controller, [rad/s].
0.436332313 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad].
1.0 ! IPC_zetaLP - Low-pass filter damping factor for the individual pitch controller, [-].
8E-10 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions [-]
0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad].
13 ! PC_GS_n - Amount of gain-scheduling table entries
0 0.0349 0.0698 0.1047 0.1396 0.1745 0.2094 0.2443 0.2793 0.3142 0.3491 0.384 0.4189 ! PC_GS_angles - Gain-schedule table: pitch angles
-0.0105 -0.0104 -0.0102 -0.0099 -0.0095 -0.0091 -0.0086 -0.0081 -0.0076 -0.0071 -0.0066 -0.0061 -0.0056 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains
Expand All @@ -19,7 +17,7 @@
0.17453 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s].
-0.17453 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s].
50.26548 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s].
0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad]
0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad]
0.034906 ! PC_Switch - Angle above lowest minimum pitch angle for switch [rad]
1 ! VS_ControlMode - Generator torque control mode in above rated conditions, 0 = constant torque / 1 = constant power
0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, this should match the efficiency defined in the generator properties! [-]
Expand All @@ -41,6 +39,8 @@
1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC)
-0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp
-0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki
0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].
1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].
0.00000 ! Y_MErrSet - Yaw alignment error, setpoint [rad]
1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz]
0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz]
Expand Down
10 changes: 5 additions & 5 deletions Parameter_files/NREL5MW/ControllerParameters.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@
1 ! F_FilterType - 1 = first-order low-pass filter, 2 = second-order low-pass filter
1.570796326 ! F_CornerFreq - Corner frequency (-3dB point) in the low-pass filters, filtering generator speed and pitch control signals, [rad/s]
0 ! F_Damping - Damping coefficient if F_FilterType = 2, unused otherwise
0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions)
0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contrbution to pitch from IPC), [rad]
1E-8 ! IPC_KI - Integral gain for the individual pitch controller, [-].
0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) on = 1/off = 0
0.6283185 ! IPC_omegaLP - Low-pass filter corner frequency for the individual pitch controller, [rad/s].
0.436332313 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad].
1.0 ! IPC_zetaLP - Low-pass filter damping factor for the individual pitch controller, [-].
1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions [-]
0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad].
14 ! PC_GS_n - Amount of gain-scheduling table entries
0.00000 0.03491 0.06981 0.10472 0.13963 0.17453 0.20944 0.24435 0.27925 0.31416 0.34907 0.38397 0.41888 0.45379 ! PC_GS_angles - Gain-schedule table: pitch angles
-0.018827 -0.014292 -0.011517 -0.009645 -0.008296 -0.007278 -0.006483 -0.005844 -0.005320 -0.004882 -0.004511 -0.004192 -0.003916 -0.003673 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains
Expand Down Expand Up @@ -41,6 +39,8 @@
1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC)
-0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp
-0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki
0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].
1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].
0.00000 ! Y_MErrSet - Yaw alignment error, setpoint [rad]
1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz]
0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz]
Expand Down
2 changes: 2 additions & 0 deletions Source/Constants.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@ MODULE Constants
REAL(4), PARAMETER :: RPS2RPM = 9.5492966 ! Factor to convert radians per second to revolutions per minute.
REAL(4), PARAMETER :: R2D = 57.295780 ! Factor to convert radians to degrees.
REAL(4), PARAMETER :: PI = 3.14159265359 ! Mathematical constant pi
INTEGER(4), PARAMETER :: NP_1 = 1 ! First ratational harmonic
INTEGER(4), PARAMETER :: NP_2 = 2 ! Second ratational harmonic
END MODULE Constants
66 changes: 40 additions & 26 deletions Source/Controllers.f90
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst)
END IF

! Individual pitch control
IF ((CntrPar%IPC_ControlMode == 1) .OR. (CntrPar%Y_ControlMode == 2)) THEN
IF ((CntrPar%IPC_ControlMode >= 1) .OR. (CntrPar%Y_ControlMode == 2)) THEN
CALL IPC(CntrPar, LocalVar, objInst)
ELSE
LocalVar%IPC_PitComF = 0.0 ! THIS IS AN ARRAY!!
Expand Down Expand Up @@ -187,12 +187,14 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst)
USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances

! Local variables
REAL(4) :: PitComIPC(3)
INTEGER(4) :: K ! Integer used to loop through turbine blades
REAL(4) :: axisTilt, axisYaw, axisYawF ! Direct axis and quadrature axis outputted by Coleman transform
REAL(4), SAVE :: IntAxisTilt, IntAxisYaw ! Integral of the direct axis and quadrature axis
REAL(4) :: IntAxisYawIPC ! IPC contribution with yaw-by-IPC component
REAL(4) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad]
REAL(4) :: PitComIPC(3), PitComIPC_1P(3), PitComIPC_2P(3)
INTEGER(4) :: K ! Integer used to loop through turbine blades
REAL(4) :: axisTilt_1P, axisYaw_1P, axisYawF_1P ! Direct axis and quadrature axis outputted by Coleman transform, 1P
REAL(4), SAVE :: IntAxisTilt_1P, IntAxisYaw_1P ! Integral of the direct axis and quadrature axis, 1P
REAL(4) :: axisTilt_2P, axisYaw_2P, axisYawF_2P ! Direct axis and quadrature axis outputted by Coleman transform, 1P
REAL(4), SAVE :: IntAxisTilt_2P, IntAxisYaw_2P ! Integral of the direct axis and quadrature axis, 1P
REAL(4) :: IntAxisYawIPC_1P ! IPC contribution with yaw-by-IPC component
REAL(4) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad]

TYPE(ControlParameters), INTENT(INOUT) :: CntrPar
TYPE(LocalVariables), INTENT(INOUT) :: LocalVar
Expand All @@ -201,49 +203,61 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst)
!------------------------------------------------------------------------------------------------------------------------------
! Body
!------------------------------------------------------------------------------------------------------------------------------
! Calculates the commanded pitch angles.
! NOTE: if it is required for this subroutine to be used multiple times (for 1p and 2p IPC for example), the saved variables
! IntAxisTilt and IntAxisYaw need to be modified so that they support multiple instances (see LPFilter in the Filters module).
! Calculates the commanded pitch angles for IPC employed for blade fatigue load reductions at 1P and 2P
!------------------------------------------------------------------------------------------------------------------------------
! Initialization
! Set integrals to be 0 in the first time step
IF (LocalVar%iStatus==0) THEN
IntAxisTilt = 0.0
IntAxisYaw = 0.0
IntAxisTilt_1P = 0.0
IntAxisYaw_1P = 0.0
IntAxisTilt_2P = 0.0
IntAxisYaw_2P = 0.0
END IF

! Pass rootMOOPs through the Coleman transform to get the tilt and yaw moment axis
CALL ColemanTransform(LocalVar%rootMOOP, LocalVar%Azimuth, axisTilt, axisYaw)
CALL ColemanTransform(LocalVar%rootMOOP, LocalVar%Azimuth, NP_1, axisTilt_1P, axisYaw_1P)
CALL ColemanTransform(LocalVar%rootMOOP, LocalVar%Azimuth, NP_2, axisTilt_2P, axisYaw_2P)

! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution
IF (CntrPar%Y_ControlMode == 2) THEN
Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%IPC_omegaLP, CntrPar%IPC_zetaLP, LocalVar%iStatus, .FALSE., objInst%instSecLPF)
Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, .FALSE., objInst%instSecLPF)
Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0, .FALSE., objInst%instPI)
ELSE
axisYawF = axisYaw
axisYawF_1P = axisYaw_1P
Y_MErrF = 0.0
Y_MErrF_IPC = 0.0
END IF

! Integrate the signal and multiply with the IPC gain
IF ((CntrPar%IPC_ControlMode == 1) .AND. (CntrPar%Y_ControlMode /= 2)) THEN
IntAxisTilt = IntAxisTilt + LocalVar%DT * CntrPar%IPC_KI * axisTilt
IntAxisYaw = IntAxisYaw + LocalVar%DT * CntrPar%IPC_KI * axisYawF
IntAxisTilt = saturate(IntAxisTilt, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)
IntAxisYaw = saturate(IntAxisYaw, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)
IF ((CntrPar%IPC_ControlMode >= 1) .AND. (CntrPar%Y_ControlMode /= 2)) THEN
IntAxisTilt_1P = IntAxisTilt_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisTilt_1P
IntAxisYaw_1P = IntAxisYaw_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisYawF_1P
IntAxisTilt_1P = saturate(IntAxisTilt_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)
IntAxisYaw_1P = saturate(IntAxisYaw_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)

IF (CntrPar%IPC_ControlMode >= 2) THEN
IntAxisTilt_2P = IntAxisTilt_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisTilt_2P
IntAxisYaw_2P = IntAxisYaw_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisYawF_2P
IntAxisTilt_2P = saturate(IntAxisTilt_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)
IntAxisYaw_2P = saturate(IntAxisYaw_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat)
END IF
ELSE
IntAxisTilt = 0.0
IntAxisYaw = 0.0
IntAxisTilt_1P = 0.0
IntAxisYaw_1P = 0.0
IntAxisTilt_2P = 0.0
IntAxisYaw_2P = 0.0
END IF

! Add the yaw-by-IPC contribution
IntAxisYawIPC = IntAxisYaw + Y_MErrF_IPC
IntAxisYawIPC_1P = IntAxisYaw_1P + Y_MErrF_IPC

! Pass direct and quadrature axis through the inverse Coleman transform to get the commanded pitch angles
CALL ColemanTransformInverse(IntAxisTilt, IntAxisYawIPC, LocalVar%Azimuth, CntrPar%IPC_aziOffset, PitComIPC)

! Filter PitComIPC with second order low pass filter
CALL ColemanTransformInverse(IntAxisTilt_1P, IntAxisYawIPC_1P, LocalVar%Azimuth, NP_1, CntrPar%IPC_aziOffset(1), PitComIPC_1P)
CALL ColemanTransformInverse(IntAxisTilt_2P, IntAxisYaw_2P, LocalVar%Azimuth, NP_2, CntrPar%IPC_aziOffset(2), PitComIPC_2P)

! Sum nP IPC contrubutions and store to LocalVar data type
DO K = 1,LocalVar%NumBl
PitComIPC(K) = PitComIPC_1P(K) + PitComIPC_2P(K)
LocalVar%IPC_PitComF(K) = PitComIPC(K)
END DO
END SUBROUTINE IPC
Expand Down
1 change: 1 addition & 0 deletions Source/DISCON.f90
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME
USE :: DRC_Types
USE :: ReadSetParameters
USE :: Controllers
USE :: Constants

IMPLICIT NONE
#ifndef IMPLICIT_DLLEXPORT
Expand Down
12 changes: 6 additions & 6 deletions Source/DRC_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ MODULE DRC_Types
INTEGER(4) :: F_FilterType ! 1 = first-order low-pass filter, 2 = second-order low-pass filter
REAL(4) :: F_CornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s]
REAL(4) :: F_Damping ! Damping coefficient if F_FilterType = 2, unused otherwise
REAL(4) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC)
REAL(4) :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10
INTEGER(4) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) on = 1/off = 0
REAL(4) :: IPC_omegaLP ! Low-pass filter corner frequency for the individual pitch controller, [rad/s].
REAL(4) :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad].
REAL(4) :: IPC_zetaLP ! Low-pass filter damping factor for the individual pitch controller, [-].
INTEGER(4) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions)
REAL(4) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC)
REAL(4), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10
REAL(4), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad].
INTEGER(4) :: PC_GS_n ! Amount of gain-scheduling table entries
REAL(4), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table: pitch angles
REAL(4), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table: pitch controller kp gains
Expand Down Expand Up @@ -46,6 +44,8 @@ MODULE DRC_Types
INTEGER(4) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC)
REAL(4), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp
REAL(4), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki
REAL(4) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].
REAL(4) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].
REAL(4) :: Y_MErrSet ! Yaw alignment error, setpoint [rad]
REAL(4) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz]
REAL(4) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz]
Expand Down
16 changes: 9 additions & 7 deletions Source/Functions.f90
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ END SUBROUTINE Debug
!-------------------------------------------------------------------------------------------------------------------------------
!The Coleman or d-q axis transformation transforms the root out of plane bending moments of each turbine blade
!to a direct axis and a quadrature axis
SUBROUTINE ColemanTransform(rootMOOP, aziAngle, axTOut, axYOut)
SUBROUTINE ColemanTransform(rootMOOP, aziAngle, nHarmonic, axTOut, axYOut)
!...............................................................................................................................

IMPLICIT NONE
Expand All @@ -312,6 +312,7 @@ SUBROUTINE ColemanTransform(rootMOOP, aziAngle, axTOut, axYOut)

REAL(4), INTENT(IN) :: rootMOOP(3) ! Root out of plane bending moments of each blade
REAL(4), INTENT(IN) :: aziAngle ! Rotor azimuth angle
INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP

! Outputs

Expand All @@ -324,14 +325,14 @@ SUBROUTINE ColemanTransform(rootMOOP, aziAngle, axTOut, axYOut)

! Body

axTOut = 2.0/3.0 * (cos(aziAngle)*rootMOOP(1) + cos(aziAngle+phi2)*rootMOOP(2) + cos(aziAngle+phi3)*rootMOOP(3))
axYOut = 2.0/3.0 * (sin(aziAngle)*rootMOOP(1) + sin(aziAngle+phi2)*rootMOOP(2) + sin(aziAngle+phi3)*rootMOOP(3))
axTOut = 2.0/3.0 * (cos(nHarmonic*(aziAngle)*rootMOOP(1)) + cos(nHarmonic*(aziAngle+phi2)*rootMOOP(2)) + cos(nHarmonic*(aziAngle+phi3))*rootMOOP(3))
axYOut = 2.0/3.0 * (sin(nHarmonic*(aziAngle)*rootMOOP(1)) + sin(nHarmonic*(aziAngle+phi2)*rootMOOP(2)) + sin(nHarmonic*(aziAngle+phi3))*rootMOOP(3))

END SUBROUTINE ColemanTransform
!-------------------------------------------------------------------------------------------------------------------------------
!The inverse Coleman or d-q axis transformation transforms the direct axis and quadrature axis
!back to root out of plane bending moments of each turbine blade
SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, aziOffset, PitComIPC)
SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, nHarmonic, aziOffset, PitComIPC)
!...............................................................................................................................

IMPLICIT NONE
Expand All @@ -341,6 +342,7 @@ SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, aziOffset, PitComIPC)
REAL(4), INTENT(IN) :: axTIn, axYIn ! Direct axis and quadrature axis
REAL(4), INTENT(IN) :: aziAngle ! Rotor azimuth angle
REAL(4), INTENT(IN) :: aziOffset ! Phase shift added to the azimuth angle
INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP

! Outputs

Expand All @@ -353,9 +355,9 @@ SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, aziOffset, PitComIPC)

! Body

PitComIPC(1) = cos(aziAngle+aziOffset)*axTIn + sin(aziAngle+aziOffset)*axYIn
PitComIPC(2) = cos(aziAngle+aziOffset+phi2)*axTIn + sin(aziAngle+aziOffset+phi2)*axYIn
PitComIPC(3) = cos(aziAngle+aziOffset+phi3)*axTIn + sin(aziAngle+aziOffset+phi3)*axYIn
PitComIPC(1) = cos(nHarmonic*(aziAngle+aziOffset))*axTIn + sin(nHarmonic*(aziAngle+aziOffset))*axYIn
PitComIPC(2) = cos(nHarmonic*(aziAngle+aziOffset+phi2))*axTIn + sin(nHarmonic*(aziAngle+aziOffset+phi2))*axYIn
PitComIPC(3) = cos(nHarmonic*(aziAngle+aziOffset+phi3))*axTIn + sin(nHarmonic*(aziAngle+aziOffset+phi3))*axYIn

END SUBROUTINE ColemanTransformInverse
!-------------------------------------------------------------------------------------------------------------------------------
Expand Down
Loading

0 comments on commit e8c7720

Please sign in to comment.