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 Ibrahim, You don't have to construct different 'new Gridded3DSet' for each iteration of the 'for(int t = 0; t < no_timesteps; t++)' loop. Just pre-compute and save these Gridded3DSets for each "i" value before your "t" loop. This may save a lot of memory. However, you do need to construct a 'new FieldImpl' for particles_field inside the "t" loop. I don't think this will increase memory use much. Good luck, Bill On Mon, 15 Jul 2002, Ibrahim Z Mohammad wrote: > Hi, > I'm using VisAD to display an animation of many particles as spheres > using Gridded3DSet. The code I'm using goes like this: > > > Spheres particles[] = new Spheres [no_particles]; > > timestep = new RealType("timestep", null, null); > index = new RealType ("index", null, null); > particles_set = new Integer1DSet(index, no_particles); > timestep_set = new Integer1DSet(timestep, no_timesteps); > > x = new RealType("X", null, null); > y = new RealType("Y", null, null); > z = new RealType("Z", null, null); > xyz = new RealTupleType(x, y, z); > w = new RealType ("W", null, null); > > sphere_func = new FunctionType(xyz, w); > particles_func = new FunctionType(index, sphere_func); > timestep_func = new FunctionType(timestep, particles_func); > > particles_field = new FieldImpl(particles_func, particles_set); > timestep_field = new FieldImpl(timestep_func, timestep_set); > > particles_ref = new DataReferenceImpl("Particles_ref"); > > x_map = new ScalarMap(x, Display.XAxis); > y_map = new ScalarMap(y, Display.YAxis); > z_map = new ScalarMap(z, Display.ZAxis); > anim_map = new ScalarMap(timestep, Display.Animation); > > > for(int t = 0; t < no_timesteps; t++) { > for(int i = 0; i < no_particles; i++) { > > particles[i] = new Spheres (a_sphere); > > float samples_sphere[][] = particles[i].get_Coords(); > float values_sphere[][] = particles[i].mapColors(samples_sphere); > > particles[i].sphere_set = new Gridded3DSet(xyz, samples_sphere, > particles[i].Mfold_sphere[0], particles[i].Mfold_sphere[1]); > > particles[i].sphere_field = new FlatField(sphere_func, > particles[i].sphere_set); > particles[i].sphere_field.setSamples(values_sphere, false); > > particles[i].sphere_map = new ScalarMap(w, Display.Red); > display.addMap(particles[i].sphere_map); > > particles_field.setSample(i, particles[i].sphere_field); > > } > > timestep_field.setSample(t, particles_field); > } > > particles_ref.setData(timestep_field); > > display.addReference(particles_ref); > > When I run the code, it quickly runs into memory problems for not very many > frames (no_timesteps = around 40) and not too many particles (no_particles > around 125). Is there a way I can make this code more efficient so as to > decrease memory usage? > > Thanks, > Ibrahim > Ibrahim Z Mohammad > * * > RA - Dept. of Civil and Envt. Engineering > University of Illinois at Urbana-Champaign > * * > >
visad
archives: