h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator#
Author: Cory Frontin Date: 23 Jan 2023 Institution: National Renewable Energy Lab Description: This file computes pressure vessel thickness, replacing Tankinator.xlsx Sources:
Tankinator.xlsx
Classes
|
a lined tank for Type III or Type III: aluminum-lined carbon fiber-jacketed tank |
|
a class for the material properties for metals used in analysis |
|
a generalized class to size a pressurized gas tank assumed to be cylindrical with hemispherical ends |
|
|
|
a class I tank: metal shell tank |
|
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.MetalMaterial(metal_type, approx_method='lookup')#
a class for the material properties for metals used in analysis
- Parameters:
metal_type (str, must be in list of known materials) -- type of metal to use, must be defined in material_properties.json
approx_method (str, must be in list of known methods) -- method to approximate inexact table lookups
- Raises:
NotImplementedError -- if inputs are not found in known data
- _get_approx_fun()#
- yield_shear_fun(T)#
- ultimate_shear_fun(T)#
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.Tank(tank_type, yield_factor=1.5, ultimate_factor=2.25)#
a generalized class to size a pressurized gas tank assumed to be cylindrical with hemispherical ends
- Parameters:
tank_type (int, must be 1, 3, or 4) -- type of tank to be used, which can take values I, III, IV referring to all-metal, aluminum-lined carbon fiber, and HDPE-lined carbon fiber, respectively, as
material (str, must be in valid types) -- material that the pressure vessel is made of
yield_factor (float)
ultimate_factor (float)
- get_length_inner()#
- get_radius_inner()#
- get_volume_inner()#
computes the inner volume
- get_operating_temperature()#
- get_operating_pressure()#
- set_length_radius(length_in, radius_in)#
set the pressure vessel dimensions by length and radius in cm and compute the volume in ccm
- set_length_volume(length_in, volume_in)#
set pressure vessel dimensions by length in cm and volume in ccm
sets the length and volume of the pressure volume, backsolves for the radius of the pressure volume
- set_radius_volume(radius_in, volume_in)#
set pressure vessel dimensions by radius in cm and volume in ccm
sets the radius and volume of the pressure volume, backsolves for the length of the pressure volume
- set_operating_temperature(temperature_in)#
- set_operating_pressure(pressure_in)#
- compute_hemicylinder_volume(L)#
- Parameters:
R (float)
L (float)
- Return type:
float
- compute_hemicylinder_outer_length(t)#
- Parameters:
L (float)
t (float)
- Return type:
float
- compute_hemicylinder_outer_radius(t)#
- Parameters:
R (float)
t (float)
- Return type:
float
- check_thinwall(t, thinwallratio_crit=10)#
- Parameters:
Rinner (float)
t (float)
- Return type:
bool
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.TypeITank(material, yield_factor=1.5, ultimate_factor=2.25, shear_approx='interp')#
a class I tank: metal shell tank
- Parameters:
material (str)
yield_factor (float)
ultimate_factor (float)
- get_thickness()#
- get_length_outer()#
returns the outer length of the pressure vessel in cm
- get_radius_outer()#
returns the outer radius of the pressure vessel in cm
- get_volume_outer()#
returns the outer volume of the pressure vessel in ccm
- get_volume_metal()#
returns the (unsealed) displacement volume of the pressure vessel in ccm
- get_mass_metal()#
returns the mass of the pressure vessel in kg
- get_cost_metal()#
returns the cost of the metal in the pressure vessel in dollars
- get_gravimetric_tank_efficiency()#
returns the gravimetric tank efficiency: $$
- rac{m_{metal}}{V_{inner}} $$
in L/kg
- get_yield_thickness(pressure=None, temperature=None)#
gets the yield thickness
returns the yield thickness given by: $$ t_y=
- rac{p R_0}{S_y} imes SF_{yield}
$$ with yield safety factor $SF_{yield}= 3/2$ by default
temperature and pressure must be set in the class, or specified in this function
- param pressure:
operating pressure, in bar
- type pressure:
float
- param temperature:
operating temperature, in degrees C
- type temperature:
float
- Parameters:
pressure (float | None)
temperature (float | None)
- get_ultimate_thickness(pressure=None, temperature=None)#
get the ultimate thickness
returns the ultimate thicnkess given by: $$ t_u=
- rac{p R_0}{S_u} imes SF_{ultimate}
$$ with ultimate safety factor $SF_{yield}= 2.25$ by default
temperature and pressure must be set in the class, or specified in this function
- param pressure:
operating pressure, in bar
- type pressure:
float
- param temperature:
operating temperature, in degrees C
- type temperature:
float
- Parameters:
pressure (float | None)
temperature (float | None)
- get_thickness_thinwall(pressure=None, temperature=None)#
get the thickness based on thinwall assumptions
maximum between yield and ultimate thickness
temperature and pressure must be set in the class, or specified in this function
- Parameters:
pressure (float) -- operating pressure, in bar
temperature (float) -- operating temperature, in degrees C
- set_thickness_thinwall(pressure=None, temperature=None)#
set the thickness based on thinwall assumptions
maximum between yield and ultimate thickness
temperature and pressure must be set in the class, or specified in this function
- Parameters:
pressure (float) -- operating pressure, in bar
temperature (float) -- operating temperature, in degrees C
- get_thickness_vonmises(pressure=None, temperature=None, max_cycle_iter=10, adj_fac_tol=1e-06)#
get the thickness based on a von Mises cycle
temperature and pressure must be set in the class, or specified here
- Parameters:
pressure (float) -- operating pressure, in bar
temperature (float) -- operating temperature, in degrees C
max_cycle_iter (int) -- maximum iterations for von Mises cycle
adj_fac_tol (float) -- tolerance for close enough wall thickness adjustment factor
- set_thickness_vonmises(pressure=None, temperature=None, max_cycle_iter=10, adj_fac_tol=1e-06)#
set the thickness based on a von Mises cycle
temperature and pressure must be set in the class, or specified here
- Parameters:
pressure (float) -- operating pressure, in bar
temperature (float) -- operating temperature, in degrees C
max_cycle_iter (int) -- maximum iterations for von Mises cycle
adj_fac_tol (float | None) -- tolerance for close enough wall thickness adjustment factor
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.LinedTank(tanktype, load_bearing_liner, liner_design_load_factor=0.21, liner_thickness_min=0.3, yield_factor=1.5, ultimate_factor=2.25)#
a lined tank for Type III or Type III: aluminum-lined carbon fiber-jacketed tank
- Parameters:
tanktype (int)
yield_factor (float)
ultimate_factor (float)
- get_thicknesses_thinwall(pressure=None)#
???
- Parameters:
pressure (float | None)
- set_thicknesses_thinwall(pressure=None)#
???
- Parameters:
pressure (float | None)
- get_safetyfactor_real_jacket()#
figure out the integer layer safety factor
- get_length_liner()#
returns the outer length of the pressure vessel in cm
- get_radius_liner()#
returns the outer radius of the pressure vessel in cm
- get_volume_outer_liner()#
returns the outer volume of the pressure vessel in ccm
- get_volume_liner()#
returns the (unsealed) displacement volume of the liner in ccm
- get_mass_liner()#
returns the mass of the liner in kg
- get_cost_liner()#
returns the cost of the liner material in $
- get_length_outer()#
returns the outer length of the pressure vessel in cm
- get_radius_outer()#
returns the outer radius of the pressure vessel in cm
- get_volume_outer()#
returns the outer volume of the pressure vessel in ccm
- get_volume_jacket()#
returns the (unsealed) displacement volume of the carbon fiber jacket in ccm
- get_mass_jacket()#
returns the mass of the carbon fiber jacket in kg
- get_cost_jacket()#
returns the cost of the jacket material in $
- get_mass_tank()#
returns the mass of the empty tank in kg
- get_cost_tank()#
returns the material cost of the tank in $
- get_gravimetric_tank_efficiency()#
returns the gravimetric tank efficiency: $$
- rac{m_{tank}}{V_{inner}} $$
in L/kg
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.TypeIIITank(conservative=False, liner_design_load_factor=0.21, liner_thickness_min=0.3, yield_factor=1.5, ultimate_factor=2.25)#
- Parameters:
yield_factor (float)
ultimate_factor (float)
- class h2integrate.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator.TypeIVTank(liner_design_load_factor=0.21, liner_thickness=0.4, yield_factor=1.5, ultimate_factor=2.25)#
- Parameters:
yield_factor (float)
ultimate_factor (float)