4.5. Thermally Coupled Fluid-WallΒΆ
mirgecom.multiphysics.thermally_coupled_fluid_wall
for thermally-coupled
fluid and wall.
Couples a fluid subdomain governed by the compressible Navier-Stokes equations
(mirgecom.navierstokes
) with a wall subdomain governed by the heat
equation (mirgecom.diffusion
) through temperature and heat flux. This
coupling can optionally include a sink term representing emitted radiation.
In the non-radiating case, coupling enforces continuity of temperature and heat flux
and in the radiating case, coupling enforces a similar condition but with an additional radiation sink term in the heat flux
4.5.1. Boundary Setup FunctionsΒΆ
- mirgecom.multiphysics.thermally_coupled_fluid_wall.add_interface_boundaries_no_grad(dcoll, gas_model, fluid_dd, wall_dd, fluid_state, wall_kappa, wall_temperature, fluid_boundaries, wall_boundaries, *, interface_noslip=True, interface_radiation=False, quadrature_tag=<class 'grudge.dof_desc.DISCR_TAG_BASE'>, comm_tag=None)[source]ΒΆ
Include the fluid-wall interface boundaries (without temperature gradient).
Return a tuple (fluid_all_boundaries, wall_all_boundaries) that adds boundaries to fluid_boundaries and wall_boundaries that represent the volume interfaces. One entry is added for the collection of faces whose opposite face reside on the current MPI rank and one-per-rank for each collection of faces whose opposite face resides on a different rank.
- Parameters:
dcoll (class:~grudge.discretization.DiscretizationCollection) β A discretization collection encapsulating the DG elements
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid statefluid_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the fluid volume.wall_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the wall volume.fluid_state (
FluidState
) β Fluid state object with the conserved state and dependent quantities for the fluid volume.wall_kappa (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity for the wall volume.wall_temperature (
meshmode.dof_array.DOFArray
) β Temperature for the wall volume.fluid_boundaries β Dictionary of boundary functions, one for each valid non-interface
BoundaryDomainTag
on the fluid subdomain.wall_boundaries β Dictionary of boundary functions, one for each valid non-interface
BoundaryDomainTag
on the wall subdomain.interface_noslip (bool) β If True, interface boundaries on the fluid side will be treated as no-slip walls. If False they will be treated as slip walls.
interface_radiation (bool) β If True, interface includes a radiation sink term in the heat flux. See
InterfaceWallRadiationBoundary
for details.quadrature_tag β An identifier denoting a particular quadrature discretization to use during operator evaluations.
comm_tag (Hashable) β Tag for distributed communication
- mirgecom.multiphysics.thermally_coupled_fluid_wall.add_interface_boundaries(dcoll, gas_model, fluid_dd, wall_dd, fluid_state, wall_kappa, wall_temperature, fluid_grad_temperature, wall_grad_temperature, fluid_boundaries, wall_boundaries, *, interface_noslip=True, interface_radiation=False, wall_emissivity=None, sigma=None, ambient_temperature=None, wall_penalty_amount=None, quadrature_tag=<class 'grudge.dof_desc.DISCR_TAG_BASE'>, comm_tag=None)[source]ΒΆ
Include the fluid-wall interface boundaries.
Return a tuple (fluid_all_boundaries, wall_all_boundaries) that adds boundaries to fluid_boundaries and wall_boundaries that represent the volume interfaces. One entry is added for the collection of faces whose opposite face reside on the current MPI rank and one-per-rank for each collection of faces whose opposite face resides on a different rank.
- Parameters:
dcoll (class:~grudge.discretization.DiscretizationCollection) β A discretization collection encapsulating the DG elements
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid statefluid_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the fluid volume.wall_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the wall volume.fluid_state (
FluidState
) β Fluid state object with the conserved state and dependent quantities for the fluid volume.wall_kappa (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity for the wall volume.wall_temperature (
meshmode.dof_array.DOFArray
) β Temperature for the wall volume.fluid_grad_temperature (numpy.ndarray) β Temperature gradient for the fluid volume.
wall_grad_temperature (numpy.ndarray) β Temperature gradient for the wall volume.
fluid_boundaries β Dictionary of boundary functions, one for each valid non-interface
BoundaryDomainTag
on the fluid subdomain.wall_boundaries β Dictionary of boundary functions, one for each valid non-interface
BoundaryDomainTag
on the wall subdomain.interface_noslip (bool) β If True, interface boundaries on the fluid side will be treated as no-slip walls. If False they will be treated as slip walls.
interface_radiation (bool) β If True, interface includes a radiation sink term in the heat flux. See
InterfaceWallRadiationBoundary
for details. Additional arguments wall_emissivity, sigma, and ambient_temperature are required if enabled.wall_emissivity (float or
meshmode.dof_array.DOFArray
) β Emissivity of the wall material.sigma (float) β Stefan-Boltzmann constant.
ambient_temperature (
meshmode.dof_array.DOFArray
) β Ambient temperature of the environment.wall_penalty_amount (float) β Coefficient \(c\) for the interior penalty on the heat flux. See
InterfaceFluidBoundary
for details.quadrature_tag β An identifier denoting a particular quadrature discretization to use during operator evaluations.
comm_tag (Hashable) β Tag for distributed communication
4.5.2. Basic Coupled OperatorsΒΆ
- mirgecom.multiphysics.thermally_coupled_fluid_wall.basic_coupled_ns_heat_operator(dcoll, gas_model, fluid_dd, wall_dd, fluid_boundaries, wall_boundaries, fluid_state, wall_kappa, wall_temperature, *, time=0.0, interface_noslip=True, interface_radiation=False, wall_emissivity=None, sigma=None, ambient_temperature=None, wall_penalty_amount=None, quadrature_tag=<class 'grudge.dof_desc.DISCR_TAG_BASE'>, limiter_func=None, return_gradients=False, use_esdg=False, inviscid_terms_on=True)[source]ΒΆ
Simple implementation of a thermally-coupled fluid/wall operator.
Computes the RHS for a two-volume domain coupled by temperature and heat flux, by augmenting fluid_boundaries and wall_boundaries with the boundaries for the fluid-wall interface and calling the respective NS/diffusion operators.
- Parameters:
dcoll (class:~grudge.discretization.DiscretizationCollection) β A discretization collection encapsulating the DG elements
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid statefluid_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the fluid volume.wall_dd (
grudge.dof_desc.DOFDesc
) β DOF descriptor for the wall volume.fluid_boundaries β Dictionary of boundary objects for the fluid subdomain, one for each
BoundaryDomainTag
that represents a domain boundary.wall_boundaries β Dictionary of boundary objects for the wall subdomain, one for each
BoundaryDomainTag
that represents a domain boundary.fluid_state (
FluidState
) β Fluid state object with the conserved state and dependent quantities for the fluid volume.wall_kappa (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity for the wall volume.wall_temperature (
meshmode.dof_array.DOFArray
) β Temperature for the wall volume.time β Time
interface_noslip (bool) β If True, interface boundaries on the fluid side will be treated as no-slip walls. If False they will be treated as slip walls.
interface_radiation (bool) β If True, interface includes a radiation sink term in the heat flux. See
InterfaceWallRadiationBoundary
for details. Additional arguments wall_emissivity, sigma, and ambient_temperature are required if enabled.wall_emissivity (float or
meshmode.dof_array.DOFArray
) β Emissivity of the wall material.sigma (float) β Stefan-Boltzmann constant.
ambient_temperature (
meshmode.dof_array.DOFArray
) β Ambient temperature of the environment.wall_penalty_amount (float) β Coefficient \(c\) for the interior penalty on the heat flux. See
InterfaceFluidBoundary
for details. Not used if interface_radiation is True.quadrature_tag β An identifier denoting a particular quadrature discretization to use during operator evaluations.
limiter_func β Callable function to be passed to
make_operator_fluid_states()
that filters or limits the produced fluid states. This is used to keep species mass fractions in physical and realizable states, for example.use_esdg (bool) β If True, use the entropy-stable version of the Navier-Stokes operator.
- Return type:
The tuple (fluid_rhs, wall_rhs).
4.5.3. Boundary ConditionsΒΆ
- class mirgecom.multiphysics.thermally_coupled_fluid_wall.InterfaceFluidBoundary(heat_flux_penalty_amount, lengthscales_minus)[source]ΒΆ
Abstract interface for the fluid side of the fluid-wall interface.
Extends
MengaldoBoundaryCondition
to include an interior penalty on the heat flux:\[q_\text{penalty} = \tau (T^+ - T^-).\]where \(\tau = c \frac{\kappa_\text{bc}}{h^-}\). Here \(c\) is a user-defined constant and \(h^-\) is the characteristic mesh spacing on the fluid side of the interface.
4.5. Base class implementationsΒΆ
- __init__(heat_flux_penalty_amount, lengthscales_minus)[source]ΒΆ
Initialize InterfaceFluidBoundary.
- Parameters:
heat_flux_penalty_amount (float) β Coefficient \(c\) for the interior penalty on the heat flux.
lengthscales_minus (
meshmode.dof_array.DOFArray
) β Characteristic mesh spacing \(h^-\).
- viscous_divergence_flux(dcoll, dd_bdry, gas_model, state_minus, grad_cv_minus, grad_t_minus, numerical_flux_func=<function viscous_facial_flux_harmonic>, **kwargs)[source]ΒΆ
Return the viscous flux as defined by
mirgecom.boundary.MengaldoBoundaryCondition.viscous_divergence_flux()
with the additional heat flux interior penalty term.
4.5. Abstract interfaceΒΆ
- abstract temperature_plus(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ
Get the external temperature, \(T^+\).
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary.
- Return type:
- class mirgecom.multiphysics.thermally_coupled_fluid_wall.InterfaceFluidSlipBoundary(kappa_plus, t_plus, grad_t_plus=None, heat_flux_penalty_amount=None, lengthscales_minus=None)[source]ΒΆ
Boundary for the fluid side of the fluid-wall interface, with slip.
- __init__(kappa_plus, t_plus, grad_t_plus=None, heat_flux_penalty_amount=None, lengthscales_minus=None)[source]ΒΆ
Initialize InterfaceFluidSlipBoundary.
Arguments grad_t_plus, heat_flux_penalty_amount, and lengthscales_minus are only required if the boundary will be used to compute the viscous flux.
- Parameters:
kappa_plus (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity from the wall side.t_plus (
meshmode.dof_array.DOFArray
) β Temperature from the wall side.grad_t_plus (
meshmode.dof_array.DOFArray
or None) β Temperature gradient from the wall side.heat_flux_penalty_amount (float or None) β Coefficient \(c\) for the interior penalty on the heat flux.
lengthscales_minus (
meshmode.dof_array.DOFArray
or None) β Characteristic mesh spacing \(h^-\).
- state_plus(dcoll, dd_bdry, gas_model, state_minus, **kwargs)[source]ΒΆ
Get the boundary state to be used for inviscid fluxes.
This routine returns a boundary state that is designed to be used in an approximate Riemann solver, like HLL, or HLLC.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsstate_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.dd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid state
- Return type:
- state_bc(dcoll, dd_bdry, gas_model, state_minus, **kwargs)[source]ΒΆ
Get the boundary condition on the fluid state.
This routine returns the exact value of the boundary condition of the fluid state. These are the values we want to enforce at the boundary. It is used in the calculation of the gradient of the conserved quantities, and in the calculation of the viscous fluxes.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsstate_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.dd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid state
- Return type:
- grad_cv_bc(dcoll, dd_bdry, gas_model, state_minus, grad_cv_minus, normal, **kwargs)[source]ΒΆ
Get the boundary condition on the fluid state.
This routine returns the exact value of the boundary condition of the fluid state. These are the values we want to enforce at the boundary. It is used in the calculation of the gradient of the conserved quantities, and in the calculation of the viscous fluxes.
- Parameters:
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.grad_cv_minus (
ConservedVars
) β ConservedVars object with the gradient of the fluid conserved variables on the (-) side of the boundary.normal (numpy.ndarray) β Unit normal vector to the boundary
- Return type:
- temperature_plus(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ
Get the external temperature, \(T^+\).
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary.
- Return type:
- temperature_bc(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ
Get boundary contition on the temperature.
This routine returns the temperature boundary condition, \(T_\text{bc}\). This value is used in the calcuation of the temperature gradient, \(\nabla{T}\).
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary.
- Return type:
- grad_temperature_bc(dcoll, dd_bdry, grad_t_minus, normal, **kwargs)[source]ΒΆ
Get the boundary condition on the temperature gradient.
This routine returns the boundary condition on the gradient of the temperature, \((\nabla{T})_\text{bc}\). This value is used in the calculation of the heat flux.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
grad_t_minus (numpy.ndarray) β Gradient of the temperature on the (-) side of the boundary.
normal (numpy.ndarray) β Unit normal vector to the boundary
- Return type:
- class mirgecom.multiphysics.thermally_coupled_fluid_wall.InterfaceFluidNoslipBoundary(kappa_plus, t_plus, grad_t_plus=None, heat_flux_penalty_amount=None, lengthscales_minus=None)[source]ΒΆ
Boundary for the fluid side of the fluid-wall interface, without slip.
- __init__(kappa_plus, t_plus, grad_t_plus=None, heat_flux_penalty_amount=None, lengthscales_minus=None)[source]ΒΆ
Initialize InterfaceFluidNoslipBoundary.
Arguments grad_t_plus, heat_flux_penalty_amount, and lengthscales_minus are only required if the boundary will be used to compute the viscous flux.
- Parameters:
kappa_plus (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity from the wall side.t_plus (
meshmode.dof_array.DOFArray
) β Temperature from the wall side.grad_t_plus (
meshmode.dof_array.DOFArray
or None) β Temperature gradient from the wall side.heat_flux_penalty_amount (float or None) β Coefficient \(c\) for the interior penalty on the heat flux.
lengthscales_minus (
meshmode.dof_array.DOFArray
or None) β Characteristic mesh spacing \(h^-\).
- state_plus(dcoll, dd_bdry, gas_model, state_minus, **kwargs)[source]ΒΆ
Get the boundary state to be used for inviscid fluxes.
This routine returns a boundary state that is designed to be used in an approximate Riemann solver, like HLL, or HLLC.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsstate_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.dd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid state
- Return type:
- state_bc(dcoll, dd_bdry, gas_model, state_minus, **kwargs)[source]ΒΆ
Get the boundary condition on the fluid state.
This routine returns the exact value of the boundary condition of the fluid state. These are the values we want to enforce at the boundary. It is used in the calculation of the gradient of the conserved quantities, and in the calculation of the viscous fluxes.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsstate_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.dd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
gas_model (
GasModel
) β Physical gas model including equation of state, transport, and kinetic properties as required by fluid state
- Return type:
- grad_cv_bc(dcoll, dd_bdry, gas_model, state_minus, grad_cv_minus, normal, **kwargs)[source]ΒΆ
Get the boundary condition on the fluid state.
This routine returns the exact value of the boundary condition of the fluid state. These are the values we want to enforce at the boundary. It is used in the calculation of the gradient of the conserved quantities, and in the calculation of the viscous fluxes.
- Parameters:
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary specified by dd_bdry.grad_cv_minus (
ConservedVars
) β ConservedVars object with the gradient of the fluid conserved variables on the (-) side of the boundary.normal (numpy.ndarray) β Unit normal vector to the boundary
- Return type:
- temperature_plus(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ
Get the external temperature, \(T^+\).
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary.
- Return type:
- temperature_bc(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ
Get boundary contition on the temperature.
This routine returns the temperature boundary condition, \(T_\text{bc}\). This value is used in the calcuation of the temperature gradient, \(\nabla{T}\).
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
state_minus (
FluidState
) β Fluid state object with the conserved state, and dependent quantities for the (-) side of the boundary.
- Return type:
- grad_temperature_bc(dcoll, dd_bdry, grad_t_minus, normal, **kwargs)[source]ΒΆ
Get the boundary condition on the temperature gradient.
This routine returns the boundary condition on the gradient of the temperature, \((\nabla{T})_\text{bc}\). This value is used in the calculation of the heat flux.
- Parameters:
dcoll (
DiscretizationCollection
) β A discretization collection encapsulating the DG elementsdd_bdry β Boundary DOF descriptor (or object convertible to one) indicating which domain boundary to process
grad_t_minus (numpy.ndarray) β Gradient of the temperature on the (-) side of the boundary.
normal (numpy.ndarray) β Unit normal vector to the boundary
- Return type:
- class mirgecom.multiphysics.thermally_coupled_fluid_wall.InterfaceWallBoundary(kappa_plus, u_plus, grad_u_plus=None)[source]ΒΆ
Boundary for the wall side of the fluid-wall interface.
- __init__(kappa_plus, u_plus, grad_u_plus=None)[source]ΒΆ
Initialize InterfaceWallBoundary.
Argument grad_u_plus is only required if the boundary will be used to compute the heat flux.
- Parameters:
kappa_plus (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity from the fluid side.u_plus (
meshmode.dof_array.DOFArray
) β Temperature from the fluid side.grad_u_plus (
meshmode.dof_array.DOFArray
or None) β Temperature gradient from the fluid side.
- class mirgecom.multiphysics.thermally_coupled_fluid_wall.InterfaceWallRadiationBoundary(kappa_plus, grad_u_plus=None, emissivity=None, sigma=None, u_ambient=None)[source]ΒΆ
Boundary for the wall side of the fluid-wall interface (radiating).
Enforces the heat flux to be that entering the fluid side plus a radiation sink term:
\[-\kappa_\text{wall} \nabla T_\text{wall} \cdot \hat{n} = -\kappa_\text{fluid} \nabla T_\text{fluid} \cdot \hat{n} + \epsilon \sigma (T^4 - T_\text{ambient}^4),\]where \(\epsilon\) is the wall materialβs emissivity and \(\sigma\) is the Stefan-Boltzmann constant.
- __init__(kappa_plus, grad_u_plus=None, emissivity=None, sigma=None, u_ambient=None)[source]ΒΆ
Initialize InterfaceWallRadiationBoundary.
Arguments grad_u_plus, emissivity, sigma, and u_ambient are only required if the boundary will be used to compute the heat flux.
- Parameters:
kappa_plus (float or
meshmode.dof_array.DOFArray
) β Thermal conductivity from the fluid side.grad_u_plus (
meshmode.dof_array.DOFArray
or None) β Temperature gradient from the fluid side.emissivity (float or
meshmode.dof_array.DOFArray
or None) β Emissivity of the wall material.sigma (float or None) β Stefan-Boltzmann constant.
u_ambient (
meshmode.dof_array.DOFArray
or None) β Ambient temperature of the environment.