/home/runner/work/kynema-sgf/kynema-sgf/src/equation_systems/icns/source_terms/ABLMesoForcingMom.H Source File

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/equation_systems/icns/source_terms/ABLMesoForcingMom.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ABLMesoForcingMom.H
Go to the documentation of this file.
1#ifndef ABLMESOFORCINGMOM_H
2#define ABLMESOFORCINGMOM_H
3
4#include <memory>
5#include "AMReX_REAL.H"
6#include "AMReX_Vector.H"
9#include "src/core/SimTime.H"
14
15namespace kynema_sgf::pde::icns {
16
22
24 : public ABLMesoscaleForcing
25 , public MomentumSource::Register<ABLMesoForcingMom>
26{
27public:
28 static std::string identifier() { return "ABLMesoForcingMom"; }
29
30 explicit ABLMesoForcingMom(const CFDSim& sim);
31
33
34 void operator()(
35 int lev, FieldState fstate, amrex::MultiFab& src_term) const override;
36
37 void mean_velocity_init(const ABLMesoscaleInput& ncfile);
38
40 const VelPlaneAveraging& vavg, const ABLMesoscaleInput& ncfile);
41
42 void
43 mean_velocity_heights(std::unique_ptr<ABLMesoscaleInput> const& ncfile);
44
46 const VelPlaneAveraging& vavg,
47 std::unique_ptr<ABLMesoscaleInput> const& ncfile);
48
49 amrex::Vector<amrex::Real>& mom_u_error() { return m_err_U; }
50 amrex::Vector<amrex::Real>& mom_v_error() { return m_err_V; }
51
52private:
53 // these are inputs
54 amrex::Gpu::DeviceVector<amrex::Real> m_meso_ht;
55 amrex::Gpu::DeviceVector<amrex::Real> m_meso_u_vals;
56 amrex::Gpu::DeviceVector<amrex::Real> m_meso_v_vals;
57
58 // these are the instantaneous planar averages
59 amrex::Gpu::DeviceVector<amrex::Real> m_vavg_ht;
60
61 // these specify the source term
62 amrex::Gpu::DeviceVector<amrex::Real> m_error_meso_avg_U;
63 amrex::Gpu::DeviceVector<amrex::Real> m_error_meso_avg_V;
64
65 amrex::Vector<amrex::Real> m_err_U;
66 amrex::Vector<amrex::Real> m_err_V;
67
68 // these should be m_ind_polyOrder+1 (currently, cubic polynomials are
69 // assumed)
70 amrex::Array<amrex::Real, 4> m_poly_coeff_U;
71 amrex::Array<amrex::Real, 4> m_poly_coeff_V;
72};
73
74} // namespace kynema_sgf::pde::icns
75
76#endif // ABLMESOFORCINGMOM_H
ABLMesoscaleForcing(const CFDSim &sim, const std::string &identifier)
Definition ABLMesoscaleForcing.cpp:14
Definition ABLMesoscaleInput.H:11
Definition CFDSim.H:55
Definition FieldPlaneAveraging.H:150
amrex::Vector< amrex::Real > m_err_U
Definition ABLMesoForcingMom.H:65
amrex::Array< amrex::Real, 4 > m_poly_coeff_V
Definition ABLMesoForcingMom.H:71
ABLMesoForcingMom(const CFDSim &sim)
Definition ABLMesoForcingMom.cpp:17
amrex::Array< amrex::Real, 4 > m_poly_coeff_U
Definition ABLMesoForcingMom.H:70
amrex::Gpu::DeviceVector< amrex::Real > m_meso_u_vals
Definition ABLMesoForcingMom.H:55
amrex::Gpu::DeviceVector< amrex::Real > m_error_meso_avg_V
Definition ABLMesoForcingMom.H:63
amrex::Gpu::DeviceVector< amrex::Real > m_error_meso_avg_U
Definition ABLMesoForcingMom.H:62
void operator()(int lev, FieldState fstate, amrex::MultiFab &src_term) const override
Definition ABLMesoForcingMom.cpp:262
amrex::Gpu::DeviceVector< amrex::Real > m_meso_ht
Definition ABLMesoForcingMom.H:54
amrex::Gpu::DeviceVector< amrex::Real > m_vavg_ht
Definition ABLMesoForcingMom.H:59
amrex::Gpu::DeviceVector< amrex::Real > m_meso_v_vals
Definition ABLMesoForcingMom.H:56
amrex::Vector< amrex::Real > & mom_u_error()
Definition ABLMesoForcingMom.H:49
static std::string identifier()
Definition ABLMesoForcingMom.H:28
void mean_velocity_init(const ABLMesoscaleInput &ncfile)
Definition ABLMesoForcingMom.cpp:41
void mean_velocity_heights(std::unique_ptr< ABLMesoscaleInput > const &ncfile)
Definition ABLMesoForcingMom.cpp:88
amrex::Vector< amrex::Real > & mom_v_error()
Definition ABLMesoForcingMom.H:50
amrex::Vector< amrex::Real > m_err_V
Definition ABLMesoForcingMom.H:66
FieldState
Definition FieldDescTypes.H:16
Definition ABLForcing.cpp:14