Changeset 16770
- Timestamp:
- 11/14/13 16:22:11 (11 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/IoModel.cpp
r16768 r16770 1195 1195 } 1196 1196 /*}}}*/ 1197 /*FUNCTION IoModel::FetchMultipleData(int** pvector, int* pM,int data_enum){{{*/ 1198 void IoModel::FetchMultipleData(int** pvector, int* pnum_instances,int data_enum){ 1199 1200 int num_instances; 1201 fpos_t* file_positions=NULL; 1202 1203 /*output: */ 1204 int* vector=NULL; 1205 int num 1206 1207 /*intermediary: */ 1208 int M, N; 1209 IssmPDouble *pmatrix = NULL; 1210 IssmDouble *matrix = NULL; 1211 int *codes = NULL; 1212 int code; 1213 1214 /*recover my_rank:*/ 1215 int my_rank=IssmComm::GetRank(); 1216 1217 /*Get file pointers to beginning of the data (multiple instances of it): */ 1218 file_positions=this->SetFilePointersToData(&codes,NULL,&num_instances,data_enum); 1219 1220 if(num_instances){ 1221 1222 /*Allocate vector :*/ 1223 vector=xNew<int>(num_instances); 1224 1225 for(int i=0;i<num_instances;i++){ 1226 1227 if(my_rank==0){ 1228 code=codes[i]; 1229 1230 if(code!=2)_error_("expecting an integer for enum " << EnumToStringx(data_enum)); 1231 1232 /*We have to read a integer from disk. First read the dimensions of the integer, then the integer: */ 1233 fsetpos(fid,file_positions+i); 1234 if(my_rank==0){ 1235 if(fread(&integer,sizeof(int),1,fid)!=1) _error_("could not read integer "); 1236 } 1237 } 1238 ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 1239 1240 /*Assign: */ 1241 vector[i]=integer; 1242 } 1243 } 1244 1245 /*Free ressources:*/ 1246 xDelete<fpos_t>(file_positions); 1247 xDelete<int>(codes); 1248 1249 /*Assign output pointers: */ 1250 *pvector=vector; 1251 *pnum_instances=num_instances; 1252 } 1253 /*}}}*/ 1197 1254 /*FUNCTION IoModel::FetchMultipleData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pM,int data_enum){{{*/ 1198 1255 void IoModel::FetchMultipleData(IssmDouble*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,int data_enum){ -
issm/trunk-jpl/src/c/classes/IoModel.h
r16768 r16770 80 80 void FetchMultipleData(IssmDouble*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,int data_enum); 81 81 void FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,int data_enum); 82 void FetchMultipleData(int** pvector, int* pnum_instances,int data_enum); 82 83 void FetchData(Option **poption,int data_enum); 83 84 void FetchData(int num,...);
Note:
See TracChangeset
for help on using the changeset viewer.