ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_NumericalDiffusion.H File Reference
#include <AMReX.H>
#include <ERF_DataStruct.H>
#include <AMReX_MultiFab.H>
Include dependency graph for ERF_NumericalDiffusion.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_fifth_order_deriv (const amrex::Real &dnp2, const amrex::Real &dnp1, const amrex::Real &dn, const amrex::Real &dnm1, const amrex::Real &dnm2, const amrex::Real &dnm3)
 
void NumericalDiffusion_Scal (const amrex::Box &bx, const int start_comp, const int num_comp, const double dt, const amrex::Real num_diff_coeff, const amrex::Array4< const amrex::Real > &prim_data, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< const amrex::Real > &mfx, const amrex::Array4< const amrex::Real > &mfy)
 
void NumericalDiffusion_Xmom (const amrex::Box &bx, const double dt, const amrex::Real num_diff_coeff, const amrex::Array4< const amrex::Real > &prim_data, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< const amrex::Real > &mfx, const amrex::Array4< const amrex::Real > &mfy)
 
void NumericalDiffusion_Ymom (const amrex::Box &bx, const double dt, const amrex::Real num_diff_coeff, const amrex::Array4< const amrex::Real > &prim_data, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< const amrex::Real > &mfx, const amrex::Array4< const amrex::Real > &mfy)
 

Function Documentation

◆ calc_fifth_order_deriv()

AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_fifth_order_deriv ( const amrex::Real dnp2,
const amrex::Real dnp1,
const amrex::Real dn,
const amrex::Real dnm1,
const amrex::Real dnm2,
const amrex::Real dnm3 
)

Compute a fifth-order derivative approximation.

Parameters
[in]dnp2Value at index n+2
[in]dnp1Value at index n+1
[in]dnValue at index n
[in]dnm1Value at index n-1
[in]dnm2Value at index n-2
[in]dnm3Value at index n-3
Returns
The calculated derivative
28 {
29  amrex::Real interp = amrex::Real(10.) * (dn - dnm1)
30  - amrex::Real(5.) * (dnp1 - dnm2)
31  + (dnp2 - dnm3);
32  return interp;
33 }
amrex::Real Real
Definition: ERF_ShocInterface.H:19

Referenced by NumericalDiffusion_Scal(), NumericalDiffusion_Xmom(), and NumericalDiffusion_Ymom().

Here is the caller graph for this function:

◆ NumericalDiffusion_Scal()

void NumericalDiffusion_Scal ( const amrex::Box &  bx,
const int  start_comp,
const int  num_comp,
const double  dt,
const amrex::Real  num_diff_coeff,
const amrex::Array4< const amrex::Real > &  prim_data,
const amrex::Array4< const amrex::Real > &  cell_data,
const amrex::Array4< amrex::Real > &  rhs,
const amrex::Array4< const amrex::Real > &  mfx,
const amrex::Array4< const amrex::Real > &  mfy 
)

Apply numerical diffusion to scalar variables.

Parameters
[in]bxBox of cells to process
[in]start_compStarting component index
[in]num_compNumber of components to process
[in]dtTime step
[in]num_diff_coeffNumerical diffusion coefficient
[in]prim_dataPrimitive variable data
[in]cell_dataCell-centered data
[out]rhsRight-hand side array for updates
[in]mfxMap factors in x
[in]mfyMap factors in y

◆ NumericalDiffusion_Xmom()

void NumericalDiffusion_Xmom ( const amrex::Box &  bx,
const double  dt,
const amrex::Real  num_diff_coeff,
const amrex::Array4< const amrex::Real > &  prim_data,
const amrex::Array4< const amrex::Real > &  cell_data,
const amrex::Array4< amrex::Real > &  rhs,
const amrex::Array4< const amrex::Real > &  mfx,
const amrex::Array4< const amrex::Real > &  mfy 
)

Apply numerical diffusion to the x-momentum equation.

Parameters
[in]bxBox of cells to process
[in]dtTime step
[in]num_diff_coeffNumerical diffusion coefficient
[in]prim_dataPrimitive variable data
[in]cell_dataCell-centered data
[out]rhsRight-hand side array for updates
[in]mfxMap factors in x
[in]mfyMap factors in y

◆ NumericalDiffusion_Ymom()

void NumericalDiffusion_Ymom ( const amrex::Box &  bx,
const double  dt,
const amrex::Real  num_diff_coeff,
const amrex::Array4< const amrex::Real > &  prim_data,
const amrex::Array4< const amrex::Real > &  cell_data,
const amrex::Array4< amrex::Real > &  rhs,
const amrex::Array4< const amrex::Real > &  mfx,
const amrex::Array4< const amrex::Real > &  mfy 
)

Apply numerical diffusion to the y-momentum equation.

Parameters
[in]bxBox of cells to process
[in]dtTime step
[in]num_diff_coeffNumerical diffusion coefficient
[in]prim_dataPrimitive variable data
[in]cell_dataCell-centered data
[out]rhsRight-hand side array for updates
[in]mfxMap factors in x
[in]mfyMap factors in y