AMReX-Hydro
AMReX-based hydro routines for low Mach number flows
HydroUtils Namespace Reference

Functions

void enforceInOutSolvability (const Vector< Array< MultiFab *, AMREX_SPACEDIM >> &vels_vec, const BCRec *bc_type, const Vector< Geometry > &geom, bool include_bndry_corners)
 
void enforceInOutSolvability (const amrex::Vector< amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM >> &vels_vec, amrex::BCRec const *bc_type, const amrex::Vector< amrex::Geometry > &geom, bool include_bndry_corners=false)
 Enforces solvablity by scaling outflow to match with inflow. More...
 
void ComputeFluxesOnBoxFromState (amrex::Box const &bx, int ncomp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &qnph, AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z), AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z), bool knownFaceState, 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_D_DECL(amrex::Array4< amrex::Real const > const &u_flux, amrex::Array4< amrex::Real const > const &v_flux, amrex::Array4< amrex::Real const > const &w_flux), amrex::Array4< amrex::Real const > const &divu, amrex::Array4< amrex::Real const > const &fq, amrex::Geometry geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, const amrex::BCRec *d_bcrec, int const *iconserv, bool godunov_use_ppm, bool godunov_use_forces_in_trans, bool is_velocity, bool fluxes_are_area_weighted, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
 Compute edge state and flux. Most general version for use with multilevel synchronization. All other versions ultimately call this one. Allows time-depdendent inflow and inflow through EB. More...
 
void ComputeFluxesOnBoxFromState (amrex::Box const &bx, int ncomp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z), AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z), bool knownFaceState, 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_D_DECL(amrex::Array4< amrex::Real const > const &u_flux, amrex::Array4< amrex::Real const > const &v_flux, amrex::Array4< amrex::Real const > const &w_flux), amrex::Array4< amrex::Real const > const &divu, amrex::Array4< amrex::Real const > const &fq, amrex::Geometry geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, const amrex::BCRec *d_bcrec, int const *iconserv, bool godunov_use_ppm, bool godunov_use_forces_in_trans, bool is_velocity, bool fluxes_are_area_weighted, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
 
void ComputeFluxesOnBoxFromState (amrex::Box const &bx, int ncomp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z), AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z), bool knownFaceState, 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 geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, const amrex::BCRec *d_bcrec, int const *iconserv, bool godunov_use_ppm, bool godunov_use_forces_in_trans, bool is_velocity, bool fluxes_are_area_weighted, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
 Compute edge state and flux. Allows inflow on EB but NOT time-dependent inflow. More...
 
void ComputeFluxesOnBoxFromState (amrex::Box const &bx, int ncomp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &qnph, AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z), AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z), bool knownFaceState, 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 geom, amrex::Real l_dt, amrex::Vector< amrex::BCRec > const &h_bcrec, const amrex::BCRec *d_bcrec, int const *iconserv, bool godunov_use_ppm, bool godunov_use_forces_in_trans, bool is_velocity, bool fluxes_are_area_weighted, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::Array4< int const > const &bc_arr={})
 Compute edge state and flux. Does NOT allow time-depdendent inflow or inflow through EB. More...
 
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, bool godunov_ppm, bool godunov_use_forces_in_trans, std::string const &advection_type, int limiter_type=PPM::default_limiter, bool allow_inflow_on_outflow=false, amrex::iMultiFab *BC_MF=nullptr)
 
void ComputeConvectiveTerm (amrex::Box const &bx, int num_comp, amrex::MFIter &mfi, amrex::Array4< amrex::Real const > const &q, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &q_on_face_x, amrex::Array4< amrex::Real const > const &q_on_face_y, amrex::Array4< amrex::Real const > const &q_on_face_z), amrex::Array4< amrex::Real const > const &divu, amrex::Array4< amrex::Real > const &convTerm, int const *iconserv, std::string const &advection_type)
 If convective, compute convTerm = u dot grad q = div (u q) - q div(u). More...
 
