/[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

trunk/esys2/escript/src/Data/AbstractDomain.h revision 110 by jgs, Mon Feb 14 04:14:42 2005 UTC trunk/escript/src/AbstractDomain.h revision 757 by woo409, Mon Jun 26 13:12:56 2006 UTC
# Line 1  Line 1 
1  // $Id$  // $Id$
2  /*  /*
3   ******************************************************************************   ************************************************************
4   *                                                                            *   *          Copyright 2006 by ACcESS MNRF                   *
5   *       COPYRIGHT  ACcESS 2004 -  All Rights Reserved                        *   *                                                          *
6   *                                                                            *   *              http://www.access.edu.au                    *
7   * This software is the property of ACcESS. No part of this code              *   *       Primary Business: Queensland, Australia            *
8   * may be copied in any form or by any means without the expressed written    *   *  Licensed under the Open Software License version 3.0    *
9   * consent of ACcESS.  Copying, use or modification of this software          *   *     http://www.opensource.org/licenses/osl-3.0.php       *
10   * by any unauthorised person is illegal unless that person has a software    *   *                                                          *
11   * license agreement with ACcESS.                                             *   ************************************************************
12   *                                                                            *  
  ******************************************************************************  
13  */  */
14                                                                              
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 <utility>  #include <boost/python/dict.hpp>
22    
23  namespace escript {  namespace escript {
24    
25      class Data;  //
26      class AbstractSystemMatrix;  // forward declarations
27      class FunctionSpace;  class Data;
28    //class AbstractSystemMatrix;
29    //class FunctionSpace;
30    
31  /**  /**
32     \brief     \brief
33     Base class for all escript domains.     Base class for all escript domains.
# Line 31  namespace escript { Line 35  namespace escript {
35     Description:     Description:
36     Base class for all escript domains.     Base class for all escript domains.
37  */  */
38    
39  class AbstractDomain {  class AbstractDomain {
40    
41   public:   public:
42    
43    /**    /**
44       \brief       \brief
45       Default constructor for AbstractDomain       Default constructor for AbstractDomain.
46    
47       Description:       Description:
48       Default constructor for AbstractDomain. As the name suggests       Default constructor for AbstractDomain. As the name suggests
49       this is intended to be an abstract base class but by making it       this is intended to be an abstract base class but by making it
50       constructable avoid a boost.python wrapper class. A call to       constructable we avoid a boost.python wrapper class. A call to
51       almost any of the base class functions will throw an exception       almost any of the base class functions will throw an exception
52       as they are not intended to be used.       as they are not intended to be used directly, but are overridden
53         by the underlying solver package which escript is linked to.
54    
55         By default, this class is overridden by the class NullDomain.
56    
57       Preconditions:       Preconditions:
58       Describe any preconditions       Describe any preconditions.
59    
60       Throws:       Throws:
61       Describe any exceptions thrown       Describe any exceptions thrown.
62    */    */
63      ESCRIPT_DLL_API
64    AbstractDomain();    AbstractDomain();
65    
66    /**    /**
67       \brief       \brief
68       Destructor for AbstractDomain       Destructor for AbstractDomain.
69    
70       Description:       Description:
71       Destructor for AbstractDomain       Destructor for AbstractDomain.
72    */    */
73      ESCRIPT_DLL_API
74    virtual ~AbstractDomain();    virtual ~AbstractDomain();
75    
76    /**    /**
77       \brief       \brief
78       Returns true if the given integer is a valid function space type       Returns true if the given integer is a valid function space type
79       for this domain.       for this domain.
80    */    */
81      ESCRIPT_DLL_API
82    virtual bool isValidFunctionSpaceType(int functionSpaceType) const;    virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
83    
84    /**    /**
85       \brief       \brief
86       Return a description for this domain       Return a description for this domain.
87    */    */
88      ESCRIPT_DLL_API
89    virtual std::string getDescription() const;    virtual std::string getDescription() const;
90    
91    /**    /**
92       \brief       \brief
93       Return a description for the given function space type code       Return a description for the given function space type code.
94    */    */
95      ESCRIPT_DLL_API
96    virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;    virtual std::string functionSpaceTypeAsString(int functionSpaceType) const;
97    
98    /**    /**
99       \brief       \brief
100       Throw a standard exception. This function is called if any attempt        Returns the spatial dimension of the domain.
101       is made to use a base class function.  
102    */        This has to be implemented by the actual Domain adapter.
   void throwStandardException(const std::string& functionName) const;  
   /**  
      \brief  
       returns the spatial dimension of the domain.  
       has to be implemented by the actual Domain adapter.  
103    */    */
104      ESCRIPT_DLL_API
105    virtual int getDim() const;    virtual int getDim() const;
106    
107    /**    /**
    \brief  
    Return true if domains equal.  
   */  
   bool operator==(const AbstractDomain& other) const;  
   bool operator!=(const AbstractDomain& other) const;  
   /**  
108       \brief       \brief
109       writes the doamin to an external file filename.       Return true if given domains are equal.
      has to be implemented by the actual Domain adapter.  
110    */    */
111    virtual void write(const std::string& filename) const;    ESCRIPT_DLL_API
112      virtual bool operator==(const AbstractDomain& other) const;
113      ESCRIPT_DLL_API
114      virtual bool operator!=(const AbstractDomain& other) const;
115    
116    /**    /**
117       \brief       \brief
118       sets the tagList pointer and length of tag list numTags.       Writes the domain to an external file filename.
   */  
   virtual void getTagList(int functionSpaceType, int** tagList, int* numTags) const;  
119    
120    /**       This has to be implemented by the actual Domain adapter.
      \brief  
      sets the referenceNoList pointer and length of tag list numReferenceNo.  
121    */    */
122    virtual void getReferenceNoList(int functionSpaceType, int** referenceNoList, int* numReferenceNo) const;    ESCRIPT_DLL_API
123      virtual void write(const std::string& filename) const;
124    
125   /**    /**
126       \brief       \brief
127       Return the number of data points per sample, and the number of samples as a pair.       Return the number of data points per sample, and the number of samples as a pair.
128       has to be implemented by the actual Domain adapter.  
129         This has to be implemented by the actual Domain adapter.
130    
131       \param functionSpaceCode Input - Code for the function space type.       \param functionSpaceCode Input - Code for the function space type.
132       \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
133    */    */
134      ESCRIPT_DLL_API
135    virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;    virtual std::pair<int,int> getDataShape(int functionSpaceCode) const;
136    
137    /**    /**
# Line 130  class AbstractDomain { Line 140  class AbstractDomain {
140       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
141       \param sampleNo Input - The sample number.       \param sampleNo Input - The sample number.
142    */    */
143      ESCRIPT_DLL_API
144    virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const;    virtual int getTagFromSampleNo(int functionSpaceType, int sampleNo) const;
145    
146    /**    /**
147       \brief       \brief
148       Return the reference number of  the given sample number.       Return the reference number of the given sample number.
149       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
150       \param sampleNo Input - The sample number.       \param sampleNo Input - The sample number.
151    */    */
152      ESCRIPT_DLL_API
153    virtual int getReferenceNoFromSampleNo(int functionSpaceType, int sampleNo) const;    virtual int getReferenceNoFromSampleNo(int functionSpaceType, int sampleNo) const;
154    
155    /**    /**
156       \brief       \brief
157       assigns new location to the domain       Assigns new location to the domain.
158       has to be implemented by the actual Domain adapter.  
159         This has to be implemented by the actual Domain adapter.
160    */    */
161      ESCRIPT_DLL_API
162    virtual void setNewX(const escript::Data& arg);    virtual void setNewX(const escript::Data& arg);
163    
164    /**    /**
165       \brief       \brief
166       interpolates data given on source onto target where source and target have to be given on the same domain.       Interpolates data given on source onto target where source and target have to be given on the same domain.
167       has to be implemented by the actual Domain adapter.  
168         This has to be implemented by the actual Domain adapter.
169    */    */
170      ESCRIPT_DLL_API
171    virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;    virtual void interpolateOnDomain(escript::Data& target,const escript::Data& source) const;
172      ESCRIPT_DLL_API
173    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
174    
175    /**    /**
176       \brief       \brief
177       interpolates data given on source onto target where source and target are given on different domains.       Interpolates data given on source onto target where source and target are given on different domains.
178       has to be implemented by the actual Domain adapter.  
179         This has to be implemented by the actual Domain adapter.
180    */    */
181      ESCRIPT_DLL_API
182    virtual void interpolateACross(escript::Data& target, const escript::Data& source) const;    virtual void interpolateACross(escript::Data& target, const escript::Data& source) const;
183      ESCRIPT_DLL_API
184    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;
185    
186    /**    /**
187       \brief returns locations in the domain. The function space is chosen appropriatly.       \brief
188         Returns locations in the domain. The function space is chosen appropriately.
189    */    */
190      ESCRIPT_DLL_API
191    virtual escript::Data getX() const;    virtual escript::Data getX() const;
192    
193    /**    /**
194       \brief return boundary normals. The function space is chosen appropriatly.       \brief
195         Return boundary normals. The function space is chosen appropriately.
196    */    */
197      ESCRIPT_DLL_API
198    virtual escript::Data getNormal() const;    virtual escript::Data getNormal() const;
199    
200    /**    /**
201       \brief returns the local size od samples. The function space is chosen appropriatly.       \brief
202         Returns the local size of samples. The function space is chosen appropriately.
203    */    */
204      ESCRIPT_DLL_API
205    virtual escript::Data getSize() const;    virtual escript::Data getSize() const;
206        
207    /**    /**
208       \brief       \brief
209       copies the location of data points on the domain into out. The actual function space to be considered       Copies the location of data points on the domain into out.
210         The actual function space to be considered
211       is defined by out. out has to be defined on this.       is defined by out. out has to be defined on this.
212       has to be implemented by the actual Domain adapter.  
213         This has to be implemented by the actual Domain adapter.
214    */    */
215      ESCRIPT_DLL_API
216    virtual void setToX(escript::Data& out) const;    virtual void setToX(escript::Data& out) const;
217    
218    /**    /**
219       \brief       \brief
220       copies the surface normals at data points into out.  The actual function space to be considered       Copies the surface normals at data points into out.
221         The actual function space to be considered
222       is defined by out. out has to be defined on this.       is defined by out. out has to be defined on this.
223       has to be implemented by the actual Domain adapter.  
224         This has to be implemented by the actual Domain adapter.
225    */    */
226      ESCRIPT_DLL_API
227    virtual void setToNormal(escript::Data& out) const;    virtual void setToNormal(escript::Data& out) const;
228    
229    /**    /**
230       \brief       \brief
231       copies the size of samples into out. The actual function space to be considered       Copies the size of samples into out. The actual
232         function space to be considered
233       is defined by out. out has to be defined on this.       is defined by out. out has to be defined on this.
234       has to be implemented by the actual Domain adapter.  
235         This has to be implemented by the actual Domain adapter.
236    */    */
237      ESCRIPT_DLL_API
238    virtual void setToSize(escript::Data& out) const;    virtual void setToSize(escript::Data& out) const;
239    
240    /**    /**
241       \brief       \brief
242       copies the gradient of arg into grad. The actual function space to be considered       Copies the gradient of arg into grad. The actual function space to be considered
243       for the gradient is defined by grad. arg and grad have to be defined on this.       for the gradient is defined by grad. arg and grad have to be defined on this.
244       has to be implemented by the actual Domain adapter.  
245         This has to be implemented by the actual Domain adapter.
246    */    */
247      ESCRIPT_DLL_API
248    virtual void setToGradient(escript::Data& grad, const escript::Data& arg) const;    virtual void setToGradient(escript::Data& grad, const escript::Data& arg) const;
   
249    /**    /**
250       \brief       \brief
251       saves data arg to an OpenDX input file.       Saves a dictonary of Data objects to an OpenDX input file. The keywords are used as identifier
252       considered as cell centered data.  
253       has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
254    */    */
255    virtual void saveDX(const std::string& filename,const escript::Data& arg) const;    ESCRIPT_DLL_API
256      virtual void saveDX(const std::string& filename,const boost::python::dict& arg) const;
257    
258    /**    /**
259       \brief       \brief
260       saves data arg to a VTK input file.       Saves a dictonary of Data objects to an VTK XML input file. The keywords are used as identifier
261       considered as cell centered data.  
262       has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
263    */    */
264    virtual void saveVTK(const std::string& filename,const escript::Data& arg) const;    ESCRIPT_DLL_API
265      virtual void saveVTK(const std::string& filename,const boost::python::dict& arg) const;
266    
267    /**    /**
268       \brief       \brief
269       returns the function space representation of the type functionSpaceCode on this domain       returns the function space representation of the type functionSpaceCode on this domain
270       as a vtkObject.       as a vtkObject.
271       has to be implemented by the actual Domain adapter.  
272         This has to be implemented by the actual Domain adapter.
273    */    */
274    //virtual vtkObject createVtkObject(int functionSpaceCode) const;    //virtual vtkObject createVtkObject(int functionSpaceCode) const;
275    
276      /**    /**
277       \brief       \brief
278       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
279       considered as cell centered data.       considered as cell centered data.
280       has to be implemented by the actual Domain adapter.  
281         This has to be implemented by the actual Domain adapter.
282    */    */
283      ESCRIPT_DLL_API
284    virtual bool isCellOriented(int functionSpaceCode) const;    virtual bool isCellOriented(int functionSpaceCode) const;
285    
286      /**
287         \brief
288         Throw a standard exception. This function is called if any attempt
289         is made to use a base class function.
290      */
291      ESCRIPT_DLL_API
292      void throwStandardException(const std::string& functionName) const;
293    
294   protected:   protected:
295    
296   private:   private:
297    
298  };  };
299    
300  } // end of namespace  } // end of namespace
301    
302  #endif  #endif

Legend:
Removed from v.110  
changed lines
  Added in v.757

  ViewVC Help
Powered by ViewVC 1.1.26