/[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 3748 by caltinay, Thu Dec 15 07:36:19 2011 UTC revision 3769 by caltinay, Tue Jan 17 04:09:55 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.
     */  
     RIPLEY_DLL_API  
     virtual void setToGradient(escript::Data& out, const escript::Data& in) const;  
   
     /**  
        \brief  
        copies the integrals of the function defined by arg into integrals.  
        arg has to be defined on this domain.  
89      */      */
90      RIPLEY_DLL_API      RIPLEY_DLL_API
91      virtual void setToIntegrals(std::vector<double>& integrals, const escript::Data& arg) const;      virtual void setToNormal(escript::Data& out) const;
92    
93      /**      /**
94         \brief         \brief
95         copies the surface normals at data points into out. The actual function         copies the size of samples into out. The actual function space to be
96         space to be considered is defined by out. out has to be defined on this         considered is defined by out. out has to be defined on this domain.
        domain.  
97      */      */
98      RIPLEY_DLL_API      RIPLEY_DLL_API
99      virtual void setToNormal(escript::Data& out) const;      virtual void setToSize(escript::Data& out) const;
100    
101      /**      /**
102         \brief         \brief
# Line 153  public: Line 144  public:
144    
145      /**      /**
146         \brief         \brief
147           returns the number of spatial subdivisions in each dimension
148        */
149        RIPLEY_DLL_API
150        virtual IndexVector getNumSubdivisionsPerDim() const;
151    
152        /**
153           \brief
154         returns the first coordinate value and the node spacing along given         returns the first coordinate value and the node spacing along given
155         dimension as a pair         dimension as a pair
156      */      */
# Line 163  protected: Line 161  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,      virtual void assemblePDESingle(Paso_SystemMatrix* mat, escript::Data& rhs,
170              const escript::Data& A, const escript::Data& B,              const escript::Data& A, const escript::Data& B,
171              const escript::Data& C, const escript::Data& D,              const escript::Data& C, const escript::Data& D,
172              const escript::Data& X, const escript::Data& Y,              const escript::Data& X, const escript::Data& Y) const;
173              const escript::Data& d, const escript::Data& y) const;      virtual void assemblePDEBoundarySingle(Paso_SystemMatrix* mat,
174      //virtual void assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,              escript::Data& rhs, const escript::Data& d,
175      //        const escript::Data& A, const escript::Data& B,              const escript::Data& y) const;
176      //        const escript::Data& C, const escript::Data& D,      virtual void assemblePDESingleReduced(Paso_SystemMatrix* mat,
177      //        const escript::Data& X, const escript::Data& Y,              escript::Data& rhs, const escript::Data& A, const escript::Data& B,
178      //        const escript::Data& d, const escript::Data& y) const;              const escript::Data& C, const escript::Data& D,
179                const escript::Data& X, const escript::Data& Y) const;
180        virtual void assemblePDEBoundarySingleReduced(Paso_SystemMatrix* mat,
181                escript::Data& rhs, const escript::Data& d,
182                const escript::Data& y) const;
183        virtual void assemblePDESystem(Paso_SystemMatrix* mat, escript::Data& rhs,
184                const escript::Data& A, const escript::Data& B,
185                const escript::Data& C, const escript::Data& D,
186                const escript::Data& X, const escript::Data& Y) const;
187        virtual void assemblePDEBoundarySystem(Paso_SystemMatrix* mat,
188                escript::Data& rhs, const escript::Data& d,
189                const escript::Data& y) const;
190        virtual void assemblePDESystemReduced(Paso_SystemMatrix* mat,
191                escript::Data& rhs, const escript::Data& A, const escript::Data& B,
192                const escript::Data& C, const escript::Data& D,
193                const escript::Data& X, const escript::Data& Y) const;
194        virtual void assemblePDEBoundarySystemReduced(Paso_SystemMatrix* mat,
195                escript::Data& rhs, const escript::Data& d,
196                const escript::Data& y) const;
197      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;
198      virtual void interpolateNodesOnElements(escript::Data& out,      virtual void interpolateNodesOnElements(escript::Data& out,
199                                         escript::Data& in, bool reduced) const;                                         escript::Data& in, bool reduced) const;
200      virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,      virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,
201                                           bool reduced) const;                                           bool reduced) const;
202        virtual void nodesToDOF(escript::Data& out, escript::Data& in) const;
203        virtual void dofToNodes(escript::Data& out, escript::Data& in) const;
204    
205  private:  private:
206      void populateSampleIds();      void populateSampleIds();
207      int insertNeighbours(IndexVector& index, index_t node) const;      void createPattern();
     void generateCouplePatterns(Paso_Pattern** colPattern,  
                                 Paso_Pattern** rowPattern) const;  
     void addToSystemMatrix(Paso_SystemMatrix* in, dim_t NN_Equa,  
             const IndexVector& Nodes_Equa, dim_t num_Equa, dim_t NN_Sol,  
             const IndexVector& Nodes_Sol, dim_t num_Sol,  
             const std::vector<double>& array) const;  
208    
209      /// total number of elements in each dimension      /// total number of elements in each dimension
210      dim_t m_gNE0, m_gNE1;      dim_t m_gNE0, m_gNE1;
# Line 200  private: Line 215  private:
215      /// number of spatial subdivisions      /// number of spatial subdivisions
216      int m_NX, m_NY;      int m_NX, m_NY;
217    
218      /// number of elements for this rank in each dimension      /// number of elements for this rank in each dimension including shared
219      dim_t m_NE0, m_NE1;      dim_t m_NE0, m_NE1;
220    
221        /// number of own elements for this rank in each dimension
222        dim_t m_ownNE0, m_ownNE1;
223    
224      /// number of nodes for this rank in each dimension      /// number of nodes for this rank in each dimension
225      dim_t m_N0, m_N1;      dim_t m_N0, m_N1;
226    
# Line 214  private: Line 232  private:
232      IndexVector m_faceOffset;      IndexVector m_faceOffset;
233    
234      /// vector of sample reference identifiers      /// vector of sample reference identifiers
235        IndexVector m_dofId;
236      IndexVector m_nodeId;      IndexVector m_nodeId;
237      IndexVector m_elementId;      IndexVector m_elementId;
238      IndexVector m_faceId;      IndexVector m_faceId;
239    
240      // vector with first node id on each rank      // vector with first node id on each rank
241      IndexVector m_nodeDistribution;      IndexVector m_nodeDistribution;
242    
243        // vector that maps each node to a DOF index (used for the coupler)
244        IndexVector m_dofMap;
245    
246        // Paso connector used by the system matrix and to interpolate DOF to
247        // nodes
248        Paso_Connector* m_connector;
249    
250        // the Paso System Matrix pattern
251        Paso_SystemMatrixPattern* m_pattern;
252  };  };
253    
254  } // end of namespace ripley  } // end of namespace ripley

Legend:
Removed from v.3748  
changed lines
  Added in v.3769

  ViewVC Help
Powered by ViewVC 1.1.26