Changeset 16118


Ignore:
Timestamp:
09/10/13 15:11:11 (12 years ago)
Author:
utke
Message:

CHG make sure independent/dependent settings happen only on rank 0

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/ad_core.cpp

    r16115 r16118  
    187187                                /*retrieve direction index: */
    188188                                femmodel->parameters->FindParam(&aDepIndex,AutodiffFosReverseIndexEnum);
    189 
    190                                 if (aDepIndex<0 || aDepIndex>=num_dependents) _error_("index value for AutodiffFosReverseIndexEnum should be in [0,num_dependents-1]");
    191 
    192189                                aWeightVector=xNewZeroInit<double>(num_dependents);
    193                                 aWeightVector[aDepIndex]=1.0;
    194 
     190                                if (my_rank==0) {
     191                                        if (aDepIndex<0 || aDepIndex>=num_dependents) _error_("index value for AutodiffFosReverseIndexEnum should be in [0,num_dependents-1]");
     192                                        aWeightVector[aDepIndex]=1.0;
     193                                }
    195194                                weightVectorTimesJac=xNew<double>(num_independents);
    196195
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r16043 r16118  
    817817        IssmPDouble *dependents;
    818818        DataSet*    dependent_objects=NULL;
     819        int my_rank=IssmComm::GetRank();
    819820
    820821        /*AD mode on?: */
     
    826827                parameters->FindParam(&dependent_objects,AutodiffDependentObjectsEnum);
    827828                if(num_dependents){
    828                         dependents=xNew<IssmPDouble>(num_dependents);
    829 
    830                         /*Go through our dependent variables, and compute the response:*/
    831                         for(int i=0;i<dependent_objects->Size();i++){
    832                                 DependentObject* dep=(DependentObject*)dependent_objects->GetObjectByOffset(i);
    833                                 dep->Responsex(&output_value,this);
    834                                 output_value>>=dependents[i];
     829                        if (my_rank==0) {
     830                                dependents=xNew<IssmPDouble>(num_dependents);
     831
     832                                /*Go through our dependent variables, and compute the response:*/
     833                                for(int i=0;i<dependent_objects->Size();i++){
     834                                        DependentObject* dep=(DependentObject*)dependent_objects->GetObjectByOffset(i);
     835                                        dep->Responsex(&output_value,this);
     836                                        output_value>>=dependents[i];
     837                                }
    835838                        }
    836839                }
Note: See TracChangeset for help on using the changeset viewer.