CppNoddy  0.92
Loading...
Searching...
No Matches
Public Member Functions | List of all members
CppNoddy::Example::Nlin_adv_equation Class Reference
Inheritance diagram for CppNoddy::Example::Nlin_adv_equation:
CppNoddy::Equation_2matrix< double > CppNoddy::Equation_1matrix< _Type, _Xtype > CppNoddy::Residual_with_coords< _Type, _Xtype > CppNoddy::Residual< _Type >

Public Member Functions

 Nlin_adv_equation ()
 The problem is 2nd order and real. More...
 
void residual_fn (const DenseVector< double > &z, DenseVector< double > &f) const
 Define a nonlinear advection diffusion problem. More...
 
void matrix0 (const DenseVector< double > &z, DenseMatrix< double > &m) const
 Define the derivative terms by providing the mass matrix – identity in this case. More...
 
void get_jacobian_of_matrix0_mult_vector (const DenseVector< double > &state, const DenseVector< double > &vec, DenseMatrix< double > &h) const
 
void matrix1 (const DenseVector< double > &z, DenseMatrix< double > &m) const
 Define the unsteady terms by providing the mass matrix. More...
 
void get_jacobian_of_matrix1_mult_vector (const DenseVector< double > &state, const DenseVector< double > &vec, DenseMatrix< double > &h) const
 Return the product of the Jacobian-of-the-matrix and a vector 'vec' when the equation has a given 'state'. More...
 
- Public Member Functions inherited from CppNoddy::Equation_2matrix< double >
 Equation_2matrix (const unsigned &order)
 Constructor for equation class. More...
 
virtual ~Equation_2matrix ()
 An empty destructor, virtual since we have virtual methods. More...
 
void update (const DenseVector< double > &state)
 Update the Equation object for the current set of state variables. More...
 
const DenseMatrix< double > & matrix1 () const
 Return a handle to the matrix member data. More...
 
virtual void get_jacobian_of_matrix1_mult_vector (const DenseVector< double > &state, const DenseVector< double > &vec, DenseMatrix< double > &h) const
 Return the product of the Jacobian-of-the-matrix and a vector 'vec' when the equation has a given 'state'. More...
 
- Public Member Functions inherited from CppNoddy::Equation_1matrix< _Type, _Xtype >
 Equation_1matrix (const unsigned &order)
 Constructor for equation class. More...
 
virtual ~Equation_1matrix ()
 An empty destructor, virtual since we have virtual methods. More...
 
void update (const DenseVector< _Type > &state)
 Update the Equation object for the current set of state variables. More...
 
const DenseMatrix< _Type > & matrix0 () const
 Return a handle to the matrix. More...
 
virtual void get_jacobian_of_matrix0_mult_vector (const DenseVector< _Type > &state, const DenseVector< _Type > &vec, DenseMatrix< _Type > &h) const
 Return the product of the Jacobian-of-the-matrix and a vector 'vec' when the equation has a given 'state'. More...
 
- Public Member Functions inherited from CppNoddy::Residual_with_coords< _Type, _Xtype >
 Residual_with_coords (const unsigned &order, const unsigned &ncoords)
 Constructor for a 'square' residual object that is, N residuals for N unknowns. More...
 
 Residual_with_coords (const unsigned &order, const unsigned &nvars, const unsigned &ncoords)
 Constructor for a 'non-square' residual object that is, there are less residual constraints than unknowns. More...
 
virtual ~Residual_with_coords ()
 An empty destructor. More...
 
_Xtype & coord (const unsigned &i)
 General handle access to the coordinates. More...
 
const _Xtype & coord (const unsigned &i) const
 General handle access to the coordinates. More...
 
- Public Member Functions inherited from CppNoddy::Residual< _Type >
 Residual (const unsigned &order)
 Constructor for a 'square' residual object that is, N residuals for N unknowns. More...
 
 Residual (const unsigned &order, const unsigned &nvars)
 Constructor for a 'non-square' residual object that is, there are less residual constraints than unknowns. More...
 
virtual ~Residual ()
 An empty destructor, virtual since we have virtual methods. More...
 
void update (const DenseVector< _Type > &state)
 Update the Residual object for the current set of state variables. More...
 
const DenseVector< _Type > & residual () const
 Return a handle to the residuals corresponding to the last update state. More...
 
const DenseMatrix< _Type > & jacobian () const
 Retrun a handle to the Jacobian of the residual corresponding to the last update state. More...
 
_Type & delta ()
 
const _Type & delta () const
 
unsigned get_order () const
 Get the order of the residual vector. More...
 
unsigned get_number_of_vars () const
 Get the number of variables that this residual condition is defined for. More...
 
virtual void residual_fn (const DenseVector< _Type > &state, DenseVector< _Type > &f) const
 A blank virtual residual function method. More...
 

Additional Inherited Members

virtual void matrix1 (const DenseVector< double > &state, DenseMatrix< double > &m) const
 Define the matrix in terms of the current state vector. More...
 
- Protected Member Functions inherited from CppNoddy::Equation_1matrix< _Type, _Xtype >
virtual void matrix0 (const DenseVector< _Type > &x, DenseMatrix< _Type > &m) const
 Define the matrix in terms of the current state vector. More...
 
