/home/runner/work/kynema-sgf/kynema-sgf/src/boundary_conditions/field_boundary_fill/OceanWavesBoundary.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/boundary_conditions/field_boundary_fill/OceanWavesBoundary.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
OceanWavesBoundary.H
Go to the documentation of this file.
1#ifndef OCEANWAVESBOUNDARY_H
2#define OCEANWAVESBOUNDARY_H
3
4#include "src/core/Field.H"
5#include "src/core/IntField.H"
6#include "src/CFDSim.H"
8#include "AMReX_Gpu.H"
9#include <AMReX_BndryRegister.H>
10#include "AMReX_REAL.H"
11
12using namespace amrex::literals;
13
14namespace kynema_sgf {
15
22class OceanWavesBoundary : public FieldBoundary::Register<OceanWavesBoundary>
23{
24public:
25 static std::string identifier() { return "OceanWavesBoundary"; }
26
27 explicit OceanWavesBoundary(CFDSim& /*sim*/);
28
29 void post_init_actions() override;
30
31 void pre_advance_work() override;
32
33 void pre_predictor_work() override;
34
35 void post_advance_work() override {}
36
37 [[nodiscard]] bool provides_inflow_values(
38 const Field& field, amrex::Orientation ori) const override;
39
40 void set_velocity(
41 int lev,
42 amrex::Real time,
43 const Field& fld,
44 amrex::MultiFab& mfab,
45 int dcomp = 0,
46 int orig_comp = 0) const override;
47
48 void
49 set_vof(int lev, amrex::Real time, const Field& fld, amrex::MultiFab& mfab)
50 const;
51
52 void set_density(
53 int lev,
54 amrex::Real time,
55 const Field& fld,
56 amrex::MultiFab& mfab) const;
57
59 int lev,
60 amrex::Real time,
61 const Field& fld,
62 amrex::Array<amrex::MultiFab*, AMREX_SPACEDIM> mfabs) const;
63
64 void record_boundary_data_time(const amrex::Real time)
65 {
66 m_bndry_time = time;
67 }
68
69 [[nodiscard]] amrex::Real get_boundary_data_time() const
70 {
71 return m_bndry_time;
72 }
73
74private:
77 const amrex::AmrCore& m_mesh;
79 Field* m_ow_vof{nullptr};
81
82 // Check for single-phase simulation
83 bool m_vof_exists{true};
84
85 // Check for terrain
86 bool m_terrain_exists{false};
87
88 // Store time corresponding to current boundary data
89 amrex::Real m_bndry_time{0.0_rt};
90
91 // Will only remain negative if not needed
92 amrex::Real m_rho1{-1.0_rt};
93};
94
95} // namespace kynema_sgf
96
97#endif /* OCEANWAVESBOUNDARY_H */
Definition CFDSim.H:55
Definition Field.H:115
Definition FieldRepo.H:86
Definition IntField.H:20
OceanWavesBoundary(CFDSim &)
Definition OceanWavesBoundary.cpp:15
bool m_vof_exists
Definition OceanWavesBoundary.H:83
IntField * m_terrain_blank_ptr
Definition OceanWavesBoundary.H:80
void record_boundary_data_time(const amrex::Real time)
Definition OceanWavesBoundary.H:64
bool provides_inflow_values(const Field &field, amrex::Orientation ori) const override
Definition OceanWavesBoundary.cpp:69
static std::string identifier()
Definition OceanWavesBoundary.H:25
Field * m_ow_velocity
Definition OceanWavesBoundary.H:78
void pre_advance_work() override
Definition OceanWavesBoundary.cpp:60
void set_vof(int lev, amrex::Real time, const Field &fld, amrex::MultiFab &mfab) const
Definition OceanWavesBoundary.cpp:162
const amrex::AmrCore & m_mesh
Definition OceanWavesBoundary.H:77
void post_advance_work() override
Definition OceanWavesBoundary.H:35
void set_inflow_sibling_velocity(int lev, amrex::Real time, const Field &fld, amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM > mfabs) const
Definition OceanWavesBoundary.cpp:260
Field * m_ow_vof
Definition OceanWavesBoundary.H:79
amrex::Real m_rho1
Definition OceanWavesBoundary.H:92
void set_velocity(int lev, amrex::Real time, const Field &fld, amrex::MultiFab &mfab, int dcomp=0, int orig_comp=0) const override
Definition OceanWavesBoundary.cpp:86
bool m_terrain_exists
Definition OceanWavesBoundary.H:86
amrex::Real get_boundary_data_time() const
Definition OceanWavesBoundary.H:69
void set_density(int lev, amrex::Real time, const Field &fld, amrex::MultiFab &mfab) const
Definition OceanWavesBoundary.cpp:207
void post_init_actions() override
Definition OceanWavesBoundary.cpp:30
const FieldRepo & m_repo
Definition OceanWavesBoundary.H:76
amrex::Real m_bndry_time
Definition OceanWavesBoundary.H:89
void pre_predictor_work() override
Definition OceanWavesBoundary.cpp:78
const kynema_sgf::SimTime & m_time
Definition OceanWavesBoundary.H:75
Definition SimTime.H:34
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:12