I think the approaches you described are fine. That said, another approach would be to think of your dataset as a table -- one row for each atom, with each column having different significance. coordinate x,y, z; velocity x,y,z; force x,y,z, So, if you had 42 atoms, your data would be a 42 by 9 matrix.
Or, perhaps it would be better to distinguish x,y,z from coordinate/velocity/force (the 42 atom example being represented with a 42 by 3 by 3 array or perhaps more conveniently a 3 by 42 by 3 array). This last approach might have an implementation something like: do_step=: positions_update, velocities_update,: forces_update where each of the update verbs obtains the requisite information from its y argument. I hope this makes sense, -- Raul On Sat, Jul 15, 2023 at 8:18 AM Marcin Żołek <marcin.zo...@students.mimuw.edu.pl> wrote: > > I am learning J and writing a program in this language to simulate a physical > phenomenon of interactions between atoms (each atom is described by > coordinates, velocities, forces, etc.). I am wondering how to store data in > such a simulation. > > The simulation involves applying a function that performs a single simulation > step several times: > > do_step^:42 initial_data > > Simulation step consists of several substeps. Which storage option is better > or is there other way than the ones listed below? > > 1) Data stored in public nouns (one noun is a matrix of coordinates of atoms, > another noun is a matrix of velocities of atoms, etc.). Then do_step calls > substep functions that overwrites these public nouns: > > do_step =: monad define > velocities =: forces update_velocities velocities > positions =: velocities update_positions positions > ... > ) > > 2) Data stored in an array of boxes (in the first box an array of coordinates > of atoms, in the second box an array of velocities of atoms, etc.). Then > do_step is the composition of all substep functions and each substep function > is a monad that creates modified array of boxes using m} : > > do_step =: monad : 'do_substep_k ... do_substep_2 do_substep_1 y' > > Martin > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm