Skip to content

Commit 7cf5bf0

Browse files
committed
CHG: missing Finalize routine. Also fixing major segfault.
1 parent 2eed371 commit 7cf5bf0

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/c/classes/BarystaticContributions.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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
} /*}}}*/
137147
void 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){

src/c/classes/BarystaticContributions.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class BarystaticContributions {
4242
void Save(Results* results, Parameters* parameters, IssmDouble oceanarea);
4343
void Set(int eid, IssmDouble icevalue, IssmDouble hydrovalue, IssmDouble oceanvalue);
4444
void Reset();
45+
void Finalize();
4546

4647
};
4748
#endif /* _BARYSTATICCONTRIBUTIONS_H_ */

0 commit comments

Comments
 (0)