/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
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
16namespace amr_wind {
17
18namespace pde::icns {
19class ABLForcing;
20class ABLMesoForcingMom;
21} // namespace pde::icns
22
23namespace pde::temperature {
24class ABLMesoForcingTemp;
25}
26
35class ABLStats : public ABLStatsBase::Register<ABLStats>
36{
37public:
38 static std::string identifier() { return "precursor"; }
39
41 CFDSim& /*sim*/,
42 const ABLWallFunction& /*abl_wall_func*/,
43 const int dir);
44
45 ~ABLStats() override;
46
47 ABLStatsMode abl_mode() const override { return ABLStatsMode::computed; }
48
49 // Perform initialization actions after the mesh has been created
50 void post_init_actions() override;
51
53 void pre_advance_work() override {}
54
56 void post_advance_work() override;
57
59 void compute_zi();
60
62 const VelPlaneAveragingFine& vel_profile() const override
63 {
64 return m_pa_vel_fine;
65 };
66
68 const VelPlaneAveraging& vel_profile_coarse() const override
69 {
70 return m_pa_vel;
71 };
72
74 const FieldPlaneAveraging& theta_profile() const override
75 {
76 return m_pa_temp;
77 }
78
81 {
82 return m_pa_temp_fine;
83 }
84
85 void register_forcing_term(pde::icns::ABLForcing* forcing) const override
86 {
87 m_abl_forcing = forcing;
88 }
89
91 pde::icns::ABLMesoForcingMom* forcing) const override
92 {
93 m_abl_meso_mom_forcing = forcing;
94 }
95
97 pde::temperature::ABLMesoForcingTemp* forcing) const override
98 {
100 }
101
103 void
104 calc_sfs_stress_avgs(ScratchField& sfs_stress, ScratchField& t_sfs_stress);
105
109 const Field& buoy_prod,
110 const Field& shear_prod,
111 const Field& dissipation,
112 const amrex::Real dt);
113
114protected:
116 void initialize();
117
119 void calc_averages();
120
122 virtual void process_output();
123
125 virtual void prepare_ascii_file();
127 virtual void prepare_netcdf_file();
128
130 void write_netcdf();
131
137 virtual void write_ascii();
138
139private:
144
154
157
161
163#ifdef AMR_WIND_USE_NETCDF
164 std::string m_out_fmt{"netcdf"};
165 std::string m_ncfile_name;
166#else
167 std::string m_out_fmt{"ascii"};
168#endif
169 std::string m_ascii_file_name;
170
172 int m_out_freq{100};
173
175 amrex::Real m_gravity{9.81};
176
178 amrex::Real m_kappa{0.41};
179
181 amrex::Real m_zi{0.0};
182
185
187 amrex::Real m_dn{0.0};
188
190 size_t m_ncells_h1{0};
191 size_t m_ncells_h2{0};
192
195};
196
197} // namespace amr_wind
198
199#endif /* ABLISTATS_H */
Definition ABLStats.H:36
void register_forcing_term(pde::icns::ABLForcing *forcing) const override
Definition ABLStats.H:85
void post_init_actions() override
Definition ABLStats.cpp:41
Field & m_mueff
Definition ABLStats.H:143
void write_netcdf()
Write sampled data into a NetCDF file.
Definition ABLStats.cpp:493
pde::temperature::ABLMesoForcingTemp * m_abl_meso_temp_forcing
Definition ABLStats.H:159
~ABLStats() override
virtual void prepare_ascii_file()
Prepare ASCII file.
Definition ABLStats.cpp:363
Field & m_temperature
Definition ABLStats.H:142
const ABLWallFunction & m_abl_wall_func
Definition ABLStats.H:141
void calc_tke_diffusion(ScratchField &diffusion, const Field &buoy_prod, const Field &shear_prod, const Field &dissipation, const amrex::Real dt)
Calculate tke diffusion term by eliminating other terms.
Definition ABLStats.cpp:150
amrex::Real m_zi
Variable to store capping inversion height.
Definition ABLStats.H:181
ABLStatsMode abl_mode() const override
Definition ABLStats.H:47
virtual void prepare_netcdf_file()
Prepare NetCDF metadata.
Definition ABLStats.cpp:388
ThirdMomentAveraging m_pa_uuu
Definition ABLStats.H:153
const VelPlaneAveragingFine & vel_profile() const override
Return vel plane averaging instance.
Definition ABLStats.H:62
void initialize()
Read user inputs and create the necessary files.
Definition ABLStats.cpp:47
pde::icns::ABLMesoForcingMom * m_abl_meso_mom_forcing
Definition ABLStats.H:158
amrex::Real m_dn
Cell spacing at the coarsest level.
Definition ABLStats.H:187
const FieldPlaneAveragingFine & theta_profile_fine() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:80
int m_out_freq
Frequency of data sampling and output.
Definition ABLStats.H:172
ABLStats(CFDSim &, const ABLWallFunction &, const int dir)
Definition ABLStats.cpp:22
const VelPlaneAveraging & vel_profile_coarse() const override
Return vel plane averaging instance.
Definition ABLStats.H:68
FieldPlaneAveraging m_pa_temp
Definition ABLStats.H:146
void register_meso_mom_forcing(pde::icns::ABLMesoForcingMom *forcing) const override
Definition ABLStats.H:90
std::string m_out_fmt
Format of the data output (ascii, netcdf, etc.)
Definition ABLStats.H:164
const FieldPlaneAveraging & theta_profile() const override
Return instance that handles temperature statistics.
Definition ABLStats.H:74
void register_meso_temp_forcing(pde::temperature::ABLMesoForcingTemp *forcing) const override
Definition ABLStats.H:96
virtual void write_ascii()
Definition ABLStats.cpp:293
CFDSim & m_sim
Definition ABLStats.H:140
VelPlaneAveraging m_pa_vel
Definition ABLStats.H:145
int m_normal_dir
Wall-normal direction axis.
Definition ABLStats.H:184
SecondMomentAveraging m_pa_tt
Definition ABLStats.H:150
SecondMomentAveraging m_pa_uu
Definition ABLStats.H:152
void pre_advance_work() override
Perform actions before a new timestep.
Definition ABLStats.H:53
pde::icns::ABLForcing * m_abl_forcing
Reference to ABL forcing term if present.
Definition ABLStats.H:156
static std::string identifier()
Definition ABLStats.H:38
VelPlaneAveragingFine m_pa_vel_fine
Definition ABLStats.H:147
virtual void process_output()
Output data based on user-defined format.
Definition ABLStats.cpp:281
size_t m_ncells_h1
Number of cells in the horizontal direction.
Definition ABLStats.H:190
void compute_zi()
Compute height of capping inversion.
Definition ABLStats.cpp:231
std::string m_ncfile_name
Definition ABLStats.H:165
FieldPlaneAveragingFine m_pa_temp_fine
Definition ABLStats.H:148
SecondMomentAveraging m_pa_tu
Definition ABLStats.H:151
size_t m_ncells_h2
Definition ABLStats.H:191
amrex::Real m_gravity
Acceleration due to gravity magnitude.
Definition ABLStats.H:175
void post_advance_work() override
Process fields given timestep and output to disk.
Definition ABLStats.cpp:207
void calc_averages()
Calculate plane average profiles.
Definition ABLStats.cpp:92
void calc_sfs_stress_avgs(ScratchField &sfs_stress, ScratchField &t_sfs_stress)
Calculate sfs stress averages.
Definition ABLStats.cpp:102
amrex::Real m_kappa
Von-Karman constant.
Definition ABLStats.H:178
std::string m_ascii_file_name
Definition ABLStats.H:169
FieldPlaneAveraging m_pa_mueff
Definition ABLStats.H:149
bool m_do_energy_budget
Do energy budget.
Definition ABLStats.H:194
Definition ABLWallFunction.H:20
Definition CFDSim.H:54
Definition Field.H:116
Definition ScratchField.H:30
Definition SecondMomentAveraging.H:26
Definition ThirdMomentAveraging.H:16
Definition FieldPlaneAveragingFine.H:114
Definition FieldPlaneAveraging.H:140
Definition ABLForcing.H:17
Definition ABLMesoForcingMom.H:26
Definition ABLMesoForcingTemp.H:19
Definition BCInterface.cpp:7
ABLStatsMode
Definition ABLStatsBase.H:17
Definition diffusion.H:8