SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE > Class Template Reference

#include <SimpleLinearEllipticAssembler.hpp>

Inheritance diagram for SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >:

Inheritance graph
[legend]
Collaboration diagram for SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >:

Collaboration graph
[legend]

List of all members.

Public Types

typedef
SimpleLinearEllipticAssembler
< ELEMENT_DIM, SPACE_DIM,
CONCRETE > 
SelfType
typedef
AbstractLinearAssembler
< ELEMENT_DIM, SPACE_DIM,
1, true, SelfType
BaseClassType

Public Member Functions

 SimpleLinearEllipticAssembler (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, AbstractLinearEllipticPde< ELEMENT_DIM, SPACE_DIM > *pPde, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, 1 > *pBoundaryConditions, unsigned numQuadPoints=2)
void PrepareForSolve ()

Static Public Attributes

static const unsigned E_DIM = ELEMENT_DIM
static const unsigned S_DIM = SPACE_DIM
static const unsigned P_DIM = 1u

Protected Member Functions

virtual c_matrix< double,
1 *(ELEMENT_DIM+1),
1 *(ELEMENT_DIM+1)> 
ComputeMatrixTerm (c_vector< double, ELEMENT_DIM+1 > &rPhi, c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &rGradPhi, ChastePoint< SPACE_DIM > &rX, c_vector< double, 1 > &rU, c_matrix< double, 1, SPACE_DIM > &rGradU, Element< ELEMENT_DIM, SPACE_DIM > *pElement)
virtual c_vector< double,
1 *(ELEMENT_DIM+1)> 
ComputeVectorTerm (c_vector< double, ELEMENT_DIM+1 > &rPhi, c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &rGradPhi, ChastePoint< SPACE_DIM > &rX, c_vector< double, 1 > &rU, c_matrix< double, 1, SPACE_DIM > &rGradU, Element< ELEMENT_DIM, SPACE_DIM > *pElement)
virtual c_vector< double,
ELEMENT_DIM > 
ComputeVectorSurfaceTerm (const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, ELEMENT_DIM > &rPhi, ChastePoint< SPACE_DIM > &rX)

Protected Attributes

AbstractLinearEllipticPde
< ELEMENT_DIM, SPACE_DIM > * 
mpEllipticPde

Friends

class TestSimpleLinearEllipticAssembler
class AbstractStaticAssembler< ELEMENT_DIM, SPACE_DIM, 1, true, SelfType >


Detailed Description

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
class SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >

SimpleLinearEllipticAssembler

Assembler for solving AbstractLinearEllipticPdes

Definition at line 50 of file SimpleLinearEllipticAssembler.hpp.


Member Typedef Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
typedef SimpleLinearEllipticAssembler<ELEMENT_DIM, SPACE_DIM, CONCRETE> SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::SelfType

This type (to save typing).

Definition at line 59 of file SimpleLinearEllipticAssembler.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
typedef AbstractLinearAssembler<ELEMENT_DIM, SPACE_DIM, 1, true, SelfType> SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::BaseClassType

Base class type (to save typing).

Definition at line 60 of file SimpleLinearEllipticAssembler.hpp.


Constructor & Destructor Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::SimpleLinearEllipticAssembler ( AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *  pMesh,
AbstractLinearEllipticPde< ELEMENT_DIM, SPACE_DIM > *  pPde,
BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, 1 > *  pBoundaryConditions,
unsigned  numQuadPoints = 2 
) [inline]

Constructor stores the mesh, pde and boundary conditons, and calls base constructor.

Parameters:
pMesh pointer to the mesh
pPde pointer to the PDE
pBoundaryConditions pointer to the boundary conditions
numQuadPoints number of quadrature points (defaults to 2)

Definition at line 155 of file SimpleLinearEllipticAssembler.hpp.

References SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::mpEllipticPde, AbstractAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::SetBoundaryConditionsContainer(), and AbstractStaticAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, NON_HEART, SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE > >::SetMesh().


Member Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
virtual c_matrix<double, 1*(ELEMENT_DIM+1), 1*(ELEMENT_DIM+1)> SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::ComputeMatrixTerm ( c_vector< double, ELEMENT_DIM+1 > &  rPhi,
c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &  rGradPhi,
ChastePoint< SPACE_DIM > &  rX,
c_vector< double, 1 > &  rU,
c_matrix< double, 1, SPACE_DIM > &  rGradU,
Element< ELEMENT_DIM, SPACE_DIM > *  pElement 
) [inline, protected, virtual]

The term to be added to the element stiffness matrix:

