Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pitch Actuator and IPC updates #123

Merged
merged 67 commits into from
May 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
9646dbd
Merge pull request #90 from NREL/develop
nikhar-abbas Nov 10, 2021
337ecf6
Convert WE saved variables to WE type
nikhar-abbas Dec 17, 2021
ab46545
Put restart flag in localvars
nikhar-abbas Dec 17, 2021
9d67547
Use saved filter params from LocalVar
nikhar-abbas Dec 17, 2021
ed81a23
save pitcomt last
nikhar-abbas Dec 17, 2021
3bbaf86
Move IPC saved variables to localvars
nikhar-abbas Dec 17, 2021
30e98d6
Saved pi controller variables to localvar
nikhar-abbas Dec 17, 2021
38dff08
Save RootMyb_Last to localvar
nikhar-abbas Dec 17, 2021
fc1c9ec
ROSCO_IO - initial commit. Include restart and debug functions
nikhar-abbas Dec 17, 2021
2025565
Use ROSCO IO and call restart functions
nikhar-abbas Dec 17, 2021
915922a
Remove debug from function.f90
nikhar-abbas Dec 17, 2021
6800344
Save ACC Infile info
nikhar-abbas Dec 17, 2021
92e27bb
update for restart capabilities
nikhar-abbas Dec 17, 2021
3ff3800
add rosco_io with restart and debug functions
nikhar-abbas Dec 21, 2021
15eb73d
cleanup debug call
nikhar-abbas Dec 21, 2021
5e2eb07
use registry generate types and IO
nikhar-abbas Dec 21, 2021
24fa6b7
delete DFController
nikhar-abbas Dec 21, 2021
9149b12
fix timestep mismatch
nikhar-abbas Dec 21, 2021
3c9c89d
remove unnecessaray istatus check
nikhar-abbas Dec 21, 2021
492348c
close files
nikhar-abbas Dec 21, 2021
7897a83
add reg test for restart
nikhar-abbas Dec 21, 2021
969beb6
add restart option to run_openfast
nikhar-abbas Dec 21, 2021
ace827d
add testing to CI, ignore generate files
nikhar-abbas Dec 21, 2021
1347767
fix fastcall
nikhar-abbas Dec 21, 2021
67ada29
remove extra commas
nikhar-abbas Dec 21, 2021
4c31544
specify gfortran-10
nikhar-abbas Dec 21, 2021
6f29556
testing flag cleanup
nikhar-abbas Dec 21, 2021
3e43206
Use lv_strings to generate debug output
dzalkind Dec 21, 2021
b1607e0
Revert "testing flag cleanup"
nikhar-abbas Dec 21, 2021
24e5daf
Revert "specify gfortran-10"
nikhar-abbas Dec 21, 2021
76caca3
minor cleanup
nikhar-abbas Dec 21, 2021
4b6041a
Use kind from constants
nikhar-abbas Dec 22, 2021
878b143
Add some comments for clarity
nikhar-abbas Dec 22, 2021
59519a1
put debug in if statements
nikhar-abbas Dec 22, 2021
8749713
separate reg tests from oother tests
nikhar-abbas Dec 22, 2021
b5ac62d
Fl_Mode>0
nikhar-abbas Dec 22, 2021
3fdbdad
Remove hard coded values
nikhar-abbas Dec 22, 2021
52492d3
Add filtered signals and WE_Vw to debug varrs
nikhar-abbas Dec 22, 2021
7cb1151
cd for regtest
nikhar-abbas Dec 22, 2021
a2d6de4
Check logging level before calling debug
nikhar-abbas Dec 22, 2021
2ab7de6
add fl_pitcom and pc_minpit to debugvars
nikhar-abbas Dec 22, 2021
1f68bd5
Turn runFAST into a class
dzalkind Dec 22, 2021
1b0b1c3
Refactor/simplify CaseLibrary
dzalkind Dec 22, 2021
7fec13b
Implement initial pitch actuator
dzalkind Jan 5, 2022
a034086
Set up steps case
dzalkind Jan 5, 2022
3d696e6
Add actuator variable
dzalkind Jan 7, 2022
7042b49
Print first time step in debug outs
dzalkind Jan 7, 2022
8c7949e
Fix FOCAL yaml
dzalkind Jan 7, 2022
1a0e59a
Set actuator to 0.25 Hz bandwidth
dzalkind Jan 7, 2022
ad15bcd
ROSCO 2.5.0 (#115)
dzalkind Apr 1, 2022
5d20185
Fixed wrong formatting of list items (#122)
ghylander Apr 5, 2022
f53a49e
Merge remote-tracking branch 'upstream/main' into develop
dzalkind Apr 7, 2022
31d7250
Merge branch 'develop' into f/pitch_act
dzalkind Apr 7, 2022
eab381a
Regenerate types, IO with registry
dzalkind Apr 7, 2022
ad36ab9
Update registry so first timestep is printed
dzalkind Apr 7, 2022
d15bc7c
Update inverted notch to move frequency properly
dzalkind Apr 8, 2022
5a9b44d
Saturate inv notch corner frequency at 0
dzalkind Apr 8, 2022
a898f9d
Add tower damper mode flag
dzalkind Apr 14, 2022
1b00cca
Flip Ct and Cq table allocation
dzalkind Apr 26, 2022
3f059d1
Merge remote-tracking branch 'origin/develop' into f/pitch_act
dzalkind Apr 27, 2022
379b6d2
Regen types
dzalkind Apr 27, 2022
747fcaa
Remove print statements used for debugging
dzalkind Apr 27, 2022
bba2816
Update input files: IEA model has pitch actuator
dzalkind Apr 27, 2022
5db820e
Merge branch 'develop' into f/pitch_act
dzalkind Apr 29, 2022
5612797
Merge remote-tracking branch 'origin/f/pitch_act' into f/pitch_act
dzalkind Apr 29, 2022
f6643b9
Add back flap control (no idea when it was deleted)
dzalkind Apr 29, 2022
7051a99
Update discons, docs with API change
dzalkind Apr 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,6 @@ ROSCO_testing/results/
*.autosave
*.mat

# OpenFAST outputs
outputs/

20 changes: 19 additions & 1 deletion ROSCO/rosco_registry/rosco_types.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ ControlParameters:
allocatable: True

# Tower fore-aft damping
TD_Mode:
<<: *integer
description: Tower damper mode (0- no tower damper, 1- feed back translational nacelle accelleration to pitch angle
FA_HPFCornerFreq:
<<: *real
description: Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s]
Expand Down Expand Up @@ -422,6 +425,17 @@ ControlParameters:
allocatable: True
dimension: (:,:)
description: Open loop channels in timeseries

# Pitch actuator
PA_Mode:
<<: *integer
description: Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter}
PA_CornerFreq:
<<: *real
description: Pitch actuator bandwidth/cut-off frequency [rad/s]
PA_Damping:
<<: *real
description: Pitch actuator damping ratio [-, unused if PA_Mode = 1]

# Calculated
PC_RtTq99:
Expand Down Expand Up @@ -769,6 +783,10 @@ LocalVariables:
<<: *real
description: Commanded pitch of each blade the last time the controller was called [rad].
size: 3
PitComAct:
<<: *real
description: Actuated pitch of each blade the last time the controller was called [rad].
size: 3
SS_DelOmegaF:
<<: *real
description: Filtered setpoint shifting term defined in setpoint smoother [rad/s].
Expand Down Expand Up @@ -1011,4 +1029,4 @@ ExtDLL_Type:
equals: '""'
size: 3
length: 1024
description: The name of the procedure in the DLL that will be called.
description: The name of the procedure in the DLL that will be called.
29 changes: 14 additions & 15 deletions ROSCO/rosco_registry/write_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,25 +278,24 @@ def write_roscoio(yfile):
file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'AvrSWAP("'+',I2,")"'+"))') 'LocalVar%Time ', (i,i=1, 85)\n")
file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'(-)"'+"))') '(s)'"+'\n')
file.write(" END IF\n")
file.write(" ELSE\n")
file.write(" END IF\n")
file.write(" ! Print simulation status, every 10 seconds\n")
file.write(" IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN\n")
file.write(" WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw\n")
file.write(" 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')\n")
file.write(" END IF\n")
file.write(" IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN\n")
file.write(" WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw\n")
file.write(" 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')\n")
file.write(" END IF\n")
file.write("\n")
file.write(" ! Write debug files\n")
file.write(" IF(CntrPar%LoggingLevel > 0) THEN\n")
file.write(" WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData\n")
file.write(" END IF\n")
file.write(" ! Write debug files\n")
file.write(" IF(CntrPar%LoggingLevel > 0) THEN\n")
file.write(" WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData\n")
file.write(" END IF\n")
file.write("\n")
file.write(" IF(CntrPar%LoggingLevel > 1) THEN\n")
file.write(" WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData\n")
file.write(" END IF\n")
file.write(" IF(CntrPar%LoggingLevel > 1) THEN\n")
file.write(" WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData\n")
file.write(" END IF\n")
file.write("\n")
file.write(" IF(CntrPar%LoggingLevel > 2) THEN\n")
file.write(" WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)\n")
file.write(" END IF\n")
file.write(" IF(CntrPar%LoggingLevel > 2) THEN\n")
file.write(" WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)\n")
file.write(" END IF\n")
file.write("\n")
file.write("END SUBROUTINE Debug\n")
Expand Down
38 changes: 29 additions & 9 deletions ROSCO/src/Controllers.f90
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar)
END IF

