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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/wind_energy/ABLFieldInit.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ABLFieldInit.H
Go to the documentation of this file.
1#ifndef ABLFIELDINIT_H
2#define ABLFIELDINIT_H
3
5
6#include "AMReX_Array.H"
7#include "AMReX_Array4.H"
8#include "AMReX_Box.H"
9#include "AMReX_Geometry.H"
10#include "AMReX_REAL.H"
11#include "AMReX_Vector.H"
12#include "AMReX_Gpu.H"
13
14using namespace amrex::literals;
15
16namespace amr_wind {
17
21{
22 static_assert(AMREX_SPACEDIM == 3, "ABL requires 3 dimensional mesh");
23
24public:
26
27 void initialize_from_inputfile(); // default
28 void initialize_from_netcdf(); // general wind/temperature profiles
29
30 void operator()(
31 const amrex::Box& vbx,
32 const amrex::Geometry& geom,
33 const amrex::Array4<amrex::Real>& velocity,
34 const amrex::Array4<amrex::Real>& density,
35 const amrex::Array4<amrex::Real>& temperature) const;
36
43 const int lev, const amrex::Geometry& geom, Field& temperature) const;
44
47
49 void init_tke(const amrex::Geometry& geom, amrex::MultiFab& tke) const;
50
51private:
53 amrex::Vector<amrex::Real> m_vel;
54
56 std::string m_vel_timetable;
57
59 amrex::Real m_vel_speed;
60
62 amrex::Real m_vel_dir;
63
67 amrex::Vector<amrex::Real> m_theta_heights;
68 amrex::Vector<amrex::Real> m_theta_values;
69
74 std::string m_terrain_file{"terrain.amrwind"};
75 amrex::Gpu::DeviceVector<amrex::Real> m_xterrain;
76 amrex::Gpu::DeviceVector<amrex::Real> m_yterrain;
77 amrex::Gpu::DeviceVector<amrex::Real> m_zterrain;
79 std::string m_1d_rans;
80 amrex::Vector<amrex::Real> m_wind_heights;
81 amrex::Vector<amrex::Real> m_u_values;
82 amrex::Vector<amrex::Real> m_v_values;
83 amrex::Vector<amrex::Real> m_tke_values;
85
86 // Device copies of the above arrays
87 amrex::Gpu::DeviceVector<amrex::Real> m_thht_d;
88 amrex::Gpu::DeviceVector<amrex::Real> m_thvv_d;
89
90 amrex::Gpu::DeviceVector<amrex::Real> m_windht_d;
91 amrex::Gpu::DeviceVector<amrex::Real> m_prof_u_d;
92 amrex::Gpu::DeviceVector<amrex::Real> m_prof_v_d;
93 amrex::Gpu::DeviceVector<amrex::Real> m_prof_tke_d;
95 amrex::Real m_rho;
96
98 amrex::Real m_deltaU{1.0_rt};
99
101 amrex::Real m_deltaV{1.0_rt};
102
104 amrex::Real m_Uperiods{4.0_rt};
105
107 amrex::Real m_Vperiods{4.0_rt};
108
110 amrex::Real m_ref_height{50.0_rt};
111
113 amrex::Real m_delta_t{0.8_rt};
114
116 amrex::Real m_theta_gauss_mean{0.0_rt};
117
119 amrex::Real m_theta_gauss_var{1.0_rt};
120
122 amrex::Real m_theta_cutoff_height{1.0e16_rt};
123
125 amrex::Real m_tke_init{0.1_rt};
126
128 amrex::Real m_tke_init_factor{0.4_rt};
129
131 amrex::Real m_tke_cutoff_height{250.0_rt};
132
134 amrex::RealArray m_top_vel{20.0_rt};
135
137 amrex::RealArray m_bottom_vel{4.0_rt};
138
140 bool m_linear_profile{false};
141
143 bool m_perturb_vel{true};
144
146 bool m_perturb_theta{false};
147
150
153};
154
155} // namespace amr_wind
156
157#endif /* ABLFIELDINIT_H */
amrex::Real m_tke_cutoff_height
Cutoff height for init tke profile.
Definition ABLFieldInit.H:131
bool m_perturb_theta
Perturb temperature field with random fluctuations.
Definition ABLFieldInit.H:146
amrex::Gpu::DeviceVector< amrex::Real > m_thvv_d
Definition ABLFieldInit.H:88
amrex::Gpu::DeviceVector< amrex::Real > m_prof_tke_d
Definition ABLFieldInit.H:93
amrex::RealArray m_bottom_vel
Bottom velocity.
Definition ABLFieldInit.H:137
std::string m_1d_rans
File name for 1-D data file.
Definition ABLFieldInit.H:79
amrex::Gpu::DeviceVector< amrex::Real > m_prof_v_d
Definition ABLFieldInit.H:92
amrex::Gpu::DeviceVector< amrex::Real > m_yterrain
Definition ABLFieldInit.H:76
amrex::Real m_Vperiods
Number of sinusoidal waves in y-direction.
Definition ABLFieldInit.H:107
void operator()(const amrex::Box &vbx, const amrex::Geometry &geom, const amrex::Array4< amrex::Real > &velocity, const amrex::Array4< amrex::Real > &density, const amrex::Array4< amrex::Real > &temperature) const
Definition ABLFieldInit.cpp:211
bool add_temperature_perturbations() const
Flag indicating whether temperature field needs perturbations.
Definition ABLFieldInit.H:46
amrex::Real m_rho
Initial density field.
Definition ABLFieldInit.H:95
void initialize_from_inputfile()
Definition ABLFieldInit.cpp:27
amrex::Real m_deltaU
Amplitude of fluctuations in x-direction.
Definition ABLFieldInit.H:98
amrex::Real m_tke_init_factor
Multiplicative factor for init tke profile.
Definition ABLFieldInit.H:128
amrex::Vector< amrex::Real > m_v_values
Definition ABLFieldInit.H:82
amrex::Real m_tke_init
Initial value for tke field.
Definition ABLFieldInit.H:125
std::string m_terrain_file
Definition ABLFieldInit.H:74
bool m_init_uvtheta_profile
Profiles of u, v, and theta are read in from a NetCDF File.
Definition ABLFieldInit.H:152
amrex::Vector< amrex::Real > m_theta_values
Definition ABLFieldInit.H:68
amrex::Vector< amrex::Real > m_tke_values
Definition ABLFieldInit.H:83
amrex::Real m_theta_cutoff_height
Cutoff height for temperature fluctuations.
Definition ABLFieldInit.H:122
amrex::Gpu::DeviceVector< amrex::Real > m_windht_d
Definition ABLFieldInit.H:90
amrex::Real m_Uperiods
Number of sinusoidal waves in x-direction.
Definition ABLFieldInit.H:104
amrex::Real m_theta_gauss_var
Variance for Gaussian number generator.
Definition ABLFieldInit.H:119
amrex::Real m_vel_dir
Initial wind direction (rad)
Definition ABLFieldInit.H:62
amrex::Vector< amrex::Real > m_vel
Initial velocity components.
Definition ABLFieldInit.H:53
amrex::Real m_deltaV
Amplitude of fluctuations in y-direction.
Definition ABLFieldInit.H:101
amrex::Gpu::DeviceVector< amrex::Real > m_xterrain
Definition ABLFieldInit.H:75
amrex::Gpu::DeviceVector< amrex::Real > m_thht_d
Definition ABLFieldInit.H:87
amrex::RealArray m_top_vel
Top velocity.
Definition ABLFieldInit.H:134
void perturb_temperature(const int lev, const amrex::Geometry &geom, Field &temperature) const
Definition ABLFieldInit.cpp:372
void initialize_from_netcdf()
Definition ABLFieldInit.cpp:162
amrex::Real m_vel_speed
Initial wind speed.
Definition ABLFieldInit.H:59
bool m_initial_wind_profile
Adding option for wind heights similar to temperature heights Speed-up RANS calculation using 1-D pro...
Definition ABLFieldInit.H:72
amrex::Real m_theta_gauss_mean
Mean for Gaussian number generator.
Definition ABLFieldInit.H:116
amrex::Real m_delta_t
Amplitude of temperature perturbations.
Definition ABLFieldInit.H:113
bool m_linear_profile
Initial linear velocity profile boolean.
Definition ABLFieldInit.H:140
bool m_perturb_vel
Perturb initial velocity field with sinusoidal fluctuations.
Definition ABLFieldInit.H:143
amrex::Gpu::DeviceVector< amrex::Real > m_prof_u_d
Definition ABLFieldInit.H:91
bool m_terrain_aligned_profile
Definition ABLFieldInit.H:73
amrex::Gpu::DeviceVector< amrex::Real > m_zterrain
Definition ABLFieldInit.H:77
void init_tke(const amrex::Geometry &geom, amrex::MultiFab &tke) const
Initialize TKE field.
Definition ABLFieldInit.cpp:410
amrex::Vector< amrex::Real > m_u_values
Definition ABLFieldInit.H:81
amrex::Vector< amrex::Real > m_theta_heights
Definition ABLFieldInit.H:67
amrex::Vector< amrex::Real > m_wind_heights
Definition ABLFieldInit.H:80
bool m_tke_init_profile
Initialize tke profile non-constant.
Definition ABLFieldInit.H:149
std::string m_vel_timetable
File name for velocity forcing time table.
Definition ABLFieldInit.H:56
ABLFieldInit()
Definition ABLFieldInit.cpp:17
amrex::Real m_ref_height
Reference height for velocity perturbations.
Definition ABLFieldInit.H:110
Definition Field.H:116
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10