/home/runner/work/amr-wind/amr-wind/amr-wind/boundary_conditions/field_boundary_fill/ModulatedPowerLaw.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/boundary_conditions/field_boundary_fill/ModulatedPowerLaw.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ModulatedPowerLaw.H
Go to the documentation of this file.
1#ifndef MODULATEDPOWERLAW_H
2#define MODULATEDPOWERLAW_H
3
5#include "amr-wind/CFDSim.H"
7#include "AMReX_Gpu.H"
10#include "AMReX_REAL.H"
11
12using namespace amrex::literals;
13
14namespace amr_wind {
15
22class ModulatedPowerLaw : public FieldBoundary::Register<ModulatedPowerLaw>
23{
24
25public:
26 static std::string identifier() { return "ModulatedPowerLaw"; }
27
28 explicit ModulatedPowerLaw(CFDSim& /*sim*/);
29
30 void post_init_actions() override;
31
32 void pre_advance_work() override;
33
34 void post_advance_work() override;
35
36 void set_velocity(
37 int lev,
38 amrex::Real time,
39 const Field& fld,
40 amrex::MultiFab& mfab,
41 int dcomp = 0,
42 int orig_comp = 0) const override;
43
44 void set_temperature(
45 int lev,
46 amrex::Real time,
47 const Field& fld,
48 amrex::MultiFab& mfab) const;
49
50private:
51 const CFDSim& m_sim;
54 const amrex::AmrCore& m_mesh;
57
58 amrex::Real m_zoffset{0.0_rt};
59 amrex::Real m_zref{90};
60 amrex::Real m_shear_exp{0.1_rt};
61 amrex::Real m_umax_factor{1.2_rt};
62 amrex::Real m_bulk_velocity{15.0_rt};
63 amrex::Real m_shearlayer_height{600.0_rt};
64 amrex::Real m_shearlayer_smear_thickness{30.0_rt};
65 amrex::Real m_wind_speed{8.0_rt};
66 amrex::Real m_wind_direction{270.0_rt};
67 amrex::Vector<amrex::Real> m_uvec{8.0_rt, 0.0_rt, 0.0_rt};
68
69 amrex::Real m_start_time{0.0_rt};
70 amrex::Real m_stop_time{std::numeric_limits<amrex::Real>::max()};
71 amrex::Real m_degrees_per_sec{0.02_rt};
72
76 amrex::Vector<amrex::Real> m_theta_heights;
77 amrex::Vector<amrex::Real> m_theta_values;
79
80 // Device copies of the above arrays
81 amrex::Gpu::DeviceVector<amrex::Real> m_thht_d;
82 amrex::Gpu::DeviceVector<amrex::Real> m_thvv_d;
83
84 amrex::Real m_delta_t{0.8_rt};
85 amrex::Real m_theta_cutoff_height{250.0_rt};
86 amrex::Real m_theta_gauss_mean{0.0_rt};
87 amrex::Real m_theta_gauss_var{1.0_rt};
88};
89
90} // namespace amr_wind
91
92#endif /* MODULATEDPOWERLAW_H */
Definition CFDSim.H:55
Definition Field.H:112
Definition FieldRepo.H:86
amrex::Real m_start_time
Definition ModulatedPowerLaw.H:69
amrex::Real m_shearlayer_smear_thickness
Definition ModulatedPowerLaw.H:64
const FieldRepo & m_repo
Definition ModulatedPowerLaw.H:53
amrex::Gpu::DeviceVector< amrex::Real > m_thht_d
Definition ModulatedPowerLaw.H:81
amrex::Gpu::DeviceVector< amrex::Real > m_thvv_d
Definition ModulatedPowerLaw.H:82
const amr_wind::SimTime & m_time
Definition ModulatedPowerLaw.H:52
void post_advance_work() override
Definition ModulatedPowerLaw.cpp:108
void post_init_actions() override
Definition ModulatedPowerLaw.cpp:72
amrex::Real m_stop_time
Definition ModulatedPowerLaw.H:70
ModulatedPowerLaw(CFDSim &)
Definition ModulatedPowerLaw.cpp:18
amrex::Real m_theta_cutoff_height
Definition ModulatedPowerLaw.H:85
const CFDSim & m_sim
Definition ModulatedPowerLaw.H:51
amrex::Real m_shearlayer_height
Definition ModulatedPowerLaw.H:63
amrex::Real m_wind_speed
Definition ModulatedPowerLaw.H:65
amrex::Real m_delta_t
Definition ModulatedPowerLaw.H:84
amrex::Real m_zoffset
Definition ModulatedPowerLaw.H:58
void set_temperature(int lev, amrex::Real time, const Field &fld, amrex::MultiFab &mfab) const
Definition ModulatedPowerLaw.cpp:212
amrex::Real m_theta_gauss_mean
Definition ModulatedPowerLaw.H:86
amrex::Real m_wind_direction
Definition ModulatedPowerLaw.H:66
amrex::Real m_shear_exp
Definition ModulatedPowerLaw.H:60
amrex::Real m_theta_gauss_var
Definition ModulatedPowerLaw.H:87
const amrex::AmrCore & m_mesh
Definition ModulatedPowerLaw.H:54
amrex::Real m_zref
Definition ModulatedPowerLaw.H:59
amrex::Real m_umax_factor
Definition ModulatedPowerLaw.H:61
Field & m_temperature
Definition ModulatedPowerLaw.H:56
void pre_advance_work() override
Definition ModulatedPowerLaw.cpp:78
amrex::Real m_bulk_velocity
Definition ModulatedPowerLaw.H:62
void set_velocity(int lev, amrex::Real time, const Field &fld, amrex::MultiFab &mfab, int dcomp=0, int orig_comp=0) const override
Definition ModulatedPowerLaw.cpp:110
Field & m_velocity
Definition ModulatedPowerLaw.H:55
amrex::Real m_degrees_per_sec
Definition ModulatedPowerLaw.H:71
amrex::Vector< amrex::Real > m_uvec
Definition ModulatedPowerLaw.H:67
amrex::Vector< amrex::Real > m_theta_heights
Definition ModulatedPowerLaw.H:76
static std::string identifier()
Definition ModulatedPowerLaw.H:26
amrex::Vector< amrex::Real > m_theta_values
Definition ModulatedPowerLaw.H:77
Definition SimTime.H:33
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10