4 #include <deal.II/base/tensor.h> 6 #include "parameters/parameters_manufactured_solution.h" 76 template <
int dim,
int nspecies,
int nstate,
typename real>
94 const double gamma_gas,
103 static_assert(nstate==8,
"Physics::MHD() should be created with nstate=8");
118 const std::array<real,nstate> &conservative_soln)
const;
121 std::array<real,nstate>
convective_normal_flux (
const std::array<real,nstate> &conservative_soln,
const dealii::Tensor<1,dim,real> &normal)
const;
125 const std::array<real,nstate> &conservative_soln,
126 const dealii::Tensor<1,dim,real> &normal)
const;
130 const std::array<real,nstate> &,
131 const dealii::Tensor<1,dim,real> &)
const;
141 const std::array<real,nstate> &conservative_soln,
142 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient,
143 const dealii::types::global_dof_index cell_index)
const;
147 const std::array<real,nstate> &conservative_soln,
148 const std::array<dealii::Tensor<1,dim,real>,nstate> &solution_gradient)
const;
152 const dealii::Point<dim,real> &pos,
153 const std::array<real,nstate> &conservative_soln,
154 const real current_time,
155 const dealii::types::global_dof_index cell_index)
const;
159 const dealii::Point<dim,real> &pos,
160 const std::array<real,nstate> &conservative_soln,
161 const real current_time)
const;
176 std::array<dealii::Tensor<1,dim,real>,nstate>
178 const std::array<real,nstate> &conservative_soln,
179 const std::array<dealii::Tensor<1,dim,real>,nstate> &conservative_soln_gradient)
const;
182 std::array<dealii::Tensor<1,dim,real>,nstate>
184 const std::array<real,nstate> &primitive_soln,
185 const std::array<dealii::Tensor<1,dim,real>,nstate> &primitive_soln_gradient)
const;
188 real
compute_pressure (
const std::array<real,nstate> &conservative_soln )
const;
200 real
compute_sound (
const std::array<real,nstate> &conservative_soln )
const;
202 real
compute_sound (
const real density,
const real pressure )
const;
205 dealii::Tensor<1,dim,real>
compute_velocities (
const std::array<real,nstate> &conservative_soln )
const;
242 const std::array<real,nstate> &conservative_soln)
const;
246 const std::array<real,nstate> &entropy_var)
const;
252 const std::array<real,nstate> &conservative_soln1,
253 const std::array<real,nstate> &convervative_soln2)
const;
259 const std::array<real,nstate> &conservative_soln1,
260 const std::array<real,nstate> &convervative_soln2)
const;
266 const std::array<real,nstate> &conservative_soln1,
267 const std::array<real,nstate> &convervative_soln2)
const;
273 const std::array<real,nstate> &conservative_soln1,
274 const std::array<real,nstate> &convervative_soln2)
const;
279 const dealii::Point<dim, real> &,
280 const dealii::Tensor<1,dim,real> &,
281 const std::array<real,nstate> &,
282 const std::array<dealii::Tensor<1,dim,real>,nstate> &,
283 std::array<real,nstate> &,
284 std::array<dealii::Tensor<1,dim,real>,nstate> &)
const;
dealii::Tensor< 1, dim, real > compute_velocities(const std::array< real, nstate > &conservative_soln) const
Evaluate velocities from conservative variables.
std::array< real, nstate > convert_conservative_to_primitive(const std::array< real, nstate > &conservative_soln) const
real compute_temperature_from_density_pressure(const real density, const real pressure) const
Given density and pressure, returns NON-DIMENSIONALIZED temperature using free-stream non-dimensional...
real compute_velocity_squared(const dealii::Tensor< 1, dim, real > &velocities) const
Given the velocity vector , returns the dot-product .
const bool has_nonzero_diffusion
Flag to signal that diffusion term is non-zero.
Base class from which Advection, Diffusion, ConvectionDiffusion, and Euler is derived.
std::array< real, nstate > compute_entropy_variables(const std::array< real, nstate > &conservative_soln) const
Computes the entropy variables.
Manufactured solution used for grid studies to check convergence orders.
Files for the baseline physics.
const bool has_nonzero_physical_source
Flag to signal that physical source term is non-zero.
dealii::Tensor< 1, dim, real > compute_mean_velocities(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean velocities given two sets of conservative solutions.
std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function
Manufactured solution function.
real compute_temperature(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns NON-DIMENSIONALIZED temperature using free-stream non-dimensionali...
real compute_mean_density(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean density given two sets of conservative solutions.
Main parameter class that contains the various other sub-parameter classes.
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_conservative_gradient_to_primitive_gradient(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &conservative_soln_gradient) const
real compute_mean_pressure(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean pressure given two sets of conservative solutions.
real max_viscous_eigenvalue(const std::array< real, nstate > &soln) const
Maximum viscous eigenvalue.
std::array< real, nstate > source_term(const dealii::Point< dim, real > &pos, const std::array< real, nstate > &conservative_soln, const real current_time, const dealii::types::global_dof_index cell_index) const
Source term is zero or depends on manufactured solution.
MHD(const Parameters::AllParameters *const parameters_input, const double gamma_gas, const dealii::Tensor< 2, 3, double > input_diffusion_tensor=Parameters::ManufacturedSolutionParam::get_default_diffusion_tensor(), std::shared_ptr< ManufacturedSolutionFunction< dim, nspecies, real > > manufactured_solution_function=nullptr, const bool has_nonzero_diffusion=false, const bool has_nonzero_physical_source=false)
Constructor.
void boundary_face_values(const int, const dealii::Point< dim, real > &, const dealii::Tensor< 1, dim, real > &, const std::array< real, nstate > &, const std::array< dealii::Tensor< 1, dim, real >, nstate > &, std::array< real, nstate > &, std::array< dealii::Tensor< 1, dim, real >, nstate > &) const
Evaluates boundary values and gradients on the other side of the face.
static dealii::Tensor< 2, 3, double > get_default_diffusion_tensor()
gets the default diffusion tensor
real compute_dimensional_temperature(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns DIMENSIONALIZED temperature using the equation of state...
const double gamm1
Gamma-1.0 used often.
std::array< real, nstate > compute_conservative_variables_from_entropy_variables(const std::array< real, nstate > &entropy_var) const
Computes the conservative variables from the entropy variables.
real compute_pressure_from_enthalpy(const std::array< real, nstate > &conservative_soln) const
Evaluate pressure from conservative variables.
dealii::Tensor< 2, nstate, real > convective_flux_directional_jacobian(const std::array< real, nstate > &conservative_soln, const dealii::Tensor< 1, dim, real > &normal) const
Convective flux Jacobian: .
real compute_magnetic_energy(const std::array< real, nstate > &conservative_soln) const
Evaluate Magnetic Energy.
std::array< dealii::Tensor< 1, dim, real >, nstate > convective_flux(const std::array< real, nstate > &conservative_soln) const
Convective flux: .
std::array< real, nstate > convective_eigenvalues(const std::array< real, nstate > &, const dealii::Tensor< 1, dim, real > &) const
Spectral radius of convective term Jacobian is 'c'.
real max_convective_eigenvalue(const std::array< real, nstate > &soln) const
Maximum convective eigenvalue.
std::array< real, nstate > convective_normal_flux(const std::array< real, nstate > &conservative_soln, const dealii::Tensor< 1, dim, real > &normal) const
Convective flux: .
real compute_pressure(const std::array< real, nstate > &conservative_soln) const
Evaluate pressure from conservative variables.
real compute_specific_enthalpy(const std::array< real, nstate > &conservative_soln, const real pressure) const
Evaluate pressure from conservative variables.
real compute_mean_specific_energy(const std::array< real, nstate > &conservative_soln1, const std::array< real, nstate > &convervative_soln2) const
Mean specific energy given two sets of conservative solutions.
std::array< dealii::Tensor< 1, dim, real >, nstate > dissipative_flux(const std::array< real, nstate > &conservative_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &solution_gradient, const dealii::types::global_dof_index cell_index) const
Dissipative flux: 0.
real compute_total_energy(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns total energy.
dealii::Tensor< 1, dim, real > extract_velocities_from_primitive(const std::array< real, nstate > &primitive_soln) const
Given primitive variables, returns velocities.
std::array< dealii::Tensor< 1, dim, real >, nstate > convert_primitive_gradient_to_conservative_gradient(const std::array< real, nstate > &primitive_soln, const std::array< dealii::Tensor< 1, dim, real >, nstate > &primitive_soln_gradient) const
Magnetohydrodynamics (MHD) equations. Derived from PhysicsBase.
const double gam
Constant heat capacity ratio of air.
std::array< real, nstate > convert_primitive_to_conservative(const std::array< real, nstate > &primitive_soln) const
real compute_mach_number(const std::array< real, nstate > &conservative_soln) const
Given conservative variables, returns Mach number.
real compute_entropy_measure(const std::array< real, nstate > &conservative_soln) const
Evaluate entropy from conservative variables.
real compute_sound(const std::array< real, nstate > &conservative_soln) const
Evaluate speed of sound from conservative variables.
real compute_density_from_pressure_temperature(const real pressure, const real temperature) const
Given pressure and temperature, returns NON-DIMENSIONALIZED density using free-stream non-dimensional...