AMReX-Hydro
AMReX-based hydro routines for low Mach number flows
 
Loading...
Searching...
No Matches
hydro_ebgodunov.H
Go to the documentation of this file.
1/**
2 * \file hydro_ebgodunov.H
3 * \addtogroup EBGodunov
4 * @{
5 *
6 */
7
8#ifndef HYDRO_EBGODUNOV_H
9#define HYDRO_EBGODUNOV_H
10
11#include <AMReX_MultiFabUtil.H>
12#include <AMReX_MultiCutFab.H>
13
14
15namespace EBGodunov {
16
17/**
18 * \brief Extrapolate the velocity to faces, for use as the pre-MAC velocity.
19 *
20 * \note Ghost-cell requirements: vel needs 4 filled ghost cells in 3D and 3 in
21 * 2D, because the 3D prediction runs on faces lo-1..hi+2 with the
22 * fourth-order slope stencil. The EB factory must carry at least as many
23 * ghost cells, vel_forces needs 1, and velocity_on_eb_inflow, when given,
24 * needs 2. These are asserted.
25 */
27 amrex::MultiFab const& vel_forces,
29 amrex::MultiFab& v_mac,
30 amrex::MultiFab& w_mac),
31 amrex::Vector<amrex::BCRec> const& h_bcrec,
32 amrex::BCRec const* d_bcrec,
33 const amrex::Geometry& geom,
34 amrex::Real dt,
35 amrex::MultiFab const* velocity_on_eb_inflow = nullptr,
36 bool allow_inflow_on_outflow = false,
37 amrex::iMultiFab const* BC_MF = nullptr);
38
39
41 amrex::Box const& ybx,
42 amrex::Box const& zbx),
45 amrex::Array4<amrex::Real> const& w_ad),
54 const amrex::Box& domain,
55 amrex::BCRec const* pbc,
56 amrex::Array4<int const> const& bc_arr = {});
57
58 void ExtrapVelToFacesOnBox ( amrex::Box const& bx, int ncomp,
59 AMREX_D_DECL(amrex::Box const& xbx,
60 amrex::Box const& ybx,
61 amrex::Box const& zbx),
62 AMREX_D_DECL(amrex::Box const& xebx,
63 amrex::Box const& yebx,
64 amrex::Box const& zebx),
79 const amrex::Box& domain,
80 const amrex::Real* dx,
81 amrex::Real dt,
82 amrex::BCRec const* pbc,
87#if (AMREX_SPACEDIM == 3)
89#endif
93 amrex::Real* p, amrex::Array4<amrex::Real const> const& velocity_on_eb_inflow,
94 bool allow_inflow_on_outflow = false,
95 amrex::Array4<int const> const& bc_arr = {});
96
97
98 void ComputeEdgeState ( amrex::Box const& bx, int ncomp,
102 amrex::Array4<amrex::Real> const& yedge,
103 amrex::Array4<amrex::Real> const& zedge),
109 amrex::Geometry const& geom,
110 amrex::Real l_dt,
111 amrex::Vector<amrex::BCRec> const& h_bcrec,
112 amrex::BCRec const* pbc,
113 int const* iconserv,
114 amrex::Real* p,
119 amrex::Array4<amrex::Real const> const& vfrac_arr,
123 amrex::Array4<amrex::Real const> const& ccent_arr,
124 bool is_velocity,
125 amrex::Array4<amrex::Real const> const& values_on_eb_inflow,
126 bool allow_inflow_on_outflow,
127 amrex::Array4<int const> const& bc_arr = {});
128
129} // namespace ebgodunov
130
131#endif /* EBGodunov_H */
132/** @} */
#define AMREX_D_DECL(a, b, c)
amrex_real Real
Definition hydro_ebgodunov.H:15
void ComputeEdgeState(amrex::Box const &bx, int ncomp, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &qnph, AMREX_D_DECL(amrex::Array4< amrex::Real > const &xedge, amrex::Array4< amrex::Real > const &yedge, amrex::Array4< amrex::Real > const &zedge), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &u_mac, amrex::Array4< amrex::Real const > const &v_mac, amrex::Array4< amrex::Real const > const &w_mac), amrex::Array4< amrex::Real const > const &divu, amrex::Array4< amrex::Real const > const &fq, amrex::Geometry const &geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, amrex::BCRec const *pbc, int const *iconserv, amrex::Real *p, amrex::Array4< amrex::EBCellFlag const > const &flag_arr, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &apx, amrex::Array4< amrex::Real const > const &apy, amrex::Array4< amrex::Real const > const &apz), amrex::Array4< amrex::Real const > const &vfrac_arr, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Array4< amrex::Real const > const &ccent_arr, bool is_velocity, amrex::Array4< amrex::Real const > const &values_on_eb_inflow, bool allow_inflow_on_outflow, amrex::Array4< int const > const &bc_arr={})
void ExtrapVelToFaces(amrex::MultiFab const &vel, amrex::MultiFab const &vel_forces, AMREX_D_DECL(amrex::MultiFab &u_mac, amrex::MultiFab &v_mac, amrex::MultiFab &w_mac), amrex::Vector< amrex::BCRec > const &h_bcrec, amrex::BCRec const *d_bcrec, const amrex::Geometry &geom, amrex::Real dt, amrex::MultiFab const *velocity_on_eb_inflow=nullptr, bool allow_inflow_on_outflow=false, amrex::iMultiFab const *BC_MF=nullptr)
Extrapolate the velocity to faces, for use as the pre-MAC velocity.
void ExtrapVelToFacesOnBox(amrex::Box const &bx, int ncomp, AMREX_D_DECL(amrex::Box const &xbx, amrex::Box const &ybx, amrex::Box const &zbx), AMREX_D_DECL(amrex::Box const &xebx, amrex::Box const &yebx, amrex::Box const &zebx), AMREX_D_DECL(amrex::Array4< amrex::Real > const &qx, amrex::Array4< amrex::Real > const &qy, amrex::Array4< amrex::Real > const &qz), amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &u_ad, amrex::Array4< amrex::Real const > const &v_ad, amrex::Array4< amrex::Real const > const &w_ad), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), amrex::Array4< amrex::Real const > const &f, const amrex::Box &domain, const amrex::Real *dx, amrex::Real dt, amrex::BCRec const *pbc, amrex::Array4< amrex::EBCellFlag const > const &flag, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &apx, amrex::Array4< amrex::Real const > const &apy, amrex::Array4< amrex::Real const > const &apz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fcx, amrex::Array4< amrex::Real const > const &fcy, amrex::Array4< amrex::Real const > const &fcz), amrex::Real *p, amrex::Array4< amrex::Real const > const &velocity_on_eb_inflow, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
void ComputeAdvectiveVel(AMREX_D_DECL(amrex::Box const &xbx, amrex::Box const &ybx, amrex::Box const &zbx), AMREX_D_DECL(amrex::Array4< amrex::Real > const &u_ad, amrex::Array4< amrex::Real > const &v_ad, amrex::Array4< amrex::Real > const &w_ad), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &Imx, amrex::Array4< amrex::Real const > const &Imy, amrex::Array4< amrex::Real const > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &Ipx, amrex::Array4< amrex::Real const > const &Ipy, amrex::Array4< amrex::Real const > const &Ipz), amrex::Array4< amrex::Real const > const &vel, amrex::Array4< amrex::EBCellFlag const > const &flag, const amrex::Box &domain, amrex::BCRec const *pbc, amrex::Array4< int const > const &bc_arr={})