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