Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.

[netcdfgroup] I wonder why I can not wirte NC files by using nc_put_vara_float

first i used NC_CREATE to create an nc file,then i used NC_WRITE to modify
the contents, after that i found i can change the status except the contents
by using nc_put_vara_float.

source:


void CreateAMonthFile(char *OutputPath,float* val,struct ParameterGroup pg){
...
                size_t startp[] ={ RealTimeNumber, 0, 0, 0 };
                size_t countp[] ={ 1, 1, pg.LatNumber, pg.LonNumber };
                iForecastTime = 0;
                for (; iForecastTime < pg.ForecastNumber; iForecastTime++){
                                    float ValTemp[115 * 87];
                    i = 0;
                    for (; i < pg.LatNumber * pg.LonNumber; i++){
                        ValTemp[i] = val[INDEX(iForecastTime, iVar, i, 
pg.VarNumber,
pg.LatNumber * pg.LonNumber)];
                                                        }
                    status = nc_put_vara_float(ncid, varid[iForecastTime], 
startp, countp,
ValTemp);
                        if (status != NC_NOERR) handle_error(status);
                }
...

}
it seems correct.
but when i using
void AddNewFile(char *OutputPath,float* val,struct ParameterGroup pg, int
RealTimeNumber){

...
nc_open(path, NC_WRITE, &ncid);
                if (status != NC_NOERR) handle_error(status);
...
                        size_t startp[] ={ RealTimeNumber, 0, 0, 0 };
                        size_t countp[] ={ 1, 1, pg.LatNumber, pg.LonNumber };
                        float ValTemp[pg.LonNumber * pg.LatNumber];
                        int i = 0;
                        for (; i < pg.LatNumber * pg.LonNumber; i++)
                        {
                                ValTemp[i] = val[INDEX(iForecastTime, iVar, i, 
pg.VarNumber,
pg.LatNumber * pg.LonNumber)];
                                i++;
                        }

                        char s[3];
                        sprintf(s, "%03d", iForecastTime);
                        memcpy(Varname, VarNameString[iVar], 10);
                        strcat(Varname, s);
                        status = nc_inq_varid(ncid, Varname, 
&varid[iForecastTime]);
                        if (status != NC_NOERR) handle_error(status);
                        status = nc_put_vara_float(ncid, varid[iForecastTime], 
startp, countp,
ValTemp);
                        if (status != NC_NOERR) handle_error(status);
....

}

in this section i found it is no changes whatever the values of  ValTemp i
filled





--
View this message in context: 
http://netcdf-group.1586084.n2.nabble.com/I-wonder-why-I-can-not-wirte-NC-files-by-using-nc-put-vara-float-tp7574646.html
Sent from the NetCDF Group mailing list archive at Nabble.com.
  • 2012 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: