/home/runner/work/amr-wind/amr-wind/amr-wind/core/ViewField.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/core/ViewField.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
ViewField.H
Go to the documentation of this file.
1#ifndef VIEWFIELD_H
2#define VIEWFIELD_H
3
4#include <string>
5
7#include "AMReX_MultiFab.H"
8#include "AMReX_Vector.H"
9
10namespace amr_wind {
11
12class FieldRepo;
13
22template <typename T>
24{
25public:
26 friend T;
27
28 ViewField(const ViewField&) = delete;
29 ViewField& operator=(const ViewField&) = delete;
30
31 ViewField(ViewField&&) = default;
33
34 [[nodiscard]] std::string name() const { return m_src.name() + "view"; }
35
37 [[nodiscard]] int num_comp() const { return m_ncomp; }
38
39 [[nodiscard]] const amrex::IntVect& num_grow() const
40 {
41 return m_src.num_grow();
42 }
43
44 [[nodiscard]] FieldLoc field_location() const
45 {
46 return m_src.field_location();
47 }
48
50 amrex::MultiFab& operator()(int lev) { return m_data[lev]; }
51 const amrex::MultiFab& operator()(int lev) const { return m_data[lev]; }
52
53 amrex::Vector<amrex::MultiFab*> vec_ptrs()
54 {
55 return amrex::GetVecOfPtrs(m_data);
56 }
57
58 [[nodiscard]] amrex::Vector<const amrex::MultiFab*> vec_const_ptrs() const
59 {
60 return amrex::GetVecOfConstPtrs(m_data);
61 }
62
64 [[nodiscard]] const FieldRepo& repo() const { return m_src.repo(); }
65
67 T& source_field() { return m_src; }
68 [[nodiscard]] const T& source_field() const { return m_src; }
69
70private:
71 // cppcheck-suppress noExplicitConstructor
72 ViewField(T& src, int scomp = 0, int ncomp = 1);
73
76
79
82
84 amrex::Vector<amrex::MultiFab> m_data;
85};
86
87} // namespace amr_wind
88
89#endif /* VIEWFIELD_H */
Definition FieldRepo.H:86
ViewField(ViewField &&)=default
int m_scomp
Index of the starting component.
Definition ViewField.H:78
amrex::MultiFab & operator()(int lev)
Return the field data for a given level.
Definition ViewField.H:50
amrex::Vector< amrex::MultiFab > m_data
MultiFabs holding the alias views.
Definition ViewField.H:84
T & source_field()
Return a reference to the source field from which this view is derived.
Definition ViewField.H:67
int m_ncomp
Number of sub-components in this view.
Definition ViewField.H:81
amrex::Vector< amrex::MultiFab * > vec_ptrs()
Definition ViewField.H:53
int num_comp() const
Number of components in this subview.
Definition ViewField.H:37
const amrex::MultiFab & operator()(int lev) const
Definition ViewField.H:51
ViewField(const ViewField &)=delete
friend T
Definition ViewField.H:26
amrex::Vector< const amrex::MultiFab * > vec_const_ptrs() const
Definition ViewField.H:58
const T & source_field() const
Definition ViewField.H:68
std::string name() const
Definition ViewField.H:34
ViewField & operator=(ViewField &&)=default
ViewField & operator=(const ViewField &)=delete
T & m_src
The base field.
Definition ViewField.H:75
const FieldRepo & repo() const
Return a reference to the field repository that created this field.
Definition ViewField.H:64
FieldLoc field_location() const
Definition ViewField.H:44
const amrex::IntVect & num_grow() const
Definition ViewField.H:39
FieldLoc
Definition FieldDescTypes.H:29
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10