Changeset 21912
- Timestamp:
- 08/03/17 16:05:42 (8 years ago)
- Location:
- issm/trunk-jpl/src/wrappers/M1qn3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/wrappers/M1qn3/M1qn3.cpp
r21910 r21912 48 48 int intn; 49 49 int priorn; 50 int maxsteps,maxiter;51 50 Data data_struct; 52 51 … … 56 55 /*intermediary: */ 57 56 double f; 58 double dxmin= .01;59 double gttol= .0001;57 double dxmin=0.01; 58 double gttol=0.0001; 60 59 long omode; 61 60 62 61 /*checks on arguments on the matlab side: */ 63 if(nlhs!=NLHS){ 64 M1qn3Usage(); 65 _error_("M1qn3 usage error"); 66 } 67 if(nrhs!=5){ 62 if(nlhs!=NLHS || nrhs!=3){ 68 63 M1qn3Usage(); 69 64 _error_("M1qn3 usage error"); … … 74 69 FetchData(&Gs,&intn,&priorn,GHANDLE); 75 70 FetchData(&Js,&priorn,JHANDLE); 76 FetchData(&maxsteps,MAXSTEPSHANDLE);77 FetchData(&maxiter,MAXITERHANDLE);78 79 /*_printf_("Xs: " << Xs[0] << "\n");80 _printf_("Gs: " << Gs[0] << "\n");81 _printf_("Js: " << Js[0] << "\n");82 _printf_("maxiter: " << maxiter << "\n");83 _printf_("maxsteps: " << maxsteps << "\n");*/84 71 85 72 /*Initialize M1QN3 parameters*/ … … 97 84 98 85 /*Optimization criterions*/ 99 long niter = long( maxsteps); /*Maximum number of iterations*/100 long nsim = long( maxiter);/*Maximum number of function calls*/86 long niter = long(intn); /*Maximum number of iterations*/ 87 long nsim = long(intn); /*Maximum number of function calls*/ 101 88 102 89 /*Get problem dimension and initialize X, G and f: */ 103 /*_printf_("intn: " << intn << "\n");104 _printf_("priorn: " << priorn << "\n");*/105 90 long n = long(intn); 106 IssmPDouble* G = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)G[i]=Gs[i*priorn ];107 IssmPDouble* X = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)X[i]=Xs[i*priorn ];91 IssmPDouble* G = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)G[i]=Gs[i*priorn+0]; 92 IssmPDouble* X = xNew<IssmPDouble>(n); for (int i=0;i<n;i++)X[i]=Xs[i*priorn+0]; 108 93 f = Js[0]; 109 94 110 /*_printf_("X: " << X[0] << "\n");111 _printf_("G: " << G[0] << "\n");112 _printf_("J: " << f << "\n");113 _printf_("n: " << n << "\n");*/114 115 116 95 /*Allocate m1qn3 working arrays (see doc)*/ 117 96 long m = 100; … … 133 112 134 113 switch(int(omode)){ 135 case 0: /*_printf0_(" Stop requested (indic = 0)\n"); */break;114 case 0: _printf0_(" Stop requested\n"); break; 136 115 case 1: _printf0_(" Convergence reached (gradient satisfies stopping criterion)\n"); break; 137 116 case 2: _printf0_(" Bad initialization\n"); break; … … 180 159 } 181 160 else{ 182 //_printf0_("counter: " << ds->counter << "\n");183 161 ds->counter++; 184 162 *pf=Js[ds->counter]; 185 for(int i=0;i<*n;i++) X[i]=Xs[ds->priorn*i+ds->counter];186 for(int i=0;i<*n;i++) G[i]=Gs[ds->priorn*i+ds->counter];163 for(int i=0;i<*n;i++) X[i]=Xs[ds->priorn*i+ds->counter]; 164 for(int i=0;i<*n;i++) G[i]=Gs[ds->priorn*i+ds->counter]; 187 165 } 188 166 167 printf("J [i] = %g\n",*pf); 189 168 } 190 169 #endif -
issm/trunk-jpl/src/wrappers/M1qn3/M1qn3.h
r19011 r21912 30 30 #define GHANDLE prhs[1] 31 31 #define JHANDLE prhs[2] 32 #define MAXSTEPSHANDLE prhs[3]33 #define MAXITERHANDLE prhs[4]34 32 /* serial output macros: */ 35 33 #define XOUT (mxArray**)&plhs[0] … … 39 37 /* serial input macros: */ 40 38 #define XHANDLE PyTuple_GetItem(args,0) 41 #define GHANDLE PyTuple_GetItem(args,1) 42 #define JHANDLE PyTuple_GetItem(args,2) 43 #define MAXSTEPSHANDLE PyTuple_GetItem(args,3) 44 #define MAXITERHANDLE PyTuple_GetItem(args,4) 39 #define GHANDLE PyTuple_GetItem(args,1) 40 #define JHANDLE PyTuple_GetItem(args,2) 45 41 /* serial output macros: */ 46 42 #define XOUT output,0
Note:
See TracChangeset
for help on using the changeset viewer.