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