/[escript]/trunk/escript/src/AbstractDomain.h
ViewVC logotype

Diff of /trunk/escript/src/AbstractDomain.h

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

revision 615 by elspeth, Wed Mar 22 02:12:00 2006 UTC revision 797 by gross, Thu Aug 3 02:03:18 2006 UTC
# Line 15  Line 15 
15  #if !defined escript_AbstractDomain_20040609_H  #if !defined escript_AbstractDomain_20040609_H
16  #define escript_AbstractDomain_20040609_H  #define escript_AbstractDomain_20040609_H
17    
18    #include "system_dep.h"
19    
20  #include <string>  #include <string>
21    #include <map>
22  #include <boost/python/dict.hpp>  #include <boost/python/dict.hpp>
23    
24  namespace escript {  namespace escript {
25    // class forward declarations
 //  
 // forward declarations  
26  class Data;  class Data;
 //class AbstractSystemMatrix;  
 //class FunctionSpace;  
   
27  /**  /**
28     \brief     \brief
29     Base class for all escript domains.     Base class for all escript domains.
# Line 38  class AbstractDomain { Line 36  class AbstractDomain {
36    
37   public:   public:
38    
39    
40       // structure holding values for X, size and normal
41       typedef int StatusType;
42       struct ValueBuffer
43       {
44           StatusType m_status;
45           boost::shared_ptr<Data> m_data;
46       };
47       typedef struct ValueBuffer ValueBuffer;
48    
49       //
50       // map from function space type code to value buffer
51       typedef std::map<int, ValueBuffer> BufferMapType;
52    
53    
54    /**    /**
55       \brief       \brief
56       Default constructor for AbstractDomain.       Default constructor for AbstractDomain.
# Line 58  class AbstractDomain { Line 71  class AbstractDomain {
71       Throws:       Throws:
72       Describe any exceptions thrown.       Describe any exceptions thrown.
73    */    */
74      ESCRIPT_DLL_API
75    AbstractDomain();    AbstractDomain();
76    
77    /**    /**
# Line 67  class AbstractDomain { Line 81  class AbstractDomain {
81       Description:       Description:
82       Destructor for AbstractDomain.       Destructor for AbstractDomain.
83    */    */
84      ESCRIPT_DLL_API
85    virtual ~AbstractDomain();    virtual ~AbstractDomain();
86    
87    /**    /**
# Line 74  class AbstractDomain { Line 89  class AbstractDomain {
89       Returns true if the given integer is a valid function space type       Returns true if the given integer is a valid function space type
90       for this domain.       for this domain.
91    */    */
92      ESCRIPT_DLL_API
93    virtual bool isValidFunctionSpaceType(int functionSpaceType) const;    virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
94    
95    /**    /**
96       \brief       \brief
97       Return a description for this domain.       Return a description for this domain.
98    */    */
99      ESCRIPT_DLL_API
100    virtual std::string getDescription() const;    virtual std::string getDescription() const;
101    
102    /**    /**
103       \brief       \brief
104       Return a description for the given function space type code.       Return a description for the given function space type code.
105    */    */
106      ESCRIPT_DLL_API
107    virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;    virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;
108    
109    /**    /**
# Line 94  class AbstractDomain { Line 112  class AbstractDomain {
112    
113        This has to be implemented by the actual Domain adapter.        This has to be implemented by the actual Domain adapter.
114    */    */
115      ESCRIPT_DLL_API
116    virtual int getDim() const;    virtual int getDim() const;
117    
118    /**    /**
119       \brief       \brief
120       Return true if given domains are equal.       Return true if given domains are equal.
121    */    */
122      ESCRIPT_DLL_API
123    virtual bool operator==(const AbstractDomain& other) const;    virtual bool operator==(const AbstractDomain& other) const;
124      ESCRIPT_DLL_API
125    virtual bool operator!=(const AbstractDomain& other) const;    virtual bool operator!=(const AbstractDomain& other) const;
126    
127    /**    /**
# Line 109  class AbstractDomain { Line 130  class AbstractDomain {
130    
131       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
132    */    */
133      ESCRIPT_DLL_API
134    virtual void write(const std::string& filename) const;    virtual void write(const std::string& filename) const;
135    
136    /**    /**
# Line 120  class AbstractDomain { Line 142  class AbstractDomain {
142       \param functionSpaceCode Input - Code for the function space type.       \param functionSpaceCode Input - Code for the function space type.
143       \return pair, first - number of data points per sample, second - number of samples       \return pair, first - number of data points per sample, second - number of samples
144    */    */
145      ESCRIPT_DLL_API
146    virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;    virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;
147    
148    /**    /**
# Line 128  class AbstractDomain { Line 151  class AbstractDomain {
151       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
152       \param sampleNo Input - The sample number.       \param sampleNo Input - The sample number.
153    */    */
154      ESCRIPT_DLL_API
155    virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const;    virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const;
156    
157    /**    /**
# Line 136  class AbstractDomain { Line 160  class AbstractDomain {
160       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
161       \param sampleNo Input - The sample number.       \param sampleNo Input - The sample number.
162    */    */
163      ESCRIPT_DLL_API
164    virtual int getReferenceNoFromSampleNo(int functionSpaceType, int sampleNo) const;    virtual int getReferenceNoFromSampleNo(int functionSpaceType, int sampleNo) const;
165    
166    /**    /**
# Line 144  class AbstractDomain { Line 169  class AbstractDomain {
169    
170       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
171    */    */
172      ESCRIPT_DLL_API
173    virtual void setNewX(const escript::Data& arg);    virtual void setNewX(const escript::Data& arg);
174    
175    /**    /**
# Line 152  class AbstractDomain { Line 178  class AbstractDomain {
178    
179       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
180    */    */
181      ESCRIPT_DLL_API
182    virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;    virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;
183      ESCRIPT_DLL_API
184    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
185    
186    /**    /**
# Line 161  class AbstractDomain { Line 189  class AbstractDomain {
189    
190       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
191    */    */
192      ESCRIPT_DLL_API
193    virtual void interpolateACross(escript::Data& target, const escript::Data& source) const;    virtual void interpolateACross(escript::Data& target, const escript::Data& source) const;
194      ESCRIPT_DLL_API
195    virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const;    virtual bool probeInterpolationACross(int functionSpaceType_source,const AbstractDomain& targetDomain, int functionSpaceType_target) const;
196    
197    /**    /**
198       \brief       \brief
199       Returns locations in the domain. The function space is chosen appropriately.       Returns locations in the domain. The function space is chosen appropriately.
200    */    */
201      ESCRIPT_DLL_API
202    virtual escript::Data getX() const;    virtual escript::Data getX() const;
203    
204    /**    /**
205       \brief       \brief
206       Return boundary normals. The function space is chosen appropriately.       Return boundary normals. The function space is chosen appropriately.
207    */    */
208      ESCRIPT_DLL_API
209    virtual escript::Data getNormal() const;    virtual escript::Data getNormal() const;
210    
211    /**    /**
212       \brief       \brief
213       Returns the local size of samples. The function space is chosen appropriately.       Returns the local size of samples. The function space is chosen appropriately.
214    */    */
215      ESCRIPT_DLL_API
216    virtual escript::Data getSize() const;    virtual escript::Data getSize() const;
217        
218    /**    /**
# Line 190  class AbstractDomain { Line 223  class AbstractDomain {
223    
224       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
225    */    */
226      ESCRIPT_DLL_API
227    virtual void setToX(escript::Data& out) const;    virtual void setToX(escript::Data& out) const;
228    
229    /**    /**
# Line 200  class AbstractDomain { Line 234  class AbstractDomain {
234    
235       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
236    */    */
237      ESCRIPT_DLL_API
238    virtual void setToNormal(escript::Data& out) const;    virtual void setToNormal(escript::Data& out) const;
239    
240    /**    /**
# Line 210  class AbstractDomain { Line 245  class AbstractDomain {
245    
246       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
247    */    */
248      ESCRIPT_DLL_API
249    virtual void setToSize(escript::Data& out) const;    virtual void setToSize(escript::Data& out) const;
250    
251    /**    /**
# Line 219  class AbstractDomain { Line 255  class AbstractDomain {
255    
256       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
257    */    */
258      ESCRIPT_DLL_API
259    virtual void setToGradient(escript::Data& grad, const escript::Data& arg) const;    virtual void setToGradient(escript::Data& grad, const escript::Data& arg) const;
260    /**    /**
261       \brief       \brief
# Line 226  class AbstractDomain { Line 263  class AbstractDomain {
263    
264       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
265    */    */
266      ESCRIPT_DLL_API
267    virtual void saveDX(const std::string& filename,const boost::python::dict& arg) const;    virtual void saveDX(const std::string& filename,const boost::python::dict& arg) const;
268    
269    /**    /**
# Line 234  class AbstractDomain { Line 272  class AbstractDomain {
272    
273       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
274    */    */
275      ESCRIPT_DLL_API
276    virtual void saveVTK(const std::string& filename,const boost::python::dict& arg) const;    virtual void saveVTK(const std::string& filename,const boost::python::dict& arg) const;
277    
278    /**    /**
# Line 246  class AbstractDomain { Line 285  class AbstractDomain {
285    //virtual vtkObject createVtkObject(int functionSpaceCode) const;    //virtual vtkObject createVtkObject(int functionSpaceCode) const;
286    
287    /**    /**
288         \brief assigns new tag newTag to all samples of functionspace with a positive
289         value of mask for any its sample point.
290    
291      */
292      ESCRIPT_DLL_API
293      virtual void setTags(const int functionSpaceType, const int newTag, const escript::Data& mask) const;
294    
295      /**
296       \brief       \brief
297       returns true if data on this domain and a function space of type functionSpaceCode has to       returns true if data on this domain and a function space of type functionSpaceCode has to
298       considered as cell centered data.       considered as cell centered data.
299    
300       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
301    */    */
302      ESCRIPT_DLL_API
303    virtual bool isCellOriented(int functionSpaceCode) const;    virtual bool isCellOriented(int functionSpaceCode) const;
304    
305    /**    /**
306       \brief       \brief
307         returns status of the domain.
308    
309         This has to be implemented by the actual Domain adapter.
310      */
311      ESCRIPT_DLL_API
312      virtual StatusType getStatus() const;
313    
314      /**
315         \brief
316       Throw a standard exception. This function is called if any attempt       Throw a standard exception. This function is called if any attempt
317       is made to use a base class function.       is made to use a base class function.
318    */    */
319      ESCRIPT_DLL_API
320    void throwStandardException(const std::string& functionName) const;    void throwStandardException(const std::string& functionName) const;
321    
322   protected:   protected:
323    
324   private:   private:
325    
326       // buffer for coordinates used by function spaces
327       BufferMapType m_x_buffer;
328    
329       // buffer for normal vectors used by function spaces
330       BufferMapType m_normal_buffer;
331    
332       // buffer for normal element size used by function spaces
333       BufferMapType m_size_buffer;
334    
335  };  };
336    
337  } // end of namespace  } // end of namespace

Legend:
Removed from v.615  
changed lines
  Added in v.797

  ViewVC Help
Powered by ViewVC 1.1.26