All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.zepben.evolve.cim.iec61970.base.wires.Conductor.kt Maven / Gradle / Ivy

There is a newer version: 0.24.0rc1
Show newest version
/*
 * Copyright 2020 Zeppelin Bend Pty Ltd
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
 */

package com.zepben.evolve.cim.iec61970.base.wires

import com.zepben.evolve.cim.extensions.ZBEX
import com.zepben.evolve.cim.iec61968.assetinfo.CableInfo
import com.zepben.evolve.cim.iec61968.assetinfo.WireInfo
import com.zepben.evolve.cim.iec61968.assets.AssetInfo
import com.zepben.evolve.cim.iec61970.base.core.ConductingEquipment

/**
 * Combination of conducting material with consistent electrical characteristics, building a single electrical system, used to carry current
 * between points in the power system.
 *
 * @property length Segment length for calculating line section capabilities.
 * @property designTemperature [ZBEX] The temperature in degrees Celsius for the network design of this conductor.
 * @property designRating [ZBEX] The current rating in Amperes at the specified design temperature that can be used without the conductor breaching physical network
 *   design limits.
 */
abstract class Conductor(mRID: String = "") : ConductingEquipment(mRID) {
    var length: Double? = null
        set(value) {
            require((value == null) || (value >= 0) || value.isNaN()) { "Conductor length cannot be negative." }
            field = value
        }

    @ZBEX
    var designTemperature: Int? = null
    @ZBEX
    var designRating: Double? = null

    /**
     * Override the [AssetInfo] as [WireInfo].
     */
    override var assetInfo: WireInfo? = null

    /**
     * @return Convenience function to check if the [WireInfo] is [CableInfo].
     */
    val isUnderground: Boolean get() = assetInfo is CableInfo
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy