/[escript]/branches/ripleygmg_from_3668/ripley/src/Rectangle.h
ViewVC logotype

Diff of /branches/ripleygmg_from_3668/ripley/src/Rectangle.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3704 by caltinay, Mon Dec 5 01:59:08 2011 UTC revision 3764 by caltinay, Tue Jan 10 06:31:15 2012 UTC
# Line 1  Line 1 
1    
2  /*******************************************************  /*******************************************************
3  *  *
4  * Copyright (c) 2003-2011 by University of Queensland  * Copyright (c) 2003-2012 by University of Queensland
5  * Earth Systems Science Computational Center (ESSCC)  * Earth Systems Science Computational Center (ESSCC)
6  * http://www.uq.edu.au/esscc  * http://www.uq.edu.au/esscc
7  *  *
# Line 16  Line 16 
16    
17  #include <ripley/RipleyDomain.h>  #include <ripley/RipleyDomain.h>
18    
19  struct Paso_Pattern;  struct Paso_Connector;
20    
21  namespace ripley {  namespace ripley {
22    
# Line 83  public: Line 83  public:
83    
84      /**      /**
85         \brief         \brief
86         copies the gradient of 'in' into 'out'. The actual function space to be         copies the surface normals at data points into out. The actual function
87         considered for the gradient is defined by 'in'. Both arguments have to         space to be considered is defined by out. out has to be defined on this
88         be defined on this domain.         domain.
89      */      */
90      RIPLEY_DLL_API      RIPLEY_DLL_API
91      virtual void setToGradient(escript::Data& out, const escript::Data& in) const;      virtual void setToNormal(escript::Data& out) const;
92    
93        /**
94           \brief
95           copies the size of samples into out. The actual function space to be
96           considered is defined by out. out has to be defined on this domain.
97        */
98        RIPLEY_DLL_API
99        virtual void setToSize(escript::Data& out) const;
100    
101      /**      /**
102         \brief         \brief
# Line 142  public: Line 150  public:
150      RIPLEY_DLL_API      RIPLEY_DLL_API
151      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;
152    
     /**  
        \brief  
        adds a PDE onto the stiffness matrix mat and rhs  
     */  
     RIPLEY_DLL_API  
     virtual void addPDEToSystem(escript::AbstractSystemMatrix& mat,  
             escript::Data& rhs, const escript::Data& A, const escript::Data& B,  
             const escript::Data& C, const escript::Data& D,  
             const escript::Data& X, const escript::Data& Y,  
             const escript::Data& d, const escript::Data& y,  
             const escript::Data& d_contact, const escript::Data& y_contact,  
             const escript::Data& d_dirac, const escript::Data& y_dirac) const;  
   
153  protected:  protected:
154      virtual dim_t getNumNodes() const { return m_N0*m_N1; }      virtual dim_t getNumNodes() const { return m_N0*m_N1; }
155      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }
156      virtual dim_t getNumFaceElements() const;      virtual dim_t getNumFaceElements() const;
157        virtual dim_t getNumDOF() const;
158        virtual dim_t insertNeighbourNodes(IndexVector& index, index_t node) const;
159      virtual void assembleCoordinates(escript::Data& arg) const;      virtual void assembleCoordinates(escript::Data& arg) const;
160        virtual void assembleGradient(escript::Data& out, escript::Data& in) const;
161        virtual void assembleIntegrate(std::vector<double>& integrals, escript::Data& arg) const;
162        virtual void assemblePDESingle(Paso_SystemMatrix* mat, escript::Data& rhs,
163                const escript::Data& A, const escript::Data& B,
164                const escript::Data& C, const escript::Data& D,
165                const escript::Data& X, const escript::Data& Y,
166                const escript::Data& d, const escript::Data& y) const;
167        virtual void assemblePDESingleReduced(Paso_SystemMatrix* mat,
168                escript::Data& rhs, const escript::Data& A, const escript::Data& B,
169                const escript::Data& C, const escript::Data& D,
170                const escript::Data& X, const escript::Data& Y,
171                const escript::Data& d, const escript::Data& y) const;
172        virtual void assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,
173                const escript::Data& A, const escript::Data& B,
174                const escript::Data& C, const escript::Data& D,
175                const escript::Data& X, const escript::Data& Y,
176                const escript::Data& d, const escript::Data& y) const;
177        virtual void assemblePDESystemReduced(Paso_SystemMatrix* mat,
178                escript::Data& rhs, const escript::Data& A, const escript::Data& B,
179                const escript::Data& C, const escript::Data& D,
180                const escript::Data& X, const escript::Data& Y,
181                const escript::Data& d, const escript::Data& y) const;
182      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;
183      virtual void interpolateNodesOnElements(escript::Data& out, escript::Data& in) const;      virtual void interpolateNodesOnElements(escript::Data& out,
184      virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in) const;                                         escript::Data& in, bool reduced) const;
185        virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,
186                                             bool reduced) const;
187        virtual void nodesToDOF(escript::Data& out, escript::Data& in) const;
188        virtual void dofToNodes(escript::Data& out, escript::Data& in) const;
189    
190  private:  private:
191      void populateSampleIds();      void populateSampleIds();
192      int insertNeighbours(IndexVector& index, index_t node) const;      void createPattern();
     void generateCouplePatterns(Paso_Pattern** colPattern,  
                                 Paso_Pattern** rowPattern) const;  
193    
194      /// total number of elements in each dimension      /// total number of elements in each dimension
195      dim_t m_gNE0, m_gNE1;      dim_t m_gNE0, m_gNE1;
# Line 179  private: Line 200  private:
200      /// number of spatial subdivisions      /// number of spatial subdivisions
201      int m_NX, m_NY;      int m_NX, m_NY;
202    
203      /// number of elements for this rank in each dimension      /// number of elements for this rank in each dimension including shared
204      dim_t m_NE0, m_NE1;      dim_t m_NE0, m_NE1;
205    
206        /// number of own elements for this rank in each dimension
207        dim_t m_ownNE0, m_ownNE1;
208    
209      /// number of nodes for this rank in each dimension      /// number of nodes for this rank in each dimension
210      dim_t m_N0, m_N1;      dim_t m_N0, m_N1;
211    
# Line 193  private: Line 217  private:
217      IndexVector m_faceOffset;      IndexVector m_faceOffset;
218    
219      /// vector of sample reference identifiers      /// vector of sample reference identifiers
220        IndexVector m_dofId;
221      IndexVector m_nodeId;      IndexVector m_nodeId;
222      IndexVector m_elementId;      IndexVector m_elementId;
223      IndexVector m_faceId;      IndexVector m_faceId;
224    
225      // vector with first node id on each rank      // vector with first node id on each rank
226      IndexVector m_nodeDistribution;      IndexVector m_nodeDistribution;
227    
228        // vector that maps each node to a DOF index (used for the coupler)
229        IndexVector m_dofMap;
230    
231        // Paso connector used by the system matrix and to interpolate DOF to
232        // nodes
233        Paso_Connector* m_connector;
234    
235        // the Paso System Matrix pattern
236        Paso_SystemMatrixPattern* m_pattern;
237  };  };
238    
239  } // end of namespace ripley  } // end of namespace ripley

Legend:
Removed from v.3704  
changed lines
  Added in v.3764

  ViewVC Help
Powered by ViewVC 1.1.26