![]() |
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.