/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
Loading...
Searching...
No Matches
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
29 CFDSim& sim, const RelaxZonesBaseData& wdata);
30
33void apply_relaxation_zones(CFDSim& sim, const RelaxZonesBaseData& wdata);
34
35void update_target_vof(CFDSim& sim);
36
38 const std::string& /*ncfile*/,
39 const RelaxZonesBaseData& /*meta*/,
40 const OceanWavesInfo& /*info*/);
41
42void write_netcdf(
43 const std::string& /*ncfile*/,
44 const RelaxZonesBaseData& /*meta*/,
45 const OceanWavesInfo& /*info*/,
46 const amrex::Real /*time*/);
47
48} // namespace relaxation_zones
49
50namespace ops {
51
52template <typename WaveTheoryTrait>
54{
55 static constexpr bool update_relaxation_zones = true;
56 static constexpr bool apply_relaxation_zones = true;
57};
58
59template <typename WaveTheoryTrait>
61 WaveTheoryTrait,
62 typename std::enable_if_t<
63 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
64{
66 typename WaveTheoryTrait::DataType& /*unused*/,
67 const amrex::Real /*unused*/)
68 {}
69};
70
71template <typename WaveTheoryTrait>
73 WaveTheoryTrait,
74 typename std::enable_if_t<
75 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
76{
77 void operator()(typename WaveTheoryTrait::DataType& data)
78 {
79 BL_PROFILE("amr-wind::ocean_waves::OceanWaves::update_velocities");
80
81 const auto& wdata = data.meta();
82 auto& sim = data.sim();
83
85 }
86};
87
88template <typename WaveTheoryTrait>
90 WaveTheoryTrait,
91 typename std::enable_if_t<
92 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
93{
94 void operator()(typename WaveTheoryTrait::DataType& data)
95 {
96 BL_PROFILE("amr-wind::ocean_waves::OceanWaves::update_target_vof");
97
98 const auto& wdata = data.meta();
99 auto& sim = data.sim();
100
101 if (wdata.has_beach && sim.repo().field_exists("vof")) {
103 }
104
106 }
107};
108
109template <typename WaveTheoryTrait>
111 WaveTheoryTrait,
112 typename std::enable_if_t<
113 std::is_base_of_v<RelaxZonesType, WaveTheoryTrait>>>
114{
115private:
116 typename WaveTheoryTrait::DataType& m_data;
117
118 std::string m_out_dir;
119 std::string m_nc_filename;
120 int m_out_freq{10};
121
122public:
123 explicit ProcessOutputsOp(typename WaveTheoryTrait::DataType& data)
124 : m_data(data)
125 {}
126
127 void read_io_options(const ::amr_wind::utils::MultiParser& pp)
128 {
129 pp.query("output_frequency", m_out_freq);
130 }
131
132 void prepare_outputs(const std::string& out_dir)
133 {
134 m_nc_filename = out_dir + "/" + m_data.info().label + ".nc";
136 m_nc_filename, m_data.meta(), m_data.info());
137 }
138
140 {
141 const auto& time = m_data.sim().time();
142 const int tidx = time.time_index();
143 if (tidx % m_out_freq != 0) {
144 return;
145 }
146
148 m_nc_filename, m_data.meta(), m_data.info(), time.new_time());
149 }
150};
151
152} // namespace ops
153
154} // namespace amr_wind::ocean_waves
155
156#endif /* RELAX_ZONES_OPS_H */
Definition CFDSim.H:54
Definition OceanWavesOps.H:8
Definition relaxation_zones_ops.cpp:13
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:304
void apply_relaxation_zones(CFDSim &sim, const RelaxZonesBaseData &wdata)
Definition relaxation_zones_ops.cpp:130
void read_inputs(RelaxZonesBaseData &wdata, OceanWavesInfo &, const ::amr_wind::utils::MultiParser &pp)
Definition relaxation_zones_ops.cpp:15
void modify_target_fields_for_beach(CFDSim &sim, const RelaxZonesBaseData &wdata)
Definition relaxation_zones_ops.cpp:73
void prepare_netcdf_file(const std::string &ncfile, const RelaxZonesBaseData &meta, const OceanWavesInfo &info)
Definition relaxation_zones_ops.cpp:296
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:65
Definition relaxation_zones_ops.H:54
static constexpr bool update_relaxation_zones
Definition relaxation_zones_ops.H:55
static constexpr bool apply_relaxation_zones
Definition relaxation_zones_ops.H:56