/[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 797 by gross, Thu Aug 3 02:03:18 2006 UTC revision 2640 by jfenwick, Mon Aug 31 06:22:10 2009 UTC
# Line 1  Line 1 
 // $Id$  
 /*  
  ************************************************************  
  *          Copyright 2006 by ACcESS MNRF                   *  
  *                                                          *  
  *              http://www.access.edu.au                    *  
  *       Primary Business: Queensland, Australia            *  
  *  Licensed under the Open Software License version 3.0    *  
  *     http://www.opensource.org/licenses/osl-3.0.php       *  
  *                                                          *  
  ************************************************************  
1    
2  */  /*******************************************************
3    *
4    * Copyright (c) 2003-2009 by University of Queensland
5    * Earth Systems Science Computational Center (ESSCC)
6    * http://www.uq.edu.au/esscc
7    *
8    * Primary Business: Queensland, Australia
9    * Licensed under the Open Software License version 3.0
10    * http://www.opensource.org/licenses/osl-3.0.php
11    *
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"  #include "system_dep.h"
19    
20    #include <vector>
21  #include <string>  #include <string>
22  #include <map>  #include <map>
23  #include <boost/python/dict.hpp>  #include <boost/python/dict.hpp>
24    #include <boost/python/list.hpp>
25    #include "paso/Paso_MPI.h"
26    
27    
28    #include "Pointers.h"
29    
30  namespace escript {  namespace escript {
31  // class forward declarations  // class forward declarations
# Line 32  class Data; Line 38  class Data;
38     Base class for all escript domains.     Base class for all escript domains.
39  */  */
40    
41  class AbstractDomain {  class AbstractDomain;
42    
43    typedef POINTER_WRAPPER_CLASS(AbstractDomain) Domain_ptr;
44    typedef POINTER_WRAPPER_CLASS(const AbstractDomain) const_Domain_ptr;
45    
46    class AbstractDomain : public REFCOUNT_BASE_CLASS(AbstractDomain){
47    
48   public:   public:
49    
50    /**
51    \brief Returns smart pointer which is managing this object.
52    If one does not exist yet it creates one.
53    
54    Note: This is _not_ equivalent to weak_ptr::lock.
55    */
56       ESCRIPT_DLL_API
57       Domain_ptr getPtr();
58       ESCRIPT_DLL_API
59       const_Domain_ptr getPtr() const;
60    
61     // structure holding values for X, size and normal     // structure holding values for X, size and normal
62     typedef int StatusType;     typedef int StatusType;
# Line 86  class AbstractDomain { Line 107  class AbstractDomain {
107    
108    /**    /**
109       \brief       \brief
110         return the number of processors used for this domain
111      */
112      ESCRIPT_DLL_API
113      virtual int getMPISize() const;
114      /**
115         \brief
116         return the number MPI rank of this processor
117      */
118    
119      ESCRIPT_DLL_API
120      virtual int getMPIRank() const;
121    
122      /**
123         \brief
124         If compiled for MPI then execute an MPI_Barrier, else do nothing
125      */
126    
127      ESCRIPT_DLL_API
128      virtual void MPIBarrier() const;
129      /**
130         \brief
131         Return true if on MPI master, else false
132      */
133    
134      ESCRIPT_DLL_API
135      virtual bool onMasterProcessor() const;
136    
137      /**
138      \brief get the communicator for this domain.
139      Returns 0 on non-MPI builds
140      */
141      ESCRIPT_DLL_API
142    #ifdef PASO_MPI
143      MPI_Comm
144    #else
145      unsigned int
146    #endif
147      getMPIComm() const;
148    
149      /**
150         \brief
151       Returns true if the given integer is a valid function space type       Returns true if the given integer is a valid function space type
152       for this domain.       for this domain.
153    */    */
# Line 135  class AbstractDomain { Line 197  class AbstractDomain {
197    
198    /**    /**
199       \brief       \brief
200         dumps the domain to an external file filename.
201    
202         This has to be implemented by the actual Domain adapter.
203      */
204      ESCRIPT_DLL_API
205      virtual void dump(const std::string& filename) const;
206    
207      /**
208         \brief
209       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.
210    
211       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
# Line 156  class AbstractDomain { Line 227  class AbstractDomain {
227    
228    /**    /**
229       \brief       \brief
230       Return the reference number of the given sample number.       sets a map from a clear tag name to a tag key
231         \param name Input - tag name.
232         \param tag Input - tag key.
233      */
234      ESCRIPT_DLL_API
235      virtual void setTagMap(const std::string& name,  int tag);
236    
237      /**
238         \brief
239         Return the tag key for tag name.
240         \param name Input - tag name
241      */
242      ESCRIPT_DLL_API
243      virtual int getTag(const std::string& name) const;
244    
245      /**
246         \brief
247         Returns True if name is a defined tag name
248         \param name Input - tag name
249      */
250      ESCRIPT_DLL_API
251      virtual bool isValidTagName(const std::string& name) const;
252    
253      /**
254         \brief
255         Returns all tag names in a single string sperated by commas
256      */
257      ESCRIPT_DLL_API
258      virtual std::string showTagNames() const;
259    
260      /**
261         \brief
262         Return a borrowed pointer to the sample reference number id list
263       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
      \param sampleNo Input - The sample number.  
264    */    */
265    ESCRIPT_DLL_API    ESCRIPT_DLL_API
266    virtual int getReferenceNoFromSampleNo(int functionSpaceType, int sampleNo) const;    virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const;
267    
268    /**    /**
269       \brief       \brief
# Line 184  class AbstractDomain { Line 286  class AbstractDomain {
286    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
287    
288    /**    /**
289        \brief given a vector of FunctionSpace type codes, pass back a code which then can all be interpolated to.
290        \note This method must be called on the domain which the FunctionSpaces point to
291        \return true is result is valid, false if not
292      */
293      ESCRIPT_DLL_API
294      virtual
295      bool
296      commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const;
297    
298      /**
299       \brief       \brief
300       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.
301    
# Line 268  class AbstractDomain { Line 380  class AbstractDomain {
380    
381    /**    /**
382       \brief       \brief
383       Saves a dictonary of Data objects to an VTK XML input file. The keywords are used as identifier       Saves a dictonary of Data objects to an VTK XML input file. The keywords are used as identifier.
384         metadata is string representing some meta data to be added. metadata_schema assign schema to namespaces used in the meta data.
385    
386       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
387    */    */
388    ESCRIPT_DLL_API    ESCRIPT_DLL_API
389    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 std::string& metadata, const std::string& metadata_schema) const;
   
   /**  
      \brief  
      returns the function space representation of the type functionSpaceCode on this domain  
      as a vtkObject.  
   
      This has to be implemented by the actual Domain adapter.  
   */  
   //virtual vtkObject createVtkObject(int functionSpaceCode) const;  
390    
391    /**    /**
392       \brief assigns new tag newTag to all samples of functionspace with a positive       \brief assigns new tag newTag to all samples of functionspace with a positive
# Line 304  class AbstractDomain { Line 408  class AbstractDomain {
408    
409    /**    /**
410       \brief       \brief
411       returns status of the domain.        Returns a status indicator of the domain. The status identifier should be unique over
412          the live time if the object but may be updated if changes to the domain happen, e.g.
413          modifications to its geometry.
414    
415       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
416    */    */
# Line 319  class AbstractDomain { Line 425  class AbstractDomain {
425    ESCRIPT_DLL_API    ESCRIPT_DLL_API
426    void throwStandardException(const std::string& functionName) const;    void throwStandardException(const std::string& functionName) const;
427    
428      /**
429            \brief
430                      return the number of tags in use and a pointer to an array with the number of tags in use
431      */
432      ESCRIPT_DLL_API
433      virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
434    
435      ESCRIPT_DLL_API
436      virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
437    
438      /**
439        \brief Checks if this domain allows tags for the specified functionSpaceCode.
440      */
441      ESCRIPT_DLL_API
442      virtual bool canTag(int functionspacecode) const;
443    
444   protected:   protected:
445    
446   private:   private:

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

  ViewVC Help
Powered by ViewVC 1.1.26