- Protected Member Functions inherited from CppNoddy::Residual< _Type >
virtual void jacobian (const DenseVector< _Type > &state, DenseMatrix< _Type > &jac) const
 Because the residual evaluation at the current state is assumed to have already been done by the 'update' method, this routine is protected. More...
 
- Protected Attributes inherited from CppNoddy::Residual_with_coords< _Type, _Xtype >
std::vector< _Xtype > coords
 The coordinates stored for this residual. More...
 
- Protected Attributes inherited from CppNoddy::Residual< _Type >
DenseMatrix< _Type > JAC_AT_LAST_STATE
 Jacobian for the last state vector. More...
 
DenseVector< _Type > FN_AT_LAST_STATE
 Residual for the last state vector. More...
 
DenseVector< _Type > LAST_STATE
 The last state vector. More...
 
_Type DELTA
 A default step for FD computation of the Jacobian. More...
 
unsigned ORDER_OF_SYSTEM
 The order of the system of equations. More...
 
unsigned NUMBER_OF_VARS
 The number of elements in the state vector. More...
 

Detailed Description

Definition at line 38 of file IBVPNonlinearAdvDiffusion.cpp.

Constructor & Destructor Documentation

◆ Nlin_adv_equation()

CppNoddy::Example::Nlin_adv_equation::Nlin_adv_equation ( )
inline

The problem is 2nd order and real.

Definition at line 43 of file IBVPNonlinearAdvDiffusion.cpp.

An equation object base class used in the PDE_double_IBVP class.

Member Function Documentation

◆ get_jacobian_of_matrix0_mult_vector()

void CppNoddy::Example::Nlin_adv_equation::get_jacobian_of_matrix0_mult_vector ( const DenseVector< double > &  state,
const DenseVector< double > &  vec,
DenseMatrix< double > &  h 
) const
inline

constant mass matrix, so we'll overlload this as empty to speed things up

Definition at line 59 of file IBVPNonlinearAdvDiffusion.cpp.

60 {
61 /// constant mass matrix, so we'll overlload this as empty to speed things up
62 }

◆ get_jacobian_of_matrix1_mult_vector()

void CppNoddy::Example::Nlin_adv_equation::get_jacobian_of_matrix1_mult_vector ( const DenseVector< double > &  state,
const DenseVector< double > &  vec,
DenseMatrix< double > &  h 
) const
inlinevirtual

Return the product of the Jacobian-of-the-matrix and a vector 'vec' when the equation has a given 'state'.

The user should overload this if concerned about performance of the solver. If not overloaded, the default is to finite difference the Jacobian-of-the-matrix.

Parameters
stateThe current state variables – used for clarity when overloaded by the user instead of expecting the user to access the member data.
vecThe vector that will be multiplied by the Jacobian-of-the-matrix
hThe resulting 2D matrix

Reimplemented from CppNoddy::Equation_2matrix< double >.

Definition at line 70 of file IBVPNonlinearAdvDiffusion.cpp.

71 {
72 h( 1, U ) = - Re * vec[ 0 ];
73 }
@ U
Definition: BVPKarman.cpp:20
double Re
Globally define the Reynolds number and wavenumber.

References h, CppNoddy::Example::Re, and U.

◆ matrix0()

void CppNoddy::Example::Nlin_adv_equation::matrix0 ( const DenseVector< double > &  z,
DenseMatrix< double > &  m 
) const
inline

Define the derivative terms by providing the mass matrix – identity in this case.

Definition at line 54 of file IBVPNonlinearAdvDiffusion.cpp.

55 {
56 m(0,0)=1;m(1,1)=1;
57 }

References m.

◆ matrix1()

void CppNoddy::Example::Nlin_adv_equation::matrix1 ( const DenseVector< double > &  z,
DenseMatrix< double > &  m 
) const
inlinevirtual

Define the unsteady terms by providing the mass matrix.

Reimplemented from CppNoddy::Equation_2matrix< double >.

Definition at line 65 of file IBVPNonlinearAdvDiffusion.cpp.

66 {
67 m( 1, 0 ) = - Re * z[ U ];
68 }

References m, CppNoddy::Example::Re, U, and CppNoddy::Example::z().

◆ residual_fn()

void CppNoddy::Example::Nlin_adv_equation::residual_fn ( const DenseVector< double > &  z,
DenseVector< double > &  f 
) const
inline

Define a nonlinear advection diffusion problem.

Definition at line 46 of file IBVPNonlinearAdvDiffusion.cpp.

47 {
48 // The system
49 f[ U ] = z[ Ud ];
50 f[ Ud ] = source( coord(0), coord(1) );
51 }
@ f
Definition: BVPBerman.cpp:15
@ Ud
Definition: BVPKarman.cpp:20
_Xtype & coord(const unsigned &i)
General handle access to the coordinates.
double source(const double &x, const double &y, const double &t)
Definition: IBVPLinear.cpp:26

References CppNoddy::Residual_with_coords< _Type, _Xtype >::coord(), f, CppNoddy::Example::source(), U, Ud, and CppNoddy::Example::z().


The documentation for this class was generated from the following file:

© 2012

R.E. Hewitt