! Include tower fore-aft tower vibration damping control
IF ((CntrPar%FA_KI > 0.0) .OR. (CntrPar%Y_ControlMode == 2)) THEN
IF ((CntrPar%TD_Mode > 0) .OR. (CntrPar%Y_ControlMode == 2)) THEN
CALL ForeAftDamping(CntrPar, LocalVar, objInst)
ELSE
LocalVar%FA_PitCom = 0.0 ! THIS IS AN ARRAY!!
Expand Down Expand Up @@ -99,13 +99,12 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar)
LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, LocalVar%PC_PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit
LocalVar%PC_PitComT_Last = LocalVar%PC_PitComT

! Combine and saturate all individual pitch commands:
! Filter to emulate pitch actuator
! Combine and saturate all individual pitch commands in software
DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate
LocalVar%PitCom(K) = LocalVar%PC_PitComT + LocalVar%FA_PitCom(K)
LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the command using the pitch satauration limits
LocalVar%PitCom(K) = LocalVar%PC_PitComT + LocalVar%IPC_PitComF(K) ! Add IPC
LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), CntrPar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the command using the absolute pitch angle limits
LocalVar%PitCom(K) = LocalVar%PitCom(K) + LocalVar%IPC_PitComF(K) ! Add IPC
LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the command using the absolute pitch angle limits
LocalVar%PitCom(K) = ratelimit(LocalVar%PitCom(K), LocalVar%BlPitch(K), CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit
END DO

Expand All @@ -119,12 +118,33 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar)
ENDIF
ENDIF

