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
+
+
diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Block.java b/EU2Mod_MB/src/main/java/itesla/converter/Block.java
index 0a30cf76..11f298d9 100644
--- a/EU2Mod_MB/src/main/java/itesla/converter/Block.java
+++ b/EU2Mod_MB/src/main/java/itesla/converter/Block.java
@@ -12,6 +12,7 @@
/**
* Single block of the Eurostag macroblock
* @author Marc Sabate
+ * @author Raul Viruez
*/
public class Block {
public String[] param = new String[8];
diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Converter.java b/EU2Mod_MB/src/main/java/itesla/converter/Converter.java
index 24340323..6d66effc 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;
@@ -21,7 +19,9 @@
import java.util.List;
/**
+ * Class to convert macroblocks from Eurostag to Modelica
* @author Marc Sabate
+ * @author Raul Viruez
*/
public class Converter {
public String pathfrm;
@@ -33,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;
@@ -55,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
@@ -90,7 +85,6 @@ private ModelicaModel EUparser() throws IOException{
}
Element elt = new Element(CTidEu, nameEu, nameModelica, param, nInputPins);
CT.put(CTidEu, elt);
-
}
bufferCT.close();
@@ -110,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();
@@ -118,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];
@@ -146,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) {
@@ -169,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;
}
-
-
-
}
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 9eaf22db..724f5466 100644
--- a/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java
+++ b/EU2Mod_MB/src/main/java/itesla/converter/EU_MBparser.java
@@ -14,11 +14,11 @@
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;
@@ -29,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();
@@ -85,8 +80,6 @@ private void parser() throws IOException {
GraphicalNumber = new Integer[nBlocks];
idEu = new Integer[nBlocks];
-
-
//parameters
int rowIni = 3;
int nDatosPerBlock = 8;
@@ -147,14 +140,8 @@ private void parser() throws IOException {
}
}
}
-
-
-
}
-
-
-
public String[][] getParamEU() {
return paramEu;
}
@@ -203,7 +190,4 @@ static private String[][] Extract(List frmFile, Integer ini, Integer r
}
return output;
}
-
-
-
}
diff --git a/EU2Mod_MB/src/main/java/itesla/converter/Element.java b/EU2Mod_MB/src/main/java/itesla/converter/Element.java
index c64eabf6..afcecfa4 100644
--- a/EU2Mod_MB/src/main/java/itesla/converter/Element.java
+++ b/EU2Mod_MB/src/main/java/itesla/converter/Element.java
@@ -9,15 +9,16 @@
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
- * 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;
@@ -37,5 +38,4 @@ public Element(int idEu, String nameEu, String nameModelica, List param,
this.param = param;
this.nInputPins = nInputPins;
}
-
}
diff --git a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java
index 3fc508a8..28f18e7c 100644
--- a/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java
+++ b/EU2Mod_MB/src/main/java/itesla/converter/ModelicaModel.java
@@ -8,19 +8,22 @@
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;
/**
+ * Class that represents 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;
@@ -34,31 +37,29 @@ 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;
- //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 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;).
+ * 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,7 +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();
- //PNdeclared = false;
+ this.LinksBlocksId1 = new int[Blocks.length][7];
Heading();
paramDeclaration();
@@ -96,44 +97,25 @@ 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();
End();
-
}
-
-
public void Heading() {
File EuFile = new File(pathEu);
String name = EuFile.getName().split("\\.")[0];
String output = "model " + name;
outputHeading=output;
- //return output;
}
public void End() {
@@ -149,99 +131,135 @@ 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;
}
- namePin = Blocks[i].output.replaceAll("([\\W|[_]])+", "");
- if (!Blocks[i].param[7].equals("?")) {
- if (Blocks[i].param[7].contains("_") || Blocks[i].param[7].contains("^")) {
- nameInitPin = Blocks[i].param[7].replaceAll("([\\W|[_]])+", "");
+
+ if (Blocks[i].output.contains("@"))
+ {
+ namePin = "At_"+Blocks[i].output.replaceAll("([\\W|[_]])+", "");
+
+ } 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("@"))
+ {
+ nameInitPin = "At_" +Blocks[i].param[7].replaceAll("([\\W|[_]])+", "");
+ } else
+ {
+ nameInitPin = Blocks[i].param[7].replaceAll("([\\W|[_]])+", "");
+ }
}
}
- if (!NamedLinks.contains(namePin)) {
+ if (!NamedLinks.contains(namePin))
+ {
NamedLinks.add(namePin);
-
- //outputNegativeImPin.add(" PowerSystems.Connectors.ImPin pin_" + namePin +"; //" + namePin);
- if (!nameInitPin.equals("")) {
+ if (!nameInitPin.equals(""))
+ {
interfaceVariables.put(namePin, nameInitPin);
- outputNegativeImPin.add(" PowerSystems.Connectors.ImPin pin_" + namePin +"; //" + nameInitPin);
- } else if (isInitValue) {
- outputNegativeImPin.add(" PowerSystems.Connectors.ImPin pin_" + namePin +"; //" + "isInitValue");
- } else {
- outputNegativeImPin.add(" PowerSystems.Connectors.ImPin pin_" + namePin +";");
+ outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +"; //" + nameInitPin);
+ } else if (isInitValue)
+ {
+ outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +"; //" + "isInitValue");
+ } else
+ {
+ outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +";");
}
- } else if (!nameInitPin.equals("")){
+ } else
+ {
interfaceVariables.put(namePin, nameInitPin);
- outputNegativeImPin.remove(" PowerSystems.Connectors.ImPin pin_" + namePin +";");
- outputPositiveImPin.remove(" PowerSystems.Connectors.ImPin pin_" + namePin +";");
- outputNegativeImPin.add(" PowerSystems.Connectors.ImPin pin_" + namePin +"; //" + nameInitPin);
-
+ outputNegativeImPin.remove(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +";");
+ outputPositiveImPin.remove(" Modelica.Blocks.Interfaces.RealInput pin_" + namePin + ";");
+ outputNegativeImPin.add(" Modelica.Blocks.Interfaces.RealOutput pin_" + namePin +";");
}
}
}
@@ -250,176 +268,343 @@ 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(Blocks[i].idEu == 22)
+ {
+ modelDeclaration = " " + model.pathModelica + " " + "Min" + "_" + Blocks[i].GraphicalNumber.toString();
+ } else if(Blocks[i].idEu == 23)
+ {
+ modelDeclaration = " " + model.pathModelica + " " + "Max" + "_" + Blocks[i].GraphicalNumber.toString();
+ } else
+ {
+ modelDeclaration = " " + model.pathModelica + " " + model.nameModelica + "_" + Blocks[i].GraphicalNumber.toString();
+ }
+ if (model.param.size()>0)
+ {
modelParameters = " (";
- } else {modelParameters = ";";}
+ } else
+ {
+ modelParameters = ";";
+ }
first = true;
previous = true;
- for (int j=0; j0) {
+ if (model.param.size()>0)
+ {
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;
- 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("/"))){
+ for (int i=0; i1)
+ {
model = CT.get(Blocks[i].idEu);
- ConnLeft = "pin_"+Blocks[i].output.replaceAll("([\\W|[_]])+", "");
- if (model.idEu.equals(27)) {
+ 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)) {
+ } 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 {
- ConnRight = model.nameModelica + "_" + Blocks[i].count.toString() + ".n1";
+ } 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].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..7890171c 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..dcc233eb 100644
--- a/EU2Mod_MB/src/test/java/itesla/test/iTesla.java
+++ b/EU2Mod_MB/src/test/java/itesla/test/iTesla.java
@@ -6,83 +6,56 @@
*/
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;
+import org.junit.Test;
-/**
- * @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\\";
- public static void main(String[] args) throws IOException {
+ @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) {
- // TODO Auto-generated catch block
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
*/
- Integer idSet = 2;
+ Integer idSet = 1;
HashMap nthParameterSet = converter.parData.getSetParameters(idSet);
for (Map.Entry entry : nthParameterSet.entrySet()) {
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");
}
-
}
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}
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..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
@@ -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;
@@ -33,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
@@ -51,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.getStandardLibrary();
}
- } catch (Exception e) {
+ } catch (Exception e)
+ {
_log.error(e.getMessage(), e);
}
}
/**
- *
* @param network
* @param ddbManager
* @param paramsDictionary
@@ -96,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);
@@ -135,7 +129,6 @@ public void WriteMo(String moFile, String modelicaVersion) throws IOException {
/**
* Convert IIDM Data to Modelica data.
- *
* @param writerMo
* @param modelicaVersion
* @throws IOException
@@ -146,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;
}
@@ -165,8 +161,9 @@ 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);
+ if (this._sourceEngine instanceof EurostagEngine)
+ {
+ OMEGAREF_Var = new GlobalVariable(EurostagModDefaultTypes.OUTPUT_PIN_TYPE, EurostagFixedData.OMEGAREF_NAME);
globalVars.add(OMEGAREF_Var);
}
@@ -187,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);
@@ -217,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
*/
@@ -231,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");
@@ -243,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 + ";");
@@ -253,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);
}
@@ -312,7 +314,6 @@ private void DoConvertion(Writer writerMo, String modelicaVersion) throws IOExce
*/
exportConnectDanglingLoads(writerMo, modContext, modelicaModelsList, modelicaSim);
-
/**
* Export Connect Shunts
*/
@@ -342,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 + " + ");
@@ -354,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
@@ -371,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);
@@ -390,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
@@ -398,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);
@@ -408,8 +409,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);
-// FixedInjectionRecord fixInjRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle,modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine);
+ LoadRecord loadRecord = ModelConverter.getModelicaRecord(loadId, p0, q0, busVoltage, busAngle, modContext, _ddbManager, modelicaSim, SNREF, this._sourceEngine);
this.danglingLoads.add(loadRecord);
this.addRecord(loadRecord, writerMo, modContext, _ddbManager, modelicaSim);
}
@@ -418,7 +418,6 @@ private void exportDanglingLoads(Writer writerMo, ModExportContext modContext, L
/**
* Export IIDM Dangling lines to Modelica lines
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -426,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);
@@ -449,7 +451,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);
@@ -461,7 +463,6 @@ private void exportDanglingLines(Writer writerMo, ModExportContext modContext, L
/**
* Export IIDM buses to Modelica buses
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -469,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);
}
@@ -485,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);
@@ -521,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);
@@ -551,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);
@@ -566,7 +576,6 @@ private void exportTransformers(Writer writerMo, ModExportContext modContext, Li
/**
* Export IIDM loads to Modelica loads
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -574,16 +583,17 @@ 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
- LoadRecord loadRecord = ModelConverter.getModelicaRecord(load, busInfo, modContext, _ddbManager, modelicaSim, SNREF);
+ // 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);
}
loadsList = null;
@@ -592,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);
@@ -615,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);
@@ -648,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);
@@ -677,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);
@@ -761,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);
@@ -772,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);
@@ -790,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);
@@ -841,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);
@@ -852,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);
@@ -870,117 +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
+ {
+ initialization.init();
+ } 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()) {
-
}
}
}
@@ -988,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;
}
}
@@ -1010,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;
}
@@ -1031,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);
+ }
}
}
}
@@ -1046,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);
}
@@ -1095,7 +1152,6 @@ private void exportConnectRegulators(Writer writerMo, ModExportContext modContex
/**
* Export IIDM lines connect to Modelica lines connect
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -1103,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);
}
@@ -1133,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
@@ -1141,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
@@ -1173,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);
}
@@ -1194,7 +1257,6 @@ private void exportConnectCouplingDevices(Writer writerMo, ModExportContext modC
/**
* Export IIDM loads connect to Modelica loads connect
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -1202,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);
}
@@ -1221,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
@@ -1229,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);
}
@@ -1246,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);
}
@@ -1265,7 +1335,6 @@ private void exportConnectCapacitors(Writer writerMo, ModExportContext modContex
/**
* Export IIDM generators connect to Modelica generators connect
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -1273,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);
}
@@ -1310,7 +1387,6 @@ private void exportConnectGenerators(Writer writerMo, ModExportContext modContex
/**
* Export IIDM transformers connect to Modelica transformers connect
- *
* @param writerMo
* @param modContext
* @param modelicaModelsList
@@ -1318,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);
}
@@ -1365,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;
}
@@ -1399,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;
}
@@ -1407,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;
@@ -1476,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);
}
@@ -1552,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.");
}
@@ -1565,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;
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 105e1a03..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,6 +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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -114,6 +115,17 @@ public void export(Path outputParentDir) {
ModelicaExport export = null;
if(this._sourceEngine instanceof EurostagEngine) {
+ //To have the same representation/results between HELM and PSS/E the sign of P and Q in generators have been changed
+ //Moreover, for Eurostag the sign must be the same in IIDM and HELM and as it has been changed in the HELM integration
+ //i should be changed after this in the IIDM
+ for(Generator gen : _network.getGenerators()) {
+ float P = -gen.getTerminal().getP();
+ float Q = -gen.getTerminal().getQ();
+
+ gen.getTerminal().setP(P);
+ gen.getTerminal().setQ(Q);
+ }
+
export = new ModelicaExport(_network, ddbmanager, paramsDictionary, this._modelicaLibPath.toFile(), _sourceEngine);
}
else if(this._sourceEngine instanceof PsseEngine) {
@@ -135,6 +147,7 @@ else if(this._sourceEngine instanceof PsseEngine) {
_log.debug("ModelicaMainExporter. Duration: " + (duration));
_log.info("Conversion finished.");
+ System.exit(0);
} catch (Exception e) {
_log.error(e.getMessage(), e);
}
@@ -143,9 +156,11 @@ 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);
LoadFlowResult lfResults = loadflow.run();
if(!lfResults.isOk()) {
+ System.out.println("LF has not been successfuly completed.");
_log.info("Loadflow finished. isOk == false");
System.exit(-1);
}
diff --git a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/GeneratorInitData.java b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/GeneratorInitData.java
index 1578e4c9..eeb37f7a 100644
--- a/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/GeneratorInitData.java
+++ b/modelica-export/src/main/java/eu/itesla_project/modelica_export/initialization/GeneratorInitData.java
@@ -61,6 +61,7 @@ private Map 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..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
@@ -19,15 +19,16 @@
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;
/**
+ * 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;
@@ -35,14 +36,14 @@ public InitializationRunner(JavaOMCAPI omc, File filename, List> regInitVarsFromGen;
Map> regInitVarsFromReg;
Map>> regInitVarsFromOtherRegs;
Map> regInitOtherVars;
omc.loadFile(this.fileName.getAbsolutePath());
- omc.getClassNamesList().toString();
for(InitializationData initData : initializationDataList) {
this.genInitValues = new HashMap();
this.regInitValues = new HashMap>();
@@ -57,7 +58,8 @@ public void initializer() {
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(","));
@@ -69,6 +71,7 @@ public void initializer() {
*/
long init = System.currentTimeMillis();
omc.simulate(initData.getModelName(), "0", "1", "dassl");
+ omc.getErrorString();
_log.debug("Inicialización (ms) = " + (System.currentTimeMillis()-init));
/**
@@ -76,236 +79,141 @@ 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);
}
}
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 + " is not 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);
}
}
@@ -320,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
+}
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..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
@@ -37,111 +37,156 @@ public GeneratorRecord(Generator generator, ConnectBusInfo busInfo, boolean isIn
this.busInfo = busInfo;
this.sourceEngine = sourceEngine;
-
-
- if (!isInyection) {
+ 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
+ } else
+ {
DEFAULT_GEN_PREFIX = DEFAULT_GEN_TYPE;
- } else {
+ }
+ } 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.");
}
@@ -151,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())
+ {
+ this.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.");
}
@@ -222,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;
@@ -264,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);
@@ -285,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);
}
}
@@ -377,75 +482,97 @@ 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());
- } 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());
+ } 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.VO_IMG, modulo * Math.sin(angulo));
+ parameter = new IIDMParameter(EurostagFixedData.ANGLE_0, angle);
this.iidmgenParameters.add(parameter);
addParamInMap(parameter.getName(), parameter.getValue().toString());
- parameter = new IIDMParameter(EurostagFixedData.P, (float) -this.generator.getTerminal().getP() / SNREF);
+ //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);
addParamInMap(parameter.getName(), parameter.getValue().toString());
- parameter = new IIDMParameter(EurostagFixedData.Q, (float) -this.generator.getTerminal().getQ() / SNREF);
+ float qelec = -this.generator.getTerminal().getQ()/SNREF;
+ parameter = new IIDMParameter(EurostagFixedData.Q, 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());
-
- //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());
@@ -454,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);
@@ -477,8 +603,6 @@ public List getIidmgenParameters() {
return iidmgenParameters;
}
-
-
public Generator getGenerator() {
return generator;
}
@@ -501,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);
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 + ")");
+ }
+
}