Changeset 25574


Ignore:
Timestamp:
09/15/20 09:05:03 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: checkpointing now working in parallelss!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/transient_core.cpp

    r25564 r25574  
    392392                femmodel->IceVolumeAboveFloatationx(&J,false);
    393393        }
    394         if(IssmComm::GetRank()==0) tape_codi.registerOutput(J);
     394        tape_codi.registerOutput(J);
    395395
    396396        tape_codi.setPassive();
    397         J.gradient() = 1.0;
     397        if(IssmComm::GetRank()==0) J.gradient() = 1.0;
    398398        tape_codi.evaluate();
    399399
     
    465465        }
    466466
     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
    467471        /*Now set final gradient*/
    468472        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);
    472475        ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,aG);
    473476        xDelete<IssmDouble>(aG);
Note: See TracChangeset for help on using the changeset viewer.