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 theHDG
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}\)