/[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 1801 by ksteube, Fri Sep 19 01:37:09 2008 UTC revision 3259 by jfenwick, Mon Oct 11 01:48:14 2010 UTC
# Line 1  Line 1 
1    
 /* $Id$ */  
   
2  /*******************************************************  /*******************************************************
3   *  *
4   *           Copyright 2003-2007 by ACceSS MNRF  * Copyright (c) 2003-2010 by University of Queensland
5   *       Copyright 2007 by University of Queensland  * Earth Systems Science Computational Center (ESSCC)
6   *  * http://www.uq.edu.au/esscc
7   *                http://esscc.uq.edu.au  *
8   *        Primary Business: Queensland, Australia  * Primary Business: Queensland, Australia
9   *  Licensed under the Open Software License version 3.0  * Licensed under the Open Software License version 3.0
10   *     http://www.opensource.org/licenses/osl-3.0.php  * 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>  #include <boost/python/list.hpp>
25  #include "paso/Paso_MPI.h"  #include "esysUtils/Esys_MPI.h"
26    
27    
28    #include "Pointers.h"
29    
30  namespace escript {  namespace escript {
31  // class forward declarations  // class forward declarations
# Line 35  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 101  class AbstractDomain { Line 119  class AbstractDomain {
119    ESCRIPT_DLL_API    ESCRIPT_DLL_API
120    virtual int getMPIRank() const;    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      Routine must be implemented by the DomainAdapter
141      */
142      ESCRIPT_DLL_API
143      virtual
144    #ifdef ESYS_MPI
145      MPI_Comm
146    #else
147      unsigned int
148    #endif
149      getMPIComm() const;
150    
151    /**    /**
152       \brief       \brief
# Line 220  class AbstractDomain { Line 265  class AbstractDomain {
265       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
266    */    */
267    ESCRIPT_DLL_API    ESCRIPT_DLL_API
268    virtual int* borrowSampleReferenceIDs(int functionSpaceType) const;    virtual const int* borrowSampleReferenceIDs(int functionSpaceType) const;
269    
270    /**    /**
271       \brief       \brief
# Line 243  class AbstractDomain { Line 288  class AbstractDomain {
288    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;    virtual bool probeInterpolationOnDomain(int functionSpaceType_source,int functionSpaceType_target) const;
289    
290    /**    /**
291        \brief given a vector of FunctionSpace type codes, pass back a code which then can all be interpolated to.
292        \note This method must be called on the domain which the FunctionSpaces point to
293        \return true is result is valid, false if not
294      */
295      ESCRIPT_DLL_API
296      virtual
297      bool
298      commonFunctionSpace(const std::vector<int>& fs, int& resultcode) const;
299    
300      /**
301       \brief       \brief
302       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.
303    
# Line 327  class AbstractDomain { Line 382  class AbstractDomain {
382    
383    /**    /**
384       \brief       \brief
385       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.
386         metadata is string representing some meta data to be added. metadata_schema assign schema to namespaces used in the meta data.
387    
388       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
389    */    */
390    ESCRIPT_DLL_API    ESCRIPT_DLL_API
391    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;
392    
393    /**    /**
394       \brief    \brief True if this rank owns the sample(id)
395       returns the function space representation of the type functionSpaceCode on this domain    Must be implemented by the Domain adapter
      as a vtkObject.  
   
      This has to be implemented by the actual Domain adapter.  
396    */    */
397    //virtual vtkObject createVtkObject(int functionSpaceCode) const;    ESCRIPT_DLL_API
398      virtual bool ownSample(int fs_code, index_t id) const;
399    
400    /**    /**
401       \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 363  class AbstractDomain { Line 417  class AbstractDomain {
417    
418    /**    /**
419       \brief       \brief
420       returns status of the domain.        Returns a status indicator of the domain. The status identifier should be unique over
421          the live time if the object but may be updated if changes to the domain happen, e.g.
422          modifications to its geometry.
423    
424       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
425    */    */
# Line 386  class AbstractDomain { Line 442  class AbstractDomain {
442    virtual int getNumberOfTagsInUse(int functionSpaceCode) const;    virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
443    
444    ESCRIPT_DLL_API    ESCRIPT_DLL_API
445    virtual int* borrowListOfTagsInUse(int functionSpaceCode) const;    virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
446    
447      /**
448        \brief Checks if this domain allows tags for the specified functionSpaceCode.
449      */
450      ESCRIPT_DLL_API
451      virtual bool canTag(int functionspacecode) const;
452    
453       /**
454       \brief returns the approximation order used for a function space functionSpaceCode
455       */
456    
457       ESCRIPT_DLL_API
458       virtual int getApproximationOrder(const int functionSpaceCode) const;
459    
460       ESCRIPT_DLL_API
461       virtual bool supportsContactElements() const;
462    
463   protected:   protected:
464    

Legend:
Removed from v.1801  
changed lines
  Added in v.3259

  ViewVC Help
Powered by ViewVC 1.1.26