1#ifndef CONSTTRANSPORT_H
2#define CONSTTRANSPORT_H
6#include "AMReX_ParmParse.H"
9using namespace amrex::literals;
21 static std::string
identifier() {
return "ConstTransport"; }
25 amrex::ParmParse pp(
"transport");
26 pp.query(
"viscosity",
m_mu);
27 pp.query(
"laminar_prandtl",
m_Pr);
28 pp.query(
"turbulent_prandtl",
m_Prt);
31 amrex::ParmParse pp_boussinesq_buoyancy(
"BoussinesqBuoyancy");
32 amrex::ParmParse pp_abl(
"ABL");
33 if (pp.contains(
"thermal_expansion_coefficient")) {
35 if (pp_boussinesq_buoyancy.contains(
"thermal_expansion_coeff")) {
37 <<
"WARNING: BoussinesqBuoyancy.thermal_expansion_coeff "
38 "option has been deprecated in favor of "
39 "transport.thermal_expansion_coefficient. Ignoring the "
40 "BoussinesqBuoyancy option in favor of the transport "
44 }
else if (pp_boussinesq_buoyancy.contains(
"thermal_expansion_coeff")) {
46 <<
"WARNING: BoussinesqBuoyancy.thermal_expansion_coeff option "
47 "has been deprecated in favor of "
48 "transport.thermal_expansion_coefficient. Please replace "
51 pp_boussinesq_buoyancy.get(
55 if (pp.contains(
"reference_temperature")) {
57 if (pp_boussinesq_buoyancy.contains(
"reference_temperature")) {
59 <<
"WARNING: BoussinesqBuoyancy.reference_temperature "
60 "option has been deprecated in favor of "
61 "transport.reference_temperature. Ignoring the "
62 "BoussinesqBuoyancy option in favor of the transport "
65 }
else if (pp_abl.contains(
"reference_temperature")) {
67 <<
"WARNING: ABL.reference_temperature "
68 "option has been deprecated in favor of "
69 "transport.reference_temperature. Ignoring the "
70 "ABL option in favor of the transport "
74 }
else if (pp_boussinesq_buoyancy.contains(
"reference_temperature")) {
76 <<
"WARNING: BoussinesqBuoyancy.reference_temperature option "
77 "has been deprecated in favor of "
78 "transport.reference_temperature. Please replace "
81 pp_boussinesq_buoyancy.get(
83 }
else if (pp_abl.contains(
"reference_temperature")) {
84 amrex::Print() <<
"WARNING: ABL.reference_temperature option "
85 "has been deprecated in favor of "
86 "transport.reference_temperature. Please replace "
108 amrex::ParmParse pp(
"transport");
109 const std::string key = scalar_name +
"_laminar_schmidt";
110 amrex::Real lam_schmidt = 1.0_rt;
111 pp.query(key, lam_schmidt);
117 amrex::ParmParse pp(
"transport");
118 const std::string key = scalar_name +
"_turbulent_schmidt";
119 amrex::Real turb_schmidt = 1.0_rt;
120 pp.query(key, turb_schmidt);
125 std::unique_ptr<ScratchField>
mu()
override
127 auto mu =
m_repo.create_scratch_field(1, m_ngrow);
128 for (
int lev = 0; lev <
m_repo.num_active_levels(); ++lev) {
129 (*mu)(lev).setVal(
m_mu);
135 std::unique_ptr<ScratchField>
alpha()
override
138 amrex::Real inv_Pr = 1.0_rt /
m_Pr;
139 for (
int lev = 0; lev <
m_repo.num_active_levels(); ++lev) {
140 (*alpha)(lev).mult(inv_Pr);
145 std::unique_ptr<ScratchField>
150 amrex::Real inv_schmidt = 1.0_rt / lam_schmidt;
152 for (
int lev = 0; lev <
m_repo.num_active_levels(); ++lev) {
153 (*diff)(lev).mult(inv_schmidt);
160 [[nodiscard]] std::unique_ptr<ScratchField>
beta()
const override
162 auto beta =
m_repo.create_scratch_field(1, m_ngrow);
163 for (
int lev = 0; lev <
m_repo.num_active_levels(); ++lev) {
174 void beta_fill(
const int lev, amrex::MultiFab& beta_mf)
const override
178 }
else if (
m_repo.field_exists(
"reference_temperature")) {
179 const auto& temp0 =
m_repo.get_field(
"reference_temperature");
180 auto const& beta_arrs = beta_mf.arrays();
181 auto const& temp0_arrs = temp0(lev).const_arrays();
183 beta_mf, amrex::IntVect(0), 1,
184 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k,
int) {
185 beta_arrs[nbx](i, j, k) = 1.0_rt / temp0_arrs[nbx](i, j, k);
187 amrex::Gpu::streamSynchronize();
192 if (
m_repo.field_exists(
"vof")) {
193 const auto& vof =
m_repo.get_field(
"vof");
194 auto const& beta_arrs = beta_mf.arrays();
195 auto const& vof_arrs = vof(lev).const_arrays();
197 beta_mf, amrex::IntVect(0), 1,
198 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k,
int) {
200 beta_arrs[nbx](i, j, k) = 0.0_rt;
203 amrex::Gpu::streamSynchronize();
211 amrex::Abort(
"Reference temperature was not set");
214 if (
m_repo.field_exists(
"reference_temperature")) {
215 const auto& temp0 =
m_repo.get_field(
"reference_temperature");
216 amrex::MultiFab::Copy(ref_theta_mf, temp0(lev), 0, 0, 1, 0);
223 [[nodiscard]] std::unique_ptr<ScratchField>
ref_theta()
const override
226 amrex::Abort(
"Reference temperature was not set");
230 for (
int lev = 0; lev <
m_repo.num_active_levels(); ++lev) {
Definition FieldRepo.H:86
void ref_theta_fill(const int lev, amrex::MultiFab &ref_theta_mf) const override
Definition ConstTransport.H:208
amrex::Real laminar_prandtl() const
Definition ConstTransport.H:102
static constexpr bool constant_properties
Definition ConstTransport.H:19
static amrex::Real turbulent_schmidt(const std::string &scalar_name)
Definition ConstTransport.H:115
std::unique_ptr< ScratchField > ref_theta() const override
Return the reference temperature.
Definition ConstTransport.H:223
~ConstTransport() override=default
std::unique_ptr< ScratchField > mu() override
Return the dynamic visocity field.
Definition ConstTransport.H:125
static std::string identifier()
Definition ConstTransport.H:21
static amrex::Real laminar_schmidt(const std::string &scalar_name)
Definition ConstTransport.H:106
amrex::Real m_mu
(Laminar) dynamic viscosity
Definition ConstTransport.H:241
amrex::Real m_constant_beta
Constant thermal expansion coefficient.
Definition ConstTransport.H:250
void beta_fill(const int lev, amrex::MultiFab &beta_mf) const override
Definition ConstTransport.H:174
ConstTransport(const CFDSim &sim)
Definition ConstTransport.H:23
std::unique_ptr< ScratchField > scalar_diffusivity(const std::string &scalar_name) override
Definition ConstTransport.H:146
FieldRepo & m_repo
Reference to the field repository (for creating scratch fields)
Definition ConstTransport.H:238
amrex::Real m_Prt
Turbulent Prandtl number.
Definition ConstTransport.H:247
amrex::Real m_reference_temperature
Reference temperature.
Definition ConstTransport.H:253
amrex::Real thermal_diffusivity() const
Definition ConstTransport.H:97
std::unique_ptr< ScratchField > beta() const override
Return the thermal expansion coefficient.
Definition ConstTransport.H:160
amrex::Real m_Pr
Prandtl number.
Definition ConstTransport.H:244
amrex::Real reference_temperature() const override
Definition ConstTransport.H:169
std::unique_ptr< ScratchField > alpha() override
Return the thermal diffusivity field.
Definition ConstTransport.H:135
amrex::Real turbulent_prandtl() const
Definition ConstTransport.H:104
amrex::Real viscosity() const
Definition ConstTransport.H:95
static constexpr amrex::Real VOF_TOL
Tolerance for vof determining presence of liquid.
Definition constants.H:34