]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
interface matrices in mg assebly for continuous elements added
authorjanssen <janssen@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 7 May 2010 14:37:24 +0000 (14:37 +0000)
committerjanssen <janssen@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 7 May 2010 14:37:24 +0000 (14:37 +0000)
git-svn-id: https://svn.dealii.org/trunk@21094 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/numerics/mesh_worker_assembler.h
deal.II/deal.II/source/multigrid/mg_tools.cc

index 4ec6764d872ab734447e13524d6469a270baf6c8..ef5bb877aefad3c8a5ee5f709415b60025b14be3 100644 (file)
@@ -565,6 +565,16 @@ namespace MeshWorker
        void initialize_fluxes(MGLevelObject<MATRIX>& flux_up,
                               MGLevelObject<MATRIX>& flux_down);
        
+                                        /**
+                                         * Initialize the matrices
+                                         * #interface_up and #interface_down
+                                         * used for local refinement
+                                         * with continuous
+                                         * Galerkin methods.
+                                         */
+
+       void initialize_interfaces(MGLevelObject<MATRIX>& interface_up,
+                              MGLevelObject<MATRIX>& interface_down);
                                         /**
                                          * Initialize the local data
                                          * in the
@@ -643,6 +653,24 @@ namespace MeshWorker
                                          * fine to coarse.
                                          */
        SmartPointer<MGLevelObject<MATRIX>,MGMatrixSimple<MATRIX> > flux_down;
+
+                                        /**
+                                         * The matrix used for face
+                                         * contributions for continuous
+                                          * elements across the
+                                         * refinement edge, coupling
+                                         * coarse to fine.
+                                         */
+       SmartPointer<MGLevelObject<MATRIX>,MGMatrixSimple<MATRIX> > interface_up;
+       
+                                        /**
+                                         * The matrix used for face
+                                         * contributions for continuous
+                                          * elements across the
+                                         * refinement edge, coupling
+                                         * fine to coarse.
+                                         */
+       SmartPointer<MGLevelObject<MATRIX>,MGMatrixSimple<MATRIX> > interface_down;
        
                                         /**
                                          * The smallest positive
@@ -927,6 +955,20 @@ namespace MeshWorker
                                          * level at refinement edges.
                                          */
        std::vector<MatrixPtr> flux_up; 
+
+                                        /**
+                                         * The interface matrix between
+                                         * the fine and the coarse
+                                         * level at refinement edges.
+                                         */
+       std::vector<MatrixPtr> interface_down;
+       
+                                        /**
+                                         * The interface matrix between
+                                         * the coarse and the fine
+                                         * level at refinement edges.
+                                         */
+       std::vector<MatrixPtr> interface_up;    
       
       /**
        * A pointer to the object containing the block structure.
@@ -1389,6 +1431,16 @@ namespace MeshWorker
     }
     
 
+    template <class MATRIX>
+    inline void
+    MGMatrixSimple<MATRIX>::initialize_interfaces(
+      MGLevelObject<MATRIX>& up, MGLevelObject<MATRIX>& down)
+    {
+      interface_up = &up;
+      interface_down = &down;
+    }
+
+
     template <class MATRIX >
     template <int dim>
     inline void
index 035e80a42c957e7f19fa609dd9923649066a9d3c..5a7ea92d23743914ffc3612fe1d70cc1c7f42171 100644 (file)
@@ -1520,7 +1520,7 @@ extract_inner_interface_dofs (const MGDoFHandler<dim,spacedim> &mg_dof_handler,
        for (unsigned int face_nr=0; face_nr<GeometryInfo<dim>::faces_per_cell; ++face_nr)
          if(cell->at_boundary(face_nr))
            for(unsigned int j=0; j<dofs_per_face; ++j)
-             if (cell_dofs[fe.face_to_cell_index(j,face_nr)] == true) //is this necessary?
+//           if (cell_dofs[fe.face_to_cell_index(j,face_nr)] == true) //is this necessary?
                boundary_cell_dofs[fe.face_to_cell_index(j,face_nr)] = true;
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.