ESYS13  Revision_
DataConstant.h
Go to the documentation of this file.
00001 
00002 /*******************************************************
00003 *
00004 * Copyright (c) 2003-2012 by University of Queensland
00005 * Earth Systems Science Computational Center (ESSCC)
00006 * http://www.uq.edu.au/esscc
00007 *
00008 * Primary Business: Queensland, Australia
00009 * Licensed under the Open Software License version 3.0
00010 * http://www.opensource.org/licenses/osl-3.0.php
00011 *
00012 *******************************************************/
00013 
00014 
00015 #if !defined escript_DataConstant_20040323_H
00016 #define escript_DataConstant_20040323_H
00017 #include "system_dep.h"
00018 
00019 #include "DataReady.h"
00020 #include "WrappedArray.h"
00021 
00022 
00023 namespace escript {
00024 
00034 class DataConstant : public DataReady  {
00035 typedef DataReady parent;
00036  public:
00037 
00048   ESCRIPT_DLL_API
00049   DataConstant(const WrappedArray& value,
00050                const FunctionSpace& what);
00051 
00052 
00057   ESCRIPT_DLL_API
00058   DataConstant(const DataConstant& other);
00059 
00060 
00070   ESCRIPT_DLL_API
00071   DataConstant(const DataConstant& other,
00072                const DataTypes::RegionType& region);
00073 
00084   ESCRIPT_DLL_API
00085   DataConstant(const FunctionSpace& what,
00086                const DataTypes::ShapeType &shape,
00087                const DataTypes::ValueType &data);
00088 
00089   ESCRIPT_DLL_API
00090   DataConstant(const FunctionSpace& what,
00091                            const DataTypes::ShapeType &shape,
00092                            const double v);
00093            
00094            
00095   ESCRIPT_DLL_API
00096   bool
00097   isConstant() const 
00098   {
00099     return true;
00100   };
00101 
00105   ESCRIPT_DLL_API
00106   bool
00107   hasNaN() const;
00108 
00113   ESCRIPT_DLL_API
00114   std::string
00115   toString() const;
00116 
00120   ESCRIPT_DLL_API
00121   virtual
00122   DataAbstract*
00123   deepCopy();
00124 
00125 
00130   ESCRIPT_DLL_API
00131   virtual
00132   void
00133   dump(const std::string fileName) const;
00134 
00139   ESCRIPT_DLL_API
00140   virtual
00141   void
00142   setToZero();
00143 
00153   ESCRIPT_DLL_API
00154   virtual
00155   DataTypes::ValueType::size_type
00156   getPointOffset(int sampleNo,
00157                  int dataPointNo) const;
00158 
00159   ESCRIPT_DLL_API
00160   virtual
00161   DataTypes::ValueType::size_type
00162   getPointOffset(int sampleNo,
00163                  int dataPointNo);
00164 
00169   ESCRIPT_DLL_API
00170   virtual
00171   DataTypes::ValueType::size_type
00172   getLength() const;
00173 
00181   ESCRIPT_DLL_API
00182   virtual
00183   DataAbstract*
00184   getSlice(const DataTypes::RegionType& region) const;
00185 
00192   ESCRIPT_DLL_API
00193   virtual
00194   void
00195   setSlice(const DataAbstract* value,
00196            const DataTypes::RegionType& region);
00197 
00198 
00206   ESCRIPT_DLL_API
00207   virtual void
00208   symmetric(DataAbstract* ev);
00209 
00217   ESCRIPT_DLL_API
00218   virtual void
00219   nonsymmetric(DataAbstract* ev);
00220 
00229   ESCRIPT_DLL_API
00230   virtual void
00231   trace(DataAbstract* ev, int axis_offset);
00232 
00240   ESCRIPT_DLL_API
00241   virtual void
00242   transpose(DataAbstract* ev, int axis_offset);
00243 
00252   ESCRIPT_DLL_API
00253   virtual void
00254   swapaxes(DataAbstract* ev, int axis0, int axis1);
00255 
00256 
00264   ESCRIPT_DLL_API
00265   virtual void
00266   eigenvalues(DataAbstract* ev);
00267 
00279   ESCRIPT_DLL_API
00280   virtual void
00281   eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
00282 
00283 
00289   ESCRIPT_DLL_API
00290   virtual int
00291   matrixInverse(DataAbstract* out) const;
00292 
00297   ESCRIPT_DLL_API
00298   DataTypes::ValueType&
00299   getVectorRW();
00300 
00301 
00302   ESCRIPT_DLL_API
00303   const DataTypes::ValueType&
00304   getVectorRO() const;
00305 
00306  protected:
00307 
00308  private:
00309   //
00310   // the actual data
00311   DataTypes::ValueType m_data;
00312 
00313 };
00314 
00315 } // end of namespace
00316 #endif