00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(FIELD2D_HPP)
00012 #define FIELD2D_HPP
00013 #include "elem2d.hpp"
00014 #include "siforcelist.hpp"
00015 #include "gmemmgr.hpp"
00016
00017 class Field2D
00018 {
00019 public:
00020 Field2D(GINT Num_TimeLevels, Elem2D *e, GSHORT ntmp=2);
00021 ~Field2D();
00022 void operator=(Field2D &);
00023 void operator=(GVector &);
00024 void operator=(GDOUBLE a);
00025
00026 GBOOL ResetOrder(const GSHORT n1, const GSHORT n2);
00027 GBOOL SetExpCoeffs (const GINT iLevel, GVector *);
00028 GBOOL SetExpCoeffs (GVector *);
00029 void SetTimeLevel(GINT ilevel);
00030 void ShiftLevels ();
00031 SIForceList *GetSIForceList();
00032 GINT GetNumTimeLevels();
00033 GVector *GetExpCoeffs (const GINT iLevel);
00034 GVector **GetExpCoeffs ();
00035 GDOUBLE GetTime(const GINT iLevel);
00036 void SetTime(const GINT iLevel, GDOUBLE t);
00037 GVector *GetTemp();
00038 GVector *GetTemp(GSHORT i);
00039 GMemMgr *GetTempMgr();
00040 GBOOL TempLock(GVector *vec);
00041 GBOOL TempUnlock(GVector *vec);
00042 Elem2D *GetElement ();
00043 GVector *GetBdyValues();
00044
00045 GDOUBLE Interp(const GSHORT iLevel, const GDOUBLE x, const GDOUBLE y);
00046
00047 GBOOL Map2NewCoords(GVector *newX, GVector *newY, GIBuffer *inew, GVector *newU,
00048 const GINT iLevel, GIBuffer *iremap);
00049
00050 GBOOL Map2NewElem(Elem2D *newElement, GVector *U[],
00051 const GINT nU, GIBuffer *iremap);
00052 GDOUBLE ComputeUL2 (const GINT );
00053 GDOUBLE ComputeDUL2 (const GINT );
00054 GDOUBLE &operator ()(const GSHORT nLevel, const GLONG i);
00055 friend ostream& operator<<(ostream&, Field2D &);
00056
00057
00058
00059 private:
00060
00061
00062 GBOOL Resize(GINT , GINT );
00063 void DeleteDynamic();
00064
00065
00066 GINT Np1;
00067 GINT Np2;
00068 GINT NN1;
00069 GINT NN2;
00070 GINT iTot;
00071 GINT nTimeLevels;
00072 GINT iTimeLevel;
00073 GBOOL bInitialized;
00074 GDOUBLE *time;
00075 GNBasis *basis1;
00076 GNBasis *basis2;
00077 Elem2D *elem;
00078 SIForceList *flist_ ;
00079 GVector **Un;
00080 GVector *u_bdy_;
00081 GMemMgr *vtmpmgr_;
00082
00083
00084 };
00085
00086 #endif