AcDcConverter.java
/**
* Copyright (c) 2025, Coreso SA (https://www.coreso.eu/) and TSCNET Services GmbH (https://www.tscnet.eu/)
* 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;
import java.util.Optional;
/**
* AcDcConverter is the base interface for LineCommutatedConverter and VoltageSourceConverter.
*
* <p>
* Characteristics
* </p>
*
* <table style="border: 1px solid black; border-collapse: collapse">
* <thead>
* <tr>
* <th style="border: 1px solid black">Attribute</th>
* <th style="border: 1px solid black">Type</th>
* <th style="border: 1px solid black">Unit</th>
* <th style="border: 1px solid black">Required</th>
* <th style="border: 1px solid black">Default value</th>
* <th style="border: 1px solid black">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
* <td style="border: 1px solid black">Id</td>
* <td style="border: 1px solid black">String</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">yes</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">Unique identifier of the Converter</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">Name</td>
* <td style="border: 1px solid black">String</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">no</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">Human-readable name of the Converter</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">IdleLoss</td>
* <td style="border: 1px solid black">Double</td>
* <td style="border: 1px solid black">MW</td>
* <td style="border: 1px solid black">no</td>
* <td style="border: 1px solid black">0 MW</td>
* <td style="border: 1px solid black">Converter Idle loss</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">SwitchingLoss</td>
* <td style="border: 1px solid black">Double</td>
* <td style="border: 1px solid black">MW/A</td>
* <td style="border: 1px solid black">no</td>
* <td style="border: 1px solid black">0 MW/A</td>
* <td style="border: 1px solid black">Converter Switching loss</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">ResistiveLoss</td>
* <td style="border: 1px solid black">Double</td>
* <td style="border: 1px solid black">Ω</td>
* <td style="border: 1px solid black">no</td>
* <td style="border: 1px solid black">0 Ω</td>
* <td style="border: 1px solid black">Converter Resistive loss</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">PccTerminal</td>
* <td style="border: 1px solid black">Terminal</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">yes</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">The converter's point of common coupling (PCC) AC terminal</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">ControlMode</td>
* <td style="border: 1px solid black">ControlMode</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">yes</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">The converter's control mode: P_PCC or V_DC</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">TargetP</td>
* <td style="border: 1px solid black">MW</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">yes</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">Active power target at point of common coupling, load sign convention</td>
* </tr>
* <tr>
* <td style="border: 1px solid black">TargetVdc</td>
* <td style="border: 1px solid black">kV</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">yes</td>
* <td style="border: 1px solid black"> - </td>
* <td style="border: 1px solid black">DC voltage target</td>
* </tr>
* </tbody>
* </table>
* @author Damien Jeandemange {@literal <damien.jeandemange at artelys.com>}
*/
public interface AcDcConverter<I extends AcDcConverter<I>> extends Connectable<I>, DcConnectable<I> {
/**
* Control Mode of the DC converter
*/
enum ControlMode {
/**
* Controlling active power at Point of Common Coupling
*/
P_PCC,
/**
* Controlling DC Voltage
*/
V_DC
}
/**
* Get the first AC terminal.
*/
Terminal getTerminal1();
/**
* Get the optional second AC terminal.
*/
Optional<Terminal> getTerminal2();
/**
* Get the side the AC terminal is connected to.
*/
TwoSides getSide(Terminal terminal);
/**
* Get the AC terminal at provided side.
*/
Terminal getTerminal(TwoSides side);
/**
* Get the first DC terminal.
*/
DcTerminal getDcTerminal1();
/**
* Get the second DC terminal.
*/
DcTerminal getDcTerminal2();
/**
* Get the side the DC terminal is connected to.
*/
TwoSides getSide(DcTerminal dcTerminal);
/**
* Get the DC terminal at provided side.
*/
DcTerminal getDcTerminal(TwoSides side);
/**
* Set the idle loss (MW).
*/
I setIdleLoss(double idleLoss);
/**
* Get the idle loss (MW).
*/
double getIdleLoss();
/**
* Set the switching loss (MW/A).
*/
I setSwitchingLoss(double switchingLoss);
/**
* Get the switching loss (MW/A).
*/
double getSwitchingLoss();
/**
* Set the resistive loss (Ω).
*/
I setResistiveLoss(double resistiveLoss);
/**
* Get the resistive loss (Ω).
*/
double getResistiveLoss();
/**
* Set the point of common coupling terminal
*/
I setPccTerminal(Terminal pccTerminal);
/**
* Get the point of common coupling terminal
*/
Terminal getPccTerminal();
/**
* Set the control mode of the converter
*/
I setControlMode(ControlMode controlMode);
/**
* Get the control mode of the converter
*/
ControlMode getControlMode();
/**
* Set the target active power at point of common coupling (MW)
*/
I setTargetP(double targetP);
/**
* Get the target active power at point of common coupling (MW)
*/
double getTargetP();
/**
* Set the target DC voltage (kV DC)
*/
I setTargetVdc(double targetVdc);
/**
* Get the target DC voltage (kV DC)
*/
double getTargetVdc();
}