/home/runner/work/amr-wind/amr-wind/amr-wind/physics/multiphase/MultiPhase.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/physics/multiphase/MultiPhase.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
MultiPhase.H
Go to the documentation of this file.
1#ifndef MULTIPHASE_H
2#define MULTIPHASE_H
3
4#include <cstdint>
9#include "AMReX_REAL.H"
10
11using namespace amrex::literals;
12
23namespace amr_wind {
24
25enum class InterfaceCapturingMethod : std::uint8_t {
28};
29
30class MultiPhase : public Physics::Register<MultiPhase>
31{
32public:
33 static std::string identifier() { return "MultiPhase"; }
34
35 explicit MultiPhase(CFDSim& sim);
36
37 ~MultiPhase() override = default;
38
39 void
40 initialize_fields(int /*level*/, const amrex::Geometry& /*geom*/) override
41 {}
42
43 void post_init_actions() override;
44
45 void post_regrid_actions() override;
46
47 void pre_advance_work() override;
48
49 void post_advance_work() override;
50
52
55
56 void set_nph_density();
57
59
60 void levelset2vof();
61
62 void levelset2vof(const IntField& iblank_cell, ScratchField& vof_scr);
63
64 amrex::Real volume_fraction_sum();
65
66 amrex::Real momentum_sum(int n);
67
69
70 [[nodiscard]] amrex::Real rho1() const { return m_rho1; }
71
72 [[nodiscard]] amrex::Real rho2() const { return m_rho2; }
73
74 [[nodiscard]] amrex::Vector<amrex::Real> gravity() const
75 {
76 return m_gravity;
77 }
78
79 [[nodiscard]] amrex::Real water_level() const { return m_water_level0; }
80
81 [[nodiscard]] bool perturb_pressure() const
82 {
84 }
85
86 [[nodiscard]] bool reconstruct_true_pressure() const
87 {
89 }
90
91private:
92 const CFDSim& m_sim;
93
96
97 // Pointer to the levelset
98 Field* m_levelset{nullptr};
99
100 // Pointer to VOF
101 Field* m_vof{nullptr};
102
103 // Density value for Fluid 1
104 amrex::Real m_rho1{10.0_rt};
105
106 // Density value for Fluid 2
107 amrex::Real m_rho2{1.0_rt};
108
109 // Bools according to ICNS settings
110 // Turning on perturbational density and pressure
112 // Reconstructing true pressure field at end of timestep
114
115 bool m_init_p{false};
116
117 // Info to create rho0
118 amrex::Real m_water_level0{0.0_rt};
119 // Info to reconstruct true pressure
120 amrex::Vector<amrex::Real> m_gravity{0.0_rt, 0.0_rt, -9.81_rt};
121
122 // Multiphase model enum
123 std::string m_interface_model{"vof"};
126
127 // Verbose flag for multiphase
128 int m_verbose{0};
129
130 // sum of volume fractions (for vof only)
131 amrex::Real m_total_volfrac{0.0_rt};
132
133 amrex::Real m_q0{0.0_rt};
134 amrex::Real m_q1{0.0_rt};
135 amrex::Real m_q2{0.0_rt};
136 amrex::Real m_sumvof0{0.0_rt};
137};
138
139} // namespace amr_wind
140
141#endif /* MULTIPHASE_H */
Definition CFDSim.H:54
Definition Field.H:112
Definition IntField.H:20
void levelset2vof()
Definition MultiPhase.cpp:418
bool reconstruct_true_pressure() const
Definition MultiPhase.H:86
amrex::Real m_water_level0
Definition MultiPhase.H:118
void calculate_advected_facedensity()
Definition MultiPhase.cpp:371
static std::string identifier()
Definition MultiPhase.H:33
amrex::Real water_level() const
Definition MultiPhase.H:79
InterfaceCapturingMethod m_interface_capturing_method
Definition MultiPhase.H:124
void set_density_via_levelset()
Definition MultiPhase.cpp:297
void post_init_actions() override
Definition MultiPhase.cpp:90
void initialize_fields(int, const amrex::Geometry &) override
Definition MultiPhase.H:40
amrex::Real rho1() const
Definition MultiPhase.H:70
int m_verbose
Definition MultiPhase.H:128
amrex::Real volume_fraction_sum()
Definition MultiPhase.cpp:204
bool m_use_perturb_pressure
Definition MultiPhase.H:111
amrex::Real rho2() const
Definition MultiPhase.H:72
bool m_init_p
Definition MultiPhase.H:115
amrex::Real m_rho1
Definition MultiPhase.H:104
MultiPhase(CFDSim &sim)
Definition MultiPhase.cpp:18
void set_nph_density()
Definition MultiPhase.cpp:361
void pre_advance_work() override
Definition MultiPhase.cpp:173
bool perturb_pressure() const
Definition MultiPhase.H:81
amrex::Real momentum_sum(int n)
Definition MultiPhase.cpp:249
amrex::Vector< amrex::Real > gravity() const
Definition MultiPhase.H:74
Field * m_levelset
Definition MultiPhase.H:98
amrex::Real m_rho2
Definition MultiPhase.H:107
const CFDSim & m_sim
Definition MultiPhase.H:92
void set_density_via_vof(amr_wind::FieldState fstate=amr_wind::FieldState::New)
Definition MultiPhase.cpp:338
~MultiPhase() override=default
amrex::Real m_q0
Definition MultiPhase.H:133
amrex::Real m_q1
Definition MultiPhase.H:134
std::string m_interface_model
Definition MultiPhase.H:123
void post_regrid_actions() override
Definition MultiPhase.cpp:154
Field & m_density
Definition MultiPhase.H:95
Field & m_velocity
Definition MultiPhase.H:94
InterfaceCapturingMethod interface_capturing_method() const
Definition MultiPhase.cpp:85
amrex::Real m_q2
Definition MultiPhase.H:135
void post_advance_work() override
Definition MultiPhase.cpp:175
amrex::Real m_total_volfrac
Definition MultiPhase.H:131
bool m_reconstruct_true_pressure
Definition MultiPhase.H:113
amrex::Vector< amrex::Real > m_gravity
Definition MultiPhase.H:120
amrex::Real m_sumvof0
Definition MultiPhase.H:136
Field * m_vof
Definition MultiPhase.H:101
Definition ScratchField.H:30
FieldState
Definition FieldDescTypes.H:16
@ New
Same as FieldState::NP1.
Definition FieldDescTypes.H:22
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
InterfaceCapturingMethod
Definition MultiPhase.H:25
@ VOF
Volume of fluid.
Definition MultiPhase.H:26
@ LS
Levelset.
Definition MultiPhase.H:27