Changeset 4428
- Timestamp:
- 07/07/10 11:03:54 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r4236 r4428 39 39 double* qmu_mass_flux_segments=NULL; 40 40 double* my_qmu_mass_flux_segments=NULL; 41 int num_qmu_mass_flux_segments=0; 42 int my_num_qmu_mass_flux_segments=0; 41 double* qmu_mass_flux_num_segments=NULL; 42 double* my_qmu_mass_flux_num_segments=NULL; 43 int tot_qmu_mass_flux_segments=0; 44 int my_tot_qmu_mass_flux_segments=0; 45 int tot_qmu_mass_flux_num_segments=0; 46 int my_tot_qmu_mass_flux_num_segments=0; 43 47 44 48 #ifdef _SERIAL_ … … 155 159 156 160 /*We need the qmu_mass_flux_segments to be able to compute the mass flux: */ 157 IoModelFetchData(&qmu_mass_flux_segments,&num_qmu_mass_flux_segments,NULL,iomodel_handle,"qmu_mass_flux_segments"); 161 IoModelFetchData(&qmu_mass_flux_segments,&tot_qmu_mass_flux_segments,NULL,iomodel_handle,"qmu_mass_flux_segments"); 162 IoModelFetchData(&qmu_mass_flux_num_segments,&tot_qmu_mass_flux_num_segments,NULL,iomodel_handle,"qmu_mass_flux_num_segments"); 158 163 159 164 #ifdef _PARALLEL_ … … 164 169 /*Use the element partitioning vector from the iomodel to down select qmu_mass_flux_segments to only segments that are relevant 165 170 * to this cpu: */ 166 my_ num_qmu_mass_flux_segments=0;167 for(j=0;j< num_qmu_mass_flux_segments;j++){168 if ( iomodel->my_elements[(int)(*(qmu_mass_flux_segments+5*j+4))-1])my_ num_qmu_mass_flux_segments++;171 my_tot_qmu_mass_flux_segments=0; 172 for(j=0;j<tot_qmu_mass_flux_segments;j++){ 173 if ( iomodel->my_elements[(int)(*(qmu_mass_flux_segments+5*j+4))-1])my_tot_qmu_mass_flux_segments++; 169 174 } 170 175 171 176 172 if(my_ num_qmu_mass_flux_segments){173 my_qmu_mass_flux_segments=(double*)xcalloc(5*my_ num_qmu_mass_flux_segments,sizeof(double));177 if(my_tot_qmu_mass_flux_segments){ 178 my_qmu_mass_flux_segments=(double*)xcalloc(5*my_tot_qmu_mass_flux_segments,sizeof(double)); 174 179 second_count=0; 175 for(j=0;j< num_qmu_mass_flux_segments;j++){180 for(j=0;j<tot_qmu_mass_flux_segments;j++){ 176 181 if (iomodel->my_elements[(int)*(qmu_mass_flux_segments+5*j+4)-1]){ 177 182 for(k=0;k<5;k++)*(my_qmu_mass_flux_segments+5*second_count+k)=*(qmu_mass_flux_segments+5*j+k); … … 181 186 } 182 187 183 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,my_qmu_mass_flux_segments,my_ num_qmu_mass_flux_segments,5));188 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,my_qmu_mass_flux_segments,my_tot_qmu_mass_flux_segments,5)); 184 189 185 190 } … … 187 192 #else 188 193 189 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,qmu_mass_flux_segments,num_qmu_mass_flux_segments,5)); 194 parameters->AddObject(new DoubleMatParam(QmuMassFluxSegmentsEnum,qmu_mass_flux_segments,tot_qmu_mass_flux_segments,5)); 195 parameters->AddObject(new DoubleVecParam(QmuMassFluxNumSegmentsEnum,qmu_mass_flux_num_segments,tot_qmu_mass_flux_num_segments)); 190 196 191 197 #endif … … 193 199 xfree((void**)&qmu_mass_flux_segments); 194 200 xfree((void**)&my_qmu_mass_flux_segments); 201 xfree((void**)&qmu_mass_flux_num_segments); 202 xfree((void**)&my_qmu_mass_flux_num_segments); 195 203 } 196 204 if (strcmp(descriptor,"misfit")==0){
Note:
See TracChangeset
for help on using the changeset viewer.