private void createAreas(EsgNetwork esgNetwork) { esgNetwork.addArea(new EsgArea(new Esg2charName(EchUtil.FAKE_AREA), EsgArea.Type.AC)); for (Country c : network.getCountries()) { esgNetwork.addArea(new EsgArea(new Esg2charName(c.toString()), EsgArea.Type.AC)); } if (network.getHvdcLineCount() > 0) { esgNetwork.addArea(new EsgArea(new Esg2charName("DC"), EsgArea.Type.DC)); } }
private static void writeArea(EsgArea area, RecordWriter recordWriter) throws IOException { String typecard; switch (area.getType()) { case AC: typecard = "AA"; break; case DC: typecard = "DA"; break; default: throw new IllegalArgumentException("Invalid area type: " + area.getType()); } recordWriter.addValue(typecard, 1, 2); recordWriter.addValue(area.getName().toString(), 4, 5); recordWriter.addValue("", 6, 20); recordWriter.newLine(); }
private EsgNode createNode(String busId, String countryIsoCode, double nominalV, double v, double angle, boolean slackBus) { return new EsgNode(new Esg2charName(countryIsoCode), new Esg8charName(dictionary.getEsgId(busId)), nominalV, Double.isNaN(v) ? 1.0 : v / nominalV, Double.isNaN(angle) ? 0.0 : angle, slackBus); }
if (getArea(node.getArea().toString()) == null) { throw new RuntimeException("Node '" + node.getName() + "' reference an unknown area '" + node.getArea() + "'");
private void createACDCVscConverters(EsgNetwork esgNetwork) { //creates 2 DC nodes, for each hvdc line (one node per converter station) for (HvdcLine hvdcLine : Identifiables.sort(network.getHvdcLines())) { // skip lines with converter stations not in the main connected component if (config.isExportMainCCOnly() && (!EchUtil.isInMainCc(hvdcLine.getConverterStation1(), config.isNoSwitch()) || !EchUtil.isInMainCc(hvdcLine.getConverterStation2(), config.isNoSwitch()))) { LOGGER.warn("skipped HVDC line {}: at least one converter station is not in main component", hvdcLine.getId()); continue; } HvdcConverterStation convStation1 = hvdcLine.getConverterStation1(); HvdcConverterStation convStation2 = hvdcLine.getConverterStation2(); //create two dc nodes, one for each conv. station Esg8charName hvdcNodeName1 = new Esg8charName(addToDictionary("DC_" + convStation1.getId(), dictionary, EurostagNamingStrategy.NameType.NODE)); Esg8charName hvdcNodeName2 = new Esg8charName(addToDictionary("DC_" + convStation2.getId(), dictionary, EurostagNamingStrategy.NameType.NODE)); double dcVoltage = EchUtil.getHvdcLineDcVoltage(hvdcLine); esgNetwork.addDCNode(new EsgDCNode(new Esg2charName("DC"), hvdcNodeName1, dcVoltage, 1)); esgNetwork.addDCNode(new EsgDCNode(new Esg2charName("DC"), hvdcNodeName2, dcVoltage, 1)); //create a dc link, representing the hvdc line //Eurostag model requires a resistance of 1 ohm (not hvdcLine.getR()) float r = 1.0f; esgNetwork.addDCLink(new EsgDCLink(hvdcNodeName1, hvdcNodeName2, '1', r, EsgDCLink.LinkStatus.ON)); //create the two converter stations EsgACDCVscConverter esgConv1 = createACDCVscConverter(network.getVscConverterStation(convStation1.getId()), hvdcLine, hvdcNodeName1); EsgACDCVscConverter esgConv2 = createACDCVscConverter(network.getVscConverterStation(convStation2.getId()), hvdcLine, hvdcNodeName2); esgNetwork.addACDCVscConverter(esgConv1); esgNetwork.addACDCVscConverter(esgConv2); //Create one load on the node to which converters stations are connected esgNetwork.addLoad(createConverterStationAdditionalLoad(hvdcLine, convStation1)); esgNetwork.addLoad(createConverterStationAdditionalLoad(hvdcLine, convStation2)); } }
private static void writeDCNode(EsgDCNode dcNode, RecordWriter recordWriter) throws IOException { recordWriter.addValue("DC N", 1, 4); recordWriter.addValue(dcNode.getName().toString(), 6, 13); recordWriter.addValue(dcNode.getArea().toString(), 15, 16); recordWriter.addValue(dcNode.getVbase(), 18, 25); recordWriter.addValue(dcNode.getVinit(), 27, 34); recordWriter.newLine(); }
for (EsgArea area : network.getAreas() .stream() .sorted(Comparator.comparing(EsgArea::getType).thenComparing(area -> area.getName().toString())) .collect(Collectors.toList())) { writeArea(area, recordWriter);
private static void writeNode(EsgNode node, RecordWriter recordWriter) throws IOException { recordWriter.addValue("1", 1); recordWriter.addValue(node.getArea().toString(), 2, 3); recordWriter.addValue(node.getName().toString(), 4, 11); recordWriter.addValue(node.getVbase(), 85, 92); recordWriter.addValue(node.getVinit(), 99, 106); recordWriter.addValue(node.getVangl(), 108, 115); recordWriter.addValue("0.", 117, 124, RecordWriter.Justification.Right); recordWriter.addValue("0.", 126, 133, RecordWriter.Justification.Right); recordWriter.newLine(); if (node.isSlackBus()) { recordWriter.addValue("5", 1); recordWriter.addValue(node.getName().toString(), 4, 11); recordWriter.addValue(node.getVangl(), 40, 47); recordWriter.newLine(); } }