/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
14namespace amr_wind {
15
19{
20 static_assert(AMREX_SPACEDIM == 3, "ABL requires 3 dimensional mesh");
21
22public:
24
25 void initialize_from_inputfile(); // default
26 void initialize_from_netcdf(); // general wind/temperature profiles
27
28 void operator()(
29 const amrex::Box& vbx,
30 const amrex::Geometry& geom,
31 const amrex::Array4<amrex::Real>& velocity,
32 const amrex::Array4<amrex::Real>& density,
33 const amrex::Array4<amrex::Real>& temperature) const;
34
41 const int lev, const amrex::Geometry& geom, Field& temperature) const;
42
45
47 void init_tke(const amrex::Geometry& geom, amrex::MultiFab& tke) const;
48
49private:
51 amrex::Vector<amrex::Real> m_vel;
52
54 std::string m_vel_timetable;
55
57 amrex::Real m_vel_speed;
58
60 amrex::Real m_vel_dir;
61
65 amrex::Vector<amrex::Real> m_theta_heights;
66 amrex::Vector<amrex::Real> m_theta_values;
67
72 std::string m_terrain_file{"terrain.amrwind"};
73 amrex::Gpu::DeviceVector<amrex::Real> m_xterrain;
74 amrex::Gpu::DeviceVector<amrex::Real> m_yterrain;
75 amrex::Gpu::DeviceVector<amrex::Real> m_zterrain;
77 std::string m_1d_rans;
78 amrex::Vector<amrex::Real> m_wind_heights;
79 amrex::Vector<amrex::Real> m_u_values;
80 amrex::Vector<amrex::Real> m_v_values;
81 amrex::Vector<amrex::Real> m_tke_values;
83
84 // Device copies of the above arrays
85 amrex::Gpu::DeviceVector<amrex::Real> m_thht_d;
86 amrex::Gpu::DeviceVector<amrex::Real> m_thvv_d;
87
88 amrex::Gpu::DeviceVector<amrex::Real> m_windht_d;
89 amrex::Gpu::DeviceVector<amrex::Real> m_prof_u_d;
90 amrex::Gpu::DeviceVector<amrex::Real> m_prof_v_d;
91 amrex::Gpu::DeviceVector<amrex::Real> m_prof_tke_d;
93 amrex::Real m_rho;
94
96 amrex::Real m_deltaU{1.0};
97
99 amrex::Real m_deltaV{1.0};
100
102 amrex::Real m_Uperiods{4.0};
103
105 amrex::Real m_Vperiods{4.0};
106
108 amrex::Real m_ref_height{50.0};
109
111 amrex::Real m_delta_t{0.8};
112
114 amrex::Real m_theta_gauss_mean{0.0};
115
117 amrex::Real m_theta_gauss_var{1.0};
118
120 amrex::Real m_theta_cutoff_height{1.0e16};
121
123 amrex::Real m_tke_init{0.1};
124
126 amrex::Real m_tke_init_factor{0.4};
127
129 amrex::Real m_tke_cutoff_height{250.};
130
132 amrex::RealArray m_top_vel{20.0};
133
135 amrex::RealArray m_bottom_vel{4.0};
136
138 bool m_linear_profile{false};
139
141 bool m_perturb_vel{true};
142
144 bool m_perturb_theta{false};
145
148
151};
152
153} // namespace amr_wind
154
155#endif /* ABLFIELDINIT_H */
amrex::Real m_tke_cutoff_height
Cutoff height for init tke profile.
Definition ABLFieldInit.H:129
bool m_perturb_theta
Perturb temperature field with random fluctuations.
Definition ABLFieldInit.H:144
amrex::Gpu::DeviceVector< amrex::Real > m_thvv_d
Definition ABLFieldInit.H:86
amrex::Gpu::DeviceVector< amrex::Real > m_prof_tke_d
Definition ABLFieldInit.H:91
amrex::RealArray m_bottom_vel
Bottom velocity.
Definition ABLFieldInit.H:135
std::string m_1d_rans
File name for 1-D data file.
Definition ABLFieldInit.H:77
amrex::Gpu::DeviceVector< amrex::Real > m_prof_v_d
Definition ABLFieldInit.H:90
amrex::Gpu::DeviceVector< amrex::Real > m_yterrain
Definition ABLFieldInit.H:74
amrex::Real m_Vperiods
Number of sinusoidal waves in y-direction.
Definition ABLFieldInit.H:105
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:208
bool add_temperature_perturbations() const
Flag indicating whether temperature field needs perturbations.
Definition ABLFieldInit.H:44
amrex::Real m_rho
Initial density field.
Definition ABLFieldInit.H:93
void initialize_from_inputfile()
Definition ABLFieldInit.cpp:24
amrex::Real m_deltaU
Amplitude of fluctuations in x-direction.
Definition ABLFieldInit.H:96
amrex::Real m_tke_init_factor
Multiplicative factor for init tke profile.
Definition ABLFieldInit.H:126
amrex::Vector< amrex::Real > m_v_values
Definition ABLFieldInit.H:80
amrex::Real m_tke_init
Initial value for tke field.
Definition ABLFieldInit.H:123
std::string m_terrain_file
Definition ABLFieldInit.H:72
bool m_init_uvtheta_profile
Profiles of u, v, and theta are read in from a NetCDF File.
Definition ABLFieldInit.H:150
amrex::Vector< amrex::Real > m_theta_values
Definition ABLFieldInit.H:66
amrex::Vector< amrex::Real > m_tke_values
Definition ABLFieldInit.H:81
amrex::Real m_theta_cutoff_height
Cutoff height for temperature fluctuations.
Definition ABLFieldInit.H:120
amrex::Gpu::DeviceVector< amrex::Real > m_windht_d
Definition ABLFieldInit.H:88
amrex::Real m_Uperiods
Number of sinusoidal waves in x-direction.
Definition ABLFieldInit.H:102
amrex::Real m_theta_gauss_var
Variance for Gaussian number generator.
Definition ABLFieldInit.H:117
amrex::Real m_vel_dir
Initial wind direction (rad)
Definition ABLFieldInit.H:60
amrex::Vector< amrex::Real > m_vel
Initial velocity components.
Definition ABLFieldInit.H:51
amrex::Real m_deltaV
Amplitude of fluctuations in y-direction.
Definition ABLFieldInit.H:99
amrex::Gpu::DeviceVector< amrex::Real > m_xterrain
Definition ABLFieldInit.H:73
amrex::Gpu::DeviceVector< amrex::Real > m_thht_d
Definition ABLFieldInit.H:85
amrex::RealArray m_top_vel
Top velocity.
Definition ABLFieldInit.H:132
void perturb_temperature(const int lev, const amrex::Geometry &geom, Field &temperature) const
Definition ABLFieldInit.cpp:369
void initialize_from_netcdf()
Definition ABLFieldInit.cpp:159
amrex::Real m_vel_speed
Initial wind speed.
Definition ABLFieldInit.H:57
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:70
amrex::Real m_theta_gauss_mean
Mean for Gaussian number generator.
Definition ABLFieldInit.H:114
amrex::Real m_delta_t
Amplitude of temperature perturbations.
Definition ABLFieldInit.H:111
bool m_linear_profile
Initial linear velocity profile boolean.
Definition ABLFieldInit.H:138
bool m_perturb_vel
Perturb initial velocity field with sinusoidal fluctuations.
Definition ABLFieldInit.H:141
amrex::Gpu::DeviceVector< amrex::Real > m_prof_u_d
Definition ABLFieldInit.H:89
bool m_terrain_aligned_profile
Definition ABLFieldInit.H:71
amrex::Gpu::DeviceVector< amrex::Real > m_zterrain
Definition ABLFieldInit.H:75
void init_tke(const amrex::Geometry &geom, amrex::MultiFab &tke) const
Initialize TKE field.
Definition ABLFieldInit.cpp:407
amrex::Vector< amrex::Real > m_u_values
Definition ABLFieldInit.H:79
amrex::Vector< amrex::Real > m_theta_heights
Definition ABLFieldInit.H:65
amrex::Vector< amrex::Real > m_wind_heights
Definition ABLFieldInit.H:78
bool m_tke_init_profile
Initialize tke profile non-constant.
Definition ABLFieldInit.H:147
std::string m_vel_timetable
File name for velocity forcing time table.
Definition ABLFieldInit.H:54
ABLFieldInit()
Definition ABLFieldInit.cpp:14
amrex::Real m_ref_height
Reference height for velocity perturbations.
Definition ABLFieldInit.H:108
Definition Field.H:116
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:7