Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

FEM.h

Go to the documentation of this file.
00001 // Copyright (C) 2003 Johan Hoffman and Anders Logg.
00002 // Licensed under the GNU GPL Version 2.
00003 //
00004 // Modified by Fredrik Bengzon and Johan Jansson, 2004.
00005 
00006 #ifndef __FEM_H
00007 #define __FEM_H
00008 
00009 #include <dolfin/FiniteElement.h>
00010 
00011 namespace dolfin {
00012 
00013   class PDE;
00014   class Mesh;
00015   class Matrix;
00016   class Vector;
00017   class Map;
00018   class Quadrature;
00019   class FiniteElementMethod;
00020   
00025 
00026   class FEM
00027   {
00028   public:
00029     
00031     static void assemble(PDE& pde, Mesh& mesh, Matrix& A, Vector& b);
00032     
00034     static void assemble(PDE& pde, Mesh& mesh, Matrix& A);
00035     
00037     static void assemble(PDE& pde, Mesh& mesh, Vector& b);
00038     
00040     static void assemble(PDE& pde, Mesh& mesh, Matrix& A, Vector& b,
00041                          FiniteElementMethod& method);
00042 
00044     static void assemble(PDE& pde, Mesh& mesh, Matrix& A,
00045                          FiniteElementMethod& method);
00046 
00048     static void assemble(PDE& pde, Mesh& mesh, Vector& b,
00049                          FiniteElementMethod& method);
00050 
00051   private:
00052 
00053     // Assemble matrix
00054     static void assemble(PDE& pde, Mesh& mesh, Matrix& A,
00055                          FiniteElement::Vector& element, Map& map,
00056                          Quadrature& interior_quadrature, 
00057                          Quadrature& boundary_quadrature);
00058                              
00060     static void assembleInterior(PDE& pde, Mesh& mesh, Matrix& A, 
00061                                  FiniteElement::Vector& element, Map& map,
00062                                  Quadrature& interior_quadrature, 
00063                                  Quadrature& boundary_quadrature);
00064                                 
00066     static void assembleBoundary(PDE& pde, Mesh& mesh, Matrix& A,
00067                                  FiniteElement::Vector& element, Map& map,
00068                                  Quadrature& interior_quadrature, 
00069                                  Quadrature& boundary_quadrature);
00070 
00072     static void assembleBoundaryTri(PDE& pde, Mesh& mesh, Matrix& A,
00073                                     FiniteElement::Vector& element, Map& map,
00074                                     Quadrature& interior_quadrature, 
00075                                     Quadrature& boundary_quadrature);
00076 
00078     static void assembleBoundaryTet(PDE& pde, Mesh& mesh, Matrix& A,
00079                                     FiniteElement::Vector& element, Map& map,
00080                                     Quadrature& interior_quadrature, 
00081                                     Quadrature& boundary_quadrature);
00082 
00083     // Assemble vector
00084     static void assemble(PDE& pde, Mesh& mesh, Vector& b,
00085                          FiniteElement::Vector& element, Map& map,
00086                          Quadrature& interior_quadrature, 
00087                          Quadrature& boundary_quadrature);
00088 
00090     static void assembleInterior(PDE& pde, Mesh& mesh, Vector& b,
00091                                  FiniteElement::Vector& element, Map& map,
00092                                  Quadrature& interior_quadrature, 
00093                                  Quadrature& boundary_quadrature);
00094       
00096     static void assembleBoundary(PDE& pde, Mesh& mesh, Vector& b,
00097                                  FiniteElement::Vector& element, Map& map,
00098                                  Quadrature& interior_quadrature, 
00099                                  Quadrature& boundary_quadrature);
00100 
00102     static void assembleBoundaryTri(PDE& pde, Mesh& mesh, Vector& b,
00103                                     FiniteElement::Vector& element, Map& map,
00104                                     Quadrature& interior_quadrature, 
00105                                     Quadrature& boundary_quadrature);
00106 
00108     static void assembleBoundaryTet(PDE& pde, Mesh& mesh, Vector& b,
00109                                     FiniteElement::Vector& element, Map& map,
00110                                     Quadrature& interior_quadrature, 
00111                                     Quadrature& boundary_quadrature);
00112     
00113     // Set boundary conditions for matrix
00114     static void setBC(Mesh& mesh, Matrix& A, FiniteElement::Vector& element);
00115 
00116     // Set boundary conditions for vector
00117     static void setBC(Mesh& mesh, Vector& b, FiniteElement::Vector& element);
00118 
00119     // Initialize matrix
00120     static void alloc(Matrix& A, Mesh& mesh, FiniteElement::Vector& element);
00121 
00122     // Initialize vector
00123     static void alloc(Vector& b, Mesh& mesh, FiniteElement::Vector& element);
00124 
00125   };
00126 
00127 }
00128 
00129 #endif


Documentation automatically generated with Doxygen on 10 Sep 2004.