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

Reply via email to