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

\[\begin{split}T_\text{wall} &= T_\text{fluid} \\ -\kappa_\text{wall} \nabla T_\text{wall} \cdot \hat{n} &= -\kappa_\text{fluid} \nabla T_\text{fluid} \cdot \hat{n},\end{split}\]

and in the radiating case, coupling enforces a similar condition but with an additional radiation sink term in the heat flux

\[-\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).\]

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 state

  • fluid_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 state

  • fluid_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 state

  • fluid_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 elements

  • dd_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:

meshmode.dof_array.DOFArray

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:
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 elements

  • state_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:

mirgecom.gas_model.FluidState

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 elements

  • state_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:

mirgecom.gas_model.FluidState

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:

mirgecom.gas_model.FluidState

temperature_plus(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ

Get the external temperature, \(T^+\).

Parameters:
  • dcoll (DiscretizationCollection) – A discretization collection encapsulating the DG elements

  • dd_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:

meshmode.dof_array.DOFArray

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 elements

  • dd_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:

meshmode.dof_array.DOFArray

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 elements

  • dd_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:

mirgecom.fluid.ConservedVars

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:
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 elements

  • state_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:

mirgecom.gas_model.FluidState

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 elements

  • state_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:

mirgecom.gas_model.FluidState

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:

mirgecom.gas_model.FluidState

temperature_plus(dcoll, dd_bdry, state_minus, **kwargs)[source]ΒΆ

Get the external temperature, \(T^+\).

Parameters:
  • dcoll (DiscretizationCollection) – A discretization collection encapsulating the DG elements

  • dd_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:

meshmode.dof_array.DOFArray

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 elements

  • dd_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:

meshmode.dof_array.DOFArray

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 elements

  • dd_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:

mirgecom.fluid.ConservedVars

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:
get_grad_flux(dcoll, dd_bdry, kappa_minus, u_minus, *, numerical_flux_func=<function grad_facial_flux_weighted>)[source]ΒΆ

Compute the flux for grad(u) on the boundary dd_bdry.

get_diffusion_flux(dcoll, dd_bdry, kappa_minus, u_minus, grad_u_minus, lengthscales_minus, *, penalty_amount=None, numerical_flux_func=<function diffusion_facial_flux_harmonic>)[source]ΒΆ

Compute the flux for diff(u) on the boundary dd_bdry.

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:
get_grad_flux(dcoll, dd_bdry, kappa_minus, u_minus, *, numerical_flux_func=<function grad_facial_flux_weighted>)[source]ΒΆ

Compute the flux for grad(u) on the boundary dd_bdry.

get_diffusion_flux(dcoll, dd_bdry, kappa_minus, u_minus, grad_u_minus, lengthscales_minus, *, penalty_amount=None, numerical_flux_func=<function diffusion_facial_flux_harmonic>)[source]ΒΆ

Compute the flux for diff(u) on the boundary dd_bdry.