00001
00002
00003
00004
00005
00006
00007
00008
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
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
00046
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
00182