SpECTRE
v2025.03.17
|
The troubled-cell indicator run on the DG grid to check if the solution is admissible. More...
#include <TciOnDgGrid.hpp>
Public Types | |
using | return_tags = implementation defined |
using | argument_tags = implementation defined |
Static Public Member Functions | |
static std::tuple< int, evolution::dg::subcell::RdmpTciData > | apply (gsl::not_null< Variables< hydro::grmhd_tags< DataVector > > * > dg_prim_vars, const Scalar< DataVector > &tilde_d, const Scalar< DataVector > &tilde_ye, const Scalar< DataVector > &tilde_tau, const tnsr::i< DataVector, 3, Frame::Inertial > &tilde_s, const tnsr::I< DataVector, 3, Frame::Inertial > &tilde_b, const Scalar< DataVector > &tilde_phi, const tnsr::ii< DataVector, 3, Frame::Inertial > &spatial_metric, const tnsr::II< DataVector, 3, Frame::Inertial > &inv_spatial_metric, const Scalar< DataVector > &sqrt_det_spatial_metric, const EquationsOfState::EquationOfState< true, 3 > &eos, const Mesh< 3 > &dg_mesh, const Mesh< 3 > &subcell_mesh, const evolution::dg::subcell::RdmpTciData &past_rdmp_tci_data, const TciOptions &tci_options, const evolution::dg::subcell::SubcellOptions &subcell_options, const grmhd::ValenciaDivClean::PrimitiveFromConservativeOptions &primitive_from_conservative_options, double persson_exponent, bool element_stays_on_dg) |
The troubled-cell indicator run on the DG grid to check if the solution is admissible.
We denote variables at the candidate solution's time level by a superscript
The following checks are done in the order they are listed:
Description | TCI status |
---|---|
if tci_options.minimum_rest_mass_density_times_lorentz_factor or if tci_options.minimum_rest_mass_density_times_lorentz_factor times tci_options.minimum_ye , we have a negative (or extremely small) density or electron fraction and the cell is troubled. Note that if this tci_option is approximately equal to or larger than the atmosphere_density , the atmosphere will be flagged as troubled. |
|
if tci_options.minimum_tilde_tau then we have a negative (or extremely small) energy and the cell is troubled. |
|
if tci_options.atmosphere_density then the entire DG element is in atmosphere and it is not troubled. |
|
if |
|
attempt a primitive recovery using the RecoveryScheme from the template parameter. The cell is marked as troubled if the primitive recovery fails at any grid point. |
|
if tci_options.atmosphere_density then the cell is in atmosphere and not marked as troubled. Note that the magnetic field is still freely evolved. |
|
apply the Persson TCI to |
|
apply the Persson TCI to |
|
apply the Persson TCI to pressure |
|
apply the Persson TCI to the magnitude of tci_options.magnetic_field_cutoff |
|
apply the RDMP TCI to TildeD |
|
apply the RDMP TCI to TildeTau |
|
apply the RDMP TCI to TildeB |
|
If the cell is not flagged as troubled then the primitives are computed at time level n+1
.
The second column of the table above denotes the value of an integer stored as the first element of the returned std::tuple
, which indicates the particular kind of check that failed. For example, if the fifth check (primitive recovery) fails and cell is marked as troubled, an integer with value -4
is stored in the first slot of the returned tuple. Note that this integer is marking only the first check to fail, since checks are done in a particular sequence as listed above. If all checks are passed and cell is not troubled, it is returned with the value 0
.