Usage of characteristic boundary conditions
Apart from simple boundary conditions, specify values of the conservative vector of state, perfectly reflective boundary
conditions at walls and zero gradient, the current solver implements characteristic based boundary conditions. While the
datastructure capabilities are rather limited within the patch solver itself, where characteristic based bc are better
implemented, we had to strike a balance between ease of use and genrality. In its current form, like other aspects of
deep interaction with the patch solver, the user has access to some auxiliary functions that are part of the patch solver
and can be used to inform the patch solver if some or any of the outer boundaries of the computational domain should be
treated as a characteristic boundary. These functions are currently:
- inform the patch solver that we will be using this feature, where type is any integer value at this time
Call UseAcousticBC(cbctype)
- specify boundary types (only those that are affected)
Call SetAcousticBoundary(dir, side, type)
- specify strength of incomming characteristics, where penalty_vec is an array with the penalty coeficients for the SAT method of size equal to the size of the primitive vector of state and values larger than 1.0 for stabiltiy.
Call SetAcousticForceMatrix(dir, side, penalty_vec)
- for Rudy and Strikwerda subsonic outflow incomming characteristic strength, where mach is the largest mach number in the flow (an estimate)
Call SetAcousticMach(mach)
- also for outflows, where sigma is the impedance of the incomming characteristic.
Call SetAcousticImpedance(sigma)
variable name | accepted values |
cbctype | integer (any) |
dir | CLES_CBC_XDIR/YDIR/ZDIR |
side | CLES_CBC_LEFT/RIGHT/BOTTOM/TOP/BACK/FRONT |
type | CLES_CBC_INFLOW/OUTFLOW |
penalty_vec | double array (> 1.0) |
mach | double |
sigma | double (default 0.25) |
Furthermore, for outflow type of boundary one needs to set the total energy in the ghost cells at the boundary such that the pressure is the target pressure the flow should encounter at infinity. The code will transform this energy into a pressure that is used in the Rudy and Strikwerda closure. It can vary in space (useful in some situations). Any of these values can be changed dynamically as a simulation progresses if required by calling the previously defined subroutines, except for UseAcousticBC(). The user must also include cles.i in the source code for combl.f since all the previous
constants are defined there.
Remember that for an outflow type of boundary, if the flow reverses (even instantaneously) you must specify at the boundary all values of characteristic waves. So you must know or assume some values for the pressure, velocity, density, composition and son on. You specify these values in the ghost cells like we would do for simple boundary treatments.
--
CarlosPantano - 09 Feb 2006