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.
Hello, I recently implemented netcdf output for a individual based model written in java. The idea is to save a number of variable for each individual at each time step. The netcdf output works well, but it takes a lot of time when it writes data in the netcdf. I wonder if this time could be reduced by gathering all the variables I want to save in a single Array before to write it in the netcdf rather than doing it separately for each variable, as I do it in my current script (below). Does anyone has any idea wether it would work, and how to to it? Many thanks, Timothée- public void writeResults_NetCDF(ArrayList pop) throws Exception { ArrayDouble.D2 longitude_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 latitude_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayInt.D2 prof_Data = new ArrayInt.D2(1, drifter.getLength()); ArrayInt.D2 identification_Data = new ArrayInt.D2(1, drifter.getLength()); ArrayInt.D2 age_Data = new ArrayInt.D2(1, drifter.getLength()); // <<<<<<<peut-être viré ArrayDouble.D2 E_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 V_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 E_H_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 E_R_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 temperature_Data = new ArrayDouble.D2(1, drifter.getLength()); ArrayDouble.D2 f_Data = new ArrayDouble.D2(1, drifter.getLength()); for (int p = 0; p < pop.size(); p++) { Poissons Po = (Poissons) pop.get(p); if (Po.age > 0) { longitude_Data.set(0, p, Po.lon); latitude_Data.set(0, p, Po.lat); prof_Data.set(0, p, (int) Po.depth); identification_Data.set(0, p, Po.id); age_Data.set(0, p, Po.age); E_Data.set(0, p, Po.DEB.E); V_Data.set(0, p, Po.DEB.V); E_H_Data.set(0, p, Po.DEB.E_H); E_R_Data.set(0, p, Po.DEB.E_R); temperature_Data.set(0, p, Po.temp); f_Data.set(0, p, Po.DEB.f); int[] origin = new int[]{0, 0}; origin[0] = Simulation.compteur_jours_intra_year; try { ncOut.write("longitude", origin, longitude_Data); ncOut.write("latitude", origin, latitude_Data); ncOut.write("depth", origin, prof_Data); ncOut.write("fish_identification", origin, identification_Data); ncOut.write("fish_age", origin, age_Data); ncOut.write("E", origin, E_Data); ncOut.write("V", origin, V_Data); ncOut.write("E_H", origin, E_H_Data); ncOut.write("E_R", origin, E_R_Data); ncOut.write("temperature", origin, temperature_Data); ncOut.write("f", origin, temperature_Data); } catch (IOException e) { e.printStackTrace(); } }// si (Po.age > 0) }// boucle sur pop } -------- Timothee Brochier IRD - BP 1386 - Dakar, Sénégal tel : 77 807 2414
netcdf-java
archives: