Wave Transmissive and Advective
Has any body ever tried to understand the source code of WaveTransmissive and Advective Boundary conditions?
I have studied the paper by Poinsot and Lele and its relative papers, But i don't understand how the code does the method in the paper, can any body describe the parts of the code to me? specifically I would like to know what are refValue() and valueFraction().
That notation is consistent with the notation of the base class: mixedFvPatchField<Type>.
It is substantially a linear combination of a fixedValue and a fixedGradient with coefficient valueFraction.
The formula implemented on the boundary is:
FV= fixedValue coeffs
FG= fixedGrad coeffs
Expanding all the terms for the advective and waveTransmissive you will obtain an equation of the form of the NSCE (Eq.9:13 in Poinsot and Lele, "Boundary conditions for direct simulations of compressible viscous flow", J. Computational Physics 101 (104-129), 1992) without transverse and diffusive terms recovering the LODI relations as expressed in Eq.24:28 of the same paper.
Furthermore a Linear Relaxation Method similar to Eq.40 is implemented exploiting lInf and fieldInf.
In case of inviscid one-dimensional behavior on the boundary you only have to select the correct advection speed for each of uknown you are solving.
Hope you find this information useful,
The waveTransmissive BC
The goal in many wave-dominated flows, such as high Mach number flow, is to have boundary conditions that do not reflect waves. Walls are reflective, but inlets and outlets are generally not supposed to reflect waves.
The waveTransmissive BC attempts to reconstruct this kind of non-reflective scheme, but in a simpler fashion without full inter-field coupling. Here is an example of how it is used for a pressure outflow boundary.
type waveTransmissive; value uniform 80000; //important for correct I/O
field p; //the name of the field that we are working on
gamma 1.4; //the ratio of specific heats
phi phiv; //the name of the volumetric flux field ( or if you use the mass flux phi, it will be divided by rho)
rho rho; //the name of the density field
psi psi; //the name of the field that is the deriv. of density with respect to pressure
lInf 0.05; //a measure of how far away the far-field condition should be
fieldInf 80000; //the far-field value to be applied to p
is waveTransmissive same as pressure farfield in fluent?
Then how does advective BC work?
Whats the difference between these three BC's?
If you look at the source code of waveTransmissive boundary condition, you see that it calls the advective boundary condition which in turn calls mixed boundary condition.
What I think happens (someone correct me if I'm wrong) is the following: a mixed (Robin) boundary condition is applied to a given variable by means of imposing some fraction (fractionValue in the source code) of fixed value and some fraction (1-fractionValue) of zero gradient. To do this, we need a reference value (to go in the fixed value part) and a value for the fraction which are computed in the advection boundary condition, in turn, for the advection boundary condition to give us an appropriate value for the reference field and the "fraction", it requires an advection velocity, which is computed in waveTransmissive as the velocity of the right running acoustic wave (normal velocity + sound speed).
What I fail to understand is how this is related in any way to the LODI of Poinsot and Lele as mentioned in the wiki. More specifically, the LODI are based on matching characteristic waves across the boundaries, and the boundary conditions are applied in terms of this wave strengths.
Hope this clarifies things a bit ;)
Well the concept of advective bc is, as you said, to calculate valueFraction, refValue and refGrad in order to respect on the boundary the following constraint:
where f is the generic variable we want to solve for, t is time, U is a convection velocity and n is patch normal vector.
Now you see that if you neglect interfield interaction, transverse and diffusive contribution this equation looks like NSE on the boundary (actually 1D Euler equation).
As stated in the wiki
Furthermore for realistic cases you have to provide and maintain prescribed mean values, this is achieved by means of Linear Relaxation Method which solve for df/dt+U*df/dn=K(f_inf-f). WaveTransmissibe require the assignement of a reference field value (fieldInf = f_inf) and a distance where the field could be realistically be assumed unperturbed (lInf). From such value the reflectivity coefficient is calculated following K=U/lInf.
I have a question. Why advectionSpeed() use phip/(rhop*this->patch().magSf()) or phip/this->patch().magSf() but not simply use:
return this->patch().template lookupPatchField<surfaceVectorField, vector>(UName_);
where UName_ being U.
I'm trying to change the convective velocity (Un) in advective BC. The default is 1 and I wanna change it to 0.8
I am a little bit curious what is the relation between the following two equations: (one is from the OpenFOAM implementation and one is from the general theory):
Do you have idea about this? Thank you.
|All times are GMT -4. The time now is 11:14.|