ElasticFEM Class Reference

#include <elasticfem.h>

Collaboration diagram for ElasticFEM:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ElasticFEM (OrthoMesh &mesh, VecDouble &cK, double &fYoung, double &fPoisson, Function3D &fD, Function3D &fN)
virtual void iterate (TransportBase &trans)
virtual void printOutput ()
virtual void getVelocitiesAtFaces (Matrix &M)
virtual ~ElasticFEM ()

Private Attributes

OrthoMeshm_mesh
VecDoublem_cK
IsotropicElasticEqVar m_eqvar
SparsityPattern m_sparsity
SparseMatrix< double > m_M
VecDouble m_vRHS
VecDouble m_sol
SparseDirectUMFPACK solveA
unsigned m_debugLevel
MapIntDouble dirichlet_bc_map
Function3Dm_fN

Detailed Description

This class implements the Biot problem in 3D

Definition at line 13 of file elasticfem.h.


Constructor & Destructor Documentation

ElasticFEM::ElasticFEM ( OrthoMesh mesh,
VecDouble cK,
double &  fYoung,
double &  fPoisson,
Function3D fD,
Function3D fN 
)

Definition at line 7 of file elasticfem.cpp.

00008   :m_mesh(mesh),m_cK(cK),m_eqvar(mesh,cK,fYoung,fPoisson,fD,fN),m_fN(fN)
00009  {
00010   AssemblyOrthoMeshSystem<IsotropicElasticEqVar> assembler;
00011   m_vRHS.reinit(m_eqvar.n_dofs());
00012   m_sol.reinit(m_eqvar.n_dofs());
00013   m_sparsity.reinit(m_eqvar.n_dofs(),m_eqvar.n_dofs(),m_eqvar.n_max_dof_coupling());
00014   assembler.buildSparsityPattern(m_sparsity,m_mesh,m_eqvar);
00015   m_sparsity.compress();
00016   m_M.reinit(m_sparsity);
00017   assembler.setBoundaryValue(m_mesh,m_eqvar,fD,dirichlet_bc_map);
00018 
00019 }

virtual ElasticFEM::~ElasticFEM (  )  [inline, virtual]

Definition at line 35 of file elasticfem.h.

00035 {}


Member Function Documentation

void ElasticFEM::getVelocitiesAtFaces ( Matrix M  )  [virtual]

Definition at line 55 of file elasticfem.cpp.

00056 {
00057   throw new Exception("ElasticFEM::getVelocitiesAtFaces Not implemented for this class\n");
00058 }

void ElasticFEM::iterate ( TransportBase trans  )  [virtual]

Definition at line 23 of file elasticfem.cpp.

00024 {
00025   AssemblyOrthoMeshSystem<IsotropicElasticEqVar> assembler;
00026   assembler.buildGlobalMatrix(m_M,m_mesh, m_eqvar);
00027   assembler.buildGlobalRhs(m_vRHS,m_mesh,m_eqvar);
00028   assembler.applyBoundaryValue(dirichlet_bc_map,m_M);
00029   assembler.applyBoundaryValue(dirichlet_bc_map,m_vRHS);
00030   //assembler.addNeummanCondition(m_mesh,m_vRHS,m_eqvar,m_fN);
00031   m_sol=m_vRHS;
00032   m_sol.print();
00033   solveA.factorize(m_M);
00034   solveA.solve(m_sol);
00035   
00036 }

void ElasticFEM::printOutput (  )  [virtual]

Definition at line 37 of file elasticfem.cpp.

00038 {
00039   if (m_debugLevel > 0)
00040   {
00041     HDF5OrthoWriter &hdf5 = HDF5OrthoWriter::getHDF5OrthoWriter(); 
00042     hdf5.writeScalarField(m_sol,"P");
00043 
00044      GnuPlotAnim &plot = GnuPlotAnim::getGnuPlotAnim();
00045      
00046      //char str[100];
00047      //printf("Mass: %g\n",m_mesh.getIntegralAtCells(m_cValues));
00048      plot.set("yrange","[0:1]");
00049      plot.plotVerticeValuesAtFixedZ(m_mesh,m_sol,"Sc","with lines",5);
00050      plot.NextScene();
00051   }
00052 }


Member Data Documentation

Definition at line 24 of file elasticfem.h.

Definition at line 17 of file elasticfem.h.

unsigned ElasticFEM::m_debugLevel [private]

Definition at line 23 of file elasticfem.h.

Definition at line 18 of file elasticfem.h.

Definition at line 25 of file elasticfem.h.

SparseMatrix<double> ElasticFEM::m_M [private]

Definition at line 20 of file elasticfem.h.

Definition at line 16 of file elasticfem.h.

Definition at line 21 of file elasticfem.h.

SparsityPattern ElasticFEM::m_sparsity [private]

Definition at line 19 of file elasticfem.h.

Definition at line 21 of file elasticfem.h.

SparseDirectUMFPACK ElasticFEM::solveA [private]

Definition at line 22 of file elasticfem.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Sun Apr 8 23:13:02 2012 for CO2INJECTION by  doxygen 1.6.3