NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Hi Xxxxx, > Hello, I'm trying to find the answer to this specific problem : in my > program I would like to have a "dynamic" number of dimensions for my > variable "t" because it depends of 2 _or more_ elements (A, B, C, D, > ...). Here are few lines working fine in "static" mode : > > int t_id; > # define RANK_t 2 // how to make this rank dynamic ? > int t_dims[RANK_t]; > stat = nc_def_var(ncid, "t", NC_INT, RANK_t, t_dims, &t_id); > > It seems kinda simple, I tried everything but can't make it work, if you > could help me of point me to some document it would be nice. > Thanks for your answer, > Milan > p.s. I'm programming in C++ but this question is more language-independent. > ------------------------------------ > netcdf file_name { > dimensions: > A = 11 ; > B = 11 ; > ... > variables: > double A(A) ; > double B(B) ; > double ... > ... > int t(A, B, ...) ; > > data: > > A = 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ; > > B = 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ; > > ... > > t = > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, > 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 > ... > } Sorry, but there is no way to create a variable with a dynamic rank in the netCDF API's, if you mean that you want to be able to change the rank of a variable at run time. Variables with variaable or undetermined rank are not part of the netCDF data model. If you just want to be able to define a netCDF variable with a rank that depends on a run-time parameter, that's easy. For example in C you would do something like int rank_t, t_id; int *t_dims; /* array of dimids to be allocated */ rank_t = ...; /* determine what rank you want at run time */ int *t_dims = malloc(rank_t * sizeof(int)); for(int i=0; i < rank_t; i++) { t_dims[i] = ... ; /* dimid of ith dimension for t */ } stat = nc_def_var(ncid, "t", NC_INT, rank_t, t_dims, &t_id); In C++ you could allocate the t_dims array with "new". If you meant something else and I've misunderstood your question, please let me know. --Russ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: XHT-915046 Department: Support netCDF Priority: Normal Status: Closed