g2blendingd.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, 2009, 2010                            */
00007 /* this package is distributed under the terms of the                        */
00008 /* Lesser GNU Public License, see the file COPYING.LIB                       */
00009 /* ///////////////////////////////////////////////////////////////////////// */
00010 
00011 #ifndef G2BLENDINGD_H
00012 #define G2BLENDINGD_H
00013 
00014 #ifndef PKVARIA_H
00015 #include "pkvaria.h"
00016 #endif
00017 #ifndef PKNUM_H
00018 #include "pknum.h"
00019 #endif
00020 #ifndef PKGEOM_H
00021 #include "pkgeom.h"
00022 #endif
00023 #ifndef MULTIBS_H
00024 #include "multibs.h"
00025 #endif
00026 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030 
00031 
00032 /* procedures implementing the construction of triharmonic patches */
00033 boolean g2bl_SetupTriharmAMatrixd ( int lastknotu, int lastknotv,
00034                            int *n, int **prof, double **Amat, double ***arow );
00035 boolean g2bl_SetupTriharmRHSd ( int lastknotu, int lastknotv,
00036                            int spdimen, int pitch, const double *cpoints,
00037                            double *rhs );
00038 
00039 boolean g2bl_SetupClosedTriharmAMatrixd ( int lastknotu, int lastknotv,
00040                            int *n, int **prof, double **Amat, double ***arow );
00041 boolean g2bl_SetupClosedTriharmRHSd ( int lastknotu, int lastknotv,
00042                            int spdimen, int pitch, const double *cpoints,
00043                            double *rhs );
00044 
00045 /* procedures implementing the construction of minimal blending patches */
00046 /* of a nonlinear functional measuring surface shape badness */
00047 
00048 int g2bl_NiSize ( int nkn );
00049 int g2bl_NijSize ( int nkn );
00050 int g2bl_MijSize ( int nkn );
00051 
00052 int _g2bl_SetupHessian1Profile ( int lastknotu, int lastknotv, int *prof );
00053 
00054 double g2bl_UFuncd ( int nkn, const double *qcoeff, double *Nitab,
00055                      int lastknotu, int lastknotv, int pitch, point3d *cp,
00056                      char *dirty,
00057                      double tC, double *ftab );
00058 void g2bl_UFuncGradd ( int nkn, const double *qcoeff, double *Nitab,
00059                        int lastknotu, int lastknotv,
00060                        int pitch, point3d *cp, char *dirty,
00061                        double tC, double *ftab, double *gtab,
00062                        double *func, double *grad );
00063 void g2bl_UFuncGradHessiand ( int nkn, const double *qcoeff, double *Nitab,
00064                               double *Nijtab, double *Mijtab,
00065                               int lastknotu, int lastknotv,
00066                               int pitch, point3d *cp, char *dirty,
00067                               double tC, double *ftab, double *gtab, double *htab,
00068                               double *func, double *grad,
00069                               int hsize, const int *prof, double **hrows );
00070 void g2bl_ClosedUFuncGradd ( int nkn, const double *qcoeff, double *Nitab,
00071                        int lastknotu, int lastknotv,
00072                        int pitch, point3d *cp, char *dirty,
00073                        double tC, double *ftab, double *gtab,
00074                        double *func, double *grad );
00075 void g2bl_ClosedUFuncGradHessiand ( int nkn, const double *qcoeff, double *Nitab,
00076                               double *Nijtab, double *Mijtab,
00077                               int lastknotu, int lastknotv,
00078                               int pitch, point3d *cp, char *dirty,
00079                               double tC, double *ftab, double *gtab, double *htab,
00080                               double *func, double *grad,
00081                               int hsize, const int *prof, double **hrows );
00082 
00083 double g2bl_SurfNetDiameterSqd ( int lastknotu, int lastknotv,
00084                                  int pitch, const point3d *cp );
00085 double g2bl_ClosedSurfNetDiameterSqd ( int lastknotu, int lastknotv,
00086                                        int pitch, const point3d *cp );
00087 
00088 
00089 boolean g2bl_InitBlSurfaceOptLMTd ( int lastknotu, int lastknotv, int pitch,
00090                                     point3d *cp,
00091                                     double C, double dO, double dM,
00092                                     int nkn1, int nkn2,
00093                                     void **data );
00094 boolean g2bl_IterBlSurfaceOptLMTd ( void *data, boolean *finished );
00095 void g2bl_OptLMTDeallocated ( void **data );
00096 boolean g2bl_FindBlSurfaceLMTd ( int lastknotu, int lastknotv, int pitch,
00097                                  point3d *cp,
00098                                  double C, double dO, double dM,
00099                                  int maxit, int nkn1, int nkn2 );
00100 
00101 
00102 boolean g2bl_InitBlSurfaceConstrOptLMTd ( int lastknotu, int lastknotv, int pitch,
00103                                           point3d *cp,
00104                                           int nconstr, double *constrmat,
00105                                           double *constrrhs,
00106                                           double C, double dO, double dM,
00107                                           int nkn1, int nkn2,
00108                                           void **data );
00109 boolean g2bl_IterBlSurfaceConstrOptLMTd ( void *data, boolean *finished );
00110 void g2bl_ConstrOptLMTDeallocated ( void **data );
00111 boolean g2bl_FindBlSurfaceConstrLMTd ( int lastknotu, int lastknotv, int pitch,
00112                                        point3d *cp,
00113                                        int nconstr, double *constrmat,
00114                                        double *constrrhs,
00115                                        double C, double dO, double dM,
00116                                        int maxit, int nkn1, int nkn2 );
00117 
00118 
00119 boolean g2bl_ClosedInitBlSurfaceOptLMTd ( int lastknotu, int lastknotv, int pitch,
00120                                           point3d *cp,
00121                                           double C, double dO, double dM,
00122                                           int nkn1, int nkn2,
00123                                           void **data );
00124 boolean g2bl_ClosedIterBlSurfaceOptLMTd ( void *data, boolean *finished );
00125 void g2bl_ClosedOptLMTDeallocated ( void **data );
00126 boolean g2bl_ClosedFindBlSurfaceLMTd ( int lastknotu, int lastknotv, int pitch,
00127                                        point3d *cp,
00128                                        double C, double dO, double dM,
00129                                        int maxit, int nkn1, int nkn2 );
00130 
00131 
00132 boolean g2bl_ClosedInitBlSurfaceConstrOptLMTd (
00133                    int lastknotu, int lastknotv, int pitch, point3d *cp,
00134                    int nconstr, double *constrmat, double *constrrhs,
00135                    double C, double dO, double dM, int nkn1, int nkn2,
00136                    void **data );
00137 boolean g2bl_ClosedIterBlSurfaceConstrOptLMTd ( void *data, boolean *finished );
00138 void g2bl_ClosedConstrOptLMTDeallocated ( void **data );
00139 boolean g2bl_ClosedFindBlSurfaceConstrLMTd (
00140                    int lastknotu, int lastknotv, int pitch, point3d *cp,
00141                    int nconstr, double *constrmat, double *constrrhs,
00142                    double C, double dO, double dM,
00143                    int maxit, int nkn1, int nkn2 );
00144 
00145 
00146 boolean g2bl_SetupULConstraintsd ( int lastknotu, int lastknotv, int spdimen,
00147                                    int ppitch, double *cp,
00148                                    int nucurv, double *ucknots,
00149                                    int cpitch, double *uccp,
00150                                    int *nconstr, double *cmat, double *crhs );
00151 
00152 boolean g2bl_SetupUNLConstraintsd ( int lastknotu, int lastknotv,
00153                                     int ppitch, point3d *cp,
00154                                     int nucurv, double *ucknots,
00155                                     int cpitch, point3d *uccp,
00156                                     int *nconstr, double *cmat, double *crhs );
00157 
00158 
00159 boolean g2bl_SetupClosedULConstraintsd ( int lastknotu, int lastknotv, int spdimen,
00160                                          int ppitch, double *cp,
00161                                          int nucurv, double *ucknots,
00162                                          int cpitch, double *uccp,
00163                                          int *nconstr, double *cmat, double *crhs );
00164 
00165 boolean g2bl_SetupClosedUNLConstraintsd ( int lastknotu, int lastknotv,
00166                                           int ppitch, point3d *cp,
00167                                           int nucurv, double *ucknots,
00168                                           int cpitch, point3d *uccp,
00169                                           int *nconstr, double *cmat, double *crhs );
00170 
00171 
00172 boolean g2bl_FuncTSQFd ( int nkn,
00173                          int lastknotu, int lastknotv, int pitch, point3d *cp,
00174                          double tC,
00175                          double *fT, double *fS, double *fQ, double *fF );
00176 
00177 #ifdef __cplusplus
00178 }
00179 #endif
00180 
00181 #endif /*G2BLENDINGD_H*/
00182