8using namespace amrex::literals;
15template <
typename Scheme>
22 auto& repo =
sim.repo();
26 repo.declare_cc_field(
"interface_normal", AMREX_SPACEDIM, 1, 1);
27 auto& curvature = repo.declare_cc_field(
"interface_curvature", 1, 1, 1);
29 normal.template register_fill_patch_op<FieldFillPatchOps<FieldBCNoOp>>(
32 .template register_fill_patch_op<FieldFillPatchOps<FieldBCNoOp>>(
36 auto& iomgr =
sim.io_manager();
37 iomgr.register_io_var(fields.field.name());
38 iomgr.register_io_var(normal.name());
39 iomgr.register_io_var(curvature.name());
50template <
typename Scheme>
62 auto fstate = std::is_same<Scheme, fvm::Godunov>::value
66 const int nlevels =
fields.repo.num_active_levels();
67 auto& field =
fields.field;
69 const auto& conv_term =
fields.conv_term.state(fstate);
71 for (
int lev = 0; lev < nlevels; ++lev) {
72 const auto& phi_arrs = field(lev).arrays();
73 const auto& phi_o_arrs = field_old(lev).const_arrays();
74 const auto& ddt_o_arrs = conv_term(lev).const_arrays();
78 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k)
noexcept {
79 phi_arrs[nbx](i, j, k) = phi_o_arrs[nbx](i, j, k) +
80 dt * ddt_o_arrs[nbx](i, j, k);
86 amrex::Gpu::streamSynchronize();
94 const int nlevels =
fields.repo.num_active_levels();
95 auto& field =
fields.field;
97 const auto& conv_term =
fields.conv_term;
100 for (
int lev = 0; lev < nlevels; ++lev) {
101 auto phi_arrs = field(lev).arrays();
102 const auto phi_o_arrs = field_old(lev).const_arrays();
103 const auto ddt_arrs = conv_term(lev).const_arrays();
104 const auto ddt_o_arrs = conv_term_old(lev).const_arrays();
108 [=] AMREX_GPU_DEVICE(
int nbx,
int i,
int j,
int k)
noexcept {
109 phi_arrs[nbx](i, j, k) =
110 phi_o_arrs[nbx](i, j, k) +
112 (ddt_o_arrs[nbx](i, j, k) + ddt_arrs[nbx](i, j, k));
118 amrex::Gpu::streamSynchronize();
Definition MultiPhase.H:30
@ New
Same as FieldState::NP1.
Definition FieldDescTypes.H:20
@ Old
Same as FieldState::N.
Definition FieldDescTypes.H:21
DiffusionType
Definition incflo_enums.H:4
Definition height_functions.H:8
Definition AdvOp_Godunov.H:21
PDEFields create_fields_instance(const SimTime &time, FieldRepo &repo, const FieldInterpolator itype=FieldInterpolator::CellConsLinear)
Definition PDEHelpers.H:49
void corrector_rhs(const DiffusionType, const amrex::Real dt, bool)
Definition levelset_ops.H:89
void improve_explicit_diff(const amrex::Real)
Definition levelset_ops.H:121
ComputeRHSOp(PDEFields &fields_in)
Definition levelset_ops.H:53
PDEFields & fields
Definition levelset_ops.H:124
void predictor_rhs(const DiffusionType, const amrex::Real dt, bool)
Definition levelset_ops.H:55
FieldRegOp(CFDSim &sim_in)
Definition levelset_ops.H:18
CFDSim & sim
Definition levelset_ops.H:44
PDEFields operator()(const SimTime &time)
Definition levelset_ops.H:20
Definition PDEFields.H:27
void operator()(const amrex::Real)
Definition levelset_ops.H:136
PostSolveOp(CFDSim &sim, PDEFields &fields)
Definition levelset_ops.H:133
PDEFields & m_fields
Definition levelset_ops.H:144
CFDSim & m_sim
Definition levelset_ops.H:143