www.mooseframework.org
RichardsSeffPrimeAux.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 // This post processor returns the effective saturation of a region.
11 //
12 #include "RichardsSeffPrimeAux.h"
13 
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<AuxKernel>();
21  params.addRequiredCoupledVar("pressure_vars", "List of variables that represent the pressure");
22  params.addRequiredParam<int>(
23  "wrtnum",
24  "This aux kernel will return d(seff)/dP_wrtnum. 0<=wrtnum<number_of_pressure_vars.");
25  params.addRequiredParam<UserObjectName>("seff_UO",
26  "Name of user object that defines effective saturation.");
27  params.addClassDescription("auxillary variable which is effective saturation");
28  return params;
29 }
30 
31 RichardsSeffPrimeAux::RichardsSeffPrimeAux(const InputParameters & parameters)
32  : AuxKernel(parameters),
33  _seff_UO(getUserObject<RichardsSeff>("seff_UO")),
34  _wrt1(getParam<int>("wrtnum"))
35 {
36  int n = coupledComponents("pressure_vars");
37  if (_wrt1 < 0 || _wrt1 >= n)
38  mooseError("Your wrtnum is ", _wrt1, " but it must obey 0 <= wrtnum < ", n, ".");
39  _pressure_vals.resize(n);
40 
41  for (int i = 0; i < n; ++i)
42  _pressure_vals[i] = &coupledValue("pressure_vars", i);
43 
44  _mat.resize(n);
45 }
46 
47 Real
49 {
51  return _mat[_wrt1];
52 }
RichardsSeffPrimeAux::_wrt1
int _wrt1
AuxKernel calculates d^2(Seff)/dP_wrt1 so wrt1 is the porepressure number to differentiate wrt to.
Definition: RichardsSeffPrimeAux.h:44
RichardsSeffPrimeAux::RichardsSeffPrimeAux
RichardsSeffPrimeAux(const InputParameters &parameters)
Definition: RichardsSeffPrimeAux.C:31
RichardsSeffPrimeAux
Calculates derivative of effective saturation wrt a specified porepressure.
Definition: RichardsSeffPrimeAux.h:25
validParams< RichardsSeffPrimeAux >
InputParameters validParams< RichardsSeffPrimeAux >()
Definition: RichardsSeffPrimeAux.C:18
RichardsSeffPrimeAux::_seff_UO
const RichardsSeff & _seff_UO
The user object that defines effective saturation as function of porepressure (or porepressures in th...
Definition: RichardsSeffPrimeAux.h:38
RichardsSeff::dseff
virtual void dseff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< Real > &result) const =0
derivative(s) of effective saturation as a function of porepressure(s) at given quadpoint of the elem...
RichardsSeff
Base class for effective saturation as a function of porepressure(s) The functions seff,...
Definition: RichardsSeff.h:23
RichardsSeffPrimeAux::_pressure_vals
std::vector< const VariableValue * > _pressure_vals
the porepressure values (this will be length N where N is the number of arguments that the _seff_UO r...
Definition: RichardsSeffPrimeAux.h:51
RichardsSeffPrimeAux::computeValue
virtual Real computeValue()
Definition: RichardsSeffPrimeAux.C:48
registerMooseObject
registerMooseObject("RichardsApp", RichardsSeffPrimeAux)
RichardsSeffPrimeAux::_mat
std::vector< Real > _mat
array of derivtives: This auxkernel returns _mat[_wrt1]
Definition: RichardsSeffPrimeAux.h:54
RichardsSeffPrimeAux.h