4#include "warpxm/warpxm_config.h"
47 const real rho_min = std::numeric_limits<real>::epsilon());
71 const real rho_min = std::numeric_limits<real>::epsilon(),
72 const real press_min = std::numeric_limits<real>::epsilon());
101 const real rho_min = std::numeric_limits<real>::epsilon(),
102 const real press_min = std::numeric_limits<real>::epsilon());
121 const real rho_min = std::numeric_limits<real>::epsilon(),
122 const real press_min = std::numeric_limits<real>::epsilon());
127 const real QNC_center[5],
129 const real QC_center[5],
163 const real rho_min = std::numeric_limits<real>::epsilon(),
164 const real press_min = std::numeric_limits<real>::epsilon());
182 const real rho_min = std::numeric_limits<real>::epsilon(),
183 const real press_min = std::numeric_limits<real>::epsilon());
196 const real rho_min = std::numeric_limits<real>::epsilon());
202 const real wave[][3],
205 const real rho_min = std::numeric_limits<real>::epsilon(),
206 const real press_min = std::numeric_limits<real>::epsilon());
228 const real press_min),
230 const real rho_min = std::numeric_limits<real>::epsilon(),
231 const real press_min = std::numeric_limits<real>::epsilon());
256 const real press_min),
257 real numericalFlux[5],
258 const real rho_min = std::numeric_limits<real>::epsilon(),
259 const real press_min = std::numeric_limits<real>::epsilon());
277 const real rho_min = std::numeric_limits<real>::epsilon(),
278 const real press_min = std::numeric_limits<real>::epsilon());
286 const real rho_min = std::numeric_limits<real>::epsilon(),
287 const real press_min = std::numeric_limits<real>::epsilon());
302 real numericalFlux[5],
303 const real rho_min = std::numeric_limits<real>::epsilon(),
304 const real press_min = std::numeric_limits<real>::epsilon());
317 std::vector<std::vector<real>>& internalFlux,
318 const real rho_min = std::numeric_limits<real>::epsilon(),
319 const real press_min = std::numeric_limits<real>::epsilon());
323 const real* grad_rho,
324 const real* grad_p[3],
331 std::vector<std::vector<real>>& flux_tensor);
340 const real* grad_u[3],
342 const real grad_T[3],
343 std::vector<std::vector<real>>& internal_flux,
344 const real rho_min = std::numeric_limits<real>::epsilon());
350 const real viscosity,
351 const real thermal_conductivity,
356 real* numerical_flux,
357 const real rho_min = std::numeric_limits<real>::epsilon(),
358 const real press_min = std::numeric_limits<real>::epsilon());
366 const real rho_min = std::numeric_limits<real>::epsilon(),
367 const real press_min = std::numeric_limits<real>::epsilon());
383 const real rho_min = std::numeric_limits<real>::epsilon(),
384 const real press_min = std::numeric_limits<real>::epsilon());
388 const real rho_min = std::numeric_limits<real>::epsilon());
393 const real rho_min = std::numeric_limits<real>::epsilon());
397 const bool is_neutral,
398 const real collision_coefficient,
399 const real minimum_frequency,
400 const real diffusivity_min,
401 const real diffusivity_max,
402 const bool is_const_mu,
404 const bool is_const_k,
408 const real rho_min = std::numeric_limits<real>::epsilon(),
409 const real press_min = std::numeric_limits<real>::epsilon());
442 const real rho_min = std::numeric_limits<real>::epsilon());
456 const real rho_min = std::numeric_limits<real>::epsilon(),
457 const real press_min = std::numeric_limits<real>::epsilon());
464 const real rho_min = std::numeric_limits<real>::epsilon(),
465 const real press_min = std::numeric_limits<real>::epsilon());
477 const real rho_min = std::numeric_limits<real>::epsilon(),
478 const real press_min = std::numeric_limits<real>::epsilon());
485 const real rho_min = std::numeric_limits<real>::epsilon(),
486 const real press_min = std::numeric_limits<real>::epsilon());
494 const real rho_min = std::numeric_limits<real>::epsilon(),
495 const real press_min = std::numeric_limits<real>::epsilon());
502 const real rho_min = std::numeric_limits<real>::epsilon(),
503 const real press_min = std::numeric_limits<real>::epsilon());
512 real skin_depth_norm,
522 real skin_depth_norm,
void axisBoundaryCondition(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 freeslipWallCondition(const solverVariables_t *pSV, const real *QC, real *QC_w)
void noslipWallCondition_gradients(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 noslipWallCondition(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 axisBoundaryCondition_gradients(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 imhd_to_twofluid_consistent_assumption(const real *QC, const solverVariables_t *pSV, real Ai, real Ae, real Zi, real Ze, real ztheta_ba, real skin_depth_norm, real *QC_w)
void copyoutBoundaryCondition(const real *QC, real *QC_w)
void freeslipWallCondition_yu(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 freeslipWallCondition_gradients_yu(const constants_5moment_t *pC, const solverVariables_t *pSV, 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 imhd_to_twofluid_bc(const real *QC, const solverVariables_t *pSV, real Aa, real Ab, real Za, real Zb, real ztheta_ba, real skin_depth_norm, real *QC_w)
void navier_stokes_viscous_flux_tensor(const real *q, const solverVariables_t *pSV, const real pi[][3], const real h[3], std::vector< std::vector< real > > &flux_tensor)
void navier_stokes_anisotropic_pressure_tensor(const real viscosity, const real *q, const real *grad_rho, const real *grad_p[3], real pi[3][3])
real eulerNumericalFlux(const constants_5moment_t *pC, const solverVariables_t *pSV, const real QC_l[5], const real QC_r[5], void(*numerical_flux_scheme)(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], real *s, real amdq[5], real apdq[5], const real rho_min, const real press_min), real numericalFlux[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Calculates the Numerical Flux for the Euler fluid equations using Roe's Method as given by Leveque in...
void eulerRoeAverages(const constants_5moment_t *pC, const real ql[5], const real qr[5], const real &pl, const real &pr, real &rho, real &u, real &v, real &w, real &enth, real &a, const real rho_min=std::numeric_limits< real >::epsilon())
real navier_stokes_numerical_flux(constants_5moment_t *pC, const solverVariables_t *pSV, const real viscosity, const real thermal_conductivity, const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, real *numerical_flux, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
real getTemperatureFloored(const real *q, const real gas_gamma, const real A=1.0, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Get the temperature from Euler (5-moment) variables using floors for pressure and density.
void eulerHLLEFluxSolver(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], real *s, real amdq[5], real apdq[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Calculates the HLLE flux for the Euler fluid equations.
void antirotateVector(const real Rv[5], const solverVariables_t *pSV, real v[5])
Rotates a 5-moment variable set from local frame to world frame.
real eulerNumericalFlux_x(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], void(*numerical_flux_scheme)(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], real *s, real amdq[5], real apdq[5], const real rho_min, const real press_min), real flux[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Calculates the Euler Numerical flux given a scheme along the x-axis which is to be used as a numerica...
void calcGradT(const constants_5moment_t *pC, const real *q, const real *aux, const real *grad_u, real *grad_T, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Computes temperature gradients from 5 moment conserved variable gradients/values.
void NCtoC(const constants_5moment_t *pC, const real QNC[5], real QC[5])
Converts nonconserved (primitive) variables to conserved variables.
real getRhoFloored(const real *q, const real rho_min=std::numeric_limits< real >::epsilon())
Get the floored mass density.
real positivity_preserving_source_dt(const real *q, const real *dqdt, real lambda, const real rho_min=std::numeric_limits< real >::epsilon())
Computes the maximum allowable dt for a source term to preserve positivity for the positivity-preserv...
void calcGradU(const real *q, const real *aux, real *grad_u[3], const real rho_min=std::numeric_limits< real >::epsilon())
void eulerFlux(const constants_5moment_t *pC, const real QC[5], real flux[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Flux along x-axis for Euler fluid equations using conserved variables.
void CtoNC(const constants_5moment_t *pC, const real QC[5], real QNC[5], 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.
real eulerRusanovFlux(const constants_5moment_t *pC, const solverVariables_t *pSV, const real QC_l[5], const real QC_r[5], real numericalFlux[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Calculates the Rusanov flux for the Euler fluid equations directly.
void navier_stokes_internal_flux(const constants_5moment_t *pC, const solverVariables_t *pSV, const real mu, const real k, const real *q, const real u[3], const real *grad_u[3], const real div_u, const real grad_T[3], std::vector< std::vector< real > > &internal_flux, const real rho_min=std::numeric_limits< real >::epsilon())
void hartenHymanEntropyFix(const constants_5moment_t *pC, const real ql[5], const real qr[5], const real s[3], const real wave[][3], real amdq[5], real apdq[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
void eulerRoeFluxSolver(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], real *s, real amdq[5], real apdq[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Solves the full Roe decomposition for the euler fluid problem using conserved variables - assumes an ...
void get_mu_and_k(const constants_5moment_t *pC, const real *q, const bool is_neutral, const real collision_coefficient, const real minimum_frequency, const real diffusivity_min, const real diffusivity_max, const bool is_const_mu, const real const_mu, const bool is_const_k, const real const_k, real &mu, real &k, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
real interspeciesCollisions(const real nu_ab, const constants_5moment_t *pC_a, const constants_5moment_t *pC_b, const real *q_a, const real *q_b, real *source, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
real eulerInternalFlux(const constants_5moment_t *pC, const solverVariables_t *pSV, const real QC[5], std::vector< std::vector< real > > &internalFlux, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Calculates the internal euler flux at a given point.
real getPressureFloored(const real *q, const real gas_gamma, const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
Get the pressure from Euler (5-moment) variables using floors for pressure and density.
real calcDivU(const real *q, const real *aux, const real rho_min=std::numeric_limits< real >::epsilon())
void rotateVector(const real v[5], const solverVariables_t *pSV, real Rv[5])
Rotates a 5-moment variable set from world frame to local frame.
void eulerHLLECFluxSolver(const constants_5moment_t *pC, const real QC_l[5], const real QC_r[5], real *s, real amdq[5], real apdq[5], const real rho_min=std::numeric_limits< real >::epsilon(), const real press_min=std::numeric_limits< real >::epsilon())
void NCtoCDifferential(const constants_5moment_t *pC, const real QNC_center[5], const real dQNC[5], const real QC_center[5], real dQC[5])
This currently isn't used anywhere.
Base namespace for everything not included in the global namespace.
Definition: field_source.h:8
Structure for holding constants used in the 5moment solvers.
Definition: 5-moment_base.h:17
real gas_gamma
Definition: 5-moment_base.h:18
real density_min
Definition: 5-moment_base.h:20
real mass
Definition: 5-moment_base.h:19
real pressure_min
Definition: 5-moment_base.h:21
bool entropy_fix
Definition: 5-moment_base.h:22
Definition: wmapplication.h:38
#define real
Definition: wmoclunstructuredreconstruction.h:11