HvdcLineConversion.java
/**
* Copyright (c) 2025, 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.cgmes.conversion.elements.dc;
import com.powsybl.cgmes.conversion.Context;
import com.powsybl.cgmes.conversion.Conversion;
import com.powsybl.cgmes.conversion.elements.AbstractIdentifiedObjectConversion;
import com.powsybl.iidm.network.HvdcLine;
import com.powsybl.iidm.network.HvdcLineAdder;
import static com.powsybl.cgmes.model.CgmesNames.*;
/**
* @author Romain Courtier {@literal <romain.courtier at rte-france.com>}
*/
public class HvdcLineConversion extends AbstractIdentifiedObjectConversion {
private final DCLink dcLink;
private static final double DEFAULT_MAXP_FACTOR = 1.2;
public HvdcLineConversion(DCLink dcLink, Context context) {
// Use line 1 id as the main identifier of this line.
// If present, line 2 id is added as an alias.
super(DC_LINE_SEGMENT, dcLink.getDcLine1(), context);
this.dcLink = dcLink;
}
@Override
public boolean valid() {
return true;
}
@Override
public void convert() {
HvdcLineAdder adder = context.network().newHvdcLine()
.setR(dcLink.getR())
.setNominalV(dcLink.getRatedUdc())
.setActivePowerSetpoint(dcLink.getTargetP())
.setMaxP(DEFAULT_MAXP_FACTOR * dcLink.getTargetP())
.setConvertersMode(dcLink.getMode())
.setConverterStationId1(context.namingStrategy().getIidmId(ACDC_CONVERTER, dcLink.getConverter1().getId(ACDC_CONVERTER)))
.setConverterStationId2(context.namingStrategy().getIidmId(ACDC_CONVERTER, dcLink.getConverter2().getId(ACDC_CONVERTER)));
identify(adder);
HvdcLine hvdcLine = adder.add();
// Add aliases
hvdcLine.addAlias(dcLink.getDcLine1().getId(DC_TERMINAL1), Conversion.CGMES_PREFIX_ALIAS_PROPERTIES + DC_TERMINAL1);
hvdcLine.addAlias(dcLink.getDcLine1().getId(DC_TERMINAL2), Conversion.CGMES_PREFIX_ALIAS_PROPERTIES + DC_TERMINAL2);
if (dcLink.getDcLine2() != null) {
hvdcLine.addAlias(dcLink.getDcLine2().getId(DC_LINE_SEGMENT), Conversion.CGMES_PREFIX_ALIAS_PROPERTIES + DC_LINE_SEGMENT2);
}
}
}