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

AMR-Wind API: /home/runner/work/amr-wind/amr-wind/amr-wind/physics/udfs/LinearProfile.H Source File
AMR-Wind API v0.1.0
CFD solver for wind plant simulations
Loading...
Searching...
No Matches
LinearProfile.H
Go to the documentation of this file.
1#ifndef LINEARPROFILE_H
2#define LINEARPROFILE_H
3
4#include "AMReX_Geometry.H"
5#include "AMReX_Gpu.H"
6#include "AMReX_REAL.H"
7
8using namespace amrex::literals;
9
10namespace amr_wind {
11
12class Field;
13
14namespace udf {
15
17{
18 struct DeviceOp
19 {
20 int idir{2};
21 amrex::Real zmin;
22 amrex::Real zmax;
23 amrex::RealArray fld_min;
24 amrex::RealArray fld_max;
25
26 AMREX_GPU_DEVICE
27 inline void operator()(
28 const amrex::IntVect& iv,
29 amrex::Array4<amrex::Real> const& field,
30 amrex::GeometryData const& geom,
31 const amrex::Real /*unused*/,
32 amrex::Orientation /*unused*/,
33 const int comp,
34 const int dcomp,
35 const int orig_comp) const
36 {
37 const auto* problo = geom.ProbLo();
38 const auto* dx = geom.CellSize();
39 const auto zco = problo[idir] + (iv[idir] + 0.5_rt) * dx[idir];
40
41 amrex::Real val;
42 if (zco < zmin) {
43 val = fld_min[orig_comp + comp];
44 } else if (zco > zmax) {
45 val = fld_max[orig_comp + comp];
46 } else {
47 val = fld_min[orig_comp + comp] +
48 (fld_max[orig_comp + comp] - fld_min[orig_comp + comp]) *
49 (zco - zmin) / (zmax - zmin);
50 }
51 field(iv[0], iv[1], iv[2], dcomp + comp) = val;
52 }
53 };
54
56
57 static std::string identifier() { return "LinearProfile"; }
58
59 explicit LinearProfile(const Field& fld);
60
61 DeviceType device_instance() const { return m_op; }
62
64};
65
66} // namespace udf
67} // namespace amr_wind
68
69#endif /* LINEARPROFILE_H */
Definition Field.H:116
Definition BurggrafLid.cpp:9
This test case is intended as an evaluation of the momentum advection scheme.
Definition BCInterface.cpp:10
Definition LinearProfile.H:19
AMREX_GPU_DEVICE void operator()(const amrex::IntVect &iv, amrex::Array4< amrex::Real > const &field, amrex::GeometryData const &geom, const amrex::Real, amrex::Orientation, const int comp, const int dcomp, const int orig_comp) const
Definition LinearProfile.H:27
amrex::RealArray fld_max
Definition LinearProfile.H:24
amrex::RealArray fld_min
Definition LinearProfile.H:23
amrex::Real zmin
Definition LinearProfile.H:21
amrex::Real zmax
Definition LinearProfile.H:22
int idir
Definition LinearProfile.H:20
DeviceOp m_op
Definition LinearProfile.H:63
DeviceOp DeviceType
Definition LinearProfile.H:55
LinearProfile(const Field &fld)
Definition LinearProfile.cpp:9
DeviceType device_instance() const
Definition LinearProfile.H:61
static std::string identifier()
Definition LinearProfile.H:57