/home/runner/work/kynema-sgf/kynema-sgf/src/physics/multiphase/MultiPhase.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/physics/multiphase/MultiPhase.H Source File
Kynema-SGF 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>
5#include "src/core/Physics.H"
6#include "src/core/Field.H"
7#include "src/core/IntField.H"
9#include "AMReX_REAL.H"
10
11using namespace amrex::literals;
12
23namespace kynema_sgf {
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
58
59 void set_nph_density();
60
62
63 void levelset2vof();
64
65 void levelset2vof(int lev);
66
67 void levelset2vof(const IntField& iblank_cell, ScratchField& vof_scr);
68
69 amrex::Real volume_fraction_sum();
70
71 amrex::Real momentum_sum(int n);
72
74
75 [[nodiscard]] amrex::Real rho1() const { return m_rho1; }
76
77 [[nodiscard]] amrex::Real rho2() const { return m_rho2; }
78
79 [[nodiscard]] amrex::Vector<amrex::Real> gravity() const
80 {
81 return m_gravity;
82 }
83
84 [[nodiscard]] amrex::Real water_level() const { return m_water_level0; }
85
86 [[nodiscard]] bool perturb_pressure() const
87 {
89 }
90
91 [[nodiscard]] bool reconstruct_true_pressure() const
92 {
94 }
95
96private:
97 const CFDSim& m_sim;
98
101
102 // Pointer to the levelset
103 Field* m_levelset{nullptr};
104
105 // Pointer to VOF
106 Field* m_vof{nullptr};
107
108 // Density value for Fluid 1
109 amrex::Real m_rho1{10.0_rt};
110
111 // Density value for Fluid 2
112 amrex::Real m_rho2{1.0_rt};
113
114 // Bools according to ICNS settings
115 // Turning on perturbational density and pressure
117 // Reconstructing true pressure field at end of timestep
119
120 bool m_init_p{false};
121
122 // Info to create rho0
123 amrex::Real m_water_level0{0.0_rt};
124 // Info to reconstruct true pressure
125 amrex::Vector<amrex::Real> m_gravity{0.0_rt, 0.0_rt, -9.81_rt};
126
127 // Multiphase model enum
128 std::string m_interface_model{"vof"};
131
132 // Verbose flag for multiphase
133 int m_verbose{0};
134
135 // sum of volume fractions (for vof only)
136 amrex::Real m_total_volfrac{0.0_rt};
137
138 amrex::Real m_q0{0.0_rt};
139 amrex::Real m_q1{0.0_rt};
140 amrex::Real m_q2{0.0_rt};
141 amrex::Real m_sumvof0{0.0_rt};
142};
143
144} // namespace kynema_sgf
145
146#endif /* MULTIPHASE_H */
Definition CFDSim.H:55
Definition Field.H:112
Definition IntField.H:20
void set_density_via_levelset()
Definition MultiPhase.cpp:304
amrex::Real m_q1
Definition MultiPhase.H:139
InterfaceCapturingMethod interface_capturing_method() const
Definition MultiPhase.cpp:92
void post_regrid_actions() override
Definition MultiPhase.cpp:161
void post_advance_work() override
Definition MultiPhase.cpp:182
amrex::Real m_sumvof0
Definition MultiPhase.H:141
Field & m_velocity
Definition MultiPhase.H:99
amrex::Real m_rho1
Definition MultiPhase.H:109
void set_nph_density()
Definition MultiPhase.cpp:373
bool perturb_pressure() const
Definition MultiPhase.H:86
amrex::Real momentum_sum(int n)
Definition MultiPhase.cpp:256
amrex::Vector< amrex::Real > gravity() const
Definition MultiPhase.H:79
amrex::Real rho1() const
Definition MultiPhase.H:75
void levelset2vof()
Definition MultiPhase.cpp:430
Field * m_vof
Definition MultiPhase.H:106
bool m_init_p
Definition MultiPhase.H:120
amrex::Real m_water_level0
Definition MultiPhase.H:123
Field & m_density
Definition MultiPhase.H:100
amrex::Real rho2() const
Definition MultiPhase.H:77
amrex::Vector< amrex::Real > m_gravity
Definition MultiPhase.H:125
~MultiPhase() override=default
void post_init_actions() override
Definition MultiPhase.cpp:97
bool m_reconstruct_true_pressure
Definition MultiPhase.H:118
static std::string identifier()
Definition MultiPhase.H:33
void calculate_advected_facedensity()
Definition MultiPhase.cpp:383
void initialize_fields(int, const amrex::Geometry &) override
Definition MultiPhase.H:40
amrex::Real m_total_volfrac
Definition MultiPhase.H:136
std::string m_interface_model
Definition MultiPhase.H:128
MultiPhase(CFDSim &sim)
Definition MultiPhase.cpp:20
int m_verbose
Definition MultiPhase.H:133
Field * m_levelset
Definition MultiPhase.H:103
bool m_use_perturb_pressure
Definition MultiPhase.H:116
amrex::Real water_level() const
Definition MultiPhase.H:84
void pre_advance_work() override
Definition MultiPhase.cpp:180
void set_density_via_vof(kynema_sgf::FieldState fstate=kynema_sgf::FieldState::New)
Definition MultiPhase.cpp:345
amrex::Real volume_fraction_sum()
Definition MultiPhase.cpp:211
amrex::Real m_q2
Definition MultiPhase.H:140
amrex::Real m_rho2
Definition MultiPhase.H:112
amrex::Real m_q0
Definition MultiPhase.H:138
bool reconstruct_true_pressure() const
Definition MultiPhase.H:91
InterfaceCapturingMethod m_interface_capturing_method
Definition MultiPhase.H:129
const CFDSim & m_sim
Definition MultiPhase.H:97
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