www.mooseframework.org
RichardsSeffPrimePrimeAux.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 2nd derive of effective saturation.
11 //
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>("wrtnum1",
23  "This aux kernel will return d^2(seff)/dP_wrtnum1 "
24  "dP_wrtnum2. 0<=wrtnum1<number_of_pressure_vars.");
25  params.addRequiredParam<int>("wrtnum2",
26  "This aux kernel will return d^2(seff)/dP_wrtnum1 "
27  "dP_wrtnum2. 0<=wrtnum2<number_of_pressure_vars.");
28  params.addRequiredParam<UserObjectName>("seff_UO",
29  "Name of user object that defines effective saturation.");
30  params.addClassDescription("auxillary variable which is 2nd derivative of effective saturation");
31  return params;
32 }
33 
34 RichardsSeffPrimePrimeAux::RichardsSeffPrimePrimeAux(const InputParameters & parameters)
35  : AuxKernel(parameters),
36  _seff_UO(getUserObject<RichardsSeff>("seff_UO")),
37  _wrt1(getParam<int>("wrtnum1")),
38  _wrt2(getParam<int>("wrtnum2"))
39 {
40  int n = coupledComponents("pressure_vars");
41  if (_wrt1 < 0 || _wrt1 >= n)
42  mooseError("Your wrtnum1 is ", _wrt1, " but it must obey 0 <= wrtnum1 < ", n, ".");
43  if (_wrt2 < 0 || _wrt2 >= n)
44  mooseError("Your wrtnum2 is ", _wrt2, " but it must obey 0 <= wrtnum2 < ", n, ".");
45  _pressure_vals.resize(n);
46 
47  for (int i = 0; i < n; ++i)
48  _pressure_vals[i] = &coupledValue("pressure_vars", i);
49 
50  _mat.resize(n);
51  for (int i = 0; i < n; ++i)
52  _mat[i].resize(n);
53 }
54 
55 Real
57 {
59  return _mat[_wrt1][_wrt2];
60 }
RichardsSeffPrimePrimeAux.h
RichardsSeffPrimePrimeAux::_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: RichardsSeffPrimePrimeAux.h:57
RichardsSeff
Base class for effective saturation as a function of porepressure(s) The functions seff,...
Definition: RichardsSeff.h:23
RichardsSeffPrimePrimeAux::_mat
std::vector< std::vector< Real > > _mat
matrix of 2nd derivtives: This auxkernel returns _mat[_wrt1][_wrt2];
Definition: RichardsSeffPrimePrimeAux.h:60
RichardsSeffPrimePrimeAux::RichardsSeffPrimePrimeAux
RichardsSeffPrimePrimeAux(const InputParameters &parameters)
Definition: RichardsSeffPrimePrimeAux.C:34
validParams< RichardsSeffPrimePrimeAux >
InputParameters validParams< RichardsSeffPrimePrimeAux >()
Definition: RichardsSeffPrimePrimeAux.C:18
RichardsSeffPrimePrimeAux
Calculates derivative of effective saturation wrt specified porepressures.
Definition: RichardsSeffPrimePrimeAux.h:25
RichardsSeffPrimePrimeAux::_seff_UO
const RichardsSeff & _seff_UO
The user object that defines effective saturation as function of porepressure (or porepressures in th...
Definition: RichardsSeffPrimePrimeAux.h:38
RichardsSeffPrimePrimeAux::_wrt2
int _wrt2
AuxKernel calculates d^2(Seff)/dP_wrt1 dP_wrt2 so wrt2 is the porepressure number to differentiate wr...
Definition: RichardsSeffPrimePrimeAux.h:50
RichardsSeffPrimePrimeAux::_wrt1
int _wrt1
AuxKernel calculates d^2(Seff)/dP_wrt1 dP_wrt2 so wrt1 is the porepressure number to differentiate wr...
Definition: RichardsSeffPrimePrimeAux.h:44
RichardsSeffPrimePrimeAux::computeValue
virtual Real computeValue()
Definition: RichardsSeffPrimePrimeAux.C:56
registerMooseObject
registerMooseObject("RichardsApp", RichardsSeffPrimePrimeAux)
RichardsSeff::d2seff
virtual void d2seff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< std::vector< Real >> &result) const =0
second derivative(s) of effective saturation as a function of porepressure(s) at given quadpoint of t...