00001 #ifndef SUNDANCEVECTORSPACE_H
00002 #define SUNDANCEVECTORSPACE_H
00003
00004 #include "TSFDefs.h"
00005 #include "TSFVectorType.h"
00006 #include "TSFVectorSpaceBase.h"
00007 #include "TSFVector.h"
00008 #include "AbstractFunctionSpace.h"
00009 #include "Defaults.h"
00010 #include <string>
00011
00012 namespace Sundance
00013 {
00014 using namespace TSF;
00015
00016 using std::string;
00017
00018
00019
00020
00021
00022 class SundanceVectorSpace : public TSFVectorSpaceBase
00023 {
00024 public:
00025
00026 SundanceVectorSpace(const AbstractFunctionSpace& abstractSpace,
00027 const TSFVectorType& vectorType
00028 = Defaults::vectorType());
00029
00030 SundanceVectorSpace(const Mesh& mesh, const BasisFamily& basis,
00031 const TSFVectorType& vectorType
00032 = Defaults::vectorType());
00033
00034 SundanceVectorSpace(const Mesh& mesh, const BasisFamily& basis,
00035 const CellSet& domain,
00036 const TSFVectorType& vectorType
00037 = Defaults::vectorType());
00038
00039
00040 SundanceVectorSpace(const Mesh& mesh, const TSFArray<BasisFamily>& basis,
00041 const TSFVectorType& vectorType
00042 = Defaults::vectorType());
00043
00044
00045 SundanceVectorSpace(const Mesh& mesh,
00046 const TSFArray<BasisFamily>& basis,
00047 const TSFArray<CellSet>& domains,
00048 const TSFVectorType& vectorType
00049 = Defaults::vectorType());
00050
00051
00052 virtual ~SundanceVectorSpace(){;}
00053
00054
00055 virtual TSFVectorSpaceBase* deepCopy() const ;
00056
00057
00058 virtual int dim() const ;
00059
00060
00061 virtual TSFVectorBase* createMember(const TSFVectorSpace& handle) const;
00062
00063
00064 virtual bool checkEquality(const TSFVectorSpaceBase* other) const ;
00065
00066
00067 virtual void print(ostream& os) const ;
00068
00069
00070 const TSFVectorSpace& space() const {return space_;}
00071
00072
00073 const AbstractFunctionSpace& abstractSpace() const
00074 {return abstractSpace_;}
00075
00076
00077 static const SundanceVectorSpace* getSpace(const TSFVectorSpace& space);
00078
00079 private:
00080
00081 AbstractFunctionSpace abstractSpace_;
00082
00083
00084 TSFVectorType vectorType_;
00085
00086
00087 TSFVectorSpace space_;
00088 };
00089 }
00090
00091 #endif