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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/equation_systems/icns/source_terms/BodyForce.H Source File
AMR-Wind 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
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 amr_wind::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 const int lev,
32 const amrex::MFIter& mfi,
33 const amrex::Box& bx,
34 const FieldState fstate,
35 const amrex::Array4<amrex::Real>& src_term) const override;
36
37 void read_bforce_profile(const std::string& filename);
38 void read_bforce_timetable(const std::string& filename);
39
40private:
43
44 const amrex::AmrCore& m_mesh;
45
47 amrex::Vector<amrex::Real> m_body_force{0.0_rt, 0.0_rt, 0.0_rt};
48
50 std::string m_type{"uniform_constant"};
52 std::string m_utt_file;
53
55 amrex::Real m_omega{0.0_rt};
56 std::string m_bforce_file;
58
59 amrex::Gpu::DeviceVector<amrex::Real> m_prof_x;
60 amrex::Gpu::DeviceVector<amrex::Real> m_prof_y;
61 amrex::Gpu::DeviceVector<amrex::Real> m_ht;
62
64 amrex::Vector<amrex::Real> m_time_table;
65 amrex::Vector<amrex::Real> m_fx_table;
66 amrex::Vector<amrex::Real> m_fy_table;
67 amrex::Vector<amrex::Real> m_fz_table;
68};
69
70} // namespace amr_wind::pde::icns
71
72#endif /* BODYFORCE_H */
Definition CFDSim.H:54
Definition SimTime.H:33
std::string m_bforce_file
Definition BodyForce.H:56
amrex::Vector< amrex::Real > m_body_force
Forcing source term (pressure gradient)
Definition BodyForce.H:47
static std::string identifier()
Definition BodyForce.H:24
amrex::Vector< amrex::Real > m_fz_table
Definition BodyForce.H:67
amrex::Vector< amrex::Real > m_time_table
Vectors for storing uniform_timetable inputs.
Definition BodyForce.H:64
void operator()(const int lev, const amrex::MFIter &mfi, const amrex::Box &bx, const FieldState fstate, const amrex::Array4< amrex::Real > &src_term) const override
Definition BodyForce.cpp:117
amrex::Vector< amrex::Real > m_fy_table
Definition BodyForce.H:66
amrex::Vector< amrex::Real > m_fx_table
Definition BodyForce.H:65
void read_bforce_timetable(const std::string &filename)
Definition BodyForce.cpp:95
std::string m_type
Body Force Type.
Definition BodyForce.H:50
const SimTime & m_time
Time.
Definition BodyForce.H:42
void read_bforce_profile(const std::string &filename)
Definition BodyForce.cpp:61
amrex::Gpu::DeviceVector< amrex::Real > m_prof_y
Definition BodyForce.H:60
amrex::Gpu::DeviceVector< amrex::Real > m_prof_x
Definition BodyForce.H:59
BodyForce(const CFDSim &)
Definition BodyForce.cpp:20
amrex::Gpu::DeviceVector< amrex::Real > m_ht
Definition BodyForce.H:61
const amrex::AmrCore & m_mesh
Definition BodyForce.H:44
std::string m_utt_file
Uniform time table file.
Definition BodyForce.H:52
amrex::Real m_omega
Angular frequency used in the oscillatory forcing.
Definition BodyForce.H:55
size_t m_bforce_profile_nhts
Definition BodyForce.H:57
FieldState
Definition FieldDescTypes.H:14
Definition ABLForcing.cpp:14