/home/runner/work/amr-wind/amr-wind/amr-wind/ocean_waves/OceanWavesModel.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/ocean_waves/OceanWavesModel.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
OceanWavesModel.H
Go to the documentation of this file.
1#ifndef WAVE_MODEL_H
2#define WAVE_MODEL_H
3
8
9namespace amr_wind {
10
11class CFDSim;
12
13namespace ocean_waves {
14
22 : public Factory<OceanWavesModel, CFDSim&, const std::string&, const int>
23{
24public:
25 static std::string base_identifier() { return "OceanWaveModel"; }
26
27 ~OceanWavesModel() override = default;
28
29 virtual const std::string& label() const = 0;
30
31 virtual int id() const = 0;
32
33 virtual void read_inputs(const ::amr_wind::utils::MultiParser&) = 0;
34
35 virtual void init_waves(int, const amrex::Geometry&, bool) = 0;
36
37 virtual void update_target_fields(const amrex::Real) = 0;
38
39 virtual void apply_relax_zones() = 0;
40
42
43 virtual void prepare_outputs(const std::string&) = 0;
44
45 virtual void write_outputs() = 0;
46
47 virtual void record_regrid_flag() = 0;
48
49 virtual void reset_regrid_flag() = 0;
50};
51
62template <typename WaveTheoryTrait>
63class OWModel : public OceanWavesModel::Register<OWModel<WaveTheoryTrait>>
64{
65private:
67 typename WaveTheoryTrait::DataType m_data;
68
71
72public:
73 static std::string identifier() { return WaveTheoryTrait::identifier(); }
74
80 OWModel(CFDSim& sim, const std::string& label, const int id)
81 : m_data(sim, label, id), m_out_op(m_data)
82 {}
83
85 const std::string& label() const override { return m_data.info().label; }
86
88 int id() const override { return m_data.info().id; }
89
90 void read_inputs(const ::amr_wind::utils::MultiParser& pp) override
91 {
93 m_out_op.read_io_options(pp);
94 }
95
96 void update_target_fields(const amrex::Real time) override
97 {
99 }
100
105
110
111 void prepare_outputs(const std::string& out_dir) override
112 {
113 m_out_op.prepare_outputs(out_dir);
114 }
115
116 void record_regrid_flag() override { m_data.meta().regrid_occurred = true; }
117
118 void reset_regrid_flag() override { m_data.meta().regrid_occurred = false; }
119
120 void write_outputs() override { m_out_op.write_outputs(); }
121
123 int level, const amrex::Geometry& geom, bool multiphase_mode) override
124 {
126 m_data, level, geom, multiphase_mode);
127 }
128};
129
130} // namespace ocean_waves
131} // namespace amr_wind
132
133#endif /* OWMODEL_H */
Definition CFDSim.H:54
Definition OceanWavesModel.H:64
void record_regrid_flag() override
Definition OceanWavesModel.H:116
const std::string & label() const override
Return the unique identifier (name) for this instance.
Definition OceanWavesModel.H:85
void update_target_volume_fraction() override
Definition OceanWavesModel.H:106
static std::string identifier()
Definition OceanWavesModel.H:73
void apply_relax_zones() override
Definition OceanWavesModel.H:101
void reset_regrid_flag() override
Definition OceanWavesModel.H:118
WaveTheoryTrait::DataType m_data
Instance that holds all data related to a particular wave type.
Definition OceanWavesModel.H:67
OWModel(CFDSim &sim, const std::string &label, const int id)
Definition OceanWavesModel.H:80
void update_target_fields(const amrex::Real time) override
Definition OceanWavesModel.H:96
int id() const override
Return the unique tag (integer ID) for this instance.
Definition OceanWavesModel.H:88
void read_inputs(const ::amr_wind::utils::MultiParser &pp) override
Definition OceanWavesModel.H:90
void write_outputs() override
Definition OceanWavesModel.H:120
void prepare_outputs(const std::string &out_dir) override
Definition OceanWavesModel.H:111
void init_waves(int level, const amrex::Geometry &geom, bool multiphase_mode) override
Definition OceanWavesModel.H:122
ops::ProcessOutputsOp< WaveTheoryTrait > m_out_op
Outputs processor.
Definition OceanWavesModel.H:70
Definition OceanWavesModel.H:23
virtual void read_inputs(const ::amr_wind::utils::MultiParser &)=0
virtual void update_target_fields(const amrex::Real)=0
virtual void prepare_outputs(const std::string &)=0
static std::string base_identifier()
Definition OceanWavesModel.H:25
virtual void init_waves(int, const amrex::Geometry &, bool)=0
virtual const std::string & label() const =0
virtual void update_target_volume_fraction()=0
Definition BCInterface.cpp:7
Definition Factory.H:65
Definition OceanWavesOps.H:14
Definition OceanWavesOps.H:11