void ComputeFluxes (amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &fx, amrex::Array4< amrex::Real > const &fy, amrex::Array4< amrex::Real > const &fz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &xed, amrex::Array4< amrex::Real const > const &yed, amrex::Array4< amrex::Real const > const &zed), amrex::Geometry const &geom, int ncomp, bool fluxes_are_area_weighted, int const *iconserv)
 Compute Fluxes. More...
 
void ComputeDivergence (amrex::Box const &bx, amrex::Array4< amrex::Real > const &div, AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fx, amrex::Array4< amrex::Real const > const &fy, amrex::Array4< amrex::Real const > const &fz), int ncomp, amrex::Geometry const &geom, amrex::Real mult, bool fluxes_are_area_weighted)
 Compute divergence. More...
 

Detailed Description

Collection of hydro utility functions

Function Documentation

◆ ComputeConvectiveTerm()

void HydroUtils::ComputeConvectiveTerm ( amrex::Box const &  bx,
int  num_comp,
amrex::MFIter mfi,
amrex::Array4< amrex::Real const > const &  q,
AMREX_D_DECL(amrex::Array4< amrex::Real const > const &q_on_face_x, amrex::Array4< amrex::Real const > const &q_on_face_y, amrex::Array4< amrex::Real const > const &q_on_face_z)  ,
amrex::Array4< amrex::Real const > const &  divu,
amrex::Array4< amrex::Real > const &  convTerm,
int const *  iconserv,
std::string const &  advection_type 
)

If convective, compute convTerm = u dot grad q = div (u q) - q div(u).

◆ ComputeDivergence()

void HydroUtils::ComputeDivergence ( amrex::Box const &  bx,
amrex::Array4< amrex::Real > const &  div,
AMREX_D_DECL(amrex::Array4< amrex::Real const > const &fx, amrex::Array4< amrex::Real const > const &fy, amrex::Array4< amrex::Real const > const &fz)  ,
int  ncomp,
amrex::Geometry const &  geom,
amrex::Real  mult,
bool  fluxes_are_area_weighted 
)

Compute divergence.

◆ ComputeFluxes()

void HydroUtils::ComputeFluxes ( amrex::Box const &  bx,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &fx, amrex::Array4< amrex::Real > const &fy, amrex::Array4< amrex::Real > const &fz)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real const > const &xed, amrex::Array4< amrex::Real const > const &yed, amrex::Array4< amrex::Real const > const &zed)  ,
amrex::Geometry const &  geom,
int  ncomp,
bool  fluxes_are_area_weighted,
int const *  iconserv 
)

Compute Fluxes.

◆ ComputeFluxesOnBoxFromState() [1/4]

void HydroUtils::ComputeFluxesOnBoxFromState ( amrex::Box const &  bx,
int  ncomp,
amrex::MFIter mfi,
amrex::Array4< amrex::Real const > const &  q,
amrex::Array4< amrex::Real const > const &  qnph,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z)  ,
bool  knownFaceState,
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  geom,
amrex::Real  l_dt,
amrex::Vector< amrex::BCRec > const &  h_bcrec,
const amrex::BCRec d_bcrec,
int const *  iconserv,
bool  godunov_use_ppm,
bool  godunov_use_forces_in_trans,
bool  is_velocity,
bool  fluxes_are_area_weighted,
std::string const &  advection_type,
int  limiter_type = PPM::default_limiter,
bool  allow_inflow_on_outflow = false,
amrex::Array4< int const > const &  bc_arr = {} 
)

Compute edge state and flux. Does NOT allow time-depdendent inflow or inflow through EB.

Compute edge state and flux. Allows time-depdendent inflow and inflow through EB.

◆ ComputeFluxesOnBoxFromState() [2/4]

