/home/runner/work/amr-wind/amr-wind/amr-wind/equation_systems/icns/source_terms/DragForcing.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/equation_systems/icns/source_terms/DragForcing.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
DragForcing.H
Go to the documentation of this file.
1#ifndef DRAGFORCING_H
2#define DRAGFORCING_H
3
6#include "amr-wind/CFDSim.H"
8#include "AMReX_REAL.H"
9
10using namespace amrex::literals;
11
12namespace amr_wind::pde::icns {
13
20class DragForcing : public MomentumSource::Register<DragForcing>
21{
22public:
23 static std::string identifier() { return "DragForcing"; }
24
25 explicit DragForcing(const CFDSim& sim);
26
27 ~DragForcing() override;
28
29 void operator()(
30 int lev,
31 const amrex::MFIter& mfi,
32 const amrex::Box& bx,
33 FieldState fstate,
34 const amrex::Array4<amrex::Real>& src_term) const override;
35
36private:
38 const CFDSim& m_sim;
39 const amrex::AmrCore& m_mesh;
41 const Field* m_target_vel{nullptr};
42 const Field* m_target_levelset{nullptr};
43 std::string m_1d_rans;
44 amrex::Vector<amrex::Real> m_wind_heights;
45 amrex::Vector<amrex::Real> m_u_values;
46 amrex::Vector<amrex::Real> m_v_values;
47 amrex::Vector<amrex::Real> m_w_values;
48 amrex::Gpu::DeviceVector<amrex::Real> m_windht_d;
49 amrex::Gpu::DeviceVector<amrex::Real> m_prof_u_d;
50 amrex::Gpu::DeviceVector<amrex::Real> m_prof_v_d;
51 amrex::Gpu::DeviceVector<amrex::Real> m_prof_w_d;
52
53 amrex::Real m_drag_coefficient{10.0_rt};
54 amrex::Real m_sponge_strength{1.0_rt};
55 amrex::Real m_sponge_density{1.0_rt};
56 amrex::Real m_forcing_time_factor{5.0_rt};
57 amrex::Real m_sponge_distance_west{0.0_rt};
58 amrex::Real m_sponge_distance_east{0.0_rt};
59 amrex::Real m_sponge_distance_south{0.0_rt};
60 amrex::Real m_sponge_distance_north{0.0_rt};
61 amrex::Real m_min_z{0.1_rt};
62 bool m_sponge_west{false};
63 bool m_sponge_east{false};
64 bool m_sponge_south{false};
65 bool m_sponge_north{false};
66 bool m_is_laminar{false};
67 bool m_terrain_is_waves{false};
68 bool m_apply_MOSD{false};
69 std::string m_wall_het_model{"none"};
71 amrex::Real m_kappa{0.41_rt};
72 amrex::Real m_gamma_m{5.0_rt};
73 amrex::Real m_beta_m{16.0_rt};
74};
75
76} // namespace amr_wind::pde::icns
77
78#endif
Definition CFDSim.H:54
Definition Field.H:112
Definition SimTime.H:33
amrex::Gpu::DeviceVector< amrex::Real > m_windht_d
Definition DragForcing.H:48
amrex::Real m_min_z
Definition DragForcing.H:61
amrex::Real m_sponge_distance_east
Definition DragForcing.H:58
std::string m_wall_het_model
Definition DragForcing.H:69
amrex::Gpu::DeviceVector< amrex::Real > m_prof_w_d
Definition DragForcing.H:51
amrex::Real m_beta_m
Definition DragForcing.H:73
const SimTime & m_time
Definition DragForcing.H:37
amrex::Real m_monin_obukhov_length
Definition DragForcing.H:70
amrex::Vector< amrex::Real > m_wind_heights
Definition DragForcing.H:44
const Field * m_target_vel
Definition DragForcing.H:41
amrex::Real m_gamma_m
Definition DragForcing.H:72
amrex::Real m_sponge_distance_south
Definition DragForcing.H:59
bool m_terrain_is_waves
Definition DragForcing.H:67
const Field & m_velocity
Definition DragForcing.H:40
static std::string identifier()
Definition DragForcing.H:23
bool m_sponge_south
Definition DragForcing.H:64
const CFDSim & m_sim
Definition DragForcing.H:38
bool m_is_laminar
Definition DragForcing.H:66
amrex::Real m_sponge_distance_north
Definition DragForcing.H:60
amrex::Real m_sponge_density
Definition DragForcing.H:55
void operator()(int lev, const amrex::MFIter &mfi, const amrex::Box &bx, FieldState fstate, const amrex::Array4< amrex::Real > &src_term) const override
Definition DragForcing.cpp:185
amrex::Real m_drag_coefficient
Definition DragForcing.H:53
bool m_sponge_north
Definition DragForcing.H:65
bool m_apply_MOSD
Definition DragForcing.H:68
amrex::Vector< amrex::Real > m_u_values
Definition DragForcing.H:45
std::string m_1d_rans
Definition DragForcing.H:43
bool m_sponge_west
Definition DragForcing.H:62
amrex::Gpu::DeviceVector< amrex::Real > m_prof_u_d
Definition DragForcing.H:49
amrex::Real m_forcing_time_factor
Definition DragForcing.H:56
amrex::Vector< amrex::Real > m_w_values
Definition DragForcing.H:47
const Field * m_target_levelset
Definition DragForcing.H:42
DragForcing(const CFDSim &sim)
Definition DragForcing.cpp:91
amrex::Real m_sponge_distance_west
Definition DragForcing.H:57
amrex::Real m_kappa
Definition DragForcing.H:71
const amrex::AmrCore & m_mesh
Definition DragForcing.H:39
amrex::Real m_sponge_strength
Definition DragForcing.H:54
bool m_sponge_east
Definition DragForcing.H:63
amrex::Gpu::DeviceVector< amrex::Real > m_prof_v_d
Definition DragForcing.H:50
amrex::Vector< amrex::Real > m_v_values
Definition DragForcing.H:46
FieldState
Definition FieldDescTypes.H:16
static constexpr amrex::Real LARGE_NUM
A large positive number.
Definition constants.H:29
Definition ABLForcing.cpp:14