/[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 922 by gross, Fri Jan 5 04:23:05 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    /**    /**
152       \brief       \brief
      Reshape the data point if the data point is currently rank 0.  
      The original data point value is used for all values of the new  
      data point.  
   */  
   void  
   reshapeDataPoint(const DataArrayView::ShapeType& shape);  
   
   /**  
      \brief  
153       Return the offset for the given given data point. This returns       Return the offset for the given given data point. This returns
154       the offset in bytes for the given point into the container       the offset in bytes for the given point into the container
155       holding the point data.       holding the point data.
# Line 160  class DataExpanded : public DataAbstract Line 157  class DataExpanded : public DataAbstract
157       \param sampleNo - Input - sample number.       \param sampleNo - Input - sample number.
158       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
159    */    */
160      ESCRIPT_DLL_API
161    virtual    virtual
162    DataArrayView::ValueType::size_type    DataArrayView::ValueType::size_type
163    getPointOffset(int sampleNo,    getPointOffset(int sampleNo,
# Line 176  class DataExpanded : public DataAbstract Line 174  class DataExpanded : public DataAbstract
174       \param dataPointNo - Input - data point number.       \param dataPointNo - Input - data point number.
175       \return DataArrayView for the data point.       \return DataArrayView for the data point.
176    */    */
177      ESCRIPT_DLL_API
178    DataArrayView    DataArrayView
179    getDataPoint(int sampleNo,    getDataPoint(int sampleNo,
180                 int dataPointNo);                 int dataPointNo);
# Line 184  class DataExpanded : public DataAbstract Line 183  class DataExpanded : public DataAbstract
183       \brief       \brief
184       Return the number of doubles stored for the Data.       Return the number of doubles stored for the Data.
185    */    */
186      ESCRIPT_DLL_API
187    virtual    virtual
188    ValueType::size_type    ValueType::size_type
189    getLength() const;    getLength() const;
# Line 195  class DataExpanded : public DataAbstract Line 195  class DataExpanded : public DataAbstract
195    
196       \param region - Input - Region to copy.       \param region - Input - Region to copy.
197    */    */
198      ESCRIPT_DLL_API
199    virtual    virtual
200    DataAbstract*    DataAbstract*
201    getSlice(const DataArrayView::RegionType& region) const;    getSlice(const DataArrayView::RegionType& region) const;
# Line 206  class DataExpanded : public DataAbstract Line 207  class DataExpanded : public DataAbstract
207       \param value - Input - Data object to copy from.       \param value - Input - Data object to copy from.
208       \param region - Input - Region to copy.       \param region - Input - Region to copy.
209    */    */
210      ESCRIPT_DLL_API
211    virtual    virtual
212    void    void
213    setSlice(const DataAbstract* value,    setSlice(const DataAbstract* value,
# Line 230  class DataExpanded : public DataAbstract Line 232  class DataExpanded : public DataAbstract
232       \param value - Input - Value to assign to data-point associated with       \param value - Input - Value to assign to data-point associated with
233                              the given reference number.                              the given reference number.
234    */    */
235      ESCRIPT_DLL_API
236    virtual    virtual
237    void    void
238    setRefValue(int ref,    setRefValue(int ref,
# Line 255  class DataExpanded : public DataAbstract Line 258  class DataExpanded : public DataAbstract
258       \param value - Output - Object to receive data-points associated with       \param value - Output - Object to receive data-points associated with
259                              the given reference number.                              the given reference number.
260    */    */
261      ESCRIPT_DLL_API
262    virtual    virtual
263    void    void
264    getRefValue(int ref,    getRefValue(int ref,
265                DataArray& value);                DataArray& value);
266    
267      /**
268        \brief
269        Archive the underlying data values to the file referenced
270        by ofstream. A count of the number of values expected to be written
271        is provided as a cross-check.
272    
273        The return value indicates success (0) or otherwise (1).
274      */
275      ESCRIPT_DLL_API
276      int
277      archiveData(std::ofstream& archiveFile,
278                  const DataArrayView::ValueType::size_type noValues) const;
279    
280      /**
281        \brief
282        Extract the number of values specified by noValues from the file
283        referenced by ifstream to the underlying data structure.
284    
285        The return value indicates success (0) or otherwise (1).
286      */
287      ESCRIPT_DLL_API
288      int
289      extractData(std::ifstream& archiveFile,
290                  const DataArrayView::ValueType::size_type noValues);
291    
292      /**
293         \brief
294         Computes a symmetric matrix (A + AT) / 2
295    
296         \param ev - Output - symmetric matrix
297    
298      */
299      ESCRIPT_DLL_API
300      virtual void
301      symmetric(DataAbstract* ev);
302    
303      /**
304         \brief
305         Computes a nonsymmetric matrix (A - AT) / 2
306    
307         \param ev - Output - nonsymmetric matrix
308    
309      */
310      ESCRIPT_DLL_API
311      virtual void
312      nonsymmetric(DataAbstract* ev);
313    
314      /**
315         \brief
316         Computes the trace of a matrix
317    
318         \param ev - Output - trace of your matrix
319    
320      */
321      ESCRIPT_DLL_API
322      virtual void
323      trace(DataAbstract* ev, int axis_offset);
324    
325      /**
326         \brief
327         Transpose each data point of this Data object around the given axis.
328    
329         \param ev - Output - transpose of your matrix
330    
331      */
332      ESCRIPT_DLL_API
333      virtual void
334      transpose(DataAbstract* ev, int axis_offset);
335    
336      /**
337         \brief
338         swaps components axis0 and axis1
339    
340         \param ev - Output - swapped components
341    
342      */
343      ESCRIPT_DLL_API
344      virtual void
345      swapaxes(DataAbstract* ev, int axis0, int axis1);
346    
347    
348      /**
349         \brief
350         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev
351    
352         \param ev - Output - eigenvalues in increasing order at each data point
353    
354      */
355      ESCRIPT_DLL_API
356      virtual void
357      eigenvalues(DataAbstract* ev);
358    
359      /**
360         \brief
361         solves the eigenvalue problem this*V=ev*V for the eigenvalues ev and eigenvectors V
362    
363         \param ev - Output - eigenvalues in increasing order at each data point
364         \param V - Output - corresponding eigenvectors. They are normalized such that their length is one
365                             and the first nonzero component is positive.
366         \param tol - Input - eigenvalue with relative distance tol are treated as equal.
367    
368      */
369    
370      ESCRIPT_DLL_API
371      virtual void
372      eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
373    
374    
375   protected:   protected:
376    
377   private:   private:
# Line 286  class DataExpanded : public DataAbstract Line 398  class DataExpanded : public DataAbstract
398    
399    /**    /**
400       \brief       \brief
401       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.
402    
403       Description:       Description:
404       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 408  class DataExpanded : public DataAbstract
408    void    void
409    copy(const DataArrayView& value);    copy(const DataArrayView& value);
410    
411      /**
412         \brief
413         Copy the given data point value given a numarray object to all data points in this object.
414    
415         Description:
416         Copy the given data point value given a numarray object to all data points in this object.
417    
418         \param value Input - A single data point value.
419      */
420    void    void
421    copy(const boost::python::numeric::array& value);    copy(const boost::python::numeric::array& value);
422    
423      /**
424         \brief
425         Copy the numarray object to the data points in this object.
426    
427         Description:
428         Copy the numarray object to the data points in this object.
429    
430         \param value Input - new values for the data points
431      */
432      void
433      copyAll(const boost::python::numeric::array& value);
434    
435      /**
436         \brief
437         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
438    
439         Description:
440         Copy a double value to the data point dataPointNo of sample sampleNo in this object.
441    
442         \param sampleNo Input - sample number
443         \param dataPointNo Input - data point of the sample
444         \param value Input - new values for the data point
445      */
446      ESCRIPT_DLL_API
447      virtual void
448      copyToDataPoint(const int sampleNo, const int dataPointNo, const double value);
449    
450    
451      /**
452         \brief
453         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
454    
455         Description:
456         Copy the numarray object to the data point dataPointNo of sample sampleNo in this object.
457    
458         \param sampleNo Input - sample number
459         \param dataPointNo Input - data point of the sample
460         \param value Input - new values for the data point
461      */
462      void
463      copyToDataPoint(const int sampleNo, const int dataPointNo, const boost::python::numeric::array& value);
464    
465    //    //
466    // The main data storage array, a 2D array of data blocks.    // The main data storage array, a 2D array of data blocks.
467    // noSamples * noDataPointsPerSample    // noSamples * noDataPointsPerSample

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

  ViewVC Help
Powered by ViewVC 1.1.26