Skip to content
Snippets Groups Projects

Implement regularizations for Euler eq

Closed Florian Atteneder requested to merge fa/euler-new-regulates into main
2 files
+ 5
2
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 32
16
@@ -10,7 +10,8 @@ function Project(env::Environment, mesh::Mesh1d, prms)
hrsc = HRSC.make_HRSC(env.mesh, prms["HRSC"])
bdrycond = dg1d.DirichletBC2()
P = Project(equation, hrsc, tci, bdrycond)
fixedprms = (; av_regularization=Symbol(prms["EulerEq"]["av_regularization"]))
P = Project(equation, hrsc, tci, bdrycond, fixedprms)
# register variables
# TODO add a ::Nothing overload for register_variables!
@@ -18,6 +19,8 @@ function Project(env::Environment, mesh::Mesh1d, prms)
@unpack cache = env
_register_variables!(mesh, P)
_register_variables!(mesh, bdrycond)
_register_variables!(mesh, P.hrsc, prms["EulerEq"]["av_regularization"])
_register_variables!(mesh, P.tci)
display(cache)
# setup initial data
@@ -57,7 +60,7 @@ function Project(env::Environment, mesh::Mesh2d, prms)
@unpack cache = env
_register_variables!(mesh, P, mesh)
_register_variables!(mesh, bdrycond)
_register_variables!(mesh, hrsc)
_register_variables!(mesh, hrsc, :mono)
display(cache)
# setup initial data
@@ -99,37 +102,50 @@ function _register_variables!(mesh, P::Project)
:bdry_rho, :bdry_q, :bdry_E, :bdry_v),
global_variablenames = (:t, :tm1) # recent time stamps
)
_register_variables!(mesh, P.hrsc)
_register_variables!(mesh, P.tci)
end
_register_variables!(mesh, tci_or_hrsc::Nothing) = nothing
_register_variables!(mesh, tci_or_hrsc::Nothing, args...) = nothing
_register_variables!(mesh, hrsc::AbstractReconstruction) = nothing
_register_variables!(mesh, hrsc::AbstractReconstruction, regularization) = nothing
function _register_variables!(mesh, hrsc::HRSC.AbstractArtificialViscosity)
function _register_variables!(mesh, hrsc::HRSC.AbstractArtificialViscosity, regularization)
register_variables!(mesh.cache,
static_variablenames = (:ldg_rho, :ldg_q, :ldg_E, # local DG variable
:flx_ldg_rho, :flx_ldg_q, :flx_ldg_E), # local DG flux
bdry_variablenames = (:nflx_ldg_rho, :nflx_ldg_q, :nflx_ldg_E), # local DG flux
cell_variablenames = (:mu,) # 'one viscosity to rule them all'
cell_variablenames = (:mu,) # 'one viscosity to rule them all'
)
if regularization == "mono"
register_variables!(mesh.cache,
static_variablenames = (:ldg_rho, :ldg_q, :ldg_E,),
bdry_variablenames = (:nflx_ldg_rho, :nflx_ldg_q, :nflx_ldg_E,
:bdry_ldg_rho, :bdry_ldg_q, :bdry_ldg_E),
)
elseif regularization == "navierstokes"
register_variables!(mesh.cache,
static_variablenames = (:ldg_u, :u),
bdry_variablenames = (:bdry_ldg_u, :bdry_u, :nflx_u),
)
elseif regularization == "general"
TODO()
register_variables!(mesh.cache,
static_variablenames = (:ldg_rho, :ldg_q, :ldg_E, # local DG variable
:flx_ldg_rho, :flx_ldg_q, :flx_ldg_E), # local DG flux
bdry_variablenames = (:nflx_ldg_rho, :nflx_ldg_q, :nflx_ldg_E), # local DG flux
)
end
end
function _register_variables!(mesh::Mesh, hrsc::HRSC.SmoothedArtificialViscosity)
_register_variables!(mesh, hrsc.av)
function _register_variables!(mesh::Mesh, hrsc::HRSC.SmoothedArtificialViscosity, regularization)
_register_variables!(mesh, hrsc.av, regularization)
register_variables!(mesh.cache,
static_variablenames = (:smoothed_mu,),
bdry_variablenames = (:bdry_smoothed_mu,
:bdry_ldg_rho, :bdry_ldg_q, :bdry_ldg_E),
bdry_variablenames = (:bdry_smoothed_mu,)
)
end
function _register_variables!(mesh::Mesh2d, hrsc::HRSC.EntropyViscosity)
function _register_variables!(mesh::Mesh2d, hrsc::HRSC.EntropyViscosity, regularization)
register_variables!(mesh.cache,
static_variablenames = (:S, :Sm1, :flx_S_x, :flx_S_y, :flxm1_S_x, :flxm1_S_y,
:ldg_rho_x, :ldg_rho_y, :ldg_qx_x, :ldg_qx_y,
Loading