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

Kynema-SGF API: /home/runner/work/kynema-sgf/kynema-sgf/src/equation_systems/icns/source_terms/BodyForce.H Source File
Kynema-SGF API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
BodyForce.H
Go to the documentation of this file.
1#ifndef BODYFORCE_H
2#define BODYFORCE_H
3
5#include "src/core/SimTime.H"
6#include "AMReX_GpuContainers.H"
7#include "AMReX_REAL.H"
8#include "AMReX_Vector.H"
9#include <cstddef>
10
11using namespace amrex::literals;
12
13namespace kynema_sgf::pde::icns {
14
21class BodyForce : public MomentumSource::Register<BodyForce>
22{
23public:
24 static std::string identifier() { return "BodyForce"; }
25
26 explicit BodyForce(const CFDSim& /*sim*/);
27
28 ~BodyForce() override;
29
30 void operator()(
31 int lev, FieldState fstate, amrex::MultiFab& src_term) const override;
32
33 void read_bforce_profile(const std::string& filename);
34 void read_bforce_timetable(const std::string& filename);
35
36private:
39
40 const amrex::AmrCore& m_mesh;
41
43 amrex::Vector<amrex::Real> m_body_force{0.0_rt, 0.0_rt, 0.0_rt};
44
46 std::string m_type{"uniform_constant"};
48 std::string m_utt_file;
49
51 amrex::Real m_omega{0.0_rt};
52 std::string m_bforce_file;
54
55 amrex::Gpu::DeviceVector<amrex::Real> m_prof_x;
56 amrex::Gpu::DeviceVector<amrex::Real> m_prof_y;
57 amrex::Gpu::DeviceVector<amrex::Real> m_ht;
58
60 amrex::Vector<amrex::Real> m_time_table;
61 amrex::Vector<amrex::Real> m_fx_table;
62 amrex::Vector<amrex::Real> m_fy_table;
63 amrex::Vector<amrex::Real> m_fz_table;
64};
65
66} // namespace kynema_sgf::pde::icns
67
68#endif /* BODYFORCE_H */
Definition CFDSim.H:55
Definition SimTime.H:33
void read_bforce_profile(const std::string &filename)
Definition BodyForce.cpp:61
void read_bforce_timetable(const std::string &filename)
Definition BodyForce.cpp:95
std::string m_type
Body Force Type.
Definition BodyForce.H:46
BodyForce(const CFDSim &)
Definition BodyForce.cpp:20
size_t m_bforce_profile_nhts
Definition BodyForce.H:53
const amrex::AmrCore & m_mesh
Definition BodyForce.H:40
amrex::Vector< amrex::Real > m_body_force
Forcing source term (pressure gradient)
Definition BodyForce.H:43
void operator()(int lev, FieldState fstate, amrex::MultiFab &src_term) const override
Definition BodyForce.cpp:117
amrex::Real m_omega
Angular frequency used in the oscillatory forcing.
Definition BodyForce.H:51
amrex::Gpu::DeviceVector< amrex::Real > m_prof_x
Definition BodyForce.H:55
std::string m_utt_file
Uniform time table file.
Definition BodyForce.H:48
std::string m_bforce_file
Definition BodyForce.H:52
const SimTime & m_time
Time.
Definition BodyForce.H:38
amrex::Vector< amrex::Real > m_fx_table
Definition BodyForce.H:61
amrex::Vector< amrex::Real > m_fz_table
Definition BodyForce.H:63
amrex::Gpu::DeviceVector< amrex::Real > m_ht
Definition BodyForce.H:57
amrex::Vector< amrex::Real > m_fy_table
Definition BodyForce.H:62
amrex::Vector< amrex::Real > m_time_table
Vectors for storing uniform_timetable inputs.
Definition BodyForce.H:60
static std::string identifier()
Definition BodyForce.H:24
amrex::Gpu::DeviceVector< amrex::Real > m_prof_y
Definition BodyForce.H:56
FieldState
Definition FieldDescTypes.H:16
Definition ABLForcing.cpp:14