#include <elasticfem.h>
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 | |
OrthoMesh & | m_mesh |
VecDouble & | m_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 |
Function3D & | m_fN |
This class implements the Biot problem in 3D
Definition at line 13 of file elasticfem.h.
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.
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 }
MapIntDouble ElasticFEM::dirichlet_bc_map [private] |
Definition at line 24 of file elasticfem.h.
VecDouble& ElasticFEM::m_cK [private] |
Definition at line 17 of file elasticfem.h.
unsigned ElasticFEM::m_debugLevel [private] |
Definition at line 23 of file elasticfem.h.
IsotropicElasticEqVar ElasticFEM::m_eqvar [private] |
Definition at line 18 of file elasticfem.h.
Function3D& ElasticFEM::m_fN [private] |
Definition at line 25 of file elasticfem.h.
SparseMatrix<double> ElasticFEM::m_M [private] |
Definition at line 20 of file elasticfem.h.
OrthoMesh& ElasticFEM::m_mesh [private] |
Definition at line 16 of file elasticfem.h.
VecDouble ElasticFEM::m_sol [private] |
Definition at line 21 of file elasticfem.h.
SparsityPattern ElasticFEM::m_sparsity [private] |
Definition at line 19 of file elasticfem.h.
VecDouble ElasticFEM::m_vRHS [private] |
Definition at line 21 of file elasticfem.h.
SparseDirectUMFPACK ElasticFEM::solveA [private] |
Definition at line 22 of file elasticfem.h.