/[escript]/trunk/ripley/src/Rectangle.h
ViewVC logotype

Diff of /trunk/ripley/src/Rectangle.h

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

revision 3711 by caltinay, Tue Dec 6 00:24:43 2011 UTC revision 3773 by caltinay, Wed Jan 18 04:27:53 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 136  public: Line 144  public:
144    
145      /**      /**
146         \brief         \brief
147         returns the first coordinate value and the node spacing along given         returns the number of spatial subdivisions in each dimension
        dimension as a pair  
148      */      */
149      RIPLEY_DLL_API      RIPLEY_DLL_API
150      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;      virtual IndexVector getNumSubdivisionsPerDim() const;
151    
152      /**      /**
153         \brief         \brief
154         adds a PDE onto the stiffness matrix mat and rhs         returns the first coordinate value and the node spacing along given
155           dimension as a pair
156      */      */
157      RIPLEY_DLL_API      RIPLEY_DLL_API
158      virtual void addPDEToSystem(escript::AbstractSystemMatrix& mat,      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;
             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;  
159    
160  protected:  protected:
161      virtual dim_t getNumNodes() const { return m_N0*m_N1; }      virtual dim_t getNumNodes() const { return m_N0*m_N1; }
162      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }
163      virtual dim_t getNumFaceElements() const;      virtual dim_t getNumFaceElements() const;
164        virtual dim_t getNumDOF() const;
165        virtual dim_t insertNeighbourNodes(IndexVector& index, index_t node) const;
166      virtual void assembleCoordinates(escript::Data& arg) const;      virtual void assembleCoordinates(escript::Data& arg) const;
167        virtual void assembleGradient(escript::Data& out, escript::Data& in) const;
168        virtual void assembleIntegrate(std::vector<double>& integrals, escript::Data& arg) const;
169        virtual void assemblePDESingle(Paso_SystemMatrix* mat, escript::Data& rhs,
170                const escript::Data& A, const escript::Data& B,
171                const escript::Data& C, const escript::Data& D,
172                const escript::Data& X, const escript::Data& Y) const;
173        virtual void assemblePDEBoundarySingle(Paso_SystemMatrix* mat,
174                escript::Data& rhs, const escript::Data& a, const escript::Data& b,
175                const escript::Data& c, const escript::Data& d,
176                const escript::Data& x, const escript::Data& y) const;
177        virtual void assemblePDESingleReduced(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) const;
181        virtual void assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,
182                escript::Data& rhs, const escript::Data& a, const escript::Data& b,
183                const escript::Data& c, const escript::Data& d,
184                const escript::Data& x, const escript::Data& y) const;
185        virtual void assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,
186                const escript::Data& A, const escript::Data& B,
187                const escript::Data& C, const escript::Data& D,
188                const escript::Data& X, const escript::Data& Y) const;
189        virtual void assemblePDEBoundarySystem(Paso_SystemMatrix* mat,
190                escript::Data& rhs, const escript::Data& a, const escript::Data& b,
191                const escript::Data& c, const escript::Data& d,
192                const escript::Data& x, const escript::Data& y) const;
193        virtual void assemblePDESystemReduced(Paso_SystemMatrix* mat,
194                escript::Data& rhs, const escript::Data& A, const escript::Data& B,
195                const escript::Data& C, const escript::Data& D,
196                const escript::Data& X, const escript::Data& Y) const;
197        virtual void assemblePDEBoundarySystemReduced(Paso_SystemMatrix* mat,
198                escript::Data& rhs, const escript::Data& a, const escript::Data& b,
199                const escript::Data& c, const escript::Data& d,
200                const escript::Data& x, const escript::Data& y) const;
201      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;
202      virtual void interpolateNodesOnElements(escript::Data& out,      virtual void interpolateNodesOnElements(escript::Data& out,
203                                         escript::Data& in, bool reduced) const;                                         escript::Data& in, bool reduced) const;
204      virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,      virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,
205                                           bool reduced) const;                                           bool reduced) const;
206        virtual void nodesToDOF(escript::Data& out, escript::Data& in) const;
207        virtual void dofToNodes(escript::Data& out, escript::Data& in) const;
208    
209  private:  private:
210      void populateSampleIds();      void populateSampleIds();
211      int insertNeighbours(IndexVector& index, index_t node) const;      void createPattern();
     void generateCouplePatterns(Paso_Pattern** colPattern,  
                                 Paso_Pattern** rowPattern) const;  
212    
213      /// total number of elements in each dimension      /// total number of elements in each dimension
214      dim_t m_gNE0, m_gNE1;      dim_t m_gNE0, m_gNE1;
# Line 181  private: Line 219  private:
219      /// number of spatial subdivisions      /// number of spatial subdivisions
220      int m_NX, m_NY;      int m_NX, m_NY;
221    
222      /// number of elements for this rank in each dimension      /// number of elements for this rank in each dimension including shared
223      dim_t m_NE0, m_NE1;      dim_t m_NE0, m_NE1;
224    
225        /// number of own elements for this rank in each dimension
226        dim_t m_ownNE0, m_ownNE1;
227    
228      /// number of nodes for this rank in each dimension      /// number of nodes for this rank in each dimension
229      dim_t m_N0, m_N1;      dim_t m_N0, m_N1;
230    
# Line 195  private: Line 236  private:
236      IndexVector m_faceOffset;      IndexVector m_faceOffset;
237    
238      /// vector of sample reference identifiers      /// vector of sample reference identifiers
239        IndexVector m_dofId;
240      IndexVector m_nodeId;      IndexVector m_nodeId;
241      IndexVector m_elementId;      IndexVector m_elementId;
242      IndexVector m_faceId;      IndexVector m_faceId;
243    
244      // vector with first node id on each rank      // vector with first node id on each rank
245      IndexVector m_nodeDistribution;      IndexVector m_nodeDistribution;
246    
247        // vector that maps each node to a DOF index (used for the coupler)
248        IndexVector m_dofMap;
249    
250        // Paso connector used by the system matrix and to interpolate DOF to
251        // nodes
252        Paso_Connector* m_connector;
253    
254        // the Paso System Matrix pattern
255        Paso_SystemMatrixPattern* m_pattern;
256  };  };
257    
258  } // end of namespace ripley  } // end of namespace ripley

Legend:
Removed from v.3711  
changed lines
  Added in v.3773

  ViewVC Help
Powered by ViewVC 1.1.26