Diffpack Documentation


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

MxFEM Class Reference

Extension of class FEM to mixed methods, p-FEM etc. More...

#include <MxFEM.h>

Inheritance diagram for MxFEM::

FEM SimCase HandleId List of all members.

Public Methods

 MxFEM ()
 ~MxFEM ()
virtual void makeSystemMx (DegFreeFE &dof, LinEqAdmFE &lineq, bool compute_A=true, bool compute_RHS=true)
virtual void makeSystemMx (DegFreeFE &dof, LinEqAdmFE &lineq, FieldsFE &all_unknowns, int itgrule_manager, bool compute_A=true, bool compute_RHS=true)
virtual void calcElmMatVecMx (int e, ElmMatVec &elmat, MxFiniteElement &mfe)
virtual void numItgOverElmMx (ElmMatVec &elmat, MxFiniteElement &mfe)
virtual void integrandsMx (ElmMatVec &elmat, const MxFiniteElement &mfe)
virtual void numItgOverSideMx (int side, int boind, ElmMatVec &elmat, MxFiniteElement &mfe)
virtual void integrands4sideMx (int side, int boind, ElmMatVec &elmat, const MxFiniteElement &mfe)
virtual void modify4constraints (DegFreeFE &dof, Matrix(NUMT) &A, Vector(NUMT) &b)
virtual void makeSystemMx (DegFreeFE &, MxIntegrandCalc *, Matrix(NUMT))&
virtual void makeSystemMx (DegFreeFE &, MxElmMatVecCalc &, MxIntegrandCalc *, Vector(NUMT))&
virtual void makeSystemMx (DegFreeFE &, Vector(NUMT) &, int)
virtual void makeSystemMx (DegFreeFE &, MxElmMatVecCalc &, MxIntegrandCalc *, Vector(NUMT) &, FieldsFE &all_unknowns, int)
virtual void makeSystemMx (DegFreeFE &dof, MxIntegrandCalc *integrand, MxElmMatVecCalc &emv, Matrix(NUMT) &A, Vector(NUMT) &rhs)
virtual void makeSystemMx (DegFreeFE &dof, FieldsFE &all_unknowns, MxIntegrandCalc *integrand, MxElmMatVecCalc &emv, Matrix(NUMT) &A, Vector(NUMT) &rhs)
virtual void makeSystemMx (DegFreeFE &dof, FieldsFE &all_unknowns, MxIntegrandCalc *integrand, MxElmMatVecCalc &emv, Matrix(NUMT) &A)
virtual void makeSystemMx (DegFreeFE &dof, MxIntegrandCalc *integrand, MxElmMatVecCalc &emv, Matrix(NUMT) &A)
virtual void calcElmMatVecMx (int, ElmMatVec &, MxFiniteElement &, MxIntegrandCalc *)
virtual void numItgOverElmMx (ElmMatVec &, MxFiniteElement &, MxIntegrandCalc *)
virtual void numItgOverSideMx (int, int, ElmMatVec &, MxFiniteElement &, MxIntegrandCalc &)

Protected Attributes

MxFiniteElement finite_elms

Detailed Description

Extension of class FEM to mixed methods, p-FEM etc.

NAME: MxFEM - Extension of class FEM to mixed methods, p-FEM etc

DESCRIPTION:

The "MxFEM" class provides many of the same functions as class "FEM", but with extensions for mixed finite elements. That is, "MxFEM" can be used when there are several sets of basis functions in the finite element equations.

Class "FEM" handles isoparametric elements, where class "MxFEM" 'must' be used if there are non-isoparametric elements in the mesh.


Constructor & Destructor Documentation

MxFEM::MxFEM ( ) [inline]
 

MxFEM::~MxFEM ( ) [inline]
 


Member Function Documentation