void HydroUtils::ComputeFluxesOnBoxFromState ( amrex::Box const &  bx,
int  ncomp,
amrex::MFIter mfi,
amrex::Array4< amrex::Real const > const &  q,
amrex::Array4< amrex::Real const > const &  qnph,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z)  ,
bool  knownFaceState,
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_D_DECL(amrex::Array4< amrex::Real const > const &u_flux, amrex::Array4< amrex::Real const > const &v_flux, amrex::Array4< amrex::Real const > const &w_flux)  ,
amrex::Array4< amrex::Real const > const &  divu,
amrex::Array4< amrex::Real const > const &  fq,
amrex::Geometry  geom,
amrex::Real  l_dt,
amrex::Vector< amrex::BCRec > const &  h_bcrec,
const amrex::BCRec d_bcrec,
int const *  iconserv,
bool  godunov_use_ppm,
bool  godunov_use_forces_in_trans,
bool  is_velocity,
bool  fluxes_are_area_weighted,
std::string const &  advection_type,
int  limiter_type = PPM::default_limiter,
bool  allow_inflow_on_outflow = false,
amrex::Array4< int const > const &  bc_arr = {} 
)

Compute edge state and flux. Most general version for use with multilevel synchronization. All other versions ultimately call this one. Allows time-depdendent inflow and inflow through EB.

◆ ComputeFluxesOnBoxFromState() [3/4]

void HydroUtils::ComputeFluxesOnBoxFromState ( amrex::Box const &  bx,
int  ncomp,
amrex::MFIter mfi,
amrex::Array4< amrex::Real const > const &  q,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z)  ,
bool  knownFaceState,
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  geom,
amrex::Real  l_dt,
amrex::Vector< amrex::BCRec > const &  h_bcrec,
const amrex::BCRec d_bcrec,
int const *  iconserv,
bool  godunov_use_ppm,
bool  godunov_use_forces_in_trans,
bool  is_velocity,
bool  fluxes_are_area_weighted,
std::string const &  advection_type,
int  limiter_type = PPM::default_limiter,
bool  allow_inflow_on_outflow = false,
amrex::Array4< int const > const &  bc_arr = {} 
)

Compute edge state and flux. Allows inflow on EB but NOT time-dependent inflow.

◆ ComputeFluxesOnBoxFromState() [4/4]

void HydroUtils::ComputeFluxesOnBoxFromState ( amrex::Box const &  bx,
int  ncomp,
amrex::MFIter mfi,
amrex::Array4< amrex::Real const > const &  q,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &flux_x, amrex::Array4< amrex::Real > const &flux_y, amrex::Array4< amrex::Real > const &flux_z)  ,
AMREX_D_DECL(amrex::Array4< amrex::Real > const &face_x, amrex::Array4< amrex::Real > const &face_y, amrex::Array4< amrex::Real > const &face_z)  ,
bool  knownFaceState,
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_D_DECL(amrex::Array4< amrex::Real const > const &u_flux, amrex::Array4< amrex::Real const > const &v_flux, amrex::Array4< amrex::Real const > const &w_flux)  ,
amrex::Array4< amrex::Real const > const &  divu,
amrex::Array4< amrex::Real const > const &  fq,
amrex::Geometry  geom,
amrex::Real  l_dt,
amrex::Vector< amrex::BCRec > const &  h_bcrec,
const amrex::BCRec d_bcrec,
int const *  iconserv,
bool  godunov_use_ppm,
bool  godunov_use_forces_in_trans,
bool  is_velocity,
bool  fluxes_are_area_weighted,
std::string const &  advection_type,
int  limiter_type = PPM::default_limiter,
bool  allow_inflow_on_outflow = false,
amrex::Array4< int const > const &  bc_arr = {} 
)

◆ enforceInOutSolvability()

void HydroUtils::enforceInOutSolvability ( const amrex::Vector< amrex::Array< amrex::MultiFab *, AMREX_SPACEDIM >> &  vels_vec,
amrex::BCRec const *  bc_type,
const amrex::Vector< amrex::Geometry > &  geom,
bool  include_bndry_corners = false 
)

Enforces solvablity by scaling outflow to match with inflow.