[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [h5md-user] tentative of synthesis: parameters, box size, particle n
From: |
Felix Höfling |
Subject: |
Re: [h5md-user] tentative of synthesis: parameters, box size, particle number |
Date: |
Wed, 05 Oct 2011 10:16:27 +0200 |
User-agent: |
Opera Mail/11.51 (Linux) |
Am 04.10.2011, 22:10 Uhr, schrieb Pierre de Buyl
<address@hidden>:
Does anyone see a limitation to use the scheme proposed by Felix ?
box
\-- offset
\-- value [var][d] e.g., (-L_x/2, -L_y/2, -L_z/2)
\-- time [var]
\-- step [var]
\-- edges
\-- value [var][d][d] e.g., ((L_x, 0, 0), (0, L_y, 0), (0, 0, L_z))
\-- time [var]
\-- step [var]
The more elaborate scheme seems overkill.
We could think of setting an attribute to the "box" group that would
indicate the type of box information.
box
+-- kind = [ cubic | triclinic ]
+-- time_dependent = [ 0 | 1 ]
Then, future revision could easily adapt it by adding box types.
I think the above scheme naturally includes triclinic boxes. What is then
the benefit of the attribute "kind"? If it is set to "cubic", one could
use scalars instead of matrices for the edge value. But such an approach
could easily result in an endless distinction of cases for H5MD readers.
On the other hand, knowing that the box is cuboid/orthorhombic would
simplify the computation of, e.g., the box volume. (In the present scheme,
one needs to compute the determinant of the edges matrix—which is not hard
if an algorithm like numpy.linalg.det is available.)
If we find it really necessary to provide additional meta information as
box kind or time dependence, I would prefer a Boolean scheme that allows
to combines these features independently (time_dependence: true/false,
orthogonal: true/false, internal_symmetries: true/false). But I think that
all the information can be retrieved as well from the dataset extents
(time_dependence), their contents (orthogonality), or presence of
attributes (transformation, see below).
As discussed earlier ("fields of observable group", 06/09/2011), the box
shall allow for internal symmetries. The suggestion was to implement them
as an optional set of isometric transformations ξ' = A ξ + b with a
transformation matrix A and a shift vector b. The transformation acts on
fractional coordinates ξ. If the matrix of edge vectors is denoted by M,
dimensionful coordinates should be obtained as x = M ξ (or with the
transposed of M? what about the non-orthogonal case?). Then, the
transformation becomes something like
x' = M ξ' = M A M⁻¹ x + M b.
Thus, the transformation of fractional coordinates is easily transformed
in one for dimensionful coordinates.
parameters
\-- box
+-- [transformation] [#copies][d][d]
+-- [shift] [#copies][d]
\-- edges
| \-- value [var][d][d] e.g., ((L_x, 0, 0), (0, L_y, 0), (0,
0,
L_z))
| \-- time [var]
| \-- step [var]
\-- offset
\-- value [var][d] e.g., (-L_x/2, -L_y/2, -L_z/2)
\-- time [var]
\-- step [var]
Shall we put this in the draft? Since this generic box description might
appear a bit complicated for people used to cubic boxes, we should give a
detailed guide how to use the scheme (e.g., transformations and volume
computations).
Regards,
Felix