Cable data model

The data model describes the cross-section of each cable and the arrangement of the cables in a line. A cable is declared as a tree of parts, which build resolves into a CableDesign containing the placed regions of the cable and the tables that relate them to terminals, repeats, lays and fills. The designs placed in one cross-section, with a conductor index assigned to each terminal, form a CableSystem. The computations receive the system through a problem, as described in Line parameters.

Materials

A Material stores the properties of one material. The class of the material, :conductor, :insulator or :semicon, is the type parameter K, so that the material laws and the formulations dispatch on it. The properties of a material are, in order:

FieldMeaningUnit
rhoelectrical resistivity at the reference temperature T0Ω·m
eps_rrelative permittivitydimensionless
mu_rrelative permeabilitydimensionless
T0reference temperature°C
alphatemperature coefficient of the resistivity1/°C
rho_thermalthermal resistivityK·m/W
theta_maxmaximum continuous operating temperature°C
tan_deltapolarization loss tangent, apart from the conduction given by rhodimensionless
sigma_solarsolar-absorption coefficientdimensionless

The constructor Material(kind, rho, eps_r, mu_r, T0, alpha, …) takes the properties by position after the class, whereas material takes the same values as keywords, with the same defaults.

Shapes

The cross-section of a region is declared by a primitive, a subtype of AbstractPrimitive, or by an offset:

  • Circle: circular cross-section, such as a solid conductor or a round wire.
  • Annulus: annular cross-section, such as a tubular conductor.
  • Rectangle: rectangular strand, before it is bent onto its layer by a circular pattern. Its width lies along the layer and its height across it.
  • Offset: layer of thickness t around the outline of the part beneath it. An offset represents an insulation, a semicon screen, a sheath or a jacket, and is resolved against that outline when the design is built.

The resolution also produces cross-sections that are not declared by any region, namely the AnnularSector, which is the bent rectangular strand of the same area, and the DifferenceShape, which is a cross-section with holes, such as the filler between the wires of a layer. A Placement is a translation and a rotation relative to a parent frame.

Cable parts

All parts are subtypes of AbstractCablePart:

  • Region: one material in one cross-section, identified by a tag.
  • Stack: parts layered outward, each one resolved against the outline of the parts beneath it.
  • Terminal: conductive regions of a part assigned to one terminal, which is one node of the circuit.
  • Repeat: part repeated at the placements of a pattern. With a CircularPattern, n copies are evenly distributed on a circle around the center of the enclosing part, either at a declared radius or at an Offset from the outline beneath them. The pattern bends a rectangular strand into an annular sector of the same area.
  • Lay: copies of a repeat laid along the cable on a Helix, whose LayRatio is the ratio of the lay length to the mean diameter of the layer. The functions pitch and overlength return the lay length and the length of the helix per unit length of cable, respectively.
  • Enclosure: filler of one material around other parts, occupying the container without the outlines of its outermost contents.

Builders

The macro @cable builds a design from the parts listed in its block, from the inside out, and the macro @terminal assigns the conductive regions of its block to one terminal. The builders below return the parts of the usual cable layers:

  • core: solid conductor of radius r.
  • insulation, screen, sheath, bedding and jacket: layer of thickness t over the outline of the part beneath it.
  • stranded: central wire and layers of round wires or rectangular strands on helices, with the filler of the conductor.
  • armor: one layer of round wires on a helix, placed directly over the outline beneath them and completed by the filler of the layer.

Build the insulated wire of the @cable example and inspect its outer radius:

using LineCableModels
copper = Material(:conductor, 1.7241e-8, 1, 1, 20, 0.00393)
polyethylene = Material(:insulator, 1.0e14, 2.3)
wire = @cable "insulated_wire" begin
    @terminal :core begin
        core(copper; r = 4.0e-3) # [m]
    end
    insulation(polyethylene; t = 1.0e-3) # [m]
end
r_ex(wire.outer) # [m]
0.005

Cable designs

The call build(CableDesign, id, parts...) resolves the parts into a CableDesign. The design stores the declared tree, the placed regions from the inside out and the tables of terminals, sub-cables, repeats, lays, compactions and fills. Each placed region is a PlacedRegion containing its declaration and its resolved cross-section. The resolved values are stored in the floating-point type T of the design, to which the numbers of the cross-sections and the materials are promoted.

Equivalent coaxial representation

The coaxial formulations represent a cable as a set of concentric tubes. The function LineCableModels.flatten(design) returns this representation as a CableBlueprint, composed of one BlueprintConductor per terminal and of the BlueprintDielectric layers in the insulation interval of each conductor. The tube of a terminal spans its conductive regions and the fillers between them, and its material reproduces the DC resistance and the geometric mean radius of those regions. A strand laid on a helix is longer than the cable by its overlength, which increases the resistivity of the tube. The helical path of the current also introduces a solenoid correction in the relative permeability of the interval, mu_r_ins. The equations are given in the docstring of flatten.

Cable systems

The call build(CableSystem, designs, placements; connections, id, line_length) places each design at its Placement in the frame of the system. The connections of each cable assign a conductor index to each terminal of its design:

  • An index k ≥ 1 connects the terminal to conductor k of the circuit.
  • Terminals with the same index are bonded and form one conductor, called a bundle.
  • The index 0 grounds the terminal, which is then eliminated by the Kron reduction.

Earth model

An EarthModel consists of a semi-infinite air layer above the earth, each represented by an EarthLayer with its resistivity, relative permittivity and relative permeability. The earth is represented by one semi-infinite layer. The function homogeneous builds the model of an air layer, with relative permittivity and permeability equal to 1, above a homogeneous earth.

Interface between air and earth

The earth surface corresponds to the line y = 0 in the frame of the system. Cables above this line are located in air, and cables below it in the earth. A cable may touch the interface but cannot cross it, and LineParametersProblem throws an ArgumentError for a cable that crosses it. The unified earth-return formula and the finite-element model also reject a cable that touches the interface.