UcteNetworkFactory.java

/**
 * Copyright (c) 2017, RTE (http://www.rte-france.com)
 * 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 http://mozilla.org/MPL/2.0/.
 * SPDX-License-Identifier: MPL-2.0
 */
package com.powsybl.ucte.network;

import com.powsybl.commons.report.ReportNode;

import java.util.function.Supplier;

/**
 * @author Mathieu Bague {@literal <mathieu.bague at rte-france.com>}
 */
public final class UcteNetworkFactory {

    private UcteNetworkFactory() {
    }

    public static UcteNetwork createNetwork(Supplier<UcteNetwork> factory) {
        UcteNetwork network = factory.get();

        UcteNodeCode code1 = new UcteNodeCode(UcteCountryCode.XX, "AAAAA", UcteVoltageLevelCode.VL_380, '1');
        UcteNode node1 = new UcteNode(code1, null, UcteNodeStatus.REAL, UcteNodeTypeCode.PU, 400.0,
                Double.NaN, Double.NaN, 1000.0, Double.NaN, 9999.0, -9999.0, 9999.0, -9999.0,
                Double.NaN, Double.NaN, Double.NaN, Double.NaN, UctePowerPlantType.C);
        network.addNode(node1);

        UcteNodeCode code2 = new UcteNodeCode(UcteCountryCode.XX, "BBBBB", UcteVoltageLevelCode.VL_220, '1');
        UcteNode node2 = new UcteNode(code2, null, UcteNodeStatus.REAL, UcteNodeTypeCode.PQ, Double.NaN,
                Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN,
                Double.NaN, Double.NaN, Double.NaN, Double.NaN, null);
        network.addNode(node2);

        UcteNodeCode code3 = new UcteNodeCode(UcteCountryCode.XX, "CCCCC", UcteVoltageLevelCode.VL_220, '1');
        UcteNode node3 = new UcteNode(code3, null, UcteNodeStatus.REAL, UcteNodeTypeCode.PQ, Double.NaN,
                500.0, 350., Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN, Double.NaN,
                Double.NaN, Double.NaN, Double.NaN, Double.NaN, null);
        network.addNode(node3);

        UcteElementId lineId = new UcteElementId(code2, code3, '1');
        UcteLine line = new UcteLine(lineId, UcteElementStatus.REAL_ELEMENT_IN_OPERATION,
                1.0, 0.1, 1e-6, 1250, null);
        network.addLine(line);

        UcteElementId transformerId = new UcteElementId(code1, code2, '1');
        UcteTransformer transformer = new UcteTransformer(transformerId, UcteElementStatus.REAL_ELEMENT_IN_OPERATION,
                1.0, 0.1, 1e-6, 1500, null, 400.0, 225.0, 1000.0, 1e-6);
        network.addTransformer(transformer);

        UcteRegulation regulation = new UcteRegulation(transformerId, null, null);
        network.addRegulation(regulation);

        network.fix(ReportNode.NO_OP);

        return network;
    }
}