@@ -133,6 +133,16 @@ void BarystaticContributions::Reset(){ /*{{{*/
133133 hydro->Set (0 .);
134134 ocean->Set (0 .);
135135
136+ } /* }}}*/
137+ void BarystaticContributions::Finalize (){ /* {{{*/
138+
139+ ice->Set (0 .);
140+ cumice->Set (0 .);
141+ hydro->Set (0 .);
142+ cumhydro->Set (0 .);
143+ ocean->Set (0 .);
144+ cumocean->Set (0 .);
145+
136146} /* }}}*/
137147void BarystaticContributions::Save (Results* results, Parameters* parameters, IssmDouble oceanarea){ /* {{{*/
138148
@@ -163,16 +173,25 @@ void BarystaticContributions::Save(Results* results, Parameters* parameters, Iss
163173 results->AddResult (new GenericExternalResult<IssmDouble>(results->Size ()+1 ,CumBslcOceanEnum,sumocean/oceanarea/rho_water,step,time));
164174
165175 if (nice){
166- cumice_serial=this ->cumice ->ToMPISerial0 (); for (int i=0 ;i<nice;i++)cumice_serial[i]=cumice_serial[i]/oceanarea/rho_water;
167- results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcIcePartitionEnum,cumice_serial,nice,1 ,step,time));
176+ cumice_serial=this ->cumice ->ToMPISerial0 ();
177+ if (IssmComm::GetRank ()==0 ){
178+ for (int i=0 ;i<nice;i++)cumice_serial[i]=cumice_serial[i]/oceanarea/rho_water;
179+ results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcIcePartitionEnum,cumice_serial,nice,1 ,step,time));
180+ }
168181 }
169182 if (nhydro){
170- cumhydro_serial=this ->cumhydro ->ToMPISerial0 (); for (int i=0 ;i<nhydro;i++)cumhydro_serial[i]=cumhydro_serial[i]/oceanarea/rho_water;
171- results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcHydroPartitionEnum,cumhydro_serial,nhydro,1 ,step,time));
183+ cumhydro_serial=this ->cumhydro ->ToMPISerial0 ();
184+ if (IssmComm::GetRank ()==0 ){
185+ for (int i=0 ;i<nhydro;i++)cumhydro_serial[i]=cumhydro_serial[i]/oceanarea/rho_water;
186+ results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcHydroPartitionEnum,cumhydro_serial,nhydro,1 ,step,time));
187+ }
172188 }
173189 if (nocean){
174- cumocean_serial=this ->cumocean ->ToMPISerial0 (); for (int i=0 ;i<nocean;i++)cumocean_serial[i]=cumocean_serial[i]/oceanarea/rho_water;
175- results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcOceanPartitionEnum,cumocean_serial,nocean,1 ,step,time));
190+ cumocean_serial=this ->cumocean ->ToMPISerial0 ();
191+ if (IssmComm::GetRank ()==0 ){
192+ for (int i=0 ;i<nocean;i++)cumocean_serial[i]=cumocean_serial[i]/oceanarea/rho_water;
193+ results->AddResult (new GenericExternalResult<IssmDouble*>(results->Size ()+1 ,CumBslcOceanPartitionEnum,cumocean_serial,nocean,1 ,step,time));
194+ }
176195 }
177196
178197 if (IssmComm::GetRank ()==0 ){
0 commit comments