/home/runner/work/amr-wind/amr-wind/amr-wind/utilities/MultiLevelVector.H Source File

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/utilities/MultiLevelVector.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
MultiLevelVector.H
Go to the documentation of this file.
1#ifndef MULTILEVELVECTOR_H
2#define MULTILEVELVECTOR_H
3
4#include "AMReX_Geometry.H"
5#include "AMReX_Vector.H"
6#include "AMReX_GpuContainers.H"
7#include "AMReX_MFParallelFor.H"
11
12namespace amr_wind {
13
23{
24public:
26
27 void resize(int axis, const amrex::Vector<amrex::Geometry>& geom);
28
29 [[nodiscard]] const amrex::Vector<amrex::Real>&
30 host_data(const int lev) const
31 {
32 return m_data_h[lev];
33 };
34
35 amrex::Vector<amrex::Real>& host_data(const int lev)
36 {
37 return m_data_h[lev];
38 };
39
40 [[nodiscard]] const amrex::Gpu::DeviceVector<amrex::Real>&
41 device_data(const int lev) const
42 {
43 return m_data_d[lev];
44 };
45
47
48 void copy_to_field(Field& fld);
49
50 [[nodiscard]] int size() const { return static_cast<int>(m_data_h.size()); }
51
52 [[nodiscard]] int ncells(const int lev) const
53 {
54 return static_cast<int>(m_data_h[lev].size());
55 }
56
57private:
59 int m_axis{2};
60 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>> m_data_d;
61 amrex::Vector<amrex::Vector<amrex::Real>> m_data_h;
62};
63} // namespace amr_wind
64#endif
Definition Field.H:112
int ncells(const int lev) const
Definition MultiLevelVector.H:52
void copy_to_field(Field &fld)
Definition MultiLevelVector.cpp:32
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > m_data_d
Definition MultiLevelVector.H:60
int size() const
Definition MultiLevelVector.H:50
int m_axis
Definition MultiLevelVector.H:59
amrex::Vector< amrex::Real > & host_data(const int lev)
Definition MultiLevelVector.H:35
const amrex::Vector< amrex::Real > & host_data(const int lev) const
Definition MultiLevelVector.H:30
void resize(int axis, const amrex::Vector< amrex::Geometry > &geom)
Definition MultiLevelVector.cpp:5
void copy_host_to_device()
Definition MultiLevelVector.cpp:23
MultiLevelVector(const FieldLoc floc=FieldLoc::CELL)
Definition MultiLevelVector.H:25
const FieldLoc m_floc
Definition MultiLevelVector.H:58
const amrex::Gpu::DeviceVector< amrex::Real > & device_data(const int lev) const
Definition MultiLevelVector.H:41
amrex::Vector< amrex::Vector< amrex::Real > > m_data_h
Definition MultiLevelVector.H:61
FieldLoc
Definition FieldDescTypes.H:29
@ CELL
Cell-centered (default)
Definition FieldDescTypes.H:30
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10