From dc76d9da161dc2f71626fd8e6bed5e614736584d Mon Sep 17 00:00:00 2001 From: Raul Viruez Date: Mon, 18 Jul 2016 12:21:48 +0200 Subject: [PATCH 01/20] Update converter to changes in the iPSL --- .../modelica_export/ModelConverter.java | 8 +- .../modelica_export/ModelicaExport.java | 25 +++-- .../modelica_export/ModelicaMainExporter.java | 15 +++ .../initialization/GeneratorInitData.java | 3 +- .../initialization/Initialization.java | 85 ++++++++++----- .../initialization/InitializationRunner.java | 22 +++- .../initialization/RegulatorInitData.java | 2 +- .../modelica_export/records/BranchRecord.java | 15 +-- .../records/DanglingLineRecord.java | 2 +- .../records/DetailedTransformerRecord.java | 2 +- .../records/FixedTransformerRecord.java | 2 +- .../records/GeneratorRecord.java | 101 ++++++++++++++++-- .../modelica_export/records/LineRecord.java | 2 +- .../modelica_export/records/LoadRecord.java | 35 +++--- .../records/RegulatorRecord.java | 3 +- .../modelica_export/util/Utils.java | 3 +- .../eurostag/EurostagModDefaultTypes.java | 9 +- .../util/psse/PsseModDefaultTypes.java | 2 +- .../org/openmodelica/javaomc/JavaOMCAPI.java | 67 +++++++++++- 19 files changed, 311 insertions(+), 92 deletions(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelConverter.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelConverter.java index 5a5a9ef9..0b73e617 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelConverter.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelConverter.java @@ -325,8 +325,8 @@ public static BranchRecord getModelicaRecord(TwoWindingsTransformer transformer, * @param modContext * @return */ - public static LoadRecord getModelicaRecord(Load load, ConnectBusInfo busInfo, ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator, float snref) { - LoadRecord loadRecord = new LoadRecord(load, busInfo, snref); + public static LoadRecord getModelicaRecord(Load load, ConnectBusInfo busInfo, ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator, float snref, SourceEngine sourceEngine) { + LoadRecord loadRecord = new LoadRecord(load, busInfo, snref, sourceEngine); loadRecord.createModelicaName(modContext, ddbManager, simulator); return loadRecord; @@ -344,8 +344,8 @@ public static LoadRecord getModelicaRecord(Load load, ConnectBusInfo busInfo, Mo // // return fixInjRecord; // } - public static LoadRecord getModelicaRecord(String loadId, float p0, float q0, float busVoltage, float busAngle, ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator, float snref) { - LoadRecord loadRecord = new LoadRecord(loadId, p0, q0, busVoltage, busAngle, snref); + public static LoadRecord getModelicaRecord(String loadId, float p0, float q0, float busVoltage, float busAngle, ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator, float snref, SourceEngine sourceEngine) { + LoadRecord loadRecord = new LoadRecord(loadId, p0, q0, busVoltage, busAngle, snref, sourceEngine); loadRecord.createModelicaName(modContext, ddbManager, simulator); return loadRecord; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java index e5c34631..00a4199f 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java @@ -23,6 +23,7 @@ import eu.itesla_project.modelica_export.util.psse.PsseFixedData; import eu.itesla_project.modelica_export.util.psse.PsseModDefaultTypes; import org.openmodelica.javaomc.JavaOMCAPI; +import org.openmodelica.javaomc.ConnectException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,6 +75,8 @@ public ModelicaExport(Network net, DDBManager ddbManager, Map ii if (this._sourceEngine instanceof EurostagEngine) { // Load PowerSystems library omc.loadFile(this.modelicaLibFile.getPath()); + //omc.loadFile("/home/machados/sources/data/ipsl_Raul/iPSL.mo"); + //omc.loadFile("/home/machados/sources/data/IPSL/PowerSystems.mo"); // Temporal mientras se arregla el macroblock converter omc.getStandardLibrary(); } } catch (Exception e) { @@ -166,7 +169,7 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce GlobalVariable SNREF_Var = new GlobalVariable(StaticData.PARAM_TYPE, StaticData.SNREF, SNREF); globalVars.add(SNREF_Var); if (this._sourceEngine instanceof EurostagEngine) { - OMEGAREF_Var = new GlobalVariable(EurostagModDefaultTypes.DEFAULT_PIN_TYPE, EurostagFixedData.OMEGAREF_NAME); + OMEGAREF_Var = new GlobalVariable(EurostagModDefaultTypes.OUTPUT_PIN_TYPE, EurostagFixedData.OMEGAREF_NAME); globalVars.add(OMEGAREF_Var); } @@ -408,7 +411,7 @@ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, L float p0 = dl.getP0(); float q0 = dl.getQ0(); String loadId = "ext_" + dl.getId(); - LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF); + LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); // FixedInjectionRecord fixInjRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle,modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); this.danglingLoads.add(loadRecord); this.addRecord(loadRecord, writerMo, modContext, _ddbManager, modelicaSim); @@ -449,7 +452,7 @@ private void exportDanglingLines(Writer writerMo, ModExportContext modContext, L String loadId = "ext_" + dl.getId(); BusRecord busRecord = ModelConverter.getModelicaRecord(busName, busVoltage, busAngle, modContext, _ddbManager, modelicaSim); - LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF); + LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); DanglingLineRecord dlineRecord = ModelConverter.getModelicaRecord(dl, busRecord.getModelicaName(), loadRecord.getModelicaName(), modContext, _ddbManager, modelicaSim, SNREF); danglingLines.add(dlineRecord); @@ -583,7 +586,7 @@ private void exportLoads(Writer writerMo, ModExportContext modContext, List fillParameters() { params.put(EurostagFixedData.INIT_SN, this.genRecord.getGenParamsMap().get(EurostagFixedData.SN.toUpperCase())); params.put(EurostagFixedData.INIT_PN, this.genRecord.getGenParamsMap().get(EurostagFixedData.PN.toUpperCase())); params.put(EurostagFixedData.INIT_PNALT, this.genRecord.getGenParamsMap().get(EurostagFixedData.PNALT.toUpperCase())); + params.put(EurostagFixedData.TRAFOINCLUDED, this.genRecord.getGenParamsMap().get(EurostagFixedData.TRAFOINCLUDED.toUpperCase())); float voltage = 0; @@ -91,7 +92,7 @@ private Map fillParameters() { params.put(EurostagFixedData.INIT_LSTATIN, this.genRecord.getGenParamsMap().get(EurostagFixedData.LSTATIN.toUpperCase())); if(this.genRecord.getGenParamsMap().get(EurostagFixedData.MD0PU.toUpperCase()) != null) params.put(EurostagFixedData.INIT_MD0PU, this.genRecord.getGenParamsMap().get(EurostagFixedData.MD0PU.toUpperCase())); - params.put(EurostagFixedData.INIT_OMEGA0, "1"); + params.put(EurostagFixedData.INIT_OMEGA0, "1.0"); params.put(EurostagFixedData.INIT_PPUWLMDV, this.genRecord.getGenParamsMap().get(EurostagFixedData.PNALT.toUpperCase())); params.put(EurostagFixedData.SATURATED, this.genRecord.getGenParamsMap().get(EurostagFixedData.SATURATED.toUpperCase())); params.put(EurostagFixedData.INLMDV, this.genRecord.getGenParamsMap().get(EurostagFixedData.INLMDV.toUpperCase())); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/Initialization.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/Initialization.java index 10c259ec..7324fcfc 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/Initialization.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/Initialization.java @@ -67,8 +67,13 @@ public Initialization(JavaOMCAPI omc, DDBManager ddbManager, Path temporaryDir, } this.fileName = "log/machines" + StaticData.MO_INIT_EXTENSION; + File file = new File(this.fileName); + if(!file.exists()) { + file.getParentFile().mkdir(); + } + try { - this.writerMo = new FileWriter(this.fileName); + this.writerMo = new FileWriter(file); } catch (IOException e) { _log.error(e.getMessage(), e); } @@ -108,7 +113,7 @@ private void writeInitRegulatorsModels() { fileWriter.write(writer.toString()); fileWriter.close(); - this.omc.loadFile(filePath.toString()); + this.omc.loadFile(filePath.toAbsolutePath().toString()); } catch (IOException e) { _log.error(e.getMessage(), e); } catch (ConnectException e) { @@ -116,7 +121,7 @@ private void writeInitRegulatorsModels() { } } - private void writeInitMachines() { + private void writeInitMachines() throws ConnectException { String modelName = null; //File header @@ -125,6 +130,24 @@ private void writeInitMachines() { writerMo.append(StaticData.NEW_LINE); for(InitializationData initData : this.initializationDataList) { + /*this.fileName = "log/"; + File file = new File(this.fileName); + if(!file.exists()) { + file.mkdir(); + } + + modelName = initData.getModelName(); + String fileInitName = "log/" + modelName + StaticData.MO_EXTENSION; + try { + this.writerMo = new FileWriter(fileInitName); + } catch (IOException e) { + _log.error(e.getMessage(), e); + } + + writerMo.append(StaticData.WITHIN); + writerMo.append(StaticData.NEW_LINE);*/ + + modelName = initData.getModelName(); writerMo.append(StaticData.MODEL + modelName); @@ -153,6 +176,7 @@ private void writeInitMachines() { writerMo.append(StaticData.END_MODEL + modelName + StaticData.SEMICOLON); writerMo.append(StaticData.NEW_LINE); + //writerMo.close(); } writerMo.close(); } catch (IOException e) { @@ -165,7 +189,7 @@ private void writeInitMachines() { * Creates the initialization Modelica file in order to initialize all machines. * @throws IOException */ - public void init() throws IOException { + public void init() throws IOException, ConnectException { writeInitRegulatorsModels(); @@ -178,7 +202,7 @@ public void init() throws IOException { List regInitDataList = initData.getRegulatorsInitDataList(); for(RegulatorInitData regInit : regInitDataList) { - regInit.addRegRecordParameters(initData.getRegInitializedValues().get(regInit.getRegRecord().getModelicaName())); + regInit.addRegRecordParameters(initData.getRegInitializedValues().get(regInit.getRegName())); } initData.getGeneratorInitData().addGenRecordParameters(initData.getGenInitializedValues()); @@ -231,20 +255,25 @@ private void addRegulatorInitParameters(List regInitData) thr } private void addConnections(GeneratorInitData genInitData, List regInitData) throws IOException { + List connectedPins = new ArrayList(); + String deviceFrom, deviceTo; // Connect between GEN_INIT and REG_INIT for(RegulatorInitData reg : regInitData) { for(String pinName : reg.getPinsList()) { if(genInitData.getPinsList().contains(pinName)) { - writerMo.append("\t" + EurostagFixedData.CONNECT); + deviceFrom = genInitData.getGenRecord().getModelicaName().concat(".").concat(pinName); + deviceTo = reg.getRegName().concat(".").concat(pinName); - writerMo.append(genInitData.getGenRecord().getModelicaName()); - writerMo.append("." + pinName); - writerMo.append(", "); - writerMo.append(reg.getRegName()); - writerMo.append("." + pinName); + if(connectedPins.contains(deviceFrom) && connectedPins.contains(deviceTo)) continue; - writerMo.append(EurostagFixedData.ANNOT_CONNECT); + writerMo.append("\t" + EurostagFixedData.CONNECT); + writerMo.append(deviceFrom); + connectedPins.add(deviceFrom); + writerMo.append(", "); + writerMo.append(deviceTo); + connectedPins.add(deviceTo); + writerMo.append(StaticData.ANNOT_CONNECT); writerMo.append(StaticData.NEW_LINE); } } @@ -258,8 +287,8 @@ private void addConnections(GeneratorInitData genInitData, List2) { conName = StaticData.PIN + line.split(" ")[2].replaceAll("([\\W|[_]])+", ""); + } else if(pinName.equals(pin) && line.split(" ").length==2) { + conName = pinName; } } } @@ -433,7 +468,7 @@ private List createRegulatorsInitData(InitializationData init } else { for(String r : regulatorInitVarsByRegulator.keySet()) { - if(!r.equals(regName)) { + // if(!r.equals(regName)) { if(regulatorInitVarsByRegulator.get(r).contains(varPin)) { if(!regInitVarsFromOtherRegs.containsKey(regName)) { Map> mapReg = new HashMap<>(); @@ -467,7 +502,7 @@ private List createRegulatorsInitData(InitializationData init } } } - } + //} } } } diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java index 83f81423..121d6b15 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java @@ -19,6 +19,7 @@ import org.openmodelica.javaomc.JavaOMCAPI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Scanner; import eu.itesla_project.modelica_export.util.StaticData; import eu.itesla_project.modelica_export.util.eurostag.EurostagFixedData; @@ -41,8 +42,9 @@ public void initializer() { Map>> regInitVarsFromOtherRegs; Map> regInitOtherVars; + omc.loadFile(this.fileName.getAbsolutePath()); - omc.getClassNamesList().toString(); + //String content = new Scanner(this.fileName).useDelimiter("\\Z").next(); for(InitializationData initData : initializationDataList) { this.genInitValues = new HashMap(); this.regInitValues = new HashMap>(); @@ -52,6 +54,12 @@ public void initializer() { regInitOtherVars = initData.getRegInitOtherVars(); this.modelName = initData.getModelName(); + + //omc.loadFile("log/" + this.modelName + StaticData.MO_EXTENSION); +// omc.loadFile("/home/machados/sources/ITESLA_FINAL/ipst/modelica-export/log/" + this.modelName + StaticData.MO_EXTENSION); + // String content = new Scanner(new File("log/" + this.modelName + StaticData.MO_EXTENSION)).useDelimiter("\\Z").next(); + //System.out.println(content); + String compString = omc.getComponents(this.modelName); String[] compList = compString.contains("},{") == true ? compString.split("\\},\\{") : null; String machine = compList != null ? compList[0].split(",")[1] : compString.split(",")[1]; @@ -69,6 +77,9 @@ public void initializer() { */ long init = System.currentTimeMillis(); omc.simulate(initData.getModelName(), "0", "1", "dassl"); + //omc.getSimulationVars(initData.getModelName() + "_res.mat"); + omc.getErrorString(); + _log.debug("Inicialización (ms) = " + (System.currentTimeMillis()-init)); /** @@ -161,14 +172,15 @@ public void initializer() { } } } - + initData.setRegInitializedValues(regInitValues); // Delete .xml, .c, .h, .o and other files created by JavaOMC - deleteInitFiles(); + //deleteInitFiles(); } omc.clear(); + //// String compString = omc.getComponents(modelName); //// String[] compList = compString.contains("},{") == true ? compString.split("\\},\\{") : null; //// String machine = compList != null ? compList[0].split(",")[1] : compString.split(",")[1]; @@ -289,7 +301,7 @@ public void initializer() { private void deleteInitFiles() throws IOException { String workingDir = System.getProperty("user.dir"); - + System.out.println("Working directory = " + workingDir); Path dirPath = Paths.get(workingDir); File[] initFiles = dirPath.toFile().listFiles(new FilenameFilter() { @Override @@ -302,7 +314,7 @@ public boolean accept(File dir, String name) { try { boolean deleted = Files.deleteIfExists(Paths.get(f.getPath())); if (!deleted) - _log.error("File " + f + " is not deleted."); + _log.error("File " + f + " has not been deleted."); else _log.info("Deleted: " + f.getName()); } catch (FileSystemException exc) { diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/RegulatorInitData.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/RegulatorInitData.java index 05d8c546..97045985 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/RegulatorInitData.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/RegulatorInitData.java @@ -69,7 +69,7 @@ public void addRegRecordParameters(Map regInitValues) { if(regInitValues != null && !regInitValues.isEmpty()) { for(String param : regInitValues.keySet()) { String paramValue = regInitValues.get(param); - param = param.trim().replace(StaticData.PIN, "pin_"); +// param = param.trim().replace(StaticData.PIN, "pin_"); if(initList.contains(param)) { parameter = new IIDMParameter(param, paramValue.trim()); this.regRecord.getIidmregParameters().add(parameter); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/BranchRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/BranchRecord.java index b355cb23..0b8f63fb 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/BranchRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/BranchRecord.java @@ -47,14 +47,7 @@ public void createModelicaName(ModExportContext modContext, DDBManager ddbManage nodeName1 = parseName(bus1.getId()); nodeName2 = parseName(bus2.getId()); - - //Parallel element - //while(modContext.dictionary.isModelicaNameDefined(DEFAULT_BRANCH_PREFIX + nodeName1 + "_" + nodeName2 + "_" + parallelIndex) || - // modContext.dictionary.isModelicaNameDefined(DEFAULT_BRANCH_PREFIX + nodeName2 + "_" + nodeName1 + "_" + parallelIndex)) { - // parallelIndex++; - //} - //String modelicaName = DEFAULT_BRANCH_PREFIX + nodeName1 + "_" + nodeName2 + "_" + parallelIndex; String branchName = parseName(twoTerminalsConnectable.getId()); //CIM ID String modelicaName = DEFAULT_BRANCH_PREFIX + branchName; //CIM ID modelicaName = WordUtils.uncapitalize(modelicaName.substring(0,1)) + modelicaName.substring(1); @@ -80,13 +73,7 @@ public void createModelicaName(ModExportContext modContext, DDBManager ddbManage if(model != null) { -// String data = new String(model.getData("mo")); -// super.setModelData(data); - super.setModelicaType(model.getTypeName()); - -// List defSetParams = model.getDefaultParameters(); -// List defParameters = defSetParams.get(0).getParameters(); -// for(Parameter param : defParameters) branchParameters.add(param); + super.setModelicaType(model.getTypeName()); } else { super.setCorrect(false); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DanglingLineRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DanglingLineRecord.java index 226a0371..0cbd1dcc 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DanglingLineRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DanglingLineRecord.java @@ -121,7 +121,7 @@ public String parseName(String name) { * Add IIDM parameters to Dangling Line Modelica Model in p.u */ private void setParameters(float SNREF) { - this.iidmbranchParameters = new ArrayList(); + //this.iidmbranchParameters = new ArrayList(); float tNominalV = this.danglingLine.getTerminal().getVoltageLevel().getNominalV(); float voltage = Float.isNaN(tNominalV) == false ? tNominalV : 0; float Z = (voltage * voltage)/SNREF; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DetailedTransformerRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DetailedTransformerRecord.java index bb409347..6e2670f7 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DetailedTransformerRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/DetailedTransformerRecord.java @@ -90,7 +90,7 @@ else if(!super.branchParameters.isEmpty()) { */ @Override void setParameters(float SNREF) { - super.iidmbranchParameters = new ArrayList(); + //super.iidmbranchParameters = new ArrayList(); float t1NomV = this.transformer.getTerminal1().getVoltageLevel().getNominalV(); float t2NomV = this.transformer.getTerminal2().getVoltageLevel().getNominalV(); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/FixedTransformerRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/FixedTransformerRecord.java index abb79330..433fb9a9 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/FixedTransformerRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/FixedTransformerRecord.java @@ -110,7 +110,7 @@ public void createRecord(ModExportContext modContext, DDBManager ddbManager, Sim */ @Override void setParameters(float SNREF) { - super.iidmbranchParameters = new ArrayList(); + //super.iidmbranchParameters = new ArrayList(); float t1NomV = this.transformer.getTerminal1().getVoltageLevel().getNominalV(); float t2NomV = this.transformer.getTerminal2().getVoltageLevel().getNominalV(); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java index a30b46aa..415dbef5 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java @@ -40,11 +40,25 @@ public GeneratorRecord(Generator generator, ConnectBusInfo busInfo, boolean isIn if (!isInyection) { + if(this.sourceEngine instanceof EurostagEngine) { + this.DEFAULT_GEN_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_TYPE; + } + else if(this.sourceEngine instanceof PsseEngine) { + this.DEFAULT_GEN_TYPE = PsseModDefaultTypes.DEFAULT_GENROU_TYPE; + } + if (DEFAULT_GEN_TYPE.contains(".")) DEFAULT_GEN_PREFIX = DEFAULT_GEN_TYPE.substring(DEFAULT_GEN_TYPE.lastIndexOf(".") + 1); else DEFAULT_GEN_PREFIX = DEFAULT_GEN_TYPE; } else { + if(this.sourceEngine instanceof EurostagEngine) { + this.DEFAULT_GEN_LOAD_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; + } + else if(this.sourceEngine instanceof PsseEngine) { + this.DEFAULT_GEN_LOAD_TYPE = PsseModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; + } + if (DEFAULT_GEN_LOAD_TYPE.contains(".")) DEFAULT_GEN_LOAD_PREFIX = DEFAULT_GEN_LOAD_TYPE.substring(DEFAULT_GEN_LOAD_TYPE.lastIndexOf(".") + 1); else @@ -393,28 +407,94 @@ public void setParameters(boolean isInyection, float SNREF) { parameter = new IIDMParameter(StaticData.SNREF, StaticData.SNREF); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - } else { + float modulo = voltage / generator.getTerminal().getVoltageLevel().getNominalV(); - float angulo = (float) (angle * Math.PI / 180); - - parameter = new IIDMParameter(EurostagFixedData.VO_REAL, modulo * Math.cos(angulo)); + float angulo = (float) (angle*Math.PI/180); + + double ur0 = modulo * Math.cos(angulo); + double ui0 = modulo * Math.sin(angulo); + + parameter = new IIDMParameter(EurostagFixedData.UR0, ur0); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + + parameter = new IIDMParameter(EurostagFixedData.UI0, ui0); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - parameter = new IIDMParameter(EurostagFixedData.VO_IMG, modulo * Math.sin(angulo)); + } else { + parameter = new IIDMParameter(EurostagFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - parameter = new IIDMParameter(EurostagFixedData.P, (float) -this.generator.getTerminal().getP() / SNREF); + parameter = new IIDMParameter(EurostagFixedData.ANGLE_0, angle); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - parameter = new IIDMParameter(EurostagFixedData.Q, (float) -this.generator.getTerminal().getQ() / SNREF); + //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec + //A partir de ahora le anadimos el - + float pelec = -this.generator.getTerminal().getP()/SNREF; + parameter = new IIDMParameter(EurostagFixedData.P, pelec); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); + + float qelec = -this.generator.getTerminal().getQ()/SNREF; + parameter = new IIDMParameter(EurostagFixedData.Q, qelec); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + +// float modulo = voltage / generator.getTerminal().getVoltageLevel().getNominalV(); +// float angulo = (float) (angle * Math.PI / 180); + +// parameter = new IIDMParameter(EurostagFixedData.VO_REAL, modulo * Math.cos(angulo)); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// parameter = new IIDMParameter(EurostagFixedData.VO_IMG, modulo * Math.sin(angulo)); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// parameter = new IIDMParameter(EurostagFixedData.P, (float) -this.generator.getTerminal().getP() / SNREF); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// parameter = new IIDMParameter(EurostagFixedData.Q, (float) -this.generator.getTerminal().getQ() / SNREF); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); } } else if (this.sourceEngine instanceof PsseEngine) { if(!isInyection ) { +// if(this.generator.getEnergySource().name().equalsIgnoreCase("WIND")) { +// parameter = new IIDMParameter(PsseFixedData.ETERM, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// parameter = new IIDMParameter(PsseFixedData.ANGLEV0, angle); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec +// //A partir de ahora le anadimos el - +// float pelec = -this.generator.getTerminal().getP(); +// parameter = new IIDMParameter(PsseFixedData.PELEC, pelec); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// float qelec = -this.generator.getTerminal().getQ(); +// parameter = new IIDMParameter(PsseFixedData.QELEC, qelec); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// +// double mbase = this.generator.getRatedS(); +// double refValue = Math.sqrt(Math.pow(pelec, 2) + Math.pow(qelec, 2)); +// if(mbase <= refValue) { +// mbase = 1.1*refValue; +// changedMbse = true; +// } +// parameter = new IIDMParameter(PsseFixedData.Mbase, mbase); +// this.iidmgenParameters.add(parameter); +// addParamInMap(parameter.getName(), parameter.getValue().toString()); +// } else { parameter = new IIDMParameter(PsseFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); @@ -444,6 +524,7 @@ public void setParameters(boolean isInyection, float SNREF) { parameter = new IIDMParameter(PsseFixedData.M_b, mbase); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); +// } } else { parameter = new IIDMParameter(PsseFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); @@ -455,7 +536,7 @@ public void setParameters(boolean isInyection, float SNREF) { addParamInMap(parameter.getName(), parameter.getValue().toString()); //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec - //A partir de ahora le anadimos el - +// A partir de ahora le anadimos el - float pelec = -this.generator.getTerminal().getP(); parameter = new IIDMParameter(PsseFixedData.P_0, pelec); this.iidmgenParameters.add(parameter); @@ -504,8 +585,8 @@ public void setChangedMbse(boolean changedMbse) { private ConnectBusInfo busInfo; - private String DEFAULT_GEN_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_TYPE; - private String DEFAULT_GEN_LOAD_TYPE = PsseModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; + private String DEFAULT_GEN_TYPE; // = EurostagModDefaultTypes.DEFAULT_GEN_TYPE; + private String DEFAULT_GEN_LOAD_TYPE; // = PsseModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; private String DEFAULT_GEN_PREFIX; private String DEFAULT_GEN_LOAD_PREFIX; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LineRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LineRecord.java index f8ae53f5..8c630338 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LineRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LineRecord.java @@ -105,7 +105,7 @@ public void createRecord(ModExportContext modContext, DDBManager ddbManager, Sim */ @Override public void setParameters(float SNREF) { - super.iidmbranchParameters = new ArrayList(); + //super.iidmbranchParameters = new ArrayList(); float tNominalV = ((Line) this.line).getTerminal2().getVoltageLevel().getNominalV(); float voltage = Float.isNaN(tNominalV) == false ? tNominalV : 0; float Z = (voltage * voltage)/SNREF; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LoadRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LoadRecord.java index 1cab40f9..31cc8cad 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LoadRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/LoadRecord.java @@ -15,8 +15,12 @@ import eu.itesla_project.modelica_export.ModExportContext; import eu.itesla_project.modelica_export.ModelicaRecord; import eu.itesla_project.modelica_export.util.IIDMParameter; +import eu.itesla_project.modelica_export.util.EurostagEngine; +import eu.itesla_project.modelica_export.util.PsseEngine; +import eu.itesla_project.modelica_export.util.SourceEngine; import eu.itesla_project.modelica_export.util.StaticData; import eu.itesla_project.modelica_export.util.eurostag.EurostagFixedData; +import eu.itesla_project.modelica_export.util.eurostag.EurostagModDefaultTypes; import eu.itesla_project.modelica_export.util.psse.PsseFixedData; import eu.itesla_project.modelica_export.util.psse.PsseModDefaultTypes; import org.apache.commons.lang3.text.WordUtils; @@ -32,7 +36,7 @@ */ public class LoadRecord extends ModelicaRecord { - public LoadRecord(Load load, ConnectBusInfo busInfo, float SNREF) { + public LoadRecord(Load load, ConnectBusInfo busInfo, float SNREF, SourceEngine sourceEngine) { this.load = load; this.busInfo = busInfo; this.loadId = load.getId(); @@ -41,7 +45,8 @@ public LoadRecord(Load load, ConnectBusInfo busInfo, float SNREF) { this.q0 = this.load.getQ0(); this.busVoltage = Float.NaN; this.busAngle = Float.NaN; - + this.sourceEngine = sourceEngine; + if(this.busConnected) { if (load.getTerminal().getBusView().getBus() != null) { if(!Float.isNaN(load.getTerminal().getBusView().getBus().getV())) @@ -63,13 +68,14 @@ public LoadRecord(Load load, ConnectBusInfo busInfo, float SNREF) { } } - public LoadRecord(String loadId, float p0, float q0, float busVoltage, float busAngle, float SNREF) { + public LoadRecord(String loadId, float p0, float q0, float busVoltage, float busAngle, float SNREF, SourceEngine sourceEngine) { this.loadId = loadId; this.busVoltage = busVoltage; this.busAngle = busAngle; this.p0 = p0; this.q0 = q0; this.busConnected= true; + this.sourceEngine = sourceEngine; addLfParameters(); } @@ -157,22 +163,24 @@ else if(!loadParameters.isEmpty()) { private void addLfParameters() { float modulo = this.busVoltage; float angulo = this.busAngle; + this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.V_0, modulo)); this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.P_0, this.p0)); this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.Q_0, this.q0)); - this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.PQBRAK, 0.7)); + if(this.sourceEngine instanceof EurostagEngine) { + DEFAULT_LOAD_TYPE = EurostagModDefaultTypes.DEFAULT_LOAD_TYPE; + //Harcoded values because we don't have it anywhere. Add these values only when PwLoadVoltageDependence is used + this.iidmloadParameters.add(new IIDMParameter(EurostagFixedData.ALPHA, 1)); + this.iidmloadParameters.add(new IIDMParameter(EurostagFixedData.BETA, 2)); + } else if(this.sourceEngine instanceof PsseEngine) { + DEFAULT_LOAD_TYPE = PsseModDefaultTypes.DEFAULT_LOAD_TYPE; + this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.PQBRAK, 0.7)); + } if(DEFAULT_LOAD_TYPE.contains(".")) DEFAULT_LOAD_PREFIX = DEFAULT_LOAD_TYPE.substring(DEFAULT_LOAD_TYPE.lastIndexOf(".") + 1); else DEFAULT_LOAD_PREFIX = DEFAULT_LOAD_TYPE; - //TODO Harcoded values because we don't have it anywhere - //Add these values only when PwLoadVoltageDependence is used -// if(EurostagModDefaultTypes.LOAD_VOLTAGE_DEP_TYPE.contains(DEFAULT_LOAD_PREFIX)) { -// this.iidmloadParameters.add(new IIDMParameter(EurostagFixedData.ALPHA, 1)); -// this.iidmloadParameters.add(new IIDMParameter(EurostagFixedData.BETA, 2)); -// angulo = (float) (angle*Math.PI/180); -// } this.iidmloadParameters.add(new IIDMParameter(PsseFixedData.ANGLE_0, angulo)); } @@ -201,8 +209,9 @@ public LoadRecord getClassName() { private float busAngle; private boolean busConnected; private ConnectBusInfo busInfo; - - private String DEFAULT_LOAD_TYPE = PsseModDefaultTypes.CONSTANT_LOAD_TYPE; + private SourceEngine sourceEngine; + + private String DEFAULT_LOAD_TYPE; private String DEFAULT_LOAD_PREFIX; private List loadParameters = new ArrayList(); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/RegulatorRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/RegulatorRecord.java index 1d40f0a2..eab46a37 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/RegulatorRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/RegulatorRecord.java @@ -140,7 +140,8 @@ public void createModelicaName(ModExportContext modContext, DDBManager ddbManage Parameters modelicaParameters = null; if (parameters != null) { modelicaParameters = parameters; - } else { + } + else { // Cogemos directamente los de PSSE (que en teoria tienen el // mismo nombre) modelicaParameters = ddbManager.findParameters(in, this.sourceSim); diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/Utils.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/Utils.java index f1d621e9..515a97b6 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/Utils.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/Utils.java @@ -96,7 +96,8 @@ public static List parseModelPins(BufferedReader buffer) throws IOExcept String line =buffer.readLine(); while(line != null) { - if(line.trim().startsWith(EurostagModDefaultTypes.PIN_TYPE) && !line.contains("isInitValue")) { + //if(line.trim().startsWith(EurostagModDefaultTypes.PIN_TYPE) && !line.contains("isInitValue")) { + if((line.trim().startsWith(EurostagModDefaultTypes.PIN_TYPE) || line.trim().startsWith(EurostagModDefaultTypes.INPUT_PIN_TYPE) || line.trim().startsWith(EurostagModDefaultTypes.OUTPUT_PIN_TYPE)) && !line.contains("isInitValue")) { //Parseo de pines //21-8-2014 modificación && line.contains("isInitValue") lineData = line.trim().split(StaticData.WHITE_SPACE); if(lineData.length >= 2) { String pinName = lineData[1].endsWith(StaticData.SEMICOLON) == true ? lineData[1].substring(0, lineData[1].length()-1) : lineData[1]; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/eurostag/EurostagModDefaultTypes.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/eurostag/EurostagModDefaultTypes.java index 3a4d61c5..9f784f86 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/eurostag/EurostagModDefaultTypes.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/eurostag/EurostagModDefaultTypes.java @@ -10,7 +10,10 @@ * @author Silvia Machado */ public class EurostagModDefaultTypes { - public final static String PIN_TYPE = "iPSL.Connectors.ImPin"; + // public final static String PIN_TYPE = "iPSL.Connectors.ImPin"; + public final static String PIN_TYPE = "PowerSystems.Connectors.ImPin"; + public final static String INPUT_PIN_TYPE = "Modelica.Blocks.Interfaces.RealInput"; + public final static String OUTPUT_PIN_TYPE = "Modelica.Blocks.Interfaces.RealOutput"; public final static String DEFAULT_PIN_TYPE = "iPSL.Connectors.ImPin"; // iPSL.Connectors.PwPin 20140515 @@ -22,7 +25,7 @@ public class EurostagModDefaultTypes { public final static String DEFAULT_GEN_TYPE = "iPSL.Electrical.Machines.Eurostag.PwGeneratorM2S"; - public final static String DEFAULT_GEN_LOAD_TYPE = "iPSL.Electrical.Loads.PwLoadPQ"; + public final static String DEFAULT_GEN_LOAD_TYPE = "iPSL.Electrical.Loads.Eurostag.PwLoadPQ"; public final static String DEFAULT_LINE_TYPE = "iPSL.Electrical.Branches.PwLine_2"; @@ -32,7 +35,7 @@ public class EurostagModDefaultTypes { public final static String DEF_REC_OPEN_LINE_TYPE = "iPSL.Electrical.Branches.PwLinewithOpeningReceiving"; - public final static String DEFAULT_LOAD_TYPE = "iPSL.Electrical.Loads.PwLoadPQ"; + public final static String DEFAULT_LOAD_TYPE = "iPSL.Electrical.Loads.Eurostag.PwLoadVoltageDependence"; public final static String LOAD_VOLTAGE_DEP_TYPE = "iPSL.Electrical.Loads.PwLoadVoltageDependence"; diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/psse/PsseModDefaultTypes.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/psse/PsseModDefaultTypes.java index 08a61840..abb7c863 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/psse/PsseModDefaultTypes.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/util/psse/PsseModDefaultTypes.java @@ -73,7 +73,7 @@ public class PsseModDefaultTypes { public final static String DEF_REC_OPEN_LINE_TYPE = "iPSL.Electrical.Branches.PwLinewithOpening"; - public final static String DEFAULT_LOAD_TYPE = "iPSL.Electrical.Loads.PwLoadPQ"; + public final static String DEFAULT_LOAD_TYPE = "iPSL.Electrical.Loads.PSSE.Load"; public final static String LOAD_VOLTAGE_DEP_TYPE = "iPSL.Electrical.Loads.PwLoadVoltageDependence"; diff --git a/modelica-export/src/main/java/org/openmodelica/javaomc/JavaOMCAPI.java b/modelica-export/src/main/java/org/openmodelica/javaomc/JavaOMCAPI.java index 82aef5ed..b7f839d1 100644 --- a/modelica-export/src/main/java/org/openmodelica/javaomc/JavaOMCAPI.java +++ b/modelica-export/src/main/java/org/openmodelica/javaomc/JavaOMCAPI.java @@ -39,6 +39,8 @@ package org.openmodelica.javaomc; +import java.util.List; + public class JavaOMCAPI extends OMCProxy { /** * Constructor @@ -1009,7 +1011,7 @@ public boolean simulate(String modelname,String tstart, String tstop, String met * @return * @throws ConnectException */ - public boolean simulate(String modelname,String tstart, String tstop, String method, + public boolean simulate(String modelname, String tstart, String tstop, String method, String noofinterval) throws ConnectException { String retval=sendExpression("simulate("+modelname+",startTime="+tstart+ @@ -1018,6 +1020,15 @@ public boolean simulate(String modelname,String tstart, String tstop, String met return retval.contains("plt"); } + /** + * + */ + public boolean simulate() throws ConnectException { +// simulate(className, [startTime], [stopTime], [numberOfIntervals], [tolerance], [method], [fileNamePrefix], [options], [outputFormat], [variableFilter], [cflags], [simflags]) + + return false; + } + /** * plot using OpenModelica plotting function. * @@ -1062,4 +1073,58 @@ public String getValue(String variableName, String t) throws ConnectException String retval = sendExpression("val("+variableName+","+t+")"); return retval; } + + /** + * @author Silvia Machado + * Gets results variables and values from a simulation file + * @param fileName + * @param readParameters + * @param openmodelicaStyle + * @throws ConnectException + */ + public String getSimulationVars(String fileName, boolean readParameters, boolean openmodelicaStyle) throws ConnectException { + return sendExpression("readSimulationResultVars(\"" + fileName + "\"," + readParameters + "," + openmodelicaStyle + ")"); + + } + + public String getSimulationVars(String fileName) throws ConnectException { + return getSimulationVars(fileName, true, false); + } + + /** + * @author Silvia Machado + * Gets the selected variables from the simulation results producing the output file. + * @param fileName + * @param readParameters + * @param openmodelicaStyle + * @throws ConnectException + */ + public String filterSimulationResults(String inFileName, String outFileName, List varsList, int numberOfIntervals) throws ConnectException { + String vars = varsList.toString(); + String retval = sendExpression("filterSimulationResults(" + inFileName + "," + outFileName + "," + vars + "," + numberOfIntervals + ")"); + return retval; + } + + public String filterSimulationResults(String inFileName, String outFileName, List varsList) throws ConnectException { + return filterSimulationResults(inFileName, outFileName, varsList, 0); + } + + public String readSimulationResultSize(String fileName) throws ConnectException { + return sendExpression("readSimulationResultSize(" + fileName + ")"); + } + + /** + * @author Silvia Machado + * Returns a user-friendly string containing the errors stored in the buffer. With warningsAsErrors=true, it reports warnings as if they were errors. + * @param warningAsErrors + * @throws ConnectException + */ + public String getErrorString(boolean warningsAsErrors) throws ConnectException { + return sendExpression("getErrorString(" + warningsAsErrors + ")"); + } + + public String getErrorString() throws ConnectException { + return sendExpression("getErrorString(" + false + ")"); + } + } From edc4366cd76815a38dce5025dc9fa67f8ff73213 Mon Sep 17 00:00:00 2001 From: Raul Viruez Date: Mon, 18 Jul 2016 12:22:50 +0200 Subject: [PATCH 02/20] Update converter to changes in the iPSL --- .../src/main/java/itesla/converter/Block.java | 5 +- .../main/java/itesla/converter/Converter.java | 8 +- .../java/itesla/converter/EU_MBparser.java | 3 - .../main/java/itesla/converter/Element.java | 4 +- .../java/itesla/converter/ModelicaModel.java | 379 +++++++++++++++--- .../main/java/itesla/converter/ParParser.java | 9 +- .../main/resources/CorrespondenceTable.csv | 78 ++-- .../src/test/java/itesla/test/iTesla.java | 17 +- 8 files changed, 372 insertions(+), 131 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Block.java b/EU2Mod_MB/src/main/java/itesla/converter/Block.java index 0a30cf76..8c6d5174 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Block.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Block.java @@ -9,10 +9,7 @@ import java.util.ArrayList; import java.util.List; -/** - * Single block of the Eurostag macroblock - * @author Marc Sabate - */ +//Single block of the Eurostag macroblock public class Block { public String[] param = new String[8]; public String[] entries = new String[5]; diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Converter.java b/EU2Mod_MB/src/main/java/itesla/converter/Converter.java index 24340323..48d9f139 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Converter.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Converter.java @@ -9,8 +9,6 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; @@ -20,9 +18,6 @@ import java.util.Hashtable; import java.util.List; -/** - * @author Marc Sabate - */ public class Converter { public String pathfrm; public String pathOut; @@ -210,8 +205,11 @@ public void convert2MO() throws IOException { if (!MO.outputZeroPins.isEmpty()){ for (int i=0; i - */ public class EU_MBparser { diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Element.java b/EU2Mod_MB/src/main/java/itesla/converter/Element.java index c64eabf6..501b2d1e 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Element.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Element.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; -/** +/* * Element de la librería PowerSystems. Hace una correspondencia con el elemento de Eurostag. * idEu: cada bloque del macrobloque tiene un id de Eurostag asignado. * nameEu: nombre del bloque de Eurostag @@ -17,8 +17,8 @@ * nameModelica: nombre del bloque dentro de la librería de PowerSystems. * nInputpins: numero de input pins del modelo en Modelica * param: nombre de los parametros del modelo en Modelica - * @author Marc Sabate */ + public class Element { public Integer idEu; public String nameEu; diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java index 3fc508a8..59a98718 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java @@ -8,13 +8,12 @@ import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Hashtable; import java.util.List; +import java.util.Map; -/** - * @author Marc Sabate - */ public class ModelicaModel { private Block[] Blocks; private Integer[][] Link; @@ -34,6 +33,7 @@ public class ModelicaModel { public List outputOutputConnection; public List NamedLinks; public HashMap interfaceVariables; + public int[][] LinksBlocksId1; public List init_friParameters; public List init_InterfaceParameters; private ParParser parData; @@ -81,6 +81,7 @@ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtabl this.interfaceVariables = new HashMap(); this.init_friParameters = new ArrayList(); this.init_InterfaceParameters = new ArrayList(); + this.LinksBlocksId1 = new int[Blocks.length][7]; //PNdeclared = false; Heading(); @@ -144,25 +145,28 @@ public void End() { } public void PositiveImPin() { + Boolean TerminalVoltage = false; Boolean FieldCurrent = false; Boolean ActivePower = false; String name; String base; for (int i=0; i0) { modelParameters = " ("; } else {modelParameters = ";";} first = true; previous = true; + for (int j=0; j0) { modelParameters = modelParameters + ");"; } + // if (modelParameters.contains("PN") && !PNdeclared) { // outputParamDeclaration.add(" parameter Real PN = 1000;"); // PNdeclared = true; // } - outputBlocksDeclaration.add(modelDeclaration + modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); + if(Blocks[i].idEu==22 ||Blocks[i].idEu==23 || Blocks[i].idEu == 13 || Blocks[i].idEu == 14){ + outputBlocksDeclaration.add(modelDeclaration + " (nu = "+ind[i] + ")"+ modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); + + }else{ + outputBlocksDeclaration.add(modelDeclaration + modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); + + } + + } + } + } - + public void ZeroPins() { Integer ind; + boolean added; for (int i=0; i ImPins = new ArrayList(); String Conn; String ConnLeft; String ConnRight; + String nameLink; Element model; Integer indConnRight; for (int i=0; i1) { // && (Blocks[i].output.substring(0, 1).equals("&") || Blocks[i].output.substring(0, 1).equals("/"))){ model = CT.get(Blocks[i].idEu); - ConnLeft = "pin_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); + if (Blocks[i].output.contains("@")) { + ConnLeft = "pin_At_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); + + }else{ + ConnLeft = "pin_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); + } + if (model.idEu.equals(27)) { ConnRight = "pin_TerminalVoltage"; } else if (model.idEu.equals(50)) { @@ -506,11 +756,18 @@ public void OutputConnection() { } else if (model.idEu.equals(60)) { base = Blocks[i].param[2].replaceAll("([\\W|[_]])+", ""); ConnRight = "pin_Current"; + } else if (model.idEu.equals(22)) { + ConnRight = "Min" + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".yMin"; + + } else if (model.idEu.equals(23)) { + ConnRight = "Max" + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".yMax"; + } else { - ConnRight = model.nameModelica + "_" + Blocks[i].count.toString() + ".n1"; + ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".y"; } Conn = " connect(" + ConnLeft + ", " + ConnRight + ");"; outputOutputConnection.add(Conn); + } } } diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ParParser.java b/EU2Mod_MB/src/main/java/itesla/converter/ParParser.java index 69a85ade..3f1f989d 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/ParParser.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/ParParser.java @@ -12,14 +12,9 @@ import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; -import java.util.Map.Entry; -import java.util.Set; - -import javax.swing.JComboBox.KeySelectionManager; /* @@ -31,8 +26,10 @@ * setIds: lista con los ids de parametros definidos (OJO, es posible que no esten ordenados o que se salten ids) * idset: hashmap que indica para cada id la correspondiente columna de parametros * linesxBlock: parametro interno necesario para el parseo correcto de los parametros. - * @author Marc Sabate */ + + + public class ParParser { private String modelName; diff --git a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv index 3652e39b..4fd07f70 100644 --- a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv +++ b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv @@ -1,55 +1,55 @@ EU num;Eurostag Name;nInputPins;Modelica model;param 1;param 2;param 3;param 4;param 5;param 6;offset;init_value;NOTES -1; SUMMER;5;PowerSystems.NonElectrical.Math.ImSum5;a1;a2;a3;a4;a5;;a0;nStartValue; -2;MULTIPLIER;5;PowerSystems.NonElectrical.Math.ImMult5;a1;a2;a3;a4;a5;;a0;; -3; INTEGRATOR;1;PowerSystems.NonElectrical.Continuous.ImIntegrator;K;;;;;;;nStartValue; -4; RELAY;3;PowerSystems.NonElectrical.Nonlinear.ImRelay;;;;;;;;; -5; SQUARE-ROOT;1;PowerSystems.NonElectrical.Math.ImSqrt;;;;;;;;; -6; SIMPLE-LAG;1;PowerSystems.NonElectrical.Continuous.ImSimpleLag;K;T;;;;;;nStartValue; -7; LIMITED-INTEGRATOR;1;PowerSystems.NonElectrical.Continuous.ImLimitedIntegrator;Ymax;K;Ymin;;;;;nStartValue; -8; LIMITED-SIMPLE-LAG;1;PowerSystems.NonElectrical.Continuous.ImLimitedSimpleLag;Ymax;K;T;Ymin;;;;nStartValue; -9; DERIVATIVE-LAG;1;PowerSystems.NonElectrical.Continuous.ImDerivativeLag;K;T;;;;;;pStartValue; -10; LEAD-LAG;1;PowerSystems.NonElectrical.Continuous.ImLeadLag;K;T1;T2;;;;;nStartValue; -11; CONSTANT;0;PowerSystems.NonElectrical.Math.ImConstant;K;;;;;;;; -12; EXPONENTIAL;1;PowerSystems.NonElectrical.Math.ImExponential;A;B;;;;;;; -13; AND;5;PowerSystems.NonElectrical.Logical.ImAnd;;;;;;;;; -14; OR;5;PowerSystems.NonElectrical.Logical.ImOr;;;;;;;;; -15; FUNCTION;1;PowerSystems.NonElectrical.ImFunction;v;;;;;;;; -16; GAIN;1;PowerSystems.NonElectrical.Math.ImGain;K;;;;;;;; -17; ABS;1;PowerSystems.NonElectrical.Math.ImAbs;;;;;;;;; -18; POWER;1;PowerSystems.NonElectrical.Math.ImRampUpToAPower;A;;;;;;;; -19; LIMITER;1;PowerSystems.NonElectrical.Nonlinear.ImLimiter;Ymax;Ymin;;;;;;; -20; DEAD BAND;1;PowerSystems.NonElectrical.Nonlinear.ImDeadBand;Xmax;Xmin;;;;;;; +1; SUMMER;5;Modelica.Blocks.Math.MultiSum;a1;k;k2;k3;k4;;k0;y_start; +2;MULTIPLIER;5;iPSL.NonElectrical.Eurostag.Math.ImMult5;a1;a;a3;a4;a5;;a0;; +3; INTEGRATOR;1;Modelica.Blocks.Continuous.Integrator;k;;;;;;;y_start; +4; RELAY;3;iPSL.NonElectrical.Logical.Relay;;;;;;;;; +5; SQUARE-ROOT;1;iPSL.NonElectrical.Eurostag.Math.ImSqrt;;;;;;;;; +6; SIMPLE-LAG;1;iPSL.NonElectrical.Continuous.SimpleLag;K;T;;;;;;y_start; +7; LIMITED-INTEGRATOR;1;Modelica.Blocks.Continuous.LimIntegrator;outMax;k;outMin;;;;;y_start; +8; LIMITED-SIMPLE-LAG;1;iPSL.NonElectrical.Continuous.SimpleLagLim;outMax;K;T;outMin;;;;y_start; +9; DERIVATIVE-LAG;1;iPSL.NonElectrical.Continuous.DerivativeLag;K;T;y_start;;;;;x_start; +10; LEAD-LAG;1;iPSL.NonElectrical.Continuous.LeadLag;K;T1;T2;;;;;y_start; +11; CONSTANT;0;Modelica.Blocks.Sources.Constant;k;;;;;;;; +12; EXPONENTIAL;1;iPSL.NonElectrical.Eurostag.Math.ImExponential;A;B;;;;;;; +13; AND;5;iPSL.NonElectrical.Eurostag.Logical.ImAnd;;;;;;;;; +14; OR;5;iPSL.NonElectrical.Eurostag.Logical.ImOr;;;;;;;;; +15; FUNCTION;1;iPSL.NonElectrical.Eurostag.ImFunction;v;;;;;;;; +16; GAIN;1;Modelica.Blocks.Math.Gain;k;;;;;;;; +17; ABS;1;Modelica.Blocks.Math.Abs;;;;;;;;; +18; POWER;1;iPSL.NonElectrical.Eurostag.Math.ImRampUpToAPower;A;;;;;;;; +19; LIMITER;1; Modelica.Blocks.Nonlinear.Limiter;uMax;uMin;;;;;;; +20; DEAD BAND;1;Modelica.Blocks.Nonlinear.DeadZone;uMax;uMin;;;;;;; 21; HYSTERSIS;;;;;;;;;;; -22; MINIMUM_SELECTOR;5;PowerSystems.NonElectrical.Math.ImMin;;;;;;;;; -23; MAXIMUM_SELECTOR;5;PowerSystems.NonElectrical.Math.ImMax;;;;;;;;; -24; VARIABLE-LIMITER;3;PowerSystems.NonElectrical.Nonlinear.ImVariableLimiter;;;;;;;;; -25; SCHMIDT-TRIGGER;1;PowerSystems.NonElectrical.Nonlinear.ImSchmidtTrigger;XMAX;XMIN;initValue;;;;;; -26; SET POINT;0;PowerSystems.NonElectrical.Math.ImSetPoint;;;;;;;;V; +22; MINIMUM_SELECTOR;5;Modelica.Blocks.Math.MinMax;;;;;;;;; +23; MAXIMUM_SELECTOR;5;Modelica.Blocks.Math.MinMax;;;;;;;;; +24; VARIABLE-LIMITER;3;Modelica.Blocks.Nonlinear.VariableLimiter;;;;;;;;; +25; SCHMIDT-TRIGGER;1;iPSL.NonElectrical.Eurostag.Nonlinear.ImSchmidtTrigger;XMAX;XMIN;initValue;;;;;; +26; SET POINT;0;iPSL.NonElectrical.Eurostag.Math.ImSetPoint;;;;;;;;V; 27; TERMINAL-VOLTAGE;0; PowerSystems.TERMINAL-VOLTAGE;;;;;;;;; We eliminate this block in Modelica 28; ACTIVE-POWER;1;PowerSystems.Electrical.Sensors.Eurostag.PwActivePower;UNIT;SNREF;SN;PN;PNALT;QNALT;;; -29; OUMAINT;3;PowerSystems.NonElectrical.Logical.ImOumaint;;;;;;;;nStartValue; -30; DELAY_2;1;PowerSystems.NonElectrical.Nonlinear.ImDelay_2;T;SimpleLagStartValue;;;;;;; +29; OUMAINT;3;iPSL.NonElectrical.Eurostag.Logical.ImOumaint;;;;;;;;y_start; +30; DELAY_2;1;iPSL.NonElectrical.Eurostag.Nonlinear.ImDelay_2;T;SimpleLagStartValue;;;;;;; 31; REACTIVE-POWER;1;PowerSystems.Electrical.Sensors.Eurostag.PwReactivePower;UNIT;SNREF;SN;PN;PNALT;QNALT;;;This blocks is a power block and it equation varies if the machine has internal trafo or not!! -32; MONOSTABLE;1;PowerSystems.NonElectrical.Nonlinear.ImMonostable;S;T;;;;;;; -33; DELAY_1;1;PowerSystems.NonElectrical.Nonlinear.ImDelay_1;T;;;;;;;; +32; MONOSTABLE;1;iPSL.NonElectrical.Eurostag.Nonlinear.ImMonostable;S;T;;;;;;; +33; DELAY_1;1;Modelica.Blocks.Nonlinear.FixedDelay;delayTime;;;;;;;; 34; LN;1;PowerSystems.NonElectrical.Math.ImLN;a1;;;;;;a0;; -35; DIVIDER;2;PowerSystems.NonElectrical.Math.ImDiv2;a1;a2;;;;;a0;nStartValue; -36; INVERSE_FUNCTION;1;PowerSystems.NonElectrical.ImInverseFunction;v;;;;;;;; -37; SET-RESET;2;PowerSystems.NonElectrical.Math.ImSetReset;;;;;;;;nStartValue; -38; RESET-SET;2;PowerSystems.NonElectrical.Math.ImResetSet;;;;;;;;nStartValue; +35; DIVIDER;2;iPSL.NonElectrical.Eurostag.Continuous.ImDiv2;a1;a2;;;;;a0;y_start; +36; INVERSE_FUNCTION;1;iPSL.NonElectrical.Eurostag.ImInverseFunction;v;;;;;;;; +37; SET-RESET;2;iPSL.NonElectrical.Eurostag.Math.ImSetReset;;;;;;;;y_start; +38; RESET-SET;2;iPSL.NonElectrical.Eurostag.Math.ImResetSet;;;;;;;;y_start; 39; SECOND_ORDER;1;PowerSystems.NonElectrical.Continuous.ImSecondOrder;A0;A1;A2;B1;B2;;;pStartValue; -40; INTEGRATOR-FOLLOWER;3;PowerSystems.NonElectrical.Continuous.ImIntegratorFollower;K;T;;;;;;nStartValue; -41; PULSE;1;PowerSystems.NonElectrical.Nonlinear.ImPulse;S;T;;;;;;; -42; COSINE;1;PowerSystems.NonElectrical.Math.ImCosine;;;;;;;;; -43; SINE;1;PowerSystems.NonElectrical.Math.ImSine;;;;;;;;; +40; INTEGRATOR-FOLLOWER;3;iPSL.NonElectrical.Eurostag.Continuous.ImIntegratorFollower;K;T;;;;;;y_start; +41; PULSE;1;iPSL.NonElectrical.Eurostag.Nonlinear.ImPulse;S;T;;;;;;; +42; COSINE;1;Modelica.Blocks.Math.Cos;;;;;;;;; +43; SINE;1;Modelica.Blocks.Math.Sin;;;;;;;;; 44; TANGENT;;;;;;;;;;; -45; ARC –TANGENT;2;PowerSystems.NonElectrical.Math.ImArcTangent;;;;;;;offset;; +45; ARC –TANGENT;2;iPSL.NonElectrical.Eurostag.Math.ImArcTangent;;;;;;;offset;; 46; ARC-COSINE;;;;;;;;;;; 47; ARC-SINE;;;;;;;;;;; 48; COUNTER;;;;;;;;;;; 49; REFER_FREQ;;;;;;;;;;; 50; FIELD_CURRENT;;;;;;;;;;; -51; LIMITED-LEAD-LAG;1;PowerSystems.NonElectrical.Continuous.ImLimitedLeadLag;YMAX;K;T1;T2;YMIN;;;nStartValue; +51; LIMITED-LEAD-LAG;1;iPSL.NonElectrical.Continuous.ImLimitedLeadLag;YMAX;K;T1;T2;YMIN;;;y_start; 52; RELAY-DELAY;;;;;;;;;;; 54; I2R;;;;;;;;;;; 55; I2I;;;;;;;;;;; diff --git a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java index 47af1ac9..9298b801 100644 --- a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java +++ b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java @@ -6,25 +6,20 @@ */ package itesla.test; -import java.util.ArrayList; +import itesla.converter.Converter; + +import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.io.File; -import java.io.IOException; -import itesla.converter.Converter; -import itesla.converter.ParParser; -/** - * @author Marc Sabate - */ public class iTesla { private static Converter converter; private static Converter converter_init; - private static final String pathFRM = "C:\\Users\\sabaterm\\Documents\\iTesla\\Conversor Proves Nom\\edftur1c.frm"; - private static final String pathOUT = "C:\\Users\\sabaterm\\Documents\\iTesla\\Conversor Proves Nom\\"; + private static final String pathFRM = "C:\\Users\\viruezr\\Desktop\\Conversiones\\goverRTE22\\edftur1c.frm"; + private static final String pathOUT = "C:\\Users\\viruezr\\Desktop\\Conversiones\\goverRTE22\\modelica\\"; public static void main(String[] args) throws IOException { converter = new Converter(pathFRM, pathOUT, false); @@ -49,7 +44,7 @@ public static void main(String[] args) throws IOException { /* * Function that returns a specific set of parameters given by its reference id */ - Integer idSet = 2; + Integer idSet = 1; HashMap nthParameterSet = converter.parData.getSetParameters(idSet); for (Map.Entry entry : nthParameterSet.entrySet()) { From 27affc8e7f054ca5977c72ff8e9f52f0eff3d181 Mon Sep 17 00:00:00 2001 From: Raul Viruez Date: Mon, 18 Jul 2016 12:23:47 +0200 Subject: [PATCH 03/20] Update converter to changes in the iPSL --- modelica-export/pom.xml | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/modelica-export/pom.xml b/modelica-export/pom.xml index 486d62b2..354271f3 100644 --- a/modelica-export/pom.xml +++ b/modelica-export/pom.xml @@ -35,6 +35,7 @@ 1.7 + eu.itesla_project.modelica_export.test.ModelicaExporterTestLF C:/Users/machadosc/Dropbox/Trabajo/Silvia iTesla Data/Modelo 22 Buses/CIM2_TP.xml 127.0.0.1 @@ -44,14 +45,8 @@ 3.2 psse 32.1 - false - dummy dummy - - dummy - dummy - dummy @@ -87,7 +82,6 @@ eu.itesla_project.iidm-ddb iidm-ddb-ejb 0.0.1-SNAPSHOT - ejb-client @@ -106,7 +100,6 @@ iidm-ddb-eurostag-modelica-converter 0.0.1-SNAPSHOT - @@ -124,7 +117,6 @@ - org.codehaus.mojo exec-maven-plugin @@ -153,12 +145,7 @@ ${modelicaVersion} ${sourceEngine} ${sourceVersion} - ${hasEvents} - ${eventsFile} ${modelicaLibPath} - ${ddbDir} - ${genDictFile} - ${auxDictFile} From 80407216d4ded06eb9080282930fd84f58f2d481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Tue, 19 Jul 2016 09:32:42 +0200 Subject: [PATCH 04/20] Delete special characters Delete special characters. --- .../java/itesla/converter/ModelicaModel.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java index 59a98718..2eaa11da 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java @@ -46,19 +46,19 @@ public class ModelicaModel { * parData: lista parametros definidos dentro del archivo .par * outputHeading: la cabecera de un modelo de modelica (e.g: model PwLine) * outputEnd: end de un modelo de Modelica (e.g: end model;) - * outputPositiveImPin: lista de strings donde cada elemento es la declaración de cada input pin del modelo - * outputNegativeImPin: lista de strings donde cada elemento es la declaración de cada output pin del modelo - * outputParamInit: lista de strings donde cada elemento es la declaración de los parámetros de inicialización de los modelos que tengan parámetro de inicialización - * outputParamDeclaration: lista de strings donde cada elemento es la declaración de los parámetros dentro del *.par (e.g. parameter Real T1;) - * outputBlocksDeclaration: lista de strings donde cada elemento es la declaración de la instancia de un bloque dentro del macrobloque (e.g. PowerSystems.Math.ImSetPoint setPoint(V=1);) + * outputPositiveImPin: lista de strings donde cada elemento es la declaración de cada input pin del modelo + * outputNegativeImPin: lista de strings donde cada elemento es la declaración de cada output pin del modelo + * outputParamInit: lista de strings donde cada elemento es la declaración de los parámetros de inicialización de los modelos que tengan parámetro de inicialización + * outputParamDeclaration: lista de strings donde cada elemento es la declaración de los parámetros dentro del *.par (e.g. parameter Real T1;) + * outputBlocksDeclaration: lista de strings donde cada elemento es la declaración de la instancia de un bloque dentro del macrobloque (e.g. PowerSystems.Math.ImSetPoint setPoint(V=1);) * outputZeroPins: los pines de entrada de algunos bloques que no se usan (como por ejemplo, en un bloque suma, si solo se usan 3 pines de entrada, 2 quedan sin usar), entonces se ponen a 0 en las ecuaciones, para tener un sistema determinado. - * outputConnection: lista de strings con la conexión entre bloques - * outputInputConnection: lista de strings con la conexión de los bloques con los inputpins del macrobloque (e.g. connect(pin_CM,suma.p1)) - * outputOutputConnection: lista de strings con la conexión de los bloques con los outputpins del macrobloque + * outputConnection: lista de strings con la conexión entre bloques + * outputInputConnection: lista de strings con la conexión de los bloques con los inputpins del macrobloque (e.g. connect(pin_CM,suma.p1)) + * outputOutputConnection: lista de strings con la conexión de los bloques con los outputpins del macrobloque * NamedLinks: lista de strings con los links que tienen nombre * interfaceVariables: lista de strings con los nombres de las Interface Variables * init_friParameters: lista de strings con los nombres de los paramatros calculados en el .fri - * init_InterfaceParameters: lista de strings con los nombres de las variables de inicialización de las interface variables + * init_InterfaceParameters: lista de strings con los nombres de las variables de inicialización de las interface variables */ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtable CT, ParParser parData) { this.Blocks = Blocks; @@ -327,7 +327,7 @@ public void paramDeclaration(){ } } - //Parche: si el macrobloque es OELPSAT se añaden los parametros XD y XQ de la maquina + //Parche: si el macrobloque es OELPSAT se añaden los parametros XD y XQ de la maquina if (outputHeading.toLowerCase().equals("model oelpsat")) { outputParamDeclaration.add(" parameter Real XD;"); outputParamDeclaration.add(" parameter Real XQ;"); @@ -622,7 +622,7 @@ public void Connection() { ConnLeft = model.nameModelica + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".y"; } model = CT.get(Blocks[Link[i][1]-1].idEu); - //Cambios por Raúl: .y antes .p .u antes .n + //Cambios por Raul: .y antes .p .u antes .n if(Blocks[Link[i][1]-1].UsedInputPins.size() == 1){ ConnRight = model.nameModelica + "_" + Blocks[Link[i][1]-1].GraphicalNumber.toString() + ".u"; }else{ @@ -659,7 +659,7 @@ public void Connection() { } } - //cambios por Raúl: imputs u outputs connections antes .p y .n ahora .y y .p + //cambios por Raul: imputs u outputs connections antes .p y .n ahora .y y .p public void InputConnection() { //List ImPins = new ArrayList(); From a77201c575ca3b987e15fa724535707f71492893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Tue, 19 Jul 2016 09:40:20 +0200 Subject: [PATCH 05/20] Remove LF engine references Remove specific LF engine references --- .../itesla_project/modelica_export/ModelicaMainExporter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaMainExporter.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaMainExporter.java index 7c241b2f..89a987b3 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaMainExporter.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaMainExporter.java @@ -18,7 +18,7 @@ import eu.itesla_project.modelica_export.util.SourceEngine; import eu.itesla_project.modelica_export.util.StaticData; import eu.itesla_project.loadflow.api.LoadFlowResult; -import eu.itesla_project.helmflow.HELMLoadFlow; +//import eu.itesla_project.helmflow.HELMLoadFlow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -156,7 +156,7 @@ else if(this._sourceEngine instanceof PsseEngine) { private void runLoadFlow(ComputationManager _computationManager) throws Exception { int priority = 1; LoadFlow loadflow = loadFlowFactory.create(_network, _computationManager, priority); - ((HELMLoadFlow) loadflow).setSlack(this._slackId); + //((HELMLoadFlow) loadflow).setSlack(this._slackId); LoadFlowResult lfResults = loadflow.run(); if(!lfResults.isOk()) { From 69131f9263e03969af6546d64578737ab9119b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 08:57:55 +0200 Subject: [PATCH 06/20] Add authors information Add authors information --- EU2Mod_MB/src/main/java/itesla/converter/Block.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Block.java b/EU2Mod_MB/src/main/java/itesla/converter/Block.java index 8c6d5174..11f298d9 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Block.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Block.java @@ -9,7 +9,11 @@ import java.util.ArrayList; import java.util.List; -//Single block of the Eurostag macroblock +/** + * Single block of the Eurostag macroblock + * @author Marc Sabate + * @author Raul Viruez + */ public class Block { public String[] param = new String[8]; public String[] entries = new String[5]; From f456223cbae215e3bb8d7fbaf9ff7135a244c352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 09:03:18 +0200 Subject: [PATCH 07/20] Add authors information Add authors information --- .../main/java/itesla/converter/Converter.java | 42 ++++--------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Converter.java b/EU2Mod_MB/src/main/java/itesla/converter/Converter.java index 48d9f139..6d66effc 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Converter.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Converter.java @@ -18,6 +18,11 @@ import java.util.Hashtable; import java.util.List; +/** + * Class to convert macroblocks from Eurostag to Modelica + * @author Marc Sabate + * @author Raul Viruez + */ public class Converter { public String pathfrm; public String pathOut; @@ -28,9 +33,7 @@ public class Converter { private Boolean init; private ModelicaModel MO; private Boolean isEmpty; - - - + public Converter(String pathfrm, String pathOut, Boolean init) { this.pathfrm = pathfrm; this.pathOut = pathOut; @@ -50,10 +53,7 @@ public Converter(String pathfrm, String pathOut, Boolean init) { } } - - private ModelicaModel EUparser() throws IOException{ - - + private ModelicaModel EUparser() throws IOException{ String sep = ";"; String line; Hashtable CT = new Hashtable(); //correspondance table @@ -85,7 +85,6 @@ private ModelicaModel EUparser() throws IOException{ } Element elt = new Element(CTidEu, nameEu, nameModelica, param, nInputPins); CT.put(CTidEu, elt); - } bufferCT.close(); @@ -105,7 +104,6 @@ private ModelicaModel EUparser() throws IOException{ isEmpty=true; MO = new ModelicaModel(pathfrm,parData); } else { - String[][] paramEu = EUfile.getParamEU(); Integer[] GraphicalNumber = EUfile.getGraphicalNumber(); String[][] entries = EUfile.getEntries(); @@ -113,12 +111,7 @@ private ModelicaModel EUparser() throws IOException{ Integer[] idEu = EUfile.getIdEu(); Integer[][] link = EUfile.getLink(); Integer nLinks = EUfile.getnLinks(); - - - //.par file lecture -// File parFile = new File(pathPar); -// ParParser parData = new ParParser(parFile); - + //creation of the n blocks //counter of the blocks of the same type Block[] Macroblock = new Block[nBlocks]; @@ -141,21 +134,14 @@ private ModelicaModel EUparser() throws IOException{ } MO = new ModelicaModel(Macroblock, link, pathfrm, CT, parData); } - - return MO; } - public void convert2MO() throws IOException { -// File parFile = new File(pathPar); -// ParParser parData = new ParParser(parFile); - - File frm = new File(pathfrm); String nameModel = frm.getName().split("\\.")[0]; if (init) nameModel = nameModel+"_init"; - File outFile = new File(pathOut, nameModel + ".mo"); + File outFile = new File(pathOut, nameModel + ".mo"); BufferedWriter out = new BufferedWriter(new FileWriter(outFile)); if (init) { @@ -164,7 +150,6 @@ public void convert2MO() throws IOException { out.write(MO.outputHeading + "\n"); } - if (!isEmpty) { List setIds = parData.getSetIds(); for (int i=0; i0) { if (MO.outputConnection.size()>0) { for (int i=0; i getInit_friParameters() { public List getInit_InterfaceParameters() { return MO.init_InterfaceParameters; } - - - } From 05768a8c395669d15046f63356a810700d52e8df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 09:17:59 +0200 Subject: [PATCH 08/20] Format changes Add author information and remove empty lines. --- .../java/itesla/converter/EU_MBparser.java | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java b/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java index 0e997935..724f5466 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java @@ -13,9 +13,12 @@ import java.util.ArrayList; import java.util.List; +/** + * Class to parse macroblocks in Eurostag + * @author Marc Sabate + * @author Raul Viruez + */ public class EU_MBparser { - - private File EUfile; private String[][] paramEu; private String[][] entries; @@ -26,33 +29,28 @@ public class EU_MBparser { private Integer nLinks; private Integer nBlocks; - /* - * Clase que parsea un archivo *.frm o un archivo *.fri guardado en EUfile y lo parsea, con el metodo parser. Los elementos que guarda de un macrobloque son: - * EUfile: la ruta del archivo que se esta parseando. - * nBlocks: numero de bloques del macrobloque - * paramEu: array de 8 filas, i nBlocks columnas. Cada bloque matematico puede tener como maximo 8 parametros: 6 parametros, el offset y el init_value - * entries: array de 5 filas y nBlocks columnas. Cada bloque matematico tiene 5 pins de entrada - * Blocksoutput: array de nBlocks posiciones. Cada bloque tiene un pin de salida - * GraphicalNumber: array de nBlocks posiciones. Cada instancia de un bloque tiene un id gráfico (es el id que vemos en el model Editor de Eurostag) - * idEu: array de nBlocks posiciones. Cada tipo de bloque tiene un id de Eurostag asignado. - * nLinks: numero de links definidos - * link: array de nLinks filas, y 3 columnas. Cada fila es un link: el bloque de salida, el bloque de entrada, y el pin del bloque de entrada. + * Class to parse an *.frm/*.fri files. It saves the following information regarding the macroblocks: + * EUfile: path of the file that will be parsed. + * nBlocks: number of blocks inside the macroblock. + * paramEu: an 8 x nBlocks array. Each mathematic block has a maximum of 8 parameters: 6 parameters, offset and init_value. + * entries: an 5 x nBlocks array. Each mathematic block has 5 input pins. + * Blocksoutput: nBlocks array. Each block has 1 output pin. + * GraphicalNumber: nBLocks array. Each instance of a block has an graphical id + * idEu: nBlocks array. Each type of a block has an Eurostag id. + * nLinks: number of links. + * link: nLinks x 3 array. Each row is a link: the output block and the input block. */ public EU_MBparser(File EUfile) { this.EUfile = EUfile; try { parser(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } - - private void parser() throws IOException { - String sep = "\\s+"; String line; List dataFile = new ArrayList(); @@ -82,8 +80,6 @@ private void parser() throws IOException { GraphicalNumber = new Integer[nBlocks]; idEu = new Integer[nBlocks]; - - //parameters int rowIni = 3; int nDatosPerBlock = 8; @@ -144,14 +140,8 @@ private void parser() throws IOException { } } } - - - } - - - public String[][] getParamEU() { return paramEu; } @@ -200,7 +190,4 @@ static private String[][] Extract(List frmFile, Integer ini, Integer r } return output; } - - - } From 55a41615742bc58fd7db25da322d2f9438e3fa12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 09:24:11 +0200 Subject: [PATCH 09/20] Format changes Add authors info, remove empty lines and translate comments. --- .../main/java/itesla/converter/Element.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Element.java b/EU2Mod_MB/src/main/java/itesla/converter/Element.java index 501b2d1e..afcecfa4 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/Element.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/Element.java @@ -10,15 +10,16 @@ import java.util.List; /* - * Element de la librería PowerSystems. Hace una correspondencia con el elemento de Eurostag. - * idEu: cada bloque del macrobloque tiene un id de Eurostag asignado. - * nameEu: nombre del bloque de Eurostag - * pathModelica: path del correpsondiente bloque dentro de la librería de PowerSystems - * nameModelica: nombre del bloque dentro de la librería de PowerSystems. - * nInputpins: numero de input pins del modelo en Modelica - * param: nombre de los parametros del modelo en Modelica + * Class representing the iPSL model that corresponds to the Eurostag device. + * idEu: each block inside the macroblock has an Eurostag id. + * nameEu: name of the block in Eurostag. + * pathModelica: path of the iPSL model that represents this block. + * nameModelica: name of the iPSL model that represents this block. + * nInputpins: number of the input pins in Modelica. + * param: name of the parameters in the Modelica model. + * @author Marc Sabate + * @author Raul Viruez */ - public class Element { public Integer idEu; public String nameEu; @@ -37,5 +38,4 @@ public Element(int idEu, String nameEu, String nameModelica, List param, this.param = param; this.nInputPins = nInputPins; } - } From b60403757cdb538f62d2295abb1876d30fef5546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 10:21:06 +0200 Subject: [PATCH 10/20] Format changes Add authors info, remove empty lines and translate comments. --- .../java/itesla/converter/ModelicaModel.java | 253 +++++------------- 1 file changed, 67 insertions(+), 186 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java index 2eaa11da..e09b5ddf 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java @@ -14,12 +14,16 @@ import java.util.List; import java.util.Map; +/* + * Class that has all the needed information to create the block model in Modelica. + * @author Marc Sabate + * @author Raul Viruez + * / public class ModelicaModel { private Block[] Blocks; private Integer[][] Link; private String pathEu; private Hashtable CT; - //private List namePar; public String outputHeading; public String outputEnd; public List outputPositiveImPin; @@ -37,28 +41,25 @@ public class ModelicaModel { public List init_friParameters; public List init_InterfaceParameters; private ParParser parData; - //private Boolean PNdeclared; - - /* - * Clase que define el modelo en Modelica: - * parData: lista parametros definidos dentro del archivo .par - * outputHeading: la cabecera de un modelo de modelica (e.g: model PwLine) - * outputEnd: end de un modelo de Modelica (e.g: end model;) - * outputPositiveImPin: lista de strings donde cada elemento es la declaración de cada input pin del modelo - * outputNegativeImPin: lista de strings donde cada elemento es la declaración de cada output pin del modelo - * outputParamInit: lista de strings donde cada elemento es la declaración de los parámetros de inicialización de los modelos que tengan parámetro de inicialización - * outputParamDeclaration: lista de strings donde cada elemento es la declaración de los parámetros dentro del *.par (e.g. parameter Real T1;) - * outputBlocksDeclaration: lista de strings donde cada elemento es la declaración de la instancia de un bloque dentro del macrobloque (e.g. PowerSystems.Math.ImSetPoint setPoint(V=1);) - * outputZeroPins: los pines de entrada de algunos bloques que no se usan (como por ejemplo, en un bloque suma, si solo se usan 3 pines de entrada, 2 quedan sin usar), entonces se ponen a 0 en las ecuaciones, para tener un sistema determinado. - * outputConnection: lista de strings con la conexión entre bloques - * outputInputConnection: lista de strings con la conexión de los bloques con los inputpins del macrobloque (e.g. connect(pin_CM,suma.p1)) - * outputOutputConnection: lista de strings con la conexión de los bloques con los outputpins del macrobloque - * NamedLinks: lista de strings con los links que tienen nombre - * interfaceVariables: lista de strings con los nombres de las Interface Variables - * init_friParameters: lista de strings con los nombres de los paramatros calculados en el .fri - * init_InterfaceParameters: lista de strings con los nombres de las variables de inicialización de las interface variables + * Class that represents the block model in Modelica: + * parData: list of parameters in the .par file. + * outputHeading: header of the model in Modelica (e.g: model PwLine). + * outputEnd: end of a model in Modelica (e.g: end model;). + * outputPositiveImPin: string list with the input pins declaration in the model. + * outputNegativeImPin: string list with the output pins declaration in the model. + * outputParamInit: string list with the initialization parameters declaration. + * outputParamDeclaration: string list with the parameters declaration in the .par file (e.g. parameter Real T1;). + * outputBlocksDeclaration: string list with the declaration of the instance of a block inside the macroblock (e.g. PowerSystems.Math.ImSetPoint setPoint(V=1);). + * outputZeroPins: some input pins are not used (e.g. a sum block, if only 3 input pins are used, 2 inputs are free) so these not used pins are set to 0 to have a determinated system. + * outputConnection: string list with the connection between blocks. + * outputInputConnection: string list with the connection between input pins in blocks and the macroblock (e.g. connect(pin_CM,suma.p1)). + * outputOutputConnection: string list with the connection between output pins in blocks and the macroblock. + * NamedLinks: string list with the named links. + * interfaceVariables: string list with the name of the interface variables. + * init_friParameters: string list with the name of the parameters in the .fri. + * init_InterfaceParameters: string list with the name of the initialization variables of the interface variables. */ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtable CT, ParParser parData) { this.Blocks = Blocks; @@ -66,7 +67,7 @@ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtabl this.pathEu = pathEu; this.CT = CT; this.parData = parData; - this.outputHeading=""; // = new ArrayList(); + this.outputHeading=""; this.outputEnd = ""; this.outputPositiveImPin = new ArrayList(); this.outputNegativeImPin = new ArrayList(); @@ -81,9 +82,7 @@ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtabl this.interfaceVariables = new HashMap(); this.init_friParameters = new ArrayList(); this.init_InterfaceParameters = new ArrayList(); - this.LinksBlocksId1 = new int[Blocks.length][7]; - //PNdeclared = false; - + this.LinksBlocksId1 = new int[Blocks.length][7]; Heading(); paramDeclaration(); BlocksDeclaration(); @@ -97,29 +96,14 @@ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtabl End(); } - public ModelicaModel(String pathEu,ParParser parData) { -// this.Blocks = Blocks; -// this.Link = Link; this.Blocks = new Block[0]; this.pathEu = pathEu; this.outputParamDeclaration = new ArrayList(); -// this.CT = CT; this.parData = parData; - this.outputHeading=""; // = new ArrayList(); + this.outputHeading=""; this.outputEnd = ""; - //this.outputPositiveImPin = new ArrayList(); - //this.outputNegativeImPin = new ArrayList(); - //this.outputParamInit = new ArrayList(); - //this.outputParamDeclaration = new ArrayList(); - //this.outputBlocksDeclaration = new ArrayList(); - //this.outputZeroPins = new ArrayList(); - //this.outputConnection = new ArrayList(); - //this.outputInputConnection = new ArrayList(); - //this.outputOutputConnection = new ArrayList(); - //this.NamedLinks = new ArrayList(); - //PNdeclared = false; - + Heading(); paramDeclaration(); BlocksDeclaration(); @@ -127,8 +111,6 @@ public ModelicaModel(String pathEu,ParParser parData) { } - - public void Heading() { File EuFile = new File(pathEu); String name = EuFile.getName().split("\\.")[0]; @@ -145,63 +127,52 @@ public void End() { } public void PositiveImPin() { - Boolean TerminalVoltage = false; Boolean FieldCurrent = false; Boolean ActivePower = false; String name; String base; for (int i=0; i parNames = parData.getParNames(); @@ -332,12 +285,9 @@ public void paramDeclaration(){ outputParamDeclaration.add(" parameter Real XD;"); outputParamDeclaration.add(" parameter Real XQ;"); } - } - public void BlocksDeclaration(){ - Boolean found_init; outputParamDeclaration.add(" parameter Real SNREF;"); outputParamDeclaration.add(" parameter Real SN;"); @@ -360,22 +310,20 @@ public void BlocksDeclaration(){ } }else{ - LinksBlocksId1[i][j] = 0; + LinksBlocksId1[i][j] = 0; } } } if(Link != null){ - for (int i = 0; i < Link.length; i++) { - if(Blocks[Link[i][1]-1].idEu == 23 || Blocks[Link[i][1]-1].idEu == 22 || Blocks[Link[i][1]-1].idEu == 13 || Blocks[Link[i][1]-1].idEu == 14){ - ind[Link[i][1]-1]= ++ind[Link[i][1]-1]; - LinksBlocksId1[Link[i][1]-1][Link[i][2]-1] = ind[Link[i][1]-1]; - } - - } + for (int i = 0; i < Link.length; i++) { + if(Blocks[Link[i][1]-1].idEu == 23 || Blocks[Link[i][1]-1].idEu == 22 || Blocks[Link[i][1]-1].idEu == 13 || Blocks[Link[i][1]-1].idEu == 14){ + ind[Link[i][1]-1]= ++ind[Link[i][1]-1]; + LinksBlocksId1[Link[i][1]-1][Link[i][2]-1] = ind[Link[i][1]-1]; + } + } } for (int i=0; i0) { modelParameters = " ("; - } else {modelParameters = ";";} + } else { + modelParameters = ";"; + } first = true; previous = true; for (int j=0; j0) { modelParameters = modelParameters + ");"; } - -// if (modelParameters.contains("PN") && !PNdeclared) { -// outputParamDeclaration.add(" parameter Real PN = 1000;"); -// PNdeclared = true; -// } if(Blocks[i].idEu==22 ||Blocks[i].idEu==23 || Blocks[i].idEu == 13 || Blocks[i].idEu == 14){ outputBlocksDeclaration.add(modelDeclaration + " (nu = "+ind[i] + ")"+ modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); - }else{ outputBlocksDeclaration.add(modelDeclaration + modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); - } - - } - } - } - public void ZeroPins() { Integer ind; @@ -565,7 +473,6 @@ public void ZeroPins() { for (int j=0; j ImPins = new ArrayList(); String Conn; String ConnLeft; String ConnRight; @@ -680,9 +576,7 @@ public void InputConnection() { }else{ ConnLeft = "pin_" + Blocks[i].entries[j].replaceAll("([\\W|[_]])+", ""); } - indConnRight = j+1; - if(Blocks[i].UsedInputPins.size() == 1){ ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".u"; }else{ @@ -694,7 +588,6 @@ public void InputConnection() { }else{ ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".u["+LinksBlocksId1[i][j]+"]"; } - }else if(Blocks[i].idEu.equals(24)){ if(indConnRight==2){ ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".u"; @@ -705,20 +598,13 @@ public void InputConnection() { }else { ConnRight = "fallo"; } - }else{ ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".u" + indConnRight.toString(); } - - } - Conn = " connect(" + ConnLeft + ", " + ConnRight + ");"; Blocks[i].UsedInputPins.set(indConnRight-1, true); outputInputConnection.add(Conn); - - - } } } @@ -731,15 +617,13 @@ public void OutputConnection() { String base; Element model; for (int i=0; i1) { // && (Blocks[i].output.substring(0, 1).equals("&") || Blocks[i].output.substring(0, 1).equals("/"))){ + if (Blocks[i].output.length()>1) { model = CT.get(Blocks[i].idEu); if (Blocks[i].output.contains("@")) { ConnLeft = "pin_At_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); - }else{ ConnLeft = "pin_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); } - if (model.idEu.equals(27)) { ConnRight = "pin_TerminalVoltage"; } else if (model.idEu.equals(50)) { @@ -761,15 +645,12 @@ public void OutputConnection() { } else if (model.idEu.equals(23)) { ConnRight = "Max" + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".yMax"; - } else { ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".y"; } Conn = " connect(" + ConnLeft + ", " + ConnRight + ");"; outputOutputConnection.add(Conn); - } } } - } From 1561618e924773595471a7af91384cb10532e1a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 12:15:28 +0200 Subject: [PATCH 11/20] Format changes Add author info, remove empty lines, spaces and fix identation issues. --- .../java/itesla/converter/ModelicaModel.java | 587 +++++++++++------- 1 file changed, 374 insertions(+), 213 deletions(-) diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java index e09b5ddf..28f18e7c 100644 --- a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java +++ b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java @@ -14,11 +14,11 @@ import java.util.List; import java.util.Map; -/* - * Class that has all the needed information to create the block model in Modelica. +/** + * Class that represents the block model in Modelica. * @author Marc Sabate * @author Raul Viruez - * / + **/ public class ModelicaModel { private Block[] Blocks; private Integer[][] Link; @@ -43,7 +43,7 @@ public class ModelicaModel { private ParParser parData; /* - * Class that represents the block model in Modelica: + * Class that has all the needed information to create the block model in Modelica: * parData: list of parameters in the .par file. * outputHeading: header of the model in Modelica (e.g: model PwLine). * outputEnd: end of a model in Modelica (e.g: end model;). @@ -83,6 +83,7 @@ public ModelicaModel (Block[] Blocks, Integer[][] Link, String pathEu , Hashtabl this.init_friParameters = new ArrayList(); this.init_InterfaceParameters = new ArrayList(); this.LinksBlocksId1 = new int[Blocks.length][7]; + Heading(); paramDeclaration(); BlocksDeclaration(); @@ -108,7 +109,6 @@ public ModelicaModel(String pathEu,ParParser parData) { paramDeclaration(); BlocksDeclaration(); End(); - } public void Heading() { @@ -116,7 +116,6 @@ public void Heading() { String name = EuFile.getName().split("\\.")[0]; String output = "model " + name; outputHeading=output; - //return output; } public void End() { @@ -132,35 +131,46 @@ public void PositiveImPin() { Boolean ActivePower = false; String name; String base; - for (int i=0; i1){ - if (Blocks[i].output.contains("^")) { + if (Blocks[i].output.length()>1) + { + if (Blocks[i].output.contains("^")) + { isInitValue = true; - } else { + } else + { isInitValue = false; } - if (Blocks[i].output.contains("@")) { + if (Blocks[i].output.contains("@")) + { namePin = "At_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); - }else{ + } else + { namePin = Blocks[i].output.replaceAll("([\\W|[_]])+", ""); } - if (!Blocks[i].param[7].equals("?")) { - if (Blocks[i].param[7].contains("_") || Blocks[i].param[7].contains("^")) { - if (Blocks[i].output.contains("@")) { + if (!Blocks[i].param[7].equals("?")) + { + if (Blocks[i].param[7].contains("_") || Blocks[i].param[7].contains("^")) + { + if (Blocks[i].output.contains("@")) + { nameInitPin = "At_" +Blocks[i].param[7].replaceAll("([\\W|[_]])+", ""); - }else{ + } else + { nameInitPin = Blocks[i].param[7].replaceAll("([\\W|[_]])+", ""); } } } - if (!NamedLinks.contains(namePin)) { + if (!NamedLinks.contains(namePin)) + { NamedLinks.add(namePin); - if (!nameInitPin.equals("")) { + if (!nameInitPin.equals("")) + { interfaceVariables.put(namePin, nameInitPin); outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +"; //" + nameInitPin); - } else if (isInitValue) { + } else if (isInitValue) + { outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +"; //" + "isInitValue"); - } else { + } else + { outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +";"); } - } else { + } else + { interfaceVariables.put(namePin, nameInitPin); outputNegativeImPin.remove(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +";"); outputPositiveImPin.remove(" Modelica.Blocks.Interfaces.RealInput pin_" + namePin + ";"); @@ -238,30 +268,41 @@ public void NegativeImPin() { public void paramInit(){ String aux; Boolean found; - for (int i=0; i parNames = parData.getParNames(); HashMap parTypes = parData.getParTypes(); - for (int i=0; i0) { + if (model.param.size()>0) + { modelParameters = " ("; - } else { + } else + { modelParameters = ";"; } first = true; previous = true; - for (int j=0; j0) { + if (model.param.size()>0) + { modelParameters = modelParameters + ");"; } - if(Blocks[i].idEu==22 ||Blocks[i].idEu==23 || Blocks[i].idEu == 13 || Blocks[i].idEu == 14){ + if(Blocks[i].idEu==22 ||Blocks[i].idEu==23 || Blocks[i].idEu == 13 || Blocks[i].idEu == 14) + { outputBlocksDeclaration.add(modelDeclaration + " (nu = "+ind[i] + ")"+ modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); - }else{ + } else + { outputBlocksDeclaration.add(modelDeclaration + modelParameters + " //Eurostag Block number: " + Blocks[i].GraphicalNumber.toString()); } } @@ -466,21 +574,29 @@ public void BlocksDeclaration(){ public void ZeroPins() { Integer ind; boolean added; - for (int i=0; i1) { + for (int i=0; i1) + { model = CT.get(Blocks[i].idEu); - if (Blocks[i].output.contains("@")) { + if (Blocks[i].output.contains("@")) + { ConnLeft = "pin_At_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); - }else{ + } else + { ConnLeft = "pin_"+Blocks[i].output.replaceAll("([\\W|[_]])+", ""); } - if (model.idEu.equals(27)) { + if (model.idEu.equals(27)) + { ConnRight = "pin_TerminalVoltage"; - } else if (model.idEu.equals(50)) { + } else if (model.idEu.equals(50)) + { ConnRight = "pin_FieldCurrent"; - } else if (model.idEu.equals(28)) { + } else if (model.idEu.equals(28)) + { base = Blocks[i].param[2].replaceAll("([\\W|[_]])+", ""); ConnRight = "pin_ActivePower" + base; - } else if (model.idEu.equals(31)) { + } else if (model.idEu.equals(31)) + { base = Blocks[i].param[2].replaceAll("([\\W|[_]])+", ""); ConnRight = "pin_ReactivePower" + base; - } else if (model.idEu.equals(49)) { + } else if (model.idEu.equals(49)) + { base = Blocks[i].param[2].replaceAll("([\\W|[_]])+", ""); ConnRight = "pin_FRZ" + base; - } else if (model.idEu.equals(60)) { + } else if (model.idEu.equals(60)) + { base = Blocks[i].param[2].replaceAll("([\\W|[_]])+", ""); ConnRight = "pin_Current"; - } else if (model.idEu.equals(22)) { + } else if (model.idEu.equals(22)) + { ConnRight = "Min" + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".yMin"; - - } else if (model.idEu.equals(23)) { + } else if (model.idEu.equals(23)) + { ConnRight = "Max" + "_" + Blocks[Link[i][0]-1].GraphicalNumber.toString() + ".yMax"; - } else { + } else + { ConnRight = model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString() + ".y"; } Conn = " connect(" + ConnLeft + ", " + ConnRight + ");"; From e2aba17079481d32729cbdc704f6f6c817b8abd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 12:19:47 +0200 Subject: [PATCH 12/20] Format changes Remove hardcoded paths and empty lines. --- .../src/test/java/itesla/test/iTesla.java | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java index 9298b801..69cf69aa 100644 --- a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java +++ b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java @@ -15,13 +15,14 @@ public class iTesla { - private static Converter converter; private static Converter converter_init; - private static final String pathFRM = "C:\\Users\\viruezr\\Desktop\\Conversiones\\goverRTE22\\edftur1c.frm"; - private static final String pathOUT = "C:\\Users\\viruezr\\Desktop\\Conversiones\\goverRTE22\\modelica\\"; + private static final String pathFRM; + private static final String pathOUT; public static void main(String[] args) throws IOException { + pathFRM = args[1]; + pathOUT = args[2]; converter = new Converter(pathFRM, pathOUT, false); converter_init = new Converter(pathFRM, pathOUT, true); try { @@ -29,7 +30,6 @@ public static void main(String[] args) throws IOException { //converter.printLinkNames(); converter_init.convert2MO(); } catch (IOException e) { - // TODO Auto-generated catch block e.printStackTrace(); } @@ -40,7 +40,6 @@ public static void main(String[] args) throws IOException { */ HashMap> allParameterSets = converter.parData.getParameters(); - /* * Function that returns a specific set of parameters given by its reference id */ @@ -51,33 +50,21 @@ public static void main(String[] args) throws IOException { System.out.println(entry.getKey() + "; " + entry.getValue()); } - /* - * Function that returns the names of the input and output pins of the regulator in a listArray - */ -// List pinNames = new ArrayList(); -// pinNames = converter.getConnections(); -// for (String pinName : pinNames) { -// System.out.println(pinName); -// } - - HashMap interfaceVariables = converter.getInterfaceVariables(); for (Map.Entry entry : interfaceVariables.entrySet()) { System.out.println(entry.getKey() + "; " + entry.getValue()); } - List init_friParameters = converter.getInit_friParameters(); for (String initParameter : init_friParameters) { System.out.println(initParameter); } + System.out.println("-------------------"); List init_InterfaceParameters = converter.getInit_InterfaceParameters(); for (String initInterfaceParameter : init_InterfaceParameters) { System.out.println(initInterfaceParameter); } - System.out.println("THE END"); } - } From b181d80564035727d2da4ec292079fdf67478840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 12:49:14 +0200 Subject: [PATCH 13/20] Format changes REmove empty lines, spaces and remove comments. --- .../modelica_export/ModelicaExport.java | 730 ++++++++++-------- 1 file changed, 399 insertions(+), 331 deletions(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java index 00a4199f..84d48c51 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/ModelicaExport.java @@ -34,12 +34,12 @@ import java.util.*; /** + * Class that exports a proprietary system to a Modelica system. * @author Silvia Machado */ public class ModelicaExport { /** - * * @param network * @param ddbManager * @param paramsDictionary @@ -52,9 +52,7 @@ public ModelicaExport(Network network, DDBManager ddbManager, Map ii this.modelicaLibFile = modelicaLibFile; omc = new JavaOMCAPI(); - try { - if (this._sourceEngine instanceof EurostagEngine) { - // Load PowerSystems library + try + { + if (this._sourceEngine instanceof EurostagEngine) + { + // Load iPSL library and the Modelica standard library omc.loadFile(this.modelicaLibFile.getPath()); - //omc.loadFile("/home/machados/sources/data/ipsl_Raul/iPSL.mo"); - //omc.loadFile("/home/machados/sources/data/IPSL/PowerSystems.mo"); // Temporal mientras se arregla el macroblock converter omc.getStandardLibrary(); } - } catch (Exception e) { + } catch (Exception e) + { _log.error(e.getMessage(), e); } } /** - * * @param network * @param ddbManager * @param paramsDictionary @@ -99,7 +97,6 @@ public ModelicaExport(Network network, DDBManager ddbManager, Map ii } /** - * * @param moFile * @param modelicaVersion * @throws IOException */ public void WriteMo(String moFile, String modelicaVersion) throws IOException { String moFileName = moFile + StaticData.MO_EXTENSION; - numberOfElements(); - // Just for testing - // countIIDMElements(moFileName); - // Just for testing - FileWriter outputMoFile = new FileWriter(moFileName); StringWriter outputStringMo = new StringWriter(); DoConvertion(outputStringMo, modelicaVersion); @@ -138,7 +129,6 @@ public void WriteMo(String moFile, String modelicaVersion) throws IOException { /** * Convert IIDM Data to Modelica data. - * * @param writerMo * @param modelicaVersion * @throws IOException @@ -149,13 +139,16 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce long initTime = System.currentTimeMillis(); SimulatorInst modelicaSim = _ddbManager.findSimulator(Simulator.MODELICA, modelicaVersion); SimulatorInst sourceSim = null; - if (this._sourceEngine instanceof EurostagEngine) { + if (this._sourceEngine instanceof EurostagEngine) + { sourceSim = _ddbManager.findSimulator(Simulator.EUROSTAG, this._sourceEngine.getVersion()); - } else if (this._sourceEngine instanceof PsseEngine) { + } else if (this._sourceEngine instanceof PsseEngine) + { sourceSim = _ddbManager.findSimulator(Simulator.PSSE, this._sourceEngine.getVersion()); } - if (modelicaSim == null) { + if (modelicaSim == null) + { _log.error("Simulator with version = " + modelicaVersion + " does not exist."); return; } @@ -168,7 +161,8 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce GlobalVariable SNREF_Var = new GlobalVariable(StaticData.PARAM_TYPE, StaticData.SNREF, SNREF); globalVars.add(SNREF_Var); - if (this._sourceEngine instanceof EurostagEngine) { + if (this._sourceEngine instanceof EurostagEngine) + { OMEGAREF_Var = new GlobalVariable(EurostagModDefaultTypes.OUTPUT_PIN_TYPE, EurostagFixedData.OMEGAREF_NAME); globalVars.add(OMEGAREF_Var); } @@ -190,8 +184,8 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce /** * Export loads - * 1. Loads - * 2. Dummy loads at the Dangling lines "dangling" side + * 1. Loads + * 2. Dummy loads at the Dangling lines "dangling" side */ loadsList = Identifiables.sort(_network.getLoads()); exportLoads(writerMo, modContext, modelicaModelsList, modelicaSim); @@ -220,7 +214,6 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce shuntsList = Identifiables.sort(_network.getShunts()); exportCapacitors(writerMo, modContext, modelicaModelsList, modelicaSim); - /** * Classifying generators & fixed injections */ @@ -234,8 +227,7 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce } /** - * Export fixed injections - * 2. export generators as fixed injections + * Export fixed injections: export generators as fixed injections */ this.addRecord(writerMo, null); this.addRecord(writerMo, "// FIXED INJECTIONS"); @@ -246,7 +238,8 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce */ exportGeneratorsAndRegulators(writerMo, modContext, modelicaModelsList, modelicaSim, sourceSim); - if ((this._sourceEngine instanceof PsseEngine)) { + if ((this._sourceEngine instanceof PsseEngine)) + { this.addRecord(writerMo, null); this.addRecord(writerMo, "\t" + PsseModDefaultTypes.CONSTANT_TYPE + " " + PsseFixedData.CONSTANT + ";"); @@ -256,26 +249,32 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce this.addRecord(writerMo, null); this.addRecord(writerMo, "\t" + PsseModDefaultTypes.CONSTANT_TYPE + " " + PsseFixedData.CONSTANT2 + ";"); } - + this.addRecord(writerMo, null); this.addRecord(writerMo, StaticData.EQUATION); - if (this._sourceEngine instanceof EurostagEngine) { + if (this._sourceEngine instanceof EurostagEngine) + { List globalInitVars = new ArrayList(); String omegaRefVal = null; if ((generators.size() > 0) && (!generators.isEmpty())) + { omegaRefVal = calculateOmegaRef(generators); + } OMEGAREF_Var.setValue(omegaRefVal); globalInitVars.add(OMEGAREF_Var); - for (GlobalVariable var : globalInitVars) { - if (var.getValue() != null) { + for (GlobalVariable var : globalInitVars) + { + if (var.getValue() != null) + { InitializationRecord initRecord = new InitializationRecord(var); this.addRecord(initRecord, writerMo, modContext, _ddbManager, modelicaSim); } } - if (OMEGAREF_Var.getValue() != null) { + if (OMEGAREF_Var.getValue() != null) + { // Export Connect between Generators and OmegaRef exportConnectGlobalVar(writerMo, modContext, new ArrayList(generators), OMEGAREF_Var, modelicaSim); } @@ -315,7 +314,6 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce */ exportConnectDanglingLoads(writerMo, modContext, modelicaModelsList, modelicaSim); - /** * Export Connect Shunts */ @@ -345,11 +343,11 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce private String calculateOmegaRef(List genList) { String omegaRef = "", name = ""; - StringBuffer abuff = new StringBuffer(); StringBuffer bbuff = new StringBuffer(); - for (int i = 0; i < genList.size() - 1; i++) { + for (int i = 0; i < genList.size() - 1; i++) + { name = dictionary.getModelicaName(genList.get(i)); abuff.append(name + "." + EurostagFixedData.OMEGA_PIN + "*" + name + "." + EurostagFixedData.HIN_PIN + "*" + name + "." + EurostagFixedData.SN_PIN + " + "); bbuff.append(name + "." + EurostagFixedData.HIN_PIN + "*" + name + "." + EurostagFixedData.SN_PIN + " + "); @@ -357,16 +355,13 @@ private String calculateOmegaRef(List genList) { name = dictionary.getModelicaName(genList.get(genList.size() - 1)); abuff.append(name + "." + EurostagFixedData.OMEGA_PIN + "*" + name + "." + EurostagFixedData.HIN_PIN + "*" + name + "." + EurostagFixedData.SN_PIN); bbuff.append(name + "." + EurostagFixedData.HIN_PIN + "*" + name + "." + EurostagFixedData.SN_PIN); - omegaRef = "(" + abuff.toString() + ") / (" + bbuff.toString() + ")"; return omegaRef; } - /** * Create a Dummy Bus (corresponding to a dangling line) - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -374,8 +369,10 @@ private String calculateOmegaRef(List genList) { * @throws IOException */ private void exportDanglingBuses(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())){ - for(DanglingLine dl : dangLinesList) { + if((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) + { + for(DanglingLine dl : dangLinesList) + { Bus knownBus = dl.getTerminal().getBusBreakerView().getBus(); SV sv = new SV(0, 0, knownBus.getV(), knownBus.getAngle()); SV svDangling = sv.otherSide(dl); @@ -393,7 +390,6 @@ private void exportDanglingBuses(Writer writerMo, ModExportContext modContext, L /** * Create a Dummy Load (corresponding to a dangling line) - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -401,8 +397,10 @@ private void exportDanglingBuses(Writer writerMo, ModExportContext modContext, L * @throws IOException */ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())){ - for(DanglingLine dl : dangLinesList) { + if((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) + { + for(DanglingLine dl : dangLinesList) + { Bus knownBus = dl.getTerminal().getBusBreakerView().getBus(); SV sv = new SV(0, 0, knownBus.getV(), knownBus.getAngle()); SV svDangling = sv.otherSide(dl); @@ -412,7 +410,6 @@ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, L float q0 = dl.getQ0(); String loadId = "ext_" + dl.getId(); LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); -// FixedInjectionRecord fixInjRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle,modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); this.danglingLoads.add(loadRecord); this.addRecord(loadRecord, writerMo, modContext, _ddbManager, modelicaSim); } @@ -421,7 +418,6 @@ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, L /** * Export IIDM Dangling lines to Modelica lines - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -429,17 +425,20 @@ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, L * @throws IOException */ private void exportDanglingLines(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) { + if ((dangLinesList.size() != 0) && (!dangLinesList.isEmpty())) + { _log.info("EXPORTING DANGLING LINES"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// DANGLING LINES"); - for (DanglingLine dl : dangLinesList) { + for (DanglingLine dl : dangLinesList) + { _log.info("Exporting dangling line " + dl.getId()); - if(dl.getTerminal().getBusBreakerView().getBus() == null) { + if(dl.getTerminal().getBusBreakerView().getBus() == null) + { _log.info("DANGLING LINE " + dl.getId() + " OUT OF SERVICE."); - } - else { + } else + { Bus knownBus = dl.getTerminal().getBusBreakerView().getBus(); SV sv = new SV(0, 0, knownBus.getV(), knownBus.getAngle()); SV svDangling = sv.otherSide(dl); @@ -464,7 +463,6 @@ private void exportDanglingLines(Writer writerMo, ModExportContext modContext, L /** * Export IIDM buses to Modelica buses - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -472,13 +470,14 @@ private void exportDanglingLines(Writer writerMo, ModExportContext modContext, L * @throws IOException */ private void exportBuses(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((busesList.size() != 0) && (!busesList.isEmpty())) { + if ((busesList.size() != 0) && (!busesList.isEmpty())) + { _log.info("EXPORTING BUSES"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// BUSES"); - for (Bus bus : busesList) { + for (Bus bus : busesList) + { _log.info("Exporting bus " + bus.getId()); - BusRecord busRecord = ModelConverter.getModelicaRecord(bus, modContext, _ddbManager, modelicaSim); this.addRecord(busRecord, writerMo, modContext, _ddbManager, modelicaSim); } @@ -488,7 +487,6 @@ private void exportBuses(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((linesList.size() != 0) && (!linesList.isEmpty())) { + if ((linesList.size() != 0) && (!linesList.isEmpty())) + { _log.info("EXPORTING LINES"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// LINES"); - for (Line line : linesList) { + for (Line line : linesList) + { _log.info("Exporting line " + line.getId()); - - if (line.getTerminal1().getBusBreakerView().getBus() == null && line.getTerminal2().getBusBreakerView().getBus() == null) { + if (line.getTerminal1().getBusBreakerView().getBus() == null && line.getTerminal2().getBusBreakerView().getBus() == null) + { _log.info("LINE " + line.getId() + " OUT OF SERVICE."); } - if ((line.getB1() == line.getB2()) && (line.getG1() == line.getG2())) { + if ((line.getB1() == line.getB2()) && (line.getG1() == line.getG2())) + { LineRecord lineRecord = ModelConverter.getModelicaRecord(line, modContext, _ddbManager, modelicaSim, SNREF); this.addRecord(lineRecord, writerMo, modContext, _ddbManager, modelicaSim); - } else { - // TODO Por ahora tomamos las lineas asimetricas como - // simetricas. + } else //For now we consider the asymmetrical lines as symmetrical lines. + { _log.warn("The model has an asymmetric line: {}.", line.getId()); LineRecord lineRecord = ModelConverter.getModelicaRecord(line, modContext, _ddbManager, modelicaSim, SNREF); this.addRecord(lineRecord, writerMo, modContext, _ddbManager, modelicaSim); @@ -524,7 +524,6 @@ private void exportLines(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((trafosList.size() != 0) && (!trafosList.isEmpty())) { - for (TwoWindingsTransformer trafo : trafosList) { - if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) { + if ((trafosList.size() != 0) && (!trafosList.isEmpty())) + { + for (TwoWindingsTransformer trafo : trafosList) + { + if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) + { fixedTranformers.add(trafo); - } else { + } else + { detailedTranformers.add(trafo); } } // Export Fixed Transformers - if ((fixedTranformers.size() != 0) && (!fixedTranformers.isEmpty())) { + if ((fixedTranformers.size() != 0) && (!fixedTranformers.isEmpty())) + { _log.info("EXPORTING FIXED TRANSFORMERS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// FIXED TRANSFORMERS"); - for (TwoWindingsTransformer trafo : fixedTranformers) { + for (TwoWindingsTransformer trafo : fixedTranformers) + { _log.info("Exporting fixed trafo " + trafo.getId()); FixedTransformerRecord fixedTrafoRecord = (FixedTransformerRecord) ModelConverter.getModelicaRecord(trafo, modContext, true, _ddbManager, modelicaSim, SNREF); this.addRecord(fixedTrafoRecord, writerMo, modContext, _ddbManager, modelicaSim); @@ -554,11 +559,13 @@ private void exportTransformers(Writer writerMo, ModExportContext modContext, Li } // Export Detailed Transformers - if ((detailedTranformers.size() != 0) && (!detailedTranformers.isEmpty())) { + if ((detailedTranformers.size() != 0) && (!detailedTranformers.isEmpty())) + { _log.info("EXPORTING TAP CHANGER TRANSFORMERS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// TAP CHANGER TRANSFORMERS"); - for (TwoWindingsTransformer trafo : detailedTranformers) { + for (TwoWindingsTransformer trafo : detailedTranformers) + { _log.info("Exporting detailed trafo " + trafo.getId()); DetailedTransformerRecord detailedTrafoRecord = (DetailedTransformerRecord) ModelConverter.getModelicaRecord(trafo, modContext, false, _ddbManager, modelicaSim, SNREF); this.addRecord(detailedTrafoRecord, writerMo, modContext, _ddbManager, modelicaSim); @@ -569,7 +576,6 @@ private void exportTransformers(Writer writerMo, ModExportContext modContext, Li /** * Export IIDM loads to Modelica loads - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -577,15 +583,16 @@ private void exportTransformers(Writer writerMo, ModExportContext modContext, Li * @throws IOException */ private void exportLoads(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((loadsList.size() != 0) && (!loadsList.isEmpty())) { + if ((loadsList.size() != 0) && (!loadsList.isEmpty())) + { _log.info("EXPORTING LOADS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// LOADS"); - for (Load load : loadsList) { + for (Load load : loadsList) + { _log.info("Exporting load " + load.getId()); ConnectBusInfo busInfo = findBus(load.getTerminal(), load.getId()); - // If load's disconnected we remove it from list in order to - // didn't corresponding connects + // If load's disconnected we remove it from list in order to didn't corresponding connects LoadRecord loadRecord = ModelConverter.getModelicaRecord(load, busInfo, modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine); this.addRecord(loadRecord, writerMo, modContext, _ddbManager, modelicaSim); } @@ -595,7 +602,6 @@ private void exportLoads(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((shuntsList.size() != 0) && (!shuntsList.isEmpty())) { + if ((shuntsList.size() != 0) && (!shuntsList.isEmpty())) + { _log.info("EXPORTING SHUNTS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// CAPACITORS"); - for (ShuntCompensator shunt : shuntsList) { + for (ShuntCompensator shunt : shuntsList) + { _log.info("Exporting shunt " + shunt.getId()); ConnectBusInfo busInfo = findBus(shunt.getTerminal(), shunt.getId()); CapacitorRecord shuntRecord = ModelConverter.getModelicaRecord(shunt, busInfo, modContext, _ddbManager, modelicaSim); @@ -618,15 +626,21 @@ private void exportCapacitors(Writer writerMo, ModExportContext modContext, List } /** - * + * @param writerMo + * @param modContext + * @param modelicaModelsList + * @param modelicaSim + * @param sourceSim + * @throws IOException */ private void exportGeneratorsAsFixedInjections(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim, SimulatorInst sourceSim) throws IOException { // Export Generators as Fixed Inyections - if ((generatorsInyections.size() != 0) && (!generatorsInyections.isEmpty())) { + if ((generatorsInyections.size() != 0) && (!generatorsInyections.isEmpty())) + { _log.info("EXPORTING GENERATORS AS FIXED INYECTIONS"); - for (Generator generator : generatorsInyections) { + for (Generator generator : generatorsInyections) + { _log.info("\t Exporting generator inyection " + generator.getId()); - ConnectBusInfo busInfo = findBus(generator.getTerminal(), generator.getId()); GeneratorRecord generatorRecord = ModelConverter.getModelicaRecord(generator, busInfo, modContext, _ddbManager, modelicaSim, sourceSim, true, SNREF, this.paramsDictionary, this._sourceEngine); this.addRecord(generatorRecord, writerMo, modContext, _ddbManager, modelicaSim); @@ -651,24 +665,25 @@ private void exportGeneratorsAndRegulators(Writer writerMo, ModExportContext mod List initializationDataList = new ArrayList(); List generatorsRecords = new ArrayList(); - if ((genList.size() != 0) && (!genList.isEmpty())) { - + if ((genList.size() != 0) && (!genList.isEmpty())) + { Map> genRegsRecordMap = new HashMap>(); List genRegsRecordList; // Export Generators InitializationData initializationData; tmpDir = Files.createTempDirectory(Paths.get(new File(".").getCanonicalPath()), "itesla_tmp"); - if ((generators.size() != 0) && (!generators.isEmpty())) { + if ((generators.size() != 0) && (!generators.isEmpty())) + { _log.info("EXPORTING GENERATORS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// GENERATORS"); - for (Generator generator : generators) { + for (Generator generator : generators) + { genRegsRecordList = new ArrayList(); genRegulators = new ArrayList(); genRegRecords = new HashMap(); _log.info("\t Exporting generator " + generator.getId()); - ConnectBusInfo busInfo = findBus(generator.getTerminal(), generator.getId()); GeneratorRecord generatorRecord = ModelConverter.getModelicaRecord(generator, busInfo, modContext, _ddbManager, modelicaSim, sourceSim, false, SNREF, this.paramsDictionary, this._sourceEngine); generatorsRecords.add(generatorRecord); @@ -680,75 +695,83 @@ private void exportGeneratorsAndRegulators(Writer writerMo, ModExportContext mod boolean hasEsdc2a = false; RegulatorRecord esst1aRecord = null; RegulatorRecord esdc2aRecord = null; - if(!Float.isNaN(busInfo.getBus().getV()) && busInfo.isConnected()) { + if(!Float.isNaN(busInfo.getBus().getV()) && busInfo.isConnected()) + { Equipment eq = _ddbManager.findEquipment(generator.getId()); - if (eq != null) { + if (eq != null) + { ConnectionSchema connectionSchema = _ddbManager.findConnectionSchema(eq.getCimId(), null); - - if (connectionSchema != null) { + if (connectionSchema != null) + { List connections = connectionSchema.getConnections(); - if ((connections != null) && (!connections.isEmpty())) { + if ((connections != null) && (!connections.isEmpty())) + { List regulatorsAdded = new ArrayList(); String equipName = null; RegulatorRecord regulatorRecord; - for (Connection con : connectionSchema.getConnections()) { + for (Connection con : connectionSchema.getConnections()) + { Internal regulator1 = null; Internal regulator2 = null; - String pinName1 = null; String pinName2 = null; - if (this._sourceEngine instanceof EurostagEngine) { + if (this._sourceEngine instanceof EurostagEngine) + { pinName1 = StaticData.PIN + con.getConPointName1(); pinName2 = StaticData.PIN + con.getConPointName2(); - } else if (this._sourceEngine instanceof PsseEngine) { + } else if (this._sourceEngine instanceof PsseEngine) + { pinName1 = con.getConPointName1(); pinName2 = con.getConPointName2(); } equipName = eq.getCimId(); - // Conexiones entre generadores - if (con.getId1Type() == 0 && con.getId2Type() == 0) { - if (this._sourceEngine instanceof PsseEngine) { + // Connection between generators + if (con.getId1Type() == 0 && con.getId2Type() == 0) + { + if (this._sourceEngine instanceof PsseEngine) + { Connect2GeneratorsRecord connect2GensRecord = ModelConverter.getModelicaRecord(generator, modContext, _ddbManager, modelicaSim, con.getConPointName1(), con.getConPointName2()); connect2GensList.add(connect2GensRecord); } } - - if (con.getId1Type() == 1) { + if (con.getId1Type() == 1) + { regulator1 = _ddbManager.findInternal(con.getId1()); } - if (con.getId2Type() == 1) { + if (con.getId2Type() == 1) + { regulator2 = _ddbManager.findInternal(con.getId2()); } - if ((regulator1 == null) && (regulator2 == null)) + if ((regulator1 == null) && (regulator2 == null)) { continue; - - if (regulator1 != null) { - if (!regulatorsAdded.contains(regulator1.getNativeId())) { + } + if (regulator1 != null) + { + if (!regulatorsAdded.contains(regulator1.getNativeId())) + { regulatorsAdded.add(regulator1.getNativeId()); regulatorRecord = ModelConverter.getModelicaRecord(generatorRecord, regulator1, modContext, _ddbManager, modelicaSim, equipName, sourceSim, this._sourceEngine); regulatorsList.add(regulatorRecord); genRegsRecordList.add(regulatorRecord); genRegulators.add(regulator1); genRegRecords.put(regulator1, regulatorRecord); - // Harcoded connects (PSSE) - if ((this._sourceEngine instanceof PsseEngine) && (PsseModDefaultTypes.REGS_WITH_CONST.contains(regulatorRecord.getModelicaType()))) { + if ((this._sourceEngine instanceof PsseEngine) && (PsseModDefaultTypes.REGS_WITH_CONST.contains(regulatorRecord.getModelicaType()))) + { includeconstant = true; - ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - - if (this._sourceEngine instanceof PsseEngine) { - if (PsseModDefaultTypes.ESST1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + if (this._sourceEngine instanceof PsseEngine) + { + if (PsseModDefaultTypes.ESST1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { includeconstant = true; hasEsst1a = true; esst1aRecord = regulatorRecord; - ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG2_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -764,9 +787,11 @@ private void exportGeneratorsAndRegulators(Writer writerMo, ModExportContext mod connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME2, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasPss2a = true; - } else if (PsseModDefaultTypes.ESAC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESAC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -775,16 +800,17 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.ESDC2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESDC2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasEsdc2a = true; - esdc2aRecord = regulatorRecord; - + esdc2aRecord = regulatorRecord; ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.ESDC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESDC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -793,42 +819,44 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.IEEEX1.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.IEEEX1.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if(PsseModDefaultTypes.IEEEST.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if(PsseModDefaultTypes.IEEEST.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasIeeest = true; } } } } - - if (regulator2 != null) { - if (!regulatorsAdded.contains(regulator2.getNativeId())) { + if (regulator2 != null) + { + if (!regulatorsAdded.contains(regulator2.getNativeId())) + { regulatorsAdded.add(regulator2.getNativeId()); regulatorRecord = ModelConverter.getModelicaRecord(generatorRecord, regulator2, modContext, _ddbManager, modelicaSim, equipName, sourceSim, this._sourceEngine); regulatorsList.add(regulatorRecord); genRegsRecordList.add(regulatorRecord); genRegulators.add(regulator2); genRegRecords.put(regulator2, regulatorRecord); - // Harcoded connects (PSSE) - if ((this._sourceEngine instanceof PsseEngine) && (PsseModDefaultTypes.REGS_WITH_CONST.contains(regulatorRecord.getModelicaType()))) { + if ((this._sourceEngine instanceof PsseEngine) && (PsseModDefaultTypes.REGS_WITH_CONST.contains(regulatorRecord.getModelicaType()))) + { includeconstant = true; - ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - - if (this._sourceEngine instanceof PsseEngine) { - if (PsseModDefaultTypes.ESST1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + if (this._sourceEngine instanceof PsseEngine) + { + if (PsseModDefaultTypes.ESST1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { includeconstant = true; hasEsst1a = true; esst1aRecord = regulatorRecord; - ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG2_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -844,9 +872,11 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME2, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasPss2a = true; - } else if (PsseModDefaultTypes.ESAC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESAC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -855,16 +885,17 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.ESDC2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESDC2A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasEsdc2a = true; esdc2aRecord = regulatorRecord; - ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.ESDC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.ESDC1A.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); @@ -873,123 +904,134 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME1, PsseFixedData.VUEL_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if (PsseModDefaultTypes.IEEEX1.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if (PsseModDefaultTypes.IEEEX1.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(regulatorRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); - } else if(PsseModDefaultTypes.IEEEST.equalsIgnoreCase(regulatorRecord.getModelicaType())) { + } else if(PsseModDefaultTypes.IEEEST.equalsIgnoreCase(regulatorRecord.getModelicaType())) + { hasIeeest = true; } } } } - - if ((regulator1 != null) && (regulator2 != null)) { + if ((regulator1 != null) && (regulator2 != null)) + { Connect2RegulatorsRecord connect2RegRecord = ModelConverter.getModelicaRecord(regulator1, regulator2, modContext, _ddbManager, modelicaSim, pinName1, pinName2); if (connect2RegRecord != null) + { connect2RegsList.add(connect2RegRecord); - } else { + } + } else + { ConnectRegulatorRecord connectRegRecord = null; - if (regulator1 != null) { + if (regulator1 != null) + { connectRegRecord = ModelConverter.getModelicaRecord(regulator1, generator, modContext, _ddbManager, modelicaSim, pinName1, pinName2); - } else if (regulator2 != null) { + } else if (regulator2 != null) + { connectRegRecord = ModelConverter.getModelicaRecord(regulator2, generator, modContext, _ddbManager, modelicaSim, pinName2, pinName1); } if (connectRegRecord != null) + { connectRegList.add(connectRegRecord); + } } } - - // Con el generador y la lista de todos sus - // reguladores se crea el fichero Mi_init.mo - // para la inicializacion. (Only in the case - // that source = EUROSTAG + //Having the generator and the list of all its regulators a Mi_init.mo file is created + // for the initialization (only for the Eurostag case) _log.info("GENERATOR_= " + generator.getId()); - if (this._sourceEngine instanceof EurostagEngine) { - + if (this._sourceEngine instanceof EurostagEngine) + { initializationData = new InitializationData(generator, generatorRecord, genRegRecords); initializationDataList.add(initializationData); - - } else if(this._sourceEngine instanceof PsseEngine) { - if(hasEsst1a && !hasPss2a && !hasIeeest) { + } else if(this._sourceEngine instanceof PsseEngine) + { + if(hasEsst1a && !hasPss2a && !hasIeeest) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(esst1aRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - if(hasEsdc2a && !hasPss2a && !hasIeeest) { + if(hasEsdc2a && !hasPss2a && !hasIeeest) + { ConnectConstantRecord connectConstRecord = ModelConverter.getModelicaRecord(esdc2aRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } } - } else { + } else + { _log.info("GENERATOR HAS NOT CONNECTIONS"); - - // Si el generador no tiene reguladores se - // inicializa el generador unicamente - if (this._sourceEngine instanceof EurostagEngine) { + //If the generator has not regulators only the generator will be initialized. + if (this._sourceEngine instanceof EurostagEngine) + { initializationData = new InitializationData(generator, generatorRecord, genRegRecords); initializationDataList.add(initializationData); } } } else + { _log.info("CONNECTION SCHEMA IS NULL"); + } } - - if (!genRegsRecordMap.containsKey(generator)) { + if (!genRegsRecordMap.containsKey(generator)) + { genRegsRecordMap.put(generatorRecord, genRegsRecordList); - } else { + } else + { genRegsRecordMap.get(generator).addAll(genRegsRecordList); } } } - - // The initialization is only performed if the source engine is - // EUROSTAG - if (this._sourceEngine instanceof EurostagEngine) { + // The initialization is only performed if the source engine is EUROSTAG + if (this._sourceEngine instanceof EurostagEngine) + { System.out.println("Initializing generators"); initialization = new Initialization(omc, _ddbManager, tmpDir, initializationDataList); - //initialization.init(); - try { + try + { initialization.init(); - } catch (ConnectException e) { - // TODO Auto-generated catch block + } catch (ConnectException e) + { e.printStackTrace(); } } - - for (GeneratorRecord genRecord : generatorsRecords) { - // El generatorRecord y los regulatorsRecords se anaden - // despues de la inicializacion para poder - // poner ya los valores inicializados + //The generatorRecord and regulatorRecord are added after the initialization process + //in order to put the initialized values. + for (GeneratorRecord genRecord : generatorsRecords) + { this.addRecord(genRecord, writerMo, modContext, _ddbManager, modelicaSim); } } // Export Regulators - if ((regulatorsList.size() != 0) && (!regulatorsList.isEmpty())) { + if ((regulatorsList.size() != 0) && (!regulatorsList.isEmpty())) + { _log.info("EXPORTING REGULATORS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// REGULATORS"); - for (RegulatorRecord reg : regulatorsList) { + for (RegulatorRecord reg : regulatorsList) + { _log.info("\t Exporting regulator " + reg.getModelicaName()); this.addRecord(reg, writerMo, modContext, _ddbManager, modelicaSim); } } - // Add special connection between Reg.VOTHSG and Constant.y if - // needed for conversion from PSSE - if (this._sourceEngine instanceof PsseEngine) { - for (GeneratorRecord genRec : genRegsRecordMap.keySet()) { + // Add special connection between Reg.VOTHSG and Constant.y if needed for conversion from PSSE + if (this._sourceEngine instanceof PsseEngine) + { + for (GeneratorRecord genRec : genRegsRecordMap.keySet()) + { List regs = genRegsRecordMap.get(genRec); - ConnectConstantRecord connectConstRecord; boolean hasStab = isThereAStab(regs); List specialRegs = searchSpecialRegs(regs); - if (!hasStab && !specialRegs.isEmpty()) { - for (RegulatorRecord regRecord : specialRegs) { + if (!hasStab && !specialRegs.isEmpty()) + { + for (RegulatorRecord regRecord : specialRegs) + { connectConstRecord = ModelConverter.getModelicaRecord(regRecord.getModelicaName(), PsseFixedData.CONST_NAME, PsseFixedData.VOTHSG_PIN, PsseFixedData.Y_PIN); connectConstList.add(connectConstRecord); } - } else if (!specialRegs.isEmpty()) { - } } } @@ -997,18 +1039,17 @@ else if(PsseModDefaultTypes.PSS2A.equalsIgnoreCase(regulatorRecord.getModelicaTy } /** - * Searchs in a list of regulators (for a generator) if there a regulator in - * (SCRX, SEXS, IEEET2) AND if there isn't a STAB2A and returns true in this - * case - * + * Search in a list of regulators (for a generator) if there a regulator in + * (SCRX, SEXS, IEEET2) AND if there isn't a STAB2A and returns true in this case * @param regulators * : list of regulators for an specific generator */ private boolean isThereAStab(List regulators) { boolean hasStab = false; - - for (RegulatorRecord reg : regulators) { - if (reg.getModelicaType().equals(PsseModDefaultTypes.STAB2A)) { + for (RegulatorRecord reg : regulators) + { + if (reg.getModelicaType().equals(PsseModDefaultTypes.STAB2A)) + { hasStab = true; } } @@ -1019,20 +1060,19 @@ private boolean isThereAStab(List regulators) { * Searchs in a list of regulators (for a generator) if there is a regulator * in (SCRX, SEXS, IEEET2) and returns it/them. Returns en empty list if * there isn't. - * * @param regulators * @return List list of special regulators contained in the * list of regulators for a generator. */ private List searchSpecialRegs(List regulators) { List specialRegs = new ArrayList(); - - for (RegulatorRecord reg : regulators) { - if (PsseFixedData.SPECIAL_REGS.contains(reg.getModelicaType())) { + for (RegulatorRecord reg : regulators) + { + if (PsseFixedData.SPECIAL_REGS.contains(reg.getModelicaType())) + { specialRegs.add(reg); } } - return specialRegs; } @@ -1040,14 +1080,19 @@ private List searchSpecialRegs(List regulators * Export IIDM Generators to Modelica Generators-OmegaRef connect */ private void exportConnectGlobalVar(Writer writerMo, ModExportContext modContext, List identList, GlobalVariable globalVar, SimulatorInst modelicaSim) throws IOException { - if ((identList.size() != 0) && (!identList.isEmpty())) { + if ((identList.size() != 0) && (!identList.isEmpty())) + { this.addRecord(writerMo, null); - for (SingleTerminalConnectable singleTerCon : identList) { + for (SingleTerminalConnectable singleTerCon : identList) + { ConnectBusInfo busInfo = findBus(singleTerCon.getTerminal(), singleTerCon.getId()); - if (!Float.isNaN(busInfo.getBus().getV()) && busInfo.isConnected()) { + if (!Float.isNaN(busInfo.getBus().getV()) && busInfo.isConnected()) + { ConnectGlobalVarRecord record = ModelConverter.getModelicaRecord(singleTerCon, globalVar, modContext, _ddbManager, modelicaSim); if (record != null) + { this.addRecord(record, writerMo, modContext, _ddbManager, modelicaSim); + } } } } @@ -1055,47 +1100,50 @@ private void exportConnectGlobalVar(Writer writerMo, ModExportContext modContext /** * Export IIDM regulators connect to Modelica regulators connect - * * @throws IOException */ private void exportConnectRegulators(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { _log.info("EXPORTING CONNECT REGULATORS"); - if ((connectRegList.size() != 0) && (!connectRegList.isEmpty())) { + if ((connectRegList.size() != 0) && (!connectRegList.isEmpty())) + { this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting REGULATORS and MACHINES"); - for (ConnectRegulatorRecord connectReg : connectRegList) { + for (ConnectRegulatorRecord connectReg : connectRegList) + { _log.info("\t Exporting regulator connect " + connectReg.getModelicaName()); this.addRecord(connectReg, writerMo, modContext, _ddbManager, modelicaSim); } } - _log.info("EXPORTING CONNECT BETWEEN 2 REGULATORS"); - if ((connect2RegsList.size() != 0) && (!connect2RegsList.isEmpty())) { + if ((connect2RegsList.size() != 0) && (!connect2RegsList.isEmpty())) + { this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting REGULATORS and REGULATORS"); - for (Connect2RegulatorsRecord connectReg : connect2RegsList) { + for (Connect2RegulatorsRecord connectReg : connect2RegsList) + { _log.info("\t Exporting regulator connect " + connectReg.getModelicaName()); this.addRecord(connectReg, writerMo, modContext, _ddbManager, modelicaSim); } } - _log.info("EXPORTING CONNECT BETWEEN 2 EQUIPMENTS"); - if ((connect2GensList.size() != 0) && (!connect2GensList.isEmpty())) { + if ((connect2GensList.size() != 0) && (!connect2GensList.isEmpty())) + { this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting EQUIPMENTS and EQUIPMENTS"); - for (Connect2GeneratorsRecord connectGen : connect2GensList) { + for (Connect2GeneratorsRecord connectGen : connect2GensList) + { _log.info("\t Exporting equipment connect " + connectGen.getModelicaName()); this.addRecord(connectGen, writerMo, modContext, _ddbManager, modelicaSim); } } - - // Si el regulador es SCRX|SEXS|IEEET2 anadir connect(const.y, Reg.VOEL) - // y connect(const.y, Reg.VOEL) + //If the regulator is SCRX | SEXS | IEEET2 the connections connect(const.y, Reg.VOEL) and connect(const.y, Reg.VOEL) are added. _log.info("EXPORTING CONNECT BETWEEN REGULATOR AND CONSTANT"); - if ((connectConstList.size() != 0) && (!connectConstList.isEmpty())) { + if ((connectConstList.size() != 0) && (!connectConstList.isEmpty())) + { this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting REGULATORS and CONSTANTS"); - for (ConnectConstantRecord connectReg : connectConstList) { + for (ConnectConstantRecord connectReg : connectConstList) + { _log.info("\t Exporting regulator connect " + connectReg.getModelicaName()); this.addRecord(connectReg, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1104,7 +1152,6 @@ private void exportConnectRegulators(Writer writerMo, ModExportContext modContex /** * Export IIDM lines connect to Modelica lines connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1112,26 +1159,30 @@ private void exportConnectRegulators(Writer writerMo, ModExportContext modContex * @throws IOException */ private void exportConnectLines(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((connectLinesList.size() != 0) && (!connectLinesList.isEmpty())) { + if ((connectLinesList.size() != 0) && (!connectLinesList.isEmpty())) + { _log.info("EXPORTING CONNECT LINES"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting LINES"); - for (Line line : connectLinesList) { - + for (Line line : connectLinesList) + { _log.info("\t Exporting line connect " + line.getId()); Equipments.ConnectionInfo info1 = Equipments.getConnectionInfoInBusBreakerView(line.getTerminal1()); Bus b = info1.getConnectionBus(); - if (!Float.isNaN(b.getV())) { - if (info1.isConnected()) { + if (!Float.isNaN(b.getV())) + { + if (info1.isConnected()) + { ConnectLineRecord lineT1Connect = ModelConverter.getModelicaRecord(b, line, modContext, _ddbManager, modelicaSim); this.addRecord(lineT1Connect, writerMo, modContext, _ddbManager, modelicaSim); } } - Equipments.ConnectionInfo info2 = Equipments.getConnectionInfoInBusBreakerView(line.getTerminal2()); b = info2.getConnectionBus(); - if (!Float.isNaN(b.getV())) { - if (info2.isConnected()) { + if (!Float.isNaN(b.getV())) + { + if (info2.isConnected()) + { ConnectLineRecord lineT2Connect = ModelConverter.getModelicaRecord(line, b, modContext, _ddbManager, modelicaSim); this.addRecord(lineT2Connect, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1142,7 +1193,6 @@ private void exportConnectLines(Writer writerMo, ModExportContext modContext, Li /** * Export IIDM dangling connect to Modelica lines connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1150,31 +1200,32 @@ private void exportConnectLines(Writer writerMo, ModExportContext modContext, Li * @throws IOException */ private void exportConnectDanglingLines(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((danglingLines.size() != 0) && (!danglingLines.isEmpty())) { + if ((danglingLines.size() != 0) && (!danglingLines.isEmpty())) + { _log.info("EXPORTING CONNECT DANGLING LINES"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting DANGLING LINES"); - for (DanglingLineRecord dline : danglingLines) { + for (DanglingLineRecord dline : danglingLines) + { _log.info("\t Exporting dangling line connect " + dline.getDanglingLine().getId()); Equipments.ConnectionInfo info1 = Equipments.getConnectionInfoInBusBreakerView(dline.getDanglingLine().getTerminal()); Bus b = info1.getConnectionBus(); - if (!Float.isNaN(b.getV())) { - if (info1.isConnected()) { + if (!Float.isNaN(b.getV())) + { + if (info1.isConnected()) + { ConnectLineRecord lineT1Connect = ModelConverter.getModelicaRecord(b, dline.getDanglingLine(), modContext, _ddbManager, modelicaSim); this.addRecord(lineT1Connect, writerMo, modContext, _ddbManager, modelicaSim); } } - ConnectLineRecord lineT2Connect = ModelConverter.getModelicaRecord(dline.getDanglingLine(), dline.getDanglingBusName(), modContext, _ddbManager, modelicaSim); this.addRecord(lineT2Connect, writerMo, modContext, _ddbManager, modelicaSim); } } } - /** * Export IIDM coupling devices connect to Modelica coupling devices connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1182,17 +1233,20 @@ private void exportConnectDanglingLines(Writer writerMo, ModExportContext modCon * @throws IOException */ private void exportConnectCouplingDevices(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((connectCouplingList.size() != 0) && (!connectCouplingList.isEmpty())) { + if ((connectCouplingList.size() != 0) && (!connectCouplingList.isEmpty())) + { _log.info("EXPORTING CONNECT COUPLING DEVICES " + connectCouplingList.size()); this.addRecord(writerMo, null); this.addRecord(writerMo, "// COUPLING DEVICES"); - - for (VoltageLevel voltageLevel : connectCouplingList) { - for (Switch sw : voltageLevel.getBusBreakerView().getSwitches()) { + for (VoltageLevel voltageLevel : connectCouplingList) + { + for (Switch sw : voltageLevel.getBusBreakerView().getSwitches()) + { _log.info("\t Exporting coupling device connect " + sw.getId()); Bus bus1 = voltageLevel.getBusBreakerView().getBus1(sw.getId()); Bus bus2 = voltageLevel.getBusBreakerView().getBus2(sw.getId()); - if (!Float.isNaN(bus1.getV()) && !Float.isNaN(bus2.getV())) { + if (!Float.isNaN(bus1.getV()) && !Float.isNaN(bus2.getV())) + { ConnectCouplingDevicesRecord couplingDeviceRecord = ModelConverter.getModelicaRecord(sw, bus1, bus2, modContext, _ddbManager, modelicaSim); this.addRecord(couplingDeviceRecord, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1203,7 +1257,6 @@ private void exportConnectCouplingDevices(Writer writerMo, ModExportContext modC /** * Export IIDM loads connect to Modelica loads connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1211,15 +1264,19 @@ private void exportConnectCouplingDevices(Writer writerMo, ModExportContext modC * @throws IOException */ private void exportConnectLoads(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((connectLoadsList.size() != 0) && (!connectLoadsList.isEmpty())) { + if ((connectLoadsList.size() != 0) && (!connectLoadsList.isEmpty())) + { _log.info("EXPORTING CONNECT LOADS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting LOADS"); - for (Load load : connectLoadsList) { + for (Load load : connectLoadsList) + { _log.info("\t Exporting load connect " + load.getId()); ConnectBusInfo busInfo = findBus(load.getTerminal(), load.getId()); - if (!Float.isNaN(busInfo.getBus().getV())) { - if (busInfo.isConnected()) { + if (!Float.isNaN(busInfo.getBus().getV())) + { + if (busInfo.isConnected()) + { ConnectRecord loadConnect = ModelConverter.getModelicaRecord(busInfo, load, modContext, _ddbManager, modelicaSim); this.addRecord(loadConnect, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1230,7 +1287,6 @@ private void exportConnectLoads(Writer writerMo, ModExportContext modContext, Li /** * Export IIDM loads connect (for the dangling lines) to Modelica loads connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1238,13 +1294,14 @@ private void exportConnectLoads(Writer writerMo, ModExportContext modContext, Li * @throws IOException */ private void exportConnectDanglingLoads(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((danglingLines.size() != 0) && (!danglingLines.isEmpty())) { + if ((danglingLines.size() != 0) && (!danglingLines.isEmpty())) + { _log.info("EXPORTING CONNECT LOADS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting LOADS"); - for (DanglingLineRecord dline : danglingLines) { + for (DanglingLineRecord dline : danglingLines) + { _log.info("\t Exporting load connect " + dline.getDanglingLine().getId()); - ConnectRecord loadConnect = ModelConverter.getModelicaRecord(dline.getDanglingBusName(), dline.getDanglingLoadName(), modContext, _ddbManager, modelicaSim); this.addRecord(loadConnect, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1255,15 +1312,19 @@ private void exportConnectDanglingLoads(Writer writerMo, ModExportContext modCon * Export IIDM shunts connect to Modelica capacitors connect */ private void exportConnectCapacitors(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((connectCapacitorsList.size() != 0) && (!connectCapacitorsList.isEmpty())) { + if ((connectCapacitorsList.size() != 0) && (!connectCapacitorsList.isEmpty())) + { _log.info("EXPORTING CONNECT CAPACITORS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting Capacitors"); - for (ShuntCompensator capacitor : connectCapacitorsList) { + for (ShuntCompensator capacitor : connectCapacitorsList) + { _log.info("\t Exporting capacitor connect " + capacitor.getId()); ConnectBusInfo busInfo = findBus(capacitor.getTerminal(), capacitor.getId()); - if (!Float.isNaN(busInfo.getBus().getV())) { - if (busInfo.isConnected()) { + if (!Float.isNaN(busInfo.getBus().getV())) + { + if (busInfo.isConnected()) + { ConnectRecord capacitorConnect = ModelConverter.getModelicaRecord(busInfo, capacitor, modContext, _ddbManager, modelicaSim); this.addRecord(capacitorConnect, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1274,7 +1335,6 @@ private void exportConnectCapacitors(Writer writerMo, ModExportContext modContex /** * Export IIDM generators connect to Modelica generators connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1282,32 +1342,40 @@ private void exportConnectCapacitors(Writer writerMo, ModExportContext modContex * @throws IOException */ private void exportConnectGenerators(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((genList.size() != 0) && (!genList.isEmpty())) { - if ((generators.size() != 0) && (!generators.isEmpty())) { + if ((genList.size() != 0) && (!genList.isEmpty())) + { + if ((generators.size() != 0) && (!generators.isEmpty())) + { _log.info("EXPORTING CONNECT GENERATORS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting GENERATORS"); - for (Generator gen : generators) { + for (Generator gen : generators) + { _log.info("\t Exporting generator connect " + gen.getId()); ConnectBusInfo busInfo = findBus(gen.getTerminal(), gen.getId()); - if (!Float.isNaN(busInfo.getBus().getV())) { - if (busInfo.isConnected()) { + if (!Float.isNaN(busInfo.getBus().getV())) + { + if (busInfo.isConnected()) + { ConnectRecord genConnect = ModelConverter.getModelicaRecord(busInfo, gen, modContext, _ddbManager, modelicaSim, false, this._sourceEngine); this.addRecord(genConnect, writerMo, modContext, _ddbManager, modelicaSim); } } } } - - if ((generatorsInyections.size() != 0) && (!generatorsInyections.isEmpty())) { + if ((generatorsInyections.size() != 0) && (!generatorsInyections.isEmpty())) + { _log.info("EXPORTING CONNECT GENERATORS AS FIXED INYECTIONS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting GENERATORS AS FIXED INYECTIONS"); - for (Generator gen : generatorsInyections) { + for (Generator gen : generatorsInyections) + { _log.info("\t Exporting generator connect " + gen.getId()); ConnectBusInfo busInfo = findBus(gen.getTerminal(), gen.getId()); - if (!Float.isNaN(busInfo.getBus().getV())) { - if (busInfo.isConnected()) { + if (!Float.isNaN(busInfo.getBus().getV())) + { + if (busInfo.isConnected()) + { ConnectRecord genConnect = ModelConverter.getModelicaRecord(busInfo, gen, modContext, _ddbManager, modelicaSim, true, this._sourceEngine); this.addRecord(genConnect, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1319,7 +1387,6 @@ private void exportConnectGenerators(Writer writerMo, ModExportContext modContex /** * Export IIDM transformers connect to Modelica transformers connect - * * @param writerMo * @param modContext * @param modelicaModelsList @@ -1327,41 +1394,47 @@ private void exportConnectGenerators(Writer writerMo, ModExportContext modContex * @throws IOException */ private void exportConnectTransformers(Writer writerMo, ModExportContext modContext, List modelicaModelsList, SimulatorInst modelicaSim) throws IOException { - if ((trafosList.size() != 0) && (!trafosList.isEmpty())) { - if ((fixedTranformers.size() != 0) && (!fixedTranformers.isEmpty())) { + if ((trafosList.size() != 0) && (!trafosList.isEmpty())) + { + if ((fixedTranformers.size() != 0) && (!fixedTranformers.isEmpty())) + { _log.info("EXPORTING CONNECT FIXED TRANSFORMERS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting FIXED TRANSFORMERS"); - for (TwoWindingsTransformer trafo : fixedTranformers) { + for (TwoWindingsTransformer trafo : fixedTranformers) + { _log.info("\t Exporting fixed trafo connect " + trafo.getId()); Equipments.ConnectionInfo trafoT1Info = Equipments.getConnectionInfoInBusBreakerView(trafo.getTerminal1()); - if (!Float.isNaN(trafoT1Info.getConnectionBus().getV()) && trafoT1Info.isConnected()) { + if (!Float.isNaN(trafoT1Info.getConnectionBus().getV()) && trafoT1Info.isConnected()) + { ConnectFixedTransformerRecord connectFixedTrafoT1Record = (ConnectFixedTransformerRecord) ModelConverter.getModelicaRecord(trafoT1Info.getConnectionBus(), trafo, modContext, true, _ddbManager, modelicaSim); this.addRecord(connectFixedTrafoT1Record, writerMo, modContext, _ddbManager, modelicaSim); } - Equipments.ConnectionInfo trafoT2Info = Equipments.getConnectionInfoInBusBreakerView(trafo.getTerminal2()); - if (!Float.isNaN(trafoT2Info.getConnectionBus().getV()) && trafoT2Info.isConnected()) { + if (!Float.isNaN(trafoT2Info.getConnectionBus().getV()) && trafoT2Info.isConnected()) + { ConnectFixedTransformerRecord connectFixedTrafoT2Record = (ConnectFixedTransformerRecord) ModelConverter.getModelicaRecord(trafo, trafoT2Info.getConnectionBus(), modContext, true, _ddbManager, modelicaSim); this.addRecord(connectFixedTrafoT2Record, writerMo, modContext, _ddbManager, modelicaSim); } } } - - if ((detailedTranformers.size() != 0) && (!detailedTranformers.isEmpty())) { + if ((detailedTranformers.size() != 0) && (!detailedTranformers.isEmpty())) + { _log.info("EXPORTING CONNECT DETAILED TRANSFORMERS"); this.addRecord(writerMo, null); this.addRecord(writerMo, "// Connecting DETAILED TRANSFORMERS"); - for (TwoWindingsTransformer trafo : detailedTranformers) { + for (TwoWindingsTransformer trafo : detailedTranformers) + { _log.info("\t Exporting detailed trafo connect " + trafo.getId()); Equipments.ConnectionInfo trafoT1Info = Equipments.getConnectionInfoInBusBreakerView(trafo.getTerminal1()); - if (!Float.isNaN(trafoT1Info.getConnectionBus().getV()) && trafoT1Info.isConnected()) { + if (!Float.isNaN(trafoT1Info.getConnectionBus().getV()) && trafoT1Info.isConnected()) + { ConnectDetailedTransformerRecord connectDetailedTrafoT1Record = (ConnectDetailedTransformerRecord) ModelConverter.getModelicaRecord(trafoT1Info.getConnectionBus(), trafo, modContext, false, _ddbManager, modelicaSim); this.addRecord(connectDetailedTrafoT1Record, writerMo, modContext, _ddbManager, modelicaSim); } - Equipments.ConnectionInfo trafoT2Info = Equipments.getConnectionInfoInBusBreakerView(trafo.getTerminal2()); - if (!Float.isNaN(trafoT2Info.getConnectionBus().getV()) && trafoT2Info.isConnected()) { + if (!Float.isNaN(trafoT2Info.getConnectionBus().getV()) && trafoT2Info.isConnected()) + { ConnectDetailedTransformerRecord connectDetailedTrafoT2Record = (ConnectDetailedTransformerRecord) ModelConverter.getModelicaRecord(trafo, trafoT2Info.getConnectionBus(), modContext, false, _ddbManager, modelicaSim); this.addRecord(connectDetailedTrafoT2Record, writerMo, modContext, _ddbManager, modelicaSim); } @@ -1374,31 +1447,28 @@ private ConnectBusInfo findBus(Terminal terminal, String context) { ConnectBusInfo busInfo; Bus bus = null; boolean connected = true; - bus = terminal.getBusBreakerView().getBus(); - - if (bus == null) { + if (bus == null) + { connected = false; bus = terminal.getBusBreakerView().getConnectableBus(); - - if (bus == null) { + if (bus == null) + { throw new RuntimeException("Cannot find connection bus"); } } - busInfo = new ConnectBusInfo(bus, connected); - return busInfo; } /** * add new Modelica record - * * @param modRecord * @throws Exception */ private void addRecord(ModelicaRecord modRecord, Writer writer, ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator) throws IOException { - if (modRecord == null) { + if (modRecord == null) + { writer.append(StaticData.NEW_LINE); return; } @@ -1408,7 +1478,8 @@ private void addRecord(ModelicaRecord modRecord, Writer writer, ModExportContext } private void addRecord(Writer writer, String data) throws IOException { - if (data == null) { + if (data == null) + { writer.append(StaticData.NEW_LINE); return; } @@ -1416,68 +1487,63 @@ private void addRecord(Writer writer, String data) throws IOException { writer.append(StaticData.NEW_LINE); } - private void numberOfElements() { + private void numberOfElements() + { // BUSES System.out.println("Buses = " + Identifiables.sort(_network.getBusBreakerView().getBuses()).size()); - // LINES System.out.println("Lines = " + Identifiables.sort(_network.getLines()).size()); - // TRANSFORMERS System.out.println("Trafos = " + Identifiables.sort(_network.getTwoWindingsTransformers()).size()); - List fixedTranformers = new ArrayList(); List detailedTranformers = new ArrayList(); for (TwoWindingsTransformer trafo : Identifiables.sort(_network.getTwoWindingsTransformers())) { - if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) { + if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) + { fixedTranformers.add(trafo); - } else { + } else + { detailedTranformers.add(trafo); } } System.out.println("Fixed Trafos = " + fixedTranformers.size()); System.out.println("Detailed Trafos = " + detailedTranformers.size()); - // LOADS System.out.println("Loads = " + Identifiables.sort(_network.getLoads()).size()); - // SHUNTS System.out.println("Shutns = " + Identifiables.sort(_network.getShunts()).size()); - // MACHINES System.out.println("Machines = " + Identifiables.sort(_network.getGenerators()).size()); - int numMachines = Identifiables.sort(_network.getGenerators()).size(); int numGens = _ddbManager.findEquipmentAllCount(); int numFixInyec = numMachines - numGens; - System.out.println("Generators = " + numGens); System.out.println("Fixed inyections = " + numFixInyec); System.out.println("Regulators = " + _ddbManager.findInternalsAllCount()); } - private void countIIDMElements(String moFile) { + private void countIIDMElements(String moFile) + { int count = 0; String listOfElemName = moFile + "Elem.csv"; FileWriter elements; - try { + try + { elements = new FileWriter(listOfElemName); elements.append("Id;Name"); elements.append(StaticData.NEW_LINE); elements.append("BUSES"); elements.append(StaticData.NEW_LINE); - - for (Bus bus : Identifiables.sort(_network.getBusBreakerView().getBuses())) { + for (Bus bus : Identifiables.sort(_network.getBusBreakerView().getBuses())) + { elements.append(bus.getId() + ";" + bus.getName()); elements.append(StaticData.NEW_LINE); count++; } _log.info("Buses = " + count); count = 0; - elements.append("LINES"); elements.append(StaticData.NEW_LINE); - _log.info("Lines = " + count); count = 0; @@ -1485,69 +1551,72 @@ private void countIIDMElements(String moFile) { elements.append(StaticData.NEW_LINE); List fixedTranformers = new ArrayList(); List detailedTranformers = new ArrayList(); - for (TwoWindingsTransformer trafo : Identifiables.sort(_network.getTwoWindingsTransformers())) { - if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) { + for (TwoWindingsTransformer trafo : Identifiables.sort(_network.getTwoWindingsTransformers())) + { + if ((trafo.getRatioTapChanger() == null) && (trafo.getPhaseTapChanger() == null)) + { fixedTranformers.add(trafo); - } else { + } else + { detailedTranformers.add(trafo); } - // elements.append(trafo.getId() + ";" + trafo.getName()); elements.append(trafo.getTerminal1().getBusBreakerView().getBus().getId() + ";" + trafo.getTerminal2().getBusBreakerView().getBus().getId()); elements.append(StaticData.NEW_LINE); count++; } - _log.info("Trafos = " + count); _log.info("Fixed Trafos = " + fixedTranformers.size()); _log.info("Detailed Trafos = " + detailedTranformers.size()); count = 0; - elements.append("LOAD"); elements.append(StaticData.NEW_LINE); - for (Load load : Identifiables.sort(_network.getLoads())) { - // _log.info(load.getId()); + for (Load load : Identifiables.sort(_network.getLoads())) + { elements.append(load.getId() + ";" + load.getName()); elements.append(StaticData.NEW_LINE); count++; } _log.info("Loads = " + count); count = 0; - elements.append("SHUNTS"); elements.append(StaticData.NEW_LINE); - for (ShuntCompensator shunt : Identifiables.sort(_network.getShunts())) { + for (ShuntCompensator shunt : Identifiables.sort(_network.getShunts())) + { elements.append(shunt.getId() + ";" + shunt.getName()); elements.append(StaticData.NEW_LINE); count++; } _log.info("Shunts = " + count); - elements.append("GENERATOR"); elements.append(StaticData.NEW_LINE); count = 0; int countEq = 0; - for (Generator gen : Identifiables.sort(_network.getGenerators())) { + for (Generator gen : Identifiables.sort(_network.getGenerators())) + { elements.append(gen.getId() + ";" + gen.getName()); elements.append(StaticData.NEW_LINE); count++; Equipment eq = _ddbManager.findEquipment(gen.getId().substring(1)); - if (eq != null) { + if (eq != null) + { countEq++; - // TODO Si existiera un schema distinto por simulador, el - // parametro NULL debera cambiarse. ConnectionSchema connectionSchema = _ddbManager.findConnectionSchema(eq.getCimId(), null); - - if (connectionSchema != null) { + if (connectionSchema != null) + { elements.append("REGULATORS"); elements.append(StaticData.NEW_LINE); List connections = connectionSchema.getConnections(); - if ((connections != null) && (!connections.isEmpty())) { - for (Connection con : connectionSchema.getConnections()) { - if (con.getId1Type() == 1) { + if ((connections != null) && (!connections.isEmpty())) + { + for (Connection con : connectionSchema.getConnections()) + { + if (con.getId1Type() == 1) + { elements.append("\t" + con.getId1()); elements.append(StaticData.NEW_LINE); } - if (con.getId2Type() == 1) { + if (con.getId2Type() == 1) + { elements.append("\t" + con.getId2()); elements.append(StaticData.NEW_LINE); } @@ -1561,7 +1630,8 @@ private void countIIDMElements(String moFile) { _log.info("Inyections = " + (count - countEq)); count = 0; elements.close(); - } catch (IOException e) { + } catch (IOException e) + { e.printStackTrace(); _log.error("Error counting elements."); } @@ -1574,9 +1644,7 @@ private void countIIDMElements(String moFile) { private Path tmpDir; private final ModelicaDictionary dictionary; private File modelicaLibFile = null; - private Map> paramsDictionary; // Map> + private Map> paramsDictionary; private float SNREF; private boolean includeconstant = false; From e8aef5fa512fabbb7a385d6ab67320f3bba0cb60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 12:57:55 +0200 Subject: [PATCH 14/20] Format changes Remove empty lines and translate comments --- .../initialization/InitializationRunner.java | 234 +++++------------- 1 file changed, 64 insertions(+), 170 deletions(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java index 121d6b15..2e38bd05 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/InitializationRunner.java @@ -25,10 +25,10 @@ import eu.itesla_project.modelica_export.util.eurostag.EurostagFixedData; /** + * Class to run the dynamic simulation in Open Modelica. * @author Silvia Machado */ public class InitializationRunner { - public InitializationRunner(JavaOMCAPI omc, File filename, List initializationDataList) { this.omc = omc; this.fileName = filename; @@ -36,15 +36,14 @@ public InitializationRunner(JavaOMCAPI omc, File filename, List> regInitVarsFromGen; Map> regInitVarsFromReg; Map>> regInitVarsFromOtherRegs; Map> regInitOtherVars; - omc.loadFile(this.fileName.getAbsolutePath()); - //String content = new Scanner(this.fileName).useDelimiter("\\Z").next(); for(InitializationData initData : initializationDataList) { this.genInitValues = new HashMap(); this.regInitValues = new HashMap>(); @@ -54,18 +53,13 @@ public void initializer() { regInitOtherVars = initData.getRegInitOtherVars(); this.modelName = initData.getModelName(); - - //omc.loadFile("log/" + this.modelName + StaticData.MO_EXTENSION); -// omc.loadFile("/home/machados/sources/ITESLA_FINAL/ipst/modelica-export/log/" + this.modelName + StaticData.MO_EXTENSION); - // String content = new Scanner(new File("log/" + this.modelName + StaticData.MO_EXTENSION)).useDelimiter("\\Z").next(); - //System.out.println(content); - String compString = omc.getComponents(this.modelName); String[] compList = compString.contains("},{") == true ? compString.split("\\},\\{") : null; String machine = compList != null ? compList[0].split(",")[1] : compString.split(",")[1]; List regsList = new ArrayList<>(); List componentsList = Arrays.asList(compList); - for (int i = 1; i < componentsList.size(); i++) { + for (int i = 1; i < componentsList.size(); i++) + { String st = componentsList.get(i); st = st.substring(st.indexOf(",") + 1, st.length()); String regulator = st.substring(0, st.indexOf(",")); @@ -77,9 +71,7 @@ public void initializer() { */ long init = System.currentTimeMillis(); omc.simulate(initData.getModelName(), "0", "1", "dassl"); - //omc.getSimulationVars(initData.getModelName() + "_res.mat"); omc.getErrorString(); - _log.debug("Inicialización (ms) = " + (System.currentTimeMillis()-init)); /** @@ -87,214 +79,111 @@ public void initializer() { * machine's model. */ String value; - for (String st : EurostagFixedData.MACHINE_INIT_PAR) { + for (String st : EurostagFixedData.MACHINE_INIT_PAR) + { value = omc.getValue(machine.concat(".").concat(st), "1"); genInitValues.put(st, value.trim()); } initData.setGenInitializedValues(genInitValues); - /** * Getting initialized regulator data in order to put it in the * regulator's model */ - // Calculamos primero las variables que coger de la inicialización - // (los pin_X de los regInit) - // Coger tambien los valores de los pin_X de los generadores - // que tengan tambien los reguladores List variablesList; Map valuesMap; String var; - for (String reg : regsList) { - // Cogemos las variables que vienen de la inicialización del - // generador + // At first we calculate which are the variables to get them from the initialization process: pin_X and regInit. + //We get also the pin_X from the generators + for (String reg : regsList) + { + //Getting the initialization variables from the generator. variablesList = regInitVarsFromGen.get(reg); - if (variablesList != null && !variablesList.isEmpty()) { + if (variablesList != null && !variablesList.isEmpty()) + { valuesMap = new HashMap(); - for (String st : variablesList) { + for (String st : variablesList) + { var = st.replace(StaticData.INIT_VAR, StaticData.PIN); value = omc.getValue(machine.concat(".").concat(var), "1"); valuesMap.put(st, value); } regInitValues.put(reg, valuesMap); } - // Cogemos las variables que vienen de la inicialización del - // regulador + //Getting the initialization variables from the regulators. variablesList = regInitVarsFromReg.get(reg); - if (variablesList != null && !variablesList.isEmpty()) { + if (variablesList != null && !variablesList.isEmpty()) + { valuesMap = new HashMap(); - for (String st : variablesList) { + for (String st : variablesList) + { var = st.replace(StaticData.INIT_VAR, StaticData.PIN); value = omc.getValue(reg.concat(".").concat(var), "1"); valuesMap.put(st, value); } - if (!regInitValues.containsKey(reg)) { + if (!regInitValues.containsKey(reg)) + { regInitValues.put(reg, valuesMap); - } else { + } else + { regInitValues.get(reg).putAll(valuesMap); } } - //Cogemos las init variables que no hay que conectar pero sí coger los valores + //Getting the initialization variables that shouldn't be connected but we need its values. variablesList = regInitOtherVars.get(reg); - if(variablesList != null && !variablesList.isEmpty()) { + if(variablesList != null && !variablesList.isEmpty()) + { valuesMap = new HashMap(); - for (String st : variablesList) { + for (String st : variablesList) + { var = st.replace(StaticData.INIT_VAR, StaticData.PIN); value = omc.getValue(reg.concat(".").concat(var), "1"); valuesMap.put(st, value); } - if (!regInitValues.containsKey(reg)) { + if (!regInitValues.containsKey(reg)) + { regInitValues.put(reg, valuesMap); - } else { + } else + { regInitValues.get(reg).putAll(valuesMap); } } - - - //Coger también las que vienen de la - // inicialización de otros reguladores + //Gettint the initialization variables coming from other regulators. Map> mapVarsOthers = regInitVarsFromOtherRegs.get(reg); - if(mapVarsOthers != null && !mapVarsOthers.isEmpty()) { - for (String otherReg : mapVarsOthers.keySet()) { + if(mapVarsOthers != null && !mapVarsOthers.isEmpty()) + { + for (String otherReg : mapVarsOthers.keySet()) + { variablesList = mapVarsOthers.get(otherReg); - if (variablesList != null && !variablesList.isEmpty()) { + if (variablesList != null && !variablesList.isEmpty()) + { valuesMap = new HashMap(); - for (String st : variablesList) { + for (String st : variablesList) + { var = st.replace(StaticData.INIT_VAR, StaticData.PIN); value = omc.getValue(otherReg.concat(".").concat(var), "1"); valuesMap.put(st, value); } - if (!regInitValues.containsKey(reg)) { + if (!regInitValues.containsKey(reg)) + { regInitValues.put(reg, valuesMap); - } else { + } else + { regInitValues.get(reg).putAll(valuesMap); } } } } } - initData.setRegInitializedValues(regInitValues); - // Delete .xml, .c, .h, .o and other files created by JavaOMC - //deleteInitFiles(); + // Delete .xml, .c, .h, .o and other files created by JavaOMC API + deleteInitFiles(); } omc.clear(); - - -//// String compString = omc.getComponents(modelName); -//// String[] compList = compString.contains("},{") == true ? compString.split("\\},\\{") : null; -//// String machine = compList != null ? compList[0].split(",")[1] : compString.split(",")[1]; -//// List regsList = new ArrayList<>(); -//// List componentsList = Arrays.asList(compList); -//// for (int i = 1; i < componentsList.size(); i++) { -//// String st = componentsList.get(i); -//// st = st.substring(st.indexOf(",") + 1, st.length()); -//// String regulator = st.substring(0, st.indexOf(",")); -//// regsList.add(regulator); -//// } -// -// /** -// * Execute simulation in order to initialize system. -// */ -// long init = System.currentTimeMillis(); -// omc.simulate(model, "0", "1", "dassl"); -//// omc.simulate(modelName, "0", "1", "dassl"); -// _log.debug("Inicialización (ms) = " + (System.currentTimeMillis()-init)); -// -//// /** -//// * Getting initialized generator data in order to put it in the -//// * machine's model. -//// */ -//// String value; -//// for (String st : EurostagFixedData.MACHINE_INIT_PAR) { -//// value = omc.getValue(machine.concat(".").concat(st), "1"); -//// genInitValues.put(st, value.trim()); -//// } -//// -//// /** -//// * Getting initialized regulator data in order to put it in the -//// * regulator's model -//// */ -//// // Calculamos primero las variables que coger de la inicialización -//// // (los pin_X de los regInit) -//// // Coger tambien los valores de los pin_X de los generadores -//// // que tengan tambien los reguladores -//// List variablesList; -//// Map valuesMap; -//// String var; -//// for (String reg : regsList) { -//// // Cogemos las variables que vienen de la inicialización del -//// // generador -//// variablesList = regInitVarsFromGen.get(reg); -//// if (variablesList != null && !variablesList.isEmpty()) { -//// valuesMap = new HashMap(); -//// for (String st : variablesList) { -//// var = st.replace(StaticData.INIT_VAR, StaticData.PIN); -//// value = omc.getValue(machine.concat(".").concat(var), "1"); -//// valuesMap.put(st, value); -//// } -//// regInitValues.put(reg, valuesMap); -//// } -//// // Cogemos las variables que vienen de la inicialización del -//// // regulador -//// variablesList = regInitVarsFromReg.get(reg); -//// if (variablesList != null && !variablesList.isEmpty()) { -//// valuesMap = new HashMap(); -//// for (String st : variablesList) { -//// var = st.replace(StaticData.INIT_VAR, StaticData.PIN); -//// value = omc.getValue(reg.concat(".").concat(var), "1"); -//// valuesMap.put(st, value); -//// } -//// if (!regInitValues.containsKey(reg)) { -//// regInitValues.put(reg, valuesMap); -//// } else { -//// regInitValues.get(reg).putAll(valuesMap); -//// } -//// } -//// //Cogemos las init variables que no hay que conectar pero sí coger los valores -//// variablesList = regInitOtherVars.get(reg); -//// if(variablesList != null && !variablesList.isEmpty()) { -//// valuesMap = new HashMap(); -//// for (String st : variablesList) { -//// var = st.replace(StaticData.INIT_VAR, StaticData.PIN); -//// value = omc.getValue(reg.concat(".").concat(var), "1"); -//// valuesMap.put(st, value); -//// } -//// if (!regInitValues.containsKey(reg)) { -//// regInitValues.put(reg, valuesMap); -//// } else { -//// regInitValues.get(reg).putAll(valuesMap); -//// } -//// } -//// -//// -//// //Coger también las que vienen de la -//// // inicialización de otros reguladores -//// Map> mapVarsOthers = regInitVarsFromOtherRegs.get(reg); -//// if(mapVarsOthers != null && !mapVarsOthers.isEmpty()) { -//// for (String otherReg : mapVarsOthers.keySet()) { -//// variablesList = mapVarsOthers.get(otherReg); -//// if (variablesList != null && !variablesList.isEmpty()) { -//// valuesMap = new HashMap(); -//// for (String st : variablesList) { -//// var = st.replace(StaticData.INIT_VAR, StaticData.PIN); -//// value = omc.getValue(otherReg.concat(".").concat(var), "1"); -//// valuesMap.put(st, value); -//// } -//// if (!regInitValues.containsKey(reg)) { -//// regInitValues.put(reg, valuesMap); -//// } else { -//// regInitValues.get(reg).putAll(valuesMap); -//// } -//// } -//// } -//// } -//// } -// // // Delete .xml, .c, .h, .o and other files created by JavaOMC // deleteInitFiles(); - // omc.clear(); - } catch (Exception ex) { + } catch (Exception ex) + { _log.error(ex.getMessage(), ex); } } @@ -303,21 +192,28 @@ private void deleteInitFiles() throws IOException { String workingDir = System.getProperty("user.dir"); System.out.println("Working directory = " + workingDir); Path dirPath = Paths.get(workingDir); - File[] initFiles = dirPath.toFile().listFiles(new FilenameFilter() { + File[] initFiles = dirPath.toFile().listFiles(new FilenameFilter() + { @Override public boolean accept(File dir, String name) { return (name.startsWith(modelName) && (!name.endsWith(".mat"))); } }); - - for (File f : initFiles) { - try { + for (File f : initFiles) + { + try + { boolean deleted = Files.deleteIfExists(Paths.get(f.getPath())); if (!deleted) + { _log.error("File " + f + " has not been deleted."); + } else + { _log.info("Deleted: " + f.getName()); - } catch (FileSystemException exc) { + } + } catch (FileSystemException exc) + { _log.error(exc.getMessage(), exc); } } @@ -332,13 +228,11 @@ public Map> getRegInitValues() { } private List initializationDataList; - private File fileName; private String modelName; private JavaOMCAPI omc; - private Map genInitValues = new HashMap(); private Map> regInitValues = new HashMap>(); private static final Logger _log = LoggerFactory.getLogger(InitializationRunner.class); -} \ No newline at end of file +} From f6f9a53cc6809e8b9fb23e51e6a39a8d201d524a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 13:12:55 +0200 Subject: [PATCH 15/20] Format changes Remove empty lines, spaces and translate comments. --- .../records/GeneratorRecord.java | 488 ++++++++++-------- 1 file changed, 263 insertions(+), 225 deletions(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java index 415dbef5..29811ae4 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java @@ -37,125 +37,156 @@ public GeneratorRecord(Generator generator, ConnectBusInfo busInfo, boolean isIn this.busInfo = busInfo; this.sourceEngine = sourceEngine; - - - if (!isInyection) { - if(this.sourceEngine instanceof EurostagEngine) { + if (!isInyection) + { + if(this.sourceEngine instanceof EurostagEngine) + { this.DEFAULT_GEN_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_TYPE; - } - else if(this.sourceEngine instanceof PsseEngine) { + } else if(this.sourceEngine instanceof PsseEngine) + { this.DEFAULT_GEN_TYPE = PsseModDefaultTypes.DEFAULT_GENROU_TYPE; } - if (DEFAULT_GEN_TYPE.contains(".")) + { DEFAULT_GEN_PREFIX = DEFAULT_GEN_TYPE.substring(DEFAULT_GEN_TYPE.lastIndexOf(".") + 1); - else + } else + { DEFAULT_GEN_PREFIX = DEFAULT_GEN_TYPE; - } else { - if(this.sourceEngine instanceof EurostagEngine) { - this.DEFAULT_GEN_LOAD_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; } - else if(this.sourceEngine instanceof PsseEngine) { + } else + { + if(this.sourceEngine instanceof EurostagEngine) + { + this.DEFAULT_GEN_LOAD_TYPE = EurostagModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; + } else if(this.sourceEngine instanceof PsseEngine) + { this.DEFAULT_GEN_LOAD_TYPE = PsseModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; } - if (DEFAULT_GEN_LOAD_TYPE.contains(".")) + { DEFAULT_GEN_LOAD_PREFIX = DEFAULT_GEN_LOAD_TYPE.substring(DEFAULT_GEN_LOAD_TYPE.lastIndexOf(".") + 1); - else + } else + { DEFAULT_GEN_LOAD_PREFIX = DEFAULT_GEN_LOAD_TYPE; - + } DEFAULT_GEN_LOAD_PREFIX = DEFAULT_GEN_LOAD_PREFIX + "_GEN"; } - setParameters(isInyection, SNREF); } @Override public void createModelicaName(ModExportContext modContext, DDBManager ddbManager, SimulatorInst modelicaSim) { String modelicaName; - if (!isInyection) + if (!isInyection) + { modelicaName = DEFAULT_GEN_PREFIX + "_" + parseName(this.generator.getId()); - else + } else + { modelicaName = DEFAULT_GEN_LOAD_PREFIX + "_" + parseName(this.generator.getId()); - + } modelicaName = StaticData.PREF_GEN + WordUtils.uncapitalize(modelicaName.substring(0, 1)) + modelicaName.substring(1); - super.setModelicaName(modelicaName); - + Equipment eq = ddbManager.findEquipment(generator.getId()); ModelTemplate model = null; - if (eq != null) { - if(this.generator.getEnergySource().name().equals("WIND")) { + if (eq != null) + { + if(this.generator.getEnergySource().name().equals("WIND")) + { _log.info("Wind generator!"); } model = ddbManager.findModelTemplate(eq, modelicaSim); - if (model != null) { + if (model != null) + { String data = new String(model.getData(StaticData.MO)); super.setModelData(data); super.setModelicaType(model.getTypeName()); if (super.getModelicaType().contains(".")) + { DEFAULT_GEN_PREFIX = super.getModelicaType().substring(super.getModelicaType().lastIndexOf(".") + 1); - else + } else + { DEFAULT_GEN_PREFIX = super.getModelicaType(); + } modelicaName = DEFAULT_GEN_PREFIX + "_" + parseName(this.generator.getId()); modelicaName = StaticData.PREF_GEN + WordUtils.uncapitalize(modelicaName.substring(0, 1)) + modelicaName.substring(1); super.setModelicaName(modelicaName); - if(this.sourceEngine instanceof EurostagEngine) { + if(this.sourceEngine instanceof EurostagEngine) + { genParameters = getGeneratorParameters(ddbManager, modelicaSim, eq, model); - }else if (this.sourceEngine instanceof PsseEngine) { + } else if (this.sourceEngine instanceof PsseEngine) + { genParameters = getPsseGeneratorParameters(ddbManager, modelicaSim, eq, model); } - } else { + } else + { _log.warn("MODELICA Model Template does not exist in DDB"); } - } else { + } else + { if (!isInyection) + { _log.info("Generator " + this.getModelicaName() + " does not exist in DDB (Equipment)."); + } String ddbid; if (!isInyection) + { ddbid = StaticData.MTC_PREFIX_NAME + super.mtcMapper.get(DEFAULT_GEN_PREFIX); - else + } else + { ddbid = StaticData.MTC_PREFIX_NAME + super.mtcMapper.get(DEFAULT_GEN_LOAD_PREFIX); - + } ModelTemplateContainer mtc = ddbManager.findModelTemplateContainer(ddbid); String genType = null; - if (mtc == null) { + if (mtc == null) + { _log.warn("Source (Eurostag/PSSE) Model Template Container does not exist. Searching Default Modelica Model Template Container in DDB."); - if (!isInyection) { + if (!isInyection) + { genType = DEFAULT_GEN_TYPE; mtc = ddbManager.findModelTemplateContainer(StaticData.MTC_PREFIX_NAME + DEFAULT_GEN_TYPE); - } else { + } else + { genType = DEFAULT_GEN_LOAD_TYPE; mtc = ddbManager.findModelTemplateContainer(StaticData.MTC_PREFIX_NAME + DEFAULT_GEN_LOAD_TYPE); } super.setModelicaType(genType); } - - if (mtc != null) { - for (ModelTemplate mt : mtc.getModelTemplates()) { + if (mtc != null) + { + for (ModelTemplate mt : mtc.getModelTemplates()) + { if (mt.getTypeName().equalsIgnoreCase(genType)) + { model = mt; + } } - - if (model != null) { + if (model != null) + { String data = new String(model.getData("mo")); super.setModelData(data); List defSetParams = model.getDefaultParameters(); List defParameters = defSetParams.get(0).getParameters(); - for (Parameter param : defParameters) { + for (Parameter param : defParameters) + { if (param.getValue() != null) + { genParameters.add(param); - else + } else + { _log.warn("Paramater " + param.getName() + " doesn't have value."); + } } - } else { + } else + { super.setCorrect(false); _log.warn("MODELICA Model Template does not exist in DDB"); } - } else { + } else + { super.setCorrect(false); _log.error("MODELICA Model Template Container does not exist in DDB."); } @@ -165,68 +196,100 @@ public void createModelicaName(ModExportContext modContext, DDBManager ddbManage @Override public void createRecord(ModExportContext modContext, DDBManager ddbManager, SimulatorInst simulator) { - if(!Float.isNaN(this.busInfo.getBus().getV()) && this.busInfo.isConnected()) { - if (super.isCorrect()) { - if(!busInfo.isConnected()) this.addValue(StaticData.COMMENT); + if(!Float.isNaN(this.busInfo.getBus().getV()) && this.busInfo.isConnected()) + { + if (super.isCorrect()){ + if(!busInfo.isConnected()) + { + this.addValue(StaticData.COMMENT); + } if (super.getModelicaType() != null) + { this.addValue(super.getModelicaType() + StaticData.WHITE_SPACE); - else { + } else + { if (!isInyection) + { this.addValue(DEFAULT_GEN_TYPE + StaticData.WHITE_SPACE); - else + } else + { this.addValue(DEFAULT_GEN_LOAD_TYPE + StaticData.WHITE_SPACE); + } } - this.addValue(super.getModelicaName()); this.addValue(" ("); this.addValue(StaticData.NEW_LINE); - - //Tendra unos valores u otros si es generador o inyeccion - if ((iidmgenParameters != null) && (!iidmgenParameters.isEmpty())) { - for (int i = 0; i < iidmgenParameters.size() - 1; i++) { - if(!busInfo.isConnected()) this.addValue(StaticData.COMMENT); - if(iidmgenParameters.get(i).getName().equals(PsseFixedData.Mbase) && this.changedMbse) { + //If it is a generator or injection it will have different parameters + if ((iidmgenParameters != null) && (!iidmgenParameters.isEmpty())) + { + for (int i = 0; i < iidmgenParameters.size() - 1; i++) + { + if(!busInfo.isConnected()) + { + this.addValue(StaticData.COMMENT); + } + if(iidmgenParameters.get(i).getName().equals(PsseFixedData.Mbase) && this.changedMbse) + { this.addValue("\t " + iidmgenParameters.get(i).getName() + " = " + iidmgenParameters.get(i).getValue() + ", // Mbase has been changed: Mbase > SQRT(P^2 + Q^2)"); - } else { + } else + { this.addValue("\t " + iidmgenParameters.get(i).getName() + " = " + iidmgenParameters.get(i).getValue() + ", "); } this.addValue(StaticData.NEW_LINE); } - if(!busInfo.isConnected()) this.addValue(StaticData.COMMENT); - if (isInyection) { + if(!busInfo.isConnected()) + { + this.addValue(StaticData.COMMENT); + } + if (isInyection) + { this.addValue("\t " + iidmgenParameters.get(iidmgenParameters.size() - 1).getName() + " = " + iidmgenParameters.get(iidmgenParameters.size() - 1).getValue()); - } else if ((genParameters != null) && (!genParameters.isEmpty())) { - if(iidmgenParameters.get(iidmgenParameters.size() - 1).getName().equals(PsseFixedData.Mbase) && this.changedMbse) { + } else if ((genParameters != null) && (!genParameters.isEmpty())) + { + if(iidmgenParameters.get(iidmgenParameters.size() - 1).getName().equals(PsseFixedData.Mbase) && this.changedMbse) + { this.addValue("\t " + iidmgenParameters.get(iidmgenParameters.size() - 1).getName() + " = " + iidmgenParameters.get(iidmgenParameters.size() - 1).getValue() + ", // Mbase has been changed: Mbase > SQRT(P^2 + Q^2)"); - } else { + } else + { this.addValue("\t " + iidmgenParameters.get(iidmgenParameters.size() - 1).getName() + " = " + iidmgenParameters.get(iidmgenParameters.size() - 1).getValue() + ","); } } this.addValue(StaticData.NEW_LINE); } - - if (!isInyection) { - if ((genParameters != null) && (!genParameters.isEmpty())) { - for (int i = 0; i < genParameters.size() - 1; i++) { - if(!busInfo.isConnected()) this.addValue(StaticData.COMMENT); - + if (!isInyection) + { + if ((genParameters != null) && (!genParameters.isEmpty())) + { + for (int i = 0; i < genParameters.size() - 1; i++) + { + if(!busInfo.isConnected()) + { + this.addValue(StaticData.COMMENT); + } this.addValue("\t " + genParameters.get(i).getName() + " = " + genParameters.get(i).getValue() + ","); this.addValue(StaticData.NEW_LINE); } - if(!busInfo.isConnected()) this.addValue(StaticData.COMMENT); + if(!busInfo.isConnected()) + { + this.addValue(StaticData.COMMENT); + } this.addValue("\t " + genParameters.get(genParameters.size() - 1).getName() + " = " + genParameters.get(genParameters.size() - 1).getValue()); this.addValue(StaticData.NEW_LINE); } } - if(!this.busInfo.isConnected()) this.addValue(StaticData.COMMENT); + if(!this.busInfo.isConnected()) + { + his.addValue(StaticData.COMMENT); + } this.addValue("\t " + EurostagFixedData.ANNOT); - genParameters = null; iidmgenParameters = null; } else + { _log.error(this.getModelicaName() + " not added to grid model."); - } - else { + } + } else + { _log.warn("Generator " + this.getModelicaName() + " disconnected."); this.addValue(StaticData.COMMENT + " Generator " + this.getModelicaName() + " disconnected."); } @@ -236,39 +299,47 @@ public void createRecord(ModExportContext modContext, DDBManager ddbManager, Sim public String parseName(String name) { String parsedName = name.trim(); parsedName = parsedName.replaceAll("\\s", "_"); - parsedName = parsedName.replaceAll("\\.", "_"); - parsedName = parsedName.replaceAll("\\-", "_"); - parsedName = parsedName.replaceAll("/", "_"); - parsedName = parsedName.replaceAll("\\+", "_"); - return parsedName; + parsedName = parsedName.replaceAll("\\.", "_"); + parsedName = parsedName.replaceAll("\\-", "_"); + parsedName = parsedName.replaceAll("/", "_"); + parsedName = parsedName.replaceAll("\\+", "_"); + return parsedName; } private List getPsseGeneratorParameters(DDBManager ddbManager, SimulatorInst modelicaSim, Equipment eq, ModelTemplate modelTemplate) { List parametersList = new ArrayList(); - - if (this.paramsDictionary.containsKey(modelTemplate.getTypeName())) { + if (this.paramsDictionary.containsKey(modelTemplate.getTypeName())) + { Parameters parameters = ddbManager.findParameters(eq, modelicaSim); - if (parameters != null) { // El equipment tiene parametros para Modelica + if (parameters != null) //The equipment has parameters in Modelica + { parametersList.addAll(parameters.getParameters()); - } else { + } else + { parameters = ddbManager.findParameters(eq, sourceSim); - if (parameters != null) { // El equipment tiene parametros para el source engine + if (parameters != null) // The equipment has parameters in the source engine + { parametersList.addAll(parameters.getParameters()); - } else { - // Se cogen los parametros por defecto del modelo en MODELICA. + } else + { + // Getting parameters by default in MODELICA. List defSetParams = modelTemplate.getDefaultParameters(); - if ((defSetParams != null) && (!defSetParams.isEmpty())) { + if ((defSetParams != null) && (!defSetParams.isEmpty())) + { List defParameters = defSetParams.get(defSetParams.size()).getParameters(); genParameters.addAll(defParameters); - for(Parameter param : defParameters) { + for(Parameter param : defParameters) + { addParamInMap(param.getName(), param.getValue().toString()); } - } else { + } else + { _log.error("Modelica model " + modelTemplate.getTypeName() + " doesn't have default parameters."); } } } - } else { + } else + { _log.error("Parameters dictionary doesn't have parameters for model " + modelTemplate.getTypeName()); } return parametersList; @@ -278,19 +349,23 @@ private List getGeneratorParameters(DDBManager ddbManager, SimulatorI List parametersList = new ArrayList(); Map dictMap; IIDMParameter parameter; - - if (this.paramsDictionary.containsKey(modelTemplate.getTypeName())) { + if (this.paramsDictionary.containsKey(modelTemplate.getTypeName())) + { dictMap = this.paramsDictionary.get(modelTemplate.getTypeName()); Parameters parameters = ddbManager.findParameters(eq, modelicaSim); - if (parameters != null) { // El equipment tiene parametros para Modelica + if (parameters != null) // The equipment has parameters in Modelica. + { parametersList.addAll(parameters.getParameters()); - } else { + } else + { parameters = ddbManager.findParameters(eq, sourceSim); - if (parameters != null) { // El equipment tiene parametros para el source engine + if (parameters != null) // The equipment has parameters in the source engine + { List paramsList = parameters.getParameters(); Iterator> it = dictMap.entrySet().iterator(); String isTrafoIncluded = ddbManager.getStringParameter(eq, sourceSim, "transformer.included"); - if (isTrafoIncluded.equals(EurostagFixedData.TRAFO_INCLUDED)) { + if (isTrafoIncluded.equals(EurostagFixedData.TRAFO_INCLUDED)) + { trafoIncluded = true; parameter = new IIDMParameter(EurostagFixedData.TRAFOINCLUDED, "true"); this.iidmgenParameters.add(parameter); @@ -299,91 +374,107 @@ private List getGeneratorParameters(DDBManager ddbManager, SimulatorI parameter = new IIDMParameter(EurostagFixedData.V2, this.generator.getTerminal().getVoltageLevel().getNominalV()); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - } else { + } else + { parameter = new IIDMParameter(EurostagFixedData.TRAFOINCLUDED, "false"); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); } String isSaturated = ddbManager.getStringParameter(eq, sourceSim, "saturated"); - if(isSaturated.equals(EurostagFixedData.IS_SATURATED)) { + if(isSaturated.equals(EurostagFixedData.IS_SATURATED)) + { saturated = true; parameter = new IIDMParameter(EurostagFixedData.SATURATED, "true"); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - } - else { + } else + { saturated = false; parameter = new IIDMParameter(EurostagFixedData.SATURATED, "false"); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); } - - - while (it.hasNext()) { + while (it.hasNext()) + { String modParName = it.next().getKey(); String eurParName = dictMap.get(modParName); Parameter modParam = null; - if ((!trafoIncluded) && (EurostagFixedData.TRAFO_GEN_PARAMS.contains(modParName))) + { continue; + } if ((eurParName != null) && (eurParName.equals("transformer.included"))) + { continue; + } if ((eurParName != null) && (eurParName.equals("saturated"))) + { continue; - - for (Parameter par : paramsList) { - if (par.getName().equals(eurParName)) { + } + for (Parameter par : paramsList) + { + if (par.getName().equals(eurParName)) + { modParam = par; break; } } - - if (modParam != null) { - if (modParam.getValue() != null) { + if (modParam != null) + { + if (modParam.getValue() != null) + { modParam.setName(modParName); - - if(!saturated && EurostagFixedData.SATURATED_MACHINE.contains(modParName)) { + if(!saturated && EurostagFixedData.SATURATED_MACHINE.contains(modParName)) + { parameter = new IIDMParameter(modParam.getName(), 0); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - } - else { + } else + { parametersList.add(modParam); addParamInMap(modParam.getName(), modParam.getValue().toString()); } - } else { - //TODO Si el valor es null por ahora se pone a 0 + } else + { + //If value is null for now we put a 0 parameter = new IIDMParameter(modParName, 0); this.iidmgenParameters.add(parameter); addParamInMap(modParName, parameter.getValue().toString()); } - } else { + } else + { // _log.error("Modelica parameter " + modParName + " doesn't exists in DDB."); } } - } else { - // Se cogen los parametros por defecto del modelo en MODELICA. + } else + { + //Getting the parameters by default in Modelica. List defSetParams = modelTemplate.getDefaultParameters(); - if ((defSetParams != null) && (!defSetParams.isEmpty())) { + if ((defSetParams != null) && (!defSetParams.isEmpty())) + { List defParameters = defSetParams.get(defSetParams.size()).getParameters(); genParameters.addAll(defParameters); - for(Parameter param : defParameters) { + for(Parameter param : defParameters) + { addParamInMap(param.getName(), param.getValue().toString()); } - } else { + } else + { _log.error("Modelica model " + modelTemplate.getTypeName() + " doesn't have default parameters."); } } } - } else { + } else + { _log.error("Parameters dictionary doesn't have parameters for model " + modelTemplate.getTypeName()); } return parametersList; } private void addParamInMap(String name, String value) { - if(!this.genParamsMap.containsKey(name.toUpperCase())) { + if(!this.genParamsMap.containsKey(name.toUpperCase())) + { this.genParamsMap.put(name.toUpperCase(), value); } } @@ -391,19 +482,24 @@ private void addParamInMap(String name, String value) { public void setParameters(boolean isInyection, float SNREF) { IIDMParameter parameter; iidmgenParameters = new ArrayList(); - float voltage = 0; float angle = 0; - if (generator.getTerminal().getBusView().getBus() != null) { + if (generator.getTerminal().getBusView().getBus() != null) + { if (!Float.isNaN(generator.getTerminal().getBusView().getBus().getV())) + { voltage = generator.getTerminal().getBusView().getBus().getV(); + } if (!Float.isNaN(generator.getTerminal().getBusView().getBus().getAngle())) + { angle = generator.getTerminal().getBusView().getBus().getAngle(); + } } - - if(this.sourceEngine instanceof EurostagEngine) { - if (!isInyection) { + if(this.sourceEngine instanceof EurostagEngine) + { + if (!isInyection) + { parameter = new IIDMParameter(StaticData.SNREF, StaticData.SNREF); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); @@ -421,8 +517,8 @@ public void setParameters(boolean isInyection, float SNREF) { parameter = new IIDMParameter(EurostagFixedData.UI0, ui0); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - - } else { + } else + { parameter = new IIDMParameter(EurostagFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); @@ -431,8 +527,7 @@ public void setParameters(boolean isInyection, float SNREF) { this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec - //A partir de ahora le anadimos el - + //Before 2015-05-28 the sign of pelec and qelec was not changed but now we change the sign. float pelec = -this.generator.getTerminal().getP()/SNREF; parameter = new IIDMParameter(EurostagFixedData.P, pelec); this.iidmgenParameters.add(parameter); @@ -442,91 +537,42 @@ public void setParameters(boolean isInyection, float SNREF) { parameter = new IIDMParameter(EurostagFixedData.Q, qelec); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - -// float modulo = voltage / generator.getTerminal().getVoltageLevel().getNominalV(); -// float angulo = (float) (angle * Math.PI / 180); - -// parameter = new IIDMParameter(EurostagFixedData.VO_REAL, modulo * Math.cos(angulo)); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// parameter = new IIDMParameter(EurostagFixedData.VO_IMG, modulo * Math.sin(angulo)); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// parameter = new IIDMParameter(EurostagFixedData.P, (float) -this.generator.getTerminal().getP() / SNREF); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// parameter = new IIDMParameter(EurostagFixedData.Q, (float) -this.generator.getTerminal().getQ() / SNREF); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); } - } else if (this.sourceEngine instanceof PsseEngine) { - if(!isInyection ) { -// if(this.generator.getEnergySource().name().equalsIgnoreCase("WIND")) { -// parameter = new IIDMParameter(PsseFixedData.ETERM, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// parameter = new IIDMParameter(PsseFixedData.ANGLEV0, angle); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec -// //A partir de ahora le anadimos el - -// float pelec = -this.generator.getTerminal().getP(); -// parameter = new IIDMParameter(PsseFixedData.PELEC, pelec); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// float qelec = -this.generator.getTerminal().getQ(); -// parameter = new IIDMParameter(PsseFixedData.QELEC, qelec); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// -// double mbase = this.generator.getRatedS(); -// double refValue = Math.sqrt(Math.pow(pelec, 2) + Math.pow(qelec, 2)); -// if(mbase <= refValue) { -// mbase = 1.1*refValue; -// changedMbse = true; -// } -// parameter = new IIDMParameter(PsseFixedData.Mbase, mbase); -// this.iidmgenParameters.add(parameter); -// addParamInMap(parameter.getName(), parameter.getValue().toString()); -// } else { - parameter = new IIDMParameter(PsseFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); - this.iidmgenParameters.add(parameter); - addParamInMap(parameter.getName(), parameter.getValue().toString()); - - parameter = new IIDMParameter(PsseFixedData.ANGLE_0, angle); - this.iidmgenParameters.add(parameter); - addParamInMap(parameter.getName(), parameter.getValue().toString()); - - //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec - //A partir de ahora le anadimos el - - float pelec = -this.generator.getTerminal().getP(); - parameter = new IIDMParameter(PsseFixedData.P_0, pelec); - this.iidmgenParameters.add(parameter); - addParamInMap(parameter.getName(), parameter.getValue().toString()); - - float qelec = -this.generator.getTerminal().getQ(); - parameter = new IIDMParameter(PsseFixedData.Q_0, qelec); - this.iidmgenParameters.add(parameter); - addParamInMap(parameter.getName(), parameter.getValue().toString()); + } else if (this.sourceEngine instanceof PsseEngine) + { + if(!isInyection ) + { + parameter = new IIDMParameter(PsseFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + + parameter = new IIDMParameter(PsseFixedData.ANGLE_0, angle); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + + //Before 2015-05-28 the sign of pelec and qelec was not changed but now we change the sign. + float pelec = -this.generator.getTerminal().getP(); + parameter = new IIDMParameter(PsseFixedData.P_0, pelec); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + + float qelec = -this.generator.getTerminal().getQ(); + parameter = new IIDMParameter(PsseFixedData.Q_0, qelec); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); - double mbase = this.generator.getRatedS(); - double refValue = Math.sqrt(Math.pow(pelec, 2) + Math.pow(qelec, 2)); - if(mbase <= refValue) { - mbase = 1.1*refValue; - changedMbse = true; - } - parameter = new IIDMParameter(PsseFixedData.M_b, mbase); - this.iidmgenParameters.add(parameter); - addParamInMap(parameter.getName(), parameter.getValue().toString()); -// } - } - else { + double mbase = this.generator.getRatedS(); + double refValue = Math.sqrt(Math.pow(pelec, 2) + Math.pow(qelec, 2)); + if(mbase <= refValue) + { + mbase = 1.1*refValue; + changedMbse = true; + } + parameter = new IIDMParameter(PsseFixedData.M_b, mbase); + this.iidmgenParameters.add(parameter); + addParamInMap(parameter.getName(), parameter.getValue().toString()); + } else + { parameter = new IIDMParameter(PsseFixedData.V_0, voltage/generator.getTerminal().getVoltageLevel().getNominalV()); this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); @@ -535,8 +581,7 @@ public void setParameters(boolean isInyection, float SNREF) { this.iidmgenParameters.add(parameter); addParamInMap(parameter.getName(), parameter.getValue().toString()); - //SMF 2015-05-28 PREVIOUS: no se cambiaba el signo a pelec y qelec -// A partir de ahora le anadimos el - + //Before 2015-05-28 the sign of pelec and qelec was not changed but now we change the sign. float pelec = -this.generator.getTerminal().getP(); parameter = new IIDMParameter(PsseFixedData.P_0, pelec); this.iidmgenParameters.add(parameter); @@ -558,8 +603,6 @@ public List getIidmgenParameters() { return iidmgenParameters; } - - public Generator getGenerator() { return generator; } @@ -582,28 +625,23 @@ public void setChangedMbse(boolean changedMbse) { } protected Generator generator; - private ConnectBusInfo busInfo; - private String DEFAULT_GEN_TYPE; // = EurostagModDefaultTypes.DEFAULT_GEN_TYPE; - private String DEFAULT_GEN_LOAD_TYPE; // = PsseModDefaultTypes.DEFAULT_GEN_LOAD_TYPE; - + private String DEFAULT_GEN_TYPE; + private String DEFAULT_GEN_LOAD_TYPE; private String DEFAULT_GEN_PREFIX; private String DEFAULT_GEN_LOAD_PREFIX; private List genParameters = new ArrayList(); private List iidmgenParameters = new ArrayList(); private Map genParamsMap = new HashMap(); - private Map> paramsDictionary; public boolean isInyection; private SimulatorInst sourceSim; - private boolean trafoIncluded = false; private boolean saturated = false; private boolean changedMbse = false; - private SourceEngine sourceEngine; private static final Logger _log = LoggerFactory.getLogger(GeneratorRecord.class); From c656f282fb5f45781dc1fafae65eb6d62449f813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Fri, 22 Jul 2016 14:07:54 +0200 Subject: [PATCH 16/20] Remove hard-coded pathes Remove hard-coded pathes --- .../src/test/java/itesla/test/iTesla.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java index 69cf69aa..dcc233eb 100644 --- a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java +++ b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java @@ -12,34 +12,25 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - +import org.junit.Test; public class iTesla { private static Converter converter; private static Converter converter_init; - private static final String pathFRM; - private static final String pathOUT; - public static void main(String[] args) throws IOException { - pathFRM = args[1]; - pathOUT = args[2]; + @Test + public void test() throws IOException { + String pathFRM = getClass().getResource("/edftur1c.frm").toString(); + String pathOUT = getClass().getResource("/output").toString(); converter = new Converter(pathFRM, pathOUT, false); converter_init = new Converter(pathFRM, pathOUT, true); try { converter.convert2MO(); - //converter.printLinkNames(); converter_init.convert2MO(); } catch (IOException e) { e.printStackTrace(); } - /* - * Function that returns all the sets of parameters in a hashmap. - * The key of this hashmap is the reference id of the parameters set. - * The value of this hashmap is another hashmap wih the name of the parameter and its value - */ - HashMap> allParameterSets = converter.parData.getParameters(); - /* * Function that returns a specific set of parameters given by its reference id */ From bd69af8133cd9212b8ef7372257711ec36656b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Mon, 25 Jul 2016 09:52:28 +0200 Subject: [PATCH 17/20] Update pom Add missing dependency --- EU2Mod_MB/pom.xml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/EU2Mod_MB/pom.xml b/EU2Mod_MB/pom.xml index 24bb8089..426b67b5 100644 --- a/EU2Mod_MB/pom.xml +++ b/EU2Mod_MB/pom.xml @@ -18,5 +18,12 @@ EU2Mod_MB - + + + + junit + junit + test + + From db5f73ba718fb1f57e8390131b560763f85b97a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Mon, 25 Jul 2016 10:14:50 +0200 Subject: [PATCH 18/20] Solve error Solve missing symbol error. --- .../itesla_project/modelica_export/records/GeneratorRecord.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java index 29811ae4..0d9cce39 100644 --- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java +++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/records/GeneratorRecord.java @@ -279,7 +279,7 @@ public void createRecord(ModExportContext modContext, DDBManager ddbManager, Sim } if(!this.busInfo.isConnected()) { - his.addValue(StaticData.COMMENT); + this.addValue(StaticData.COMMENT); } this.addValue("\t " + EurostagFixedData.ANNOT); genParameters = null; From cb73cb4f2793bf1dead4e931123bf79c07747892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Mon, 22 Aug 2016 16:14:08 +0200 Subject: [PATCH 19/20] Fix name error Fix name error: delete a whitespace --- EU2Mod_MB/src/main/resources/CorrespondenceTable.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv index 4fd07f70..6c37c32f 100644 --- a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv +++ b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv @@ -43,7 +43,7 @@ EU num;Eurostag Name;nInputPins;Modelica model;param 1;param 2;param 3;param 4;p 42; COSINE;1;Modelica.Blocks.Math.Cos;;;;;;;;; 43; SINE;1;Modelica.Blocks.Math.Sin;;;;;;;;; 44; TANGENT;;;;;;;;;;; -45; ARC –TANGENT;2;iPSL.NonElectrical.Eurostag.Math.ImArcTangent;;;;;;;offset;; +45; ARC–TANGENT;2;iPSL.NonElectrical.Eurostag.Math.ImArcTangent;;;;;;;offset;; 46; ARC-COSINE;;;;;;;;;;; 47; ARC-SINE;;;;;;;;;;; 48; COUNTER;;;;;;;;;;; From 2f1c6bbeff1dd16f2dbbb80b215d1f1ada132d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aplicaciones=20en=20Inform=C3=A1tica=20Avanzada?= Date: Mon, 22 Aug 2016 16:15:33 +0200 Subject: [PATCH 20/20] Fix name error Fix nam error: change a dash --- EU2Mod_MB/src/main/resources/CorrespondenceTable.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv index 6c37c32f..7890171c 100644 --- a/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv +++ b/EU2Mod_MB/src/main/resources/CorrespondenceTable.csv @@ -43,7 +43,7 @@ EU num;Eurostag Name;nInputPins;Modelica model;param 1;param 2;param 3;param 4;p 42; COSINE;1;Modelica.Blocks.Math.Cos;;;;;;;;; 43; SINE;1;Modelica.Blocks.Math.Sin;;;;;;;;; 44; TANGENT;;;;;;;;;;; -45; ARC–TANGENT;2;iPSL.NonElectrical.Eurostag.Math.ImArcTangent;;;;;;;offset;; +45; ARC-TANGENT;2;iPSL.NonElectrical.Eurostag.Math.ImArcTangent;;;;;;;offset;; 46; ARC-COSINE;;;;;;;;;;; 47; ARC-SINE;;;;;;;;;;; 48; COUNTER;;;;;;;;;;;