/home/runner/work/kynema-sgf/kynema-sgf/src/wind_energy/ABLStats.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/wind_energy/ABLStats.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ABLStats.H
Go to the documentation of this file.
1#ifndef ABLISTATS_H
2#define ABLISTATS_H
3
5#include "src/CFDSim.H"
14#include "AMReX_REAL.H"
15
16using namespace amrex::literals;
17
18namespace kynema_sgf {
19
20namespace pde::icns {
21class ABLForcing;
23} // namespace pde::icns
24
25namespace pde::temperature {
27}
28
37class ABLStats : public ABLStatsBase::Register<ABLStats>
38{
39public:
40 static std::string identifier() { return "precursor"; }
41
43 CFDSim& /*sim*/,
44 const ABLWallFunction& /*abl_wall_func*/,
45 int dir,
46 int max_level);
47
48 ~ABLStats() override;
49
50 ABLStatsMode abl_mode() const override { return ABLStatsMode::computed; }
51
52 const int& max_level() const override { return m_max_level; }
53
54 // Perform initialization actions after the mesh has been created
55 void post_init_actions() override;
56
58 void pre_advance_work() override {}
59
61 void post_advance_work() override;
62
64 void compute_zi();
65
67 const VelPlaneAveraging& vel_profile() const override
68 {
69 return m_pa_vel_fine;
70 };
71
73 const VelPlaneAveraging& vel_profile_coarse() const override
74 {
75 return m_pa_vel;
76 };
77
79 const FieldPlaneAveraging& theta_profile() const override
80 {
81 return m_pa_temp;
82 }
83
86 {
87 return m_pa_temp_fine;
88 }
89
90 void register_forcing_term(pde::icns::ABLForcing* forcing) const override
91 {
92 m_abl_forcing = forcing;
93 }
94
96 pde::icns::ABLMesoForcingMom* forcing) const override
97 {
98 m_abl_meso_mom_forcing = forcing;
99 }
100
102 pde::temperature::ABLMesoForcingTemp* forcing) const override
103 {
104 m_abl_meso_temp_forcing = forcing;
105 }
106
108 void
109 calc_sfs_stress_avgs(ScratchField& sfs_stress, ScratchField& t_sfs_stress);
110
114 const Field& buoy_prod,
115 const Field& shear_prod,
116 const Field& dissipation,
117 amrex::Real dt);
118
119protected:
121 void initialize();
122
124 void calc_averages();
125
127 virtual void process_output();
128
130 virtual void prepare_ascii_file();
132 virtual void prepare_netcdf_file();
133
135 void write_netcdf();
136
142 virtual void write_ascii();
143
144private:
149
159
162
166
168#ifdef KYNEMA_SGF_USE_NETCDF
169 std::string m_out_fmt{"netcdf"};
170 std::string m_ncfile_name;
171#else
172 std::string m_out_fmt{"ascii"};
173#endif
174 std::string m_ascii_file_name;
175
177 int m_max_level{-1};
178 // This also controls what is considered as the first cell height,
179 // which is the default log law height in the wall function
180
182 int m_out_freq{100};
183
185 amrex::Real m_gravity{9.81_rt};
186
188 amrex::Real m_kappa{0.41_rt};
189
191 amrex::Real m_zi{0.0_rt};
192
195
197 amrex::Real m_dn{0.0_rt};
198
200 size_t m_ncells_h1{0};
201 size_t m_ncells_h2{0};
202
205};
206
207} // namespace kynema_sgf
208
209#endif /* ABLISTATS_H */
Field & m_mueff
Definition ABLStats.H:148
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition ABLStats.cpp:487
void register_meso_mom_forcing(pde::icns::ABLMesoForcingMom *forcing) const override
Definition ABLStats.H:95
ThirdMomentAveraging m_pa_uuu
Definition ABLStats.H:158
amrex::Real m_zi
Variable to store capping inversion height.
Definition ABLStats.H:191
pde::temperature::ABLMesoForcingTemp * m_abl_meso_temp_forcing
Definition ABLStats.H:164
void calc_tke_diffusion(ScratchField &diffusion, const Field &buoy_prod, const Field &shear_prod, const Field &dissipation, amrex::Real dt)
Calculate tke diffusion term by eliminating other terms.
Definition ABLStats.cpp:168
amrex::Real m_kappa
Von-Karman constant.
Definition ABLStats.H:188
void calc_averages()
Calculate plane average profiles.
Definition ABLStats.cpp:110
FieldPlaneAveraging m_pa_mueff
Definition ABLStats.H:154
VelPlaneAveraging m_pa_vel
Definition ABLStats.H:150
int m_normal_dir
Wall-normal direction axis.
Definition ABLStats.H:194
amrex::Real m_gravity
Acceleration due to gravity magnitude.
Definition ABLStats.H:185
void write_netcdf()
Write sampled data into a NetCDF file.
Definition ABLStats.cpp:593
std::string m_ascii_file_name
Definition ABLStats.H:174
pde::icns::ABLForcing * m_abl_forcing
Reference to ABL forcing term if present.
Definition ABLStats.H:161
SecondMomentAveraging m_pa_tu
Definition ABLStats.H:156
const VelPlaneAveraging & vel_profile_coarse() const override
Return vel plane averaging instance.
Definition ABLStats.H:73
size_t m_ncells_h1
Number of cells in the horizontal direction.
Definition ABLStats.H:200
pde::icns::ABLMesoForcingMom * m_abl_meso_mom_forcing
Definition ABLStats.H:163
FieldPlaneAveraging m_pa_temp_fine
Definition ABLStats.H:153
void register_meso_temp_forcing(pde::temperature::ABLMesoForcingTemp *forcing) const override
Definition ABLStats.H:101
FieldPlaneAveraging m_pa_temp
Definition ABLStats.H:151
virtual void process_output()
Output data based on user-defined format.
Definition ABLStats.cpp:377
virtual void write_ascii()
Definition ABLStats.cpp:392
void compute_zi()
Compute height of capping inversion.
Definition ABLStats.cpp:249
ABLStatsMode abl_mode() const override
Definition ABLStats.H:50
void pre_advance_work() override
Perform actions before a new timestep.
Definition ABLStats.H:58
std::string m_ncfile_name
Definition ABLStats.H:170
Field & m_temperature
Definition ABLStats.H:147
virtual void prepare_ascii_file()
Prepare ASCII file.
Definition ABLStats.cpp:462
void calc_sfs_stress_avgs(ScratchField &sfs_stress, ScratchField &t_sfs_stress)
Calculate sfs stress averages.
Definition ABLStats.cpp:121
amrex::Real m_dn
Cell spacing at the coarsest level.
Definition ABLStats.H:197
SecondMomentAveraging m_pa_uu
Definition ABLStats.H:157
const int & max_level() const override
Definition ABLStats.H:52
int m_out_freq
Frequency of data sampling and output.
Definition ABLStats.H:182
static std::string identifier()
Definition ABLStats.H:40
const VelPlaneAveraging & vel_profile() const override
Return vel plane averaging instance.
Definition ABLStats.H:67
ABLStats(CFDSim &, const ABLWallFunction &, int dir, int max_level)
Definition ABLStats.cpp:24
const ABLWallFunction & m_abl_wall_func
Definition ABLStats.H:146
const FieldPlaneAveraging & theta_profile_fine() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:85
void register_forcing_term(pde::icns::ABLForcing *forcing) const override
Definition ABLStats.H:90
SecondMomentAveraging m_pa_tt
Definition ABLStats.H:155
void initialize()
Read user inputs and create the necessary files.
Definition ABLStats.cpp:60
void post_advance_work() override
Process fields given timestep and output to disk.
Definition ABLStats.cpp:225
VelPlaneAveraging m_pa_vel_fine
Definition ABLStats.H:152
CFDSim & m_sim
Definition ABLStats.H:145
bool m_do_energy_budget
Do energy budget.
Definition ABLStats.H:204
const FieldPlaneAveraging & theta_profile() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:79
size_t m_ncells_h2
Definition ABLStats.H:201
void post_init_actions() override
Definition ABLStats.cpp:47
int m_max_level
Maximum level to consider in planar averages: -1 means no limit.
Definition ABLStats.H:177
std::string m_out_fmt
Format of the data output (ascii, netcdf, etc.)
Definition ABLStats.H:169
Definition ABLWallFunction.H:23
Definition CFDSim.H:55
Definition Field.H:112
Definition ScratchField.H:30
Definition SecondMomentAveraging.H:26
Definition ThirdMomentAveraging.H:16
Definition FieldPlaneAveraging.H:150
Definition ABLForcing.H:20
Definition ABLMesoForcingMom.H:26
Definition ABLMesoForcingTemp.H:19
Definition diffusion.H:7
Definition ABLForcing.cpp:14
Definition ABLMesoForcingTemp.cpp:15
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
FPlaneAveraging< Field > FieldPlaneAveraging
Definition FieldPlaneAveraging.H:143
ABLStatsMode
Definition ABLStatsBase.H:18
@ computed
Definition ABLStatsBase.H:19