Predefined labels and links =========================== Links and labels are general tools to describe an EM simulation. Besides, some concepts are often used accross all numerical methods like the wire radius concept, that's why |namespec| predefines some labels and some links. Predefined labels ----------------- |namespec| predefined some labels, they are contained in ``/label/predefinedLabels`` **dataset**. Example : :: data.h5 `-- label/ `-- predefinedLabels where ``data.h5:/label/predefinedLabels`` is : +------------------------+ | $firstLabel | +------------------------+ | $secondLabel | +------------------------+ The predefined labels are described in the next sections. Wire radius ^^^^^^^^^^^ ``wireRadius`` label is used to set the radius of a wire. See :ref:`wireradius` for its usage. .. _predefinedlink: Predefined Links ---------------- Labels can be involed in links creation, so this fact implies the definition of predefined links. In addition, other links are predefined that does'nt make participate predefined labels. Predefined ``type`` attribute ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Link groups can have a ``type`` attribute. This attribute is an HDF5 string attribute. This attribute allows to give common characteristics to link instances children of groups. For example, a link group type attribute can be ``dataOnMesh``, that is to say all children links associate a ``/physicalModel`` or an ``electromagneticSource`` to a ``mesh`` entity. |namespec| defined several link group ``type``. The ``type`` attribute is owned by the link group and not by the link. The function of the ``type`` is to facilitate the research and the storage of simular nature links. In fact, the ``type`` attribute gives the same information than the reading of the ``subject`` and the ``object`` of a link. .. _wireradius: Wire radius Link ^^^^^^^^^^^^^^^^ ``wireRadius`` is predefied label used to set the radius of a wire. A link built from the ``wireRadius`` has a mandatory attribute : * ``radius`` : ``radius`` is a real HDF5 attribute, it is a length in meter. ``radius`` gives the radius of the wire in meter. Example : :: data.h5 |-- label/ | `-- predefinedLabels |-- mesh/ | `-- $gmesh1 | `-- $antenna1 | `-- group | `-- $wire1 `-- link `-- $link_group `-- $radiusOfWire1[@subject=/label/predefinedLabels @subject_id=0 @object=/mesh/$gmesh1/$antenna1/group/$wire1 @radius=1e-3] Data on mesh link ^^^^^^^^^^^^^^^^^ If ``type`` equals ``dataOnMesh``, all link instances associate a data to a mesh entity. It is a specialized form of links. Data can be : * A ``/predefinedLabel`` label * A ``/physicalModel`` instance * An ``/electromagneticSource`` instance :: data.h5 |-- mesh/ | `-- $gmesh1 | `-- $plane | |-- nodes | |-- elementTypes | |-- elementNodes | |-- group | | `-- $wing | `-- selectorOnMesh | |-- elements | `-- nodes |-- electromagneticSource/ | `-- generator/ | |-- $v1 | `-- $i1 `-- link/ `-- $link_group[@type=dataOnMesh | @rootObject=/mesh/$gmesh1/$plane/selectorOnMesh]/ |-- $link_instance1[@subject=/electromagneticSource/generator/$v1 | @object=$generator_v1] `-- $link_instance2[@subject=/electromagneticSource/generator/$i1 @object=$generator_i1] Where ``data.h5:/mesh/$gmesh1/$plane/selectorOnMesh/$generator_v1`` is +-----+ |index| +-----+ | 23 | +-----+ Where ``data.h5:/mesh/$gmesh1/$plane/selectorOnMesh/generator_i1`` is +-----+ |index| +-----+ | 26 | +-----+ In this example, the link group ``data.h5:/link/$link_group`` is a specialized link group for ``dataOnMesh`` links. Data in localization system link ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``dataInLocalizationSystem`` ``type`` allows to gather links associating data to a localization system in order to locate and to orient models in the space (an antenna for instance). :: data.h5 |-- electromagneticSource/ | `-- antenna/ | `-- $antenna1 |-- localizationSystem | `++ $locasys[@dimension=3] `-- link `-- $link_group[@type=dataInLocalizationSystem] `-- $v1-location[@subject=/electromagneticSource/antenna/$antenna1] @object=/localizationSystem/$locasys] In this example, ``data.h5:/electromagneticSource/antenna/$antenna1`` is located and oriented thanks to ``data.h5:/localizationSystem/$locasys``. Without the ``type`` attribute, ``subject`` and ``object`` are enough to understand the link's nature. Specific role link ^^^^^^^^^^^^^^^^^^ If ``type`` equals ``specificRole``, all link instances associate a label to an object. It is a specialized form of links. Example : :: data.h5 |-- label/ | `-- predefinedLabels |-- mesh/ | `-- $gmesh1 | `-- $antenna1 | `-- group | `-- $wire1 `-- link `-- $link_group[@type=specificRole] `-- $transmitter[@subject=/label @subject_label=transmitter @object=/mesh/$gmesh1/$antenna1/group/$wire1] .. _transmissionLineOnMeshLink: TransmissionLineOnMesh Link ^^^^^^^^^^^^^^^^^^^^^^^^^^^ A "``transmissionLineOnMesh``" link associates a transmissionLine to a mesh. It has one optional attribute : * ``modelsOnSectionLink`` is an HDF5 string attribute and contains the name of the link group defining the section of the transmission line and an optional child dataset named ``elementsOnSection`` : * ``elementsOnSection`` is an HDF5 (n x 2) string dataset which contains a list of (transmission line element, named mesh entity) string couple defining the association between transmission line elements and mesh entities. :: data.h5 |-- mesh/ | `-- $tl11 |-- transmissionLine/ | `-- $tl1 `-- link/ `-- $transmissionline_on_mesh[@type=transmissionLineOnMesh]/ `-- $link1[@subject=/transmissionLine/$tl1 | @object=/mesh/$gmesh1/$tl1 | @modelsOnSectionLink=/link/$models_on_section] `-- elementsOnSection with ``elementsOnSection`` : =========== ============= $tl_elem1 $mesh_elem1 $tl_elem2 $mesh_elem2 $tl_elem3 $mesh_elem3 =========== ============= ``$tl_*`` and ``$mesh_*`` are named element of ``/transmissionLine/$tl1`` and ``/mesh/$gmesh1/$tl1``. .. _networkOnMeshLink: NetworkOnMesh Link ^^^^^^^^^^^^^^^^^^ In this example, a new link ``/link/$network_on_mesh/$tub1`` is defined, it links a network to a mesh, for doing this association the link contains a child : an HDF5 string dataset named ``data``. The ``data`` dataset has two columns : * The first column contains tubes' ``id`` from the network's ``tubes`` dataset * The second column contains named elements from the mesh. The link has an optional attribute name ``harness`` : * ``harness`` is an HDF5 string attribute that can be equal to : * ``real``, in this case the mesh defined in the link is a ``real`` harness. * ``fictitious``in this case the mesh defined in the link is a ``fictitious`` harness. Nodes, named elements are not properly located in space, but tube's length is correct. :: data.h5 |-- mesh/ | `-- $gmesh1 | `-- $net1 |-- network/ | `-- $net1 `-- link/ `-- $network_on_mesh[@type=networkOnMesh] `-- $net1[@subject=/network/$net1 | @object=/mesh/$gmesh1/$net1 | @harness=fictitious] `-- data =========== =========== $net_tube1 $mesh_tube1 $net_tube2 $mesh_tube2 $net_tube3 $mesh_tube3 =========== =========== ``$net_*`` and ``$mesh_*`` are named element of ``/network/$net1`` and ``/mesh/$gmesh1/$net1``. Model on a network link ^^^^^^^^^^^^^^^^^^^^^^^ The problem is to put a model (a generator for example) on a wire of a network tube. The way to accomplish this is to add a link between a generator and a 1D mesh entity, a ``idWire`` option allows to select the wire. :: data.h5 |-- mesh | `-- $gmesh1 | `-- $net1 |-- electromagneticSource/ | `-- generator | `-- $gene1 |-- transmissionLine/ | `-- $tl1 |-- link | |-- $data_on_mesh[@type=dataOnMesh] | | `-- $gene1[@subject=/electromagneticSource/generator/$gene1 | | @object=/mesh/$gmesh1/$net1/selectorOnMesh/$gene1 | | @idWire = 2] | `-- $network_on_mesh[@type=networkOnMesh] | `-- $net1[@subject=/network/$net1 | | @object=/mesh/$gmesh1/$tubes] | `-- data `-- network/ `-- $net1 with ``data.h5:/mesh/$gmesh1/$net1/selectorOnMesh/$gene1`` : ======= ==== ==== ==== index v1 v2 v3 ======= ==== ==== ==== 1 0.5 -1 -1 ======= ==== ==== ====