Skip to content

Commit c57613b

Browse files
committed
Fixing mapping lines to the correct mooring in Project class
1 parent 36604d0 commit c57613b

File tree

1 file changed

+29
-21
lines changed

1 file changed

+29
-21
lines changed

famodel/project.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4448,31 +4448,27 @@ def mapRAFTResults(self, results=None, SFs=True):
44484448
for moor in self.mooringList.values():
44494449
moor.safety_factors['tension'] = 1e10
44504450

4451-
# initialize raftResults dictionary in Line [Why isn't line an edge?]
4452-
for moor in self.mooringList.values():
4453-
for line in moor.ss.lineList:
4454-
line.raftResults = {}
4455-
44564451
for iCase in range(nCases):
4457-
i = 0
4458-
for moor in self.mooringList.values():
4452+
for i, moor in enumerate(self.mooringList.values()):
4453+
# Find the corresponding line in the proj.ms.lineList
4454+
idx = moor.ss.number - 1
4455+
44594456
moor.raftResults[iCase] = {
4460-
'Tmoor_avg': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_avg'][[i, i+len(self.ms.lineList)]],
4461-
'Tmoor_std': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_std'][[i, i+len(self.ms.lineList)]],
4462-
'Tmoor_min': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_min'][[i, i+len(self.ms.lineList)]],
4463-
'Tmoor_max': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_max'][[i, i+len(self.ms.lineList)]],
4464-
'Tmoor_PSD': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_PSD'][[i, i+len(self.ms.lineList)], :]
4457+
'Tmoor_avg': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_avg'][[idx, idx+len(self.ms.lineList)]],
4458+
'Tmoor_std': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_std'][[idx, idx+len(self.ms.lineList)]],
4459+
'Tmoor_min': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_min'][[idx, idx+len(self.ms.lineList)]],
4460+
'Tmoor_max': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_max'][[idx, idx+len(self.ms.lineList)]],
4461+
'Tmoor_PSD': self.array.results['case_metrics'][iCase]['array_mooring']['Tmoor_PSD'][[idx, idx+len(self.ms.lineList)], :]
44654462
}
44664463
if SFs:
44674464
SF = np.zeros((len(moor.ss.lineList)))
4468-
for i, line in enumerate(moor.ss.lineList):
4465+
for j, line in enumerate(moor.ss.lineList):
44694466
line_MBL = line.type['MBL']
4470-
SF[i] = line_MBL/np.mean(moor.raftResults[iCase]['Tmoor_avg'])
4467+
SF[j] = line_MBL/np.mean(moor.raftResults[iCase]['Tmoor_avg'])
44714468

44724469
moor.safety_factors['tension'] = min([moor.safety_factors['tension'], min(SF)])
44734470
moor.safety_factors['analysisType'] = f'(RAFT) MoorMod={self.array.moorMod}'
44744471

4475-
i += 1
44764472

