Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/**
* Copyright (c) 2023, 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.iidm.network.extensions;

import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.Line;
import com.powsybl.math.matrix.ComplexMatrix;

/**
* An asymmetrical line is modeled by:
* - the connection status of each phase A, B and C.
* - the three-phase admittance matrix.
*
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
*/
public interface LineAsymmetrical extends Extension<Line> {

String NAME = "lineAsymmetrical";

@Override
default String getName() {
return NAME;
}

boolean isOpenPhaseA();

void setOpenPhaseA(boolean openPhaseA);

boolean isOpenPhaseB();

void setOpenPhaseB(boolean openPhaseB);

boolean isOpenPhaseC();

void setOpenPhaseC(boolean openPhaseC);

ComplexMatrix getAdmittanceMatrixABC();

void setAdmittanceMatrixABC(ComplexMatrix admittanceMatrixABC);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* Copyright (c) 2023, 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.iidm.network.extensions;

import com.powsybl.commons.extensions.ExtensionAdder;
import com.powsybl.iidm.network.Line;

/**
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
public interface LineAsymmetricalAdder extends ExtensionAdder<Line, LineAsymmetrical> {

LineAsymmetricalAdder withOpenPhaseA(boolean openPhaseA);

LineAsymmetricalAdder withOpenPhaseB(boolean openPhaseB);

LineAsymmetricalAdder withOpenPhaseC(boolean openPhaseC);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import com.powsybl.iidm.network.Line;

/**
* A Fortescue line is modeled by its physical characteristics Rz, Xz, Rn and Zn (knowing that Rp and Rp, balanced
* characteristics, are present in the line attributes).
*
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
Expand All @@ -36,16 +39,4 @@ default String getName() {
double getXz();

void setXz(double xz);

boolean isOpenPhaseA();

void setOpenPhaseA(boolean openPhaseA);

boolean isOpenPhaseB();

void setOpenPhaseB(boolean openPhaseB);

boolean isOpenPhaseC();

void setOpenPhaseC(boolean openPhaseC);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,4 @@ public interface LineFortescueAdder extends ExtensionAdder<Line, LineFortescue>
LineFortescueAdder withRz(double rz);

LineFortescueAdder withXz(double xz);

LineFortescueAdder withOpenPhaseA(boolean openPhaseA);

LineFortescueAdder withOpenPhaseB(boolean openPhaseB);

LineFortescueAdder withOpenPhaseC(boolean openPhaseC);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/**
* Copyright (c) 2023, 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.iidm.network.extensions;

import com.powsybl.commons.extensions.Extension;
import com.powsybl.iidm.network.TwoWindingsTransformer;
import com.powsybl.math.matrix.ComplexMatrix;

/**
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
*/
public interface TwoWindingsTransformerAsymmetrical extends Extension<TwoWindingsTransformer> {

String NAME = "twoWindingsTransformerAsymmetrical";

@Override
default String getName() {
return NAME;
}

boolean isOpenPhaseA1();

void setOpenPhaseA1(boolean openPhaseA1);

boolean isOpenPhaseB1();

void setOpenPhaseB1(boolean openPhaseB1);

boolean isOpenPhaseC1();

void setOpenPhaseC1(boolean openPhaseC1);

boolean isOpenPhaseA2();

void setOpenPhaseA2(boolean openPhaseA2);

boolean isOpenPhaseB2();

void setOpenPhaseB2(boolean openPhaseB2);

boolean isOpenPhaseC2();

void setOpenPhaseC2(boolean openPhaseC2);

/**
* Get admittance complex matrix for phase A.
*/
ComplexMatrix getAdmittanceMatrixA();

void setAdmittanceMatrixA(ComplexMatrix admittanceMatrixA);

/**
* Get admittance complex matrix for phase B.
*/
ComplexMatrix getAdmittanceMatrixB();

void setAdmittanceMatrixB(ComplexMatrix admittanceMatrixB);

/**
* Get admittance complex matrix for phase C.
*/
ComplexMatrix getAdmittanceMatrixC();

void setAdmittanceMatrixC(ComplexMatrix admittanceMatrixC);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Copyright (c) 2023, 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.iidm.network.extensions;

import com.powsybl.commons.extensions.ExtensionAdder;
import com.powsybl.iidm.network.TwoWindingsTransformer;
import com.powsybl.math.matrix.ComplexMatrix;

/**
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
public interface TwoWindingsTransformerAsymmetricalAdder extends ExtensionAdder<TwoWindingsTransformer, TwoWindingsTransformerAsymmetrical> {

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseA1(boolean openPhaseA1);

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseB1(boolean openPhaseB1);

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseC1(boolean openPhaseC1);

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseA2(boolean openPhaseA2);

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseB2(boolean openPhaseB2);

TwoWindingsTransformerAsymmetricalAdder withOpenPhaseC2(boolean openPhaseC2);

TwoWindingsTransformerAsymmetricalAdder withAdmittanceMatrixA(ComplexMatrix yA);

TwoWindingsTransformerAsymmetricalAdder withAdmittanceMatrixB(ComplexMatrix yB);

TwoWindingsTransformerAsymmetricalAdder withAdmittanceMatrixC(ComplexMatrix yC);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* Copyright (c) 2023, 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.iidm.network.impl.extensions;

import com.powsybl.commons.extensions.AbstractExtensionAdder;
import com.powsybl.iidm.network.Line;
import com.powsybl.iidm.network.extensions.LineAsymmetrical;
import com.powsybl.iidm.network.extensions.LineAsymmetricalAdder;
import com.powsybl.math.matrix.ComplexMatrix;

/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
*/
public class LineAsymmetricalAdderImpl extends AbstractExtensionAdder<Line, LineAsymmetrical> implements LineAsymmetricalAdder {

private boolean openPhaseA = false;
private boolean openPhaseB = false;
private boolean openPhaseC = false;

private ComplexMatrix admittanceMatrixABC = null;

public LineAsymmetricalAdderImpl(Line line) {
super(line);
}

@Override
public Class<? super LineAsymmetrical> getExtensionClass() {
return LineAsymmetrical.class;
}

@Override
protected LineAsymmetricalImpl createExtension(Line line) {
return new LineAsymmetricalImpl(line, openPhaseA, openPhaseB, openPhaseC, admittanceMatrixABC);
}

@Override
public LineAsymmetricalAdder withOpenPhaseA(boolean openPhaseA) {
this.openPhaseA = openPhaseA;
return this;
}

@Override
public LineAsymmetricalAdder withOpenPhaseB(boolean openPhaseB) {
this.openPhaseB = openPhaseB;
return this;
}

@Override
public LineAsymmetricalAdder withOpenPhaseC(boolean openPhaseC) {
this.openPhaseC = openPhaseC;
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* Copyright (c) 2023, 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.iidm.network.impl.extensions;

import com.google.auto.service.AutoService;
import com.powsybl.commons.extensions.ExtensionAdderProvider;
import com.powsybl.iidm.network.Line;
import com.powsybl.iidm.network.extensions.LineAsymmetrical;
import com.powsybl.iidm.network.extensions.LineAsymmetricalAdder;

/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
@AutoService(ExtensionAdderProvider.class)
public class LineAsymmetricalAdderImplProvider
implements ExtensionAdderProvider<Line, LineAsymmetrical, LineAsymmetricalAdder> {

@Override
public String getImplementationName() {
return "Default";
}

@Override
public String getExtensionName() {
return LineAsymmetrical.NAME;
}

@Override
public Class<LineAsymmetricalAdder> getAdderClass() {
return LineAsymmetricalAdder.class;
}

@Override
public LineAsymmetricalAdder newAdder(Line extendable) {
return new LineAsymmetricalAdderImpl(extendable);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/**
* Copyright (c) 2023, 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.iidm.network.impl.extensions;

import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.iidm.network.Line;
import com.powsybl.iidm.network.extensions.LineAsymmetrical;
import com.powsybl.math.matrix.ComplexMatrix;

/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
* @author Jean-Baptiste Heyberger {@literal <jbheyberger at gmail.com>}
*/
public class LineAsymmetricalImpl extends AbstractExtension<Line> implements LineAsymmetrical {

private boolean openPhaseA;
private boolean openPhaseB;
private boolean openPhaseC;

private ComplexMatrix admittanceMatrixABC;

public LineAsymmetricalImpl(Line line, boolean openPhaseA, boolean openPhaseB, boolean openPhaseC,
ComplexMatrix admittanceMatrixABC) {
super(line);
this.openPhaseA = openPhaseA;
this.openPhaseB = openPhaseB;
this.openPhaseC = openPhaseC;
this.admittanceMatrixABC = admittanceMatrixABC;
}

@Override
public boolean isOpenPhaseA() {
return openPhaseA;
}

@Override
public void setOpenPhaseA(boolean openPhaseA) {
this.openPhaseA = openPhaseA;
}

@Override
public boolean isOpenPhaseB() {
return openPhaseB;
}

@Override
public void setOpenPhaseB(boolean openPhaseB) {
this.openPhaseB = openPhaseB;
}

@Override
public boolean isOpenPhaseC() {
return openPhaseC;
}

@Override
public void setOpenPhaseC(boolean openPhaseC) {
this.openPhaseC = openPhaseC;
}

@Override
public ComplexMatrix getAdmittanceMatrixABC() {
return admittanceMatrixABC;
}

@Override
public void setAdmittanceMatrixABC(ComplexMatrix admittanceMatrixABC) {
this.admittanceMatrixABC = admittanceMatrixABC;
}
}
Loading