00001 #ifndef GADAPTIVITY_H
00002 #define GADAPTIVITY_H
00003
00004 #include <stdio.h>
00005 class gtopology;
00006 struct ivector;
00007 struct matrix;
00008 struct vector;
00009
00010 void give_der_star (vector &bf, vector *rderfull,ivector &nodes,vector &der_star,long nn);
00011 void ntnmtov (matrix &ntnm,vector &ntnv);
00012 void print_contoures (gtopology *gt,char *file,double **midpoints,double *valel);
00013 void print_confile (const char *file,long nnod,long nel,double **auxxyzv,long **auxnod,long dim);
00014
00015 void fprintf_matrix (FILE *stream, matrix &mx, char s[]);
00016 void fprintf_vector (FILE *stream,vector &v,char s[],long c);
00017 void fprintf_ivector (FILE *stream,ivector &v,char s[],long c);
00018
00019 void fprintf_d_1D (FILE *stream,double *p,long p_n,char s[],long c);
00020 void fprintf_l_1D (FILE *stream,long *p,long p_n,char s[],long c);
00021 void fprintf_l_2D (FILE *stream,long **p,long p_n,long p_m,char s[],long c);
00022
00023 long edge_position (gtopology *gt,long node1,long node2);
00024 long surface_position (gtopology *gt,long node1,long node2,long node3);
00025
00026 long adjelem2edge (gtopology *gt,long node1,long node2,long eid);
00027
00028 long opposite_node (gtopology *gt,long *nod,long eid);
00029
00030 void print_valel (FILE *stream, gtopology *gt, const char *path, const char *file, char *caption, double *valel, char flag);
00031
00032
00033
00034
00035
00036
00037 class patch_averaging
00038 {
00039 private:
00040
00041 gtopology *gt;
00042
00043
00044
00045
00046 long dim;
00047 long nvals;
00048 long nn;
00049 long ne;
00050
00051
00052
00053
00054 double **spcoord;
00055
00056
00057
00058 double **maxcoord;
00059
00060 long **insidenod;
00061
00062
00063
00064
00065
00066 long flag;
00067
00068 public:
00069
00070 patch_averaging (gtopology *gt, long dim, long nvals, long flag);
00071
00072 ~patch_averaging (void);
00073
00074
00075 void solve (FILE *out, const matrix *spvalue, vector *nodvalue);
00076
00077 private:
00078
00079 void nsp_spcoord_maxcoord_assembling (const matrix *spvalue, char nsma_flag);
00080 void insidenod_assembling (void);
00081 void compute_patches_spr (const matrix *spvalue, vector *nodvalue, long cut_flag);
00082
00083 void normal_coordinates_ae (long nadjel, const long *adjel, vector &coef_normcoord);
00084 void polynom_coefficients_ae (long nadjel, const long *adjel, const vector &coef_normcoord, vector *a, const matrix *spvalue);
00085 void nodvalue_assembling_ae (long nadjel, const long *adjel, const vector &coef_normcoord, const vector *a, vector *nodvalue, long nid, ivector &magnitude);
00086
00087
00088 void polynom (long ncoef, const double *normcoord, double *p);
00089
00090 void sigma (vector *nodvalue, long ncoef,long nid,const vector &coef_normcoord,const vector *a,ivector &magnitude);
00091
00092 };
00093
00094
00095 #endif