00001 00005 class Field : public virtual HandleId 00006 00007 { 00008 protected: 00009 Field (const char* fieldname = NULL); 00010 String fieldname; 00011 00012 Handle(SpaceTimeScale) xt_scale; 00013 ScalarScale field_scale; 00014 00015 public: 00016 virtual ~Field (); 00017 00018 00019 static void checkAndSetFieldname (String& fieldname, const char* name); 00020 00021 void setFieldname (const char* name); 00022 String getFieldname () const { return fieldname; } 00023 bool hasFieldname () const; 00024 00025 virtual bool ok () const; 00026 virtual void minmax (NUMT& min, NUMT& max, GridWithPts* grid =NULL) const; 00027 00028 virtual NUMT valuePt (const Ptv(real)& x, real t = DUMMY); 00029 virtual NUMT valueFEM (const FiniteElement& fe, real t = DUMMY); 00030 virtual NUMT valueNode (int node, real t = DUMMY) const; 00031 00032 virtual NUMT divergencePt (const Ptv(real)& x, real t = DUMMY); 00033 virtual NUMT divergenceFEM (const FiniteElement& fe, real t = DUMMY); 00034 virtual NUMT divergenceNode (int node, real t = DUMMY); 00035 00036 virtual Ptv(NUMT) derivativePt (const Ptv(real)& x, real t = DUMMY); 00037 virtual void derivativeFEM (Ptv(NUMT)& d, const FiniteElement& fe, 00038 real t = DUMMY); 00039 virtual void derivativeNode (Ptv(NUMT)& d, int node, real t = DUMMY); 00040 00041 virtual void hessianPt (Ptv(NUMT)&, const Ptv(real)& x, real = DUMMY); 00042 virtual void hessianFEM (Ptv(NUMT)&, const FiniteElement& fe, real = DUMMY); 00043 virtual void hessianNode (Ptv(NUMT)&, int node, real = DUMMY); 00044 00045 virtual void fill (NUMT value); 00046 virtual void add (NUMT value); 00047 virtual void mult (NUMT value); 00048 virtual void apply (Func(NUMT) f); 00049 virtual void add (Field& field, int power, NUMT front_factor); 00050 00051 void attachScale (const SpaceTimeScale& xt_scale); 00052 ScalarScale& getFieldScale (); 00053 const SpaceTimeScale& getSpaceTimeScale (); 00054 bool hasScaling (); 00055 bool isScaled () { return field_scale.is_scaled; } 00056 virtual Field& scale (); 00057 virtual Field& unscale (); 00058 00059 00060 virtual void print (Os os) const; 00061 00062 virtual void attach (Grid& grid); 00063 virtual Grid* getGridBase(); 00064 virtual void loadData (Is is); 00065 virtual void unloadData (Os os) const; 00066 00067 CLASS_INFO 00068 00069 DEF_VIRTUAL_CAST(FieldPiWisConst) 00070 DEF_VIRTUAL_CAST(FieldWithPtValues) 00071 DEF_VIRTUAL_CAST(FieldConst) 00072 DEF_VIRTUAL_CAST(FieldFE) 00073 DEF_VIRTUAL_CAST(FieldFV) 00074 DEF_VIRTUAL_CAST(FieldLattice) 00075 DEF_VIRTUAL_CAST(FieldScatPt) 00076 DEF_VIRTUAL_CAST(FieldFunc) 00077 DEF_VIRTUAL_CAST(FieldSelector) 00078 }; 00079 00080