00001 00005 class FieldFV : public FieldWithPtValues 00006 00007 { 00008 int nsd; 00009 Handle(GridFV) mesh; 00010 Handle(Vec(NUMT)) nodal_values; 00011 00012 bool reallocate 00013 ( 00014 const GridFV& grid, 00015 const Vec(NUMT)* coefficients =NULL, 00016 const char* fieldname = NULL 00017 ); 00018 00019 00020 public: 00021 00022 FieldFV (); 00023 00024 00025 FieldFV (const GridFV& grid, 00026 const char* fieldname); 00027 FieldFV (const GridFV& grid, Vec(NUMT)& coefficients, 00028 const char* fieldname); 00029 00030 ~FieldFV (); 00031 00032 bool redim (const GridFV& grid, const char* fieldname); 00033 00034 00035 bool redim (const GridFV& grid, const Vec(NUMT)& coefficients, 00036 const char* fieldname); 00037 00038 bool redim (const FieldFV& f, const char* fieldname); 00039 00040 GridFV& grid () { return mesh.getRef(); } 00041 const GridFV& grid () const { return mesh.getRef(); } 00042 Vec(NUMT)& values () { return nodal_values.getRef(); } 00043 const Vec(NUMT)& values () const { return nodal_values.getRef(); } 00044 00045 void fieldFV2FieldFE (FieldFE& field_fe); 00046 00047 void exchangeValues (FieldFV& f); 00048 00049 bool empty () const; 00050 virtual bool ok () const; 00051 virtual void minmax (NUMT& min, NUMT& max, GridWithPts* grid =NULL) const; 00052 00053 virtual NUMT& valueDof (int dofno); 00054 virtual NUMT valueDof (int dofno) const; 00055 virtual NUMT& valuePoint (int point_no); 00056 virtual NUMT valuePoint (int point_no) const; 00057 00058 virtual NUMT valuePt (const Ptv(real)& x, real t = DUMMY); 00059 00060 00061 virtual Ptv(NUMT) derivativePt (const Ptv(real)& x, real t = DUMMY); 00062 00063 00064 00065 void operator = (const FieldFV& field); 00066 void operator = (const FieldFunc& func); 00067 void fill (const FieldFunc& func, real time = DUMMY); 00068 00069 virtual void print (Os os) const; 00070 void scan (Is is); 00071 00072 virtual void fill (NUMT value); 00073 virtual void add (NUMT value); 00074 virtual void mult (NUMT value); 00075 virtual void apply (Func(NUMT) f); 00076 virtual void add (Field& field, int power, NUMT front_factor); 00077 00078 virtual Field& scale (); 00079 virtual Field& unscale (); 00080 00081 virtual void unloadData (Os os) const; 00082 virtual void loadData (Is is); 00083 virtual void attach (Grid& grid); 00084 virtual Grid* getGridBase(); 00085 00086 00087 00088 virtual int getNoPoints () const 00089 { return mesh->getNoDofs (); } 00090 00091 virtual int getNoValues () const 00092 { return nodal_values->size(); } 00093 00094 virtual Ptv(real) getPt (int point_no) const 00095 { return mesh->getDofCoor (point_no); } 00096 00097 virtual GridWithPts& getGridWithPts () 00098 { return mesh.getRef (); } 00099 00100 virtual const GridWithPts& getGridWithPts () const 00101 { return mesh.getRef (); } 00102 00103 virtual Vec(NUMT)& valuesVec () 00104 { return nodal_values.getRef(); } 00105 00106 virtual const Vec(NUMT)& valuesVec () const 00107 { return nodal_values.getRef(); } 00108 00109 NUMT& valueNode (int i, real t = DUMMY); 00110 virtual NUMT valueNode (int i, real t = DUMMY) const; 00111 00112 NUMT getVol2ElmValue (int volno); 00113 00114 bool getBoVertexValue (int vertexno, NUMT &value); 00115 00116 00117 CLASS_INFO 00118 00119 VIRTUAL_CAST(FieldFV) 00120 00121 00122 00123 COPY_CONSTRUCTOR(FieldFV); 00124 }; 00125 00126