/home/runner/work/amr-wind/amr-wind/amr-wind/boundary_conditions/field_boundary_fill/FieldBoundary.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/boundary_conditions/field_boundary_fill/FieldBoundary.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
FieldBoundary.H
Go to the documentation of this file.
1#ifndef FIELDBOUNDARY_H
2#define FIELDBOUNDARY_H
3
7#include "AMReX_MultiFab.H"
8#include "AMReX_Geometry.H"
9
10namespace amr_wind {
11
12class CFDSim;
13
20class FieldBoundary : public Factory<FieldBoundary, CFDSim&>
21{
22public:
23 static std::string base_identifier() { return "FieldBoundary"; }
24
25 ~FieldBoundary() override = default;
26
28 virtual void post_init_actions() = 0;
29
31 virtual void pre_advance_work() = 0;
32
34 virtual void pre_predictor_work() {}
35
37 virtual void post_advance_work() = 0;
38
40 virtual void set_velocity(
41 int /*lev*/,
42 amrex::Real /*time*/,
43 const Field& /*vel_fld*/,
44 amrex::MultiFab& /*vel_mfab*/,
45 int /*dcomp*/ = 0,
46 int /*orig_comp*/ = 0) const = 0;
47};
48
50class FieldBoundaryMgr : public CollMgr<FieldBoundaryMgr, FieldBoundary>
51{
52public:
54 template <typename T>
55 T& get()
56 {
57 AMREX_ASSERT(contains(T::identifier()));
58 return dynamic_cast<T&>(operator()(T::identifier()));
59 }
60
62 template <typename T>
63 [[nodiscard]] const T& get() const
64 {
65 AMREX_ASSERT(contains(T::identifier()));
66 return dynamic_cast<const T&>(operator()(T::identifier()));
67 }
68};
69
70} // namespace amr_wind
71
72#endif /* FIELDBOUNDARY_H */
Definition CFDSim.H:55
FieldBoundary & operator()(const std::string &key)
Definition CollMgr.H:64
bool contains(const std::string &key) const
Definition CollMgr.H:57
Definition FieldBoundary.H:21
virtual void post_init_actions()=0
Actions to perform post initialization.
virtual void set_velocity(int, amrex::Real, const Field &, amrex::MultiFab &, int=0, int=0) const =0
Velocity fill function to be used by nodal projection.
virtual void pre_predictor_work()
Perform tasks necessary only once per timestep, after pre_advance.
Definition FieldBoundary.H:34
static std::string base_identifier()
Definition FieldBoundary.H:23
virtual void post_advance_work()=0
Perform tasks necessary after advancing timestep.
~FieldBoundary() override=default
virtual void pre_advance_work()=0
Perform tasks necessary before advancing timestep.
Definition FieldBoundary.H:51
T & get()
Return a concrete field-boundary instance.
Definition FieldBoundary.H:55
const T & get() const
Return a concrete field-boundary instance.
Definition FieldBoundary.H:63
Definition Field.H:112
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10