Skip to content

Commit

Permalink
Updating MoorProps_default.yaml
Browse files Browse the repository at this point in the history
- Using Brian's old code, reran numbers for mass, buoyancy, (and MBL) for chain and polyester
- - Masses of chain (studlink and studless) were similar to old coefficients
- - Had to adjust MBLs from Brian's numbers (d^2 term AND d term)
- - Updated chain dvol/dnom values (pretty close)
- Implemented the option for a user to specify either dvol/dnom, material density, or specific gravity
- - specific gravity was given in the polyester catalogs, and rather than try to calculate dvol from that, you can now just input the specific gravity
- - Updated mass and MBL of polyester (much different than before)
- Changed getLineProps in helpers.py to support the new dvol implementations
- Still need to update the EA and cost values for chain and polyester - (in progress)
  • Loading branch information
shousner committed Oct 16, 2023
1 parent 1efed50 commit f355019
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 23 deletions.
52 changes: 31 additions & 21 deletions moorpy/MoorProps_default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
# EAd_MBL_Lm: # dynamic stiffness per MBL per fraction of mean load (not %) [N/N] (aka or Krd_beta)
#
# dvol_dnom : # volume-equivalent diameter per nominal diameter [-]
# density : # density of the line material [kg/m^3] (e.g., chain density = 7850 kg/m^3)
# spec_grav : # specific gravity of the line material [-] (relative to a reference density, usually water)
# NOTE: Only one of the above three variables can be used as input!
#
# cost_0 : # cost offset [$/m]
# cost_d : # cost per diameter [$/m^2]
Expand All @@ -31,36 +34,43 @@
# cost_EA : # cost per stiffness [$/m/N]
# cost_MBL : # cost per MBL [$/m/N]

# Chain Notes
# - The MBLs between studless and studlink chains are the same, for every grade
# - The masses between different grades of chain are the same (for now...different grades might correspond to different material densities)
# - If the user needs a different grade of chain, they will have to add another section and include those properties here. This default file only considers R4 chain



lineProps:

chain : # R4 grade studless chain
mass_d2 : 19.9e3 # linear mass density per diameter^2 [kg/m^3]
EA_d2 : 85.4e9 # stiffness per diameter^2 [N/m^2]
MBL_d : 66.72e6 # minimum breaking load per diameter [N/m]
MBL_d2 : 482.2e6 # minimum breaking load per diameter^2 [N/m^2]
dvol_dnom : 1.8 # volume-equivalent diameter per nominal diameter [-]
cost_mass : 2.585 # cost per mass [$/kg]

water_density: 1025

chain : # R4 grade studless chain
mass_d2 : 20.01e3 # linear mass density per diameter^2 [kg/m^3]
EA_d2 : 85.4e9 # stiffness per diameter^2 [N/m^2]
MBL_d : 37.34e6 # minimum breaking load per diameter [N/m]
MBL_d2 : 602.47e6 # minimum breaking load per diameter^2 [N/m^2]
dvol_dnom : 1.801 # volume-equivalent diameter per nominal diameter [-] (assumes 7,850 kg/m^3 material density)
cost_mass : 2.585 # cost per mass [$/kg]

chain_studlink : # R4 grade studlink chain
mass_d2 : 19.9e3 # linear mass density per diameter^2 [kg/m^3]
EA_d2 : 85.4e9 # stiffness per diameter^2 [N/m^2]
MBL_d : 66.72e6 # minimum breaking load per diameter [N/m]
MBL_d2 : 482.2e6 # minimum breaking load per diameter^2 [N/m^2]
dvol_dnom : 1.89 # volume-equivalent diameter per nominal diameter [-]
cost_mass : 2.585 # cost per mass [$/kg]

chain_studlink : # R4 grade studlink chain
mass_d2 : 21.9e3 # linear mass density per diameter^2 [kg/m^3]
EA_d2 : 85.4e9 # stiffness per diameter^2 [N/m^2]
MBL_d : 37.34e6 # minimum breaking load per diameter [N/m]
MBL_d2 : 602.47e6 # minimum breaking load per diameter^2 [N/m^2]
dvol_dnom : 1.885 # volume-equivalent diameter per nominal diameter [-] (assumes 7,850 kg/m^3 material density)
cost_mass : 2.585 # cost per mass [$/kg]