grad_phi[row] . ( pde_diffusion_term * grad_phi[col])

Parameters:
rPhi The basis functions, rPhi(i) = phi_i, i=1..numBases
rGradPhi Basis gradients, rGradPhi(i,j) = d(phi_j)/d(X_i)
rX The point in space
rU The unknown as a vector, u(i) = u_i
Todo:
should this be rU?
Parameters:
rGradU The gradient of the unknown as a matrix, rGradU(i,j) = d(u_i)/d(X_j)
pElement Pointer to the element

Definition at line 81 of file SimpleLinearEllipticAssembler.hpp.

References AbstractLinearEllipticPde< ELEM_DIM, SPACE_DIM >::ComputeDiffusionTerm(), AbstractLinearEllipticPde< ELEM_DIM, SPACE_DIM >::ComputeLinearInUCoeffInSourceTerm(), and SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::mpEllipticPde.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
virtual c_vector<double,1*(ELEMENT_DIM+1)> SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::ComputeVectorTerm ( c_vector< double, ELEMENT_DIM+1 > &  rPhi,
c_matrix< double, SPACE_DIM, ELEMENT_DIM+1 > &  rGradPhi,
ChastePoint< SPACE_DIM > &  rX,
c_vector< double, 1 > &  rU,
c_matrix< double, 1, SPACE_DIM > &  rGradU,
Element< ELEMENT_DIM, SPACE_DIM > *  pElement 
) [inline, protected, virtual]

The term arising from boundary conditions to be added to the element stiffness vector.

Parameters:
rPhi The basis functions, rPhi(i) = phi_i, i=1..numBases
rGradPhi Basis gradients, rGradPhi(i,j) = d(phi_j)/d(X_i)
rX The point in space
rU The unknown as a vector, u(i) = u_i
rGradU The gradient of the unknown as a matrix, rGradU(i,j) = d(u_i)/d(X_j)
pElement Pointer to the element

Definition at line 114 of file SimpleLinearEllipticAssembler.hpp.

References AbstractLinearEllipticPde< ELEM_DIM, SPACE_DIM >::ComputeConstantInUSourceTerm(), and SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::mpEllipticPde.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
virtual c_vector<double, ELEMENT_DIM> SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::ComputeVectorSurfaceTerm ( const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &  rSurfaceElement,
c_vector< double, ELEMENT_DIM > &  rPhi,
ChastePoint< SPACE_DIM > &  rX 
) [inline, protected, virtual]

This method returns the vector to be added to element stiffness vector for a given gauss point in BoundaryElement. The arguments are the bases, x and current solution computed at the Gauss point. The returned vector will be multiplied by the gauss weight and jacobian determinent and added to the element stiffness matrix (see AssembleOnElement()).

Parameters:
rSurfaceElement the element which is being considered.
rPhi The basis functions, rPhi(i) = phi_i, i=1..numBases
rX The point in space

Implements AbstractAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >.

Definition at line 136 of file SimpleLinearEllipticAssembler.hpp.

References BoundaryConditionsContainer< ELEM_DIM, SPACE_DIM, PROBLEM_DIM >::GetNeumannBCValue(), and AbstractAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpBoundaryConditions.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
void SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::PrepareForSolve (  )  [inline, virtual]


Friends And Related Function Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
friend class AbstractStaticAssembler< ELEMENT_DIM, SPACE_DIM, 1, true, SelfType > [friend]

Allow the AbstractStaticAssembler to call our private/protected methods using static polymorphism.

Definition at line 62 of file SimpleLinearEllipticAssembler.hpp.


Member Data Documentation

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
const unsigned SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::E_DIM = ELEMENT_DIM [static]

The element dimension (to save typing).

Definition at line 53 of file SimpleLinearEllipticAssembler.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
const unsigned SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::S_DIM = SPACE_DIM [static]

The space dimension (to save typing).

Definition at line 54 of file SimpleLinearEllipticAssembler.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
const unsigned SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::P_DIM = 1u [static]

The problem dimension (to save typing).

Definition at line 55 of file SimpleLinearEllipticAssembler.hpp.

template<unsigned ELEMENT_DIM, unsigned SPACE_DIM, class CONCRETE = boost::mpl::void_>
AbstractLinearEllipticPde<ELEMENT_DIM,SPACE_DIM>* SimpleLinearEllipticAssembler< ELEMENT_DIM, SPACE_DIM, CONCRETE >::mpEllipticPde [protected]


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

Generated on Tue Aug 4 16:11:43 2009 for Chaste by  doxygen 1.5.5