/[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 3697 by caltinay, Mon Nov 28 04:52:00 2011 UTC revision 3711 by caltinay, Tue Dec 6 00:24:43 2011 UTC
# Line 16  Line 16 
16    
17  #include <ripley/RipleyDomain.h>  #include <ripley/RipleyDomain.h>
18    
19    struct Paso_Pattern;
20    
21  namespace ripley {  namespace ripley {
22    
23  /**  /**
# Line 81  public: Line 83  public:
83    
84      /**      /**
85         \brief         \brief
86         returns the number of data points summed across all MPI processes         copies the gradient of 'in' into 'out'. The actual function space to be
87           considered for the gradient is defined by 'in'. Both arguments have to
88           be defined on this domain.
89      */      */
90      RIPLEY_DLL_API      RIPLEY_DLL_API
91      virtual int getNumDataPointsGlobal() const { return (m_gNE0+1)*(m_gNE1+1); }      virtual void setToGradient(escript::Data& out, const escript::Data& in) const;
92    
93      /**      /**
94         \brief         \brief
95         interpolates data given on source onto target where source and target         returns the number of data points summed across all MPI processes
        have to be given on the same domain  
96      */      */
97      RIPLEY_DLL_API      RIPLEY_DLL_API
98      virtual void interpolateOnDomain(escript::Data& target, const escript::Data& source) const;      virtual int getNumDataPointsGlobal() const { return (m_gNE0+1)*(m_gNE1+1); }
99    
100      /**      /**
101         \brief         \brief
# Line 139  public: Line 142  public:
142      RIPLEY_DLL_API      RIPLEY_DLL_API
143      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;      virtual std::pair<double,double> getFirstCoordAndSpacing(dim_t dim) const;
144    
145        /**
146           \brief
147           adds a PDE onto the stiffness matrix mat and rhs
148        */
149        RIPLEY_DLL_API
150        virtual void addPDEToSystem(escript::AbstractSystemMatrix& mat,
151                escript::Data& rhs, const escript::Data& A, const escript::Data& B,
152                const escript::Data& C, const escript::Data& D,
153                const escript::Data& X, const escript::Data& Y,
154                const escript::Data& d, const escript::Data& y,
155                const escript::Data& d_contact, const escript::Data& y_contact,
156                const escript::Data& d_dirac, const escript::Data& y_dirac) const;
157    
158  protected:  protected:
159      virtual dim_t getNumNodes() const { return m_N0*m_N1; }      virtual dim_t getNumNodes() const { return m_N0*m_N1; }
160      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }      virtual dim_t getNumElements() const { return m_NE0*m_NE1; }
161      virtual dim_t getNumFaceElements() const;      virtual dim_t getNumFaceElements() const;
162      virtual void assembleCoordinates(escript::Data& arg) const;      virtual void assembleCoordinates(escript::Data& arg) const;
163      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;      virtual Paso_SystemMatrixPattern* getPattern(bool reducedRowOrder, bool reducedColOrder) const;
164        virtual void interpolateNodesOnElements(escript::Data& out,
165                                           escript::Data& in, bool reduced) const;
166        virtual void interpolateNodesOnFaces(escript::Data& out, escript::Data& in,
167                                             bool reduced) const;
168    
169  private:  private:
170      void populateSampleIds();      void populateSampleIds();
171        int insertNeighbours(IndexVector& index, index_t node) const;
172        void generateCouplePatterns(Paso_Pattern** colPattern,
173                                    Paso_Pattern** rowPattern) const;
174    
175      /// total number of elements in each dimension      /// total number of elements in each dimension
176      dim_t m_gNE0, m_gNE1;      dim_t m_gNE0, m_gNE1;
# Line 167  private: Line 190  private:
190      /// first node on this rank is at (offset0,offset1) in global mesh      /// first node on this rank is at (offset0,offset1) in global mesh
191      dim_t m_offset0, m_offset1;      dim_t m_offset0, m_offset1;
192    
193        /// faceOffset[i]=-1 if face i is not an external face, otherwise it is
194        /// the index of that face (where i: 0=left, 1=right, 2=bottom, 3=top)
195        IndexVector m_faceOffset;
196    
197      /// vector of sample reference identifiers      /// vector of sample reference identifiers
198      IndexVector m_nodeId;      IndexVector m_nodeId;
199      IndexVector m_elementId;      IndexVector m_elementId;

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

  ViewVC Help
Powered by ViewVC 1.1.26