med_int nmipfbfr(med_int *fid, char *name, med_int *lon1, med_int *it, med_int *nc, med_int *pw, med_float *co) #endif { med_int _ret; char *_fn1; _fn1 = _MED2cstring(name, (int) * lon1); if (!_fn1 ) return(-1); _ret = (med_int) MEDinterpBaseFunctionRd((med_idt) *fid, _fn1, (med_int) *it, (med_int *) nc, (med_int *) pw, (med_float *) co ); _MEDcstringFree(_fn1); return(_ret); }
int main (int argc, char **argv) { med_idt fid; const char interpname[MED_NAME_SIZE+1] = "MED_TRIA3 interpolation family"; med_geometry_type geotype =MED_NONE; med_bool cellnodes =MED_FALSE; med_int nbasisfunc =0; med_int nvariable =0; med_int maxdegree =0; med_int nmaxcoefficient =0; int basisfuncit =0; int powerit =0; med_int ncoefficient =0; med_int* power =NULL; med_float* coefficient =NULL; int coefficientit =0; int ret=-1; /* file creation */ fid = MEDfileOpen("UsesCase_MEDinterp_1.med",MED_ACC_RDONLY); if (fid < 0) { MESSAGE("ERROR : file creation ..."); goto ERROR; } /* with direct access by the family name */ if (MEDinterpInfoByName(fid,interpname,&geotype,&cellnodes,&nbasisfunc, &nvariable,&maxdegree,&nmaxcoefficient) < 0) { MESSAGE("ERROR : interpolation function information ..."); goto ERROR; } /* read each basis function */ for ( basisfuncit=1; basisfuncit<= nbasisfunc; ++basisfuncit) { if ((ncoefficient = MEDinterpBaseFunctionCoefSize(fid,interpname,basisfuncit) ) <0 ) { MESSAGE("ERROR : read number of coefficient in the base function ..."); goto ERROR; } coefficient = (med_float*) calloc(sizeof(med_float),ncoefficient); power = (med_int*) calloc(sizeof(med_int),nvariable*ncoefficient); if (MEDinterpBaseFunctionRd(fid,interpname,basisfuncit,&ncoefficient,power,coefficient) < 0) { MESSAGE("ERROR : read base function ..."); free(coefficient); free(power); goto ERROR; } free(coefficient); free(power); } ret=0; ERROR: /* close file */ if (MEDfileClose(fid) < 0) { MESSAGE("ERROR : close file ..."); ret=-1; } return ret; }