/[escript]/trunk/escript/src/DataExpanded.h
ViewVC logotype

Diff of /trunk/escript/src/DataExpanded.h

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

trunk/esys2/escript/src/Data/DataExpanded.h revision 119 by jgs, Tue Apr 12 04:45:05 2005 UTC trunk/escript/src/DataExpanded.h revision 950 by gross, Tue Feb 6 07:01:11 2007 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  #if !defined escript_DataExpanded_20040323_H  #if !defined escript_DataExpanded_20040323_H
15  #define escript_DataExpanded_20040323_H  #define escript_DataExpanded_20040323_H
16    #include "system_dep.h"
17    
18  #include "DataAbstract.h"  #include "DataAbstract.h"
19  #include "DataBlocks2D.h"  #include "DataBlocks2D.h"
20  #include "DataArrayView.h"  #include "DataArrayView.h"
21    
 #include <boost/scoped_ptr.hpp>  
22  #include <boost/python/numeric.hpp>  #include <boost/python/numeric.hpp>
23    
24  namespace escript {  namespace escript {
25    
26  //  //
27  // Forward declarations of other Data types.  // Forward declarations of other Data types.
 class DataEmpty;  
28  class DataConstant;  class DataConstant;
29  class DataTagged;  class DataTagged;
30    
# Line 61  class DataExpanded : public DataAbstract Line 58  class DataExpanded : public DataAbstract
58       \param value - Input - A single data value.       \param value - Input - A single data value.
59       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
60    */    */
61      ESCRIPT_DLL_API
62    DataExpanded(const boost::python::numeric::array& value,    DataExpanded(const boost::python::numeric::array& value,
63                 const FunctionSpace& what);                 const FunctionSpace& what);
64    
# Line 78  class DataExpanded : public DataAbstract Line 76  class DataExpanded : public DataAbstract
76       \param value - Input - A single data value.       \param value - Input - A single data value.
77       \param what - Input - A description of what this data represents.       \param what - Input - A description of what this data represents.
78    */    */
79      ESCRIPT_DLL_API
80    DataExpanded(const DataArrayView& value,    DataExpanded(const DataArrayView& value,
81                 const FunctionSpace& what);                 const FunctionSpace& what);
82    
# Line 89  class DataExpanded : public DataAbstract Line 88  class DataExpanded : public DataAbstract
88       \param other - Input - DataExpanded object to slice from.       \param other - Input - DataExpanded object to slice from.
89       \param region - Input - region to copy.       \param region - Input - region to copy.
90    */    */
91      ESCRIPT_DLL_API
92    DataExpanded(const DataExpanded& other,    DataExpanded(const DataExpanded& other,
93                 const DataArrayView::RegionType& region);                 const DataArrayView::RegionType& region);
94    
# Line 100  class DataExpanded : public DataAbstract Line 100  class DataExpanded : public DataAbstract
100       Alternative Constructor for DataExpanded objects.       Alternative Constructor for DataExpanded objects.
101       \param what - Input - A description of what this data object represents.       \param what - Input - A description of what this data object represents.
102       \param shape - Input - the shape of each data-point.       \param shape - Input - the shape of each data-point.
103       \param data - the data values for each data-point.       \param data - the array of data values for the data-points.
104    */    */
105      ESCRIPT_DLL_API
106    DataExpanded(const FunctionSpace& what,    DataExpanded(const FunctionSpace& what,
107                 const DataArrayView::ShapeType &shape,                 const DataArrayView::ShapeType &shape,
108                 const DataArrayView::ValueType &data);                 const DataArrayView::ValueType &data);
# Line 111  class DataExpanded : public DataAbstract Line 112  class DataExpanded : public DataAbstract
112       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
113       Performs a deep copy from another DataExpanded.       Performs a deep copy from another DataExpanded.
114    */    */
115      ESCRIPT_DLL_API
116    DataExpanded(const DataExpanded& other);    DataExpanded(const DataExpanded& other);
117    
118    /**    /**
# Line 118  class DataExpanded : public DataAbstract Line 120  class DataExpanded : public DataAbstract
120       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
121       Construct a DataExpanded from a DataConstant.       Construct a DataExpanded from a DataConstant.
122    */    */
123      ESCRIPT_DLL_API
124    DataExpanded(const DataConstant& other);    DataExpanded(const DataConstant& other);
125    
126    /**    /**
# Line 125  class DataExpanded : public DataAbstract Line 128  class DataExpanded : public DataAbstract
128       Copy constructor for DataExpanded.       Copy constructor for DataExpanded.
129       Construct a DataExpanded from a DataTagged.       Construct a DataExpanded from a DataTagged.
130    */    */
131      ESCRIPT_DLL_API
132    DataExpanded(const DataTagged& other);    DataExpanded(const DataTagged& other);
133    
134    /**    /**
135       \brief       \brief
136       Default destructor for DataExpanded.       Default destructor for DataExpanded.
137    */    */
138      ESCRIPT_DLL_API
139    virtual    virtual
140    ~DataExpanded();    ~DataExpanded();
141    
# Line 138  class DataExpanded : public DataAbstract Line 143  class DataExpanded : public DataAbstract
143       \brief       \brief
144       Return a textual representation of the data.       Return a textual representation of the data.
145    */    */
146      ESCRIPT_DLL_API
147    virtual    virtual
148    std::string    std::string
149    toString() const;    toString() const;
150     /**
   /**  
151       \brief       \brief
152       Reshape the data point if the data point is currently rank 0.       dumps the object into a netCDF file
      The original data point value is used for all values of the new  
      data point.  
153    */    */
154      ESCRIPT_DLL_API
155      virtual
156    void    void
157    reshapeDataPoint(const DataArrayView::ShapeType& shape);    dump(const std::string fileName) const;
158    
159    /**    /**
160       \brief       \brief
# Line 160  class DataExpanded : public DataAbstract Line 165  class DataExpanded : public DataAbstract
165       \param sampleNo - Input - sample number.       \param sampleNo - Input - sample number.
166       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
167    */    */
168      ESCRIPT_DLL_API
169    virtual    virtual
170    DataArrayView::ValueType::size_type    DataArrayView::ValueType::size_type
171    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
# Line 176  class DataExpanded : public DataAbstract Line 182  class DataExpanded : public DataAbstract
182       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
183       \return DataArrayView for the data point.       \return DataArrayView for the data point.
184    */    */
185      ESCRIPT_DLL_API
186    DataArrayView    DataArrayView
187    getDataPoint(int sampleNo,    getDataPoint(int sampleNo,
188                 int dataPointNo);                 int dataPointNo);
# Line 184  class DataExpanded : public DataAbstract Line 191  class DataExpanded : public DataAbstract
191       \brief       \brief
192       Return the number of doubles stored for the Data.       Return the number of doubles stored for the Data.
193    */    */
194      ESCRIPT_DLL_API
195    virtual    virtual
196    ValueType::size_type    ValueType::size_type
197    getLength() const;    getLength() const;
# Line 195  class DataExpanded : public DataAbstract Line 203  class DataExpanded : public DataAbstract
203    
204       \param region - Input - Region to copy.       \param region - Input - Region to copy.
205    */    */
206      ESCRIPT_DLL_API
207    virtual    virtual
208    DataAbstract*    DataAbstract*
209    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataArrayView::RegionType& region) const;
# Line 206  class DataExpanded : public DataAbstract Line 215  class DataExpanded : public DataAbstract
215       \param value - Input - Data object to copy from.       \param value - Input - Data object to copy from.
216       \param region - Input - Region to copy.       \param region - Input - Region to copy.
217    */    */
218      ESCRIPT_DLL_API
219    virtual    virtual
220    void    void
221    setSlice(const DataAbstract* value,    setSlice(const DataAbstract* value,
# Line 230  class DataExpanded : public DataAbstract Line 240  class DataExpanded : public DataAbstract
240       \param value - Input - Value to assign to data-point associated with       \param value - Input - Value to assign to data-point associated with
241                              the given reference number.                              the given reference number.
242    */    */
243      ESCRIPT_DLL_API
244    virtual    virtual
245    void    void
246    setRefValue(int ref,    setValueByReferenceNumber(int ref,
247                const DataArray& value);                const DataArray& value);
248    
249    /**    /**
# Line 255  class DataExpanded : public DataAbstract Line 266  class DataExpanded : public DataAbstract
266       \param value - Output - Object to receive data-points associated with       \param value - Output - Object to receive data-points associated with
267                              the given reference number.                              the given reference number.
268    */    */
269      ESCRIPT_DLL_API
270    virtual    virtual
271    void    void
272    getRefValue(int ref,    getValueByReferenceNumber(int ref,
273                DataArray& value);                DataArray& value);
274    
275      /**
276        \brief
277        Archive the underlying data values to the file referenced
278        by ofstream. A count of the number of values expected to be written
279        is provided as a cross-check.
280    
281        The return value indicates success (0) or otherwise (1).
282      */
283      ESCRIPT_DLL_API
284      int
285      archiveData(std::ofstream& archiveFile,
286                  const DataArrayView::ValueType::size_type noValues) const;
287    
288      /**
289        \brief
290        Extract the number of values specified by noValues from the file
291        referenced by ifstream to the underlying data structure.
292    
293        The return value indicates success (0) or otherwise (1).
294      */
295      ESCRIPT_DLL_API
296      int
297      extractData(std::ifstream& archiveFile,
298                  const DataArrayView::ValueType::size_type noValues);
299    
300      /**
301         \brief
302         Computes a symmetric matrix (A + AT) / 2
303    
304         \param ev - Output - symmetric matrix
305    
306      */
307      ESCRIPT_DLL_API
308      virtual void
309      symmetric(DataAbstract* ev);
310    
311      /**
312         \brief
313         Computes a nonsymmetric matrix (A - AT) / 2
314    
315         \param ev - Output - nonsymmetric matrix
316    
317      */
318      ESCRIPT_DLL_API
319      virtual void
320      nonsymmetric(DataAbstract* ev);
321    
322      /**
323         \brief
324         Computes the trace of a matrix
325    
326         \param ev - Output - trace of your matrix
327    
328      */
329      ESCRIPT_DLL_API
330      virtual void
331      trace(DataAbstract* ev, int axis_offset);
332    
333      /**
334         \brief
335         Transpose each data point of this Data object around the given axis.
336    
337         \param ev - Output - transpose of your matrix
338    
339      */
340      ESCRIPT_DLL_API
341      virtual void
342      transpose(DataAbstract* ev, int axis_offset);
343    
344      /**
345         \brief
346         swaps components axis0 and axis1
347    
348         \param ev - Output - swapped components
349    
350      */
351      ESCRIPT_DLL_API
352      virtual void
353      swapaxes(DataAbstract* ev, int axis0, int axis1);
354    
355    
356      /**
357         \brief
358         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
359    
360         \param ev - Output - eigenvalues in increasing order at each data point
361    
362      */
363      ESCRIPT_DLL_API
364      virtual void
365      eigenvalues(DataAbstract* ev);
366    
367      /**
368         \brief
369         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
370    
371         \param ev - Output - eigenvalues in increasing order at each data point
372         \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
373                             and the first nonzero component is positive.
374         \param tol - Input - eigenvalue with relative distance tol are treated as equal.
375    
376      */
377    
378      ESCRIPT_DLL_API
379      virtual void
380      eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
381    
382    
383   protected:   protected:
384    
385   private:   private:
# Line 286  class DataExpanded : public DataAbstract Line 406  class DataExpanded : public DataAbstract
406    
407    /**    /**
408       \brief       \brief
409       Copy the given data point to all data points in this object.       Copy the given data point value to all data points in this object.
410    
411       Description:       Description:
412       Copy the given data point to all data points in this object.       Copy the given data point to all data points in this object.
# Line 296  class DataExpanded : public DataAbstract Line 416  class DataExpanded : public DataAbstract
416    void    void
417    copy(const DataArrayView& value);    copy(const DataArrayView& value);
418    
419      /**
420         \brief
421         Copy the given data point value given a numarray object to all data points in this object.
422    
423         Description:
424         Copy the given data point value given a numarray object to all data points in this object.
425    
426         \param value Input - A single data point value.
427      */
428    void    void
429    copy(const boost::python::numeric::array& value);    copy(const boost::python::numeric::array& value);
430    
431      /**
432         \brief
433         Copy the numarray object to the data points in this object.
434    
435         Description:
436         Copy the numarray object to the data points in this object.
437    
438         \param value Input - new values for the data points
439      */
440      void
441      copyAll(const boost::python::numeric::array& value);
442    
443      /**
444         \brief
445         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
446    
447         Description:
448         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
449    
450         \param sampleNo Input - sample number
451         \param dataPointNo Input - data point of the sample
452         \param value Input - new values for the data point
453      */
454      ESCRIPT_DLL_API
455      virtual void
456      copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
457    
458    
459      /**
460         \brief
461         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
462    
463         Description:
464         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
465    
466         \param sampleNo Input - sample number
467         \param dataPointNo Input - data point of the sample
468         \param value Input - new values for the data point
469      */
470      void
471      copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value);
472    
473    //    //
474    // The main data storage array, a 2D array of data blocks.    // The main data storage array, a 2D array of data blocks.
475    // noSamples * noDataPointsPerSample    // noSamples * noDataPointsPerSample

Legend:
Removed from v.119  
changed lines
  Added in v.950

  ViewVC Help
Powered by ViewVC 1.1.26