12. Networks and transmission lines¶
A transmission line is the material medium or structure that forms all or part of a path from one place to another for directing the transmission of energy, such as electromagnetic waves or acoustic waves, as well as electric power transmission. Components of transmission lines include wires, coaxial cables, dielectric slabs, optical fibers, electric power lines, and waveguides (http://en.wikipedia.org/wiki/Transmission_line).
Some practical types of transmission lines are :
Coaxial cable
Microstrip
Stripline
Balanced line
12.1. Transmission line¶
In Amelet HDF Transmission lines are contained in the category
/transmissionLine
. A transmission line is a named HDF5 group.
A transmission line is mainly defined by a cross section :
This cross section is described by an unstructured
/mesh
and
/physicalModel/
which are associated thanks to a dataOnMesh
element.
Therefore, a transmission line group has three attibutes :
properties
: it is an HDF5 group that contains the definitions of the distributed properties of the transmission line. This group has three exclusive set of children depending on thetype
attribute. Thetype
attribute can take the three following values :If
type
equalsRLCG
, the distributed properties are defined with the four matrix R, L, C and G. Thus,properties
has four children :R, R is a distributed resistance matrix
floatingType
defined by :physicalNature
=resistance
unit
=ohmPerMeter
L, L is a distributed inductance matrix
floatingType
defined by :physicalNature
=inductance
unit
=henryPerMeter
C, C is a distributed capacitance matrix
floatingType
defined by :physicalNature
=capacitance
unit
=faradPerMeter
G, G is a distributed conductance matrix
floatingType
defined by :physicalNature
=conductance
unit
=siemensPerMeter
If
type
equalsZY
, the distributed properties are defined with the two matrices Z and Y Thus,properties
has two children :Z, Z is a distributed impedance matrix
floatingType
defined by :physicalNature
=impedance
unit
=ohmPerMeter
Y, Y is a distributed admittance matrix
floatingType
defined by :physicalNature
=admittance
unit
=siemensPerMeter
If
type
equalsZcGamma
, the distributed properties are defined with the two matrix Zc and gamma Thus,properties
has two children :Zc, Zc is the characteristic impedance of the transmission and is a distributed impedance matrix
floatingType
defined by :physicalNature
=impedance
unit
=ohm
gamma, gamma is the propagation constant per meter and has one attribute :
physicalNature
=propagationConstant
unit
=perMeter
12.1.1. Properties types¶
Example of a transmission line data.h5:/transmissionLine/$tl1
with type
= RLCG
:
data.h5
`-- transmissionLine
`-- $tl1
`-- properties[@type=RLCG]
|-- R[@floatingType=dataSet
| @physicalNature=resistance]
|-- L[@floatingType=dataSet
| @physicalNature=inductance]
|-- C[@floatingType=dataSet
| @physicalNature=capacitance]
`-- G[@floatingType=dataSet
@physicalNature=conductance]
Example of a transmission line data.h5:/transmissionLine/$tl1
with type
= ZY
:
data.h5
`-- transmissionLine
`-- $tl1
`-- properties[@type=ZY]
|-- Z[@floatingType=dataSet
| @physicalNature=impedance]
`-- Y[@floatingType=dataSet
@physicalNature=admittance]
Example of a transmission line data.h5:/transmissionLine/$tl1
with type
= ZcGamma
:
data.h5
`-- transmissionLine
`-- $tl1
`-- properties[@type=ZcGamma]
|-- Zc[@floatingType=dataSet
| @physicalNature=impedance]
`-- gamma[@floatingType=dataSet]
12.1.2. Transmission line elements¶
Besides, a transmission line is made up of transmission line elements, those elements are conductors, shields …
Example of a transmissione line data.h5:/transmissionLine/$tl1
with the element
group
data.h5
`-- transmissionLine
`-- $tl1
|-- properties[@type=ZcGamma]
`-- element # Transmission line element group
In Amelet HDF, elements are named HDF5 group children of the group
element
and have five attributes :
type
: it is an HDF5 string attribute that can take the following values :if
type
=conductor
, the element is a conductorif
type
=shield
, the element is a shield, a shield is a conductor reference for other conductorif
type
=dielectric
, the element is a dielectric
domain
: thedomain
references the shield domain.rank
: This is the position of the element in the distributed properties matrixreferenceElement
: This is the position of the reference conductor
A transmission line element has also an optional child :
properties
: this is an HDF5 group, it contain the individual distributed properties for the element (in the case of a measurement for instance) and the transfer distributed properties relative to the shield conductor.properties
has two string optional attributes :type
andtransferType
.if
type
=RLCG
,properties
has four children R, L, C, G. This elements are defined as in the transmission line distributed properties, they represents the distributed properties of one element.if
transferType
=ZY
, transfer distributed properties are defined by Zt and Yt. This elements are defined as in the transmission line distributed properties Z and Y, they represents the transfer distributed properties of one element.if
transferType
=RLCG
, transfer distributed properties are defined by Rt, Lt, Ct and Gt. These elements are defined as in the transmission line distributed properties R, L, C and G, they represents the distributed transfer properties of one element.
Example of a transmission line data.h5:/transmissionLine/$tl1
which have
two elements (the $ground
and $elem1
) :
data.h5
`-- transmissionLine
`-- $tl1
|++ properties
`-- element
|-- $ground[@type=conductor
| @domain=0]
`-- $elem1[@type=conductor
| @domain=0
| @rank=1
| @referenceElement=$ground]
`-- properties[@type=RLCG
| @transfertType=ZY]
|-- Zt[@floatingType=dataSet
| @physicalNature=impedance]
|-- Yt[@floatingType=dataSet
| @physicalNature=admittance]
|-- R[@floatingType=dataSet
| @physicalNature=resistance]
|-- L[@floatingType=dataSet
| @physicalNature=inductance]
|-- C[@floatingType=dataSet
| @physicalNature=capacitance]
`-- G[@floatingType=dataSet
@physicalNature=conductance]
data.h5:/transmissionLine/$tl1/element/$ground
is aconductor
and is in the domain 0.data.h5:/transmissionLine/$tl1/element/$elem1
is aconductor
and is also in the domain 0.
12.1.3. TranmissionLineOnMesh link¶
The section of a transmission line is often associated with a mesh, this association gives the following information :
the mesh of the transmission line section
the models that are linked to the mesh entities, this is the role of the
modelsOnSectionLink
attribute.modelsOnSectionLink
is an HDF5 string attribute which gives the name of the group links defining association between models and the mesh entities.the link between the transmission line elements and mesh entities, this is the role of the
elementsOnSection
dataset.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.
This association is created thanks a Link which links a
transmissionLine
to a mesh
.
A link group containing only links between transmissionLine
and mesh
has the attribute type
equals transmissionLineOnMesh
(see TransmissionLineOnMesh Link)
Example :
data.h5
|-- mesh/
| `-- $gmesh1
| `-- $tl1/ # Mesh description of $tl1
| `-- group/
| |-- $elem1
| `-- $elem2
|-- physicalModel/
| `-- volume/
| `-- $diel1/
|-- link/
| |-- $models_on_section/ # Material model / mesh
| | |-- $link1[@subject=/physicalModel/volume/$diel1
| | | @object=/mesh/$gmesh1/$mesh1/group/$elem1]
| | `-- $link2[@subject=/physicalModel/volume/$diel1
| | @object=/mesh/$gmesh1/$mesh1/group/$elem2]
| `-- $transmissionline_on_mesh[@type=transmissionLineOnMesh]/
| `-- $link1[@subject=/transmissionLine/$tl1
| | @object=/mesh/$gmesh1/$mesh1
| | @modelsOnSectionLink=/link/$models_on_section]
| `-- elementsOnSection
`-- transmissionLine
`-- $tl1
`-- element
|++ $ground
`++ $elem1
with data.h5:/link/$transmission_line_section/$link1/elementsOnSection
:
$ground |
$elem1 |
$elem1 |
$elem2 |
12.1.4. A more complete example¶
Let the following Amelet HDF instance, it defines three transmission lines
/transmissionLine/$tl1
, /transmissionLine/$tl2
and
/transmissionLine/$tl3
.
data.h5
|-- mesh
| `-- $gmesh1
| |-- $tl1 # Mesh description of
| | |-- nodes # transmission lines
| | |-- elementTypes # An unstructured mesh
| | |-- elementNodes # with three groups
| | `-- group # of the transmission lines
| | |-- $elem1[@type=element # (cross sections)
| | | @elementType=edge]
| | |-- $elem2[@type=element
| | | @elementType=edge]
| | `-- $elem3[@type=element
| | @elementType=edge]
| |++ $tl2
| `++ $tl3
|-- physicalModel/
| |-- volume/ # Material models of
| | |-- $diel1 # transmission lines
| | `-- $diel2
| `-- interface/
| |-- $interface1
| `-- $interface2[@medium1=/physicalModel/volume/$diel1
| @medium2=/physicalModel/volume/$diel2]
|-- link
| |-- $tl1_section[@type=dataOnMesh] # Material model / mesh
| | |-- $link_instance1[@subject=/physicalModel/perfectElectricConductor
| | | @object=/mesh/$gmesh1/$tl1/group/$elem1]
| | |-- $link_instance2[@subject=/physicalModel/interface/$interface2
| | | @object=/mesh/$gmesh1/$tl1/group/$elem2]
| | `-- $link_instance3[@subject=/physicalModel/perfectElectricConductor
| | @object=/mesh/$gmesh1/$tl1/group/$elem3]
| |++ $tl2_section
| |++ $tl3_section
| `-- $transmissionline_on_mesh[@type=transmissionLineOnMesh]
| |-- $tl1[@subject=/transmissionLine/$tl1
| | | @object=/mesh/$gmesh1/$tl1
| | | @modelsOnSectionLink=/link/$tl1_section]
| | `-- elementsOnSection
| |-- $tl2[@subject=/transmissionLine/$tl2
| | | @object=/mesh/$gmesh1/$tl2
| | | @modelsOnSectionLink=/link/$tl2_section
| | `-- elementsOnSection
| `-- $tl3[@subject=/transmissionLine/$tl3
| | @object=/mesh/$gmesh1/$tl3
| | @modelsOnSectionLink=/link/$tl3_section
| `-- elementsOnSection
`-- transmissionLine
|-- $tl1
| |-- properties[type=RLCG]
| | |-- R[@floatingType=dataSet
| | | @physicalNature=resistance]
| | |-- L[@floatingType=dataSet
| | | @physicalNature=inductance]
| | |-- C[@floatingType=dataSet
| | | @physicalNature=capacitance]
| | `-- G[@floatingType=dataSet
| | @physicalNature=conductance]
| `-- element
| |-- $elem1[@type=conductor
| | @domain=0
| | @rank=0]
| |-- $elem2[@type=dielectric]
| `-- $elem3[@type=shield
| @referenceElement=$elem1
| @internalLine=/transmissionLine/$tl2
| @domain=0
| @rank=1]
|-- $tl2
| |-- properties
| `-- element
| `-- $elem1[@type=conductor
| @domain=0
| @rank=1]
`++ $tl3
with data.h5:/link/$transmissionline_on_mesh/$tl1/elementsOnSection
:
$elem1 |
$elem1 |
$elem2 |
$elem2 |
$elem3 |
$elem3 |
This example describes three transmission lines /transmissionLine/$tl1
,
/transmissionLine/$tl2
and /transmissionLine/$tl3
.
/transmissionLine/$tl1
has three elements $elem1
, $elem2
and $elem3
.
$elem1
is the electrical reference, $elem2
is a dielectric element and
$elem3
is a shield.
In addition, all transmission line are associated with a mesh for the section
definition, see the data.h5:/link/transmission_line_on_mesh/$tl1
for
data.h5:/transmissionLine/$tl1
for instance.
12.2. Network¶
The definition of a network is straightforward. A network is named HDF5 group
in the category network
.
A network has two attributes :
type
: it is an mandatory HDF5 string attribute, it gives thetype
of a network. Thetype
attributes values are :simple
. Iftype
equalssimple
, the network element defines simple network with no interconnection with another network.compound
. Iftype
equalscompound
, the network defines interconnected network thanks to interconnection tubes andsimple
network.
12.2.1. Simple network¶
A simple
network has three children :
tubes
: it is an HDF5 table of four columnsid
: an HDF5 stringextremity1
: it is an HDF5 string attribute, it contains the name of the first extremity junction. It is a relative name because the junction is defined inside the network.extremity2
: it is an HDF5 string attribute, it contains the name of the second extremity junction. It is a relative name because the junction is defined inside the network.transmissionLine
: it is an HDF5 string attribute, it is the name of the model of transmission line composing the tube.Note
If a tube is zero length, there is no associated transmission line, the
transmissionLine
field must be equal to the empty string.
junctions
: it is an HDF5 three column table which defines junctionsid
:id
is the string identifier of the junctionnbPort
:nbPort
is an integer, it is the number of ports of the multiport which represents the junction.Note
A junction can be associated to :
A predefined multiport
A scalar multiport (
singleReal
,singleComplex
), the junction’snbPort
attribute override the implicit value (equals to 1) offloatingType
A matrix multiport (
dataSet
,arraySet
), if present the junction’snbPort
attribute must be equal the dimension of thefloatingType
multiport
: the name of a/physicalModel/multiport
object
connections
: it is an HDF5 integer table, a connection is a row and is made up of :idJunction
: a junction identifieridPort
: a port identifieridTube
: a tube identifieridWire
: a wire/transmission line element identifier
Example :
data.h5
|-- physicalModel/
| `-- multiport
| |-- $j0[@floatingType=singleComplex
| | @physicalNature=impedance
| | @unit=hertz]
| |-- $j1[@floatingType=dataSet
| | @physicalNature=impedance
| | @unit=ohm]
| |-- $j2[@physicalNature=admittance
| | | @floatingType=arraySet
| | | @unit=ohm]
| | |-- data
| | '-- ds
| | |--dim1[@label=frequency
| | | @physicalNature=frequency
| | | @unit=hertz]
| | |--dim2[@label=nbPort
| | | @physicalNature=electricPotentialPoint]
| | '--dim3[@label=nbPort
| | @physicalNature=electricPotentialPoint]
| `-- sParameter
| |--$j3[@floatingType=singleComplex
| | @referenceImpedance=50
| | @value=(0,0)]
| '--$j4[@floatingType=dataSet]
|-- transmissionLine/
| |-- $tl1
| |-- $tl2
| `-- $tl3
`-- network/
`-- $net1[@type=simple]
|-- tubes
|-- junctions
`-- connections
12.2.1.1. The table /network/$net1/junctions
¶
The following table shows a part of the table junctions
:
id |
nbPort |
multiport |
---|---|---|
… |
||
$j0 |
2 |
/physicalModel/multiport/$j0 |
$j1 |
2 |
/physicalModel/multiport/$j1 |
$j2 |
2 |
/physicalModel/multiport/$j2 |
$j3 |
8 |
/physicalModel/sParameter/$j3 |
$j4 |
8 |
/physicalModel/sParameter/$j4 |
$j5 |
5 |
/physicalModel/multiport/shortCircuit |
… |
12.2.1.2. The table /network/$net1/tubes
¶
The following table shows a part of the table tubes
:
id |
extremity1 |
extremity2 |
transmissionLine |
---|---|---|---|
… |
|||
$tub_1 |
$j1 |
$j2 |
/transmissionLine/$tl1 |
$tub2 |
$j2 |
$j3 |
/transmissionLine/$tl2 |
$tub#3 |
$j1 |
$j3 |
/transmissionLine/$tl3 |
… |
The numbering of tubes is explicit, that facilitates the possible modifications.
12.2.1.3. The table /network/$network/connections
¶
The following table shows a part of the table connections
corresponding
to the preceding example :
idJunction |
idPort |
idTube |
idWire |
---|---|---|---|
… |
|||
$j1 |
1 |
$tub_1 |
1 |
$j1 |
2 |
$tub_1 |
2 |
$j1 |
3 |
$tub2 |
1 |
$j1 |
4 |
$tub22 |
2 |
… |
The numbering of connections is implicit.
idJunction is the name of children of /network/$network/junctions
.
idTube is the identifier from the table /network/$network/tubes
.
idPort
is a port of the multiport model representing the junction and
idWire
is a wire number of a tube.
12.2.1.4. Network topology and tube length¶
In order to make a real network, tubes must have a length. In the general case, junctions are located in 3D space and the network has a spatial reality, it is the network harness.
That’s why a network is associated with a mesh, each tube of the network is linked to a mesh entity.
Consider the following network, in particular the /network/$net1/tubes
tables and the /mesh/$gmesh1/$tubes
mesh. They are linked by the
/link/$network_on_mesh/$net1
link :
data.h5
|-- mesh
| `-- $gmesh1
| |-- $tl1
| |-- $tl2
| |-- $tl3
| `-- $tubes
| |-- nodes
| |-- elementTypes
| |-- elementNodes
| `-- group
| |-- $tube1[@type=element
| | @elementType=edge]
| |-- $tube2[@type=element
| | @elementType=edge]
| `-- $tube3[@type=element
| @elementType=edge]
|-- transmissionLine/
| |-- $tl1
| |-- $tl2
| `-- $tl3
|-- link
| `-- $network_on_mesh[@type=networkOnMesh]
| `-- $net1[@subject=/network/$net1
| | @object=/mesh/$gmesh1/$tubes]
| `-- data
`-- network/
`-- $net1[@type=simple]
|-- tubes
|-- junctions
`-- connections
with /network/$net1/tubes
:
id |
extremity1 |
extremity2 |
transmissionLine |
---|---|---|---|
$tub_1 |
$j1 |
$j2 |
/transmissionLine/$tl1 |
$tub2 |
$j2 |
$j3 |
/transmissionLine/$tl2 |
$tub#3 |
$j1 |
$j3 |
/transmissionLine/$tl3 |
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’stubes
datasetThe second column contains named elements from the mesh.
For example, data.h5:/link/$network_on_mesh/$net1/data
is :
$tub_1 |
$tube1 |
$tub2 |
$tube2 |
$tub#3 |
$tube3 |
For instance, $tub_1
in the /network/$net1
network is $tube1
in the
/mesh/$gmesh1/$tubes
mesh.
A link group containing only links between network
and mesh
has the attribute type
equals networkOnMesh
(see NetworkOnMesh Link)
12.2.1.5. Fictitious harness¶
For simple networks, there is sometimes no need to construct a real harness, but
the length of tubes must be present. A manner to accomplish that is to build
a fake mesh (not real) and to link this mesh to the network with the harness
attribute equals to fictitious
(harness
equals real
by default).
Practically, for each tube create two nodes so that the distance between the nodes is the length of the tube :
data.h5
|-- mesh
| `-- $gmesh1
| |-- $tl1
| `-- $tubes
| |-- nodes
| |-- elementTypes
| |-- elementNodes
| `-- group
| `-- $tube1[@type=element
| @elementType=edge]
|-- transmissionLine/
| `-- $tl1
|-- link
| `-- $network_on_mesh[@type=networkOnMesh]
| `-- $net1[@subject=/network/$net1
| | @object=/mesh/$gmesh1/$tubes
| | @harness=fictitious]
| `-- data
`-- network/
`-- $net1[@type=simple]
|-- tubes
|-- junctions
`-- connections
with /network/$net1/tubes
:
id |
extremity1 |
extremity2 |
transmissionLine |
---|---|---|---|
$tub_1 |
$j1 |
$j2 |
/transmissionLine/$tl1 |
with /mesh/$gmesh1/$tubes/nodes
:
0 |
0 |
0 |
$length |
0 |
0 |
with /mesh/$gmesh1/$tubes/elementTypes
:
1 |
and /mesh/$gmesh1/$tubes/elementNodes
:
0 |
1 |
12.2.2. Compound network¶
A compound
network has two children :
tubes
: it is an HDF5 table of six columnsid
: an HDF5 string, it is the id of the tubenetwork1
: it is an HDF5 string attribute, it contains the name of the first extremity networkextremity1
: it is an HDF5 string attribute, it contains the name of the first extremity junction. It is the name of the the junction found out in /network/$network/junctionsnetwork2
: it is an HDF5 string attribute, it contains the name of the second extremity networkextremity2
: it is an HDF5 string attribute, it contains the name of the second extremity junction. It is the name of the the junction found out in /network/$network/junctionstransmissionLine
: it is an HDF5 string attribute, it is the name of the model of transmission line composing the tube.Note
If a tube is zero length, there is no associated transmission line, the
transmissionLine
field must be equal to the empty string.
connections
: it is an HDF5 integer table, a connection is a row and is made up of :idJunction
: it is an HDF5 string, it contains a junction identifieridPort
: it is an HDF5 integer, it contains a port identifieridTube
: it is an HDF5 string, it contains a tube identifieridWire
: it is an HDF5 string, it contains a wire/transmission line element name
Example of a compound
network $net3:
data.h5
|-- mesh
| `-- $gmesh1
| |-- $tl1
| |-- $tl2
| |-- $tl3
| `-- $tubes
| |-- nodes
| |-- elementTypes
| |-- elementNodes
| `-- group
| |-- $tube1[@type=element
| | @elementType=edge]
| |-- $tube2[@type=element
| | @elementType=edge]
| |-- $tube3[@type=element
| | @elementType=edge]
| `-- $tube4[@type=element
| @elementType=edge]
|-- link
| `-- $dom1
|-- transmissionLine/
| |-- $tl1
| |-- $tl2
| `-- $tl3
`-- network/
|-- $net1[@type=simple]
| |-- tubes
| |-- junctions
| `-- connections
|-- $net2[@type=simple]
| |-- tubes
| |-- junctions
| `-- connections
`-- $net3[@type=compound]
|-- tubes
`-- connections
with data.h5:/network/$net3/tubes
:
id |
network1 |
extremity1 |
network2 |
extremity2 |
transmissionLine |
---|---|---|---|---|---|
$tub1 |
/network/$net1 |
$j1 |
/network/$net2 |
$j1 |
/transmissionLine/$tl1 |
and the table /network/net3/connections
is :
network |
idJunction |
idPort |
idTube |
idWire |
---|---|---|---|---|
/network/$net1 |
$j1 |
1 |
$tub1 |
1 |
/network/$net2 |
$j2 |
2 |
$tub1 |
2 |
12.3. Locating a model on a network¶
Consider the preceding simple network (one transmission line, a one tube network and an harness), you would like to put a generator on the second wire of the tube.
The solution is to add a link between a generator and a 1D mesh entity,
the idWire
option allows to select the wire.
data.h5
|-- mesh/
| `-- $gmesh1
| |-- $tl1
| `-- $tubes
| |-- nodes
| |-- elementTypes
| |-- elementNodes
| |-- selectorOnMesh
| | `-- $gene1[@type=pointInElement]
| `-- group
| `-- $tube1[@type=element
| @elementType=edge]
|-- electromagneticSource/
| `-- generator
| `-- $gene1
|-- transmissionLine/
| `-- $tl1
|-- link
| |-- $data_on_mesh[@type=dataOnMesh]
| | `-- $gene1[@subject=/electromagneticSource/generator/$gene1
| | @object=/mesh/$gmesh1/$tubes/selectorOnMesh/$gene1
| | @idWire=2]
| `-- $network_on_mesh[@type=networkOnMesh]
| `-- $net1[@subject=/network/$net1
| | @object=/mesh/$gmesh1/$tubes]
| `-- data
`-- network/
`-- $net1[@type=simple]
|-- tubes
|-- junctions
`-- connections
and data.h5:/mesh/$gmesh1/$tubes/selectorOnMesh/$gene1
is
index |
v1 |
v2 |
v3 |
1 |
0.5 |
-1 |
-1 |