Hi Marcin, Have you considered using the Fold Family Operators (F.)?
Ak On Sat., Jul. 15, 2023, 07:53 Marcin Żołek, < marcin.zo...@students.mimuw.edu.pl> wrote: > Thanks, your approach is the most convincing. > > Martin > > > On Jul 15, 2023, at 3:15 PM, Raul Miller <rauldmil...@gmail.com> wrote: > > > > 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 > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm