/home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/ABLStats.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/ABLStats.H Source File
AMR-Wind 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 "amr-wind/CFDSim.H"
15#include "AMReX_REAL.H"
16
17using namespace amrex::literals;
18
19namespace amr_wind {
20
21namespace pde::icns {
22class ABLForcing;
24} // namespace pde::icns
25
26namespace pde::temperature {
28}
29
38class ABLStats : public ABLStatsBase::Register<ABLStats>
39{
40public:
41 static std::string identifier() { return "precursor"; }
42
44 CFDSim& /*sim*/, const ABLWallFunction& /*abl_wall_func*/, int dir);
45
46 ~ABLStats() override;
47
48 ABLStatsMode abl_mode() const override { return ABLStatsMode::computed; }
49
50 // Perform initialization actions after the mesh has been created
51 void post_init_actions() override;
52
54 void pre_advance_work() override {}
55
57 void post_advance_work() override;
58
60 void compute_zi();
61
63 const VelPlaneAveragingFine& vel_profile() const override
64 {
65 return m_pa_vel_fine;
66 };
67
69 const VelPlaneAveraging& vel_profile_coarse() const override
70 {
71 return m_pa_vel;
72 };
73
75 const FieldPlaneAveraging& theta_profile() const override
76 {
77 return m_pa_temp;
78 }
79
82 {
83 return m_pa_temp_fine;
84 }
85
86 void register_forcing_term(pde::icns::ABLForcing* forcing) const override
87 {
88 m_abl_forcing = forcing;
89 }
90
92 pde::icns::ABLMesoForcingMom* forcing) const override
93 {
94 m_abl_meso_mom_forcing = forcing;
95 }
96
98 pde::temperature::ABLMesoForcingTemp* forcing) const override
99 {
100 m_abl_meso_temp_forcing = forcing;
101 }
102
104 void
105 calc_sfs_stress_avgs(ScratchField& sfs_stress, ScratchField& t_sfs_stress);
106
110 const Field& buoy_prod,
111 const Field& shear_prod,
112 const Field& dissipation,
113 amrex::Real dt);
114
115protected:
117 void initialize();
118
120 void calc_averages();
121
123 virtual void process_output();
124
126 virtual void prepare_ascii_file();
128 virtual void prepare_netcdf_file();
129
131 void write_netcdf();
132
138 virtual void write_ascii();
139
140private:
145
155
158
162
164#ifdef AMR_WIND_USE_NETCDF
165 std::string m_out_fmt{"netcdf"};
166 std::string m_ncfile_name;
167#else
168 std::string m_out_fmt{"ascii"};
169#endif
170 std::string m_ascii_file_name;
171
173 int m_out_freq{100};
174
176 amrex::Real m_gravity{9.81_rt};
177
179 amrex::Real m_kappa{0.41_rt};
180
182 amrex::Real m_zi{0.0_rt};
183
186
188 amrex::Real m_dn{0.0_rt};
189
191 size_t m_ncells_h1{0};
192 size_t m_ncells_h2{0};
193
196};
197
198} // namespace amr_wind
199
200#endif /* ABLISTATS_H */
void register_forcing_term(pde::icns::ABLForcing *forcing) const override
Definition ABLStats.H:86
void post_init_actions() override
Definition ABLStats.cpp:43
Field & m_mueff
Definition ABLStats.H:144
void write_netcdf()
Write sampled data into a NetCDF file.
Definition ABLStats.cpp:582
pde::temperature::ABLMesoForcingTemp * m_abl_meso_temp_forcing
Definition ABLStats.H:160
~ABLStats() override
virtual void prepare_ascii_file()
Prepare ASCII file.
Definition ABLStats.cpp:451
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:157
Field & m_temperature
Definition ABLStats.H:143
const ABLWallFunction & m_abl_wall_func
Definition ABLStats.H:142
amrex::Real m_zi
Variable to store capping inversion height.
Definition ABLStats.H:182
ABLStatsMode abl_mode() const override
Definition ABLStats.H:48
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition ABLStats.cpp:476
ThirdMomentAveraging m_pa_uuu
Definition ABLStats.H:154
const VelPlaneAveragingFine & vel_profile() const override
Return vel plane averaging instance.
Definition ABLStats.H:63
void initialize()
Read user inputs and create the necessary files.
Definition ABLStats.cpp:49
pde::icns::ABLMesoForcingMom * m_abl_meso_mom_forcing
Definition ABLStats.H:159
amrex::Real m_dn
Cell spacing at the coarsest level.
Definition ABLStats.H:188
const FieldPlaneAveragingFine & theta_profile_fine() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:81
int m_out_freq
Frequency of data sampling and output.
Definition ABLStats.H:173
const VelPlaneAveraging & vel_profile_coarse() const override
Return vel plane averaging instance.
Definition ABLStats.H:69
FieldPlaneAveraging m_pa_temp
Definition ABLStats.H:147
void register_meso_mom_forcing(pde::icns::ABLMesoForcingMom *forcing) const override
Definition ABLStats.H:91
std::string m_out_fmt
Format of the data output (ascii, netcdf, etc.)
Definition ABLStats.H:165
const FieldPlaneAveraging & theta_profile() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:75
void register_meso_temp_forcing(pde::temperature::ABLMesoForcingTemp *forcing) const override
Definition ABLStats.H:97
virtual void write_ascii()
Definition ABLStats.cpp:381
CFDSim & m_sim
Definition ABLStats.H:141
VelPlaneAveraging m_pa_vel
Definition ABLStats.H:146
int m_normal_dir
Wall-normal direction axis.
Definition ABLStats.H:185
ABLStats(CFDSim &, const ABLWallFunction &, int dir)
Definition ABLStats.cpp:24
SecondMomentAveraging m_pa_tt
Definition ABLStats.H:151
SecondMomentAveraging m_pa_uu
Definition ABLStats.H:153
void pre_advance_work() override
Perform actions before a new timestep.
Definition ABLStats.H:54
pde::icns::ABLForcing * m_abl_forcing
Reference to ABL forcing term if present.
Definition ABLStats.H:157
static std::string identifier()
Definition ABLStats.H:41
VelPlaneAveragingFine m_pa_vel_fine
Definition ABLStats.H:148
virtual void process_output()
Output data based on user-defined format.
Definition ABLStats.cpp:366
size_t m_ncells_h1
Number of cells in the horizontal direction.
Definition ABLStats.H:191
void compute_zi()
Compute height of capping inversion.
Definition ABLStats.cpp:238
std::string m_ncfile_name
Definition ABLStats.H:166
FieldPlaneAveragingFine m_pa_temp_fine
Definition ABLStats.H:149
SecondMomentAveraging m_pa_tu
Definition ABLStats.H:152
size_t m_ncells_h2
Definition ABLStats.H:192
amrex::Real m_gravity
Acceleration due to gravity magnitude.
Definition ABLStats.H:176
void post_advance_work() override
Process fields given timestep and output to disk.
Definition ABLStats.cpp:214
void calc_averages()
Calculate plane average profiles.
Definition ABLStats.cpp:99
void calc_sfs_stress_avgs(ScratchField &sfs_stress, ScratchField &t_sfs_stress)
Calculate sfs stress averages.
Definition ABLStats.cpp:110
amrex::Real m_kappa
Von-Karman constant.
Definition ABLStats.H:179
std::string m_ascii_file_name
Definition ABLStats.H:170
FieldPlaneAveraging m_pa_mueff
Definition ABLStats.H:150
bool m_do_energy_budget
Do energy budget.
Definition ABLStats.H:195
Definition ABLWallFunction.H:24
Definition CFDSim.H:54
Definition Field.H:112
Definition ScratchField.H:30
Definition SecondMomentAveraging.H:26
Definition ThirdMomentAveraging.H:16
Definition FieldPlaneAveragingFine.H:144
Definition FieldPlaneAveraging.H:146
Definition ABLForcing.H:20
Definition ABLMesoForcingMom.H:26
Definition ABLMesoForcingTemp.H:19
Definition ABLForcing.cpp:14
Definition ABLMesoForcingTemp.cpp:16
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
FPlaneAveraging< Field > FieldPlaneAveraging
Definition FieldPlaneAveraging.H:139
ABLStatsMode
Definition ABLStatsBase.H:18
@ computed
Definition ABLStatsBase.H:19
FPlaneAveragingFine< Field > FieldPlaneAveragingFine
Definition FieldPlaneAveragingFine.H:137
Definition diffusion.H:7