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