Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wall boundary conditions for the compressible Euler equations #765

Closed
Tracked by #720
ranocha opened this issue Aug 4, 2021 · 0 comments · Fixed by #830
Closed
Tracked by #720

Wall boundary conditions for the compressible Euler equations #765

ranocha opened this issue Aug 4, 2021 · 0 comments · Fixed by #830

Comments

@ranocha
Copy link
Member

ranocha commented Aug 4, 2021

Discussed by @gregorgassner in #761:

I am not happy with the current state of the wall BC. The problem is, that the pressure is not computed correctly (as an exact solution of the one-sided Riemann problem). This is done in FLUXO and FLEXI, and was proposed in a paper by Jaap van der Vegt, long time ago. Furthermore, one can show that with this modification, the BC adds entropy dissipation.
The new pressure for compressible Euler can be comuted purely local, from the state variable. Hence, I do not think it will change the interface at all. What is needed though: the normal velocity, hence an idea of the orientation of the wall. This is needed to compute the normal velocity...
Here is the FLUXO implementation: note that prim(2) is the normal velocity (of course before setting it to 0). It also includes a dirty hack of the pressure positivity (maybe should not be included) and prim(6) is the sound speed.

! Compute the 1D wall Riemann problem pressure solution
        IF (Prim(2) .LE. 0.) THEN
            Prim(5)=Prim(5)*max((1.+0.5*KappaM1*Prim(2)/Prim(6)),0.0001)**(2.*Kappa*sKappaM1)
          ELSE
            ar=2.*sKappaP1/Prim(1)
            br=KappaM1*sKappaP1*Prim(5)
            Prim(5)=Prim(5)+Prim(2)/ar*0.5*(Prim(2)+sqrt(Prim(2)*Prim(2)+4.*ar*(Prim(5)+br)))
          END IF

And in FLUXO, we set directly the resulting flux, without using the numerical flux call

          ! Now we compute the 1D Euler flux, but use the info that the normal component u=0
          ! we directly tranform the flux back into the Cartesian coords: F=(0,n1*p,n2*p,n3*p,0)^T
          Flux(  1,p,q,SideID) = 0.
          Flux(2:4,p,q,SideID) = Prim(5)*N_loc(:,1)
          Flux(  5,p,q,SideID) = 0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant