/home/runner/work/kynema-sgf/kynema-sgf/src/wind_energy/ABLWallFunction.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/wind_energy/ABLWallFunction.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ABLWallFunction.H
Go to the documentation of this file.
1#ifndef ABLWALLFUNCTION_H
2#define ABLWALLFUNCTION_H
3
4#include "src/CFDSim.H"
9#include "AMReX_REAL.H"
10
11using namespace amrex::literals;
12
13namespace kynema_sgf {
14
23{
24public:
25 explicit ABLWallFunction(const CFDSim& sim);
26
27 ~ABLWallFunction() = default;
28
29 MOData& mo() { return m_mo; }
30 [[nodiscard]] const MOData& mo() const { return m_mo; }
31
34 [[nodiscard]] amrex::Real utau() const { return m_mo.utau; }
35
37 void init_log_law_height(int max_level);
38
40 void
42
43 void update_tflux(amrex::Real tflux);
44
45private:
46 const CFDSim& m_sim;
47
48 const amrex::AmrCore& m_mesh;
49
52
53 int m_direction{2};
54 bool m_use_fch{true};
55 amrex::Real m_wall_pos{0.0_rt};
56 amrex::Vector<amrex::Real> m_gravity{0.0_rt, 0.0_rt, -9.81_rt};
57
60 amrex::Vector<amrex::Real> m_surf_temp_time;
61 amrex::Vector<amrex::Real> m_surf_temp_value;
62
63 bool m_tempflux{true};
64 bool m_temp_table{false};
65 amrex::Real m_surf_temp_rate{0.0_rt};
66 amrex::Real m_surf_temp_rate_tstart{0.0_rt};
67 amrex::Real m_surf_temp_init{300.0_rt};
68
69 bool m_inflow_outflow{false};
70 amrex::Real m_wf_vmag{0.0_rt};
71 amrex::Array<amrex::Real, 2> m_wf_vel{0.0_rt, 0.0_rt};
72 amrex::Real m_wf_theta{300.0_rt};
73};
74
81{
82public:
83 ABLVelWallFunc(Field& velocity, const ABLWallFunction& wall_func);
84
85 void operator()(Field& velocity, FieldState rho_state) override;
86
87 template <typename ShearStress>
88 void
89 wall_model(Field& velocity, FieldState rho_state, const ShearStress& tau);
90
91private:
93 std::string m_wall_shear_stress_type{"moeng"};
94 std::string m_wall_het_model{"none"};
96};
97
99{
100public:
101 ABLTempWallFunc(Field& temperature, const ABLWallFunction& wall_fuc);
102
103 void operator()(Field& temperature, FieldState rho_state) override;
104
105 template <typename HeatFlux>
106 void
107 wall_model(Field& temperature, FieldState rho_state, const HeatFlux& tau);
108
109private:
111 std::string m_wall_shear_stress_type{"moeng"};
112 std::string m_wall_het_model{"none"};
114};
115
116} // namespace kynema_sgf
117
118#endif /* ABLWALLFUNCTION_H */
ABLTempWallFunc(Field &temperature, const ABLWallFunction &wall_fuc)
Definition ABLWallFunction.cpp:380
std::string m_wall_het_model
Definition ABLWallFunction.H:112
amrex::Real m_monin_obukhov_length
Definition ABLWallFunction.H:113
void operator()(Field &temperature, FieldState rho_state) override
Definition ABLWallFunction.cpp:502
const ABLWallFunction & m_wall_func
Definition ABLWallFunction.H:110
std::string m_wall_shear_stress_type
Definition ABLWallFunction.H:111
void operator()(Field &velocity, FieldState rho_state) override
Definition ABLWallFunction.cpp:349
std::string m_wall_het_model
Definition ABLWallFunction.H:94
ABLVelWallFunc(Field &velocity, const ABLWallFunction &wall_func)
Definition ABLWallFunction.cpp:213
const ABLWallFunction & m_wall_func
Definition ABLWallFunction.H:92
std::string m_wall_shear_stress_type
Definition ABLWallFunction.H:93
amrex::Real m_monin_obukhov_length
Definition ABLWallFunction.H:95
Definition ABLWallFunction.H:23
ABLWallFunction(const CFDSim &sim)
Definition ABLWallFunction.cpp:22
bool m_temp_table
Definition ABLWallFunction.H:64
bool m_tempflux
Definition ABLWallFunction.H:63
void update_tflux(amrex::Real tflux)
Definition ABLWallFunction.cpp:208
amrex::Real m_wf_theta
Definition ABLWallFunction.H:72
bool m_inflow_outflow
Definition ABLWallFunction.H:69
bool m_use_fch
Use first cell height?
Definition ABLWallFunction.H:54
MOData m_mo
Monin-Obukhov instance.
Definition ABLWallFunction.H:51
amrex::Vector< amrex::Real > m_gravity
Definition ABLWallFunction.H:56
std::string m_surf_temp_timetable
Ability to read in a table of surface temperature versus time.
Definition ABLWallFunction.H:59
MOData & mo()
Definition ABLWallFunction.H:29
const MOData & mo() const
Definition ABLWallFunction.H:30
amrex::Vector< amrex::Real > m_surf_temp_time
Definition ABLWallFunction.H:60
amrex::Array< amrex::Real, 2 > m_wf_vel
Definition ABLWallFunction.H:71
int m_direction
Direction normal to wall.
Definition ABLWallFunction.H:53
void update_umean(const VelPlaneAveraging &vpa, const FieldPlaneAveraging &tpa)
Update the mean velocity at a given timestep.
Definition ABLWallFunction.cpp:164
const CFDSim & m_sim
Definition ABLWallFunction.H:46
amrex::Real m_surf_temp_init
Definition ABLWallFunction.H:67
amrex::Vector< amrex::Real > m_surf_temp_value
Definition ABLWallFunction.H:61
amrex::Real utau() const
Return the plane-averaged computed friction velocity at any given instance.
Definition ABLWallFunction.H:34
const amrex::AmrCore & m_mesh
Definition ABLWallFunction.H:48
amrex::Real m_surf_temp_rate_tstart
Definition ABLWallFunction.H:66
amrex::Real m_wf_vmag
Definition ABLWallFunction.H:70
amrex::Real m_surf_temp_rate
Definition ABLWallFunction.H:65
amrex::Real m_wall_pos
Position of the wall.
Definition ABLWallFunction.H:55
void init_log_law_height(int max_level)
Initialize the log-law height based on user inputs.
Definition ABLWallFunction.cpp:156
Definition CFDSim.H:55
Definition FieldBCOps.H:32
Definition Field.H:112
Definition FieldPlaneAveraging.H:150
FieldState
Definition FieldDescTypes.H:16
@ wall_model
Definition incflo_enums.H:20
static constexpr amrex::Real LARGE_NUM
A large positive number.
Definition constants.H:29
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
FPlaneAveraging< Field > FieldPlaneAveraging
Definition FieldPlaneAveraging.H:143
Definition MOData.H:25