polyester : # polyester synthetic rope
mass_d2 : 797.8 # linear mass density per diameter^2 [kg/m^3]
#EA_d2 : 1.09e9 # stiffness per diameter^2 [N/m^2]
MBL_d2 : 170.5e6 # minimum breaking load per diameter^2 [N/m^2]
dvol_dnom : 0.86 # volume-equivalent diameter per nominal diameter [-]

polyester : # polyester synthetic rope
mass_d2 : 678.75 # linear mass density per diameter^2 [kg/m^3]
MBL_d2 : 308.2e6 # minimum breaking load per diameter^2 [N/m^2]
cost_MBL : 1.65e-05 # cost per MBL [$/m/N]
EA_MBL : 14 # quasi-static stiffness per MBL [N/N]
EAd_MBL : 14 # dynamic stiffness per MBL [N/N]
EAd_MBL_Lm : 0.34 # dynamic stiffness per MBL per fraction of mean load (not %) [N/N]
spec_grav : 1.38 # specific gravity of polyester used to calculate the volume-equivalent diameter, relative to the reference density of water [-]

nylon : # nylon synthetic rope
mass_d2 : 647.6 # linear mass density per diameter^2 [kg/m^3]
Expand Down
19 changes: 17 additions & 2 deletions moorpy/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -679,13 +679,28 @@ def getLineProps(dnommm, material, lineProps=None, source=None, name="", rho=102

# calculate the relevant properties for this specific line type
mat = lineProps[material] # shorthand for the sub-dictionary of properties for the material in question
d = dnommm*0.001 # convert nominal diameter from mm to m
d_vol = mat['dvol_dnom']*d
d = dnommm*0.001 # convert nominal diameter from mm to m
mass = mat['mass_0'] + mat['mass_d']*d + mat['mass_d2']*d**2 + mat['mass_d3']*d**3
MBL = mat[ 'MBL_0'] + mat[ 'MBL_d']*d + mat[ 'MBL_d2']*d**2 + mat[ 'MBL_d3']*d**3
EA = mat[ 'EA_0'] + mat[ 'EA_d']*d + mat[ 'EA_d2']*d**2 + mat[ 'EA_d3']*d**3 + mat['EA_MBL']*MBL
cost =(mat['cost_0'] + mat['cost_d']*d + mat['cost_d2']*d**2 + mat['cost_d3']*d**3
+ mat['cost_mass']*mass + mat['cost_EA']*EA + mat['cost_MBL']*MBL)

# internally calculate the volumetric diameter using one of three options
if 'dvol_dnom' in mat and 'density' not in mat and 'spec_grav' not in mat: # if only 'dvol_dnom' is specified in the source
d_vol = mat['dvol_dnom']*d # [m]
elif 'density' in mat and 'dvol_dnom' not in mat and 'spec_grav' not in mat: # if only 'density' is specified in the source
material_density = mat['density'] # [kg/m^3]
d_vol = np.sqrt((mass/material_density)*(4/np.pi)) # [m]
elif 'spec_grav' in mat and 'dvol_dnom' not in mat and 'density' not in mat: # if only 'spec_grav' is specified in the source
water_density = lineProps['water_density'] # [kg/m^3]
print('Warning: Is this water density the same that is specified in MoorPy?')
material_density = (mat['spec_grav']/(water_density/1000))*1000 # [kg/m^3]
d_vol = np.sqrt((mass/material_density)*(4/np.pi)) # [m]
else:
raise ValueError("Only one parameter can be specified to calculate the volumetric diameter. Choose either 'dvol_dnom', 'density', or 'spec_grav'")

# use the volumetric diameter to calculate the weight per unit length (could have also used mass, water density, and material density)
w = (mass - np.pi/4*d_vol**2 *rho)*g

# stiffness values for viscoelastic approach
Expand Down

0 comments on commit f355019

Please sign in to comment.