00001 #ifndef MATHEM_H 00002 #define MATHEM_H 00003 00004 #include "vector.h" 00005 #include "matrix.h" 00006 #include "basefun.h" 00007 class gtopology; 00008 00009 double radius (vector &x,vector &natcoord); 00010 double length (vector &coorda,vector &coordb); 00011 double sqr(double x); 00012 void nodal_values (double **val,vector &nx,vector &ny,vector &nz, 00013 double *lhs,long dim,long fi,long ncomp); 00014 00015 double sgn (double i); 00016 double heaviside (double x); 00017 double genheaviside (double x,double eps); 00018 double polynom_4 (double x,double *a); 00019 00020 void sort_2 (long *x); 00021 void sort_3 (long *x); 00022 void sort_4 (long *x); 00023 void sort_3 (double *x); 00024 00025 long solv_polynom_2 (double a,double b,double c,double &r1,double &r2); 00026 long solv_polynom_3 (double a, double b, double c, double d, double &r1, double &r2, double &r3); 00027 long solv_polynom_4 (double *coeff,double a,double b,double acc,double *roots); 00028 00029 long solv_1le (double a,double b,double &x); 00030 long solv_2le (double *a, double *b, double *c,double &x,double &y); 00031 long solv_2nle (double *a, double *b, double *c, double *d,double *x,double *y); 00032 00033 void nc_lin_3_2d (double xx,double yy,double *x,double *y,double &xi,double &eta); 00034 void nc_quad_3_2d (double acc,double xx,double yy,double *x,double *y,double &xi,double &eta); 00035 void nc_lin_4_2d (double acc,double xx,double yy,double *x,double *y,double &xi,double &eta); 00036 void nc_quad_4_2d (double acc,double xx,double yy,double *x,double *y,double &xi,double &eta); 00037 00038 void interpolelem (gtopology *gt,long &nli,long **&lin,long &ntr,long **&trn,long &nqu,long **&qun,long &nte,long **&ten,long &ncu,long **&cun,long &nmp,double **&mpn,char flag); 00039 void print_ex (gtopology *gt, const char *file, double *valnod, double *valel); 00040 void print_dx (gtopology *gt, const char *file,double **valnod,double **valel,char tve, long *dimindex, char **caption,long nindex); 00041 00042 void maxmin_3 (double *x,double &max,double &min); 00043 void maxmin_4 (double *x,double &max,double &min); 00044 00045 00046 double lsm_quad(matrix &a, vector &r, vector &l, double x, double y, double x_old, double y_old, double zero, long solc); 00047 00048 int check_math_err(); 00049 int check_math_errel(long eid); 00050 long test_math_err(); 00051 00052 #endif