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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/physics/VortexRing.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
VortexRing.H
Go to the documentation of this file.
1#ifndef VortexRing_H
2#define VortexRing_H
3
6#include "AMReX_REAL.H"
7
8using namespace amrex::literals;
9
10namespace amr_wind {
11
15class VortexRing : public Physics::Register<VortexRing>
16{
17public:
18 static std::string identifier() { return "VortexRing"; }
19
20 explicit VortexRing(const CFDSim& sim);
21
22 ~VortexRing() override = default;
23
24 void initialize_fields(int level, const amrex::Geometry& geom) override;
25
26 void post_init_actions() override;
27
28 void post_regrid_actions() override {}
29
30 void pre_advance_work() override {}
31
32 void post_advance_work() override {}
33
34 template <typename VortexRingType>
35 void initialize_velocity(const VortexRingType& vorticity_theta);
36
37private:
38 const CFDSim& m_sim;
42
44 amrex::Real m_rho{1.0_rt};
45
46 amrex::Real m_R{1.0_rt};
47 amrex::Real m_Gamma{1.0_rt};
48 amrex::Real m_delta{0.2_rt};
49 amrex::Real m_dz{2.0_rt};
50 amrex::Vector<int> m_perturbation_modes;
51 amrex::Vector<amrex::Real> m_perturbation_phases_1;
52 amrex::Vector<amrex::Real> m_perturbation_phases_2;
53 // amplitude relative to the unperturbed vortex ring diameter
54 amrex::Real m_perturbation_amplitude{1.0e-4_rt};
55
56 std::string m_vortexringtype{"fatcore"};
57};
58
59struct FatCore
60{
61 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
62 const amrex::Real /*r*/,
63 const amrex::Real /*unused*/,
64 const amrex::Real /*z*/,
65 const amrex::Real /*R*/,
66 const amrex::Real /*Gamma*/,
67 const amrex::Real /*unused*/,
68 const amrex::Real /*unused*/,
69 const amrex::Real /*unused*/,
70 const int /*unused*/,
71 const int* /*unused*/,
72 const amrex::Real* /*unused*/,
73 const amrex::Real* /*unused*/) const;
74};
75
77{
78 AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(
79 const amrex::Real /*r*/,
80 const amrex::Real /*theta*/,
81 const amrex::Real /*z*/,
82 const amrex::Real /*R*/,
83 const amrex::Real /*Gamma*/,
84 const amrex::Real /*delta*/,
85 const amrex::Real /*dz*/,
86 const amrex::Real /*perturbation_amplitude*/,
87 const int /*num_modes*/,
88 const int* /*perturbation_modes*/,
89 const amrex::Real* /*perturbation_phases_1*/,
90 const amrex::Real* /*perturbation_phases_2*/) const;
91};
92
93} // namespace amr_wind
94
95#endif /* VortexRing_H */
Definition CFDSim.H:54
Definition Field.H:116
Definition FieldRepo.H:86
VortexRing(const CFDSim &sim)
Definition VortexRing.cpp:76
const FieldRepo & m_repo
Definition VortexRing.H:39
amrex::Vector< amrex::Real > m_perturbation_phases_2
Definition VortexRing.H:52
amrex::Vector< amrex::Real > m_perturbation_phases_1
Definition VortexRing.H:51
void initialize_velocity(const VortexRingType &vorticity_theta)
Definition VortexRing.cpp:125
void post_init_actions() override
Definition VortexRing.cpp:110
amrex::Real m_R
Definition VortexRing.H:46
void initialize_fields(int level, const amrex::Geometry &geom) override
Definition VortexRing.cpp:104
void post_advance_work() override
Definition VortexRing.H:32
const CFDSim & m_sim
Definition VortexRing.H:38
void post_regrid_actions() override
Definition VortexRing.H:28
amrex::Real m_dz
Definition VortexRing.H:49
Field & m_velocity
Definition VortexRing.H:40
std::string m_vortexringtype
Definition VortexRing.H:56
amrex::Real m_delta
Definition VortexRing.H:48
amrex::Real m_rho
initial density value
Definition VortexRing.H:44
static std::string identifier()
Definition VortexRing.H:18
Field & m_density
Definition VortexRing.H:41
amrex::Vector< int > m_perturbation_modes
Definition VortexRing.H:50
amrex::Real m_Gamma
Definition VortexRing.H:47
amrex::Real m_perturbation_amplitude
Definition VortexRing.H:54
void pre_advance_work() override
Definition VortexRing.H:30
~VortexRing() override=default
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
Definition VortexRing.H:77
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const int, const int *, const amrex::Real *, const amrex::Real *) const
Definition VortexRing.cpp:37
Definition VortexRing.H:60
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real operator()(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const int, const int *, const amrex::Real *, const amrex::Real *) const
Definition VortexRing.cpp:15