REMORA
Regional Modeling of Oceans Refined Adaptively
Loading...
Searching...
No Matches
REMORA_PhysBCFunct.H
Go to the documentation of this file.
1#ifndef REMORA_PhysBCFunct_H_
2#define REMORA_PhysBCFunct_H_
3#include <AMReX_Config.H>
4
5#include <AMReX_BCRec.H>
6#include <AMReX_Geometry.H>
7#include <AMReX_MultiFab.H>
8#include <AMReX_ArrayLim.H>
9#include <AMReX_FilCC_C.H>
10#include <AMReX_FilND_C.H>
11#include <AMReX_FilFC_C.H>
12#include "AMReX_TypeTraits.H"
13#include "AMReX_Orientation.H"
14
16#include <REMORA_IndexDefines.H>
17#include <REMORA_DataStruct.H>
18
19using PlaneVector = amrex::Vector<amrex::FArrayBox>;
20
22{
23public:
24 /** \brief Constructor for physical boundary condition functor */
25 REMORAPhysBCFunct (const int lev,
26 const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
27 const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
28 amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NCONS+8> bc_extdir_vals
29 )
30 : m_lev(lev), m_geom(geom), m_domain_bcs_type(domain_bcs_type),
31 m_domain_bcs_type_d(domain_bcs_type_d),
32 m_bc_extdir_vals(bc_extdir_vals)
33 {}
34
36
37 /** \brief apply boundary condition to mf */
38 void operator() (amrex::MultiFab& mf, const amrex::MultiFab& mask, int icomp, int ncomp, amrex::IntVect const& nghost,
39 amrex::Real time, int bccomp, int n_not_fill=0,
40 const amrex::MultiFab& mf_calc = amrex::MultiFab(),
41 const amrex::MultiFab& mf_msku = amrex::MultiFab(),
42 const amrex::MultiFab& mf_mskv = amrex::MultiFab());
43
44 /** \brief apply x-velocity type boundary conditions */
45 void impose_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr, const amrex::Box& bx, const amrex::Box& domain,
46 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv, const amrex::Array4<const amrex::Real>& msku,
47 const amrex::Array4<const amrex::Real>& calc_arr, amrex::Real time, int bccomp);
48
49 /** \brief apply y-velocity type boundary conditions */
50 void impose_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr, const amrex::Box& bx, const amrex::Box& domain,
51 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv, const amrex::Array4<const amrex::Real>& mskv,
52 const amrex::Array4<const amrex::Real>& calc_arr, amrex::Real time, int bccomp);
53
54
55 /** \brief apply z-velocity type boundary conditions */
56 void impose_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
57 const amrex::Box& bx, const amrex::Box& domain,
58 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv, const amrex::Array4<const amrex::Real>& mskr,
59 amrex::Real time, int bccomp);
60
61 /** \brief apply scalar type boundary conditions */
62 void impose_cons_bcs (const amrex::Array4<amrex::Real>& mf, const amrex::Box& bx, const amrex::Box& valid_bx,
63 const amrex::Box& domain,
64 const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv, const amrex::Array4<const amrex::Real>& mskr,
65 const amrex::Array4<const amrex::Real>& msku, const amrex::Array4<const amrex::Real>& mskv,
66 const amrex::Array4<const amrex::Real>& calc_arr,int icomp, int ncomp, amrex::Real time, int bccomp, int n_not_fill);
67
68
69private:
70 int m_lev;
71 amrex::Geometry m_geom;
72 amrex::Vector<amrex::BCRec> m_domain_bcs_type;
73 amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
74 amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NCONS+8> m_bc_extdir_vals;
75};
76
77#endif
#define NCONS
amrex::Vector< amrex::FArrayBox > PlaneVector
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NCONS+8 > m_bc_extdir_vals
void impose_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &msku, const amrex::Array4< const amrex::Real > &calc_arr, amrex::Real time, int bccomp)
apply x-velocity type boundary conditions
amrex::Vector< amrex::BCRec > m_domain_bcs_type
void impose_cons_bcs(const amrex::Array4< amrex::Real > &mf, const amrex::Box &bx, const amrex::Box &valid_bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskr, const amrex::Array4< const amrex::Real > &msku, const amrex::Array4< const amrex::Real > &mskv, const amrex::Array4< const amrex::Real > &calc_arr, int icomp, int ncomp, amrex::Real time, int bccomp, int n_not_fill)
apply scalar type boundary conditions
amrex::Geometry m_geom
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
void impose_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskv, const amrex::Array4< const amrex::Real > &calc_arr, amrex::Real time, int bccomp)
apply y-velocity type boundary conditions
REMORAPhysBCFunct(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NCONS+8 > bc_extdir_vals)
Constructor for physical boundary condition functor.
void impose_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskr, amrex::Real time, int bccomp)
apply z-velocity type boundary conditions
void operator()(amrex::MultiFab &mf, const amrex::MultiFab &mask, int icomp, int ncomp, amrex::IntVect const &nghost, amrex::Real time, int bccomp, int n_not_fill=0, const amrex::MultiFab &mf_calc=amrex::MultiFab(), const amrex::MultiFab &mf_msku=amrex::MultiFab(), const amrex::MultiFab &mf_mskv=amrex::MultiFab())
apply boundary condition to mf