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.

Re: animation - memory problem

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
> *                                        *
>
>


  • 2002 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: