config

Definitions of boundary/domain conditions for compressible flow

class AdiabaticWall

Adiabatic wall condition for compressible flow.

The adiabatic wall condition sets zero heat flux \(\vec{q} \cdot \vec{n}$\) and no-slip conditions at the wall boundaries.

class CBC(fields: flowfields | None = None, target: str = 'farfield', relaxation_factor: float = 0.28, tangential_relaxation: float = 0.0, is_viscous_fluxes: bool = False)
property fields: flowfields

Returns the fields of the farfield condition

property target: str

Returns the type of target state

property relaxation_factor: dict[str, float]

Returns the relaxation factors for the different fields

property tangential_relaxation: float

Returns the tangential relaxation factor

property is_viscous_fluxes: bool

Returns the viscous fluxes flag

class CompressibleFiniteElementMethod(mesh, root=None, **default)
get_domain_boundary_mask() GridFunction

Returns a Gridfunction that is 0 on the domain boundaries and 1 on the domain interior.

set_boundary_conditions() None

Boundary conditions for compressible flows are set weakly. Therefore we do nothing here.

class ConservativeFiniteElementMethod(mesh, root=None, **default)
class FarField(fields: flowfields | None = None, use_identity_jacobian: bool = True)

Farfield condition for compressible flow.

The farfield condition is used to set the subsonic and supersonic inflow/outflow conditions for compressible flows in a characteristic way. It acts partially non-reflecting for acoustic waves on both inflow and outflow boundaries.

Parameters:
  • fields (flowfields) – Dictionary of flow quantities \(\vec{U}_\infty\) to be set at the farfield boundaries.

  • use_identity_jacobian (bool) – Flag to use the identity jacobian for the farfield condition.

Note:

See add_farfield_formulation() for the implementation of the farfield condition in the HDG formulation.

property fields: flowfields

Returns the fields of the farfield condition

property use_identity_jacobian: bool

Returns the identity jacobian flag

class GRCBC(fields: flowfields | None = None, target: str = 'farfield', relaxation_factor: float = 0.28, tangential_relaxation: float = 0.0, is_viscous_fluxes: bool = False)

Generalized Relaxation Condition Boundary Condition

The GRCBC is a generalized relaxation condition for compressible flows. It is used to relax the conservative variables at the boundary towards a given target state \(\vec{U}^-\). The relaxation is done by a CFL-like diagonal matrix. Additionally, tangential relaxation and viscous fluxes can improve the non-reflecting behavior on planar boundaries [P1].

Note:

Currently, only supported with implicit time schemes.

class InviscidWall

Inviscid wall condition for compressible flow.

The inviscid wall condition is used to set the no-penetration condition i.e. \(\vec{u} \cdot \vec{n} = 0\) for compressible flows.

class IsothermalWall(temperature: float | flowfields | None = None)

Isothermal wall condition for compressible flow.

The isothermal wall condition sets the temperature \(T_w\) and no-slip conditions at the wall boundaries.

property fields: flowfields

Returns the set temperature

class NSCBC(fields=None, target='farfield', relaxation_factor=0.28, tangential_relaxation=0.0, is_viscous_fluxes=False, length: float = 1.0)
property length: float

Returns the length scale

class Outflow(pressure: float | flowfields | None = None)

Outflow condition for subsonic compressible flow.

The outflow condition is used to set the subsonic outflow conditions for compressible flows by setting the static pressure \(p_\infty\) at the outflow boundaries. By the hard imposition of the pressure, the outflow condition acts reflecting for acoustic waves.

property fields: flowfields

Returns the set pressure

class PML
class Symmetry

Symmetry condition for compressible flow.

The symmetry condition imposes \(\vec{u} \cdot \vec{n} = 0\) on a symmetry plane.

class flowfields(other: ngsdict = None, **kwargs)

Mutable mapping for flow quantities.

Literal mathematical symbols as key names are converted to their respective quantities, if predefined. Values are converted to NGSolve CoefficientFunctions.

>>> fields = flowfields(rho=1.0, velocity=(1.0, 0.0))
>>> fields
{'density': CoefficientFunction((1.0)), 'velocity': CoefficientFunction((1.0, 0.0))}
>>> fields['density'] = 5.0
{'density': CoefficientFunction((5.0)), 'velocity': CoefficientFunction((1.0, 0.0))}
rho

density \(\rho\)

u

velocity \(\bm{u}\)

rho_u

momentum \(\rho \bm{u}\)

p

pressure \(p\)

T

temperature \(T\)

rho_E

energy \(\rho E\)

E

specific_energy \(E\)

rho_Ei

inner_energy \(\rho E_i\)

Ei

specific_inner_energy \(E_i\)

rho_Ek

kinetic_energy \(\rho E_k\)

Ek

specific_kinetic_energy \(E_k\)

rho_H

enthalpy \(\rho H\)

H

specific_enthalpy \(H\)

c

speed_of_sound \(c\)

grad_rho

density_gradient \(\nabla \rho\)

grad_u

velocity_gradient \(\nabla \bm{u}\)

grad_rho_u

momentum_gradient \(\nabla (\rho \bm{u})\)

grad_p

pressure_gradient \(\nabla p\)

grad_T

temperature_gradient \(\nabla T\)

grad_rho_E

energy_gradient \(\nabla (\rho E)\)

eps

strain_rate_tensor \(\bm{\varepsilon}\)