131 std::string kernel_name;
132 std::string kernel_type;
135 kernel_name =
"Q2P_nodal_water_mass";
136 kernel_type =
"Q2PNodalMass";
138 params.
set<NonlinearVariableName>(
"variable") =
_sat_var;
139 params.
set<std::vector<VariableName>>(
"other_var") = {
_pp_var};
140 params.
set<
bool>(
"var_is_porepressure") =
false;
142 params.
set<std::vector<AuxVariableName>>(
"save_in") = {
"Q2P_nodal_water_mass_divided_by_dt"};
144 _problem->addKernel(kernel_type, kernel_name, params);
146 kernel_name =
"Q2P_nodal_gas_mass";
147 kernel_type =
"Q2PNodalMass";
149 params.
set<NonlinearVariableName>(
"variable") =
_pp_var;
150 params.
set<std::vector<VariableName>>(
"other_var") = {
_sat_var};
151 params.
set<
bool>(
"var_is_porepressure") =
true;
153 params.
set<std::vector<AuxVariableName>>(
"save_in") = {
"Q2P_nodal_gas_mass_divided_by_dt"};
155 _problem->addKernel(kernel_type, kernel_name, params);
157 kernel_name =
"Q2P_nodal_water_mass_old";
158 kernel_type =
"Q2PNegativeNodalMassOld";
160 params.
set<NonlinearVariableName>(
"variable") =
_sat_var;
161 params.
set<std::vector<VariableName>>(
"other_var") = {
_pp_var};
162 params.
set<
bool>(
"var_is_porepressure") =
false;
164 _problem->addKernel(kernel_type, kernel_name, params);
166 kernel_name =
"Q2P_nodal_gas_mass_old";
167 kernel_type =
"Q2PNegativeNodalMassOld";
169 params.
set<NonlinearVariableName>(
"variable") =
_pp_var;
170 params.
set<std::vector<VariableName>>(
"other_var") = {
_sat_var};
171 params.
set<
bool>(
"var_is_porepressure") =
true;
173 _problem->addKernel(kernel_type, kernel_name, params);
175 kernel_name =
"Q2P_water_flux";
176 kernel_type =
"Q2PSaturationFlux";
178 params.
set<NonlinearVariableName>(
"variable") =
_sat_var;
179 params.
set<std::vector<VariableName>>(
"porepressure_variable") = {
_pp_var};
184 params.
set<std::vector<AuxVariableName>>(
"save_in") = {
"Q2PWaterFluxResidual"};
186 params.
set<std::vector<AuxVariableName>>(
"diag_save_in") = {
"Q2PWaterJacobian"};
187 _problem->addKernel(kernel_type, kernel_name, params);
189 kernel_name =
"Q2P_gas_flux";
190 kernel_type =
"Q2PPorepressureFlux";
192 params.
set<NonlinearVariableName>(
"variable") =
_pp_var;
193 params.
set<std::vector<VariableName>>(
"saturation_variable") = {
_sat_var};
198 params.
set<std::vector<AuxVariableName>>(
"save_in") = {
"Q2PGasFluxResidual"};
200 params.
set<std::vector<AuxVariableName>>(
"diag_save_in") = {
"Q2PGasJacobian"};
201 _problem->addKernel(kernel_type, kernel_name, params);
203 kernel_name =
"Q2P_liquid_diffusion";
204 kernel_type =
"Q2PSaturationDiffusion";
206 params.
set<NonlinearVariableName>(
"variable") =
_sat_var;
207 params.
set<std::vector<VariableName>>(
"porepressure_variable") = {
_pp_var};
212 _problem->addKernel(kernel_type, kernel_name, params);
217 FEType fe_type(Utility::string_to_enum<Order>(getParam<MooseEnum>(
"ORDER")),
218 Utility::string_to_enum<FEFamily>(
"LAGRANGE"));
222 var_params.set<
MooseEnum>(
"order") = getParam<MooseEnum>(
"ORDER");
227 _problem->addAuxVariable(
type,
"Q2P_nodal_water_mass_divided_by_dt", var_params);
228 _problem->addAuxVariable(
type,
"Q2P_nodal_gas_mass_divided_by_dt", var_params);
231 _problem->addAuxVariable(
type,
"Q2PGasFluxResidual", var_params);
233 _problem->addAuxVariable(
type,
"Q2PWaterFluxResidual", var_params);
235 _problem->addAuxVariable(
type,
"Q2PGasJacobian", var_params);
237 _problem->addAuxVariable(
type,
"Q2PWaterJacobian", var_params);
245 params.
set<std::string>(
"value") =
"a*b";
247 std::vector<std::string> vars;
250 params.
set<std::vector<std::string>>(
"vars") = vars;
252 std::vector<std::string> vals_water;
253 vals_water.push_back(
"Q2P_mass_water_divided_by_dt");
254 vals_water.push_back(
"Q2P_dt");
255 params.
set<std::vector<std::string>>(
"vals") = vals_water;
256 _problem->addFunction(
"ParsedFunction",
"Q2P_water_mass_fcn", params);
258 std::vector<std::string> vals_gas;
259 vals_gas.push_back(
"Q2P_mass_gas_divided_by_dt");
260 vals_gas.push_back(
"Q2P_dt");
261 params.
set<std::vector<std::string>>(
"vals") = vals_gas;
262 _problem->addFunction(
"ParsedFunction",
"Q2P_gas_mass_fcn", params);
272 params.
set<std::vector<OutputName>>(
"outputs") = {
"none"};
273 _problem->addPostprocessor(
"TimestepSize",
"Q2P_dt", params);
276 params.
set<std::vector<OutputName>>(
"outputs") = {
"none"};
277 params.
set<std::vector<VariableName>>(
"variable") = {
"Q2P_nodal_water_mass_divided_by_dt"};
278 _problem->addPostprocessor(
"NodalSum",
"Q2P_mass_water_divided_by_dt", params);
281 params.
set<FunctionName>(
"function") =
"Q2P_water_mass_fcn";
283 _problem->addPostprocessor(
"FunctionValuePostprocessor",
"mass_water", params);
286 params.
set<std::vector<OutputName>>(
"outputs") = {
"none"};
287 params.
set<std::vector<VariableName>>(
"variable") = {
"Q2P_nodal_gas_mass_divided_by_dt"};
288 _problem->addPostprocessor(
"NodalSum",
"Q2P_mass_gas_divided_by_dt", params);
291 params.
set<FunctionName>(
"function") =
"Q2P_gas_mass_fcn";
293 _problem->addPostprocessor(
"FunctionValuePostprocessor",
"mass_gas", params);
UserObjectName _water_density
static std::string variableType(const FEType &fe_type, const bool is_fv=false, const bool is_array=false)
std::vector< OutputName > _output_total_masses_to
UserObjectName _water_relperm
InputParameters getValidParams(const std::string &name) const
bool _save_gas_Jacobian_in_Q2PGasJacobian
UserObjectName _water_relperm_for_diffusivity
bool _save_water_Jacobian_in_Q2PWaterJacobian
bool _save_water_flux_in_Q2PWaterFluxResidual
bool _save_gas_flux_in_Q2PGasFluxResidual
UserObjectName _gas_density
const std::string & type() const
const std::string & _current_task
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::shared_ptr< FEProblemBase > & _problem
bool _no_mass_calculations
UserObjectName _gas_relperm