WARPXM v1.10.0
|
Go to the source code of this file.
Functions | |
real | max_wave_speed (const real gas_gamma, const real *q, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | max_wave_speed_magnitude (const real gas_gamma, const real *q, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | min_wave_speed (real gas_gamma, const real *q, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | calc_fast_magnetosonic (real gas_gamma, const real *q, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | calc_slow_magnetosonic (real gas_gamma, const real *q, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | calc_magnetosonic_speeds (const real gas_gamma, const real *q, real *c, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
Calculate magnetosonic speeds in local frame, normal to element boundary. | |
real | rusanov_flux (const real gas_gamma, const real *ql, const real *qr, const real *F_L, const real *F_R, real *F_num, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | hll_flux (const real gas_gamma, const real *ql, const real *qr, const real *F_L, const real *F_R, real *F_num, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | hlld_flux (const real gas_gamma, const real *ql, const real *qr, const real *F_L, const real *F_R, real *F_num, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
real | get_avg (real a, real b) |
real | get_delta_lambda_k (const real lambda_k_R, const real lambda_k_L) |
real | get_lambda_k_star (const real lambda_k_roe, const real lambda_k_R, const real lambda_k_L) |
real | roe_flux (const real gas_gamma, const real *ql, const real *qr, const real *F_L, const real *F_R, real *F_num, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | imhd_numerical_flux_local_frame (const real gas_gamma, const real *q, real *f, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
IMHD numerical flux vector calculated in frame rotated to element boundary. | |
real | imhd_numerical_flux (const real gas_gamma, const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, const std::string &flux_type, real *numericalFlux, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
IMHD numerical flux vector calculated in global frame. | |
void | imhd_internal_flux (const real gas_gamma, const solverVariables_t *pSV, const real *q, std::vector< std::vector< real > > &internalFlux, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
IMHD internal flux tensor calculated in global frame. | |
void | CtoNC_MHD (const real gas_gamma, const real QC[8], real QNC[8], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
Converts conserved variables to nonconserved (primitive) variables. | |
void | NCtoC_MHD (const real gas_gamma, const real QNC[8], real QC[8], const real rho_min=std::numeric_limits< real >::epsilon()) |
Converts nonconserved (primitive) variables to conserved variables. | |
void | dqdw_MHD (const real gas_gamma, const real Q[8], real dqdw[][8], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | dwdq_MHD (const real gas_gamma, const real Q[8], real dwdq[][8], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | conducting_wall_noslip (const real gas_gamma, const solverVariables_t *pFV, const real *QC, const real vx_w, const real vy_w, const real vz_w, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | conducting_wall_noslip_old (const real gas_gamma, const solverVariables_t *pFV, const real *QC, const real vx_w, const real vy_w, const real vz_w, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | conducting_wall_noslip_gradients (const real gas_gamma, const solverVariables_t *pFV, const real *QC, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | conducting_wall_freeslip (const real gas_gamma, const solverVariables_t *pFV, const real *QC, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | conducting_wall_freeslip_gradients (const real gas_gamma, const solverVariables_t *pFV, const real *QC, const real *aux_in, const real *aux_out, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | twofluid_to_imhd (const real *QC, const solverVariables_t *pSV, real oc_sd, real *QC_w) |
void | copyout (const real *QC, real *QC_w) |
void | copyout_gradients (const real *grad_QC, real *grad_QC_w) |
void | freeslipWallCondition_imhd (const real gas_gamma, const solverVariables_t *pFV, const real *QC, real *QC_w, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon()) |
void | applyLdgPenaltyEta (const solverVariables_t *pFV, const real *q_l, const real *q_r, real *numericalFlux) |
Apply LDG eta penalty to numerical flux. | |
void applyLdgPenaltyEta | ( | const solverVariables_t * | pFV, |
const real * | q_l, | ||
const real * | q_r, | ||
real * | numericalFlux | ||
) |
Apply LDG eta penalty to numerical flux.
See Datta dissertation, Section 3.2 for construction of the LDG method as implemented here. The "eta" penalty-weighting parameter in the code is refered to as "alpha" in the dissertation, and the stabalizing penalty "tau" in Hesthaven "Nodal Discontinuous Galerkin Methods" 2008.
See Hesthaven, Chapter 7.2 for further reading on the topic, and the selection of values for eta/alpha/tau.
const | solverVariables_t pFV - solver variable structure |
const | real q_l - input variable, left |
const | real q_r - input variable, right |
real | numericalFlux - numerical fluxes |
real calc_fast_magnetosonic | ( | real | gas_gamma, |
const real * | q, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void calc_magnetosonic_speeds | ( | const real | gas_gamma, |
const real * | q, | ||
real * | c, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
Calculate magnetosonic speeds in local frame, normal to element boundary.
@warn Intended for use with numerical flux calcs. Looks for speeds normal to element boundary in local frame (x direction).
gas_gamma | Adiabatic index. |
q | Array of MHD variables. |
c | Array of speeds. |
rho_min | Minimum density. |
press_min | Minimum pressure. |
real calc_slow_magnetosonic | ( | real | gas_gamma, |
const real * | q, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void conducting_wall_freeslip | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void conducting_wall_freeslip_gradients | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
const real * | aux_in, | ||
const real * | aux_out, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void conducting_wall_noslip | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
const real | vx_w, | ||
const real | vy_w, | ||
const real | vz_w, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void conducting_wall_noslip_gradients | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void conducting_wall_noslip_old | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
const real | vx_w, | ||
const real | vy_w, | ||
const real | vz_w, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void CtoNC_MHD | ( | const real | gas_gamma, |
const real | QC[8], | ||
real | QNC[8], | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
Converts conserved variables to nonconserved (primitive) variables.
QC | Resultant conserved variables |
QNC | Nonconserved variables |
rho_min | Minimum density. |
press_min | Minimum pressure. |
void dqdw_MHD | ( | const real | gas_gamma, |
const real | Q[8], | ||
real | dqdw[][8], | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void dwdq_MHD | ( | const real | gas_gamma, |
const real | Q[8], | ||
real | dwdq[][8], | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void freeslipWallCondition_imhd | ( | const real | gas_gamma, |
const solverVariables_t * | pFV, | ||
const real * | QC, | ||
real * | QC_w, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
real hll_flux | ( | const real | gas_gamma, |
const real * | ql, | ||
const real * | qr, | ||
const real * | F_L, | ||
const real * | F_R, | ||
real * | F_num, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
real hlld_flux | ( | const real | gas_gamma, |
const real * | ql, | ||
const real * | qr, | ||
const real * | F_L, | ||
const real * | F_R, | ||
real * | F_num, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void imhd_internal_flux | ( | const real | gas_gamma, |
const solverVariables_t * | pSV, | ||
const real * | q, | ||
std::vector< std::vector< real > > & | internalFlux, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
IMHD internal flux tensor calculated in global frame.
pC | IMHD constant struct. |
q | Vector of MHD variables. |
pFV | Solver variable struct. Holds element and node geometry info(?). |
internalFlux | Rank two tensor of IMHD internal fluxes being returned. |
rho_min | Minimum density. |
press_min | Minimum pressure. |
real imhd_numerical_flux | ( | const real | gas_gamma, |
const real * | q_l, | ||
const real * | q_r, | ||
const real * | aux_l, | ||
const real * | aux_r, | ||
const solverVariables_t * | pFV, | ||
const std::string & | flux_type, | ||
real * | numericalFlux, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
IMHD numerical flux vector calculated in global frame.
pC | IMHD constant struct. |
q_l | Vector of MHD variables on left of element boundary. |
q_r | Vector of MHD variable on right of element boundary. |
aux_l | NOT USED. |
aux_r | NOT USED. |
pFV | Solver variable struct. Holds element and node geometry info(?). |
flux_type | String with name of numerical flux type. |
numericalFlux | Vector of IMHD numerical fluxes being returned. |
rho_min | Minimum density. |
press_min | Minimum pressure. |
void imhd_numerical_flux_local_frame | ( | const real | gas_gamma, |
const real * | q, | ||
real * | f, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
IMHD numerical flux vector calculated in frame rotated to element boundary.
In the rotated frame, x is normal to the boundary and y and z are tangential.
Ideal MHD rotated flux vector:
\begin{align} \overline{\mathcal{F}}_x=\begin{bmatrix} \rho u \\ \rho u u - (B_xB_x - \frac{1}{2}B^2) + P \\ \rho u v - B_xB_y \\ \rho u w - B_xB_z \\ u(\varepsilon+P + \frac{1}{2}B^2) - (\boldsymbol{u} \cdot \boldsymbol{B}) B_x \\ 0 \\ u B_y - B_x v \\ u B_z - B_x w \end{bmatrix} \end{align}
gas_gamma | Ratio of specific heats. |
q | IMHD fluid variables rotated into the element surface frame. |
f | Vector of IMHD numerical fluxes. |
rho_min | Minimum density. |
press_min | Minimum pressure. |
real max_wave_speed | ( | const real | gas_gamma, |
const real * | q, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
real max_wave_speed_magnitude | ( | const real | gas_gamma, |
const real * | q, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
real min_wave_speed | ( | real | gas_gamma, |
const real * | q, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void NCtoC_MHD | ( | const real | gas_gamma, |
const real | QNC[8], | ||
real | QC[8], | ||
const real | rho_min = std::numeric_limits< real >::epsilon() |
||
) |
Converts nonconserved (primitive) variables to conserved variables.
QNC | Nonconserved variables |
QC | Resultant conserved variables |
rho_min | Minimum density. |
real roe_flux | ( | const real | gas_gamma, |
const real * | ql, | ||
const real * | qr, | ||
const real * | F_L, | ||
const real * | F_R, | ||
real * | F_num, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
real rusanov_flux | ( | const real | gas_gamma, |
const real * | ql, | ||
const real * | qr, | ||
const real * | F_L, | ||
const real * | F_R, | ||
real * | F_num, | ||
const real | rho_min = std::numeric_limits< real >::epsilon() , |
||
const real | press_min = std::numeric_limits< real >::epsilon() |
||
) |
void twofluid_to_imhd | ( | const real * | QC, |
const solverVariables_t * | pSV, | ||
real | oc_sd, | ||
real * | QC_w | ||
) |