diff --git a/environment.yml b/environment.yml index 1642036..ba43de0 100644 --- a/environment.yml +++ b/environment.yml @@ -6,7 +6,7 @@ channels: dependencies: - matplotlib - - moorpy + - moorpy>=1.2.1 - numpy - openmdao > 3.30 - pyhams diff --git a/pyproject.toml b/pyproject.toml index 67ae4af..b412276 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "OpenRAFT" -version = "2.0.2" +version = "2.0.3" description = "RAFT: Response Amplitudes of Floating Turbines" readme = "README.md" requires-python = ">=3.9" diff --git a/raft/IntersectionMesh.py b/raft/IntersectionMesh.py index 9ca1619..7a4f02b 100644 --- a/raft/IntersectionMesh.py +++ b/raft/IntersectionMesh.py @@ -34,46 +34,46 @@ def meshMember(geom, headings, rA, rB, radius, member_id=0, uniform = isinstance(diameters, (int, float)) or (isinstance(diameters, list) and len(diameters) == 1) - for idx in range(len(headings)): - if np.all(diameters==diameters[0]): - start = rA_ext - end = rB_ext + # for idx in range(len(headings)): # YL 10-15-25: I don't think it's used but might need to double check + if np.all(diameters==diameters[0]): + start = rA_ext + end = rB_ext + axis_segment = [end[i] - start[i] for i in range(3)] + cone = geom.add_cylinder(start, axis_segment, diameters[0]/2) + label = f"Cylinder_{member_id}" + print(f"Meshing {label} | Start: {start} | End: {end} | Radius: {diameters[0]/2}->{diameters[0]/2}") + + geom.add_physical(cone, label=label) + cylinders.append(cone) + else: + for s in range(len(stations) - 1): + t0 = (stations[s] - stations[0]) / (stations[-1] - stations[0]) + t1 = (stations[s + 1] - stations[0]) / (stations[-1] - stations[0]) + + if abs(t1 - t0) < 1e-6: + continue + + # ⏱ Interpolate segment along extended axis + start = [rA_ext[i] + t0 * axis_full[i] for i in range(3)] + end = [rA_ext[i] + t1 * axis_full[i] for i in range(3)] axis_segment = [end[i] - start[i] for i in range(3)] - cone = geom.add_cylinder(start, axis_segment, diameters[0]/2) - label = f"Cylinder_{member_id}_{idx}" - print(f"Meshing {label} | Start: {start} | End: {end} | Radius: {diameters[0]/2}->{diameters[0]/2}") + + if uniform or diameters is None: + radius_start = radius_end = radius + else: + radius_start = diameters[s] / 2 + radius_end = diameters[s + 1] / 2 + + label = f"Cylinder_{member_id}_seg{s}" + print(f"Meshing {label} | Start: {start} | End: {end} | Radius: {radius_start}->{radius_end}") + + if abs(radius_start - radius_end) < 1e-6: + cone = geom.add_cylinder(start, axis_segment, radius_start) + else: + cone = geom.add_cone(start, axis_segment, radius_start, radius_end) geom.add_physical(cone, label=label) cylinders.append(cone) - else: - for s in range(len(stations) - 1): - t0 = (stations[s] - stations[0]) / (stations[-1] - stations[0]) - t1 = (stations[s + 1] - stations[0]) / (stations[-1] - stations[0]) - - if abs(t1 - t0) < 1e-6: - continue - - # ⏱ Interpolate segment along extended axis - start = [rA_ext[i] + t0 * axis_full[i] for i in range(3)] - end = [rA_ext[i] + t1 * axis_full[i] for i in range(3)] - axis_segment = [end[i] - start[i] for i in range(3)] - - if uniform or diameters is None: - radius_start = radius_end = radius - else: - radius_start = diameters[s] / 2 - radius_end = diameters[s + 1] / 2 - - label = f"Cylinder_{member_id}_{idx}_seg{s}" - print(f"Meshing {label} | Start: {start} | End: {end} | Radius: {radius_start}->{radius_end}") - - if abs(radius_start - radius_end) < 1e-6: - cone = geom.add_cylinder(start, axis_segment, radius_start) - else: - cone = geom.add_cone(start, axis_segment, radius_start, radius_end) - - geom.add_physical(cone, label=label) - cylinders.append(cone) return cylinders diff --git a/raft/raft_fowt.py b/raft/raft_fowt.py index 9bbf092..f768946 100644 --- a/raft/raft_fowt.py +++ b/raft/raft_fowt.py @@ -1328,16 +1328,16 @@ def calcBEM(self, dw=0, wMax=0, wInf=10.0, dz=0, da=0, dh=0, headings=[0], meshD for mem in self.memberList: if mem.potMod: # >>>>>>>>>>>>>>>> now using for rectnagular member and the dimensions are hardcoded. need to integrate with the .yaml file input if mem.shape == "circular": - pnl.meshMember(mem.stations, mem.d, mem.rA, mem.rB, dz_max=dz, da_max=da, savedNodes=nodes, savedPanels=panels) + pnl.meshMember(mem.stations, mem.d, mem.rA0, mem.rB0, dz_max=dz, da_max=da, savedNodes=nodes, savedPanels=panels) # for GDF output - vertices_i = pnl.meshMemberForGDF(mem.stations, mem.d, mem.rA, mem.rB, dz_max=dz, da_max=da) + vertices_i = pnl.meshMemberForGDF(mem.stations, mem.d, mem.rA0, mem.rB0, dz_max=dz, da_max=da) vertices = np.vstack([vertices, vertices_i]) # append the member's vertices to the master list elif mem.shape == "rectangular": widths = mem.sl[:, 0] heights = mem.sl[:, 1] - pnl.meshRectangularMember(mem.stations, widths, heights, mem.rA, mem.rB, dz_max=dz, dw_max=da, dh_max=dh, savedNodes=nodes, savedPanels=panels) # + pnl.meshRectangularMember(mem.stations, widths, heights, mem.rA0, mem.rB0, dz_max=dz, dw_max=da, dh_max=dh, savedNodes=nodes, savedPanels=panels) # # for GDF output - vertices_i = pnl.meshRectangularMemberForGDF(mem.stations, widths, heights, mem.rA, mem.rB, dz_max=dz, dw_max=da, dh_max=dh) + vertices_i = pnl.meshRectangularMemberForGDF(mem.stations, widths, heights, mem.rA0, mem.rB0, dz_max=dz, dw_max=da, dh_max=dh) vertices = np.vstack([vertices, vertices_i]) # append the member's vertices to the master list if len(panels) == 0: print("WARNING: no panels to mesh.") @@ -1360,7 +1360,7 @@ def calcBEM(self, dw=0, wMax=0, wInf=10.0, dz=0, da=0, dh=0, headings=[0], meshD stations = mem.stations rA = mem.rA_original if hasattr(mem, "rA_original") else mem.rA rB = mem.rB_original if hasattr(mem, "rB_original") else mem.rB - headings = mem.heading if hasattr(mem, "heading") else [0] + heading = mem.heading if hasattr(mem, "heading") else [0] #print("name from raft:", mem.name) #print("rA from raft: ",mem.rA) #print("rB from raft: ", mem.rB) @@ -1374,7 +1374,7 @@ def calcBEM(self, dw=0, wMax=0, wInf=10.0, dz=0, da=0, dh=0, headings=[0], meshD "rA": rA, "rB": rB, "radius": radius, - "heading": headings, + "heading": heading, "stations": stations, "diameters": diameters, "extensionA": extensionA, @@ -1392,7 +1392,7 @@ def calcBEM(self, dw=0, wMax=0, wInf=10.0, dz=0, da=0, dh=0, headings=[0], meshD "rB": rB, "widths": widths, "heights": heights, - "heading": headings, + "heading": heading, "stations": stations, "extensionA": extensionA, "extensionB": extensionB @@ -1498,7 +1498,7 @@ def readHydro(self): X_BEM[ih,5,:] = X_BEM_temp[ih,5,:] for iw in range(self.nw): - self.X_BEM[ih, :6, iw] = transformForce(X_BEM[ih,:,iw], offset= -self.nodeList[self.reducedDOF[0][0]].r[:3]) + self.X_BEM[ih, :6, iw] = transformForce(X_BEM[ih,:,iw], offset= -self.nodeList[self.reducedDOF[0][0]].r0[:3]) # HAMS results error checks >>> any more we should have? <<< if np.isnan(self.A_BEM).any(): @@ -1555,6 +1555,8 @@ def calcTurbineConstants(self, case, ptfm_pitch=0): f_aero0, f_aero, a_aero, b_aero = rot.calcAero(case, current=current) # get values about hub # Transform quantities to the reduced set of dofs + # TODO: This is different from other parts of the code where I used _fullDOF matrix and then transformed to reduced DOFs. + # The idea was to use the T.T matrix as a sort of a locator matrix, but not sure how correct this is. Change that later T = rot.nodeList[0].T # transformation matrix from the reduced set of dofs of the FOWT to the 6 dofs of the rotor node self.f_aero0[:,ir] = T.T @ f_aero0 # mean forces and moments for iw in range(self.nw): @@ -2505,6 +2507,7 @@ def saveTurbineOutputs(self, results, case): mem_tower = self.memberList[self.nplatmems+ir] # For now, using same method as before for rigid towers + # TODO: remove this and compute tower base loads based on the reaction loads at the tower-bottom joint if mem_tower.type == 'rigid': m_turbine[ir] = self.mtower[ir] + rotor.mRNA # total masses of each turbine zCG_turbine[ir] = (self.rCG_tow[ir][2]*self.mtower[ir] # CoG of each turbine @@ -2529,9 +2532,7 @@ def saveTurbineOutputs(self, results, case): dynamic_moment_RMS[ir] = getRMS(dynamic_moment[:,ir,:]) # fill in metrics - # mean moment from weight and thrust - results['Mbase_avg'][ir] = (m_turbine[ir]*self.g * hArm[ir]*np.sin(self.Xi0[4]) - + transformForce(self.rotorList[0].nodeList[0].T@self.f_aero0[:,ir], offset=[0,0,-hArm[ir]])[4] ) + results['Mbase_avg'][ir] = (m_turbine[ir]*self.g * hArm[ir]*np.sin(self.Xi0[4]) + transformForce(self.rotorList[ir].f0, offset=[0,0,self.rotorList[ir].nodeList[0].r0[2]-hArm[ir]])[4] ) results['Mbase_std'][ir] = dynamic_moment_RMS[ir] results['Mbase_PSD'][:,ir] = (getPSD(dynamic_moment[:,ir,:], self.dw)) results['Mbase_max'][ir] = results['Mbase_avg'][ir]+3*results['Mbase_std'][ir] @@ -2744,9 +2745,16 @@ def saveTurbineOutputs(self, results, case): def plot(self, ax, color=None, nodes=0, plot_rotor=True, station_plot=[], airfoils=False, zorder=2, plot_fowt=True, plot_ms=True, - shadow=True, plot_frame=False, mp_args={}, frame_opts={}, plot_joints=False): + shadow=True, plot_frame=False, mp_args={}, frame_opts={}, plot_joints=False, axes_around_fowt=None): '''plots the FOWT...''' + # Assign values to axes_around_fowt if not specified by the user + if axes_around_fowt is None: + if plot_ms: + axes_around_fowt=False # Do not zoom in on the FOWT + else: + axes_around_fowt=True # Zoom in on the FOWT + R = rotationMatrix(self.r6[3], self.r6[4], self.r6[5]) # note: eventually Rotor could handle orientation internally <<< if plot_ms: @@ -2787,8 +2795,8 @@ def plot(self, ax, color=None, nodes=0, plot_rotor=True, station_plot=[], color = 'green' if joint['type'] == 'ball' else 'red' ax.scatter(joint['r'][0], joint['r'][1], joint['r'][2], color=color, marker='o', facecolors='None') - # The code below makes the plot look nicer if plotting the FOWT without its mooring system - if not plot_ms: + # The code below makes the plot zoom into the FOWT. Useful when plotting the FOWT without its mooring system + if axes_around_fowt: # Set equal aspect ratio ax.set_box_aspect([1, 1, 1]) # Aspect ratio is 1:1:1 diff --git a/raft/raft_model.py b/raft/raft_model.py index 480e4b5..4d33c95 100644 --- a/raft/raft_model.py +++ b/raft/raft_model.py @@ -79,7 +79,7 @@ def __init__(self, design, nTurbines=1): design['moorings'] = [design['mooring']] # form dictionary of fowt array data - fowtInfo = [dict(zip( design['array']['keys'], row)) for row in design['array']['data']] + arrayInfo = [dict(zip( design['array']['keys'], row)) for row in design['array']['data']] # if array_mooring section exists, create an array-level MoorPy system if 'array_mooring' in design: @@ -94,7 +94,7 @@ def __init__(self, design, nTurbines=1): # set up a coupled MoorPy body for each FOWT for i in range(self.nFOWT): - self.ms.addBody(-1, [fowtInfo[i]['x_location'], fowtInfo[i]['y_location'], 0,0,0,0]) + self.ms.addBody(-1, [arrayInfo[i]['x_location'], arrayInfo[i]['y_location'], 0,0,0,0]) # load the MD style input file (this is the only option supported right now) if 'file' in design['array_mooring']: self.ms.load(design['array_mooring']['file'], clear=False) # add the array level mooring system to the already created bodies @@ -108,29 +108,29 @@ def __init__(self, design, nTurbines=1): # go through each turbine in the list and set it up... for i in range(self.nFOWT): - x_ref = fowtInfo[i]['x_location'] - y_ref = fowtInfo[i]['y_location'] - headj = fowtInfo[i]['heading_adjust'] + x_ref = arrayInfo[i]['x_location'] + y_ref = arrayInfo[i]['y_location'] + headj = arrayInfo[i]['heading_adjust'] design_i = {} # just make a temporary design dictionary for the FOWT (could make this a stored list of all) design_i['site'] = design['site'] - if fowtInfo[i]['turbineID'] == 0: + if arrayInfo[i]['turbineID'] == 0: design_i.pop('turbine', None) # if no turbine, make sure the entry isn't in the design dictionary else: - design_i['turbine'] = design['turbines'][fowtInfo[i]['turbineID']-1] + design_i['turbine'] = design['turbines'][arrayInfo[i]['turbineID']-1] - if fowtInfo[i]['platformID'] == 0: + if arrayInfo[i]['platformID'] == 0: design_i['platform'] = None print("Warning: platforms MUST be included for the time being.") else: - design_i['platform'] = design['platforms'][fowtInfo[i]['platformID']-1] + design_i['platform'] = design['platforms'][arrayInfo[i]['platformID']-1] - if fowtInfo[i]['mooringID'] == 0: # no mooring on this FOWT (array-level moorings may be used instead) + if arrayInfo[i]['mooringID'] == 0: # no mooring on this FOWT (array-level moorings may be used instead) design_i.pop('mooring', None) else: - design_i['mooring'] = design['moorings'][fowtInfo[i]['mooringID']-1] + design_i['mooring'] = design['moorings'][arrayInfo[i]['mooringID']-1] if self.ms: mpb = self.ms.bodyList[i] # reference to the FOWT's body in the array level MoorPy system @@ -282,8 +282,23 @@ def analyzeCases(self, display=0, meshDir=os.path.join(os.getcwd(),'BEM'), RAO_p fowt.setPosition(ref_displacement) # zero platform offsets fowt.calcStatics() + platform_IDs = [0] * len(self.fowtList) # Start all fowts with same ID + meshDirs = len(self.fowtList)*[meshDir] # Start all fowts with same meshDir + if 'array' in self.design: # Modify them for arrays of fowts + arrayInfo = [dict(zip( self.design['array']['keys'], row)) for row in self.design['array']['data']] + for i, fi in enumerate(arrayInfo): + platform_IDs[i] = fi['platformID'] + meshDirs[i] = f'{meshDir}_{fi["platformID"]}' + + # Run BEM for each different platform type, avoiding to rerun the same platform type again + platforms_done = set() # track platform types already run for i, fowt in enumerate(self.fowtList): - fowt.calcBEM(meshDir=meshDir) + # If this fowt is of the same type as a previous fowt, we do not need to rerun pyHAMS + if fowt.potMod and (platform_IDs[i] in platforms_done): + fowt.potModMaster = 3 + fowt.hydroPath = [other_fowt.hydroPath for i_other, other_fowt in enumerate(self.fowtList) if platform_IDs[i_other] == platform_IDs[i] and i_other < i][0] # Getting hydroPath of a previous fowt of same type + fowt.calcBEM(meshDir=meshDirs[i]) + platforms_done.add(platform_IDs[i]) # loop through each case @@ -727,7 +742,7 @@ def eval_func_equil(X, args): if type(caseorig['wind_speed']) == list : case['wind_speed'] = caseorig['wind_speed'][i] - fowt.calcTurbineConstants(case, ptfm_pitch=r6[4]) # for turbine forces >>> still need to update to use current fowt pose <<< + fowt.calcTurbineConstants(case, ptfm_pitch=fowt.r6[4]) # for turbine forces >>> still need to update to use current fowt pose <<< fowt.calcStatics() # Recompute statics because turbine heading may have changed due to yaw control fowt.calcHydroConstants() # prep for drag force and mean drift @@ -1979,8 +1994,8 @@ def florisCoupling(self, config, turbconfig, path ): # Update floris interface settings to match RAFT design self.fi.set(air_density = self.design["site"]["rho_air"], wind_shear = self.design["site"]["shearExp"]) - fowtInfo = [dict(zip( self.design['array']['keys'], row)) for row in self.design['array']['data']] - self.fi.set(layout_x=[fowtInfo[j]["x_location"] for j in range(0,len(fowtInfo))], layout_y=[fowtInfo[j]["y_location"] for j in range(0,len(fowtInfo))]) + arrayInfo = [dict(zip( self.design['array']['keys'], row)) for row in self.design['array']['data']] + self.fi.set(layout_x=[arrayInfo[j]["x_location"] for j in range(0,len(arrayInfo))], layout_y=[arrayInfo[j]["y_location"] for j in range(0,len(arrayInfo))]) # create new turbine yaml file for each turbine with a unique turbine, platform, mooring, or heading adjustment # this is because these effect the pitch of the platform in the power-thrust curve @@ -1991,10 +2006,10 @@ def florisCoupling(self, config, turbconfig, path ): #iterate through lies of turbines for i in range(self.nFOWT): - turbID = fowtInfo[i]['turbineID'] + turbID = arrayInfo[i]['turbineID'] #Check if turbine has unique platform, turbine, mooring, or rotation ... if so, calculate new power thrust curve - IDList = [fowtInfo[i]['turbineID'], fowtInfo[i]['platformID'], fowtInfo[i]['mooringID'], fowtInfo[i]['heading_adjust']] + IDList = [arrayInfo[i]['turbineID'], arrayInfo[i]['platformID'], arrayInfo[i]['mooringID'], arrayInfo[i]['heading_adjust']] if IDList in uniqueLists: for j, ulist in enumerate(uniqueLists): if IDList == ulist: @@ -2057,7 +2072,7 @@ def florisFindEquilibrium(self, case, cutin, plotting = True, ax = None): if not hasattr(self, 'fi'): raise AttributeError("Need to initialize floris coupling first") - fowtInfo = [dict(zip( self.design['array']['keys'], row)) for row in self.design['array']['data']] + arrayInfo = [dict(zip( self.design['array']['keys'], row)) for row in self.design['array']['data']] #FLORIS inputs the wind direction as direction wind is coming from (where the -X axis is 0) @@ -2113,12 +2128,12 @@ def florisFindEquilibrium(self, case, cutin, plotting = True, ax = None): #update floris turbine positions if n > 0: - xnew = [0.9*(self.fowtList[nfowt].Xi0[0] + fowtInfo[nfowt]["x_location"]) + 0.1*xpositions[-1][nfowt] for nfowt in range(len(self.fowtList))] - ynew = [0.9*(self.fowtList[nfowt].Xi0[1] + fowtInfo[nfowt]["y_location"]) + 0.1*ypositions[-1][nfowt] for nfowt in range(len(self.fowtList))] + xnew = [0.9*(self.fowtList[nfowt].Xi0[0] + arrayInfo[nfowt]["x_location"]) + 0.1*xpositions[-1][nfowt] for nfowt in range(len(self.fowtList))] + ynew = [0.9*(self.fowtList[nfowt].Xi0[1] + arrayInfo[nfowt]["y_location"]) + 0.1*ypositions[-1][nfowt] for nfowt in range(len(self.fowtList))] self.fi.set(layout_x=xnew, layout_y=ynew) else: - xnew = [self.fowtList[nfowt].Xi0[0] + fowtInfo[nfowt]["x_location"] for nfowt in range(len(self.fowtList))] - ynew = [self.fowtList[nfowt].Xi0[1] + fowtInfo[nfowt]["y_location"] for nfowt in range(len(self.fowtList))] + xnew = [self.fowtList[nfowt].Xi0[0] + arrayInfo[nfowt]["x_location"] for nfowt in range(len(self.fowtList))] + ynew = [self.fowtList[nfowt].Xi0[1] + arrayInfo[nfowt]["y_location"] for nfowt in range(len(self.fowtList))] self.fi.set(layout_x=xnew, layout_y=ynew) self.fi.set(yaw_angles=yaw_angles) diff --git a/tests/test_data/IEA15MW_true_calcAero-yaw_mode0.pkl b/tests/test_data/IEA15MW_true_calcAero-yaw_mode0.pkl index 4da3ebb..becbffb 100644 Binary files a/tests/test_data/IEA15MW_true_calcAero-yaw_mode0.pkl and b/tests/test_data/IEA15MW_true_calcAero-yaw_mode0.pkl differ diff --git a/tests/test_data/IEA15MW_true_calcAero-yaw_mode1.pkl b/tests/test_data/IEA15MW_true_calcAero-yaw_mode1.pkl index b59f87c..97357b1 100644 Binary files a/tests/test_data/IEA15MW_true_calcAero-yaw_mode1.pkl and b/tests/test_data/IEA15MW_true_calcAero-yaw_mode1.pkl differ diff --git a/tests/test_data/IEA15MW_true_calcAero-yaw_mode2.pkl b/tests/test_data/IEA15MW_true_calcAero-yaw_mode2.pkl index 8122150..609b7f0 100644 Binary files a/tests/test_data/IEA15MW_true_calcAero-yaw_mode2.pkl and b/tests/test_data/IEA15MW_true_calcAero-yaw_mode2.pkl differ diff --git a/tests/test_data/IEA15MW_true_calcAero-yaw_mode3.pkl b/tests/test_data/IEA15MW_true_calcAero-yaw_mode3.pkl index 8122150..609b7f0 100644 Binary files a/tests/test_data/IEA15MW_true_calcAero-yaw_mode3.pkl and b/tests/test_data/IEA15MW_true_calcAero-yaw_mode3.pkl differ diff --git a/tests/test_data/OC3spar_true_analyzeCases.pkl b/tests/test_data/OC3spar_true_analyzeCases.pkl index 69bcc43..8c2f51d 100644 Binary files a/tests/test_data/OC3spar_true_analyzeCases.pkl and b/tests/test_data/OC3spar_true_analyzeCases.pkl differ diff --git a/tests/test_data/OC4semi-WAMIT_Coefs_true_analyzeCases.pkl b/tests/test_data/OC4semi-WAMIT_Coefs_true_analyzeCases.pkl index 9352a5b..115759d 100644 Binary files a/tests/test_data/OC4semi-WAMIT_Coefs_true_analyzeCases.pkl and b/tests/test_data/OC4semi-WAMIT_Coefs_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S-flexible_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S-flexible_true_analyzeCases.pkl index bbe16cc..d4a0d8f 100644 Binary files a/tests/test_data/VolturnUS-S-flexible_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S-flexible_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S-moorMod2_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S-moorMod2_true_analyzeCases.pkl index d4d9087..9ad3921 100644 Binary files a/tests/test_data/VolturnUS-S-moorMod2_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S-moorMod2_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S-pointInertia_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S-pointInertia_true_analyzeCases.pkl index 35def2a..e6e9f5d 100644 Binary files a/tests/test_data/VolturnUS-S-pointInertia_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S-pointInertia_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S_farm-moorMod1_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S_farm-moorMod1_true_analyzeCases.pkl index 1163815..10dd62c 100644 Binary files a/tests/test_data/VolturnUS-S_farm-moorMod1_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S_farm-moorMod1_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S_farm_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S_farm_true_analyzeCases.pkl index c272767..e9f6265 100644 Binary files a/tests/test_data/VolturnUS-S_farm_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S_farm_true_analyzeCases.pkl differ diff --git a/tests/test_data/VolturnUS-S_true_analyzeCases.pkl b/tests/test_data/VolturnUS-S_true_analyzeCases.pkl index d5387fb..fb6436a 100644 Binary files a/tests/test_data/VolturnUS-S_true_analyzeCases.pkl and b/tests/test_data/VolturnUS-S_true_analyzeCases.pkl differ diff --git a/tests/test_model.py b/tests/test_model.py index 607e82a..ef21c65 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -7,6 +7,8 @@ import pickle import raft import os +from wisdem.inputs import load_yaml, write_yaml + ''' Define files for testing @@ -26,6 +28,8 @@ 'VolturnUS-S-flexible.yaml', ] +save_references = False +plot_diffs = False # Get the directory of the current file current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -79,48 +83,6 @@ def index_and_model(request): 'wind_wave_current': {'wind_speed': 8, 'wind_heading': 30, 'turbulence': 0, 'turbine_status': 'operating', 'yaw_misalign': 0, 'wave_spectrum': 'JONSWAP', 'wave_period': 10, 'wave_height': 4, 'wave_heading': -30, 'current_speed': 0.6, 'current_heading': 15} } -desired_X0 = { - 'wind': [ - np.array([ 1.09516355e+01, 5.35255759e+00, -8.11412806e-01, -2.20873760e-02, 4.01303217e-02, -5.01725650e-03]), - np.array([ 1.31272840e+01, 1.07929704e+01, -5.25069310e-01, -1.83674546e-02, 3.77423342e-02, -1.08655033e-03]), - np.array([ 1.31217324e+01, 1.07912647e+01, -5.39376069e-01, -1.86459740e-02, 3.82958115e-02, -1.09026120e-03]), - np.array([ 1.69882548e+01, 1.12870336e+01, 6.42827048e-01, -1.52526524e-02, 3.72069073e-02, -3.12853601e-02, 1.61833872e+03, 1.18776426e+01, 1.01629342e+00, -1.53239021e-02, 3.85069420e-02, 5.00848007e-02]), - np.array([ 4.40156080e+00, 3.10317400e+00, -2.06683747e-01, -1.45699889e-02, 2.77354876e-02, -8.23131250e-04]), - np.array([ 1.39227470e+01, 1.17230528e+01, -3.95356509e-01, -1.85235329e-02, 3.81482849e-02, -6.05154656e-04]), - np.array([ 1.69882548e+01, 1.12870336e+01, 6.42827048e-01, -1.52526524e-02, 3.72069073e-02, -3.12853601e-02, 1.61833872e+03, 1.18776426e+01, 1.01629342e+00, -1.53239021e-02, 3.85069420e-02, 5.00848007e-02]), - np.array([ 1.32671572e+01, 1.09164076e+01, -9.85707428e-01, -1.63068292e-02, 3.38604795e-02, -1.04893762e-03]), - ], - 'wave': [ - np.array([-1.64267049e-05, -2.83795893e-15, -6.65861624e-01, 3.88717546e-19, -5.94238978e-11, -4.02571352e-17]), - np.array([ 4.27925162e-01, -9.00035158e-17, -4.51814991e-01, -5.63389767e-18, -2.54250076e-02, -1.07219357e-22]), - np.array([ 4.34028448e-01, 1.29311805e-15, -4.66112782e-01, 8.09445578e-17, -2.58031212e-02, 1.54046523e-21]), - np.array([-3.28437405e-01, 1.37380291e-15, 8.59345726e-01, 6.09528763e-17, -2.31870486e-02, 9.89478513e-19, 1.60065726e+03, 9.12847486e-16, 8.59907935e-01, 3.91868383e-17, -2.40815624e-02, -8.63499424e-19]), - np.array([-1.72715184e-03, -1.57518810e-16, -1.94361922e-01, 1.07116427e-16, -7.10621656e-08, 1.63094600e-21]), - np.array([ 3.96094698e-01, 2.23346173e-13, -3.19515173e-01, -1.67920344e-16, -2.56237326e-02, -2.52196978e-15]), - np.array([-3.28437405e-01, 1.37380291e-15, 8.59345726e-01, 6.09528763e-17, -2.31870486e-02, 9.89478513e-19, 1.60065726e+03, 9.12847486e-16, 8.59907935e-01, 3.91868383e-17, -2.40815624e-02, -8.63499424e-19]), - np.array([ 3.95574228e-01, -2.14947913e-10, -9.11283754e-01, -2.56570154e-13, -2.34275902e-02, 1.24718855e-12]), - ], - 'current': [ - np.array([ 3.86072176e+00, 9.22694246e-01, -6.74898762e-01, -2.64759824e-04, 9.82529767e-04, -1.03532699e-05]), - np.array([ 3.46491856e+00, 8.10382757e-01, -4.53718903e-01, 6.48535991e-04, -2.79078335e-02, 3.71621922e-03]), - np.array([ 3.47177656e+00, 8.10749061e-01, -4.68029699e-01, 6.58432223e-04, -2.83226533e-02, 3.71570242e-03]), - np.array([ 3.43402590e+00, 1.08780658e+00, 8.19500640e-01, 7.10970656e-04, -2.47671283e-02, -5.93700672e-03, 1.60441156e+03, 1.09887425e+00, 8.99148002e-01, 7.76337021e-04, -2.58189091e-02, 6.49661703e-03]), - np.array([ 1.71117023e+00, 4.59025857e-01, -1.94362700e-01, 3.00965823e-04, -1.12322280e-03, 9.56379292e-08]), - np.array([ 3.64416004e+00, 8.62769909e-01, -3.21101370e-01, 6.40903510e-04, -2.80785628e-02, 3.95648649e-03]), - np.array([ 3.43402590e+00, 1.08780658e+00, 8.19500640e-01, 7.10970656e-04, -2.47671283e-02, -5.93700672e-03, 1.60441156e+03, 1.09887425e+00, 8.99148002e-01, 7.76337021e-04, -2.58189091e-02, 6.49661703e-03]), - np.array([ 3.29983490e+00, 7.66801982e-01, -9.13027802e-01, 5.54599175e-04, -2.55836969e-02, 3.77239850e-03]), - ], - 'wind_wave_current': [ - np.array([ 1.51631881e+01, 5.72634727e+00, -8.60169827e-01, -2.23626764e-02, 4.10513406e-02, -1.30793500e-02]), - np.array([ 1.53251788e+01, 1.20396365e+01, -5.38169903e-01, -1.76586714e-02, 3.54288952e-02, 2.63027461e-03]), - np.array([ 1.53208390e+01, 1.20385389e+01, -5.52477030e-01, -1.79265275e-02, 3.59462192e-02, 2.62597199e-03]), - np.array([ 2.07240188e+01, 1.23286859e+01, 6.03838765e-01, -1.46117873e-02, 3.53753733e-02, -3.45751602e-02, 1.62239433e+03, 1.34043791e+01, 1.05470987e+00, -1.43695528e-02, 3.70825596e-02, 6.24445456e-02]), - np.array([ 5.85516544e+00, 3.77367023e+00, -2.09149016e-01, -1.42540233e-02, 2.66270816e-02, -8.22294356e-04]), - np.array([ 1.61530311e+01, 1.31163502e+01, -4.07075794e-01, -1.83365452e-02, 3.53819236e-02, 3.37922890e-03]), - np.array([ 2.07240188e+01, 1.23286859e+01, 6.03838765e-01, -1.46117873e-02, 3.53753733e-02, -3.45751602e-02, 1.62239433e+03, 1.34043791e+01, 1.05470987e+00, -1.43695528e-02, 3.70825596e-02, 6.24445456e-02]), - np.array([ 1.53567444e+01, 1.21013753e+01, -9.98317189e-01, -1.56975988e-02, 3.18765740e-02, 2.70113634e-03]), - ] -} def solveStatics(index_and_model, test_case_key, rtol=1e-05, atol=1e-10): ''' @@ -129,9 +91,26 @@ def solveStatics(index_and_model, test_case_key, rtol=1e-05, atol=1e-10): index, model = index_and_model testCase = cases4solveStatics[test_case_key] model.solveStatics(testCase) + r6 = np.array([]) for i, fowt in enumerate(model.fowtList): + if save_references: + desired_X0[test_case_key][index][6*i:6*(i+1)] = fowt.r6 + + # Compare results assert_allclose(fowt.r6, desired_X0[test_case_key][index][6*i:6*(i+1)], rtol=rtol, atol=atol) + if plot_diffs: + import matplotlib.pyplot as plt + width = 0.35 + labels = ['Surge', 'Sway', 'Heave', 'Roll', 'Pitch', 'Yaw'] + x = np.arange(len(labels)) + plt.figure() + plt.bar(x - width/2, fowt.r6, width, label='RAFT Calculated') + plt.bar(x + width/2, desired_X0[test_case_key][index][6*i:6*(i+1)], width, label='Previous Ref.') + plt.xticks(x, labels) + plt.legend() + plt.show() + def test_solveStatics_Wind(index_and_model): solveStatics(index_and_model, 'wind') @@ -152,174 +131,25 @@ def test_solveStatics_Wind_Wave_Current(index_and_model): 'loaded': {'wind_speed': 8, 'wind_heading': 30, 'turbulence': 0, 'turbine_status': 'operating', 'yaw_misalign': 0, 'wave_spectrum': 'JONSWAP', 'wave_period': 10, 'wave_height': 4, 'wave_heading': -30, 'current_speed': 0.6, 'current_heading': 15} } -desired_fn = { - 'unloaded': [ - np.array([0.00796903, 0.00796903, 0.03245079, 0.03383781, 0.03384323, 0.15347415]), - np.array([0.00782180, 0.00779927, 0.06073036, 0.03829455, 0.03823218, 0.01238992]), - np.array([0.00782029, 0.00779718, 0.06072388, 0.03804270, 0.03797990, 0.01238741]), - np.array([0.01074526, 0.00704213, 0.05083874, 0.03718830, 0.03746220, 0.01573330, 0.00756069, 0.00716294, 0.05085846, 0.03718910, 0.03751292, 0.01545850]), - np.array([0.00884301, 0.00884300, 0.05733308, 0.04002449, 0.04003508, 0.01253087]), - np.array([0.00767804, 0.00770107, 0.06063555, 0.03809081, 0.03801947, 0.01303503]), - np.array([0.01074526, 0.00704213, 0.05083874, 0.03718830, 0.03746220, 0.01573330, 0.00756069, 0.00716294, 0.05085846, 0.03718910, 0.03751292, 0.01545850]), - np.array([0.00841995, 0.00843999, 0.01358328, 0.0374836 , 0.03753538, 0.04995812, 0.43542245, 0.43659318, 1.16944889, 1.43151485, 1.43158417, 1.55760813]), - ], - 'loaded': [ - np.array([0.00730352, 0.00939103, 0.03246224, 0.03384297, 0.03390545, 0.1555763 ]), - np.array([0.00987260, 0.00712184, 0.06074470, 0.03805314, 0.03879976, 0.01324559]), - np.array([0.00986996, 0.00712007, 0.06073821, 0.03779950, 0.03855126, 0.01324305]), - np.array([0.01065943, 0.00720493, 0.05085334, 0.03762357, 0.03800233, 0.01769749, 0.00744181, 0.00644391, 0.05081630, 0.03648770, 0.03722345, 0.01325040]), - np.array([0.01002029, 0.00813464, 0.05733435, 0.03987943, 0.04028119, 0.01279485]), - np.array([0.00997641, 0.0071045 , 0.06066521, 0.03786162, 0.03862754, 0.01390027]), - np.array([0.01065943, 0.00720493, 0.05085334, 0.03762357, 0.03800233, 0.01769749, 0.00744181, 0.00644391, 0.05081630, 0.03648770, 0.03722345, 0.01325040]), - np.array([0.00768953, 0.01067194, 0.01452767, 0.03734246, 0.0379516 , 0.04997057, 0.43542912, 0.43660933, 1.16944895, 1.43151701, 1.4315858 , 1.55762490]), - ], -} -desired_modes = { - 'unloaded': [ - np.array([[ 9.99999999e-01, -5.75186507e-10, -3.66356915e-10, -8.67852276e-14, 9.99898193e-01, -2.99686750e-14], - [ 3.92738961e-10, -9.99999999e-01, -3.31616203e-17, 9.99898194e-01, 3.23260804e-14, 2.06096172e-03], - [ 7.45752595e-11, -2.85321785e-18, 1.00000000e+00, -2.72406265e-18, 2.31375465e-10, -1.10751480e-16], - [ 2.12335674e-14, -5.40653002e-05, 4.24138273e-19, -1.42689340e-02, -4.31499026e-16, -2.94481141e-05], - [-5.40646648e-05, 3.10972493e-14, -4.68816970e-12, -1.23789014e-15, 1.42689404e-02, -1.94677827e-16], - [ 1.95726867e-18, -5.58669353e-09, 9.44626575e-17, 4.97628953e-06, -2.81458719e-18, -9.99997876e-01]]), - np.array([[-9.99999807e-01, 4.86100318e-14, -1.63567304e-03, -5.45667034e-14, -9.89726132e-01, 2.04003988e-15], - [-3.37568579e-20, -9.99999728e-01, -6.29828842e-16, -9.90218873e-01, 1.25468775e-17, 5.86275118e-01], - [ 8.23145082e-05, -5.26031153e-18, 9.99998628e-01, -9.74821863e-16, -2.64733741e-02, 3.12143871e-18], - [ 6.39974802e-21, -6.48163950e-04, 1.35297744e-16, 1.39458388e-01, -2.50093227e-18, 1.89793501e-03], - [ 6.15814470e-04, -3.03812746e-17, -2.63383311e-04, -7.74519594e-15, -1.40503895e-01, 1.86798683e-17], - [ 3.49993342e-20, 3.51214780e-04, -2.70592359e-18, -4.23584082e-03, -7.96472948e-18, 8.10109797e-01]]), - np.array([[-9.99999804e-01, -2.02386208e-14, -1.58908175e-03, 7.04718771e-14, 9.89362815e-01, 9.80392867e-17], - [ 8.77787527e-18, 9.99999723e-01, -1.18099471e-15, 9.89868473e-01, 2.01310527e-15, 5.88357005e-01], - [ 8.36235365e-05, 5.46622703e-18, 9.99998703e-01, 1.48235884e-15, 2.64929776e-02, 4.87039683e-18], - [-1.74576623e-19, 6.54453986e-04, 1.45778172e-16, -1.41921601e-01, -3.91525643e-17, 1.90878244e-03], - [ 6.21062713e-04, 1.08784745e-17, -2.61844545e-04, 1.01884350e-14, 1.43036159e-01, -2.88892380e-17], - [-1.01366640e-20, -3.53400694e-04, -4.85827394e-18, 4.32042891e-03, -2.36973537e-18, 8.08599030e-01]]), - np.array([[ 7.07825719e-01, -3.15055001e-17, -1.32630905e-02, -2.19914192e-14, -8.64609540e-01, -4.24293074e-16, 7.06326558e-01, -7.31382701e-18, 9.61558420e-03, 1.32162934e-14, -4.93902244e-01, -4.29224066e-16], - [-4.89583244e-17, 7.85911667e-01, 4.52106432e-15, -8.56521395e-01, 5.28474752e-15, -7.93284272e-01, 3.76977173e-14, -6.14665922e-01, -5.22230082e-15, 5.25433719e-01, 1.64307174e-14, -6.54712295e-01], - [-7.76765072e-03, 5.73003997e-18, -7.96969430e-01, 2.78055517e-15, 1.88343250e-02, -1.51849968e-17, -7.58106566e-03, -4.04692741e-18, 6.03839362e-01, -1.60196034e-15, 5.13083496e-04, -1.30251428e-17], - [-3.34340760e-19, 4.27427506e-04, -3.85068942e-16, 1.40135770e-01, -7.45324253e-16, -2.90906806e-03, 2.04954676e-17, -3.25330035e-04, -5.30992268e-16, -8.63333133e-02, -2.79405527e-15, -2.68890829e-03], - [-5.37598733e-05, -1.30564706e-18, 2.92009853e-05, -4.24958991e-15, -1.69811876e-01, 1.64600958e-18, -1.75528113e-04, 9.68430673e-19, -6.94904252e-05, 2.46004337e-15, -8.77291683e-02, 2.51343153e-18], - [ 2.49224761e-19, -3.28472446e-03, 9.44014612e-18, -8.17009389e-03, 3.98091977e-17, -1.18508842e-01, -1.74458248e-16, 2.90949567e-03, 8.33507402e-18, 4.93133876e-03, 1.68009630e-16, -1.10277637e-01], - [-7.06301389e-01, 8.24649949e-17, 1.21359094e-02, -2.17933632e-16, 4.59748625e-01, -8.10522725e-17, 7.07804746e-01, -9.84864194e-17, 1.53870931e-02, 1.16752336e-14, -8.46545575e-01, 2.46067501e-16], - [-8.42294853e-18, 6.18325170e-01, -1.55808794e-17, -4.90097261e-01, 7.77558316e-15, 5.89473068e-01, -4.63212600e-15, 7.88774350e-01, -1.36301789e-17, -8.35220796e-01, -1.11866279e-14, -7.35135054e-01], - [-7.79477632e-03, 1.73669598e-18, -6.03751937e-01, 6.28609948e-16, 5.62953547e-02, 5.06431194e-18, 7.59532320e-03, -1.23691005e-19, -7.96899379e-01, 1.58470155e-15, -7.93424870e-02, -6.41876055e-18], - [-5.87906282e-20, 3.60238282e-04, 2.66938307e-18, 8.04358236e-02, -1.27892213e-15, 1.55576021e-03, -2.34040824e-18, 4.46937680e-04, 3.59783942e-18, 1.37275491e-01, 1.84260199e-15, -2.28372214e-03], - [ 3.48598674e-05, 1.02289764e-18, 3.66943933e-04, 1.51868457e-16, 9.33893614e-02, -5.08719895e-18, -2.05513389e-04, -6.32993020e-19, 4.20980484e-04, 2.10891028e-15, -1.59465553e-01, -3.61168296e-18], - [ 4.28338626e-19, 2.39454188e-03, -1.72295654e-19, -1.03376490e-03, 1.55565829e-17, -9.57409855e-02, -2.91825502e-17, 3.47247537e-03, -3.73375983e-19, -1.81895138e-03, -2.27130818e-17, 1.36947655e-01]]), - np.array([[-9.99999801e-01, 4.32308213e-11, -2.15245797e-05, 3.06546262e-13, -9.96191101e-01, 3.03420235e-16], - [-1.22552024e-20, 9.99999801e-01, -4.14910205e-17, -9.96191321e-01, -3.04541450e-15, -5.72125789e-04], - [-4.79589689e-08, 2.70444234e-18, -1.00000000e+00, 2.07959698e-16, -4.33883818e-06, 6.25433752e-18], - [-1.61378116e-19, 6.30844075e-04, 4.77016972e-18, 8.71943311e-02, 2.89012940e-16, -5.27335920e-06], - [ 6.30831210e-04, -2.72725959e-14, -1.89622571e-06, 2.68266047e-14, -8.71968520e-02, 6.32542432e-18], - [-2.62901456e-20, 4.48568328e-07, 6.85718339e-21, 4.40899871e-06, 3.64745019e-18, 9.99999836e-01]]), - np.array([[-9.99999914e-01, 3.79770604e-09, 2.39054240e-08, -3.37209297e-08, 9.89368685e-01, -4.18664171e-11], - [ 5.77230437e-08, -9.99999914e-01, 2.18001521e-14, 9.89368668e-01, 2.23458628e-08, -1.27751517e-04], - [-1.93864229e-08, -4.39490522e-14, -1.00000000e+00, 8.48488344e-14, 1.88865447e-07, -1.81884098e-12], - [ 2.39890348e-11, -4.15559849e-04, -2.21366154e-16, -1.45429153e-01, -3.28459973e-09, -1.88169419e-07], - [ 4.15563423e-04, -1.57641191e-12, 7.97546015e-10, -4.95664284e-09, 1.45429038e-01, 8.18946003e-14], - [ 2.45738819e-14, 9.12423593e-08, 1.23331054e-15, 2.47104974e-08, 1.00392225e-14, -9.99999992e-01]]), - np.array([[-7.07063968e-01, 1.71887064e-16, -1.30340226e-02, -2.82542470e-14, 6.94863002e-01, 3.85153580e-16, 7.07066034e-01, -6.53986496e-17, 1.25007531e-02, 2.80098589e-14, 6.92313443e-01, 5.76639921e-16], - [-7.25250255e-15, 7.07099398e-01, 1.75093624e-14, -6.97995773e-01, -3.82099078e-14, 6.98639459e-01, 7.80689701e-14, -7.07100871e-01, -1.97524808e-14, 6.97890097e-01, -2.17875817e-14, 6.96282021e-01], - [ 7.78086989e-03, -1.31547996e-19, -7.06986675e-01, 3.69809461e-15, -3.37914294e-02, 1.87852753e-17, -7.58851866e-03, -1.14893765e-18, 7.06996195e-01, -3.54499811e-15, -4.84772086e-02, 1.82168142e-17], - [-4.42008293e-18, 3.85533504e-04, -1.95389309e-16, 1.13310010e-01, 6.59117155e-15, 2.20799443e-03, 4.26954391e-17, -3.95913134e-04, -2.00243504e-16, -1.13574765e-01, 3.57431861e-15, 2.50916481e-03], - [ 4.66972697e-05, -6.69897247e-19, -2.08076011e-04, -5.37783516e-15, 1.26573873e-01, -7.03266775e-19, -1.90337265e-04, 7.23965014e-19, 1.52684219e-04, 5.23638666e-15, 1.35481349e-01, -4.06301593e-18], - [ 4.59941229e-17, -3.22196475e-03, 8.14219936e-18, -2.53785685e-03, -1.51955686e-16, 1.09079638e-01, -3.47492945e-16, 2.85012022e-03, -5.76771539e-18, 2.46481410e-03, -4.41443842e-17, 1.23225467e-01], - [ 7.07063969e-01, 1.23317808e-16, 1.30340204e-02, 5.92119539e-15, 6.94866599e-01, 5.63370023e-16, 7.07066037e-01, -2.39412617e-17, 1.25007650e-02, 7.52362237e-15, -6.92309081e-01, 1.94827127e-16], - [ 8.83463633e-17, -7.07099273e-01, -2.67391452e-17, -6.97934777e-01, 8.19753287e-15, -6.98638992e-01, -9.46449353e-15, -7.07100982e-01, -4.28411155e-18, -6.97951671e-01, -9.99882707e-15, 6.96282772e-01], - [ 7.78087658e-03, 3.67247159e-19, -7.06986551e-01, 1.17996039e-15, 3.37916947e-02, 1.50031146e-18, 7.58851869e-03, -5.80489109e-19, -7.06996319e-01, 6.76458394e-16, -4.84769765e-02, 8.65225494e-18], - [ 1.23387652e-19, -3.85533550e-04, 3.22484756e-18, 1.13300083e-01, -1.34298598e-15, -2.20798839e-03, -4.64803567e-18, -3.95913299e-04, 3.40496951e-18, 1.13584760e-01, 1.62276251e-15, 2.50916234e-03], - [-4.66966628e-05, 9.52249103e-19, 2.08075991e-04, 1.35742924e-15, 1.26574617e-01, 5.81538035e-18, -1.90337282e-04, -1.14034186e-18, 1.52684170e-04, 1.19298438e-15, -1.35480553e-01, 4.27926093e-19], - [-2.06368074e-18, -3.22196433e-03, 3.25247512e-19, 2.53764084e-03, -2.87786844e-17, 1.09079545e-01, -6.15608121e-17, -2.85012079e-03, -4.84193205e-19, 2.46503742e-03, 3.86906564e-17, -1.23225573e-01]]), - np.array([[ 1.41576155e-07, -2.00918444e-01, 1.29909556e-09, 1.70033008e-02, -1.02450086e-09, -2.94141399e-04, 1.97373778e-11, 8.02689584e-02, -4.15402741e-03, -1.82415333e-01, 3.83327164e-11, 6.91974572e-02], - [ 2.00956002e-01, 3.78495737e-07, -5.57456113e-03, -1.53894066e-09, 1.72267100e-02, 3.81843636e-12, -8.19326193e-02, -2.65821145e-11, 2.15015010e-13, 1.10517773e-09, -1.82001781e-01, -2.50365836e-13], - [-1.19315725e-10, 1.49877251e-05, 5.66737766e-11, 9.46963105e-04, -4.41452470e-12, 2.00295600e-01, 7.05817009e-13, 2.24106877e-03, 2.22288302e-01, -2.01405432e-03, 4.46744285e-13, 1.23376130e-02], - [ 1.04523090e-04, 1.97400508e-10, -1.99243722e-05, 3.24126365e-10, -3.54223580e-03, 3.53194891e-12, 4.22859597e-03, 1.38406459e-12, -1.12027194e-14, 1.11740907e-11, -1.83668951e-03, 8.74587696e-15], - [-7.06961506e-11, 9.91728028e-05, -7.20127404e-13, 3.54382466e-03, -2.16813160e-10, -6.88384814e-05, 1.01662285e-12, 4.14911475e-03, -3.39654133e-04, 1.74098040e-03, -3.78635631e-13, 4.78094025e-03], - [-7.12225004e-05, -7.78000871e-11, -7.49856627e-03, -1.16956900e-11, 1.36711283e-04, -5.84453089e-13, 1.28996291e-04, 2.88723245e-14, -3.76515360e-15, 1.17028966e-14, -1.31272739e-06, -3.92248624e-16], - [ 2.80219845e-03, -2.02562926e-01, 2.95511362e-01, -4.15266150e-02, -5.35983099e-03, 8.43167690e-04, -4.32525318e-03, 1.44695848e-02, 5.07047251e-03, 2.39651924e-01, -2.66848107e-01, -2.96824544e-02], - [ 2.01063160e-01, 4.90556889e-06, -1.76516899e-01, 3.22748475e-05, -3.81265886e-02, -8.25019979e-07, -9.78465342e-03, -1.46795359e-03, -3.54438289e-04, -2.65811277e-01, -6.78818505e-02, 1.08508822e-02], - [ 4.07003986e-03, -2.21465445e-03, -7.76158728e-04, -7.89301086e-02, -1.38278330e-01, 2.00815630e-01, 2.36758275e-01, -1.31123786e-01, -2.91985520e-01, 1.09175654e-02, 1.81635098e-02, 4.06554887e-02], - [ 1.02886273e-04, 7.16286290e-07, -2.52472557e-05, 2.14549269e-05, -3.49964489e-03, -3.58621907e-05, 6.16590143e-03, -9.97134686e-04, -1.61677910e-02, 7.57405296e-03, -1.31041466e-03, 4.88698511e-03], - [ 6.64714154e-07, 9.85010576e-05, -9.86009714e-06, 3.52640540e-03, -2.15272729e-05, -4.80402024e-05, -1.04578421e-03, 4.87092852e-03, 8.98155591e-03, 9.90289859e-03, -7.58996789e-03, 3.66521026e-03], - [-7.10499884e-05, 3.06058243e-07, -7.49995792e-03, 2.41348471e-06, 1.35511597e-04, -5.99073031e-08, 9.78308517e-05, -1.00590892e-04, -1.07459259e-04, -1.78289382e-02, 1.03351468e-02, 7.01495374e-04]]), - ], - - 'loaded': [ - np.array([[-9.64378242e-01, -2.63590752e-01, -2.10946483e-02, 6.67618956e-01, 7.11326547e-01, -3.97038343e-03], - [ 2.64226439e-01, -9.64567735e-01, -1.08535955e-02, -7.44333038e-01, 7.02378251e-01, 2.46425477e-03], - [ 1.25912062e-02, 1.12874097e-02, 9.99718461e-01, 5.36744834e-03, 2.17700278e-02, -4.08761745e-04], - [ 1.12508015e-05, -8.58285900e-05, 2.09146973e-04, 1.06044546e-02, -1.00067204e-02, -1.76052849e-04], - [ 5.54046589e-05, 2.84236886e-05, -4.10342190e-04, 9.52540836e-03, 1.01447352e-02, -8.89069168e-05], - [ 6.73636151e-04, -1.25989426e-03, 3.44483770e-05, 4.61085742e-03, -1.53377328e-03, 9.99988979e-01]]), - np.array([[ 9.82150856e-01, -1.87921630e-01, 4.07842531e-03, -2.55747246e-01, -9.61277765e-01, -1.95088862e-01], - [-1.88040577e-01, -9.82177055e-01, 2.19364068e-03, -9.56013224e-01, 2.41727181e-01, -3.54696639e-01], - [-4.42335800e-03, 3.65499013e-03, 9.99989268e-01, 1.52938349e-03, 2.70364948e-03, 5.97092474e-03], - [-1.77150592e-04, -5.11302213e-04, 7.18018030e-05, 1.38821901e-01, -3.27231465e-02, 1.96677683e-02], - [-8.84556439e-04, 8.96831659e-05, -1.18293930e-04, -3.66668232e-02, -1.28150299e-01, 1.14171188e-02], - [ 2.38840973e-04, -2.53960948e-04, -3.07164190e-06, -3.70754867e-03, 3.52357057e-03, 9.14099451e-01]]), - np.array([[ 9.82139356e-01, -1.87978504e-01, 4.09742411e-03, -2.55335162e-01, -9.61113534e-01, -1.86115374e-01], - [-1.88100651e-01, -9.82166170e-01, 2.20495571e-03, -9.55719194e-01, 2.41182127e-01, -3.60466674e-01], - [-4.42108632e-03, 3.65456219e-03, 9.99989165e-01, 1.69642242e-03, 2.90337493e-03, 5.93561528e-03], - [-1.78839975e-04, -5.15825845e-04, 7.15278350e-05, 1.41411099e-01, -3.32066770e-02, 2.00040562e-02], - [-8.92997676e-04, 9.06083742e-05, -1.17673782e-04, -3.72889317e-02, -1.30261073e-01, 1.15899907e-02], - [ 2.33228959e-04, -2.56262900e-04, -3.07295593e-06, -3.78629402e-03, 3.59110001e-03, 9.13704067e-01]]), - np.array([[ 7.70914018e-01, -1.17395863e-01, -1.61715593e-02, 4.59701692e-01, 7.57267114e-01, 1.15686564e-01, 5.92241261e-01, -2.11326383e-01, -4.84261186e-03, 2.91306009e-03, -6.28586978e-03, 1.77870103e-01], - [ 2.76336921e-03, 9.83111079e-01, 7.71148014e-04, -8.70214552e-01, 6.25819046e-01, -9.61018495e-01, 1.74059753e-01, -6.40952347e-02, 2.21741739e-04, 3.07456670e-03, 1.53015857e-02, -6.52865349e-02], - [-8.46849828e-03, 1.12234659e-03, -9.62918857e-01, -2.91133365e-02, -1.60565961e-02, -1.07370021e-02, -6.33313466e-03, 2.23523718e-03, -2.69267884e-01, 3.07129058e-03, 9.13867744e-03, -1.89938445e-03], - [-6.92466645e-06, 5.06740412e-04, -1.38450410e-04, 1.43646953e-01, -1.01646527e-01, -8.92085192e-03, 8.34784720e-05, -3.97573892e-05, -4.00085053e-05, -2.94989477e-04, -2.66978184e-03, 1.33226866e-04], - [-3.80000792e-05, -3.18718207e-05, -1.63568996e-05, 8.70645571e-02, 1.46136988e-01, -3.32403955e-03, -1.88439589e-04, 7.75417900e-05, -4.50382342e-05, -1.13345175e-03, -6.23085504e-03, 9.89278222e-05], - [ 1.32346905e-04, -3.03127923e-03, 5.28930412e-05, -1.05060309e-02, 2.84137592e-03, -2.24436041e-01, -2.93715708e-04, -7.33395067e-05, 1.54107755e-05, 1.22940365e-04, 3.12930602e-04, 3.93381356e-03], - [-6.35823018e-01, -1.39839802e-01, -4.12875454e-03, 4.64975038e-02, 5.38456530e-02, 4.25073519e-02, 6.90307833e-01, -3.26425122e-01, 1.63428644e-02, 2.68287842e-01, 9.07672647e-01, -1.31558228e-01], - [ 3.60619974e-02, 1.19588699e-02, 4.65390067e-04, -6.12538918e-03, -2.13691125e-03, 1.03129205e-01, -3.77271639e-01, -9.19045505e-01, -1.64956437e-03, 9.47996995e-01, -3.70527401e-01, 9.65489660e-01], - [-6.21316965e-03, -1.32552092e-03, 2.69272852e-01, -2.30252304e-03, -5.03775015e-03, 5.34681309e-04, 7.05692246e-03, -1.78745500e-03, -9.62912928e-01, 2.06635847e-02, 6.83944327e-02, 1.94739912e-04], - [ 5.73877577e-05, 1.73869447e-05, 1.55155496e-05, 7.34971902e-04, 3.91788360e-04, -3.59118324e-05, -2.45527237e-04, -4.91453005e-04, -6.20538865e-05, -1.60713894e-01, 5.82005468e-02, 3.92650678e-04], - [ 5.35217661e-05, 2.69720933e-05, -7.92408612e-05, 4.79170446e-03, 3.69617884e-03, -5.29046880e-05, -2.03450513e-04, -6.51449327e-05, 4.25820931e-04, 5.51040523e-02, 1.74216186e-01, -1.49517626e-03], - [ 1.48946042e-03, -4.11837504e-04, 8.78835414e-06, -1.37529855e-05, -3.50704978e-05, -6.31055822e-03, -2.13519130e-03, -5.14879469e-03, -3.15665253e-05, 1.47542156e-03, -4.49606559e-03, -1.20832552e-01]]), - np.array([[-9.77741876e-01, 2.09950631e-01, 2.76230850e-03, -2.07854275e-01, -9.75266721e-01, 2.91921676e-01], - [ 2.09804600e-01, 9.77711045e-01, 1.40426339e-03, -9.74214916e-01, 2.03478512e-01, -4.06817862e-01], - [ 1.42501361e-03, -1.18401614e-03, 9.99995197e-01, 2.06240846e-03, 2.64306495e-03, 2.22321096e-04], - [ 1.67601140e-04, 5.28776829e-04, -2.69224911e-05, 8.58048575e-02, -1.76247510e-02, 5.11905536e-03], - [ 7.73818988e-04, -1.14037326e-04, 5.77576300e-05, -1.83050449e-02, -8.44608048e-02, 2.62981713e-03], - [ 4.42085695e-04, 3.89143516e-04, -6.49296845e-07, -3.11056279e-04, 2.68359747e-04, 8.65591007e-01]]), - np.array([[ 9.83527134e-01, 1.80471442e-01, -4.88298639e-03, 2.67841917e-01, 9.71485993e-01, 2.13527661e-01], - [-1.80718441e-01, 9.83575038e-01, -2.62565425e-03, 9.51678067e-01, -1.91950641e-01, 6.71117230e-01], - [-3.83446971e-03, -3.12533093e-03, -9.99984624e-01, -1.90981785e-02, -2.11156901e-02, -2.29339345e-02], - [-1.51458336e-04, 3.08112455e-04, 5.20907681e-05, -1.43450080e-01, 2.71268169e-02, -1.33033871e-02], - [-6.53753201e-04, -5.97874078e-05, -1.04870491e-04, 4.03330044e-02, 1.34861636e-01, -8.03162331e-03], - [ 2.62054088e-04, 5.80525403e-04, 1.95961896e-05, 3.84016717e-04, -7.20568314e-04, -7.09394213e-01]]), - np.array([[-7.72780208e-01, 1.35468412e-01, -1.77495566e-02, 4.22842581e-01, -7.32826057e-01, 1.07921591e-01, 5.95578887e-01, -1.87722800e-01, 4.79726175e-03, -1.83129519e-03, -1.72205796e-02, -1.44056530e-01], - [-2.28519471e-03, -9.77326843e-01, -1.74843237e-04, -8.88837415e-01, -6.53268410e-01, -9.54807874e-01, 2.05369622e-01, -6.41688285e-02, 3.56670017e-05, -3.02582744e-03, 2.46120155e-02, 6.30228760e-02], - [ 8.50862335e-03, -1.27740285e-03, -9.69677742e-01, -2.66634251e-02, 5.60030809e-02, -1.43192612e-02, -6.36785160e-03, 1.98135470e-03, 2.43677208e-01, -3.31096809e-03, 1.06565881e-02, 1.48729311e-03], - [-2.14147548e-07, -5.13051234e-04, 2.28569369e-05, 1.46348523e-01, 1.03860372e-01, -8.38713717e-03, 1.11521615e-04, -4.39100546e-05, -3.88676030e-06, 3.89544548e-04, -4.17391596e-03, -1.20687744e-04], - [ 3.50229130e-05, 4.81508566e-05, -2.96471440e-04, 7.95770662e-02, -1.38834167e-01, -2.81132282e-03, -2.08014641e-04, 7.50030410e-05, 1.16277632e-04, 1.13920287e-03, -7.01170226e-03, -8.83950465e-05], - [-8.25205229e-05, 2.97095677e-03, 5.83651248e-05, -4.00418833e-03, -2.30212529e-03, -2.40166282e-01, -2.55349690e-04, -1.02689336e-04, -1.45133749e-05, -7.17160421e-05, 1.72592987e-04, -3.61621868e-03], - [ 6.33918522e-01, 1.62082701e-01, -3.39536374e-03, 5.09072525e-02, -5.43724190e-02, 8.05114239e-02, 7.01183592e-01, -2.94123355e-01, -1.51879157e-02, -2.87259623e-01, 9.22402696e-01, 2.36651590e-01], - [-2.89806557e-02, -1.40197163e-02, 6.27951672e-04, -7.98679610e-03, 2.09851086e-03, 1.10471065e-01, -3.33697652e-01, -9.34933041e-01, 2.50812940e-03, -9.42830766e-01, -3.36459026e-01, -9.52181619e-01], - [ 6.12262049e-03, 1.54700079e-03, 2.43717017e-01, -2.73706238e-03, 5.41124848e-03, 7.14441628e-04, 7.03656560e-03, -1.60801493e-03, 9.69722323e-01, 6.75971380e-03, 4.42384895e-02, 4.03303739e-03], - [-7.31124374e-05, -2.43839230e-05, -2.50078305e-05, 9.22017629e-04, -4.24008169e-04, 4.83394158e-06, -2.41322773e-04, -4.82461803e-04, -9.63686678e-05, 1.57899450e-01, 5.19950014e-02, -6.52497993e-04], - [-6.60885996e-05, -3.13030222e-05, -4.59073676e-06, 5.58053584e-03, -3.54713531e-03, -2.21919732e-05, -1.89441252e-04, -6.23442736e-05, -1.80039164e-04, -5.95345943e-02, 1.73855081e-01, 1.09011091e-03], - [-1.74789101e-03, 2.81715003e-04, -9.04124903e-07, 9.27870178e-05, 1.81765117e-06, -6.72796711e-03, -2.50526577e-03, -5.23512364e-03, -4.85249735e-06, 2.19802909e-03, 1.10782634e-05, 1.12199961e-01]]), - np.array([[-3.81040996e-02, 1.97621827e-01, -1.45871193e-03, -4.29332260e-03, -1.80104226e-02, -1.56121250e-03, -3.93378943e-02, 7.04549296e-02, 3.59908280e-03, 1.53793402e-01, -9.79465299e-02, 5.98808111e-02], - [-1.97126773e-01, -3.82146039e-02, -1.13257540e-03, -1.58555043e-02, 4.79166291e-03, -8.48222556e-04, 7.18765022e-02, 3.84910422e-02, 2.07828270e-03, 9.80945355e-02, 1.53399892e-01, 3.46776167e-02], - [ 7.53010775e-04, -9.14226408e-04, -1.05509414e-05, -4.51523534e-05, -2.05037715e-05, -2.00319487e-01, 5.29084356e-05, 2.24907595e-03, -2.22287513e-01, 2.01564491e-03, -8.95233630e-05, 1.23398411e-02], - [-8.19917355e-05, -2.78150106e-05, 1.51302836e-04, 3.42912623e-03, -9.25752774e-04, -1.62109785e-05, -3.70979076e-03, -1.99002294e-03, -1.69943076e-04, 9.39982833e-04, 1.55022094e-03, -2.39582702e-03], - [ 1.36620697e-05, -1.41454799e-04, 8.76801057e-05, -9.05461866e-04, -3.41086118e-03, 2.72665904e-05, -2.02954991e-03, 3.64110666e-03, 2.94301077e-04, -1.46586778e-03, 9.84777581e-04, 4.13715703e-03], - [-3.29795324e-05, 3.54090355e-05, 7.49218991e-03, -1.19582153e-04, 1.23381033e-04, -6.59706129e-07, -1.28776067e-04, 2.89801115e-06, -7.56892355e-11, 5.94404769e-08, 1.31775461e-06, 3.24301371e-08], - [-3.70275112e-02, 1.98574509e-01, -2.98172375e-01, 1.53463358e-02, 3.34647994e-02, -1.98691381e-03, -2.65303261e-03, 1.18792410e-02, -3.68615820e-03, -5.90272482e-02, 3.54117156e-01, -2.02923900e-02], - [-1.99231621e-01, -3.78758657e-02, 1.71836367e-01, 3.80128286e-02, -7.70941631e-03, -1.12979288e-03, 8.89160437e-03, 4.90527522e-03, -1.10015692e-03, 2.60268115e-01, -8.62692649e-02, 7.13964092e-04], - [-2.75387624e-03, 1.19144983e-03, 3.91235803e-03, 1.54221687e-01, 4.07172432e-02, -2.00534690e-01, -1.42027404e-01, -2.26337540e-01, 2.97622762e-01, -1.82140470e-02, -9.68214888e-03, 7.65549587e-02], - [-8.08896956e-05, -2.81244485e-05, 1.55385552e-04, 3.38227559e-03, -9.35371198e-04, 1.96093540e-05, -4.91083319e-03, -3.78333290e-03, 1.63237954e-02, -5.66664104e-03, 5.18631945e-03, 5.77813403e-03], - [ 1.30517961e-05, -1.40786513e-04, 9.79116570e-05, -8.80083422e-04, -3.39959193e-03, 6.53932129e-06, -1.46954102e-03, 4.76398893e-03, -9.22076310e-03, -4.32314678e-03, 1.18124435e-02, 4.00577615e-04], - [-3.30784297e-05, 3.48839563e-05, 7.49385452e-03, -1.19010103e-04, 1.20897135e-04, -5.93981173e-07, -5.56355237e-05, -5.69695975e-05, 6.21806946e-05, 9.49134420e-03, -1.83382208e-02, 4.04019856e-04]]), - ], -} +# unpack reference values +reference_values = load_yaml(os.path.join(os.path.dirname(__file__), 'test_model_reference_values.yaml')) +desired_modes = reference_values['desired_modes'] +desired_fn = reference_values['desired_fn'] +desired_X0 = reference_values['desired_X0'] +print('here') def solveEigen(index_and_model, test_case_key): index, model = index_and_model testCase = cases4solveEigen[test_case_key] model.solveStatics(testCase) fns, modes = model.solveEigen() + + if save_references: + desired_fn[test_case_key][index] = fns[:12] + desired_modes[test_case_key][index] = modes[:12, :12] + + # Compare results assert_allclose(fns[:12], desired_fn[test_case_key][index], rtol=1e-05, atol=1e-5) # Compare the 12 first natural frequencies. That's all modes for the 2-unit array of rigid turbines and enough for the flexible tests # assert_allclose(modes[:12, :12], desired_modes[test_case_key][index], rtol=1e-05, atol=1e-5) # this one is too sensitive to machine precision because there are some very small values @@ -400,25 +230,42 @@ def test_analyzeCases(index_and_model, plotPSDs=False, flagSaveValues=False): To run as a script. Useful for debugging. ''' if __name__ == "__main__": - index = 0 - model = create_model(list_files[index]) - test_solveStatics_Wind((index,model)) + # When saving reference values, run all test cases + # When testing, just do first one to save time + if save_references: + test_indices = range(len(list_files)) + else: + test_indices = range(1) + + + for index in test_indices: + + model = create_model(list_files[index]) + test_solveStatics_Wind((index,model)) + + model = create_model(list_files[index]) + test_solveStatics_Wave((index,model)) - model = create_model(list_files[index]) - test_solveStatics_Wave((index,model)) + model = create_model(list_files[index]) + test_solveStatics_Current((index,model)) - model = create_model(list_files[index]) - test_solveStatics_Current((index,model)) + model = create_model(list_files[index]) + test_solveStatics_Wind_Wave_Current((index,model)) - model = create_model(list_files[index]) - test_solveStatics_Wind_Wave_Current((index,model)) + model = create_model(list_files[index]) + test_solveEigen_unloaded((index,model)) - model = create_model(list_files[index]) - test_solveEigen_unloaded((index,model)) + model = create_model(list_files[index]) + test_solveEigen_loaded((index,model)) - model = create_model(list_files[index]) - test_solveEigen_loaded((index,model)) + model = create_model(list_files[index]) + test_analyzeCases((index,model), plotPSDs=True, flagSaveValues=save_references) # Set flagSaveValues to True to save new true values - model = create_model(list_files[index]) - test_analyzeCases((index,model), plotPSDs=True, flagSaveValues=False) + if save_references: + # # pack reference values into a yaml file + reference_values = {} + reference_values['desired_modes'] = desired_modes + reference_values['desired_fn'] = desired_fn + reference_values['desired_X0'] = desired_X0 + write_yaml(reference_values, os.path.join(os.path.dirname(__file__), 'test_model_reference_values.yaml')) diff --git a/tests/test_model_reference_values.yaml b/tests/test_model_reference_values.yaml new file mode 100644 index 0000000..dead1bb --- /dev/null +++ b/tests/test_model_reference_values.yaml @@ -0,0 +1,191 @@ +desired_modes: + unloaded: + - - [0.999999998538506, -7.475590173786417e-10, -3.6596400665388694e-10, -1.1439633905375402e-13, 0.9998981934872035, -2.1156221202174168e-13] + - [3.949030147124046e-10, -0.9999999985384718, -8.390980294720461e-17, 0.9998981935664041, 3.545835046533473e-14, 0.002060961715749017] + - [7.457546175950836e-11, -2.8661251909071223e-18, 1.0, -2.2266201852118406e-18, 2.3137540565835567e-10, -2.1055345553309557e-16] + - [2.1350567575085224e-14, -5.4065300215384966e-05, 1.0347752562239379e-18, -0.014268934013389132, -4.761355756415705e-16, -2.9448114071725884e-05] + - [-5.406466480463969e-05, 4.041658992497015e-14, -4.683601377273026e-12, -1.632002546626239e-15, 0.01426894043110862, 1.0919873387592742e-16] + - [2.061943041960001e-18, -5.58669352884591e-09, 1.5239586241038632e-16, 4.9762895317274865e-06, -4.5010039640250574e-18, -0.9999978757825513] + - - [-0.9999998069984113, -1.007198417235715e-14, -0.0016356730388596935, 6.81068950192634e-14, -0.9897261318296857, 2.9847873543958164e-15] + - [-1.6342496586257366e-20, 0.9999997282657987, -3.0491509974808385e-16, -0.9902188725433455, 6.074241348220285e-18, 0.5862751179457394] + - [8.231450822007778e-05, -3.336849516958797e-20, 0.9999986276005289, 1.5607820876305767e-15, -0.02647337410078697, 9.243257485206612e-19] + - [-2.62553839610015e-20, 0.0006481639503529276, -1.2406434881898048e-16, 0.13945838845877143, 6.944838269270154e-18, 0.0018979350096018238] + - [0.0006158144702181011, 7.798821780881598e-18, -0.00026338331105019245, 9.683388645048972e-15, -0.1405038947402081, 3.922664217568392e-17] + - [3.9906087005610055e-20, -0.00035121478038385473, 5.482381170980369e-18, -0.004235840821849063, -9.147254419949081e-18, 0.8101097974474871] + - - [-0.9999998036440861, 1.3966101439375726e-14, -0.0015890817478726306, -5.095475907168376e-14, -0.9893628148401817, 1.8452870141704656e-15] + - [1.089128926430564e-19, -0.9999997233989267, 2.133729695835681e-15, 0.9898684726655705, -4.0518259768599704e-17, 0.58835700473232] + - [8.362353647117721e-05, -3.978397826450194e-20, 0.9999987031274756, -1.0170306915554366e-15, -0.026492977645381645, 1.0866297534632605e-17] + - [-8.131668010134818e-20, -0.000654453985777987, -1.1800471065369367e-16, -0.1419216005995081, 1.9581775908774696e-17, 0.001908782439518193] + - [0.0006210627126410418, -9.436953667561711e-18, -0.00026184454484254376, -7.373202501617321e-15, -0.14303615887947083, 4.9284972249079346e-17] + - [-1.5108794056058222e-20, 0.0003534006943176389, 4.5485799032655975e-18, 0.004320428914401321, 3.446830945859361e-18, 0.8085990301329894] + - - [-0.7078257192498456, -3.2460931655162717e-16, 0.01326309047234236, 2.6277086971289215e-14, -0.8646095399647227, 1.657194744099125e-15, -0.7063265581825235, 1.7902686249462196e-16, -0.009615584202414923, 1.598250420869565e-14, 0.49390224364954777, -1.6737554810078913e-15] + - [-8.664747826205286e-16, 0.7859116673327539, -7.071446816444395e-15, -0.8565213954938223, -2.5226999772268687e-14, 0.7932842723779618, -3.09526400973671e-14, -0.6146659224552624, 2.701931683909389e-15, -0.5254337181111058, 1.0095179508821845e-14, -0.654712294753999] + - [0.0077676507221049775, 2.562467006876533e-18, 0.7969694302254319, -1.9252482375740884e-15, 0.01883432495710895, -4.6657899392003976e-17, 0.007581065655576986, -1.2762908844051492e-18, -0.6038393622977697, -1.1075447154934715e-15, -0.0005130834958486119, 4.480746888639812e-17] + - [-5.23762955991162e-19, 0.0004274275062394947, 9.239354193798327e-18, 0.14013576976225614, 4.1284451946024775e-15, 0.0029090680556264443, -1.6437873246475017e-17, -0.00032533003514529204, -9.876994893048674e-18, 0.08633331312929376, -1.6528957210684422e-15, -0.0026889082941871285] + - [5.375987325803156e-05, 5.516172302206919e-19, -2.920098528637333e-05, 5.048769279504637e-15, -0.169811876260432, 2.2750657295389667e-17, 0.00017552811292386838, -4.531914956018861e-19, 6.949042522260928e-05, 3.0065577217737073e-15, 0.08772916827183258, -1.1723776720646129e-17] + - [6.389744198880372e-18, -0.003284724464494821, -5.130535016649855e-18, -0.008170093895527543, -1.3760887475439046e-16, 0.11850884245547447, 1.4456611061572853e-16, 0.0029094956749014383, -1.5190911134224776e-18, -0.004931338752855338, 9.996451600187776e-17, -0.1102776366561556] + - [0.7063013890171237, -3.0237939353245416e-16, -0.012135909445295951, 6.508591565871947e-17, 0.45974862534365246, -4.960575028407415e-16, -0.7078047461476198, 1.394314619601722e-16, -0.015387093069804835, 8.308932801164885e-15, 0.8465455751116704, 1.0309843194428024e-15] + - [1.814313316858291e-17, 0.6183251696629668, 2.090385405416318e-18, -0.4900972600507422, -5.437102528479499e-15, -0.5894730681556614, 3.7987578495495484e-15, 0.7887743498168713, -6.4587462017807396e-18, 0.8352207970831077, -7.841539592007851e-15, -0.7351350544192998] + - [0.007794776317877744, -3.997712283582223e-18, 0.60375193740365, -4.970972349250065e-16, 0.05629535471468878, -2.792712512653442e-18, -0.007595323204988581, 5.764091855629845e-19, 0.7968993790897587, 9.451599683449392e-16, 0.07934248697186277, 1.7418669335508946e-17] + - [3.7767293195346725e-22, 0.0003602382822025007, 6.149135545478321e-19, 0.08043582336919354, 8.938463358517047e-16, -0.0015557602128212938, 1.9154131342711396e-18, 0.0004469376799287712, 6.775335506597958e-19, -0.13727549071085549, 1.2964989512223138e-15, -0.00228372214258427] + - [-3.4859867417583934e-05, -4.806916387166461e-20, -0.00036694393305001393, -1.5298738553904946e-16, 0.09338936137741709, -1.7830907019873897e-18, 0.0002055133886807601, -1.491861723479182e-19, -0.0004209804843693563, 1.4936236969105088e-15, 0.15946555276163132, 7.197470494996272e-18] + - [-2.922182054658622e-19, 0.0023945418796659395, -1.3285723480728585e-19, -0.0010337649000756114, -1.2433896221890585e-17, 0.09574098552861267, 2.428216972739002e-17, 0.003472475369193961, -1.7269919711831764e-19, 0.001818951377801616, -2.0179720441563265e-17, 0.1369476546012379] + - - [-0.9999998010214384, 4.2125329601049834e-11, 6.720584618560238e-07, 1.0183617898659323e-13, 0.9961911000887383, 9.695062851376096e-16] + - [2.3643559396872967e-20, -0.9999998010068073, 1.3893875822026676e-15, 0.9961913199844435, -5.928826938797322e-15, 0.0005721253664705497] + - [-4.795896179641257e-08, 2.6899373415163616e-18, -0.99999999999977, 1.3243472928235842e-16, 4.338851864173477e-06, -1.4835975025751056e-17] + - [-3.005242776242525e-19, -0.0006308613271233352, -5.55333632473864e-19, -0.08719434595741737, 4.776817754732756e-16, 5.273379838700747e-06] + - [0.0006308383957988214, -2.6573666716277268e-14, 9.131985570482705e-08, 8.911313122589692e-15, 0.08719685822989122, 3.821014026111451e-17] + - [-1.016476610254829e-19, -5.759510481759438e-07, 1.6602673875241892e-16, -4.55081169651412e-06, -1.4024844398057265e-17, -0.9999998363223649] + - - [-0.9999999132605689, -5.096567521181939e-14, -0.0018054210184476642, 5.122569705786822e-14, 0.9886672974339716, 2.5207767966585253e-15] + - [-2.81059285488422e-19, 0.9999998764967438, -8.579649007402898e-16, -0.9892754653844987, -1.69585270340095e-16, 0.4804414378515895] + - [-0.00012804174988840069, -7.591558774009438e-18, 0.9999983352026129, 1.166513017739418e-15, 0.028107162850151315, 1.4305054776858168e-17] + - [9.877071694657786e-21, 0.0004383214826508795, 7.170600973896269e-17, 0.1459931876720873, 9.107635293993e-18, 0.002258793321181367] + - [0.0003963384477054516, 2.0422299127681962e-17, -0.00026466384130828714, 7.644866083765732e-15, 0.14746851318543072, 5.62895676962395e-18] + - [1.4548385820291136e-20, -0.00023426646132516333, -3.462709817264083e-17, -0.004476912063714543, 2.790676837518773e-18, 0.8770239008418352] + - - [-0.7078257192498456, -3.2460931655162717e-16, 0.01326309047234236, 2.6277086971289215e-14, -0.8646095399647227, 1.657194744099125e-15, -0.7063265581825235, 1.7902686249462196e-16, -0.009615584202414923, 1.598250420869565e-14, 0.49390224364954777, -1.6737554810078913e-15] + - [-8.664747826205286e-16, 0.7859116673327539, -7.071446816444395e-15, -0.8565213954938223, -2.5226999772268687e-14, 0.7932842723779618, -3.09526400973671e-14, -0.6146659224552624, 2.701931683909389e-15, -0.5254337181111058, 1.0095179508821845e-14, -0.654712294753999] + - [0.0077676507221049775, 2.562467006876533e-18, 0.7969694302254319, -1.9252482375740884e-15, 0.01883432495710895, -4.6657899392003976e-17, 0.007581065655576986, -1.2762908844051492e-18, -0.6038393622977697, -1.1075447154934715e-15, -0.0005130834958486119, 4.480746888639812e-17] + - [-5.23762955991162e-19, 0.0004274275062394947, 9.239354193798327e-18, 0.14013576976225614, 4.1284451946024775e-15, 0.0029090680556264443, -1.6437873246475017e-17, -0.00032533003514529204, -9.876994893048674e-18, 0.08633331312929376, -1.6528957210684422e-15, -0.0026889082941871285] + - [5.375987325803156e-05, 5.516172302206919e-19, -2.920098528637333e-05, 5.048769279504637e-15, -0.169811876260432, 2.2750657295389667e-17, 0.00017552811292386838, -4.531914956018861e-19, 6.949042522260928e-05, 3.0065577217737073e-15, 0.08772916827183258, -1.1723776720646129e-17] + - [6.389744198880372e-18, -0.003284724464494821, -5.130535016649855e-18, -0.008170093895527543, -1.3760887475439046e-16, 0.11850884245547447, 1.4456611061572853e-16, 0.0029094956749014383, -1.5190911134224776e-18, -0.004931338752855338, 9.996451600187776e-17, -0.1102776366561556] + - [0.7063013890171237, -3.0237939353245416e-16, -0.012135909445295951, 6.508591565871947e-17, 0.45974862534365246, -4.960575028407415e-16, -0.7078047461476198, 1.394314619601722e-16, -0.015387093069804835, 8.308932801164885e-15, 0.8465455751116704, 1.0309843194428024e-15] + - [1.814313316858291e-17, 0.6183251696629668, 2.090385405416318e-18, -0.4900972600507422, -5.437102528479499e-15, -0.5894730681556614, 3.7987578495495484e-15, 0.7887743498168713, -6.4587462017807396e-18, 0.8352207970831077, -7.841539592007851e-15, -0.7351350544192998] + - [0.007794776317877744, -3.997712283582223e-18, 0.60375193740365, -4.970972349250065e-16, 0.05629535471468878, -2.792712512653442e-18, -0.007595323204988581, 5.764091855629845e-19, 0.7968993790897587, 9.451599683449392e-16, 0.07934248697186277, 1.7418669335508946e-17] + - [3.7767293195346725e-22, 0.0003602382822025007, 6.149135545478321e-19, 0.08043582336919354, 8.938463358517047e-16, -0.0015557602128212938, 1.9154131342711396e-18, 0.0004469376799287712, 6.775335506597958e-19, -0.13727549071085549, 1.2964989512223138e-15, -0.00228372214258427] + - [-3.4859867417583934e-05, -4.806916387166461e-20, -0.00036694393305001393, -1.5298738553904946e-16, 0.09338936137741709, -1.7830907019873897e-18, 0.0002055133886807601, -1.491861723479182e-19, -0.0004209804843693563, 1.4936236969105088e-15, 0.15946555276163132, 7.197470494996272e-18] + - [-2.922182054658622e-19, 0.0023945418796659395, -1.3285723480728585e-19, -0.0010337649000756114, -1.2433896221890585e-17, 0.09574098552861267, 2.428216972739002e-17, 0.003472475369193961, -1.7269919711831764e-19, 0.001818951377801616, -2.0179720441563265e-17, 0.1369476546012379] + - - [2.2275461020689743e-07, 0.20091844446099566, 2.3149782963507428e-10, 0.017003300906726915, -1.4031589072287177e-09, -0.00029414131170085733, -2.3805681940998242e-11, 0.08026895843625013, -0.004154027409876467, -0.18241533285311337, -1.4923328973783736e-11, -0.06919745715210543] + - [-0.2009560024287473, 1.9231723343676808e-07, 0.005574565453736932, 6.768097705973371e-13, -0.017226709908032174, 1.0551086115134854e-10, 0.08193261934115746, 7.181797248962614e-12, 8.609166792814306e-13, -5.724734485515203e-10, -0.1820017812637096, 2.704489790626077e-13] + - [5.119090908544846e-11, -1.4987754799626294e-05, -7.773923997146869e-11, 0.0009469630855178482, -1.1506582713922392e-10, 0.20029560044132474, -8.845667149702564e-13, 0.002241068771815112, 0.22228830247363734, -0.0020140543245073038, -1.5539664391877088e-13, -0.012337613007640066] + - [-0.00010452308694487243, 9.925334822828786e-11, 1.9924379719575893e-05, -5.353887129045473e-12, 0.0035422357989350604, 3.943991210662978e-12, -0.004228595967681969, -3.488266371627302e-13, 8.741228951089695e-15, -5.762408039279045e-12, -0.0018366895096773581, -1.9160308082861295e-14] + - [-1.0921731764883673e-10, -9.917280461420939e-05, -3.0583733602060824e-13, 0.003543824661985729, -2.9197507817975547e-10, -6.883848104218296e-05, -1.2370649963188215e-12, 0.004149114751066155, -0.00033965413292310703, 0.0017409804043419376, 1.2570815643733427e-13, -0.004780940245365752] + - [7.12225994987692e-05, -1.1812052139429904e-10, 0.007498566268679295, -4.449125299622424e-14, -0.00013671128321048225, 1.5546333783357376e-12, -0.000128996291443016, -4.030180251271026e-14, 6.341230164834121e-15, -3.3921141349475158e-15, -1.312727389401493e-06, 5.0315186979494717e-17] + - [-0.0028018350431412613, 0.20256293422634122, -0.2955113599508015, -0.04152661534662352, 0.005359836972743977, 0.0008431676879060811, 0.00432525318298727, 0.014469584776987827, 0.005070472508481684, 0.23965192112328113, -0.26684810665471564, 0.029682454387431504] + - [-0.20106315756252116, -4.334310505168903e-06, 0.1765169031873765, 3.227121436153187e-05, 0.038126588704410554, -8.248630296415083e-07, 0.00978465341657519, -0.0014679535882732078, -0.0003544382887549867, -0.26581127729178367, -0.06788185055407532, -0.010850882230296925] + - [-0.004070035768057976, 0.0022146660124144567, 0.000776159024874643, -0.07893012150645838, 0.13827834102410827, 0.2008156296921574, -0.2367582751939265, -0.13112378563404484, -0.2919855201114891, 0.010917565527071897, 0.018163509811617674, -0.04065548871017073] + - [-0.00010288627129979573, -7.159942785702578e-07, 2.5247263141612684e-05, 2.145460137398509e-05, 0.0034996448860048317, -3.5862190324494707e-05, -0.006165901429604412, -0.0009971346889789214, -0.016167791014345043, 0.007574052945495441, -0.0013104146586104277, -0.004886985110688771] + - [-6.648926925582306e-07, -9.850105745448436e-05, 9.86009614235361e-06, 0.003526405397239676, 2.1526766571588376e-05, -4.80402020050461e-05, 0.0010457842110628511, 0.004870928523219405, 0.008981555909371705, 0.00990289851635872, -0.007589967890178822, -0.003665210264823419] + - [7.105008703736498e-05, -3.0625369096868046e-07, 0.007499957918127968, 2.4134962621142923e-06, -0.00013551159743385686, -5.990517906918394e-08, -9.783085171402762e-05, -0.00010059089178422787, -0.00010745925886316674, -0.0178289380635695, 0.010335146827349866, -0.0007014953741448257] + loaded: + - - [-0.9643332049983259, -0.26378693719439356, -0.020919056821545403, 0.6868139604359199, 0.7214976941271865, -0.003924793178772005] + - [0.26439284618783016, -0.9645145771462704, -0.011123176030419141, -0.7266541744397492, 0.6919256256422299, 0.002525540435091356] + - [0.012546304181155566, 0.011249567137593907, 0.9997191887883181, 0.006019187188141142, 0.021789879015489396, -0.00013878041878891633] + - [1.065669542861305e-05, -8.589444596719953e-05, 0.00021280823880876444, 0.010352586665593749, -0.009858137499846644, -0.00017480496623887963] + - [5.554711328171262e-05, 2.7428703999779786e-05, -0.0004074565802309962, 0.009799125822337381, 0.010289828332611706, -9.088718378509733e-05] + - [0.0006925855196001322, -0.0012334289519159297, 1.66405889021256e-05, 0.004567820887060621, -0.0014641308587920632, 0.9999890797237505] + - - [0.9819067760297955, -0.18925984800286355, 0.004082857161894572, -0.24662378538968294, -0.9600472343224777, -0.009933362500452715] + - [-0.18931113005376324, -0.981919992232044, 0.0022176953111550635, -0.958405386691218, 0.2465903164252941, -0.326073386364123] + - [-0.004421265718331785, 0.0036785788344105555, 0.9999891965219077, 0.0017876485258382783, 0.002662213820160484, -0.0016221304396658379] + - [-0.00017384151170331318, -0.0005106253569406949, 7.057047134616578e-05, 0.13919588452959733, -0.03329864165180402, 0.02038714846229641] + - [-0.0008891679206057332, 8.703405570184695e-05, -0.00011815699816958697, -0.035256686154023636, -0.12796183669969874, 0.011671836425355327] + - [0.00010389189627766871, -0.00019629959929528013, 1.7619887286470906e-06, -0.0037549121865070433, 0.0035220938652118883, 0.9449989291630658] + - - [0.9818949103383972, -0.18931869508356966, 0.0041018530332886825, -0.24622478706433418, -0.9598820097025333, -0.0006210078531647782] + - [-0.18937268041523067, -0.9819086466010449, 0.002228788313888154, -0.9581046462234526, 0.24606063398086878, -0.33161433374311183] + - [-0.004418899197930995, 0.0036781626163990824, 0.9999890942131617, 0.0019561669335420554, 0.0028624180868238374, -0.001652679280474444] + - [-0.00017547135897562658, -0.0005151346043737997, 7.030431624765481e-05, 0.14179229740262128, -0.033791552399899956, 0.020703198784512676] + - [-0.0008976962218699214, 8.791945155201514e-05, -0.00011752994431318816, -0.03585044521978826, -0.1300682355736177, 0.01183172286762546] + - [9.82093462517511e-05, -0.00019861579813545104, 1.7609045866583964e-06, -0.0038346454743355724, 0.0035893590270626254, 0.943111978797124] + - - [0.7713658264092279, -0.1126516804161742, -0.016193889811649632, 0.47155439024156504, 0.7645782564209045, 0.10690960827214546, 0.5903341661371391, -0.21712918042258517, -0.004772208309983168, 0.0025765763669278996, -0.006317976960335321, 0.19417953111918082] + - [0.00232532490868412, 0.9843485194949126, 0.0007623969350332192, -0.863727203476694, 0.6167086373918115, -0.9621409830855421, 0.16706964968534302, -0.06349859426445147, 0.0002150626797956221, 0.0030249189868581648, 0.014728634097692064, -0.06573867560535934] + - [-0.008474660334862334, 0.0010829732851703818, -0.9640692962213072, -0.029087027856017304, -0.01677433280904195, -0.009952651212562794, -0.006311893973566868, 0.0022966242917233366, -0.26511662058565577, 0.0030696637249748716, 0.009076099402887627, -0.0020960982587516536] + - [-5.9006124828971045e-06, 0.0005076728165153417, -0.0001366276058765607, 0.14253052671403132, -0.10022157968131495, -0.00893396132267747, 8.030728610553565e-05, -3.9604653001012315e-05, -3.87454372113178e-05, -0.0002865604727800466, -0.0025737472124743106, 0.0001343569034888802] + - [-3.81640220203001e-05, -3.092058546976476e-05, -1.68617807410025e-05, 0.08946292596933855, 0.14744853756350693, -0.0033458705216699333, -0.000187544633216463, 7.986128624705389e-05, -4.508188696137076e-05, -0.0011442421466271878, -0.006204214256899566, 0.00010334610440725486] + - [0.00011991126049802597, -0.0030268860228336173, 4.9594116252329615e-05, -0.010472452837290524, 0.0027331505699294224, -0.22477753325526004, -0.00030299261874738425, -6.737912239279358e-05, 1.4260402535971538e-05, 0.00012079697674530652, 0.0003012448860008987, 0.003957516266669997] + - [-0.6352124457018535, -0.13496253556068755, -0.004044155479449091, 0.047622734409052674, 0.0545111111790405, 0.038393895644153346, 0.687550402075552, -0.3355870618701558, 0.01631168150277567, 0.26180467589454776, 0.9048257723272785, -0.12451932098082619] + - [0.037174204116397436, 0.011845104520827755, 0.00047423134710758555, -0.00629032835629788, -0.002141542294863081, 0.10308153979766493, -0.3882958432032443, -0.9144229171306618, -0.0017052155003016204, 0.9498049981985859, -0.3776042166845886, 0.9631381823216342] + - [-0.006196620651079303, -0.0012731146481713956, 0.26512442541759806, -0.0023534433880713253, -0.005105764755220074, 0.0005188450488593906, 0.007045151883683445, -0.0018145809302960163, -0.9640649293883132, 0.020225783331213627, 0.06812370636170216, 0.000835710256633445] + - [5.714347891939644e-05, 1.686339866038127e-05, 1.5028356009981583e-05, 0.00075049101291444, 0.00038073248291608055, -3.593464788138298e-05, -0.0002497135253895754, -0.00048623411758988807, -6.227208248597054e-05, -0.1612312847960613, 0.0591368485192198, 0.0003833496656052742] + - [5.473806047572799e-05, 2.5583670678852518e-05, -7.737335574984773e-05, 0.004887363891255088, 0.0037416481686425584, -5.638823810327758e-05, -0.0002056556186468566, -6.906700953089171e-05, 0.0004260568833168574, 0.05380737844948939, 0.17367357185972587, -0.0015249662366894994] + - [0.0015303525486057752, -0.00042806985089815093, 1.00808944372531e-05, -8.376328057292354e-06, -2.4304149026354746e-05, -0.006315880653806154, -0.0020916389652703123, -0.005106779788014245, -3.655219015314506e-05, 0.0015218008536138311, -0.00451986916180392, -0.1216933091624699] + - - [-0.9777473731427855, 0.20992455474718855, 0.0027343979193711703, -0.20788295014781813, -0.9752827522737059, 0.29084918440258983] + - [0.2097790047949048, 0.97771664694234, 0.001401174487600766, -0.9742088772652512, 0.20340072478808754, -0.4063481313207705] + - [0.0014224385353323724, -0.0011814026474465445, 0.9999952779695485, 0.0020578017060753784, 0.0026375051545203605, 0.00023295148913737268] + - [0.00016751865992523552, 0.0005289175473032963, -2.6868574699608758e-05, 0.08580353282364149, -0.01761844563536619, 0.005112569225519862] + - [0.0007734083266390976, -0.00011405745400808049, 5.5626605549180365e-05, -0.018307521631850295, -0.08446455186942663, 0.0026261425244559658] + - [0.00044034681148824817, 0.00038875561987482325, -6.632128560303326e-07, -0.0003104097917096299, 0.00026775092175013984, 0.8661725341116662] + - - [0.9876276635511744, -0.15663992081899994, 0.004859012794584065, -0.23889621944979078, -0.9632010924915354, 0.04881932250337079] + - [-0.1567291901862077, -0.9876502419679457, 0.001861958028438775, -0.9593713240745975, 0.23115913745597538, -0.3639513151345423] + - [-0.005196804265962195, 0.0032805689870419406, 0.9999864545641295, 0.0024234531567990983, 0.008741240004357444, -0.0010638303939439124] + - [-0.00011507350686239063, -0.0003181621592013994, 7.388195231067438e-05, 0.14587784993879335, -0.032854946550231405, 0.0199712548091622] + - [-0.0007342329179187507, 4.502499306849694e-05, -9.130486506507696e-05, -0.03511709737929154, -0.13281631526873355, 0.011614344069876036] + - [4.189928221643817e-06, -0.0002633613245836908, 3.2206119545760696e-07, -0.003978456941638296, 0.0036163797541912657, 0.9298501159973126] + - - [0.7713658264092279, -0.1126516804161742, -0.016193889811649632, 0.47155439024156504, 0.7645782564209045, 0.10690960827214546, 0.5903341661371391, -0.21712918042258517, -0.004772208309983168, 0.0025765763669278996, -0.006317976960335321, 0.19417953111918082] + - [0.00232532490868412, 0.9843485194949126, 0.0007623969350332192, -0.863727203476694, 0.6167086373918115, -0.9621409830855421, 0.16706964968534302, -0.06349859426445147, 0.0002150626797956221, 0.0030249189868581648, 0.014728634097692064, -0.06573867560535934] + - [-0.008474660334862334, 0.0010829732851703818, -0.9640692962213072, -0.029087027856017304, -0.01677433280904195, -0.009952651212562794, -0.006311893973566868, 0.0022966242917233366, -0.26511662058565577, 0.0030696637249748716, 0.009076099402887627, -0.0020960982587516536] + - [-5.9006124828971045e-06, 0.0005076728165153417, -0.0001366276058765607, 0.14253052671403132, -0.10022157968131495, -0.00893396132267747, 8.030728610553565e-05, -3.9604653001012315e-05, -3.87454372113178e-05, -0.0002865604727800466, -0.0025737472124743106, 0.0001343569034888802] + - [-3.81640220203001e-05, -3.092058546976476e-05, -1.68617807410025e-05, 0.08946292596933855, 0.14744853756350693, -0.0033458705216699333, -0.000187544633216463, 7.986128624705389e-05, -4.508188696137076e-05, -0.0011442421466271878, -0.006204214256899566, 0.00010334610440725486] + - [0.00011991126049802597, -0.0030268860228336173, 4.9594116252329615e-05, -0.010472452837290524, 0.0027331505699294224, -0.22477753325526004, -0.00030299261874738425, -6.737912239279358e-05, 1.4260402535971538e-05, 0.00012079697674530652, 0.0003012448860008987, 0.003957516266669997] + - [-0.6352124457018535, -0.13496253556068755, -0.004044155479449091, 0.047622734409052674, 0.0545111111790405, 0.038393895644153346, 0.687550402075552, -0.3355870618701558, 0.01631168150277567, 0.26180467589454776, 0.9048257723272785, -0.12451932098082619] + - [0.037174204116397436, 0.011845104520827755, 0.00047423134710758555, -0.00629032835629788, -0.002141542294863081, 0.10308153979766493, -0.3882958432032443, -0.9144229171306618, -0.0017052155003016204, 0.9498049981985859, -0.3776042166845886, 0.9631381823216342] + - [-0.006196620651079303, -0.0012731146481713956, 0.26512442541759806, -0.0023534433880713253, -0.005105764755220074, 0.0005188450488593906, 0.007045151883683445, -0.0018145809302960163, -0.9640649293883132, 0.020225783331213627, 0.06812370636170216, 0.000835710256633445] + - [5.714347891939644e-05, 1.686339866038127e-05, 1.5028356009981583e-05, 0.00075049101291444, 0.00038073248291608055, -3.593464788138298e-05, -0.0002497135253895754, -0.00048623411758988807, -6.227208248597054e-05, -0.1612312847960613, 0.0591368485192198, 0.0003833496656052742] + - [5.473806047572799e-05, 2.5583670678852518e-05, -7.737335574984773e-05, 0.004887363891255088, 0.0037416481686425584, -5.638823810327758e-05, -0.0002056556186468566, -6.906700953089171e-05, 0.0004260568833168574, 0.05380737844948939, 0.17367357185972587, -0.0015249662366894994] + - [0.0015303525486057752, -0.00042806985089815093, 1.00808944372531e-05, -8.376328057292354e-06, -2.4304149026354746e-05, -0.006315880653806154, -0.0020916389652703123, -0.005106779788014245, -3.655219015314506e-05, 0.0015218008536138311, -0.00451986916180392, -0.1216933091624699] + - - [-0.03809909456366338, 0.19762327803573262, -0.0014600069068991875, 0.0042931727404464624, -0.018013055015807265, 0.0015629527797875484, 0.039336077568861746, 0.07045589976849675, 0.0035990845465699393, 0.15378938545740797, 0.09795299222628805, 0.05988076312708098] + - [-0.19712764971848737, -0.03820980573412462, -0.0011389822180240471, 0.015855163516239043, 0.004791106405973202, 0.0008492643814859788, -0.07187750994027546, 0.038489323161691354, 0.0020782840387016423, 0.09810082833884169, -0.15339576775840078, 0.03467769895732752] + - [0.0007537464423505864, -0.0009150684235395657, -1.0375045119956221e-05, 4.446127258354854e-05, -1.969057882364367e-05, 0.20031948801971158, -5.296756044262395e-05, 0.002249083913900712, -0.222287512140486, 0.0020156440648981646, 8.960754574576879e-05, 0.012339843447183165] + - [-8.198408850531256e-05, -2.782620138731056e-05, 0.00015143691783610095, -0.003429136874135903, -0.0009255619161057637, 1.6191759969228123e-05, 0.003709842778451574, -0.00198993435958316, -0.00016994319863405737, 0.000940046373852235, -0.0015501814631393518, -0.00239583256222233] + - [1.365828418698822e-05, -0.00014152026659964797, 8.77705313112297e-05, 0.0009054290515494166, -0.0034108988232268776, -2.7226788871597234e-05, 0.002029455209505883, 0.003641155727343678, 0.0002943012371692683, -0.0014658278654751825, -0.0009848394302249064, 0.00413715354427488] + - [-3.3088168282289476e-05, 3.5468096131933814e-05, 0.007492170291934901, 0.0001195903604697897, 0.0001234012612947413, 6.550386512977711e-07, 0.00012877590849621776, 2.9009385691812092e-06, -7.540518549295289e-11, 5.949688541519062e-08, -1.3177563419722657e-06, 3.247098624303962e-08] + - [-0.03701816264230148, 0.19857471907390176, -0.2981744005873901, -0.015346267118438783, 0.033461987862408595, 0.001988182257811871, 0.002652745548934512, 0.01187933501526423, -0.0036861622527589095, -0.059012721576802325, -0.35411962977876227, -0.020292353304513233] + - [-0.19923484317839635, -0.03786991224768384, 0.1718317328063284, -0.038013158510247586, -0.007706361569663048, 0.0011304109223541168, -0.008891737800310858, 0.004905054429862801, -0.0011001558436959723, 0.2602645813717225, 0.08628020225941183, 0.0007139382979282269] + - [-0.0027527645901518362, 0.0011916518716372003, 0.003915722830730425, -0.15422204756418587, 0.04072635300515366, 0.20053304070275313, 0.14203329605742362, -0.2263341603697795, 0.2976227688389675, -0.01821445074241906, 0.009681381799803978, 0.07655501694408563] + - [-8.088248023199205e-05, -2.8135654501402678e-05, 0.0001555182872128017, -0.0033822861058387037, -0.0009351829606260056, -1.962816705150057e-05, 0.004910931740387316, -0.0037832157863126785, 0.016323795698265548, -0.00566642914496429, -0.005186557816823246, 0.005778133562333186] + - [1.3048068011211706e-05, -0.0001408516701163791, 9.800240761001951e-05, 0.0008800506011270458, -0.0033996281842552053, -6.4997767149032345e-06, 0.0014694172403970753, 0.004764024814479806, -0.009220763218240726, -0.004322662713734644, -0.011812625351105607, 0.0004005688971594751] + - [-3.3187078936283046e-05, 3.4942771097708646e-05, 0.007493835346366506, 0.00011901828978183604, 0.0001209174913884109, 5.892812416258319e-07, 5.563681686715242e-05, -5.6968566653296863e-05, 6.218081370772394e-05, 0.009490592314375958, 0.01833861948345427, 0.00040401885803152785] +desired_fn: + unloaded: + - [0.007969030588330794, 0.00796903110570017, 0.032450785290913206, 0.033837810076309566, 0.03384323003743209, 0.15347414613319565] + - [0.007821801746510596, 0.007799273378831812, 0.060730363337073885, 0.038294550477395065, 0.03823218499350445, 0.012389915216578293] + - [0.007820291506460448, 0.007797182691123994, 0.06072387909672913, 0.03804269532077579, 0.03797989566815876, 0.012387411324861493] + - [0.010745264472941989, 0.007042130683285471, 0.05083874412874035, 0.03718830155477531, 0.03746219577640442, 0.015733295779958544, 0.007560692937766276, 0.007162943600202844, 0.05085845644957963, 0.03718909530617525, 0.03751292401579166, 0.015458495421121857] + - [0.008843009270193875, 0.008842994673222323, 0.057333076398436954, 0.040024567822590014, 0.040035113277022895, 0.012530872293251848] + - [0.007678041761653909, 0.0077010730689208275, 0.06063555222262401, 0.038090808805145177, 0.03801946518673485, 0.01303502776355233] + - [0.010745264472941989, 0.007042130683285471, 0.05083874412874035, 0.03718830155477531, 0.03746219577640442, 0.015733295779958544, 0.007560692937766276, 0.007162943600202844, 0.05085845644957963, 0.03718909530617525, 0.03751292401579166, 0.015458495421121857] + - [0.008419947948668625, 0.008439990828766595, 0.013583275962318129, 0.03748360414253867, 0.03753537951558773, 0.04995811819736684, 0.4354224456499439, 0.4365931753711205, 1.1694488936254166, 1.4315148466867975, 1.4315841678901762, 1.5576081263514274] + loaded: + - [0.007302689130425731, 0.009386051569523327, 0.0324619648821971, 0.03384284278367125, 0.03390521240789938, 0.15556812986202703] + - [0.009877338944071893, 0.007124249060115123, 0.06074477261662188, 0.03805288751071078, 0.03880187514260889, 0.013249773290758519] + - [0.009874670188890267, 0.00712248549595006, 0.06073828562853501, 0.03779924341306677, 0.038553400062011585, 0.013247237290191206] + - [0.010657770201346919, 0.007205391755789316, 0.05085329838788944, 0.03762371940328384, 0.03800439258137139, 0.017699434769052943, 0.00744541165891112, 0.006428648951567171, 0.05081571514510346, 0.03648426692317414, 0.03722525848550245, 0.013251065073898444] + - [0.01001758112449391, 0.008135516880726033, 0.05733434044036171, 0.03987971053335962, 0.04028061360315004, 0.012793809566153662] + - [0.009989052205126846, 0.007108796504399627, 0.06066570921255404, 0.03786125861513632, 0.03863106869634041, 0.013905023780231075] + - [0.010657770201346919, 0.007205391755789316, 0.05085329838788944, 0.03762371940328384, 0.03800439258137139, 0.017699434769052943, 0.00744541165891112, 0.006428648951567171, 0.05081571514510346, 0.03648426692317414, 0.03722525848550245, 0.013251065073898444] + - [0.007689590281458923, 0.010674540022098524, 0.01452939312196821, 0.03734238683529922, 0.03795217785681351, 0.049970590601237395, 0.4354291393217975, 0.43660935747394036, 1.1694489472228349, 1.4315170096339773, 1.4315858044696692, 1.5576249314988801] +desired_X0: + wind: + - [10.922693086371797, 5.340231700318802, -0.8108647698990197, -0.022032428129456934, 0.040032509040068734, -0.005205161472762563] + - [13.13950373159035, 10.80625496835891, -0.5251584920861758, -0.018416043104494153, 0.037822788279540005, -0.001099210148566255] + - [13.13393722728286, 10.804541498961175, -0.539465288271134, -0.018695303083881256, 0.03837743503698423, -0.001102953563711671] + - [17.00690491798665, 11.298766337649866, 0.6426275873269139, -0.015294323682298386, 0.037280894782214254, -0.03132448455775895, 1618.358458095322, 11.890807729673748, 1.0164937183199112, -0.01536752495531541, 0.03858772174971979, 0.050136840160797926] + - [4.390523034698057, 3.0940976030539433, -0.20663859416931857, -0.014534302311294918, 0.027672560505503208, -0.0008427932602391248] + - [13.93553601864296, 11.737538512362496, -0.3954529167912685, -0.018572424909588475, 0.038229297513900105, -0.0006174789677097579] + - [17.00690491798665, 11.298766337649866, 0.6426275873269139, -0.015294323682298386, 0.037280894782214254, -0.03132448455775895, 1618.358458095322, 11.890807729673748, 1.0164937183199112, -0.01536752495531541, 0.03858772174971979, 0.050136840160797926] + - [13.279537825742214, 10.929869736110605, -0.985798193237186, -0.016350819516962895, 0.033933713601796416, -0.001061462791854426] + wave: + - [-1.6426704779117765e-05, -2.8379589305021753e-15, -0.665861623634053, 3.8871754619529944e-19, -5.942389411183453e-11, -4.025713518523906e-17] + - [0.4279251624758081, 1.0183275413638713e-16, -0.4518149912362843, 6.282983539011948e-18, -0.025425007551028434, -8.349409403121452e-18] + - [0.4340284475563819, 1.4926317515506322e-15, -0.46611278207795254, 9.326341133169375e-17, -0.02580312123587801, -1.5530045021684012e-17] + - [-0.32843740477669975, 3.624425463965215e-15, 0.8593457258693065, 1.4269921414368675e-16, -0.02318704862292062, -2.129383398471326e-17, 1600.657261290543, 1.1365137457838383e-16, 0.8599079354734761, 1.6166632587049378e-18, -0.024081562379982796, -1.776114995966162e-18] + - [-0.0017271518402846976, -3.7271483218401744e-16, -0.1943619219181062, 2.5345468860052683e-16, -7.106216565656922e-08, 3.858410418872914e-21] + - [0.3960946978864668, 6.276562780295047e-17, -0.3195151729249654, 6.543938417788147e-18, -0.02562373263391679, -1.2720077655927495e-17] + - [-0.32843740477669975, 3.624425463965215e-15, 0.8593457258693065, 1.4269921414368675e-16, -0.02318704862292062, -2.129383398471326e-17, 1600.657261290543, 1.1365137457838383e-16, 0.8599079354734761, 1.6166632587049378e-18, -0.024081562379982796, -1.776114995966162e-18] + - [0.39557422766687433, -2.1350956287011916e-11, -0.9112837541353471, -6.879498564680585e-14, -0.02342759018700823, -1.0213153851776013e-12] + current: + - [3.860721756927393, 0.9226942460791784, -0.6748987615068314, -0.00026475982404045967, 0.0009825297671895445, -1.0353269877082234e-05] + - [3.4649185568325542, 0.8103827566928414, -0.4537189033848457, 0.0006485359913540648, -0.027907833534844797, 0.003716219215113662] + - [3.4717765575090955, 0.8107490611546693, -0.4680296989258925, 0.0006584322228883072, -0.028322653259959533, 0.003715702422256664] + - [3.434025903274361, 1.0878065815836986, 0.8195006403776979, 0.000710970655705812, -0.024767128345286177, -0.00593700671537275, 1604.4115632126386, 1.0988742478986133, 0.899148002295924, 0.000776337020804059, -0.02581890906734393, 0.006496617026738553] + - [1.711170226284541, 0.4590258571524905, -0.19436269991517396, 0.0003009658226005835, -0.0011232227950777863, 9.563792924440177e-08] + - [3.644160039528348, 0.8627699085254625, -0.32110136967795655, 0.0006409035101140388, -0.028078562757281666, 0.003956486486109181] + - [3.434025903274361, 1.0878065815836986, 0.8195006403776979, 0.000710970655705812, -0.024767128345286177, -0.00593700671537275, 1604.4115632126386, 1.0988742478986133, 0.899148002295924, 0.000776337020804059, -0.02581890906734393, 0.006496617026738553] + - [3.2998349025525555, 0.7668019822178298, -0.9130278020844285, 0.0005545991753401463, -0.02558369688119641, 0.003772398504102307] + wind_wave_current: + - [15.133649612456306, 5.715431968062669, -0.859523179160021, -0.02230770622816427, 0.040953830590895426, -0.013239802493275103] + - [15.336473942511484, 12.05307641931261, -0.5382683031796497, -0.01770729949683676, 0.03550947653459716, 0.0026176523988813267] + - [15.332119608786767, 12.05197132010233, -0.5525754642254536, -0.017975896724069445, 0.036027967268861656, 0.0026133140691042564] + - [20.74300518048253, 12.34044740606862, 0.6036364519901971, -0.014653353595707219, 0.03544889608584543, -0.034611236325468274, 1622.415550977382, 13.42051989079937, 1.0548845811795446, -0.014413293367778223, 0.03716378339393728, 0.06250034907670092] + - [5.844710552975022, 3.764156163753465, -0.20909902628652846, -0.01421839418365209, 0.02656412618772619, -0.000841806518538585] + - [16.166883602656902, 13.131815309229339, -0.407159864706869, -0.0183865113152791, 0.03546352380504611, 0.0033691116683852054] + - [20.74300518048253, 12.34044740606862, 0.6036364519901971, -0.014653353595707219, 0.03544889608584543, -0.034611236325468274, 1622.415550977382, 13.42051989079937, 1.0548845811795446, -0.014413293367778223, 0.03716378339393728, 0.06250034907670092] + - [15.368230019911238, 12.114981780525117, -0.9984168565032784, -0.015741621408527626, 0.0319499448648069, 0.0026886211969756745]