44774473
def generateSheets(self, filename):
44784474
"""
@@ -4601,31 +4597,43 @@ def style_it(sheet, row, col_start, col_end, fill_color="FFFF00"):
46014597

46024598
# Create a sheet for mooring lines
46034599
mooring_sheet = workbook.create_sheet(title="Mooring Lines")
4604-
mooring_sheet.append(["ID", "endA", "endB", "Shrd", "Safety Factors", "Fid Level", "Case", "Avg EndA Tension (kN)", "Std EndA Tension (kN)", "Avg EndB Tension (kN)", "Std EndB Tension (kN)"])
4600+
mooring_sheet.append(["ID", "endA", "endB", "Shrd", "chain dnom [mm]", "rope dnom [mm]", "Safety Factors", "Fid Level", "Case", "Avg EndA Tension (kN)", "Std EndA Tension (kN)", "Avg EndB Tension (kN)", "Std EndB Tension (kN)"])
46054601
for moor in self.mooringList.values():
4602+
# Find nominal diameters in moor
4603+
ch_dnom = '-'
4604+
rp_dnom = '-'
4605+
4606+
for line in moor.ss.lineList:
4607+
if 'rope' in line.type['material'] or 'polyester' in line.type['material']: # change the polyester/rope length
4608+
rp_dnom = line.type['d_nom'] * 1e3
4609+
elif 'chain' in line.type['material']:
4610+
ch_dnom = line.type['d_nom'] * 1e3
4611+
46064612
if hasattr(moor, 'raftResults'):
46074613
for iCase in range(nCases):
46084614
if iCase==0:
4609-
mooring_sheet.append([moor.id, moor.attached_to[0].id, moor.attached_to[1].id, moor.shared, round(moor.safety_factors['tension'], 3), moor.safety_factors['analysisType'], iCase,
4615+
mooring_sheet.append([moor.id, moor.attached_to[0].id, moor.attached_to[1].id, moor.shared, ch_dnom, rp_dnom, round(moor.safety_factors['tension'], 3), moor.safety_factors['analysisType'], iCase,
46104616
round(moor.raftResults[iCase]['Tmoor_avg'][0], 3)/1e3, round(moor.raftResults[iCase]['Tmoor_std'][0], 3)/1e3,
46114617
round(moor.raftResults[iCase]['Tmoor_avg'][1], 3)/1e3, round(moor.raftResults[iCase]['Tmoor_std'][1], 3)/1e3])
46124618
if moor.safety_factors['tension']<2.0:
4613-
style_it(mooring_sheet, mooring_sheet.max_row, 1, 6, fill_color="FF0000")
4619+
style_it(mooring_sheet, mooring_sheet.max_row, 1, 8, fill_color="FF0000")
46144620

46154621
else:
4616-
mooring_sheet.append([" ", " ", " ", " ", " ", " ", iCase,
4622+
mooring_sheet.append([" ", " ", " ", " ", " ", " ", " ", " ", iCase,
46174623
round(moor.raftResults[iCase]['Tmoor_avg'][0], 3)/1e3, round(moor.raftResults[iCase]['Tmoor_std'][0], 3)/1e3,
46184624
round(moor.raftResults[iCase]['Tmoor_avg'][1], 3)/1e3, round(moor.raftResults[iCase]['Tmoor_std'][1], 3)/1e3])
46194625
if np.any(moor.raftResults[iCase]['Tmoor_avg']/1e3 < 100):
4620-
style_it(mooring_sheet, mooring_sheet.max_row, 7, mooring_sheet.max_column, fill_color="FFFF00")
4626+
style_it(mooring_sheet, mooring_sheet.max_row, 9, mooring_sheet.max_column, fill_color="FFFF00")
46214627
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=1, end_row=mooring_sheet.max_row, end_column=1)
46224628
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=2, end_row=mooring_sheet.max_row, end_column=2)
46234629
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=3, end_row=mooring_sheet.max_row, end_column=3)
46244630
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=4, end_row=mooring_sheet.max_row, end_column=4)
46254631
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=5, end_row=mooring_sheet.max_row, end_column=5)
46264632
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=6, end_row=mooring_sheet.max_row, end_column=6)
4633+
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=7, end_row=mooring_sheet.max_row, end_column=7)
4634+
mooring_sheet.merge_cells(start_row=mooring_sheet.max_row-nCases+1, start_column=8, end_row=mooring_sheet.max_row, end_column=8)
46274635
else:
4628-
mooring_sheet.append([moor.id, moor.attached_to[0].id, moor.attached_to[1].id, moor.shared, round(moor.safety_factors['tension'], 3), moor.safety_factors['analysisType']])
4636+
mooring_sheet.append([moor.id, moor.attached_to[0].id, moor.attached_to[1].id, moor.shared, ch_dnom, rp_dnom, round(moor.safety_factors['tension'], 3), moor.safety_factors['analysisType']])
46294637

46304638
# Create a sheet for a 2D Plot
46314639
plot_sheet_2D = workbook.create_sheet(title="2D Plot")

0 commit comments

Comments
 (0)