All libraries · PBHVlasov (GRTeclyn)

grteclyn/PBHVlasov/StateVariables.hpp

PBHVlasov example for GRTeclyn (pbhgr project, stage 2).

46 lines · 1.7 KB · pbhgr @ 9e8e13d · raw

/* PBHVlasov example for GRTeclyn (pbhgr project, stage 2).
 * State = CCZ4 variables + 10 grid variables holding the particle (Vlasov) matter sources deposited
 * from the particles: rho_p, S_i (momentum density), S_ij (stress).  They carry no RHS. */
#ifndef STATEVARIABLES_HPP
#define STATEVARIABLES_HPP

#include "ArrayTools.hpp"
#include "BCParity.hpp"
#include "CCZ4StateVariables.hpp"

enum
{
    c_rho_p = NUM_CCZ4_VARS,
    c_S1,
    c_S2,
    c_S3,
    c_S11,
    c_S12,
    c_S13,
    c_S22,
    c_S23,
    c_S33,
    c_fref, // gauge reference profile K_0(x)/K_0(far), static
    NUM_VARS
};

namespace StateVariables
{
static const amrex::Vector<std::string> particle_matter_names = {
    "rho_p", "S1", "S2", "S3", "S11", "S12", "S13", "S22", "S23", "S33", "fref"};
static const amrex::Vector<std::string> names =
    ArrayTools::concatenate(CCZ4StateVariables::names, particle_matter_names);
static constexpr int NUM_MATTER_VARS = NUM_VARS - NUM_CCZ4_VARS;
static const std::array<BCParity, NUM_MATTER_VARS> particle_matter_parities = {
    BCParity::even,  BCParity::odd_x,  BCParity::odd_y,  BCParity::odd_z,   BCParity::even,
    BCParity::odd_xy, BCParity::odd_xz, BCParity::even,   BCParity::odd_yz, BCParity::even, BCParity::even};
static const std::array<BCParity, NUM_VARS> parities =
    ArrayTools::concatenate(CCZ4StateVariables::parities, particle_matter_parities);
static const std::array<amrex::Real, NUM_MATTER_VARS> particle_matter_asymptotic_values = {
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0};
static const std::array<amrex::Real, NUM_VARS> asymptotic_values =
    ArrayTools::concatenate(CCZ4StateVariables::asymptotic_values, particle_matter_asymptotic_values);
} // namespace StateVariables

#endif /* STATEVARIABLES_HPP */