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
.