OpenFCST: The open-source Fuel Cell Simulation Toolbox
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Typedefs | Enumerations | Functions
FuelCell::ApplicationCore Namespace Reference

Namespace containing the basic application framework used to loop over cells and create objects passed to FuelCellShop::Equation objects. More...

Classes

class  ApplicationBase
 Base class for applications. More...
 
class  ApplicationData
 Here we handle general data of applications. More...
 
class  ApplicationWrapper
 This class implements either iterative or time-stepping wrapper of applications. More...
 
class  BlockMatrixApplication
 Application handling matrices and assembling linear systems of equations. More...
 
class  DoFApplication
 Base class for all linear applications, i.e., all applications requiring Triangulation and DoFHandler classes. More...
 
class  Event
 Objects of this kind are used to notify interior applications of changes provoked by an outer loop. More...
 
class  FEVectors
 The data type used in function calls of Application. More...
 
struct  MatrixBlock
 A wrapper around a MATRIX object, storing the coordinates in the global block matrix as well. More...
 
struct  BlockInfo
 A small structure collecting the different BlockIndices of FEVector vectors (for instance, solution) involved in the computations. More...
 
class  DoFInfo
 Very basic info class only containing information on geometry and degrees of freedom on a mesh entity. More...
 
class  IntegrationInfo
 This class is created for the objects handed to the mesh loops. More...
 
class  OptimizationBlockMatrixApplication
 Application handling matrices and assembling the linear system to solve the sensitivity equations. More...
 
class  DAESolver
 This class provides an interface to the Fortran 77 code COLDAE. More...
 
class  DAEWrapper
 This class is to be used as a wrapper for the functions needed in the DAESolver. More...
 
class  AdaptiveRefinement
 This class is initialized with an application that describes the linearization of the problem that we would like to solve and the nonlinear solver that drives the process (usually a Newton loop). More...
 
class  newtonBase
 Base class for all classes performing Newton's iteration. More...
 
class  NewtonBasic
 This class performs basic Newton iterations with a constant weight. More...
 
class  Newton3pp
 Application class performing Newton's iteration. More...
 
class  NewtonLineSearch
 Application class performing a Newton's iteration as described in newtonBase. More...
 
class  Picard
 Application class performing a Picard iteration as described in the PicardBase. More...
 
class  PicardBase
 Base class for all classes performing Picard iterations. More...
 
class  ThetaScheme
 
class  TransientBase
 This is a base class for transient solvers. More...
 

Typedefs

typedef BlockVector< double > FEVector
 The vector class used by applications. More...
 
typedef std::vector
< MatrixBlock< FullMatrix
< double > > > 
MatrixVector
 The matrix vector used in the mesh loops. More...
 
typedef std::vector< Vector
< double > > 
VectorVector
 The std::vector of dealii::Vectors used in the mesh loops. More...
 
typedef void(* fsub_ptr )(double &, double[], double[], double[])
 
typedef void(* dfsub_ptr )(double &, double[], double[], double[])
 
typedef void(* gsub_ptr )(int &, double[], double &)
 
typedef void(* dgsub_ptr )(int &, double[], double[])
 
typedef void(* guess_ptr )(double &, double[], double[], double[])
 

Enumerations

enum  LinearSolver {
  LinearSolver::UMFPACK, LinearSolver::CG, LinearSolver::ILU_GMRES, LinearSolver::MUMPS,
  LinearSolver::BICGSTAB
}
 Enumeration class for Linear solvers. More...
 
enum  NonLinearSolver {
  NonLinearSolver::NONE, NonLinearSolver::NEWTONBASIC, NonLinearSolver::NEWTON3PP, NonLinearSolver::NEWTONLINESEARCH,
  PICARD
}
 Enumeration class for Non-linear solvers. More...
 
enum  RefinementSolver { RefinementSolver::ADAPTIVE }
 Enumeration class for refinement types. More...
 
enum  SolverName {
  noSolver = 0, LINEAR, NEWTON, PICARD,
  PICARD
}
 

Functions

template<int dim, typename TYPE >
void fill_data (const FEValuesBase< dim > &fe_values, const FEVector &fe_vector, const std::vector< unsigned int > &local_dof_indices, unsigned int first_index, unsigned int n_indices, std::vector< std::vector< TYPE > > &result)
 Helper functions computing the desired data in each quadrature point of a mesh entity by calling FEValuesBase::get_function_values(), FEValuesBase::get_function_grads(), and FEValuesBase::get_function_hessians(). More...
 
template<int dim>
void fill_data (const FEValuesBase< dim > &fe_values, const FEVector &fe_vector, const std::vector< unsigned int > &local_dof_indices, unsigned int first_index, unsigned int n_indices, std::vector< std::vector< double > > &result)
 
template<int dim>
void fill_data (const FEValuesBase< dim > &fe_values, const FEVector &fe_vector, const std::vector< unsigned int > &local_dof_indices, unsigned int first_index, unsigned int n_indices, std::vector< std::vector< Tensor< 1, dim > > > &result)
 
template<int dim>
void fill_data (const FEValuesBase< dim > &fe_values, const FEVector &fe_vector, const std::vector< unsigned int > &local_dof_indices, unsigned int first_index, unsigned int n_indices, std::vector< std::vector< Tensor< 2, dim > > > &result)
 
void DAE_dummy_guess (double &x, double z[], double y[], double df[])
 A dummy guess function to be provided to COLDAE when a user wishes to provide none. More...
 
