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

Various Bug Fixes #167

Merged
merged 155 commits into from
Sep 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
aa888a1
FOCAL Updates (#64)
dzalkind Nov 19, 2021
6f16a9d
update listcheck method for numpy arrays
nikhar-abbas Dec 7, 2021
f57ee45
Merge pull request #97 from nikhar-abbas/b/listcheck
nikhar-abbas Dec 8, 2021
50f686d
Open Loop Control (#98)
dzalkind Dec 14, 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
6c1e4db
Restart & registry (#99)
nikhar-abbas Jan 3, 2022
7fec13b
Implement initial pitch actuator
dzalkind Jan 5, 2022
a034086
Set up steps case
dzalkind Jan 5, 2022
93dceb7
Break up if statement in open loop pitch (#100)
dzalkind Jan 5, 2022
5d5a9ba
add bld edgewise freq to robust dict_inputs
nikhar-abbas Jan 6, 2022
aad7396
Merge pull request #103 from nikhar-abbas/hf/robust
nikhar-abbas Jan 6, 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
41e0dc6
Fix ccrotor inputs (#104)
nikhar-abbas Jan 14, 2022
a857211
Allow default inputs (#110)
dzalkind Feb 25, 2022
9b5499d
ipc (#105)
nikhar-abbas Mar 18, 2022
5f18bf8
Increment version number
dzalkind Mar 21, 2022
8c31287
Bladed docs (#116)
dzalkind Mar 21, 2022
d7d15b0
Update version in API change docs
dzalkind Mar 22, 2022
4126adb
Bladed readthedocs (#117)
dzalkind Mar 22, 2022
e9c9378
Merge remote-tracking branch 'upstream/develop' into develop
dzalkind Mar 22, 2022
d520192
Update docs to reflect CI process
dzalkind Mar 30, 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
c965339
Add Azimuth tracking controller in Simulink
dzalkind Apr 22, 2022
bdbc940
Always enable GenDOF, add options for simp_step
dzalkind Apr 22, 2022
6bb9c6b
Add sweep for IPC gains and FA damper
dzalkind Apr 22, 2022
c2ec84d
Fix NumCoords in FAST_writer
dzalkind Apr 22, 2022
bd0562c
sigma + ipc (#125)
nikhar-abbas Apr 25, 2022
97aae35
Add turbulent case to runFAST/CaseLibrary
dzalkind Apr 25, 2022
899750a
Merge remote-tracking branch 'upstream/develop' into raaw
dzalkind Apr 25, 2022
2ab0190
Add peak shaving sweep function
dzalkind Apr 26, 2022
e33631d
Increase default IPC_IntSat, make input parameter in future
dzalkind Apr 26, 2022
1b00cca
Flip Ct and Cq table allocation
dzalkind Apr 26, 2022
e035a7d
Flip Ct and Cq table allocation (#130)
dzalkind Apr 27, 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
0eff188
Merge branch 'f/pitch_act' into raaw
dzalkind May 2, 2022
1ff7c11
Add user-defined hh case
dzalkind May 3, 2022
d8724f4
Fix AddF0 and RayleighDamp in FAST_reader
dzalkind May 4, 2022
5cdb0b5
Pitch Actuator and IPC updates (#123)
dzalkind May 6, 2022
155c132
Merge remote-tracking branch 'upstream/main' into raaw
dzalkind May 10, 2022
fc44a4a
Merge remote-tracking branch 'upstream/develop' into raaw
dzalkind May 10, 2022
f4094ea
Add max_torque_factor for constant power control, flexible upper limit
dzalkind May 11, 2022
f8c1dbe
Make update discons relative to tuning yaml
dzalkind May 11, 2022
97e2fe7
Update AddF0 and NumCoords in FAST_reader/writer
dzalkind May 11, 2022
50a2f90
Add OpenFAST channels that Simulink reads (#135)
dzalkind May 20, 2022
75e7fb8
RAAW Updates (#133)
dzalkind May 20, 2022
0bf504e
Pass through (#136)
dzalkind May 20, 2022
9ca75e1
Robust control updates (#139)
nikhar-abbas Jun 3, 2022
b45fb43
External Control Interface (#141)
dzalkind Jun 13, 2022
40a4edc
F/zmq (#145)
nikhar-abbas Jun 28, 2022
a4f56e0
Generalize update discons
dzalkind Jul 1, 2022
dd3594d
Update PR template
dzalkind Jul 1, 2022
ffc9282
Update update discons
dzalkind Jul 1, 2022
601ca8f
Nyquist plotting (#157)
nikhar-abbas Jul 22, 2022
61b6039
Comments (#150)
nikhar-abbas Jul 22, 2022
9976b09
Update ROSCO_walkthrough to use new yaml reader (#159)
dzalkind Jul 22, 2022
a29dc30
Update to openfast==3.2.0, no API changes! (#160)
dzalkind Jul 22, 2022
65c7e78
Updates in preparation for ROSCO 2.6.0 (#161)
dzalkind Jul 26, 2022
d0cc9b6
Merge remote-tracking branch 'upstream/main' into develop
dzalkind Jul 26, 2022
4c866fd
Clean up merge and regen discons
dzalkind Jul 22, 2022
9be92bb
adding a pitch actuator error
Jul 28, 2022
1bb9516
code clean up and added params to writer
Jul 28, 2022
d498a14
renaming as 'pitch fault' and using arrays for offsets
Jul 28, 2022
8d3fab5
Merge remote-tracking branch 'mayank/develop' into pitchError
dzalkind Aug 3, 2022
b692b7b
Merge remote-tracking branch 'mayank/pitchError' into pitchError
dzalkind Aug 3, 2022
e332def
Re-run registry, update modes in controller.py, re-gen inputs
dzalkind Aug 3, 2022
1ab454f
Fix file writing: space after PF section
dzalkind Aug 3, 2022
9bb2c58
Add offset test in run_FAST
dzalkind Aug 3, 2022
09f775d
Enable PF_Mode in test
dzalkind Aug 3, 2022
07d5317
Regen discons after adding newline
dzalkind Aug 3, 2022
fcab2b5
typo
mayankchetan Aug 4, 2022
62777e6
increased significant figures for pitch fault offset
Aug 4, 2022
8965162
Update docs, input file writing with minor edits before 2.6.0
dzalkind Aug 8, 2022
590c557
Making ROSCO 'blind' to the pitch fault
Aug 11, 2022
07a7d73
Merge remote-tracking branch 'mayank/pitchError' into pitchError
dzalkind Aug 11, 2022
ae7b267
Update example 05 units
dzalkind Sep 12, 2022
778822b
Add generator efficiency to power output of simple simulation
dzalkind Sep 12, 2022
86c8acf
Update Windows install instructions
dzalkind Sep 12, 2022
6ec4be8
Standardize avrSWAP to ReKi type
dzalkind Sep 14, 2022
66c1d56
Fix StC input writer
dzalkind Sep 20, 2022
9cd709f
PitCom changed to PitComAct
Sep 20, 2022
b83583b
Merge remote-tracking branch 'mayank/pitchError' into pitchError
dzalkind Sep 20, 2022
3d3b33b
Merge remote-tracking branch 'upstream/develop' into pitchError
dzalkind Sep 20, 2022
e39fae5
Regenerate inputs, types, docs with new API
dzalkind Sep 20, 2022
6c709be
Error -> Faults
dzalkind Sep 20, 2022
161885b
Add pitch offset example, test
dzalkind Sep 20, 2022
8152076
Throw error if PF_Mode = 1 and IPC not enabled in ServoDyn
dzalkind Sep 20, 2022
8568d50
Tidy example 18
dzalkind Sep 20, 2022
295a17f
Regen discons
dzalkind Sep 20, 2022
840a0b8
Document API change
dzalkind Sep 20, 2022
fd09019
Load only needed OpenFAST inputs in turbine.py
dzalkind Sep 23, 2022
a8e45ce
Set last blade pitch to PitCom, not PitComAct
dzalkind Sep 23, 2022
49a088d
Give ratelimit it's own memory of last signal
dzalkind Sep 23, 2022
4e1b824
Make current pitch angle PitComAct again
dzalkind Sep 23, 2022
8049b1d
Get rid of PitComAct_Last
dzalkind Sep 23, 2022
66249ff
Fix typo in ZMQ_Mode description
dzalkind Sep 23, 2022
4955dd4
Revert Matlab changes to develop
dzalkind Sep 26, 2022
609210d
Merge branch 'pitchError' into vbf
dzalkind Sep 26, 2022
020dce6
Merge remote-tracking branch 'upstream/develop' into vbf
dzalkind Sep 26, 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
9 changes: 8 additions & 1 deletion ROSCO/rosco_registry/rosco_types.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ default_types:
size: 0 # Use this if the type IS an array (size:3 --> REAL(8), BldPitch(3))
allocatable: False
equals:
float: &float
type: float
description:
dimension: # Use this if a higher-dimensional allocatable array (dimension:(:,:) --> REAL(8), DIMESION(:,:), ALLOCATABLE)
size: 0 # Use this if the type IS an array (size:3 --> REAL(8), BldPitch(3))
allocatable: False
equals:
character: &character
type: character
description:
Expand Down Expand Up @@ -1093,7 +1100,7 @@ ZMQ_Variables:

ExtControlType:
avrSWAP:
<<: *c_float
<<: *float
description: The swap array- used to pass data to and from the DLL controller [see Bladed DLL documentation]
allocatable: True
dimension: (:)
11 changes: 10 additions & 1 deletion ROSCO/rosco_registry/write_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def write_roscoio(yfile):
file.write(" TYPE(PerformanceData), INTENT(INOUT) :: PerfData\n")
file.write(" TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar\n")
file.write(" TYPE(ZMQ_Variables), INTENT(INOUT) :: zmqVar\n")
file.write(" REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*)\n")
file.write(" REAL(ReKi), INTENT(IN) :: avrSWAP(*)\n")
file.write(" INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n")
file.write(" CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName \n")
file.write(" \n")
Expand Down Expand Up @@ -336,6 +336,15 @@ def read_type(param):
f90type += ', DIMENSION(:), ALLOCATABLE'
elif param['dimension']:
f90type += ', DIMENSION{}'.format(param['dimension'])
elif param['type'] == 'float':
f90type = 'REAL(ReKi)'
if param['allocatable']:
if param['dimension']:
f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension'])
else:
f90type += ', DIMENSION(:), ALLOCATABLE'
elif param['dimension']:
f90type += ', DIMENSION{}'.format(param['dimension'])
elif param['type'] == 'character':
f90type = 'CHARACTER'
if param['length']:
Expand Down
2 changes: 1 addition & 1 deletion ROSCO/src/Controllers.f90
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, zmqVar, DebugVar,
! TODO: The constant offset implementation is sort of circular here as a setpoint is already being defined in SetVariablesSetpoints. This could also use cleanup
USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, DebugVariables, ErrorVariables, ZMQ_Variables

REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.
REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.

TYPE(ControlParameters), INTENT(INOUT) :: CntrPar
TYPE(LocalVariables), INTENT(INOUT) :: LocalVar
Expand Down
2 changes: 1 addition & 1 deletion ROSCO/src/DISCON.F90
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME
!REAL(ReKi), INTENT(IN) :: from_SC(*) ! DATA from the super controller
!REAL(ReKi), INTENT(INOUT) :: to_SC(*) ! DATA to the super controller

REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.
REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.
INTEGER(C_INT), INTENT(INOUT) :: aviFAIL ! A flag used to indicate the success of this DLL call set as follows: 0 if the DLL call was successful, >0 if the DLL call was successful but cMessage should be issued as a warning messsage, <0 if the DLL call was unsuccessful or for any other reason the simulation is to be stopped at this point with cMessage as the error message.
CHARACTER(KIND=C_CHAR), INTENT(IN ) :: accINFILE(NINT(avrSWAP(50))) ! The name of the parameter input file
CHARACTER(KIND=C_CHAR), INTENT(IN ) :: avcOUTNAME(NINT(avrSWAP(51))) ! OUTNAME (Simulation RootName)
Expand Down
7 changes: 5 additions & 2 deletions ROSCO/src/ExtControl.f90
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ MODULE ExtControl
USE Functions
USE ROSCO_Types
USE SysSubs
USE Constants

IMPLICIT NONE

Expand All @@ -35,7 +36,9 @@ MODULE ExtControl
SUBROUTINE BladedDLL_Legacy_Procedure ( avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG ) BIND(C)
USE, INTRINSIC :: ISO_C_Binding

REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP (*) !< DATA
USE Constants

REAL(ReKi), INTENT(INOUT) :: avrSWAP (*) !< DATA
INTEGER(C_INT), INTENT(INOUT) :: aviFAIL !< FLAG (Status set in DLL and returned to simulation code)
CHARACTER(KIND=C_CHAR), INTENT(IN) :: accINFILE (*) !< INFILE
CHARACTER(KIND=C_CHAR), INTENT(INOUT) :: avcOUTNAME(*) !< OUTNAME (in:Simulation RootName; out:Name:Units; of logging channels)
Expand All @@ -54,7 +57,7 @@ SUBROUTINE ExtController(avrSWAP, CntrPar, LocalVar, ExtDLL, ErrVar)
TYPE(ExtControlType), INTENT(INOUT) :: ExtDLL


REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller.
REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller.

! Temporary variables
! CHARACTER(1024), PARAMETER :: ExtDLL_InFile = '/Users/dzalkind/Tools/ROSCO/Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/DISCON-UMaineSemi.IN'
Expand Down
2 changes: 1 addition & 1 deletion ROSCO/src/ROSCO_IO.f90
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootNa
TYPE(PerformanceData), INTENT(INOUT) :: PerfData
TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar
TYPE(ZMQ_Variables), INTENT(INOUT) :: zmqVar
REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*)
REAL(ReKi), INTENT(IN) :: avrSWAP(*)
INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME
CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName

Expand Down
2 changes: 1 addition & 1 deletion ROSCO/src/ROSCO_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ MODULE ROSCO_Types
END TYPE ZMQ_Variables

TYPE, PUBLIC :: ExtControlType
REAL(C_FLOAT), DIMENSION(:), ALLOCATABLE :: avrSWAP ! The swap array- used to pass data to and from the DLL controller [see Bladed DLL documentation]
REAL(ReKi), DIMENSION(:), ALLOCATABLE :: avrSWAP ! The swap array- used to pass data to and from the DLL controller [see Bladed DLL documentation]
END TYPE ExtControlType

END MODULE ROSCO_Types
8 changes: 4 additions & 4 deletions ROSCO_toolbox/ofTools/fast_io/FAST_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1293,13 +1293,13 @@ def write_ServoDyn(self):
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['AfC_Phase'], 'AfC_phase', '- Phase relative to the blade azimuth (0 is vertical) for for cosine cycling of flap signal (deg) [used only with AfCmode==1]\n'))
f.write('---------------------- STRUCTURAL CONTROL ---------------------------------------\n')
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['NumBStC'], 'NumBStC', '- Number of blade structural controllers (integer)\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + '" "'.join(self.fst_vt['ServoDyn']['BStCfiles']) + '"', 'BStCfiles', '- Name of the file for blade tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + ''.join(self.fst_vt['ServoDyn']['BStCfiles']) + '"', 'BStCfiles', '- Name of the file for blade tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['NumNStC'], 'NumNStC', '- Number of nacelle structural controllers (integer)\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + '" "'.join(self.fst_vt['ServoDyn']['NStCfiles']) + '"', 'NStCfiles', '- Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + ''.join(self.fst_vt['ServoDyn']['NStCfiles']) + '"', 'NStCfiles', '- Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['NumTStC'], 'NumTStC', '- Number of tower structural controllers (integer)\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + '" "'.join(self.fst_vt['ServoDyn']['TStCfiles']) + '"', 'TStCfiles', '- Name of the file for tower tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + ''.join(self.fst_vt['ServoDyn']['TStCfiles']) + '"', 'TStCfiles', '- Name of the file for tower tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['NumSStC'], 'NumSStC', '- Number of sbustructure structural controllers (integer)\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + '" "'.join(self.fst_vt['ServoDyn']['SStCfiles']) + '"', 'SStCfiles', '- Name of the file for sbustructure tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('{!s:<22} {:<11} {:}'.format('"' + ''.join(self.fst_vt['ServoDyn']['SStCfiles']) + '"', 'SStCfiles', '- Name of the file for sbustructure tuned mass damper (quoted string) [unused when CompNTMD is false]\n'))
f.write('---------------------- CABLE CONTROL ---------------------------------------- \n')
f.write('{:<22} {:<11} {:}'.format(self.fst_vt['ServoDyn']['CCmode'], 'CCmode', '- Cable control mode {0- none, 4- user-defined from Simulink/Labview, 5- user-defineAfC_phased from Bladed-style DLL}\n'))
f.write('---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]\n')
Expand Down
4 changes: 2 additions & 2 deletions ROSCO_toolbox/sim.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def sim_ws_series(self, t_array, ws_array, rotor_rpm_init=10, init_pitch=0.0,
gen_torque[i], bld_pitch[i], nac_yawrate[i] = self.controller_int.call_controller(turbine_state)

# Calculate the power
gen_power[i] = gen_speed[i] * gen_torque[i]
gen_power[i] = gen_speed[i] * gen_torque[i] * self.turbine.GenEff / 100

# Calculate the nacelle position
nac_yaw[i] = nac_yaw[i-1] + nac_yawrate[i] * dt
Expand Down Expand Up @@ -181,7 +181,7 @@ def sim_ws_series(self, t_array, ws_array, rotor_rpm_init=10, init_pitch=0.0,
ax.grid()
ax = axarr[3]
ax.plot(self.t_array, self.gen_power/1000)
ax.set_ylabel('Gen Power (W)')
ax.set_ylabel('Gen Power (kW)')
ax.grid()
ax = axarr[4]
ax.plot(self.t_array, self.bld_pitch*rad2deg)
Expand Down
17 changes: 16 additions & 1 deletion ROSCO_toolbox/turbine.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,22 @@ def load_from_fast(self, FAST_InputFile,FAST_directory, FAST_ver='OpenFAST',dev_
fast = self.fast = InputReader_OpenFAST()
fast.FAST_InputFile = FAST_InputFile
fast.FAST_directory = FAST_directory
fast.execute()

fast.read_MainInput()
fast.read_ElastoDyn()


fast.read_AeroDyn15()

fast.read_ServoDyn()
fast.read_DISCON_in()


if fast.fst_vt['Fst']['CompHydro'] == 1: # SubDyn not yet implimented
fast.read_HydroDyn()

# fast.read_AeroDyn15()
# fast.execute()

# Use Performance tables if defined, otherwise use defaults
if txt_filename:
Expand Down
4 changes: 3 additions & 1 deletion docs/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ On Mac/Linux, standard compilers are generally available without any additional
.. code-block:: bash

conda install m2w64-toolchain libpython
conda install cmake make # if Windows users would like to install these in anaconda environment

Once the CMake and the required compilers are downloaded, the following code can be used to compile ROSCO.

Expand Down Expand Up @@ -199,7 +200,8 @@ Please follow the following steps to install the ROSCO tool-chain. You should do
cd ROSCO
conda install compilers # (Mac/Linux only)
conda install m2w64-toolchain libpython # (Windows only)
conda install -y wisdem
conda env config vars set FC=gfortran # Sometimes needed for Windows
conda install -y wisdem=3.5.0
python setup.py install --compile-rosco

3. Clone and Install the ROSCO toolbox without ROSCO
Expand Down