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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/ocean_waves/relaxation_zones/relaxation_zones_ops.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
relaxation_zones_ops.H
Go to the documentation of this file.
1#ifndef RELAX_ZONES_OPS_H
2#define RELAX_ZONES_OPS_H
3
10
11#include "AMReX_MultiFabUtil.H"
12
13namespace amr_wind::ocean_waves {
14namespace relaxation_zones {
15
18void read_inputs(
19 RelaxZonesBaseData& /*wdata*/,
20 OceanWavesInfo& /*unused*/,
21 const ::amr_wind::utils::MultiParser& /*pp*/);
22
26
29void apply_relaxation_zones(CFDSim& sim, const RelaxZonesBaseData& wdata);
30
31void update_target_vof(CFDSim& sim);
32
34 const std::string& /*ncfile*/,
35 const RelaxZonesBaseData& /*meta*/,
36 const OceanWavesInfo& /*info*/);
37
38void write_netcdf(
39 const std::string& /*ncfile*/,
40 const RelaxZonesBaseData& /*meta*/,
41 const OceanWavesInfo& /*info*/,
42 const amrex::Real /*time*/);
43
44} // namespace relaxation_zones
45
46namespace ops {
47
48template <typename WaveTheoryTrait>
50{
51 static constexpr bool update_relaxation_zones = true;
52 static constexpr bool apply_relaxation_zones = true;
53};
54
55template <typename WaveTheoryTrait>
57 WaveTheoryTrait,
58 typename std::enable_if_t<
59 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
60{
62 typename WaveTheoryTrait::DataType& /*unused*/,
63 const amrex::Real /*unused*/)
64 {}
65};
66
67template <typename WaveTheoryTrait>
69 WaveTheoryTrait,
70 typename std::enable_if_t<
71 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
72{
73 void operator()(typename WaveTheoryTrait::DataType& data)
74 {
75 BL_PROFILE("amr-wind::ocean_waves::OceanWaves::update_velocities");
76
77 const auto& wdata = data.meta();
78 auto& sim = data.sim();
79
81 }
82};
83
84template <typename WaveTheoryTrait>
86 WaveTheoryTrait,
87 typename std::enable_if_t<
88 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
89{
90 void operator()(typename WaveTheoryTrait::DataType& data)
91 {
92 BL_PROFILE("amr-wind::ocean_waves::OceanWaves::update_target_vof");
93
94 auto& sim = data.sim();
95
97 }
98};
99
100template <typename WaveTheoryTrait>
102 WaveTheoryTrait,
103 typename std::enable_if_t<
104 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
105{
106private:
107 typename WaveTheoryTrait::DataType& m_data;
108
109 std::string m_out_dir;
110 std::string m_nc_filename;
111 int m_out_freq{10};
112
113public:
114 explicit ProcessOutputsOp(typename WaveTheoryTrait::DataType& data)
115 : m_data(data)
116 {}
117
118 void read_io_options(const ::amr_wind::utils::MultiParser& pp)
119 {
120 pp.query("output_frequency", m_out_freq);
121 }
122
123 void prepare_outputs(const std::string& out_dir)
124 {
125 m_nc_filename = out_dir + "/" + m_data.info().label + ".nc";
127 m_nc_filename, m_data.meta(), m_data.info());
128 }
129
131 {
132 const auto& time = m_data.sim().time();
133 const int tidx = time.time_index();
134 if (tidx % m_out_freq != 0) {
135 return;
136 }
137
139 m_nc_filename, m_data.meta(), m_data.info(), time.new_time());
140 }
141};
142
143} // namespace ops
144
145} // namespace amr_wind::ocean_waves
146
147#endif /* RELAX_ZONES_OPS_H */
Definition CFDSim.H:54
void update_target_vof(CFDSim &sim)
Definition relaxation_zones_ops.cpp:51
void init_data_structures(RelaxZonesBaseData &)
Definition relaxation_zones_ops.cpp:49
void write_netcdf(const std::string &ncfile, const RelaxZonesBaseData &meta, const OceanWavesInfo &info, const amrex::Real time)
Definition relaxation_zones_ops.cpp:283
void apply_relaxation_zones(CFDSim &sim, const RelaxZonesBaseData &wdata)
Definition relaxation_zones_ops.cpp:73
void read_inputs(RelaxZonesBaseData &wdata, OceanWavesInfo &, const ::amr_wind::utils::MultiParser &pp)
Definition relaxation_zones_ops.cpp:15
void prepare_netcdf_file(const std::string &ncfile, const RelaxZonesBaseData &meta, const OceanWavesInfo &info)
Definition relaxation_zones_ops.cpp:275
Definition OceanWaves.cpp:11
Definition OceanWavesTypes.H:35
Definition RelaxationZones.H:16
void operator()(typename WaveTheoryTrait::DataType &, const amrex::Real)
Definition relaxation_zones_ops.H:61
Definition relaxation_zones_ops.H:50
static constexpr bool update_relaxation_zones
Definition relaxation_zones_ops.H:51
static constexpr bool apply_relaxation_zones
Definition relaxation_zones_ops.H:52