escript  Revision_
DataConstant.h
Go to the documentation of this file.
00001 
00002 /*****************************************************************************
00003 *
00004 * Copyright (c) 2003-2014 by University of Queensland
00005 * http://www.uq.edu.au
00006 *
00007 * Primary Business: Queensland, Australia
00008 * Licensed under the Open Software License version 3.0
00009 * http://www.opensource.org/licenses/osl-3.0.php
00010 *
00011 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
00012 * Development 2012-2013 by School of Earth Sciences
00013 * Development from 2014 by Centre for Geoscience Computing (GeoComp)
00014 *
00015 *****************************************************************************/
00016 
00017 
00018 #if !defined escript_DataConstant_20040323_H
00019 #define escript_DataConstant_20040323_H
00020 #include "system_dep.h"
00021 
00022 #include "DataReady.h"
00023 #include "WrappedArray.h"
00024 
00025 
00026 namespace escript {
00027 
00037 class DataConstant : public DataReady  {
00038 typedef DataReady parent;
00039  public:
00040 
00051   ESCRIPT_DLL_API
00052   DataConstant(const WrappedArray& value,
00053                const FunctionSpace& what);
00054 
00055 
00060   ESCRIPT_DLL_API
00061   DataConstant(const DataConstant& other);
00062 
00063 
00073   ESCRIPT_DLL_API
00074   DataConstant(const DataConstant& other,
00075                const DataTypes::RegionType& region);
00076 
00087   ESCRIPT_DLL_API
00088   DataConstant(const FunctionSpace& what,
00089                const DataTypes::ShapeType &shape,
00090                const DataTypes::ValueType &data);
00091 
00092   ESCRIPT_DLL_API
00093   DataConstant(const FunctionSpace& what,
00094                            const DataTypes::ShapeType &shape,
00095                            const double v);
00096            
00097            
00098   ESCRIPT_DLL_API
00099   bool
00100   isConstant() const 
00101   {
00102     return true;
00103   };
00104 
00108   ESCRIPT_DLL_API
00109   bool
00110   hasNaN() const;
00111 
00116   ESCRIPT_DLL_API
00117   std::string
00118   toString() const;
00119 
00123   ESCRIPT_DLL_API
00124   virtual
00125   DataAbstract*
00126   deepCopy();
00127 
00128 
00133   ESCRIPT_DLL_API
00134   virtual
00135   void
00136   dump(const std::string fileName) const;
00137 
00142   ESCRIPT_DLL_API
00143   virtual
00144   void
00145   setToZero();
00146 
00156   ESCRIPT_DLL_API
00157   virtual
00158   DataTypes::ValueType::size_type
00159   getPointOffset(int sampleNo,
00160                  int dataPointNo) const;
00161 
00162   ESCRIPT_DLL_API
00163   virtual
00164   DataTypes::ValueType::size_type
00165   getPointOffset(int sampleNo,
00166                  int dataPointNo);
00167 
00172   ESCRIPT_DLL_API
00173   virtual
00174   DataTypes::ValueType::size_type
00175   getLength() const;
00176 
00184   ESCRIPT_DLL_API
00185   virtual
00186   DataAbstract*
00187   getSlice(const DataTypes::RegionType& region) const;
00188 
00195   ESCRIPT_DLL_API
00196   virtual
00197   void
00198   setSlice(const DataAbstract* value,
00199            const DataTypes::RegionType& region);
00200 
00201 
00209   ESCRIPT_DLL_API
00210   virtual void
00211   symmetric(DataAbstract* ev);
00212 
00220   ESCRIPT_DLL_API
00221   virtual void
00222   nonsymmetric(DataAbstract* ev);
00223 
00232   ESCRIPT_DLL_API
00233   virtual void
00234   trace(DataAbstract* ev, int axis_offset);
00235 
00243   ESCRIPT_DLL_API
00244   virtual void
00245   transpose(DataAbstract* ev, int axis_offset);
00246 
00255   ESCRIPT_DLL_API
00256   virtual void
00257   swapaxes(DataAbstract* ev, int axis0, int axis1);
00258 
00259 
00267   ESCRIPT_DLL_API
00268   virtual void
00269   eigenvalues(DataAbstract* ev);
00270 
00282   ESCRIPT_DLL_API
00283   virtual void
00284   eigenvalues_and_eigenvectors(DataAbstract* ev,DataAbstract* V,const double tol=1.e-13);
00285 
00286 
00292   ESCRIPT_DLL_API
00293   virtual int
00294   matrixInverse(DataAbstract* out) const;
00295 
00300   ESCRIPT_DLL_API
00301   DataTypes::ValueType&
00302   getVectorRW();
00303 
00304 
00305   ESCRIPT_DLL_API
00306   const DataTypes::ValueType&
00307   getVectorRO() const;
00308 
00309  protected:
00310 
00311  private:
00312   //
00313   // the actual data
00314   DataTypes::ValueType m_data;
00315 
00316 };
00317 
00318 } // end of namespace
00319 #endif