21 "the Flux Limited TVD scheme invented by Kuzmin and Turek");
23 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names");
25 "advective_flux_calculator",
26 "PorousFlowAdvectiveFluxCalculator UserObject. This determines whether the advection " 27 "describes a movement of a fluid component in a fluid phase, or movement of heat energy in a " 43 mooseError(
"PorousFlowFluxLimitedTVDAdvection::computeQpResidual() called\n");
64 Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
65 for (
unsigned int i = 0; i <
_save_in.size(); i++)
86 std::vector<dof_id_type> idof_indices(
99 std::vector<dof_id_type> jdof_indices(derivs.size());
102 for (
const auto & node_j_deriv : derivs)
110 deriv_matrix(0,
j) = node_j_deriv.second[pvar] / valence;
unsigned getValence(dof_id_type node_i) const
Returns the valence of the global node i Valence is the number of times the node is encountered in a ...
static InputParameters validParams()
void accumulateTaggedLocalResidual()
Real getFluxOut(dof_id_type node_i) const
Returns the flux out of lobal node id.
std::vector< MooseVariableFEBase *> _save_in
Advection of a quantity with velocity set in the PorousFlowAdvectiveFluxCalculator Depending on the P...
unsigned int number() const
virtual void precalculateResidual()
const std::map< dof_id_type, std::vector< Real > > & getdFluxOut_dvars(unsigned node_id) const
Returns d(flux_out)/d(porous_flow_variables.
Base class to compute the advective flux of fluid in PorousFlow situations using the Kuzmin-Turek FEM...
void addJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
virtual void precalculateJacobian()
unsigned int mooseVariableNum(unsigned int porous_flow_var_num) const
The Moose variable number.
registerMooseObject("PorousFlowApp", PorousFlowFluxLimitedTVDAdvection)
virtual void computeResidual() override
PorousFlowFluxLimitedTVDAdvection(const InputParameters ¶meters)
unsigned int number() const
unsigned int numVariables() const
The number of PorousFlow variables.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void computeJacobian() override
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
DenseVector< Number > _local_re
void mooseError(Args &&... args) const
virtual Real computeQpResidual() override
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const Elem *const & _current_elem
static InputParameters validParams()
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
void prepareVectorTag(Assembly &assembly, unsigned int ivar)
void prepareMatrixTag(Assembly &assembly, unsigned int ivar, unsigned int jvar)
const PorousFlowAdvectiveFluxCalculatorBase & _fluo
The user object that computes Kuzmin and Turek's K_ij, R+ and R-, etc quantities. ...
void scalingFactor(const std::vector< Real > &factor)