1 #ifndef FILE_SOLDATA 2 #define FILE_SOLDATA 3 4 5 namespace netgen 6 { 7 8 using namespace std; 9 10 class DLL_HEADER SolutionData 11 { 12 protected: 13 14 string name; 15 int components; 16 bool iscomplex; 17 18 int multidimcomponent; 19 20 public: SolutionData(const string & aname,int acomponents=1,bool aiscomplex=0)21 SolutionData (const string & aname, 22 int acomponents = 1, bool aiscomplex = 0) 23 : name(aname), components(acomponents), iscomplex(aiscomplex) 24 { ; } 25 ~SolutionData()26 virtual ~SolutionData () 27 { ; } 28 GetComponents()29 int GetComponents() 30 { 31 return components; 32 } 33 IsComplex()34 bool IsComplex() 35 { 36 return iscomplex; 37 } 38 GetValue(int,double,double,double,double *)39 virtual bool GetValue (int /* elnr */, 40 double /* lam1 */, double /* lam2 */, double /* lam3 */, 41 double * /* values */) 42 { 43 return false; 44 } 45 GetValue(int selnr,const double xref[],const double x[],const double dxdxref[],double * values)46 virtual bool GetValue (int selnr, 47 const double xref[], const double x[], const double dxdxref[], 48 double * values) 49 { 50 return GetValue (selnr, xref[0], xref[1], xref[2], values); 51 } 52 GetMultiValue(int elnr,int npts,const double * xref,int sxref,const double * x,int sx,const double * dxdxref,int sdxdxref,double * values,int svalues)53 virtual bool GetMultiValue (int elnr, int npts, 54 const double * xref, int sxref, 55 const double * x, int sx, 56 const double * dxdxref, int sdxdxref, 57 double * values, int svalues) 58 { 59 bool res = false; 60 for (int i = 0; i < npts; i++) 61 res = GetValue (elnr, &xref[i*sxref], &x[i*sx], &dxdxref[i*sdxdxref], &values[i*svalues]); 62 return res; 63 } 64 65 66 GetSurfValue(int,double,double,double *)67 virtual bool GetSurfValue (int /* selnr */, 68 double /* lam1 */, double /* lam2 */, 69 double * /* values */) 70 { 71 return false; 72 } 73 74 GetSurfValue(int selnr,const double xref[],const double x[],const double dxdxref[],double * values)75 virtual bool GetSurfValue (int selnr, 76 const double xref[], const double x[], const double dxdxref[], 77 double * values) 78 { 79 return GetSurfValue (selnr, xref[0], xref[1], values); 80 } 81 82 GetMultiSurfValue(int selnr,int npts,const double * xref,int sxref,const double * x,int sx,const double * dxdxref,int sdxdxref,double * values,int svalues)83 virtual bool GetMultiSurfValue (int selnr, int npts, 84 const double * xref, int sxref, 85 const double * x, int sx, 86 const double * dxdxref, int sdxdxref, 87 double * values, int svalues) 88 { 89 bool res = false; 90 for (int i = 0; i < npts; i++) 91 res = GetSurfValue (selnr, &xref[i*sxref], &x[i*sx], &dxdxref[i*sdxdxref], &values[i*svalues]); 92 return res; 93 } 94 95 GetNumMultiDimComponents()96 virtual int GetNumMultiDimComponents () 97 { 98 return 1; 99 } 100 SetMultiDimComponent(int mc)101 void SetMultiDimComponent (int mc) 102 { 103 if (mc >= GetNumMultiDimComponents()) mc = GetNumMultiDimComponents()-1; 104 if (mc < 0) mc = 0; 105 multidimcomponent = mc; 106 } 107 }; 108 } 109 110 #endif 111 112