Changeset 25574
- Timestamp:
- 09/15/20 09:05:03 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/cores/transient_core.cpp
r25564 r25574 392 392 femmodel->IceVolumeAboveFloatationx(&J,false); 393 393 } 394 if(IssmComm::GetRank()==0)tape_codi.registerOutput(J);394 tape_codi.registerOutput(J); 395 395 396 396 tape_codi.setPassive(); 397 J.gradient() = 1.0;397 if(IssmComm::GetRank()==0) J.gradient() = 1.0; 398 398 tape_codi.evaluate(); 399 399 … … 465 465 } 466 466 467 /*Broadcast gradient to other ranks (make sure to sum all gradients)*/ 468 double* gradient=xNew<double>(Xsize); 469 ISSM_MPI_Allreduce(Xb,gradient,Xsize,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm()); 470 467 471 /*Now set final gradient*/ 468 472 IssmDouble* aG=xNew<IssmDouble>(Xsize); 469 for(int i=0;i<Xsize;i++){ 470 aG[i] = reCast<IssmDouble>(Xb[i]); 471 } 473 for(int i=0;i<Xsize;i++) aG[i] = reCast<IssmDouble>(gradient[i]); 474 xDelete<double>(gradient); 472 475 ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,aG); 473 476 xDelete<IssmDouble>(aG);
Note:
See TracChangeset
for help on using the changeset viewer.