/[escript]/trunk/bruce/src/Bruce/Bruce.h
ViewVC logotype

Diff of /trunk/bruce/src/Bruce/Bruce.h

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

revision 149 by jgs, Thu Sep 1 03:31:39 2005 UTC revision 153 by jgs, Tue Oct 25 01:51:20 2005 UTC
# Line 12  Line 12 
12   *                                                                            *   *                                                                            *
13   ******************************************************************************   ******************************************************************************
14  */  */
15                                                                              
16  #if !defined bruce_Bruce_20050829_H  #if !defined bruce_Bruce_20050829_H
17  #define bruce_Bruce_20050829_H  #define bruce_Bruce_20050829_H
18    
# Line 22  Line 22 
22  #include "escript/Data/Data.h"  #include "escript/Data/Data.h"
23    
24  #include <string>  #include <string>
25    #include <vector>
26    
27  namespace bruce {  namespace bruce {
28    
29  /**  /**
30     \brief     \brief
31     Bruce implements the AbstractContinuousDomain     Bruce implements a structured AbstractContinuousDomain.
    interface for the Bruce library.  
32    
33     Description:     Description:
34     Bruce implements the AbstractContinuousDomain     Bruce implements a structured AbstractContinuousDomain.
    interface for the Bruce library.  
35  */  */
36    
37  class Bruce : public escript::AbstractContinuousDomain {  class Bruce : public escript::AbstractContinuousDomain {
# Line 41  class Bruce : public escript::AbstractCo Line 40  class Bruce : public escript::AbstractCo
40    
41    //    //
42    // Codes for function space types supported    // Codes for function space types supported
43    static const int Nodes;    static const int ContinuousFunction;
44    static const int Elements;    static const int Function;
45    
46      //
47      // Type of FunctionSpaceNamesMap
48      typedef std::map<int, std::string> FunctionSpaceNamesMapType;
49    
50      //
51      // Types for the dimension vectors
52      typedef std::vector<double> DimVec;
53    
54    /**    /**
55       \brief       \brief
56       Constructor for Bruce.       Default constructor for Bruce.
57    
58       Description:       Description:
59       Constructor for Bruce.       Default constructor for Bruce.
60         Creates a null Bruce object.
61    */    */
62    Bruce();    Bruce();
63    
64    /**    /**
65       \brief       \brief
66         Constructor for Bruce.
67    
68         Description:
69         Constructor for Bruce.
70    
71         The point "origin" specifies the location of the origin
72         of the domain specified by this object. The dimensionality of this
73         point determines the dimensionality of the space the domain occupies.
74    
75         The vectors v0,v1,v2 specify the axis in
76         of the domain of this Bruce object. If v2 is an empty vector, this
77         object is a two dimensional domain. If v1 is also an empty vector,
78         this object is a one dimensional domain. If v0 is also an empty
79         vector, this is a point domain.
80    
81         The integers n0,n1,n2 specify the dumber of data-points along each
82         axis in the domain.
83      */
84      Bruce(DimVec v0, DimVec v1, DimVec v2,
85            int n0, int n1, int n2,
86            DimVec origin);
87    
88      /**
89         \brief
90       Copy constructor.       Copy constructor.
91    */    */
92    Bruce(const Bruce& other);    Bruce(const Bruce& other);
# Line 73  class Bruce : public escript::AbstractCo Line 105  class Bruce : public escript::AbstractCo
105    const AbstractContinuousDomain&    const AbstractContinuousDomain&
106    asAbstractContinuousDomain() const    asAbstractContinuousDomain() const
107    {    {
108       return *(static_cast<const AbstractContinuousDomain*>(this));      return *(static_cast<const AbstractContinuousDomain*>(this));
109    }    }
110    
111    /**    /**
# Line 84  class Bruce : public escript::AbstractCo Line 116  class Bruce : public escript::AbstractCo
116    const AbstractDomain&    const AbstractDomain&
117    asAbstractDomain() const    asAbstractDomain() const
118    {    {
119       return *(static_cast<const AbstractDomain*>(this));      return *(static_cast<const AbstractDomain*>(this));
120      }
121    
122      /**
123         \brief
124         Return a description for this domain.
125      */
126      virtual
127      inline
128      std::string
129      getDescription() const
130      {
131        return "Bruce";
132    }    }
133    
134    /**    /**
# Line 94  class Bruce : public escript::AbstractCo Line 138  class Bruce : public escript::AbstractCo
138    */    */
139    virtual    virtual
140    bool    bool
141    isValidFunctionSpaceType(int functionSpaceType) const;    isValidFunctionSpaceType(int functionSpaceCode) const;
142    
143      /**
144         \brief
145         Return a description for the given function space type code.
146      */
147      virtual
148      std::string
149      functionSpaceTypeAsString(int functionSpaceCode) const;
150    
151      /**
152         \brief
153         Return a continuous FunctionSpace code.
154      */
155      virtual
156      inline
157      int
158      getContinuousFunctionCode() const
159      {
160        return ContinuousFunction;
161      }
162    
163      /**
164         \brief
165         Return a function FunctionSpace code.
166      */
167      virtual
168      inline
169      int
170      getFunctionCode() const
171      {
172        return Function;
173      }
174    
175    /**    /**
176       \brief       \brief
177       Return the spatial dimension of the mesh.       Return the spatial dimension of the mesh.
178    */    */
179    virtual    virtual
180      inline
181    int    int
182    getDim() const;    getDim() const
183      {
184        return m_origin.size();
185      }
186    
187    /**    /**
188       \brief       \brief
# Line 123  class Bruce : public escript::AbstractCo Line 203  class Bruce : public escript::AbstractCo
203    
204    /**    /**
205       \brief       \brief
206         Copies the location of data points on the domain into out.
207      */
208      virtual
209      void
210      setToX(escript::Data& out) const;
211    
212      /**
213         \brief
214       Returns the element size.       Returns the element size.
215    */    */
216    virtual    virtual
# Line 131  class Bruce : public escript::AbstractCo Line 219  class Bruce : public escript::AbstractCo
219    
220    /**    /**
221       \brief       \brief
222         Copies the size of samples into out.
223      */
224      virtual
225      void
226      setToSize(escript::Data& out) const;
227    
228      /**
229         \brief
230       Comparison operators.       Comparison operators.
231    */    */
232    virtual bool operator==(const AbstractDomain& other) const;    virtual bool operator==(const AbstractDomain& other) const;
233    virtual bool operator!=(const AbstractDomain& other) const;    virtual bool operator!=(const AbstractDomain& other) const;
234    
235      /*
236         \brief
237         Return the tag key for the given sample number.
238      */
239      virtual
240      int
241      getTagFromSampleNo(int functionSpaceCode, int sampleNo) const;
242    
243      /**
244         \brief
245         Return the reference number of the given sample number.
246      */
247      virtual
248      int
249      getReferenceNoFromSampleNo(int functionSpaceCode, int sampleNo) const;
250    
251    
252   protected:   protected:
253    
254      /**
255         \brief
256         Build the table of function space type names.
257      */
258      void
259      setFunctionSpaceTypeNames();
260    
261      /**
262         \brief
263         Ensure the parameters supplied to the constructor are valid.
264      */
265      bool
266      checkParameters();
267    
268      /**
269         \brief
270         Check if all components of vector are zero.
271      */
272      static
273      bool
274      isZero(DimVec vec);
275    
276   private:   private:
277    
278      //
279      // vectors describing axis of the domain
280      DimVec m_v0, m_v1, m_v2;
281    
282      //
283      // number of data points in each axial direction of the domain
284      int m_n0, m_n1, m_n2;
285    
286      //
287      // the coordinates of the origin of the domain
288      DimVec m_origin;
289    
290      //
291      // map from FunctionSpace codes to names
292      static FunctionSpaceNamesMapType m_functionSpaceTypeNames;
293    
294  };  };
295    
296  } // end of namespace  } // end of namespace

Legend:
Removed from v.149  
changed lines
  Added in v.153

  ViewVC Help
Powered by ViewVC 1.1.26