00001 #ifndef LEAST_SQUARE_H
00002 #define LEAST_SQUARE_H
00003
00004 class gtopology;
00005 struct matrix;
00006 struct vector;
00007 struct ivector;
00008
00009
00010 class least_square
00011 {
00012 public:
00013 least_square (long dim,long ncomp,gtopology *gt,long flag);
00014 ~least_square (void);
00015
00016 void spr_default (FILE *out,double **spvalue,double *nodvalue);
00017 void spr_optional (FILE *out,long *nsp,double **spcoord,double **spvalue,double *nodvalue,long cut_flag);
00018 void L2_nod2sp (FILE *out,long *nsp,double **spcoord,double *nodvalue,double **spvalue,char typ_patch);
00019 void L2_sp2sp (FILE *out,double **spvalue,long nap,const long *parentel,const double **apcoord,double **apvalue);
00020
00021 private:
00022 void nsp_spcoord_maxcoord_assembling (char nsma_flag);
00023 void insidenod_assembling (void);
00024 void adjap_assembling (long nap,const long *parentel,const double **apcoord,long *nadjap,long **adjap);
00025
00026 void compute_patches_spr (long cut_flag);
00027 void compute_patches_nod2sp (char typ_patch);
00028 void compute_patches_sp2sp (long nap,const double **apcoord,const long *nadjap,const long **adjap,double **apvalue);
00029
00030 void normal_coordinates_ae (vector &coef_normcoord);
00031 void polynom_coefficients_ae (const vector &coef_normcoord,vector *a);
00032 void polynom_coefficients_inv_ae (const vector &coef_normcoord,vector *a,char typ_patch);
00033
00034 void nodvalue_assembling_ae (const vector &coef_normcoord,const vector *a,long nid,ivector &magnitude);
00035 void spvalue_assembling_patch_ae (const vector &coef_normcoord,const vector *a,long id,double **magnitude);
00036 void apvalue_assembling (const vector &coef_normcoord,const vector *a,long nadjap,const long *adjap,const double **apcoord,double **apvalue);
00037
00038 void sigma (long ncoef,long nid,const vector &coef_normcoord,const vector *a,ivector &magnitude);
00039 void polynom (long ncoef,const double *normcoord,double *p);
00040
00041
00042
00043 gtopology *gt;
00044
00045
00046
00047
00048
00049 long dim;
00050
00051 long nvals;
00052
00053 long nn;
00054
00055 long ne;
00056
00057
00058
00059
00060 long *nsp;
00061
00062 double **spcoord;
00063
00064 double **spvalue;
00065
00066 double *nodvalue;
00067
00068
00069 double **maxcoord;
00070
00071 long **insidenod;
00072
00073 long *insidelem;
00074
00075
00076 long nadjel;
00077
00078 long *adjel;
00079
00080
00081 long flag;
00082 };
00083
00084 #endif