void for_to_c_matrix (int rows, int cols, double *fmat, double **cmat)
 Converts a FORTRAN 2D array to a C/C++ 2D array. More...
 
void c_to_for_matrix (int rows, int cols, double **cmat, double *fmat)
 Converts a C/C++ 2D array to a Fortran 2D array. More...
 

Detailed Description

Namespace containing the basic application framework used to loop over cells and create objects passed to FuelCellShop::Equation objects.

This namespace encapsulates all the routines that are used to generate an application. ApplicationBase and ApplicationWrapper are declared here. All applications inherit from the objects developed here.

Note
This namespace should only be modified by advanced users as all applications depend on these routines

Typedef Documentation

typedef void(* FuelCell::ApplicationCore::dfsub_ptr)(double &, double[], double[], double[])
typedef void(* FuelCell::ApplicationCore::dgsub_ptr)(int &, double[], double[])
typedef BlockVector< double > FuelCell::ApplicationCore::FEVector

The vector class used by applications.

typedef void(* FuelCell::ApplicationCore::fsub_ptr)(double &, double[], double[], double[])
typedef void(* FuelCell::ApplicationCore::gsub_ptr)(int &, double[], double &)
typedef void(* FuelCell::ApplicationCore::guess_ptr)(double &, double[], double[], double[])
typedef std::vector< MatrixBlock< FullMatrix<double> > > FuelCell::ApplicationCore::MatrixVector

The matrix vector used in the mesh loops.

typedef std::vector< Vector<double> > FuelCell::ApplicationCore::VectorVector

The std::vector of dealii::Vectors used in the mesh loops.

Enumeration Type Documentation

Enumeration class for Linear solvers.

Enumerator
UMFPACK 
CG 
ILU_GMRES 
MUMPS 
BICGSTAB 

Enumeration class for Non-linear solvers.

Enumerator
NONE 
NEWTONBASIC 
NEWTON3PP 
NEWTONLINESEARCH 
PICARD 

Enumeration class for refinement types.

Enumerator
ADAPTIVE 
Enumerator
noSolver 
LINEAR 
NEWTON 
PICARD 
PICARD 

Function Documentation

void FuelCell::ApplicationCore::c_to_for_matrix ( int  rows,
int  cols,
double **  cmat,
double *  fmat 
)

Converts a C/C++ 2D array to a Fortran 2D array.

Parameters
rowsis the number of rows in the 2D array.
colsis the number of columns in the 2D array.
cmatis the 2D C/C++ matrix.
fmatis the returned 2D FORTRAN matrix.
void FuelCell::ApplicationCore::DAE_dummy_guess ( double &  x,
double  z[],
double  y[],
double  df[] 
)

A dummy guess function to be provided to COLDAE when a user wishes to provide none.

Parameters
xis a value between a <= x <= b.
zis the initial guess for z(u(x)).
yis the initial guess for y(x).
dfis array that contains the

\[ m_{i} \]

derivative of u(x)
template<int dim, typename TYPE >
void FuelCell::ApplicationCore::fill_data ( const FEValuesBase< dim > &  fe_values,
const FEVector &  fe_vector,
const std::vector< unsigned int > &  local_dof_indices,
unsigned int  first_index,
unsigned int  n_indices,
std::vector< std::vector< TYPE > > &  result 
)
inline

Helper functions computing the desired data in each quadrature point of a mesh entity by calling FEValuesBase::get_function_values(), FEValuesBase::get_function_grads(), and FEValuesBase::get_function_hessians().

Parameters
fe_values,:The FEValues object.
fe_vector,:The global finite element function in the form of a global nodal FEVector.
local_dof_indices,:The local DoF indices associated with the current mesh entity.
first_index,:The first index in local_dof_indices to be used.
n_indices,:The number of indices in local_dof_indices to be used.
result,:The result.

The access to ith component in qth quadrature point is result[i][q].

Author
Guido Kanschat

Referenced by FuelCell::ApplicationCore::IntegrationInfo< dim, FEVALUESBASE >::fill_local_data().

Here is the caller graph for this function:

template<int dim>
void FuelCell::ApplicationCore::fill_data ( const FEValuesBase< dim > &  fe_values,
const FEVector &  fe_vector,
const std::vector< unsigned int > &  local_dof_indices,
unsigned int  first_index,
unsigned int  n_indices,
std::vector< std::vector< double > > &  result 
)
inline
template<int dim>
void FuelCell::ApplicationCore::fill_data ( const FEValuesBase< dim > &  fe_values,
const FEVector &  fe_vector,
const std::vector< unsigned int > &  local_dof_indices,
unsigned int  first_index,
unsigned int  n_indices,
std::vector< std::vector< Tensor< 1, dim > > > &  result 
)
inline
template<int dim>
void FuelCell::ApplicationCore::fill_data ( const FEValuesBase< dim > &  fe_values,
const FEVector &  fe_vector,
const std::vector< unsigned int > &  local_dof_indices,
unsigned int  first_index,
unsigned int  n_indices,
std::vector< std::vector< Tensor< 2, dim > > > &  result 
)
inline
void FuelCell::ApplicationCore::for_to_c_matrix ( int  rows,
int  cols,
double *  fmat,
double **  cmat 
)

Converts a FORTRAN 2D array to a C/C++ 2D array.

Parameters
rowsis the number of rows in the 2D array.
colsis the number of columns in the 2D array.
fmatis the 2D FORTRAN matrix.
cmatis the returned 2D C/C++ matrix.