! Place pitch actuator here, so it can be used with or without open-loop
DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate
IF (CntrPar%PA_Mode > 0) THEN
IF (CntrPar%PA_Mode == 1) THEN
LocalVar%PitComAct(K) = LPFilter(LocalVar%PitCom(K), LocalVar%DT, CntrPar%PA_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF)
ELSE IF (CntrPar%PA_Mode == 2) THEN
LocalVar%PitComAct(K) = SecLPFilter(LocalVar%PitCom(K),LocalVar%DT,CntrPar%PA_CornerFreq,CntrPar%PA_Damping,LocalVar%FP,LocalVar%iStatus,LocalVar%restart,objInst%instSecLPF)
END IF
ELSE
LocalVar%PitComAct(K) = LocalVar%PitCom(K)
ENDIF
END DO

! Hardware saturation: using CntrPar%PC_MinPit
DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate
! Saturate the pitch command using the overall (hardware) limit
LocalVar%PitComAct(K) = saturate(LocalVar%PitComAct(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit)
! Saturate the overall command of blade K using the pitch rate limit
LocalVar%PitComAct(K) = ratelimit(LocalVar%PitComAct(K), LocalVar%BlPitch(K), CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit
END DO

! Command the pitch demanded from the last
! call to the controller (See Appendix A of Bladed User's Guide):
avrSWAP(42) = LocalVar%PitCom(1) ! Use the command angles of all blades if using individual pitch
avrSWAP(43) = LocalVar%PitCom(2) ! "
avrSWAP(44) = LocalVar%PitCom(3) ! "
avrSWAP(45) = LocalVar%PitCom(1) ! Use the command angle of blade 1 if using collective pitch
avrSWAP(42) = LocalVar%PitComAct(1) ! Use the command angles of all blades if using individual pitch
avrSWAP(43) = LocalVar%PitComAct(2) ! "
avrSWAP(44) = LocalVar%PitComAct(3) ! "
avrSWAP(45) = LocalVar%PitComAct(1) ! Use the command angle of blade 1 if using collective pitch

! Add RoutineName to error message
IF (ErrVar%aviFAIL < 0) THEN
Expand Down
2 changes: 1 addition & 1 deletion ROSCO/src/Filters.f90
Original file line number Diff line number Diff line change
Expand Up @@ -310,4 +310,4 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, DebugVar, objInst, ErrVar
DebugVar%NacIMU_FA_AccF = LocalVar%NacIMU_FA_AccF
DebugVar%FA_AccF = LocalVar%FA_AccF
END SUBROUTINE PreFilterMeasuredSignals
END MODULE Filters
END MODULE Filters
104 changes: 55 additions & 49 deletions ROSCO/src/ROSCO_IO.f90
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAM
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1)
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2)
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3)
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(1)
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(2)
WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(3)
WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF
WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType
WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq
Expand Down Expand Up @@ -272,6 +275,9 @@ SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootNa
READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1)
READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2)
READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3)
READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(1)
READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(2)
READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(3)
READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF
READ( Un, IOSTAT=ErrStat) LocalVar%TestType
READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq
Expand Down Expand Up @@ -424,7 +430,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME
'[m/s]', '[m/s]', '[rad]', '[rad]', '[rad/s]', &
'[rad/s]', '[rad/s]', '[m/s]', '[rad]', '[rad]', &
'', '', '', '']
nLocalVars = 72
nLocalVars = 73
Allocate(LocalVarOutData(nLocalVars))
Allocate(LocalVarOutStrings(nLocalVars))
LocalVarOutData(1) = LocalVar%iStatus
Expand Down Expand Up @@ -472,33 +478,34 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME
LocalVarOutData(43) = LocalVar%IPC_KP(1)
LocalVarOutData(44) = LocalVar%PC_State
LocalVarOutData(45) = LocalVar%PitCom(1)
LocalVarOutData(46) = LocalVar%SS_DelOmegaF
LocalVarOutData(47) = LocalVar%TestType
LocalVarOutData(48) = LocalVar%VS_MaxTq
LocalVarOutData(49) = LocalVar%VS_LastGenTrq
LocalVarOutData(50) = LocalVar%VS_LastGenPwr
LocalVarOutData(51) = LocalVar%VS_MechGenPwr
LocalVarOutData(52) = LocalVar%VS_SpdErrAr
LocalVarOutData(53) = LocalVar%VS_SpdErrBr
LocalVarOutData(54) = LocalVar%VS_SpdErr
LocalVarOutData(55) = LocalVar%VS_State
LocalVarOutData(56) = LocalVar%VS_Rgn3Pitch
LocalVarOutData(57) = LocalVar%WE_Vw
LocalVarOutData(58) = LocalVar%WE_Vw_F
LocalVarOutData(59) = LocalVar%WE_VwI
LocalVarOutData(60) = LocalVar%WE_VwIdot
LocalVarOutData(61) = LocalVar%VS_LastGenTrqF
LocalVarOutData(62) = LocalVar%Y_AccErr
LocalVarOutData(63) = LocalVar%Y_ErrLPFFast
LocalVarOutData(64) = LocalVar%Y_ErrLPFSlow
LocalVarOutData(65) = LocalVar%Y_MErr
LocalVarOutData(66) = LocalVar%Y_YawEndT
LocalVarOutData(67) = LocalVar%Fl_PitCom
LocalVarOutData(68) = LocalVar%NACIMU_FA_AccF
LocalVarOutData(69) = LocalVar%FA_AccF
LocalVarOutData(70) = LocalVar%Flp_Angle(1)
LocalVarOutData(71) = LocalVar%RootMyb_Last(1)
LocalVarOutData(72) = LocalVar%ACC_INFILE_SIZE
LocalVarOutData(46) = LocalVar%PitComAct(1)
LocalVarOutData(47) = LocalVar%SS_DelOmegaF
LocalVarOutData(48) = LocalVar%TestType
LocalVarOutData(49) = LocalVar%VS_MaxTq
LocalVarOutData(50) = LocalVar%VS_LastGenTrq
LocalVarOutData(51) = LocalVar%VS_LastGenPwr
LocalVarOutData(52) = LocalVar%VS_MechGenPwr
LocalVarOutData(53) = LocalVar%VS_SpdErrAr
LocalVarOutData(54) = LocalVar%VS_SpdErrBr
LocalVarOutData(55) = LocalVar%VS_SpdErr
LocalVarOutData(56) = LocalVar%VS_State
LocalVarOutData(57) = LocalVar%VS_Rgn3Pitch
LocalVarOutData(58) = LocalVar%WE_Vw
LocalVarOutData(59) = LocalVar%WE_Vw_F
LocalVarOutData(60) = LocalVar%WE_VwI
LocalVarOutData(61) = LocalVar%WE_VwIdot
LocalVarOutData(62) = LocalVar%VS_LastGenTrqF
LocalVarOutData(63) = LocalVar%Y_AccErr
LocalVarOutData(64) = LocalVar%Y_ErrLPFFast
LocalVarOutData(65) = LocalVar%Y_ErrLPFSlow
LocalVarOutData(66) = LocalVar%Y_MErr
LocalVarOutData(67) = LocalVar%Y_YawEndT
LocalVarOutData(68) = LocalVar%Fl_PitCom
LocalVarOutData(69) = LocalVar%NACIMU_FA_AccF
LocalVarOutData(70) = LocalVar%FA_AccF
LocalVarOutData(71) = LocalVar%Flp_Angle(1)
LocalVarOutData(72) = LocalVar%RootMyb_Last(1)
LocalVarOutData(73) = LocalVar%ACC_INFILE_SIZE
LocalVarOutStrings = [CHARACTER(15) :: 'iStatus', 'Time', 'DT', 'VS_GenPwr', 'GenSpeed', &
'RotSpeed', 'Y_M', 'HorWindV', 'rootMOOP', 'rootMOOPF', &
'BlPitch', 'Azimuth', 'NumBl', 'FA_Acc', 'NacIMU_FA_Acc', &
Expand All @@ -508,12 +515,12 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME
'PC_MinPit', 'PC_PitComT', 'PC_PitComT_Last', 'PC_PitComTF', 'PC_PitComT_IPC', &
'PC_PwrErr', 'PC_SpdErr', 'IPC_AxisTilt_1P', 'IPC_AxisYaw_1P', 'IPC_AxisTilt_2P', &
'IPC_AxisYaw_2P', 'IPC_KI', 'IPC_KP', 'PC_State', 'PitCom', &
'SS_DelOmegaF', 'TestType', 'VS_MaxTq', 'VS_LastGenTrq', 'VS_LastGenPwr', &
'VS_MechGenPwr', 'VS_SpdErrAr', 'VS_SpdErrBr', 'VS_SpdErr', 'VS_State', &
'VS_Rgn3Pitch', 'WE_Vw', 'WE_Vw_F', 'WE_VwI', 'WE_VwIdot', &
'VS_LastGenTrqF', 'Y_AccErr', 'Y_ErrLPFFast', 'Y_ErrLPFSlow', 'Y_MErr', &
'Y_YawEndT', 'Fl_PitCom', 'NACIMU_FA_AccF', 'FA_AccF', 'Flp_Angle', &
'RootMyb_Last', 'ACC_INFILE_SIZE']
'PitComAct', 'SS_DelOmegaF', 'TestType', 'VS_MaxTq', 'VS_LastGenTrq', &
'VS_LastGenPwr', 'VS_MechGenPwr', 'VS_SpdErrAr', 'VS_SpdErrBr', 'VS_SpdErr', &
'VS_State', 'VS_Rgn3Pitch', 'WE_Vw', 'WE_Vw_F', 'WE_VwI', &
'WE_VwIdot', 'VS_LastGenTrqF', 'Y_AccErr', 'Y_ErrLPFFast', 'Y_ErrLPFSlow', &
'Y_MErr', 'Y_YawEndT', 'Fl_PitCom', 'NACIMU_FA_AccF', 'FA_AccF', &
'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE']
! Initialize debug file
IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL
IF (CntrPar%LoggingLevel > 0) THEN
Expand All @@ -536,25 +543,24 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME
WRITE(UnDb3,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1, 85)
WRITE(UnDb3,'(A,85("'//Tab//'(-)"))') '(s)'
END IF
ELSE
END IF
! Print simulation status, every 10 seconds
IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN
WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw
100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')
END IF
IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN
WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw
100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')
END IF

! Write debug files
IF(CntrPar%LoggingLevel > 0) THEN
WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData
END IF
! Write debug files
IF(CntrPar%LoggingLevel > 0) THEN
WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData
END IF

IF(CntrPar%LoggingLevel > 1) THEN
WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData
END IF
IF(CntrPar%LoggingLevel > 1) THEN
WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData
END IF

IF(CntrPar%LoggingLevel > 2) THEN
WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)
END IF
IF(CntrPar%LoggingLevel > 2) THEN
WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)
END IF

END SUBROUTINE Debug
Expand Down
Loading