Cryo tanks
---------------
---------------
Cryo tanks and how to model them should be addressed here.
I would like to show some helpful information here, esp. some interesting numbers for nice substances.
But first a few thoughts about how we could model all this.
I link two pictures of the validation model I made in Matlab/Simulink :
https://mega.nz/file/ktYgSADD#-aep3IQcRInYpFuQrcX6mpcJ4OUde43UygEDanZLQlo (Cryo Tank Model TopView)
https://mega.nz/file/QxQhHQJK#pIGjxyJKkbXHKSG_Zp_WuhtjbV3mZX0sZRFZWIQPqU4 (CryoTankBoilOff)
Modeling cryo tanks
------------------------
- What is stored in a tank shall be named "substance"
- The substance stored in a tank consists of two phases: liquid and gaseous
- The fluid has a vapor pressure, which only depends on the fluid temperature
- The fluid has a vapor temperature, which only depends on the pressure in the gaseous phase
- Pressure in the liquid phase and in the gaseous phase are given as to be equal (quasi-stationary Ansatz)
- Temperature in the fluid phase and in the gaseous phase are given as to be equal (quasi-stationary Ansatz)
- So we have a (substance) pressure and a (substance) temperature at any time, everywhere, in the tank
- We have a liquid and a gaseous drain check valve on the tank to drain substance,
opening when an arbitrary given limit is exceeded, leading to (unwanted) boil-off losses
- These valves can be opened manually in addition to reduce substance in tank
- We have additional gaseous boil-off losses, especially with hydrogen, due to leakage and diffusion
- Fluid leakage is not mentioned in this model
An extended HeatBody (heat capacity- and transfer) model is included in this way :
- The tank wall consists of a Surface and an Inside
- Surface and Inside have the same heat capacity C
- Surface and Inside have different temperatures when not in equilibrium
- Surface and Inside are strongly insulated to each other (MLI insulation) but always connected together
- Inside and Substance are in close heat contact but are treated as separated heat capacities
- Parts of the Surface can be connected to different other Surfaces or ambient (vacuum or atmosphere)
- Each of these connections lead to a different heat flow to the Surface
- Heat flow to Inside can occur due to temperature difference to Surface and temperature difference to the Substance
- Surface connection to vacuum yields to black body radiation as a heatsink
- Surface connection to atmosphere yields to convective heat flow
- Surface connection to a different Surface of another heat body leads to heat exchange between the Surfaces
- Heat transfer is linear and calculated by the means of heat transfer coefficients
- Exception is heat flow to atmosphere, which is nonlinear
HeatBody model extension :
- Substance in tank can be cooled directly
(could be a spiral tube inside tank with ultra cold refrigerant (LiqHe))
Tank Model Interface
- Mass Flow In and -Out (Refueling, De-fueling), with corresponding temperatures
- Drain valves for liquid and gaseous phase
- External Heating Power
- Arbitrary number of connected surfaces with corresponding temperatures
- Wall with MLI insulation, heat exchange with atmosphere and Black Body Radiation
Discussion
----------
1. Substance in Tank
2. Tank Wall
3. Tank Surface Contacts
1. Substance in Tank
Mass of Substance :
m_substance[kg] : Integrated m_dot_substance[kg/s]
m_dot_substance[kg/s] = MassFlowIn[kg/s] - MassFlowOut[kg/s] - mpFluidDrain[kg/s] - mpGasDrain[kg/s]
MassFlowIn[kg/s] : external
MassFlowOut[kg/s] : external
mpFluidDrain[kg/s] = mpLiquidDrainValve_VolumeLimiter[kg/s] + mpLiquidDrainValve_Manual[kg/s]
mpLiquidDrainValve_VolumeLimiter[kg/s] = 0
<=> VFluid <= V0
else: max( LiquidExceedMassFlow , mpLiquidDrainSet[kg/s] )
LiquidExceedMassFlow[kg/s] = MassFlowIn[kg/s] - MassFlowOut[kg/s]
VFluid = Volume of fluid in tank. Calculation described below.
V0 = TankDryStorageVolume
mpLiquidDrainSet[kg/s] : small, numerical reasonable value, like -1 g/s , adapt to tank volume
mpGasdrain[kg/s] = mpGasDrainValve_BoilOff[kg/s] + mpGasDrainValve_Manual[kg/s]
mpGasDrainValve_BoilOff[kg/s] = 0
<=> VaporizationPressure(T)[Pa] < pBoilCheckValveLimit[Pa]
else : mpBoilOffValveSet [kg/s]
VaporizationPressure(T)[Pa] : table parameter
pBoilCheckValveLimit[Pa] : constant parameter. 1.2bar e.g. Reasonable Limit, depending on tank structure stability etc.
mpBoilOffValveSet [kg/s][kg/s] : small, numerical reasonable value, like -0.01 g/s , adapt to tank volume
Temperatur of substance :
T_substance[K] : Integrated T_dot_substance[K/s]
T_dot_substance[K/s] = T_dot_mixture[K/s] + ( PSubstanceHeat[W] + PBoilOff[W] ) / CV [J/K]
T_dot_mixture[K/s] = (MassFlowInTemp[K]-T_substance[K]) * MassFlowIn[kg/s] / m_Sustance[kg]
PSubstanceHeat[W] : external
PBoilOff[W] = VaporizationEnthalpy(T)[J/k] * mpGasDrainValve_BoilOff[kg/s]
CV[J(K] = cv[J/kg/k] * m_substance[kg]
(only boil-off cooling power is taken into account here, since vaporization enthalphy for a sealed tank is negligible)
Pressure of substance :
pSubstance[Pa] = VaporizationPressure(T)[Pa]
<=> VaporizationPressure(T)[Pa] < pBoilCheckValveLimit[Pa]
else : pBoilCheckValveLimit[Pa]
Mass of fluid :
mFluid[kg] = (VFluid100%[m^3] - DeltaV_Vapo[m^3]) * DensityFluid(T)[kg/m^3]
VFluid100%[m^3] = m_substance[kg] / DensityFluid(T)[kg/m^3]
DeltaV_Vapo[m^3] = ( V0[m^3] - VFluid100%[m^3] ) * rho_ratio
rho_ratio = DensityGas(T)[kg/m^3] / ( DensityFluid(T)[kg/m^3] - DensityGas(T)[kg/m^3])
Volume of fluid :
VFluid = min( V0, VFluid_unlim)
VFluid_unlim = mFluid / DensityFluid(T)[kg/m^3]
Mixture Calculation
-------------------
Given a tank with substance mass m and temperature T.
There is a fluid mass flow into the tank with temperature Tx and mass flow rate mx_dot .
Given a integration stepsize Dt (1ms e.g.) , so that mx_dot * Dt << m is given,
temperature derivation of the substance in the tank is given as follows:
T_dot = Tx * mx_dot/m
New Temperature T' of fluid in tank calculates to : T' = T + T_dot*Dt
New mass : m' = m + mx_dot*Dt
If mx_dot*Dt > m (nearly empty tank) take:
T_dot = 0
T' = Tx .
---------------
---------------
Cryo tanks and how to model them should be addressed here.
I would like to show some helpful information here, esp. some interesting numbers for nice substances.
But first a few thoughts about how we could model all this.
I link two pictures of the validation model I made in Matlab/Simulink :
https://mega.nz/file/ktYgSADD#-aep3IQcRInYpFuQrcX6mpcJ4OUde43UygEDanZLQlo (Cryo Tank Model TopView)
https://mega.nz/file/QxQhHQJK#pIGjxyJKkbXHKSG_Zp_WuhtjbV3mZX0sZRFZWIQPqU4 (CryoTankBoilOff)
Modeling cryo tanks
------------------------
- What is stored in a tank shall be named "substance"
- The substance stored in a tank consists of two phases: liquid and gaseous
- The fluid has a vapor pressure, which only depends on the fluid temperature
- The fluid has a vapor temperature, which only depends on the pressure in the gaseous phase
- Pressure in the liquid phase and in the gaseous phase are given as to be equal (quasi-stationary Ansatz)
- Temperature in the fluid phase and in the gaseous phase are given as to be equal (quasi-stationary Ansatz)
- So we have a (substance) pressure and a (substance) temperature at any time, everywhere, in the tank
- We have a liquid and a gaseous drain check valve on the tank to drain substance,
opening when an arbitrary given limit is exceeded, leading to (unwanted) boil-off losses
- These valves can be opened manually in addition to reduce substance in tank
- We have additional gaseous boil-off losses, especially with hydrogen, due to leakage and diffusion
- Fluid leakage is not mentioned in this model
An extended HeatBody (heat capacity- and transfer) model is included in this way :
- The tank wall consists of a Surface and an Inside
- Surface and Inside have the same heat capacity C
- Surface and Inside have different temperatures when not in equilibrium
- Surface and Inside are strongly insulated to each other (MLI insulation) but always connected together
- Inside and Substance are in close heat contact but are treated as separated heat capacities
- Parts of the Surface can be connected to different other Surfaces or ambient (vacuum or atmosphere)
- Each of these connections lead to a different heat flow to the Surface
- Heat flow to Inside can occur due to temperature difference to Surface and temperature difference to the Substance
- Surface connection to vacuum yields to black body radiation as a heatsink
- Surface connection to atmosphere yields to convective heat flow
- Surface connection to a different Surface of another heat body leads to heat exchange between the Surfaces
- Heat transfer is linear and calculated by the means of heat transfer coefficients
- Exception is heat flow to atmosphere, which is nonlinear
HeatBody model extension :
- Substance in tank can be cooled directly
(could be a spiral tube inside tank with ultra cold refrigerant (LiqHe))
Tank Model Interface
- Mass Flow In and -Out (Refueling, De-fueling), with corresponding temperatures
- Drain valves for liquid and gaseous phase
- External Heating Power
- Arbitrary number of connected surfaces with corresponding temperatures
- Wall with MLI insulation, heat exchange with atmosphere and Black Body Radiation
Discussion
----------
1. Substance in Tank
2. Tank Wall
3. Tank Surface Contacts
1. Substance in Tank
Mass of Substance :
m_substance[kg] : Integrated m_dot_substance[kg/s]
m_dot_substance[kg/s] = MassFlowIn[kg/s] - MassFlowOut[kg/s] - mpFluidDrain[kg/s] - mpGasDrain[kg/s]
MassFlowIn[kg/s] : external
MassFlowOut[kg/s] : external
mpFluidDrain[kg/s] = mpLiquidDrainValve_VolumeLimiter[kg/s] + mpLiquidDrainValve_Manual[kg/s]
mpLiquidDrainValve_VolumeLimiter[kg/s] = 0
<=> VFluid <= V0
else: max( LiquidExceedMassFlow , mpLiquidDrainSet[kg/s] )
LiquidExceedMassFlow[kg/s] = MassFlowIn[kg/s] - MassFlowOut[kg/s]
VFluid = Volume of fluid in tank. Calculation described below.
V0 = TankDryStorageVolume
mpLiquidDrainSet[kg/s] : small, numerical reasonable value, like -1 g/s , adapt to tank volume
mpGasdrain[kg/s] = mpGasDrainValve_BoilOff[kg/s] + mpGasDrainValve_Manual[kg/s]
mpGasDrainValve_BoilOff[kg/s] = 0
<=> VaporizationPressure(T)[Pa] < pBoilCheckValveLimit[Pa]
else : mpBoilOffValveSet [kg/s]
VaporizationPressure(T)[Pa] : table parameter
pBoilCheckValveLimit[Pa] : constant parameter. 1.2bar e.g. Reasonable Limit, depending on tank structure stability etc.
mpBoilOffValveSet [kg/s][kg/s] : small, numerical reasonable value, like -0.01 g/s , adapt to tank volume
Temperatur of substance :
T_substance[K] : Integrated T_dot_substance[K/s]
T_dot_substance[K/s] = T_dot_mixture[K/s] + ( PSubstanceHeat[W] + PBoilOff[W] ) / CV [J/K]
T_dot_mixture[K/s] = (MassFlowInTemp[K]-T_substance[K]) * MassFlowIn[kg/s] / m_Sustance[kg]
PSubstanceHeat[W] : external
PBoilOff[W] = VaporizationEnthalpy(T)[J/k] * mpGasDrainValve_BoilOff[kg/s]
CV[J(K] = cv[J/kg/k] * m_substance[kg]
(only boil-off cooling power is taken into account here, since vaporization enthalphy for a sealed tank is negligible)
Pressure of substance :
pSubstance[Pa] = VaporizationPressure(T)[Pa]
<=> VaporizationPressure(T)[Pa] < pBoilCheckValveLimit[Pa]
else : pBoilCheckValveLimit[Pa]
Mass of fluid :
mFluid[kg] = (VFluid100%[m^3] - DeltaV_Vapo[m^3]) * DensityFluid(T)[kg/m^3]
VFluid100%[m^3] = m_substance[kg] / DensityFluid(T)[kg/m^3]
DeltaV_Vapo[m^3] = ( V0[m^3] - VFluid100%[m^3] ) * rho_ratio
rho_ratio = DensityGas(T)[kg/m^3] / ( DensityFluid(T)[kg/m^3] - DensityGas(T)[kg/m^3])
Volume of fluid :
VFluid = min( V0, VFluid_unlim)
VFluid_unlim = mFluid / DensityFluid(T)[kg/m^3]
Mixture Calculation
-------------------
Given a tank with substance mass m and temperature T.
There is a fluid mass flow into the tank with temperature Tx and mass flow rate mx_dot .
Given a integration stepsize Dt (1ms e.g.) , so that mx_dot * Dt << m is given,
temperature derivation of the substance in the tank is given as follows:
T_dot = Tx * mx_dot/m
New Temperature T' of fluid in tank calculates to : T' = T + T_dot*Dt
New mass : m' = m + mx_dot*Dt
If mx_dot*Dt > m (nearly empty tank) take:
T_dot = 0
T' = Tx .
Upvote
0