A function which returns mass flow into the tank (kg/s) as a function
of tank pressure (Pa), tank temperature (K), and time (s). The default
is a function which returns 0 everywhere.
A function which returns mass flow exiting the tank (kg/s) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere.
A function which returns heating power added to the tank (W) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere.
A function which returns cooling power added to the tank (W) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere.
A function which returns the pressure (Pa) of the fluid being inserted
into the tank as a function of tank pressure (Pa), tank temperature
(K), and time (s). The default is None.
A function which returns the temperature (K) of the fluid being
inserted into the tank as a function of tank pressure (Pa), tank
temperature (K), and time (s). The default is None.
The temperature (K) of the environment surrounding the tank.
This value is used in the dynamic simulation to calculate heat leakage
into the tank. The default is 0, in which case heat leakage into the
tank is not considered.
A function which returns the enthalpy (J/mol) of the fluid being
inserted into the tank as a function of tank pressure (Pa), tank
temperature (K), and time (s). The default is None.
A function which returns the enthalpy (J/mol) of the fluid exiting
the tank as a function of tank pressure (Pa), tank temperature (K),
and time (s). The default is None.
Type:
Callable[[float, float, float], float], optional
Initialize a BoundaryFlux object.
Parameters:
mass_flow_in (Callable or float, optional) –
A function which returns mass flow into the tank (kg/s) as a
functionof tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere. If a float is
provided, it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defmass_flow_in_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....#Returned is the mass flow going into the tank (kg/s)returnmass_flow_in
mass_flow_out (Callable or float, optional) –
A function which returns mass flow exiting the tank (kg/s) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere. If a float is
provided it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defmass_flow_out_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the mass flow going out of the tank (kg/s)returnmass_flow_out
heating_power (Callable or float, optional) –
A function which returns heating power added to the tank (W) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere. If a float is
provided, it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defheating_power_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the heat put into the tank (W)returnheating_power
cooling_power (Callable or float, optional) –
A function which returns cooling power added to the tank (W) as a
function of tank pressure (Pa), tank temperature (K), and time (s).
The default is a function which returns 0 everywhere. If a float is
provided,it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defcooling_power_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the heat taken out of the tank (W)returncooling_power
pressure_in (Callable or float, optional) –
A function which returns the pressure (Pa) of the fluid being
inserted into the tank as a function of tank pressure (Pa), tank
temperature (K), and time (s). The default is None. If a float is
provided,it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defpressure_in_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the pressure (Pa) of the fluid going into# the tank.returnpressure_in
temperature_in (Callable or float, optional) –
A function which returns the temperature (K) of the fluid being
inserted into the tank as a function of tank pressure (Pa), tank
temperature (K), and time (s). The default is None. If a float is
provided,it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
deftemperature_in_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the temperature (K) of the fluid going into# the tank.returntemperature_in
environment_temp (float, optional) – The temperature (K) of the environment surrounding the tank. This
value is used in the dynamic simulation to calculate heat leakage
into the tank. The default is 0, in which case heat leakage into
the tank is not considered.
enthalpy_in (Callable or float, optional) –
A function which returns the enthalpy (J/mol) of the fluid being
inserted into the tank as a function of tank pressure (Pa), tank
temperature (K), and time (s). The default is None. If a float is
provided,it will be converted to a function which returns that
value everywhere.
If a callable is passed, it must have the signature:
defenthalpy_in_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the enthalpy (J/mol) of the fluid going into# the tank.returnenthalpy_in
enthalpy_out (Callable or float, optional) –
A function which returns the enthalpy (J/mol) of the fluid exiting
the tank as a function of tank pressure (Pa), tank temperature
(K), and time (s). The default is None. If a float is provided, it
will be converted to a function which returns that value
everywhere.
If a callable is passed, it must have the signature:
defenthalpy_out_function(p,T,time):# 'p' is tank pressure (Pa)# 'T' is tank temperature (K)# 'time' is the time elapsed within the simulation (s)....# Returned is the enthalpy (J/mol) of the fluid going out# of the tank.returnenthalpy_out
Raises:
ValueError – If the mass flow going in is specified but the parameters that
specify its enthalpy (i.e., either pressure and temperature or
its enthalpy value) are not specified.
Returns:
An object which stores information of the mass and energy fluxes on
the tank boundaries.
This data class stores the parameters of the tank at the start of the
simulation as well as the conditions specified to stop the simulation.
Additionally, it also stores the setting for the number of data points
to be reported at the end of the simulation.
The pressure of the tank being simulated (Pa) at the beginning of the
simulation. The default value is 1E5. This parameter was made optional
as the two-phase simulations did not require it to be filled, rather
pytanksim will automatically calculate the saturation pressure given
a starting temperature.
The target temperature (K) at which the simulation is to be stopped.
The default value is 0, which effectively means the simulation
does not have a set temperature at which the simulation is stopped.
The target pressure (Pa) at which the simulation is to be stopped.
The default value is 0, which effectively means the simulation does
not have a set pressure at which the simulation is stopped.
The initial quality of the fluid being stored. It can vary between 0
and 1. The default is None.
Type:
float, optional
Parameters:
inserted_amount (float, optional) – The amount of fluid which has been previously inserted into the tank
(moles) at the beginning of the simulation. Used to track refueling
processes across multiple simulations. The default value is 0.
vented_amount (float, optional) – The amount of fluid which has been previously vented from the tank
(moles) at the beginning of the simulation. Used to track discharging
and boil-off processes across multiple simulations. The default value
is 0.
cooling_required (float, optional) – The cumulative amount of required cooling (J) to maintain a constant
pressure prior to the start of a simulation. The default value is 0.
Useful when restarting a stopped cooled refuel simulation.
heating_required (float, optional) – The cumulative amount of required heating (J) to maintain a constant
pressure prior to the start of a simulation. The default value is 0.
Useful when restarting a stopped heated discharge simulation.
vented_energy (float, optional) – Cumulative amount of enthaloy (J) contained in the fluid vented prior
to the start of the simulation. The default is 0. Useful when
stopping and restarting discharge simulations.
flow_energy_in (float, optional) – Cumulative amount of enthalpy (J) contained in the fluid inserted
prior to the start of the simulation. The default is 0. Useful when
stopping and restarting refueling simulations.
cooling_additional (float, optional) – The cumulative amount of user-specified cooling (J) prior to the start
of a simulation. The default value is 0. Useful when stopping and
restarting simulations with user-specified cooling.
heating_additional (float, optional) – The cumulative amount of user-specified cooling (J) prior to the start
of a simulation. The default value is 0. Useful when stopping and
restarting simulations with user-specified heating.
heat_leak_in (float, optional) – The cumulative amount of heat (J) which has leaked into the tank prior
to the start of a simulation. The default value is 0. Useful when
stopping and restarting simulations involving heat leakage.
verbose (bool, optional) – Whether or not the simulation will print out its progress bars and
give a notification once it has finished. The default value is True.
Take final conditions from a previous simulation as new parameters.
Parameters:
sim_results (SimResults) – An object containing previous simulation results.
displayed_points (float, optional) – The number of data points to be reported at the end of the
simulation. The default is 200.
init_time (float, optional) – The time (seconds) at which the beginning of the simulation is set.
The default value is None.
final_time (float, optional) – The time (seconds) at which the simulation is to be stopped. If
None, then the final_time setting from the previous simulation is
used. The default is None.
target_pres (float, optional) – The target pressure (Pa) at which the simulation is to be stopped.
If None, then the target_pres setting from the previous simulation
is used. The default is None.
target_temp (float, optional) – The target temperature (K) at which the simulation is to be
stopped. If None, then the target_temp setting from the previous
simulation is used. The default is None.
stop_at_target_pressure (bool, optional) – If True, it will stop the simulation when the target pressure is
met. If None, then the stop_at_target_pressure setting from the
previous simulation is used. The default is None.
stop_at_target_temp (bool, optional) – If True, it will stop the simulation when the target temperature
is met. If None, then the stop_at_target_temp setting from the
previous simulation is used. The default is None.
target_capacity (float, optional) – The amount of fluid (moles) stored in the tank at which the
simulation is to be stopped. If None, then the target_capacity
value from the previous simulation is used. The default is None.
Returns:
A SimParams object containing the final conditions taken from
sim_results set as the new starting parameters.
Generate a dictionary of fluid properties using CoolProp.
Parameters:
p (float) – Pressure (Pa).
T (float) – Temperature (K)
Returns:
Dictionary containing several fluid properties needed for various
calculations in pytanksim. “hf” is the enthalpy (J/mol). “drho_dp”
is the first partial derivative of density (mol/m^3) w.r.t.
pressure (Pa). “drho_dT” is the first partial derivative of density
(mol/m^3) w.r.t. temperature (K). “rhof” is density (mol/m^3).
“dh_dp” is the first partial derivative of enthalpy (J/mol) w.r.t.
pressure (Pa). “dh_dT” is the first partial derivative of enthalpy
(J/mol) w.r.t. temperature (K). “uf” is the internal energy
(J/mol). “du_dp” is the first partial derivative of internal energy
(J/mol) w.r.t. pressure (Pa). “du_dT” is the first partial
derivative of internal energy (J/mol) w.r.t. temperature (K). “MW”
is molar mass (kg/mol).
Generate a dictionary of fluid properties at saturation.
Parameters:
T (float) – Temperature in K.
Q (float) – Vapor quality of the fluid being stored.
Returns:
A dictionary containing the fluid properties at saturation
at a given temperature. “psat” is the saturation vapor pressure
(Pa). “dps_dT” is the first derivative of the saturation vapor
pressure (Pa) w.r.t. temperature (K). “hf” is the enthalpy (J/mol).
“drho_dp” is the first partial derivative of density (mol/m^3)
w.r.t. pressure (Pa). “drho_dT” is the first partial derivative of
density (mol/m^3) w.r.t. temperature (K). “rhof” is density
(mol/m^3). “dh_dp” is the first partial derivative of enthalpy
(J/mol) w.r.t. pressure (Pa). “dh_dT” is the first partial
derivative of enthalpy (J/mol) w.r.t. temperature (K). “uf” is the
internal energy (J/mol). “du_dp” is the first partial derivative of
internal energy (J/mol) w.r.t. pressure (Pa). “du_dT” is the first
partial derivative of internal energy (J/mol) w.r.t. temperature
(K). “MW” is molar mass (kg/mol).
A function which takes in the temperature (K) of the sorbent and
returns its specific heat capacity (J/(kg K)). If specified, this
function will override the Debye model for specific heat calculation.
The default is None.
Type:
Callable[[float], float], optional
Initialize the SorbentMaterial class.
Parameters:
skeletal_density (float) – Skeletal density of the sorbent (kg/m^3).
bulk_density (float) – Tapped/compacted bulk density of the sorbent (kg/m^3).
specific_surface_area (float) – Specific surface area of the sorbent (m^2/g).
model_isotherm (ModelIsotherm) – Model of fluid adsorption on the sorbent.
mass (float, optional) – Mass of sorbent (kg). The default is None.
molar_mass (float, optional) – Molar mass of the sorbent material. The default is 12.01E-3 which
corresponds to carbon materials.
Debye_temperature (float, optional) – The Debye temperature determining the specific heat of the sorbent
at various temperatures. The default is 1500, the value for carbon.
heat_capacity_function (Callable, optional) – A function which takes in the temperature (K) of the sorbent and
returns its specific heat capacity (J/(kg K)). If specified, this
function will override the Debye model for specific heat
calculation. The default is None.
Returns:
Class containing the properties of a sorbent material.
A class for the Modified Dubinin-Astakhov model for adsorption.
A key modification compared to the DA model is the use of the enthalpic and
entropic factors to calculate the adsorption energy as a function of
temperature instead of treating it as a constant.
Initialize the MDAModel class.
Parameters:
sorbent (str) – Name of the sorbent material.
stored_fluid (StoredFluid) – Object to calculate the thermophysical properties of the adsorbate.
nmax (float) – Maximum adsorbed amount (mol/kg) at saturation.
f0 (float) – Fugacity at saturation (Pa).
alpha (float) – The empirical enthalpic factor for determining the characteristic
energy of adsorption.
beta (float) – The empirical entropic factor for determining the characteristic
energy of adsorption.
va (float) – The volume of the adsorbed phase (m^3/kg).
m (float, optional) – The empirical heterogeneity parameter for the Dubinin-Astakhov
model. The default is 2.
k (float, optional) – The empirical heterogeneity parameter for Dubinin’s approximation
of the saturation fugacity above critical temperatures. The default
is 2.
va_mode (str, optional) – Determines how the adsorbed phase density is calculated. “Ozawa”
uses Ozawa’s approximation to calculate the adsorbed phase density.
“Constant” assumes a constant adsorbed phase volume. The default is
“Constant”.
f0_mode (str, optional) – Determines how the fugacity at saturation is calculated. “Dubinin”
uses Dubinin’s approximation. “Constant” assumes a constant value
for the fugacity at saturation. The default is “Constant”.
Returns:
An MDAModel object. It can calculate the excess and absolute
adsorbed amounts at various pressures and temperatures, and it can
provide thermophysical properties of the adsorbed phase.
Fit the MDA model from a list of excess adsorption data.
Parameters:
ExcessIsotherms (List[ExcessIsotherm]) – A list of ExcessIsotherm objects which contain measurement
data at various temperatures.
stored_fluid (StoredFluid, optional) – Object for calculating the properties of the adsorbate. The default
is None. If None, the StoredFluid object inside of one of the
ExcessIsotherm objects passed will be used.
sorbent (str, optional) – Name of sorbent material. The default is None. If None, name will
be taken from one of the ExcessIsotherm objects passed.
nmaxguess (float, optional) – The initial guess for the maximum adsorbed amount (mol/kg). The
default is 71.6.
f0guess (float, optional) – The initial guess for the fugacity at saturation (Pa). The default
is 1470E6.
alphaguess (float, optional) – The initial guess for the enthalpy factor determining the
characteristic energy of adsorption. The default is 3080.
betaguess (float, optional) – The initial guess for the entropy factor determining the
characteristic energy of adsorption. The default is 18.9.
vaguess (float, optional) – Initial guess for the adsorbed phase volume (m^3/kg). The default
is 0.00143.
mguess (float, optional) – The initial guess for the heterogeneity parameter of the
Dubinin-Astakhov equation. The default is 2.0.
kguess (float, optional) – The initial guess for the heterogeneity parameter of Dubinin’s
approximation method for saturation fugacity. The default is 2.0.
va_mode (str, optional) – Determines how the volume of the adsorbed phase (va) is
calculated. If “Fit”, va is a constant to be fitted
statistically. If “Ozawa”, Ozawa’s approximation is used to
calculate va and va is not a fitting parameter. If “Constant”,
the user supplied value for vaguess is taken as the volume.
The default is “Fit”.
f0_mode (str, optional) – Determines how the fugacity at saturation (f0) is calculated. If
“Fit” then f0 is a constant to be statistically fitted to the data.
If “Dubinin” then Dubinin’s approximation is used. If “Constant”
then the user supplied value for f0guess is used. The default is
“Fit”.
m_mode (str, optional) – Determines whether the heterogeneity parameter of the Dubinin-
Astakhov equation is taken as a user-supplied constant (if
“Constant”) or a fitted parameter (if “Fit”). The default is “Fit”.
k_mode (str, optional) – Determines whether the heterogeneity parameter of Dubinin’s
approximation for the fugacity above the critical temperature is
taken as a user-supplied constant value (if “Constant”) or as a
statistically fitted parameter (if “Fit”). The default is “Fit”.
beta_mode (str, optional) – Determines whether the entropic factor determining the
characteristic energy of adsorption is taken as a user-supplied
constant (if “Constant”) or as a fitted parameter (if “Fit”). The
default is “Fit”.
pore_volume (float, optional) – The experimentally measured pore volume of the sorbent material
(m^3/kg). It serves as the maximum possible physical value for the
parameters w0 and va. The default is 0.003.
verbose (bool, optional) – Determines whether or not the complete fitting quality report is
logged for the user. The default is True.
Returns:
An MDAModel object. It can calculate the excess and absolute
adsorbed amounts at various pressures and temperatures, and it can
provide thermophysical properties of the adsorbed phase.
The volume of the adsorbed phase (m^3/kg). The default is None.
If None and va_mode is “Constant”, the va_mode will be switched to
“Excess” and the va will be assumed to be 0.
Determines how the adsorbed phase volume is calculated. “Excess”
assumes that the adsorbed phase volume is 0, so the model
calculates excess adsorption instead of absolute adsorption.
“Constant” assumes a constant adsorbed phase volume. “Vary” will
assume that the adsorbed phase volume varies according to the pore
filling mechanism posited by the Dubinin-Astakhov equation. The
default is “Constant”, but if the parameter va is not specified it
will switch to “Excess”.
Determines how the adsorbed phase density is calculated. “Ozawa”
uses Ozawa’s approximation to calculate the adsorbed phase density.
“Constant” assumes a constant adsorbed phase volume. The default is
“Constant”.
Determines how the fugacity at saturation is calculated. “Dubinin”
uses Dubinin’s approximation. “Constant” assumes a constant value
for the fugacity at saturation. The default is “Dubinin”.
Type:
str, optional
Initialize the DAModel class.
Parameters:
sorbent (str) – Name of sorbent material.
stored_fluid (StoredFluid) – Object containing properties of the adsorbate.
w0 (float) – The volume of the adsorbed phase at saturation (m^3/kg).
f0 (float) – The fugacity at adsorption saturation (Pa).
eps (float) – Characteristic energy of adsorption (J/mol).
m (float, optional) – The empirical heterogeneity parameter for the Dubinin-Astakhov
model. The default is 2.
k (float, optional) – The empirical heterogeneity parameter for Dubinin’s approximation
of the saturation fugacity above critical temperatures. The default
is 2.
va (float, optional) – The volume of the adsorbed phase (m^3/kg). The default is None.
rhoa (float, optional) – The density of the adsorbed phase (mol/m^3). The default is None.
If None, the value will be taken as the liquid density at 1 bar.
va_mode (str, optional) – Determines how the adsorbed phase volume is calculated. “Excess”
assumes that the adsorbed phase volume is 0, so the model
calculates excess adsorption instead of absolute adsorption.
“Constant” assumes a constant adsorbed phase volume. “Vary” will
assume that the adsorbed phase volume varies according to the pore
filling mechanism posited by the Dubinin-Astakhov equation. The
default is “Constant”, but if the parameter va is not specified it
will switch to “Excess”.
rhoa_mode (str, optional) – Determines how the adsorbed phase density is calculated. “Ozawa”
uses Ozawa’s approximation to calculate the adsorbed phase density.
“Constant” assumes a constant adsorbed phase volume. The default is
“Constant”.
f0_mode (str, optional) – Determines how the fugacity at saturation is calculated. “Dubinin”
uses Dubinin’s approximation. “Constant” assumes a constant value
for the fugacity at saturation. The default is “Dubinin”.
Returns:
A DAModel object which can calculate excess and absolute adsorption
at various conditions as well as the thermophysical properties of
the adsorbed phase.
Fit the DA model to a list of ExcessIsotherm data.
Parameters:
ExcessIsotherms (List[ExcessIsotherm]) – A list containing ExcessIsotherm objects which contain measurement
data at various temperatures.
stored_fluid (StoredFluid, optional) – Object for calculating the properties of the adsorbate. The default
is None. If None, the StoredFluid object inside of one of the
ExcessIsotherm objects passed will be used.
sorbent (str, optional) – Name of sorbent material. The default is None. If None, name will
be taken from one of the ExcessIsotherm objects passed.
w0guess (float, optional) – The initial guess for the adsorbed phase volume at saturation
(m^3/kg). The default is 0.001.
f0guess (float, optional) – The initial guess for the fugacity at saturation (Pa). The default
is 1470E6.
epsguess (float, optional) – The initial guess for the characteristic energy of adsorption
(J/mol). The default is 3000.
vaguess (float, optional) – The initial guess for the volume of the adsorbed phase (m^3/kg).
The default is 0.001.
rhoaguess (float, optional) – The initial guess for the adsorbed phase density (mol/m^3).
The default is None. If None, it will be taken as the liquid
density at 1 bar.
mguess (float, optional) – The initial guess for the heterogeneity parameter of the
Dubinin-Astakhov equation. The default is 2.0.
kguess (float, optional) – The initial guess for the heterogeneity parameter of Dubinin’s
approximation method for saturation fugacity. The default is 2.0.
rhoa_mode (str, optional) – Determines how the density of the adsorbed phase (rhoa) is
calculated. If “Fit”, rhoa is a constant to be fitted
statistically. If “Ozawa”, Ozawa’s approximation is used to
calculate rhoa and rhoa is not a fitting parameter. If “Constant”,
the user supplied value for rhoaguess is taken as the density.
The default is “Fit”.
f0_mode (str, optional) – Determines how the fugacity at saturation (f0) is calculated. If
“Fit” then f0 is a constant to be statistically fitted to the data.
If “Dubinin” then Dubinin’s approximation is used. If “Constant”
then the user supplied value for f0guess is used. The default is
“Fit”.
m_mode (str, optional) – Determines whether the heterogeneity parameter of the Dubinin-
Astakhov equation is taken as a user-supplied constant (if
“Constant”) or a fitted parameter (if “Fit”). The default is “Fit”.
k_mode (str, optional) – Determines whether the heterogeneity parameter of Dubinin’s
approximation for the fugacity above the critical temperature is
taken as a user-supplied constant value (if “Constant”) or as a
statistically fitted parameter (if “Fit”). The default is “Fit”.
va_mode (str, optional) – Determines how the volume of the adsorbed phase is calculated. If
“Fit”, the value is a statistically fitted constant. If “Constant”,
the value is the user defined value vaguess. If “Vary”, the value
varies w.r.t. pressure according to the micropore filling
mechanism posited by the Dubinin-Astakhov model. The default is
“Excess”.
pore_volume (float, optional) – The experimentally measured pore volume of the sorbent material
(m^3/kg). It serves as the maximum possible physical value for the
parameters w0 and va. The default is 0.003.
verbose (bool, optional) – Determines whether or not the complete fitting quality report is
logged for the user. The default is True.
Returns:
A DAModel object which can calculate excess and absolute adsorption
at various conditions as well as the thermophysical properties of
the adsorbed phase.
It also has methods to calculate useful quantities such as tank dormancy
given a constant heat leakage rate, the internal energy of the fluid being
stored at various conditions, etc.
The pressure (Pa) at which the fluid being stored must be vented.
The default is None. If None, the value will be taken as the
maximum value where the CoolProp backend can calculate the
properties of the fluid being stored.
The thermal resistance of the tank walls (K/W). The default is 0.
If 0, the value will not be considered in simulations. If the
arguments ‘surface_area’ and ‘heat_transfer’ are passed,
‘thermal_resistance’ will be calculated based on those two arguments
as long as the user does not pass a value to ‘thermal_resistance’.
Find conditions corresponding to a given capacity and temperature.
Parameters:
cap (float) – Amount of fluid inside the tank (moles).
T (float) – Temperature (K).
p_guess (float) – Initial guess for pressure value (Pa) to be optimized.
q_guess (float) – Initial guess for vaport quality value to be optimized.
Returns:
The optimization result represented as a OptimizeResult object.
The relevant attribute for this method is x, the solution array.
x[0] contains the pressure value and x[1] contains the vapor
quality value.
Find conditions corresponding to a given capacity and temperature.
Parameters:
cap (float) – Amount of fluid inside the tank (moles).
P (float) – Pressure (Pa).
T_guess (float) – Initial guess for temperature value (K) to be optimized.
q_guess (float) – Initial guess for vaport quality value to be optimized.
Returns:
The optimization result represented as a OptimizeResult object.
The relevant attribute for this package is x, the solution array.
x[0] contains the temperature value and x[1] contains the vapor
quality value.
Calculate dormancy time given a constant heating rate.
Parameters:
p (float) – Initial tank pressure (Pa).
T (float) – Initial tank temperature (K).
heating_power (float) – The heating power going into the tank during parking (W).
q (float, optional) – Initial vapor quality of the tank. The default is 0 (pure liquid).
Returns:
Pandas dataframe containing calculation conditions and results.
Each key stores a floating point number.
The dictionary keys and their respective values are:
”init pressure”: initial pressure
”init temperature”: initial temperature
”init quality”: initial vapor quality
”dormancy time”: time until tank needs to be vented in seconds
”final temperature”: temperature of the tank as venting begins
”final quality”: vapor quality at the time of venting
”final pressure”: pressure at the time of venting
”capacity error”: error between final and initial capacity
”total energy change”: difference in internal energy between the
initial and final conditions
”solid heat capacity contribution”: the amount of heat absorbed
by the tank walls
The thermal resistance of the tank walls (K/W). The default is 0.
If 0, the value will not be considered in simulations. If the
arguments ‘surface_area’ and ‘heat_transfer’ are passed,
‘thermal_resistance’ will be calculated based on those two
arguments as long as the user does not pass a value to
‘thermal_resistance’.
The heat transfer coefficient of the tank surface (W/(m^2 K)).
The default is 0.
Type:
float, optional
Initialize a SorbentTank object.
Parameters:
sorbent_material (SorbentMaterial) – An object storing the properties of the sorbent material used in
the tank.
aluminum_mass (float, optional) – The mass of aluminum making up the tank walls (kg). The default is
0.
carbon_fiber_mass (float, optional) – The mass of carbon fiber making up the tank walls (kg). The default
is 0.
steel_mass (float, optional) – The mass of steel making up the tank walls (kg). The default is 0.
vent_pressure (float, optional) – Maximum pressure at which the tank has to be vented (Pa). The
default is None.
min_supply_pressure (float, optional) – The minimum supply pressure (Pa) for discharging simulations. The
default is 1E5.
thermal_resistance (float, optional) – The thermal resistance of the tank walls (K/W). The default is 0.
If 0, the value will not be considered in simulations. If the
arguments ‘surface_area’ and ‘heat_transfer’ are passed,
‘thermal_resistance’ will be calculated based on those two
arguments as long as the user does not pass a value to
‘thermal_resistance’.
surface_area (float, optional) – Outer surface area of the tank in contact with the environment
(m^2). The default is 0.
heat_transfer_coefficient (float, optional) – The heat transfer coefficient of the tank surface (W/(m^2 K)).
The default is 0.
volume (float, optional) – Internal volume of the storage tank (m^3). The default is None.
This value is required unless the set capacity and operating
conditions are defined, in which case the volume is calculated from
the capacity and operating conditions.
set_capacity (float, optional) – Set internal capacity of the storage tank (mol). The default is
None. If specified, this will override the user-specified tank
volume.
full_pressure (float, optional) – Pressure (Pa) of the tank when it is considered full. The default
is None.
empty_pressure (float, optional) – Pressure (Pa) of the tank when it is considered empty. The default
is None.
full_temperature (float, optional) – Temperature (K) of the tank when it is considered full. The
default is None.
empty_temperature (float, optional) – Temperature (K) of the tank when it is considered empty. The
default is None.
full_quality (float, optional) – Vapor quality of the tank when it is considered full. The default
is 1 (Gas).
empty_quality (float, optional) – Vapor quality of the tank when it is considered empty. The default
is 1 (Gas).
set_sorbent_fill (float, optional) – Ratio of tank volume filled with sorbent. The default is 1
(completely filled with sorbent).
Returns:
Object which stores various properties of a storage tank containing
sorbents. It also has some useful methods related to the tank, most
notably dormancy calculation.
Calculate dormancy time given a constant heating rate.
Parameters:
p (float) – Initial tank pressure (Pa).
T (float) – Initial tank temperature (K).
heating_power (float) – The heating power going into the tank during parking (W).
q (float, optional) – Initial vapor quality of the tank. The default is 0 (pure liquid).
Returns:
Pandas dataframe containing calculation conditions and results.
Each key stores a floating point number.
The dictionary keys and their respective values are:
”init pressure”: initial pressure
”init temperature”: initial temperature
”init quality”: initial vapor quality
”dormancy time”: time until tank needs to be vented in seconds
”final temperature”: temperature of the tank as venting begins
”final quality”: vapor quality at the time of venting
”final pressure”: pressure at the time of venting
”capacity error”: error between final and initial capacity
”total energy change”: difference in internal energy between the
initial and final conditions
”sorbent energy contribution”: the amount of heat taken by
the adsorbed phase via desorption
”bulk energy contribution”: the amount of heat absorbed by the
bulk phase
”immersion heat contribution”: how much heat has been absorbed
by un-immersing the sorbent material in the fluid
”solid heat capacity contribution”: the amount of heat absorbed
by the tank walls
A dataframe containing the results of dynamic simulations. See notes
for the column names and the variables each column has.
Type:
pd.DataFrame
Notes
Below is a list of the pandas DataFrame column names and a short
description of the variable stored inside each series.
t: time (seconds)
p: pressure (Pa)
T: temperature (K)
na: amount of fluid adsorbed (moles)
ng: amount of fluid in gaseous form (moles)
nl: amount of fluid in liquid form (moles)
ns: amount of fluid in supercritical form (moles)
Qcoolreq: cumulative amount of cooling required (J)
Qheatreq: cumulative amount of heating required (J)
nout: cumulative amount of fluid vented (moles)
Hout: cumulative amount of vented fluid enthalpy (J)
nin: cumulative amount of fluid inserted (moles)
Hin: cumulative amount of inserted fluid enthalpy (J)
Qcooladd: cumulative amount of user specified cooling (J)
Qheatadd: cumulative amount of user specified heating (J)
Qleak: cumulative amount of heat leakage into the tank (J)
ma: mass of fluid adsorbed (kg)
mg: mass of fluid in gaseous form (kg)
ml: mass of fluid in liquid form (kg)
ms: mass of fluid in supercritical form (kg)
mout: cumulative mass of fluid vented (kg)
min: cumulative mass of fluid inserted (kg)
na_dot: the amount of fluid (moles) being adsorbed per
second.
ng_dot: the first derivative of the amount of fluid in
gaseous form w.r.t. time. Its unit is mol/s.
nl_dot: the first derivative of the amount of fluid in
liquid form w.r.t. time. Its unit is mol/s
ns_dot: the first derivative of the amount of fluid in
supercritical form w.r.t. time. Its unit is mol/s.
Qcoolreq_dot: the cooling power (W) required to maintain a
constant pressure during refuel.
Qheatreq_dot: the heating power (W) required to maintain a
constant pressure during discharge.
nout_dot: the rate at which fluid is being vented from the
tank (mol/s).
Hout_dot: the rate at which enthalpy is taken away by fluid
leaving the tank (W).
nin_dot: the rate at which fluid is entering the tank
(mol/s).
Hin_dot: the rate at which enthalpy is added by fluid
fluid entering the tank (W).
Qcooladd_dot: the user specified cooling power (W).
Qheatadd_dot: the user specified heating power (W).
Qleak_dot: the rate of heat leakage into the tank (W).
ma_dot: the mass of fluid (kg) being adsorbed per second.
mg_dot: the first derivative of the mass of fluid in
gaseous form w.r.t. time. Its unit is kg/s.
ml_dot: the first derivative of the mass of fluid in
liquid form w.r.t. time. Its unit is kg/s.
ms_dot: the first derivative of the mass of fluid in
supercritical form w.r.t. time. Its unit is kg/s.
mout_dot: the rate at which fluid is being vented from the
tank (kg/s).
min_dot: the rate at which fluid is being inserted into the
tank (kg/s).
Initialize a SimResults object.
Parameters:
pressure (Union[List[float], np.ndarray]) – A list or numpy array containing the pressure values inside of the
tank (Pa) as it changes over time.
temperature (Union[List[float], np.ndarray]) – A list or numpy array containing the temperature values inside of
the tank (K) as it changes over time.
time (Union[List[float], np.ndarray]) – A list or numpy array containing the simulation time points (s) at
which results are reported.
moles_adsorbed (Union[List[float], np.ndarray]) – A list or numpy array containing the amount of fluid that is
adsorbed (moles) at given points in time.
moles_gas (Union[List[float], np.ndarray]) – A list or numpy array containing the amount of fluid stored in
gaseous form (moles) at given points in time.
moles_liquid (Union[List[float], np.ndarray]) – A list or numpy array containing the amount of fluid stored in
liquid form (moles) at given points in time.
moles_supercritical (Union[List[float], np.ndarray]) – A list or numpy array containing the amount of supercritical fluid
in the tank (moles) at given points in time.
tank_params (Union[StorageTank, SorbentTank]) – An object containing the parameters of the storage tank used for
the dynamic simulation.
sim_type (str) – A string describing the type of simulation that was conducted.
sim_params (SimParams) – An object containing the parameters used for the simulation.
stop_reason (str) – A string describing why the simulation was terminated.
inserted_amount (Union[List[float], np.ndarray], optional) – The cumulative amount of fluid inserted into the tank (moles)
throughout the dynamic simulation. The default is 0.
flow_energy_in (Union[List[float], np.ndarray], optional) – The cumulative amount of enthalpy brought by fluid flowing into the
tank (J) throughout the dynamic simulation. The default is 0.
cooling_required (Union[List[float], np.ndarray], optional) – The cumulative amount of cooling required (J) to maintain a
constant pressure during refueling. The default is 0.
heating_required (Union[List[float], np.ndarray], optional) – The cumulative amount of heating required (J) to maintain a
constant pressure during discharging. The default is 0.
cooling_additional (Union[List[float], np.ndarray], optional) – The cumulative amount of additional cooling (J) inputted to the
simulation via a user-defined function. The default is 0.
heating_additional (Union[List[float], np.ndarray], optional) – The cumulative amount of additional heating (J) inputted to the
simulation via a user-defined function. The default is 0.
heat_leak_in (Union[List[float], np.ndarray], optional) – The cumulative amount of heat (J) which has leaked into the tank
from the environment. The default is 0.
vented_amount (Union[List[float], np.ndarray], optional) – The cumulative amount of fluid vented (moles) throughout the
dynamic simulation. The default is 0.
vented_energy (Union[List[float], np.ndarray], optional) – The cumulative amount of enthalpy taken by fluid flowing out of the
tank (J) throughout the dynamic simulation. The default is 0.
Returns:
An object containing the results of a dynamic simulation run by
pytanksim. It has functions for exporting and plotting.
Output final tank conditions at the end of the simulation.
Parameters:
idx (int, optional) – The index of the simulation results array from which the values are
to be taken. The default is -1 (the last time point in the
simulation).
filename (str) – Path to a csv file which was exported by pytanksim.
import_components (bool) – If True, this function will return a tuple with contents as
follows: SimResults, StorageTank, SimParams.
If False, this function will only return the SimResults object.
The default option is False.
Returns:
A single object containing the simulation results, or a tuple
with SimResults, StorageTank, and SimParams objects.
storage_tank (Union[StorageTank, SorbentTank]) – An object with the properties of the storage tank. Can either be of the
class StorageTank or its child class SorbentTank.
boundary_flux (BoundaryFlux) – An object containing information about the mass and energy entering and
leaving the control volume of the tank.
simulation_params (SimParams) – An object containing various parameters for the dynamic simulation.
simulation_type (str, optional) –
A string describing the type of the simulation to be run. The default
is “Default”. The valid types are:
Default : A regular dynamic simulation with no constraints.
Cooled : A simulation where the tank is cooled to maintain a
constant pressure. Here, the cooling power becomes one of the
output variables. Typically used for simulating refueling after
the tank has reached maximum allowable working pressure, or for
simulating zero boil-off systems which are actively cooled.
Heated: A simulation where the tank is heated to maintain a
constant pressure. Here, the heating power becomes one of the
output variables. Typically used for simulating discharging when
the tank has reached the minimum supply pressure of the fuel cell
system.
Venting : A simulation where the tank vents the fluid stored
inside to maintain a constant pressure. Here, the amount vented
becomes an output variable. Typically used to simulate boil-off
or refueling with a feed-and-bleed scheme.
phase (int, optional) – Specifies whether the fluid being stored is a single phase (1) or a
two-phase (2) liquid and gas mixture. The default is 1 for single
phase.
Returns:
A simulation object which can be run() to output a SimResults
object. Which class will be generated depends on the parameters
provided to this function.
Automatically run and restart simulations until a target is reached.
Parameters:
storage_tank (Union[StorageTank, SorbentTank]) – An object with the properties of the storage tank. Can either be of the
class StorageTank or its child class SorbentTank.
boundary_flux (BoundaryFlux) – An object containing information about the mass and energy entering and
leaving the control volume of the tank.
simulation_params (SimParams) – An object containing various parameters for the dynamic simulation.
stop_at_max_pres (bool, optional) – Whether or not the simulation is to be stopped when the tank hits its
maximum allowable working pressure. The default is False.
stop_at_min_pres (bool, optional) – Whether or not the simulation is to be stopped when the tank hits its
minimum supply pressure. The default is False.
handle_max_pres (str, optional) – A string indicating how the simulation is to continue if the tank has
reached its maximum allowable working pressure. “Cooled” means that the
tank will not vent any gas, but will be actively cooled down. “Venting”
means that the tank will begin to vent the exact amount of fluid inside
to maintain the maximum pressure. The default is “Cooled”.
handle_min_pres (str, optional) – A string indicating how the simulation is to continue if the tank has
reached its minimum supply pressure. “Heated” means exactly enough heat
will be provided to the tank to maintain the minimum supply pressure.
“Continue” means the simulation will restart without changing any
parameters. The default is “Heated”.
Returns:
An object for storing and manipulating the results of the dynamic
simulations.