/home/runner/work/amr-wind/amr-wind/amr-wind/physics/ConvectingTaylorVortex.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/physics/ConvectingTaylorVortex.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ConvectingTaylorVortex.H
Go to the documentation of this file.
1#ifndef ConvectingTaylorVortex_H
2#define ConvectingTaylorVortex_H
3
6#include "amr-wind/CFDSim.H"
7#include "AMReX_REAL.H"
8
9using namespace amrex::literals;
10
11namespace amr_wind::ctv {
12
13namespace {
14struct UExact
15{
16 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
17 const amrex::Real /*u0*/,
18 const amrex::Real /*v0*/,
19 const amrex::Real /*omega*/,
20 const amrex::Real /*x*/,
21 const amrex::Real /*y*/,
22 const amrex::Real /*t*/) const;
23 const int m_comp{0};
24};
25
26struct VExact
27{
28 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
29 const amrex::Real /*u0*/,
30 const amrex::Real /*v0*/,
31 const amrex::Real /*omega*/,
32 const amrex::Real /*x*/,
33 const amrex::Real /*y*/,
34 const amrex::Real /*t*/) const;
35 const int m_comp{1};
36};
37
38struct WExact
39{
40 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
41 const amrex::Real /*unused*/,
42 const amrex::Real /*unused*/,
43 const amrex::Real /*unused*/,
44 const amrex::Real /*unused*/,
45 const amrex::Real /*unused*/,
46 const amrex::Real /*unused*/) const;
47 const int m_comp{2};
48};
49
50struct GpxExact
51{
52 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
53 const amrex::Real /*u0*/,
54 const amrex::Real /*unused*/,
55 const amrex::Real /*omega*/,
56 const amrex::Real /*x*/,
57 const amrex::Real /*unused*/,
58 const amrex::Real /*t*/) const;
59 const int m_comp{0};
60};
61
62struct GpyExact
63{
64 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
65 const amrex::Real /*unused*/,
66 const amrex::Real /*v0*/,
67 const amrex::Real /*omega*/,
68 const amrex::Real /*unused*/,
69 const amrex::Real /*y*/,
70 const amrex::Real /*t*/) const;
71 const int m_comp{1};
72};
73
74struct GpzExact
75{
76 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
77 const amrex::Real /*unused*/,
78 const amrex::Real /*unused*/,
79 const amrex::Real /*unused*/,
80 const amrex::Real /*unused*/,
81 const amrex::Real /*unused*/,
82 const amrex::Real /*unused*/) const;
83 const int m_comp{2};
84};
85
86} // namespace
87
91class ConvectingTaylorVortex : public Physics::Register<ConvectingTaylorVortex>
92{
93public:
94 static std::string identifier() { return "ConvectingTaylorVortex"; }
95
96 explicit ConvectingTaylorVortex(const CFDSim& sim);
97
98 ~ConvectingTaylorVortex() override = default;
99
100 void initialize_fields(int level, const amrex::Geometry& geom) override;
101
102 template <typename T>
103 amrex::Real compute_error(const Field& /*field*/);
104
105 void post_init_actions() override;
106
107 void post_regrid_actions() override {}
108
109 void pre_advance_work() override {}
110
111 void post_advance_work() override;
112
113 amrex::Real get_u0() const { return m_u0; }
114
115 amrex::Real get_v0() const { return m_v0; }
116
117 amrex::Real get_omega() const { return m_omega; }
118
119private:
123 const amrex::AmrCore& m_mesh;
124
128
129 void output_error();
130
132 amrex::Real m_rho{1.0_rt};
133
135 amrex::Real m_u0{1.0_rt};
136
138 amrex::Real m_v0{1.0_rt};
139
141 amrex::Real m_omega;
142
144 const int m_w{18};
145
147 std::string m_output_fname{"ctv.log"};
148
150 bool m_mesh_mapping{false};
151};
152} // namespace amr_wind::ctv
153
154#endif /* ConvectingTaylorVortex_H */
Definition CFDSim.H:54
Definition Field.H:116
Definition FieldRepo.H:86
Definition SimTime.H:33
~ConvectingTaylorVortex() override=default
void initialize_fields(int level, const amrex::Geometry &geom) override
Definition ConvectingTaylorVortex.cpp:130
amrex::Real m_rho
initial density value
Definition ConvectingTaylorVortex.H:132
void pre_advance_work() override
Definition ConvectingTaylorVortex.H:109
const FieldRepo & m_repo
Definition ConvectingTaylorVortex.H:122
void output_error()
Definition ConvectingTaylorVortex.cpp:316
bool m_activate_pressure
Definition ConvectingTaylorVortex.H:149
amrex::Real get_u0() const
Definition ConvectingTaylorVortex.H:113
ConvectingTaylorVortex(const CFDSim &sim)
Definition ConvectingTaylorVortex.cpp:92
amrex::Real get_v0() const
Definition ConvectingTaylorVortex.H:115
Field & m_velocity
Definition ConvectingTaylorVortex.H:125
amrex::Real m_omega
damping
Definition ConvectingTaylorVortex.H:141
void post_advance_work() override
Definition ConvectingTaylorVortex.cpp:340
Field & m_density
Definition ConvectingTaylorVortex.H:127
const int m_w
output precision
Definition ConvectingTaylorVortex.H:144
static std::string identifier()
Definition ConvectingTaylorVortex.H:94
amrex::Real get_omega() const
Definition ConvectingTaylorVortex.H:117
void post_init_actions() override
Definition ConvectingTaylorVortex.cpp:338
amrex::Real compute_error(const Field &)
Definition ConvectingTaylorVortex.cpp:215
const amr_wind::CFDSim & m_sim
Definition ConvectingTaylorVortex.H:121
const amr_wind::SimTime & m_time
Definition ConvectingTaylorVortex.H:120
void post_regrid_actions() override
Definition ConvectingTaylorVortex.H:107
Field & m_gradp
Definition ConvectingTaylorVortex.H:126
amrex::Real m_u0
mean x-velocity value
Definition ConvectingTaylorVortex.H:135
bool m_mesh_mapping
Definition ConvectingTaylorVortex.H:150
const amrex::AmrCore & m_mesh
Definition ConvectingTaylorVortex.H:123
amrex::Real m_v0
mean y-velocity value
Definition ConvectingTaylorVortex.H:138
std::string m_output_fname
error log file
Definition ConvectingTaylorVortex.H:147
Definition ConvectingTaylorVortex.cpp:12