modelFluid

Base model for a fluid species

Extends from Species (Base model for one chemical species in one phase).

Information

Fixed assumptions:

  1. The gradient of material current is uniform in the direction of the current.
  2. The normal translational force on pairs of boundaries is split equally between the boundaries. This includes the body, shear (transverse translational transport), and exchange forces due to intermolecular drag and transfer during chemical reactions and phase change. It excludes the thermodynamic, dynamic (advective normal translational transport), and nonequilibrium (irreversible compression) pressures. It also excludes transient effects since translational momentum is stored at the boundaries (not in the subregion).
  3. Nonequilibrium pressure is included in the thermodynamic states at the boundaries. In particular, the specific enthalpy at a boundary is a function of the temperature and the sum of the thermodynamic and nonequilibrium pressures at the boundary (and a possible artifact of dynamic pressure; see the first note regarding parameters). The rate of advection of energy is the product of this specific enthalpy and the material current.

Notes regarding the parameters:

  1. If approxVelocity is true, then the normal velocities at the boundaries are calculated from the boundary currents assuming that the density is uniform. This avoids nonlinear systems of equations, but it introduces an artifact of the dynamic pressure into the thermodynamic states at the boundaries. The extra pressure is m Ṅi2 (v - vi)/A′, where m is the specific mass, v is the specific volume in the subregion, vi is the specific volume at the boundary, Ṅi is the boundary current, and A′ is the available cross-sectional area. This affects the energy balance via the specific enthalpy at the boundaries.
  2. If consTransX, consTransY, or consTransZ is ConsTrans.steady, then the derivative of translational momentum at and normal to the boundaries (proportional to ∂Ṅi/∂t) is treated as zero and removed from the translational momentum balances/material transport equations at the corresponding boundaries.
  3. If consRot is true, then rotational momentum is conserved without storage (i.e., steady). This means that the shear forces are mapped so that there is no net torque around any rotational axis that has all its boundaries included (i.e., all the boundaries around the perimeter). Rotational momentum is not exchanged among species or directly transported (i.e., uniform or shaft rotation).
  4. Upstream discretization is applied by default. The central difference scheme may be used by setting upstreamX, upstreamY, and upstreamZ to true. The typical diffusion properties are such that the Péclet number for the upstream discretization of pressure will be much less (factor of 1/10,000) than the Péclet numbers for translational and thermal transport. Therefore, it may appear that pressure is not advected with the material transport stream.
  5. The indices of the translational Nusselt number (NuΦ) correspond to the orientation of the translational momentum that is transported, not the axes of material transport.
  6. The default thermal Nusselt number is one, which represents pure conduction through the gas. Use 3.66 for internal flow where the boundaries are uniform in temperature or 48/11 (approximately 4.36) if the heat flux is uniform [Incropera2002].

Translational momentum and thermal energy are advected as material is exchanged due to phase change and reactions. This occurs at the velocity (φ) and the specific entropy-temperature product (sT) of the reactants (source configurations), where the reactant/product designation depends on the current conditions.

The advective exchange is modeled via a stream connector (Chemical). The rate of advection of translational momentum is the product of the velocity of the source (φ) and the mass flow rate (Ṁ or mṄ). The rate of thermal advection is the specific entropy-temperature product of the source (sT) times the rate of material exchange (Ṅ). If there are multiple sources, then their contributions are additive. If there are multiple sinks, then translational momentum is split on a mass basis and the thermal stream is split on a particle-number basis.

For more information, please see the Species model.

Parameters

TypeNameDefaultDescription
Integern_intra (from Species)0Number of exchange connections within the phase
Integern_inter (from Species)0Number of exchange connections with other phases
Initialization
InitinitMaterialInit.pressureMethod of initializing the material state
InitinitEnergyInit.temperatureMethod of initializing the thermal state
Q.AmountN_IC (from Species)Initial amount of material
Q.Densityrho_IC (from Species)Initial density
Q.VolumeV_IC (from Species)Initial volume
Q.PressureAbsolutep_IC (from Species)Initial pressure
Q.TemperatureAbsoluteT_IC (from Species)Initial temperature
Q.Potentialh_IC (from Species)Initial specific enthalpy
Q.Potentialg_IC (from Species)Initial Gibbs potential
Assumptions
Integern_trans (from Species)1Number of transport axes
Integern_chem0Number of reaction and phase change processes
Independence factors
Q.NumberAbsolute[n_intra,n_trans]k_intra_Phi (from Species)ones(n_intra, n_trans)For translational exchange among species within the phase
Q.NumberAbsolute[n_intra]k_intra_Q (from Species)ones(n_intra)For thermal exchange among species within the phase
Assumptions › Formulation of the conservation equations
ConsThermoconsMaterialConsThermo.dynamicMaterial
BooleanconsRotfalseConserve rotational momentum
ConsTransconsTransXConsTrans.dynamicX-axis translational momentum
ConsTransconsTransYConsTrans.dynamicY-axis translational momentum
ConsTransconsTransZConsTrans.dynamicZ-axis translational momentum
ConsThermoconsEnergyConsThermo.dynamicEnergy
Assumptions › Axes with upstream discretization
BooleanupstreamXtrueX
BooleanupstreamYtrueY
BooleanupstreamZtrueZ
Assumptions › Flow conditions
BooleanapproxVelocitytrueCalculate normal boundary velocities assuming uniform density
Q.NumberAbsolute[Axis]Nu_Phi{4, 4, 4}Translational Nusselt numbers
Q.NumberAbsoluteNu_Q1Thermal Nusselt number
Advanced
Q.AmountN00Nominal amount of material to prevent depletion

