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.

This name most have less than 20 characters.

A transmission line is mainly defined by a cross section :

_images/microstrip.png

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 the type attribute. The type attribute can take the three following values :
    • If type equals RLCG, 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 equals ZY, 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 equals ZcGamma, 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 conductor
    • if type = shield, the element is a shield, a shield is a conductor reference for other conductor
    • if type = dielectric, the element is a dielectric
  • domain : the domain references the shield domain.
  • rank : This is the position of the element in the distributed properties matrix
  • referenceElement : 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 and transferType.
    • 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 a conductor and is in the domain 0.
  • data.h5:/transmissionLine/$tl1/element/$elem1 is a conductor and is also in the domain 0.

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 the type of a network. The type attributes values are :
    • simple. If type equals simple, the network element defines simple network with no interconnection with another network.
    • compound. If type equals compound, the network defines interconnected network thanks to interconnection tubes and simple network.

12.2.1. Simple network

A simple network has three children :

  • tubes : it is an HDF5 table of four columns

    • id : an HDF5 string of 20 characters

    • extremity1 : 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 junctions

    • id : id is the identifier of the junction, it is an 20 characters HDF5 string

    • nbPort : 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’s nbPort attribute override the implicit value (equals to 1) of floatingType
      • A matrix multiport (dataSet, arraySet), if present the junction’s nbPort attribute must be equal the dimension of the floatingType
    • 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 identifier
    • idPort : a port identifier
    • idTube : a tube identifier
    • idWire : 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’s tubes dataset
  • The 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 columns

    • id : an HDF5 string of 20 characters, it is the id of the tube

    • network1 : it is an HDF5 string attribute, it contains the name of the first extremity network

    • extremity1 : 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/junctions

    • network2 : it is an HDF5 string attribute, it contains the name of the second extremity network

    • extremity2 : 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/junctions

    • 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.

  • 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 identifier
    • idPort : it is an HDF5 integer, it contains a port identifier
    • idTube : it is an HDF5 string, it contains a tube identifier
    • idWire : 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