00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef G1BLENDINGD_H
00014 #define G1BLENDINGD_H
00015
00016 #ifndef PKVARIA_H
00017 #include "pkvaria.h"
00018 #endif
00019 #ifndef PKNUM_H
00020 #include "pknum.h"
00021 #endif
00022 #ifndef PKGEOM_H
00023 #include "pkgeom.h"
00024 #endif
00025 #ifndef MULTIBS_H
00026 #include "multibs.h"
00027 #endif
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033 int g1bl_NiSize ( int nkn );
00034 int g1bl_NijSize ( int nkn );
00035 int g1bl_MijSize ( int nkn );
00036
00037 boolean g1bl_SetupBiharmAMatrixd ( int lastknotu, int lastknotv,
00038 int *n, int **prof, double **Amat, double ***arow );
00039 boolean g1bl_SetupBiharmRHSd ( int lastknotu, int lastknotv,
00040 int spdimen, int pitch, const double *cpoints,
00041 double *rhs );
00042
00043 boolean g1bl_SetupClosedBiharmAMatrixd ( int lastknotu, int lastknotv,
00044 int *n, int **prof, double **Amat, double ***arow );
00045 boolean g1bl_SetupClosedBiharmRHSd ( int lastknotu, int lastknotv,
00046 int spdimen, int pitch, const double *cpoints,
00047 double *rhs );
00048
00049 void g1bl_TabNid ( int nkn, double *bf, double *dbf, double *ddbf,
00050 double *Nitab );
00051 void g1bl_TabNijd ( int nkn, double *bf, double *dbf, double *ddbf,
00052 double *Nijtab );
00053 double g1bl_UFuncd ( int nkn, const double *qcoeff, double *Nitab,
00054 int lastknotu, int lastknotv, int pitch, point3d *cp,
00055 char *dirty,
00056 double tC, double *ftab );
00057
00058
00059 double g1bl_QFuncd ( int nkn, const double *qcoeff, double *Nitab,
00060 int lastknotu, int lastknotv, int pitch, point3d *cp,
00061 char *dirty,
00062 double tC, double *ftab );
00063
00064 double g1bl_biharmFuncd ( int nkn, const double *qcoeff, double *Nitab,
00065 int lastknotu, int lastknotv, int pitch, point3d *cp,
00066 char *dirty,
00067 double tC, double *ftab );
00068
00069 void g1bl_UFuncGradd ( int nkn, const double *qcoeff, double *Nitab,
00070 int lastknotu, int lastknotv,
00071 int pitch, point3d *cp, char *dirty,
00072 double tC, double *ftab, double *gtab,
00073 double *func, double *grad );
00074 void g1bl_UFuncGradHessiand ( int nkn, const double *qcoeff, double *Nitab,
00075 double *Nijtab, double *Mijtab,
00076 int lastknotu, int lastknotv,
00077 int pitch, point3d *cp, char *dirty,
00078 double tC, double *ftab, double *gtab, double *htab,
00079 double *func, double *grad,
00080 int hsize, const int *prof, double **hrows );
00081 double g1bl_SurfNetDiameterSqd ( int lastknotu, int lastknotv,
00082 int pitch, const point3d *cp );
00083
00084 boolean g1bl_InitBlSurfaceOptLMTd ( int lastknotu, int lastknotv, int pitch,
00085 point3d *cp,
00086 double C, double dO, double dM,
00087 int nkn1, int nkn2,
00088 void **data );
00089 boolean g1bl_IterBlSurfaceOptLMTd ( void *data, boolean *finished );
00090 void g1bl_OptLMTDeallocated ( void **data );
00091 boolean g1bl_FindBlSurfaceLMTd ( int lastknotu, int lastknotv, int pitch,
00092 point3d *cp,
00093 double C, double dO, double dM,
00094 int maxit, int nkn1, int nkn2 );
00095
00096
00097 boolean g1bl_InitBlSurfaceConstrOptLMTd ( int lastknotu, int lastknotv, int pitch,
00098 point3d *cp,
00099 int nconstr, double *constrmat,
00100 double *constrrhs,
00101 double C, double dO, double dM,
00102 int nkn1, int nkn2,
00103 void **data );
00104 boolean g1bl_IterBlSurfaceConstrOptLMTd ( void *data, boolean *finished );
00105 void g1bl_ConstrOptLMTDeallocated ( void **data );
00106 boolean g1bl_FindBlSurfaceConstrLMTd ( int lastknotu, int lastknotv, int pitch,
00107 point3d *cp,
00108 int nconstr, double *constrmat,
00109 double *constrrhs,
00110 double C, double dO, double dM,
00111 int maxit, int nkn1, int nkn2 );
00112
00113
00114 boolean g1bl_ClosedInitBlSurfaceOptLMTd ( int lastknotu, int lastknotv, int pitch,
00115 point3d *cp,
00116 double C, double dO, double dM,
00117 int nkn1, int nkn2,
00118 void **data );
00119 boolean g1bl_ClosedIterBlSurfaceOptLMTd ( void *data, boolean *finished );
00120 void g1bl_ClosedOptLMTDeallocated ( void **data );
00121 boolean g1bl_ClosedFindBlSurfaceLMTd ( int lastknotu, int lastknotv, int pitch,
00122 point3d *cp,
00123 double C, double dO, double dM,
00124 int maxit, int nkn1, int nkn2 );
00125
00126
00127 boolean g1bl_ClosedInitBlSurfaceConstrOptLMTd (
00128 int lastknotu, int lastknotv, int pitch, point3d *cp,
00129 int nconstr, double *constrmat, double *constrrhs,
00130 double C, double dO, double dM, int nkn1, int nkn2,
00131 void **data );
00132 boolean g1bl_ClosedIterBlSurfaceConstrOptLMTd ( void *data, boolean *finished );
00133 void g1bl_ClosedConstrOptLMTDeallocated ( void **data );
00134 boolean g1bl_ClosedFindBlSurfaceConstrLMTd (
00135 int lastknotu, int lastknotv, int pitch, point3d *cp,
00136 int nconstr, double *constrmat, double *constrrhs,
00137 double C, double dO, double dM,
00138 int maxit, int nkn1, int nkn2 );
00139
00140 boolean g1bl_SetupULConstraintsd ( int lastknotu, int lastknotv, int spdimen,
00141 int ppitch, double *cp,
00142 int nucurv, double *ucknots,
00143 int cpitch, double *uccp,
00144 int *nconstr, double *cmat, double *crhs );
00145
00146 boolean g1bl_SetupUNLConstraintsd ( int lastknotu, int lastknotv,
00147 int ppitch, point3d *cp,
00148 int nucurv, double *ucknots,
00149 int cpitch, point3d *uccp,
00150 int *nconstr, double *cmat, double *crhs );
00151
00152
00153 boolean g1bl_SetupClosedULConstraintsd ( int lastknotu, int lastknotv, int spdimen,
00154 int ppitch, double *cp,
00155 int nucurv, double *ucknots,
00156 int cpitch, double *uccp,
00157 int *nconstr, double *cmat, double *crhs );
00158
00159 boolean g1bl_SetupClosedUNLConstraintsd ( int lastknotu, int lastknotv,
00160 int ppitch, point3d *cp,
00161 int nucurv, double *ucknots,
00162 int cpitch, point3d *uccp,
00163 int *nconstr, double *cmat, double *crhs );
00164
00165
00166 boolean g1bl_FuncTSQFd ( int nkn,
00167 int lastknotu, int lastknotv, int pitch, point3d *cp,
00168 double tC,
00169 double *fT, double *fS, double *fQ, double *fF );
00170
00171 #ifdef __cplusplus
00172 }
00173 #endif
00174
00175 #endif
00176