/[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 151 by jgs, Thu Sep 22 01:55:00 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;
# Line 138  class Bruce : public escript::AbstractCo Line 234  class Bruce : public escript::AbstractCo
234    
235   protected:   protected:
236    
237      /**
238         \brief
239         Build the table of function space type names.
240      */
241      void
242      setFunctionSpaceTypeNames();
243    
244      /**
245         \brief
246         Ensure the parameters supplied to the constructor are valid.
247      */
248      bool
249      checkParameters();
250    
251      /**
252         \brief
253         Check if all components of vector are zero.
254      */
255      static
256      bool
257      isZero(DimVec vec);
258    
259   private:   private:
260    
261      //
262      // vectors describing axis of the domain
263      DimVec m_v0, m_v1, m_v2;
264    
265      //
266      // number of data points in each axial direction of the domain
267      int m_n0, m_n1, m_n2;
268    
269      //
270      // the coordinates of the origin of the domain
271      DimVec m_origin;
272    
273      //
274      // map from FunctionSpace codes to names
275      static FunctionSpaceNamesMapType m_functionSpaceTypeNames;
276    
277  };  };
278    
279  } // end of namespace  } // end of namespace

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

  ViewVC Help
Powered by ViewVC 1.1.26