eghprivated.h

Go to the documentation of this file.
00001 
00002 /* ///////////////////////////////////////////////////////////////////////// */
00003 /* This file is a part of the BSTools package                                */
00004 /* written by Przemyslaw Kiciak                                              */
00005 /* ///////////////////////////////////////////////////////////////////////// */
00006 /* (C) Copyright by Przemyslaw Kiciak, 2005, 2008                            */
00007 /* this package is distributed under the terms of the                        */
00008 /* Lesser GNU Public License, see the file COPYING.LIB                       */
00009 /* ///////////////////////////////////////////////////////////////////////// */
00010 
00011 /* this header file is private for g1hole library functions; */
00012 /* it is NOT intended to be #included in application source files */
00013 
00014 #ifndef EGHPRIVATED_H
00015 #define EGHPRIVATED_H
00016 
00017 /* angle tolerances for partition analysis */
00018 #define MIN_DELTA (PI/180.0)       /*   1 degree  */
00019 #define MAX_DELTA (179.0*PI/180.0) /* 179 degrees */
00020 #define ANGLETOL (0.001*PI/180)    /* 0.001 degree */
00021 
00022 /* partition of the full angle description element */
00023 typedef struct GHoleSgnPartd {
00024     double  alpha;  /* the first three fields of this structure */
00025     double  malpha; /* must be as they are, for the sake */
00026     double  salpha; /* of the sorting procedure */
00027     double  knot;
00028     boolean sgn, both;
00029   } GHoleSgnPartd;
00030 
00031 typedef struct GHolePrivateRecd {
00032     point2d  *dombezpt;    /* Bezier patches surrounding the domain */
00033     vector2d *surrpc;      /* boundary curves and cross derivatives */
00034                            /* of the surrounding patches */
00035     vector2d *surrpcbc;    /* derivatives of the surrounding patches */
00036                            /* at relevant corners */
00037     double   *domsurrbf;   /* polynomials, which determine boundary */
00038                            /* conditions for the block B basis functions */
00039     double   diam;         /* domain "diameter" */
00040     unsigned char  *bfcpn;
00041     unsigned short *support_b;
00042   } GHolePrivateRecd;
00043 
00044 
00045 int gh_GetDefaultOptiond ( GHoleDomaind *domain, int query, int qn,
00046                           int *ndata, int **idata, double **fdata );
00047 
00048 double *_gh_GetKnotSequenced ( GHoleDomaind *domain, int i );
00049 point2d *_gh_GetDomSurrndPatchd ( GHoleDomaind *domain, int i, int j );
00050 boolean _gh_FindDomSurrndPatchd ( GHoleDomaind *domain,
00051                                   int i, int j, point2d *bezcp );
00052 boolean _gh_FindDomSurrndBFuncPatchesd ( GHoleDomaind *domain );
00053 boolean _gh_FindBasisFuncbSupport ( int hole_k, int nfunc_b,    
00054                                     unsigned short *support_b,
00055                                     unsigned char *bfcpn );
00056 boolean _gh_AnalyzePartitiond ( GHoleDomaind *domain, int omcdeg,
00057                                 vector2d *omcbc, int *_hole_m, int *_auxp_k,
00058                                 double **_partition, GHoleSgnPartd **_spartition,
00059                                 double *_spart_alpha0 );
00060 void _gh_PrepareTabKnotsd ( int nquad, int opt, double *knots );
00061 void _g2h_DiJacobian3d ( const vector2d *du, const vector2d *dv,
00062                          const vector2d *duu, const vector2d *duv,
00063                          const vector2d *dvv,
00064                          const vector2d *duuu, const vector2d *duuv,
00065                          const vector2d *duvv, const vector2d *dvvv,
00066                          double *jac, double *trd );
00067 double _g2h_Integrald ( int hole_k, int nknsq, double *jac,
00068                         unsigned short supp1, vector2d *func1,
00069                         unsigned short supp2, vector2d *func2 );
00070 double _g2h_Integral0d ( int nknsq, const double *jac,
00071                          const vector2d *func1, const vector2d *func2 );
00072 double _g2h_SplIntegrald ( int nkn, double *jac,
00073                            int i00, int i01, int j00, int j01, vector2d *func0,
00074                            int i10, int i11, int j10, int j11, vector2d *func1 );
00075 void _g2h_TabSplCLaplacianGradd ( int nkn,
00076             int fknp, int lknp, const double *tp, const double *tpu,
00077             const double *tpuu, const double *tpuuu,
00078             int fknq, int lknq, const double *tq, const double *tqv,
00079             const double *tqvv, const double *tqvvv,
00080             const double *trd, vector2d *lgr );
00081 #endif
00082