20 #ifndef __mast__fluid_elem_base__ 21 #define __mast__fluid_elem_base__ 33 #include "libmesh/fe_base.h" 40 class FlightCondition;
41 class PrimitiveSolution;
117 std::vector<MAST::FEMOperatorMatrix>& dB_mat);
137 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
150 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
196 template <
typename ValType>
200 const ValType& lin_sol,
203 template <
typename ValType>
207 const ValType& lin_sol,
212 const unsigned int deriv_dim,
219 const unsigned int deriv_dim,
227 (
const unsigned int calculate_dim,
229 std::vector<RealMatrixX >& mat);
233 (
const unsigned int calculate_dim,
234 const unsigned int primitive_var,
241 const libMesh::Point& normal,
249 const libMesh::Point& normal,
257 const libMesh::Point& normal,
265 const libMesh::Point& normal,
273 const libMesh::Point& normal,
281 const libMesh::Point& normal,
287 template <
typename ValType>
290 const libMesh::Point &normal,
291 const ValType& lin_sol,
295 template <
typename ValType>
298 const libMesh::Point &normal,
299 const ValType& lin_sol,
317 const libMesh::Point& nvec,
326 const libMesh::Point& nvec,
334 const libMesh::Point& nvec,
342 const libMesh::Point& nvec,
350 const libMesh::Point& nvec,
358 const libMesh::Point& nvec,
363 template <
typename ValType>
368 const libMesh::Point &nvec,
370 const ValType& lin_sol,
373 template <
typename ValType>
378 const libMesh::Point &nvec,
380 const ValType& lin_sol,
389 std::vector<RealMatrixX >& tau_sens);
395 std::vector<RealMatrixX >& tau_sens);
398 (
const unsigned int qp,
402 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
408 (
const unsigned int qp,
412 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
417 template <
typename ValType>
419 (
const unsigned int qp,
424 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
430 (
const unsigned int qp,
435 const std::vector<MAST::FEMOperatorMatrix>& dB_mat,
436 const std::vector<RealMatrixX >& Ai_advection,
438 const std::vector<std::vector<RealMatrixX > >& Ai_sens,
void calculate_advection_flux_jacobian_vec_adjoint_mult_second_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, const ValType &lin_sol, RealMatrixX &mat)
Class defines basic operations and calculation of the small disturbance primitive variables...
void calculate_advection_flux(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealVectorX &flux)
void calculate_advection_flux_jacobian_rho_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_advection_flux_jacobian_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
void calculate_advection_flux_jacobian_u3_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
void calculate_advection_left_eigenvector_and_inverse_T_derivative_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealMatrixX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
void calculate_advection_flux_jacobian_vec_adjoint_mult_second_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, const ValType &lin_sol, RealMatrixX &mat)
FluidElemBase(const unsigned int dimension, const MAST::FlightCondition &f)
Constructor.
This class provides the necessary functions to evaluate the flux vectors and their Jacobians for both...
void calculate_advection_flux_jacobian_T_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_diffusion_tensors_sensitivity(const RealVectorX &elem_sol, const RealVectorX &elem_sol_sens, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const RealMatrixX &dprim_dcons, const MAST::PrimitiveSolution &psol, const MAST::SmallPerturbationPrimitiveSolution< Real > &dsol, RealMatrixX &stress_tensor_sens, RealVectorX &temp_gradient_sens)
calculates and returns the stress tensor in stress_tensor.
bool _include_pressure_switch
Class defines the conversion and some basic operations on primitive fluid variables used in calculati...
void calculate_conservative_variable_jacobian(const MAST::PrimitiveSolution &sol, RealMatrixX &dcons_dprim, RealMatrixX &dprim_dcons)
void calculate_advection_flux_jacobian_sensitivity_for_primitive_variable(const unsigned int calculate_dim, const unsigned int primitive_var, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void update_solution_at_quadrature_point(const unsigned int qp, const MAST::FEBase &fe, const RealVectorX &elem_solution, RealVectorX &conservative_sol, MAST::PrimitiveSolution &primitive_sol, MAST::FEMOperatorMatrix &B_mat, std::vector< MAST::FEMOperatorMatrix > &dB_mat)
bool calculate_aliabadi_tau_matrix(const unsigned int qp, const MAST::FEBase &fe, const MAST::PrimitiveSolution &sol, RealMatrixX &tau, std::vector< RealMatrixX > &tau_sens)
void calculate_advection_outflow_flux_jacobian_vec_mult_second_derivative(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, const ValType &lin_sol, RealMatrixX &mat)
void calculate_advection_left_eigenvector_and_inverse_u1_derivative_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealMatrixX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
void calculate_advection_flux_jacobian_sensitivity_for_conservative_variable(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, std::vector< RealMatrixX > &mat)
void calculate_diffusion_flux(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, const RealMatrixX &stress_tensor, const RealVectorX &temp_gradient, RealVectorX &flux)
void calculate_advection_flux_jacobian_vec_mult_second_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, const ValType &lin_sol, RealMatrixX &mat)
void calculate_diffusion_tensors(const RealVectorX &elem_sol, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const RealMatrixX &dprim_dcons, const MAST::PrimitiveSolution &psol, RealMatrixX &stress_tensor, RealVectorX &temp_gradient)
calculates and returns the stress tensor in stress_tensor.
void calculate_diffusion_flux_jacobian(const unsigned int flux_dim, const unsigned int deriv_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
std::vector< FluidConservativeVars > _active_conservative_vars
const MAST::FlightCondition * flight_condition
This defines the surface motion for use with the nonlinear fluid solver.
void calculate_advection_outflow_flux_jacobian_vec_adjoint_mult_second_derivative(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, const ValType &lin_sol, RealMatrixX &mat)
Real _dissipation_scaling
void calculate_small_disturbance_aliabadi_discontinuity_operator(const unsigned int qp, const MAST::FEBase &fe, const MAST::PrimitiveSolution &sol, const MAST::SmallPerturbationPrimitiveSolution< ValType > &dsol, const RealVectorX &elem_solution, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const RealMatrixX &Ai_Bi_advection, RealVectorX &discontinuity_val)
void calculate_entropy_variable_jacobian(const MAST::PrimitiveSolution &sol, RealMatrixX &dUdV, RealMatrixX &dVdU)
FluidConservativeVars
enumeration of the conservative fluid variables
void calculate_advection_flux_jacobian(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_advection_flux_jacobian_u2_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
Matrix< Real, Dynamic, Dynamic > RealMatrixX
void calculate_advection_flux_jacobian_u2_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_advection_left_eigenvector_and_inverse_u3_derivative_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealMatrixX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
void calculate_aliabadi_discontinuity_operator(const unsigned int qp, const MAST::FEBase &fe, const MAST::PrimitiveSolution &sol, const RealVectorX &elem_solution, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const RealMatrixX &Ai_Bi_advection, RealVectorX &discontinuity_val)
void calculate_advection_left_eigenvector_and_inverse_rho_derivative_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealMatrixX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
Matrix< Real, Dynamic, 1 > RealVectorX
void calculate_differential_operator_matrix(const unsigned int qp, const MAST::FEBase &fe, const RealVectorX &elem_solution, const MAST::PrimitiveSolution &sol, const MAST::FEMOperatorMatrix &B_mat, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const std::vector< RealMatrixX > &Ai_advection, const RealMatrixX &Ai_Bi_advection, const std::vector< std::vector< RealMatrixX > > &Ai_sens, RealMatrixX &LS_operator, RealMatrixX &LS_sens)
void calculate_advection_flux_jacobian_vec_mult_second_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, const ValType &lin_sol, RealMatrixX &mat)
void calculate_advection_left_eigenvector_and_inverse_u2_derivative_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealMatrixX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
void calculate_advection_flux_jacobian_T_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
void calculate_pressure_derivative_wrt_conservative_variables(const MAST::PrimitiveSolution &sol, RealVectorX &dpdX)
FluidPrimitiveVars
enumeration of the primitive fluid variables
void calculate_hartmann_discontinuity_operator(const unsigned int qp, const MAST::FEBase &fe, const MAST::PrimitiveSolution &sol, const RealVectorX &elem_solution, const std::vector< MAST::FEMOperatorMatrix > &dB_mat, const RealMatrixX &Ai_Bi_advection, RealVectorX &discontinuity_val)
void calculate_advection_flux_jacobian_u1_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
void calculate_dxidX(const unsigned int qp, const MAST::FEBase &fe, RealMatrixX &dxi_dX, RealMatrixX &dX_dxi)
void calculate_advection_flux_jacobian_u1_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_advection_flux_jacobian_u3_derivative(const unsigned int calculate_dim, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_diffusion_flux_jacobian_primitive_vars(const unsigned int flux_dim, const unsigned int deriv_dim, const RealVectorX &uvec, const bool zero_kth, const MAST::PrimitiveSolution &sol, RealMatrixX &mat)
void calculate_advection_flux_jacobian_rho_derivative_for_moving_solid_wall_boundary(const MAST::PrimitiveSolution &sol, const Real ui_ni, const libMesh::Point &nvec, const RealVectorX &dnvec, RealMatrixX &mat)
bool calculate_barth_tau_matrix(const unsigned int qp, const MAST::FEBase &fe, const MAST::PrimitiveSolution &sol, RealMatrixX &tau, std::vector< RealMatrixX > &tau_sens)
void calculate_advection_left_eigenvector_and_inverse_for_normal(const MAST::PrimitiveSolution &sol, const libMesh::Point &normal, RealVectorX &eig_vals, RealMatrixX &l_eig_mat, RealMatrixX &l_eig_mat_inv_tr)
std::vector< MAST::FluidPrimitiveVars > _active_primitive_vars
void get_infinity_vars(RealVectorX &vars_inf) const