TwtTestData.java

/**
 * Copyright (c) 2018, 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.loadflow.validation.util;

import org.mockito.Mockito;

import com.powsybl.iidm.network.Bus;
import com.powsybl.iidm.network.Terminal;
import com.powsybl.iidm.network.ThreeWindingsTransformer;
import com.powsybl.iidm.network.Terminal.BusView;
import com.powsybl.iidm.network.ThreeWindingsTransformer.Leg;

/**
 *
 * @author Massimo Ferraro {@literal <massimo.ferraro@techrain.eu>}
 */
public class TwtTestData {

    public static double P1 = 99.218431;
    public static double Q1 = 2.7304328;
    public static double P2 = -216.19819;
    public static double Q2 = -85.368180;
    public static double P3 = 118;
    public static double Q3 = 92.612077;

    public static double COMPUTED_P1 = 99.227288294050368;
    public static double COMPUTED_Q1 = 2.747147185209846;
    public static double COMPUTED_P2 = -216.195866533486196;
    public static double COMPUTED_Q2 = -85.490493190353362;
    public static double COMPUTED_P3 = 117.988318295632794;
    public static double COMPUTED_Q3 = 92.500849015581423;

    public static double U1 = 412.989001;
    public static double ANGLE1 = -6.78071;
    public static double U2 = 224.315268;
    public static double ANGLE2 = -8.77012;
    public static double U3 = 21.987;
    public static double ANGLE3 = -6.6508;

    public static double STAR_U = 412.662007016922757;
    public static double STAR_ANGLE = -7.353686938578365;

    public static double R1 = 0.898462;
    public static double X1 = 17.204128;
    public static double G11 = 0;
    public static double B11 = 2.4375E-6;
    public static double G12 = 0;
    public static double B12 = 0;
    public static double RATED_U1 = 400;
    public static double R2 = 1.070770247933884;
    public static double X2 = 19.6664;
    public static double G21 = 0;
    public static double B21 = 0;
    public static double G22 = 0;
    public static double B22 = 0;
    public static double RATED_U2 = 220;
    public static double R3 = 4.837006802721089;
    public static double X3 = 21.76072562358277;
    public static double G31 = 0;
    public static double B31 = 0;
    public static double G32 = 0;
    public static double B32 = 0;
    public static double RATED_U3 = 21;
    public static int PHASE_ANGLE_CLOCK_2 = 0;
    public static int PHASE_ANGLE_CLOCK_3 = 0;
    public static double RATED_U0 = RATED_U1;

    public static boolean CONNECTED1 = true;
    public static boolean CONNECTED2 = true;
    public static boolean CONNECTED3 = true;
    public static boolean MAIN_COMPONENT1 = true;
    public static boolean MAIN_COMPONENT2 = true;
    public static boolean MAIN_COMPONENT3 = true;

    private Terminal leg1Terminal;
    private Terminal leg2Terminal;
    private Terminal leg3Terminal;
    private ThreeWindingsTransformer twt3w;

