Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 6 additions & 2 deletions openfast_io/openfast_io/FAST_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -1717,7 +1717,10 @@ def read_StC(self,filename):
'''
StC_vt = {}

with open(os.path.join(self.FAST_directory, filename)) as f:
# Inputs should be relative to ServoDyn, like in OpenFAST
SvD_dir = os.path.dirname(self.fst_vt['Fst']['ServoFile'])

with open(os.path.join(self.FAST_directory, SvD_dir, filename)) as f:

f.readline()
f.readline()
Expand Down Expand Up @@ -3191,7 +3194,8 @@ def read_MoorDyn(self, moordyn_file):
if option_name.upper() == 'WATERKIN':
self.fst_vt['MoorDyn']['WaterKin'] = option_value.strip('"')
WaterKin_file = os.path.normpath(os.path.join(os.path.dirname(moordyn_file), self.fst_vt['MoorDyn']['WaterKin']))
self.read_WaterKin(WaterKin_file)
if self.fst_vt['MoorDyn']['WaterKin'].upper() not in ['0','UNUSED']:
self.read_WaterKin(WaterKin_file)

self.fst_vt['MoorDyn']['option_values'].append(float_read(option_value.strip('"'))) # some options values can be strings or floats
self.fst_vt['MoorDyn']['option_names'].append(option_name)
Expand Down
14 changes: 9 additions & 5 deletions openfast_io/openfast_io/FAST_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ def int_default_out(val, trim = False):
"""
if type(val) is float:
if trim:
return '{:d}'.format(val)
return '{:d}'.format(int(val))
else:
return '{:<22d}'.format(val)
return '{:<22d}'.format(int(val))
else:
if trim:
return '{:}'.format(val)
Expand Down Expand Up @@ -250,7 +250,7 @@ def execute(self):
self.write_MAP()
elif self.fst_vt['Fst']['CompMooring'] == 3:
self.write_MoorDyn()
if 'option_names' in self.fst_vt['MoorDyn'] and 'WATERKIN' in self.fst_vt['MoorDyn']['option_names']:
if self.fst_vt['WaterKin']: # will be empty if not read
self.write_WaterKin(os.path.join(self.FAST_runDirectory,self.fst_vt['MoorDyn']['WaterKin_file']))

# # look at if the the self.fst_vt['BeamDyn'] is an array, if so, loop through the array
Expand Down Expand Up @@ -2497,10 +2497,14 @@ def write_MoorDyn(self):
f.write('---------------------- SOLVER OPTIONS ---------------------------------------\n')
for i in range(len(self.fst_vt['MoorDyn']['option_values'])):

if 'WATERKIN' in self.fst_vt['MoorDyn']['option_names'][i]:
if self.fst_vt['MoorDyn']['option_names'][i].upper() == 'WATERKIN' and self.fst_vt['WaterKin']:
# WATERKIN needs to be a string, and should have already been read in and part of fst_vt
self.fst_vt['MoorDyn']['WaterKin_file'] = self.FAST_namingOut + '_WaterKin.dat'
f.write('{:<22} {:<11} {:}'.format('"'+self.fst_vt['MoorDyn']['WaterKin_file']+'"', self.fst_vt['MoorDyn']['option_names'][i], self.fst_vt['MoorDyn']['option_descriptions'][i]+'\n'))
else: # if not waterkin handle normally
elif self.fst_vt['MoorDyn']['option_names'][i].upper() in ['INERTIALF','WATERKIN']:
# These options need to be an integer
f.write('{:<22} {:<11} {:}'.format(int_default_out(self.fst_vt['MoorDyn']['option_values'][i]), self.fst_vt['MoorDyn']['option_names'][i], self.fst_vt['MoorDyn']['option_descriptions'][i]+'\n'))
else: # if not handle normally
f.write('{:<22} {:<11} {:}'.format(float_default_out(self.fst_vt['MoorDyn']['option_values'][i]), self.fst_vt['MoorDyn']['option_names'][i], self.fst_vt['MoorDyn']['option_descriptions'][i]+'\n'))

f.write('------------------------ OUTPUTS --------------------------------------------\n')
Expand Down