18. Multiple files capabilities¶
There are a lot of use cases for which an Amelet HDF instance could be split up into several files :
The mesh are in an another file because it has been generated and stored separately. It is also better for the re-usability of objects.
A large arraySet has been generated by a simulation.
Amelet HDF offers a flexible means to handle multiple files.
18.1. The externalElement category¶
The /externalElement
category is an HDF5 group, its children are
HDF5 string (n x 3) datasets :
The first column contains elements names used in the Amelet HDF instance but defined in another (external) Amelet HDF instance.
The second column contains the file’s name the element is defined in.
The third column contains the name of the elements in the external file.
Note
The name of the children of /externalElement
is not specified by Amelet HDF.
Example, consider the following Amelet HDF instances data.h5 and mesh.h5 :
data.h5/
|-- externalElement/
| `-- $external_element
|-- simulation/
|-- link/
| `-- $link_group[@type=dataOnMesh]
| `-- link_instance[@subject=/physicalModel/volume/$diel1
| @object=/mesh/$gmesh1/$plane/group/$right-wing]
`-- physicalModel/
`-- volume
`-- $diel1
where data.h5:/externalElement/$external_element
is :
/mesh/$gmesh1/$plane |
mesh.h5 |
/mesh/$gmesh1/$mesh1 |
/mesh/$gmesh1/$wing |
mesh.h5 |
/mesh/$gmesh1/$mesh2 |
and :
mesh.h5/
`-- mesh
`-- $gmesh1
|-- $mesh2
`-- $mesh1
|-- elementNodes
|-- elementTypes
|-- nodes
|-- group
| |-- $field-location[@type=node]
| |-- $right-wing[@type=element]
| `-- $left-wing[@type=element]
|-- groupGroup
| `-- $wings
`-- selectorOnMesh
|-- nodes
`-- elements
The mesh data.h5:/mesh/$gmesh1/$mesh1
declared (and used) in the instance
data.h5 is really defined in the instance mesh.h5:/mesh/$gmesh1/$mesh1
.
From this point, elements which appear in data.h5
with a
name beginning with /mesh/$gmesh1/$plane
must be read from
data.h5:/mesh/$gmesh1/$mesh1
.
Note
With externalElement
, it is possible to know all elements defined
externally in one glance.
18.2. the linkDefinition attribute¶
A named element can have one optional attribute which drives toward the genuine location of its definition :
This attribute is linkDefinition
: It is the absolute name of
the element definition.
Example, consider the following Amelet HDF instances data.h5 containing
two arraySet data.h5:/floatingType/e_field
and data.h5:/floatingType/h_field
:
data.h5/
`-- floatingType
|-- e_field
| |-- data
| `-- ds
| |-- dim1
| `-- dim2
`-- h_field
|-- data
`-- ds
|-- dim1[@linkDefinition=/floatingType/e_field/ds/dim1]
`-- dim2[@linkDefinition=/floatingType/e_field/ds/dim2]
In this example, the dimension of data.h5:/floatingType/h_field
are defined
from the dimension of data.h5:/floatingType/e_field
.