Connectors

TypeNameDefaultDescription
Connectors.Intra[n_intra]intra (from Species)Connectors to exchange translational momentum and energy within the phase
Connectors.Inter[n_inter]inter (from Species)Connectors to exchange translational momentum and energy with all other species
Connectors.Daltondalton (from Species)Connector for additivity of pressure
Connectors.Boundary[n_trans,Side]boundariesConnectors for transport
Connectors.Chemical[n_chem]chemicalConnector for reactions and phase change

Components

TypeNameDefaultDescription
Q.Mobilitymu (from Species)Data.mu(T, v)Mobility
Q.TimeAbsolutenu (from Species)Data.nu(T, v)Thermal independity
Q.AmountN (from Species)Amount of material
Q.TemperatureAbsoluteT (from Species)Temperature
Q.Velocity[n_trans]phi (from Species)Velocity
Q.PressureAbsolutep (from Species)Pressure
Q.Potentialg (from Species)Specific Gibbs energy
Q.MassM (from Species)Mass
Q.VolumeSpecificv (from Species)Specific volume
Q.Potentialh (from Species)Specific enthalpy
Q.NumberAbsolutes (from Species)Specific entropy
Q.Densityrho (from Species)1/vDensity
Q.MassVolumicmrho (from Species)Data.m*rhoVolumic mass
Q.AmountS (from Species)N*sEntropy
Q.CapacityThermalSpecificc_p (from Species)Data.c_p(T, p)Isobaric specific heat capacity
Q.CapacityThermalSpecificc_v (from Species)Data.c_v(T, p)Isochoric specific heat capacity
Q.PressureReciprocalbeta (from Species)Data.beta(T, p)Isothermal compressibility
Q.TimeAbsolute[n_intra,n_trans]tau_PhiE_intra (from Species){Data.m*mu*k_intra_Phi[i, :] for i in 1:n_intra}Time constants for translational intra-phase exchange
Q.TimeAbsolute[n_inter,n_trans]tau_PhiE_inter (from Species){Data.m*mu*k_inter_Phi[i, :] for i in 1:n_inter}Time constants for translational inter-phase exchange
Q.TimeAbsolute[n_intra]tau_QE_intra (from Species)c_p*nu*k_intra_QTime constants for thermal intra-phase exchange
Q.TimeAbsolute[n_inter]tau_QE_inter (from Species)c_p*nu*k_inter_QTime constants for thermal inter-phase exchange
Q.Force[n_trans]f_DE (from Species)sum(intra[i].mPhidot for i in 1:n_intra) + sum(inter[i].mPhidot for i in 1:n_inter)Friction from other configurations (diffusive exchange)
Q.PowerEdot_DE (from Species)sum(intra[i].phi*intra[i].mPhidot for i in 1:n_intra) + sum(inter[i].phi*inter[i].mPhidot for i in 1:n_inter) + sum(intra.Qdot) + sum(inter.Qdot)Rate of diffusion of energy from other configurations
Q.ContinuityzetaData.zeta(T, v)Continuity
Q.FluidityetaData.eta(T, v)Fluidity
Q.ResistivityThermalthetaData.theta(T, v)Thermal resistivity
Q.TimeAbsolute[n_chem]tauprimezeros(n_chem)Specific exchange currents
Q.Length[:]kLL[cartTrans]Effective transport length
Q.Current[n_trans]ICurrent
Q.Velocity[n_trans,Side]phi_boundariesNormal velocities at the boundaries
Q.Force[n_trans]fTotal normal translational force on pairs of boundaries
Q.Force[n_trans]minusDeltafDynamic and nonequilibrium compression forces
Q.Density[n_trans,Side]rho_boundariesfill(1, n_trans, 2)./Data.v_Tp(boundaries.T, boundaries.p)Densities at the boundaries
Q.VolumeRate[n_trans,Side]Vdot_boundariesboundaries.Ndot./rho_boundariesVolume flow rates into the boundaries
Q.PressureAbsolute[n_trans]q(Data.m/2)*phi.*I./AprimeDynamic pressure
Q.Velocity[n_chem,n_trans]phi_chemicalactualStream(chemical.phi)Velocity of the chemical streams
Q.PotentialAbsolute[n_chem]sT_chemicalactualStream(chemical.sT)Specific entropy-temperature product of the chemical streams
Q.Temperature[n_trans]DeltaTDelta(boundaries.T)Differences in temperatures across the boundaries
Q.Pressure[n_trans]DeltapDelta(boundaries.p)Differences in pressures across the boundaries
Q.Power[n_trans,Side]Hprimedot(Data.h(boundaries.T, boundaries.p) + Data.m*phi_boundaries.^2/2).*boundaries.NdotFlow rates of enthalpy + kinetic energy into the boundaries
Q.Potential[n_trans,Side]g_boundariesData.g(boundaries.T, boundaries.p)Gibbs potentials at the boundaries
Q.Potential[n_trans]DeltagDelta(g_boundaries)Differences in Gibbs potentials across the boundaries
Q.TimeAbsolute[n_trans]tau_NTfill(zeta*beta*N, n_trans)./(2*Aprime)Time constants for material transport
Q.TimeAbsolute[n_trans]tau_PhiTM*eta*kL./(2*Nu_Phi[cartTrans].*Aprime)Time constants for transverse translational transport
Q.TimeAbsolute[n_trans]tau_QT(N*c_v*theta/(2*Nu_Q))*kL./AprimeTime constants for thermal transport
Q.Number[n_trans]Pe_Ntau_NT.*I/NMaterial Peclet numbers
Q.Number[n_trans]Pe_Phitau_PhiT.*I/NTranslational Peclet numbers
Q.Number[n_trans]Pe_Qtau_QT.*I/NThermal Peclet numbers
Q.Force[n_trans,n_trans]mphiIouterProduct(I, Data.m*phi)Bulk rate of translational advection (1st index: transport axis, 2nd index: translational component)
Q.VolumeRate[n_trans]Vdotv*IBulk volumetric flow rate
Q.Power[n_trans]hIh*IBulk enthalpy flow rate
Q.Force[n_trans]MaM*(der(phi)/U.s + environment.a[cartTrans]) + N*Data.z*environment.E[cartTrans]Acceleration force (including acceleration due to body forces)
Q.Force[n_trans]f_thermo-Delta(boundaries.p).*AprimeThermodynamic force
Q.Force[n_trans]f_AEData.m*sum((actualStream(chemical[i].phi) - phi)*chemical[i].Ndot for i in 1:n_chem)Acceleration force due to advective exchange
Q.Force[n_trans]f_AT{sum(((if i == j then phi_boundaries[j, :] else boundaries[j, :].phi[cartWrap(cartTrans[i] - cartTrans[j])]) - {phi[i], phi[i]})*boundaries[j, :].Ndot*Data.m for j in 1:n_trans) for i in 1:n_trans}Acceleration force due to advective transport
Q.Force[n_trans]f_DT{sum(sum(if i == j then {0, 0} else boundaries[j, :].mPhidot[cartWrap(cartTrans[i] - cartTrans[j])]) for j in 1:n_trans) for i in 1:n_trans}Shear force from other subregions (diffusive transport)
Q.PowerNdere(N*T*der(Data.s(T, p)) + M*phi*der(phi))/U.sRate of energy storage (internal and kinetic) and boundary work at constant mass
Q.PowerEdot_AEsum((chemical[i].g + actualStream(chemical[i].sT) - h + (actualStream(chemical[i].phi)*actualStream(chemical[i].phi) - phi*phi)*Data.m/2)*chemical[i].Ndot for i in 1:n_chem)Relative rate of energy (internal, flow, and kinetic) due to reactions and phase change
Q.PowerEdot_ATsum((Data.h(boundaries[i, :].T, boundaries[i, :].p) - {h, h} + (phi_boundaries[i, :].^2 + sum(boundaries[i, :].phi[orient].^2 for orient in Orient) - fill(phi*phi, 2))*(Data.m/2))*boundaries[i, :].Ndot for i in 1:n_trans)Relative rate of energy (internal, flow, and kinetic) due to advective transport
Q.PowerEdot_DTsum(sum(boundaries[i, :].phi[orient]*boundaries[i, :].mPhidot[orient] for orient in Orient) for i in 1:n_trans) + sum(boundaries.Qdot)Rate of diffusion of energy from other subregions