    public TwtTestData() {
        Bus leg1Bus = Mockito.mock(Bus.class);
        Mockito.when(leg1Bus.getV()).thenReturn(U1);
        Mockito.when(leg1Bus.getAngle()).thenReturn(ANGLE1);
        Mockito.when(leg1Bus.isInMainConnectedComponent()).thenReturn(MAIN_COMPONENT1);

        BusView leg1BusView = Mockito.mock(BusView.class);
        Mockito.when(leg1BusView.getBus()).thenReturn(leg1Bus);

        leg1Terminal = Mockito.mock(Terminal.class);
        Mockito.when(leg1Terminal.isConnected()).thenReturn(CONNECTED1);
        Mockito.when(leg1Terminal.getP()).thenReturn(P1);
        Mockito.when(leg1Terminal.getQ()).thenReturn(Q1);
        Mockito.when(leg1Terminal.getBusView()).thenReturn(leg1BusView);

        Leg leg1 = Mockito.mock(Leg.class);
        Mockito.when(leg1.getR()).thenReturn(R1);
        Mockito.when(leg1.getX()).thenReturn(X1);
        Mockito.when(leg1.getRatedU()).thenReturn(RATED_U1);
        Mockito.when(leg1.getB()).thenReturn(B11 + B12);
        Mockito.when(leg1.getG()).thenReturn(G11 + G12);
        Mockito.when(leg1.getTerminal()).thenReturn(leg1Terminal);

        Bus leg2Bus = Mockito.mock(Bus.class);
        Mockito.when(leg2Bus.getV()).thenReturn(U2);
        Mockito.when(leg2Bus.getAngle()).thenReturn(ANGLE2);
        Mockito.when(leg2Bus.isInMainConnectedComponent()).thenReturn(MAIN_COMPONENT2);

        BusView leg2BusView = Mockito.mock(BusView.class);
        Mockito.when(leg2BusView.getBus()).thenReturn(leg2Bus);

        leg2Terminal = Mockito.mock(Terminal.class);
        Mockito.when(leg2Terminal.isConnected()).thenReturn(CONNECTED2);
        Mockito.when(leg2Terminal.getP()).thenReturn(P2);
        Mockito.when(leg2Terminal.getQ()).thenReturn(Q2);
        Mockito.when(leg2Terminal.getBusView()).thenReturn(leg2BusView);

        Leg leg2 = Mockito.mock(Leg.class);
        Mockito.when(leg2.getR()).thenReturn(R2);
        Mockito.when(leg2.getX()).thenReturn(X2);
        Mockito.when(leg2.getB()).thenReturn(B21 + B22);
        Mockito.when(leg2.getG()).thenReturn(G21 + G22);
        Mockito.when(leg2.getRatedU()).thenReturn(RATED_U2);
        Mockito.when(leg2.getTerminal()).thenReturn(leg2Terminal);

        Bus leg3Bus = Mockito.mock(Bus.class);
        Mockito.when(leg3Bus.getV()).thenReturn(U3);
        Mockito.when(leg3Bus.getAngle()).thenReturn(ANGLE3);
        Mockito.when(leg3Bus.isInMainConnectedComponent()).thenReturn(MAIN_COMPONENT3);

        BusView leg3BusView = Mockito.mock(BusView.class);
        Mockito.when(leg3BusView.getBus()).thenReturn(leg3Bus);

        leg3Terminal = Mockito.mock(Terminal.class);
        Mockito.when(leg3Terminal.isConnected()).thenReturn(CONNECTED3);
        Mockito.when(leg3Terminal.getP()).thenReturn(P3);
        Mockito.when(leg3Terminal.getQ()).thenReturn(Q3);
        Mockito.when(leg3Terminal.getBusView()).thenReturn(leg3BusView);

        Leg leg3 = Mockito.mock(Leg.class);
        Mockito.when(leg3.getR()).thenReturn(R3);
        Mockito.when(leg3.getX()).thenReturn(X3);
        Mockito.when(leg3.getB()).thenReturn(B31 + B32);
        Mockito.when(leg3.getG()).thenReturn(G31 + G32);
        Mockito.when(leg3.getRatedU()).thenReturn(RATED_U3);
        Mockito.when(leg3.getTerminal()).thenReturn(leg3Terminal);

        twt3w = Mockito.mock(ThreeWindingsTransformer.class);
        Mockito.when(twt3w.getId()).thenReturn("twt3w");
        Mockito.when(twt3w.getLeg1()).thenReturn(leg1);
        Mockito.when(twt3w.getLeg2()).thenReturn(leg2);
        Mockito.when(twt3w.getLeg3()).thenReturn(leg3);
        Mockito.when(twt3w.getRatedU0()).thenReturn(RATED_U0);
    }

    public ThreeWindingsTransformer get3WTransformer() {
        return twt3w;
    }

    public void setNanLeg1P() {
        Mockito.when(leg1Terminal.getP()).thenReturn(Double.NaN);
    }

    public void setLeg1Disconnected() {
        Mockito.when(leg1Terminal.isConnected()).thenReturn(false);
    }

    public void setLeg2Disconnected() {
        Mockito.when(leg2Terminal.isConnected()).thenReturn(false);
    }

    public void setLeg3Disconnected() {
        Mockito.when(leg3Terminal.isConnected()).thenReturn(false);
    }
}