Changeset 22633
- Timestamp:
- 03/26/18 15:10:15 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
r22612 r22633 123 123 CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type); 124 124 solutioncore(femmodel); 125 126 125 127 126 /*Reset the time to zero for next optimization*/ … … 276 275 _assert_(JlistN==num_responses+1); 277 276 278 /*Compute objective function */277 /*Compute objective function and broadcast it to other cpus*/ 279 278 *pf = reCast<double>(J); 279 ISSM_MPI_Bcast(pf,1,ISSM_MPI_PDOUBLE,0,IssmComm::GetComm()); 280 280 _printf0_("f(x) = "<<setw(12)<<setprecision(7)<<*pf<<" | "); 281 281 … … 410 410 /*Initialize Gradient and cost function of M1QN3*/ 411 411 indic = 4; /*gradient required*/ 412 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);413 412 simul_ad(&indic,&n,X,&f,G,izs,rzs,(void*)&mystruct); 414 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);415 413 /*Estimation of the expected decrease in f during the first iteration*/ 416 414 double df1=f; 417 415 418 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);419 416 /*Call M1QN3 solver*/ 420 417 m1qn3_(simul_ptr,prosca,&ctonbe_,&ctcabe_, … … 422 419 >tol,normtype,&impres,&io,imode,&omode,&niter,&nsim,iz,dz,&ndz, 423 420 &reverse,&indic,izs,rzs,(void*)&mystruct); 424 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);425 421 switch(int(omode)){ 426 422 case 0: _printf0_(" Stop requested (indic = 0)\n"); break; … … 434 430 default: _printf0_(" Unknown end condition\n"); 435 431 } 432 436 433 /*Constrain solution vector*/ 437 434 double *XL = NULL; 438 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);439 435 double *XU = NULL; 440 436 GetPassiveVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound"); 441 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);442 437 GetPassiveVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound"); 443 438 444 printf("-------------- file: controladm1qn3_core.cpp line: %i\n",__LINE__);445 439 for(int i=0;i<numberofvertices;i++){ 446 440 for(int c=0;c<num_controls;c++){ … … 465 459 466 460 /*Add last cost function to results*/ 461 462 if (solution_type == TransientSolutionEnum){ 463 int step = 1; 464 femmodel->parameters->SetParam(step,StepEnum); 465 femmodel->OutputControlsx(&femmodel->results); 466 femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,1,0)); 467 } 468 else{ 469 femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,0,0)); 470 467 471 femmodel->OutputControlsx(&femmodel->results); 468 femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,mystruct.Jlist,(*mystruct.i),mystruct.N,0,0)); 469 472 } 470 473 /*Finalize*/ 471 474 if(VerboseControl()) _printf0_(" preparing final solution\n"); … … 474 477 CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type); 475 478 solutioncore(femmodel); 476 477 479 478 480 /*Clean-up and return*/
Note:
See TracChangeset
for help on using the changeset viewer.