void MxFEM::calcElmMatVecMx ( int,
ElmMatVec &,
MxFiniteElement &,
MxIntegrandCalc * ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::calcElmMatVecMx ( int e,
ElmMatVec & elmat,
MxFiniteElement & mfe ) [virtual]
 

calculates element matrix and vectors. The function is very similar to the one in class "FEM", the main difference being different types of arguments. The default implementation in class "MxFEM" is suitable for volume integration; you to provide your own routine in the simulator class if you need integration over the sides of some elements.

void MxFEM::integrands4sideMx ( int side,
int boind,
ElmMatVec & elmat,
const MxFiniteElement & mfe ) [virtual]
 

samples the integrands in surface integrals in the weak form. Needed if weak form has line/surface integrals in addition to area/volume integrals. To be implemented in the derived simulator class.

void MxFEM::integrandsMx ( ElmMatVec & elmat,
const MxFiniteElement & mfe ) [virtual]
 

samples the integrands in volume integrals in the weak form. Must be provided by the derived simulator class unless this latter class implements "calcElmMatVecMx" and fills all entries in the element matrix and vector by known expressions (typically formulas arising from symbolic integration).

void MxFEM::makeSystemMx ( DegFreeFE & dof,
MxIntegrandCalc * integrand,
MxElmMatVecCalc & emv,
Matrix(NUMT) & A ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE & dof,
FieldsFE & all_unknowns,
MxIntegrandCalc * integrand,
MxElmMatVecCalc & emv,
Matrix(NUMT) & A ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE & dof,
FieldsFE & all_unknowns,
MxIntegrandCalc * integrand,
MxElmMatVecCalc & emv,
Matrix(NUMT) & A,
Vector(NUMT) & rhs ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE & dof,
MxIntegrandCalc * integrand,
MxElmMatVecCalc & emv,
Matrix(NUMT) & A,
Vector(NUMT) & rhs ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE &,
MxElmMatVecCalc &,
MxIntegrandCalc *,
Vector(NUMT) &,
FieldsFE & all_unknowns,
int ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE &,
Vector(NUMT) &,
int ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE &,
MxElmMatVecCalc &,
MxIntegrandCalc *,
Vector(NUMT) ) [virtual]
 

void MxFEM::makeSystemMx ( DegFreeFE &,
MxIntegrandCalc *,
Matrix(NUMT) ) [virtual]
 

void MxFEM::makeSystemMx ( DegFreeFE & dof,
LinEqAdmFE & lineq,
FieldsFE & all_unknowns,
int itgrule_manager,
bool compute_A = true,
bool compute_RHS = true ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::makeSystemMx ( DegFreeFE & dof,
LinEqAdmFE & lineq,
bool compute_A = true,
bool compute_RHS = true ) [virtual]
 

these are used instead of "makeSystem" when the simulator employs non-isoparametric elements in the mesh. There are numerous overloaded versions.

The version with the same arguments (dof, lineq, compute_A, compute_RHS) as the basic "FEM makeSystem" routine, is just a help function for testing that a mixed finite element simulator can work with a plain isoparametric mesh.

The allround "makeSystemMx" function takes a "DegFreeFE" object and a "LinEqAdmFE" object as usuall, and in addition has "FieldsFE", int, and two bool arguments. The field argument contains all scalar (or vector component) fields that represent the primary unknowns in the system of PDEs that enter the current linear (or nonlinear) system. In a mixed finite element method, one needs to access all the types of basis functions employed by the various unknowns, and this information is contained in "BasisFuncGrid" objects. These objects are available through "FieldFE" objects only, and a collection of "FieldFE" objects are therefore needed in a mixed finite element assembly process. The "itgrule_manager" parameter indicates which of the involved element types that should govern the numerical integration over the element. Since the element types is reflected by "BasisFuncGrid" objects, available through the "all_unknowns" argument, the value of "itgrule_manager" corresponds to an index in the "all_unknowns" vector. As an example, consider a flow problem with three velocity components and the pressure as primary unknowns, collected in a "FieldsFE" field in the mentioned order. If the geometries are 9-node 2D elements, the velocities are also 9-node elements, but the pressure employs a 4-node elements, it is reasonable to let the velocity elements (which are of the highest order) govern the numerical integration. In this case we should therefore let "itgrule_manager" be 1 (or 2 or 3).

Other overloaded versions take integrand functors as arguments. These functions are similar to those in class "FEM". If the "FieldsFE" argument is missing, the "makeSystemMx" function applies the "FieldsFE" member in the "DegFreeFE" object (these two fields are often the same, but having an additional "FieldsFE" argument offers increased flexibility when assembling block matrices).

void MxFEM::modify4constraints ( DegFreeFE & dof,
Matrix(NUMT) & A,
Vector(NUMT) & b ) [virtual]
 

implements constraints for irregular nodes in refined "GridFEAdB" grids. NOTE: This function is in active, meaning that you cannot combine "GridFEAdB" grids with mixed finite elements!

void MxFEM::numItgOverElmMx ( ElmMatVec &,
MxFiniteElement &,
MxIntegrandCalc * ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::numItgOverElmMx ( ElmMatVec & elmat,
MxFiniteElement & mfe ) [virtual]
 

numerical integration over the element. Very similar to the "FEM numItgOverElm" version (different argument types only). Calls "integrandsMx" for each integration point.

void MxFEM::numItgOverSideMx ( int,
int,
ElmMatVec &,
MxFiniteElement &,
MxIntegrandCalc & ) [virtual]
 

See documentation of one of the overloaded functions.

void MxFEM::numItgOverSideMx ( int side,
int boind,
ElmMatVec & elmat,
MxFiniteElement & mfe ) [virtual]
 

numerical integration over a side of the element. Calls "integrands4sideMx" for each integration point on a side.


Member Data Documentation

MxFiniteElement MxFEM::finite_elms [protected]
 


The documentation for this class was generated from the following file:
Copyright © 2003 inuTech GmbH. All rights reserved.