Salome HOME
legere difference ds VARIABLES_TO_BE...
[tools/eficas.git] / ProcessOutputs_Eficas / ExtractGeneratorLoadLineandTransfoDico.py
1 import os\r
2 import sys\r
3 import numpy as np\r
4 import copy\r
5 \r
6 #import Storage\r
7 \r
8 \r
9 def getNominalkV(NetworkFile):\r
10     print "begin getNominalkV for ", NetworkFile\r
11 \r
12     print "version en dur"\r
13     BusList=(1,2,3,4,6)\r
14     LinesList=(7,8,9,10)\r
15     TransfosList=('Transfos_A', 'Transfos_B', 'Transfos_C', 'Transfos_D')\r
16     return BusList, LinesList, TransfosList\r
17 \r
18     import psspy\r
19     import redirect\r
20 \r
21     psspy.psseinit(80000)\r
22     redirect.psse2py()\r
23     psspy.progress_output(6)\r
24 \r
25     psspy.case(NetworkFile)\r
26     print "before buses"\r
27     # Buses\r
28 \r
29     sid = -1\r
30     flag = 2\r
31     ierr, ret = psspy.abusreal(sid, flag, ['BASE'])\r
32     Storage.BusBase = ret[0]\r
33 \r
34     ierr, carray = psspy.abuschar(sid, flag, ['NAME'])\r
35     Storage.BusBaseList = {}\r
36     for i in range(len(carray[0])):\r
37         Storage.BusBaseList[carray[0][i]] = ret[0][i]\r
38 \r
39     BusList = []\r
40     for item in Storage.BusBase:\r
41         if item not in BusList:\r
42             BusList.append(item)\r
43     BusList = sorted(BusList)\r
44 \r
45     print "after buses"\r
46 \r
47     # Lines\r
48 \r
49     owner = 1\r
50     ties = 1\r
51     flag = 2\r
52     entry = 1\r
53     string = ['FROMNAME', 'TONAME']\r
54     ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string)\r
55 \r
56     for i in range(len(carray[0])):\r
57         nom = Storage.BusBaseList[carray[0][i]]\r
58         name = carray[0][i] + '-' + carray[1][i]\r
59         Storage.LinesBaseList[name] = nom\r
60         Storage.LinesBase.append(nom)\r
61 \r
62     LinesList = []\r
63     for item in Storage.LinesBase:\r
64         if item not in LinesList:\r
65             LinesList.append(item)\r
66     LinesList = sorted(LinesList)\r
67 \r
68     print "after lines"\r
69 \r
70     # Transfos\r
71 \r
72     owner = 1\r
73     ties = 1\r
74     flag = 6\r
75     entry = 1\r
76     string = ['FROMNAME', 'TONAME']\r
77     ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string)\r
78 \r
79     for i in range(len(carray[0])):\r
80         nom1 = Storage.BusBaseList[carray[0][i]]\r
81         nom2 = Storage.BusBaseList[carray[1][i]]\r
82         name = carray[0][i] + '-' + carray[1][i]\r
83         Storage.TransfoBaseList[name] = [nom1, nom2]\r
84         Storage.TransfoBase.append([nom1, nom2])\r
85 \r
86     TransfosList = []\r
87     for item in Storage.TransfoBase:\r
88         string = str(item[0]) + ' - ' + str(item[1])\r
89         if string not in TransfosList:\r
90             TransfosList.append(string)\r
91     TransfosList = sorted(TransfosList)\r
92 \r
93     print "after transfos"\r
94 \r
95     # Generators\r
96 \r
97     sid = -1 #all buses\r
98     flag = 1 #all in service loads/generators (4 all loads/generators)\r
99 \r
100     string = ['NUMBER']\r
101     ierr,iarray = psspy.amachint(sid,flag,string)\r
102 \r
103     string = ['NAME','ID']\r
104     ierr,carray = psspy.amachchar(sid,flag,string)\r
105 \r
106     for i in range(len(iarray[0])):\r
107         idname = "GR" + carray[1][i]\r
108         machinename = carray[0][i].strip()+ "__" + idname\r
109         machinename = machinename.replace(" ","_")\r
110         machinename = machinename.replace("-","_")\r
111         machinename = machinename.replace(".","_")\r
112         machinename = machinename.replace("&","and")\r
113         try:\r
114             int(machinename[0])\r
115             machinename = "_" + machinename\r
116         except:\r
117             pass\r
118         Storage.GenBaseList[machinename] = iarray[0][i]\r
119 \r
120     return BusList, LinesList, TransfosList\r
121 \r
122 #PN --> inutiles\r
123 #def getBusNominalkV(NetworkFile):\r
124 #    import psspy\r
125 #    import redirect\r
126 #\r
127 #    psspy.psseinit(80000)\r
128 #    redirect.psse2py()\r
129 #    psspy.progress_output(6)\r
130 #\r
131 #    psspy.case(NetworkFile)\r
132 #\r
133 #    sid = -1\r
134 #    flag = 2\r
135 #    ierr, ret = psspy.abusreal(sid, flag, ['BASE'])\r
136 #    Storage.BusBase = ret[0]\r
137 #\r
138 #    ierr, carray = psspy.abuschar(sid, flag, ['NAME'])\r
139 #    buses = {}\r
140 #    for i in range(len(carray[0])):\r
141 #        buses[carray[0][i]] = ret[0][i]\r
142 #    Storage.BusNames = buses\r
143 #    ret = []\r
144 #    for item in Storage.BusBase:\r
145 #        if item not in ret:\r
146 #            ret.append(item)\r
147 #    return sorted(ret)\r
148 \r
149 #def updateConts():\r
150 #    Storage.ContFullList = []\r
151 #    tmp = Storage.BusBaseList.keys()\r
152 #    tmp.sort()\r
153 #    for key in tmp:\r
154 #        Storage.ContFullList.append(key)\r
155 #    tmp = Storage.GenBaseList.keys()\r
156 #    tmp.sort()\r
157 #    for key in tmp:\r
158 #        Storage.ContFullList.append(key)\r
159 #    tmp = Storage.LinesBaseList.keys()\r
160 #    tmp.sort()\r
161 #    for key in tmp:\r
162 #        Storage.ContFullList.append(key)\r
163 #    tmp = Storage.TransfoBaseList.keys()\r
164 #    tmp.sort()\r
165 #    for key in tmp:\r
166 #        Storage.ContFullList.append(key)\r
167 #    print Storage.ContFullList\r
168 #    return Storage.ContFullList\r
169 #\r
170 #def newContingency(MatList):\r
171 #    Storage.CustomContingencies.append(MatList)\r
172 #\r
173 #def checkIfBorder(graph, key, depth, tmplist):\r
174 #    if key in tmplist:\r
175 #        return True\r
176 #    if depth == 0:\r
177 #        return False\r
178 #    NonBorders = 0\r
179 #    for item in graph[key]:\r
180 #        if not checkIfBorder(graph, item, depth - 1, tmplist):\r
181 #            NonBorders += 1\r
182 #    if NonBorders < 2: # A generator is considered as isolated if it has less than two non-borders neighbours\r
183 #        if key not in tmplist:\r
184 #            tmplist.append(key)\r
185 #        return True\r
186 #    return False\r
187 #\r
188 #def getTrueLines(NetworkFile):\r
189 #    import psspy\r
190 #    import redirect\r
191 #\r
192 #    psspy.psseinit(80000)\r
193 #    redirect.psse2py()\r
194 #    psspy.progress_output(6)\r
195 #\r
196 #    psspy.case(NetworkFile)\r
197 #\r
198 #    sid = -1\r
199 #    owner = 1\r
200 #    ties = 1\r
201 #    flag = 4 # 6 for two-winding transfos\r
202 #    entry = 1 #each branch once, not both directions\r
203 #    string = ['FROMNAME', 'TONAME', 'ID']\r
204 #    ierr, iarray = psspy.abrnchar(sid, owner, ties, flag, entry, string)\r
205 #    string = ['FROMNUMBER', 'TONUMBER']\r
206 #    ierr, carray = psspy.abrnint(sid, owner, ties, flag, entry, string)\r
207 #\r
208 #    lst = []\r
209 #    tmplist = []\r
210 #    try:\r
211 #        for i in range(len(carray[0])):\r
212 #            if carray[0][i] not in lst and carray[0][i] not in tmplist:\r
213 #                tmplist.append(carray[0][i])\r
214 #            elif carray[0][i] not in lst and carray[0][i] in tmplist:\r
215 #                tmplist.remove(carray[0][i])\r
216 #                lst.append(carray[0][i])\r
217 #            if carray[1][i] not in lst and carray[1][i] not in tmplist:\r
218 #                tmplist.append(carray[1][i])\r
219 #            elif carray[1][i] not in lst and carray[1][i] in tmplist:\r
220 #                tmplist.remove(carray[1][i])\r
221 #                lst.append(carray[1][i])\r
222 #    except:\r
223 #        pass\r
224 #\r
225 #    # Create the graph\r
226 #    graph = {}\r
227 #    for i in range(len(carray[0])):\r
228 #        try:\r
229 #            if graph[carray[0][i]]:\r
230 #                pass\r
231 #        except:\r
232 #            graph[carray[0][i]] = []\r
233 #        if carray[1][i] not in graph[carray[0][i]]:\r
234 #            graph[carray[0][i]].append(carray[1][i])\r
235 #        try:\r
236 #            if graph[carray[1][i]]:\r
237 #                pass\r
238 #        except:\r
239 #            graph[carray[1][i]] = []\r
240 #        if carray[0][i] not in graph[carray[1][i]]:\r
241 #            graph[carray[1][i]].append(carray[0][i])\r
242 #\r
243 #    # Search it twice, to ensure everything is mapped\r
244 #    for key in sorted(graph.keys()):\r
245 #        checkIfBorder(graph, key, Storage.RecursiveDepth, tmplist)\r
246 #    for key in reversed(sorted(graph.keys())):\r
247 #        checkIfBorder(graph, key, Storage.RecursiveDepth, tmplist)\r
248 #\r
249 #    Storage.IsolatedGenList = []\r
250 #    # Unfold it\r
251 #    for i in range(len(carray[0])):\r
252 #        if carray[0][i] in tmplist:\r
253 #            if iarray[0][i] not in Storage.IsolatedGenList:\r
254 #                Storage.IsolatedGenList.append(iarray[0][i])\r
255 #        if carray[1][i] in tmplist:\r
256 #            if iarray[1][i] not in Storage.IsolatedGenList:\r
257 #                Storage.IsolatedGenList.append(iarray[1][i])\r
258 #\r
259 #    lines = []\r
260 #    outLines = []\r
261 #    for i in range(len(iarray[0])):\r
262 #        name = iarray[0][i] + '-' + iarray[1][i]\r
263 #        if '@' in iarray[2][i] or '*' in iarray[2][i]:\r
264 #            outLines.append(name)\r
265 #        elif iarray[0][i] not in Storage.IsolatedGenList and iarray[1][i] not in Storage.IsolatedGenList:\r
266 #            lines.append(name)\r
267 #        else:\r
268 #            outLines.append(name)\r
269 #    Storage.TrueLines = lines\r
270 #    return lines\r
271 #\r
272 #NoBreakersandSwitches = True\r
273 #\r
274 #def ExtractGeneratorLoadLineandTransfoDico(NetworkFile,PSSE_PATH):\r
275 #    import os\r
276 #    import sys\r
277 #    import numpy as np\r
278 #\r
279 #    print NetworkFile\r
280 #    print PSSE_PATH\r
281 #    sys.path.append(PSSE_PATH)\r
282 #    os.environ['PATH'] +=  ';' + PSSE_PATH + ';'\r
283 #\r
284 #    import psspy\r
285 #    import redirect\r
286 #\r
287 #    ###initialization PSSE\r
288 #    psspy.psseinit(10000)\r
289 #    _i=psspy.getdefaultint()\r
290 #    _f=psspy.getdefaultreal()\r
291 #    _s=psspy.getdefaultchar()\r
292 #    redirect.psse2py()\r
293 #\r
294 #    # Silent execution of PSSe\r
295 #    islct=6 # 6=no output; 1=standard\r
296 #    psspy.progress_output(islct)\r
297 #\r
298 #    #open Network File\r
299 #    psspy.case(NetworkFile)\r
300 #\r
301 #    # Extract Buses\r
302 #    sid = -1 # all buses\r
303 #    flag = 2\r
304 #    string = ['NUMBER']\r
305 #    ierr, iarray = psspy.abusint(sid, flag, string)\r
306 #\r
307 #    string = ['NAME', 'EXNAME']\r
308 #    ierr, carray = psspy.abuschar(sid, flag, string)\r
309 #\r
310 #    string = ['BASE']\r
311 #    ierr, ret = psspy.abusreal(sid, flag, string)\r
312 #\r
313 #    BusDico = {}\r
314 #    BusNominal = {}\r
315 #    for i in range(len(iarray[0])):\r
316 #        BusNum = iarray[0][i]\r
317 #        BusDico[str(BusNum)] = carray[0][i].strip()\r
318 #        BusNominal[BusDico[str(BusNum)]] = ret[0][i]    \r
319 #\r
320 #    #Extract Loads\r
321 #    sid = -1 #all buses\r
322 #    flag = 1 #all in service loads/generators (4 all loads/generators)\r
323 #\r
324 #\r
325 #    string = ['NUMBER']\r
326 #    ierr,iarray = psspy.aloadint(sid,flag,string)\r
327 #\r
328 #    string = ['NAME','ID','EXNAME']\r
329 #    ierr,carray = psspy.aloadchar(sid,flag,string)\r
330 #\r
331 #    string = ['mvaact']\r
332 #    ierr, xdata = psspy.aloadcplx(sid, flag, string)\r
333 #\r
334 #    LoadDico = {}  # [Bus name, load ID, extended bus name, bus number]\r
335 #    for i in range(len(iarray[0])):\r
336 #        idname = "Lo" + carray[1][i].strip()\r
337 ##        try: #id is an integer\r
338 ##            idname = "Lo" + str(int(carray[1][i]))\r
339 ##        except: #id is not an integer\r
340 ##            idname = "Lo" + carray[1][i]\r
341 #        loadname = carray[0][i].strip()+ "__" + idname\r
342 #        loadname = loadname.replace(" ","_")\r
343 #        loadname = loadname.replace("-","_")\r
344 #        loadname = loadname.replace(".","_")\r
345 #        loadname = loadname.replace("&","and")\r
346 #        try:\r
347 #            int(loadname[0])\r
348 #            loadname="_" + loadname\r
349 #        except:\r
350 #            pass\r
351 #        LoadDico[loadname]= {}\r
352 #        LoadDico[loadname]['NAME'] = carray[0][i].strip()\r
353 #        LoadDico[loadname]['ID'] = carray[1][i]\r
354 #        LoadDico[loadname]['EXNAME'] =carray[2][i]\r
355 #        LoadDico[loadname]['NUMBER']=iarray[0][i]\r
356 #        LoadDico[loadname]['P']=np.real(xdata)[0][i]\r
357 #        LoadDico[loadname]['Q']=np.imag(xdata)[0][i]\r
358 #\r
359 #    #Extract Generators\r
360 #    sid = -1 #all buses\r
361 #    flag = 1 #all in service loads/generators (4 all loads/generators)\r
362 #\r
363 #    string = ['NUMBER']\r
364 #    ierr,iarray = psspy.amachint(sid,flag,string)\r
365 #\r
366 #    string = ['NAME','ID','EXNAME']\r
367 #    ierr,carray = psspy.amachchar(sid,flag,string)\r
368 #\r
369 #    rstrings = ['pgen','qgen','mbase','pmax','qmax','pmin','qmin']\r
370 #    ierr, rarray = psspy.amachreal(sid, flag, rstrings)\r
371 #\r
372 #    MachineDico = {} # [Bus name, machine ID, extended bus name, bus number]\r
373 #    for i in range(len(iarray[0])):\r
374 #        idname = "Gr" + carray[1][i].strip()\r
375 ###        try:\r
376 ###            idname = "Gr" + str(int(carray[1][i]))\r
377 ###        except:\r
378 ###            idname = "Gr" + carray[1][i]\r
379 #        machinename = carray[0][i].strip()+ "__" + idname\r
380 #        machinename = machinename.replace(" ","_")\r
381 #        machinename = machinename.replace("-","_")\r
382 #        machinename = machinename.replace(".","_")\r
383 #        machinename = machinename.replace("&","and")\r
384 #        try:\r
385 #            int(machinename[0])\r
386 #            machinename="_" + machinename\r
387 #        except:\r
388 #            pass\r
389 #        MachineDico[machinename]={}\r
390 #        MachineDico[machinename]['NAME'] = carray[0][i].strip()\r
391 #        MachineDico[machinename]['ID'] = carray[1][i]\r
392 #        MachineDico[machinename]['EXNAME'] =carray[2][i]\r
393 #        MachineDico[machinename]['NUMBER']=iarray[0][i]\r
394 #        MachineDico[machinename]['P']=rarray[0][i]\r
395 #        MachineDico[machinename]['Q']=rarray[1][i]\r
396 #        MachineDico[machinename]['PMAX']=rarray[3][i]\r
397 #        MachineDico[machinename]['QMAX']=rarray[4][i]\r
398 #        MachineDico[machinename]['PMIN']=rarray[5][i]\r
399 #        MachineDico[machinename]['QMIN']=rarray[6][i]\r
400 #\r
401 #    #Extract Motors\r
402 #    sid = -1 #all buses\r
403 #    flag = 1 #all in service loads/generators (4 all loads/generators)\r
404 #\r
405 #    string = ['NUMBER','PSETCODE','BASECODE']\r
406 #    ierr,iarray = psspy.aindmacint(sid,flag,string)\r
407 #\r
408 #    string = ['NAME','ID','EXNAME']\r
409 #    ierr,carray = psspy.aindmacchar(sid,flag,string)\r
410 #\r
411 #    rstrings = ['psetpoint','mbase','p','q']\r
412 #    ierr, rarray = psspy.aindmacreal(sid, flag, rstrings)\r
413 #\r
414 #\r
415 #    MotorDico = {} # [Bus name, machine ID, extended bus name, bus number]\r
416 #    for i in range(len(iarray[0])):\r
417 #        idname = "Mo" + carray[1][i].strip()\r
418 ###        try:\r
419 ###            idname = "Gr" + str(int(carray[1][i]))\r
420 ###        except:\r
421 ###            idname = "Gr" + carray[1][i]\r
422 #        motorname = carray[0][i].strip()+ "__" + idname\r
423 #        motorname = motorname.replace(" ","_")\r
424 #        motorname = motorname.replace("-","_")\r
425 #        motorname = motorname.replace(".","_")\r
426 #        motorname = motorname.replace("&","and")\r
427 #        try:\r
428 #            int(motorname[0])\r
429 #            motorname="_" + motorname\r
430 #        except:\r
431 #            pass\r
432 #        MotorDico[motorname]={}\r
433 #        MotorDico[motorname]['NAME'] = carray[0][i].strip()\r
434 #        MotorDico[motorname]['ID'] = carray[1][i]\r
435 #        MotorDico[motorname]['EXNAME'] =carray[2][i]\r
436 #        MotorDico[motorname]['NUMBER']=iarray[0][i]\r
437 #        MotorDico[motorname]['PSETCODE']=iarray[1][i]\r
438 #        MotorDico[motorname]['BASECODE']=iarray[2][i]\r
439 #        MotorDico[motorname]['PSETPOINT']=rarray[0][i]\r
440 #        MotorDico[motorname]['MBASE']=rarray[1][i]\r
441 #        MotorDico[motorname]['P']=rarray[2][i]\r
442 #        MotorDico[motorname]['Q']=rarray[3][i]\r
443 #\r
444 #\r
445 #    #Extract Lignes\r
446 #    sid = -1\r
447 #    owner = 1\r
448 #    ties = 1\r
449 #    flag = 2 #6 for two-winding transfos\r
450 #    entry = 1 #each branch once, not both directions\r
451 #    string = ['FROMNUMBER','TONUMBER']\r
452 #    ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string)\r
453 #    string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID']\r
454 #    ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string)\r
455 #\r
456 #    LineDico = {} #[linename, Bus name 1, Bus name 2, ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2]\r
457 #    for i in range(len(iarray[0])):\r
458 #        idname = carray[4][i].strip()\r
459 #        #idname = carray[4][i]\r
460 #        if '@' in idname:\r
461 #            idname = idname.replace('@','Br')\r
462 #        elif '*' in idname:\r
463 #            idname = idname.replace('*','Sw')\r
464 #        else:\r
465 #            try:\r
466 #                idname = 'Li' + str(int(idname))\r
467 #            except:\r
468 #                idname = 'Li' + idname\r
469 #        linename =carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname\r
470 #        linename = linename.replace(" ","_")\r
471 #        linename = linename.replace("-","_")\r
472 #        linename = linename.replace(".","_")\r
473 #        linename = linename.replace("&","and")\r
474 #        try:\r
475 #            int(linename[0])\r
476 #            linename="_" + linename\r
477 #        except:\r
478 #            pass\r
479 #        if NoBreakersandSwitches:\r
480 #            if 'Br' not in idname and 'Sw' not in idname:\r
481 #                LineDico[linename]={}\r
482 #                LineDico[linename]['FROMNAME']=carray[0][i].strip()\r
483 #                LineDico[linename]['TONAME']=carray[1][i].strip()\r
484 #                LineDico[linename]['ID']=carray[4][i]\r
485 #                LineDico[linename]['FROMEXNAME']=carray[2][i]\r
486 #                LineDico[linename]['TOEXNAME']=carray[3][i]\r
487 #                LineDico[linename]['FROMNUMBER']=iarray[0][i]\r
488 #                LineDico[linename]['TONUMBER']=iarray[1][i]\r
489 #\r
490 #    #Extract Branches\r
491 #    sid = -1\r
492 #    owner = 1\r
493 #    ties = 1\r
494 #    flag = 4 # lines & transfos\r
495 #    entry = 1 #each branch once, not both directions\r
496 #    string = ['FROMNUMBER','TONUMBER']\r
497 #    ierr, iarray = psspy.abrnint(sid, owner, ties, flag, entry, string)\r
498 #    string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID']\r
499 #    ierr, carray = psspy.abrnchar(sid, owner, ties, flag, entry, string)\r
500 #\r
501 #    BranchesDico = {} #[linename, Bus name 1, Bus name 2, ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2]\r
502 #    for i in range(len(iarray[0])):\r
503 #        idname = carray[4][i]\r
504 #        if '@' in idname:\r
505 #            idname = idname.replace('@','Br')\r
506 #        elif '*' in idname:\r
507 #            idname = idname.replace('*','Sw')\r
508 #        else:\r
509 #            idname = 'LI' + idname\r
510 #        linename = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname\r
511 #        linename = linename.replace(" ","_")\r
512 #        linename = linename.replace("-","_")\r
513 #        linename = linename.replace(".","_")\r
514 #        linename = linename.replace("&","and")\r
515 #        try:\r
516 #            int(linename[0])\r
517 #            linename = "_" + linename\r
518 #        except:\r
519 #            pass\r
520 #        if linename[-1] == '_':\r
521 #            linename = linename[:-1]\r
522 #        BranchesDico[linename] = {}\r
523 #        BranchesDico[linename]['FROMNAME'] = carray[0][i].strip()\r
524 #        BranchesDico[linename]['TONAME'] = carray[1][i].strip()\r
525 #        BranchesDico[linename]['ID'] = carray[4][i]\r
526 #        BranchesDico[linename]['FROMEXNAME'] = carray[2][i]\r
527 #        BranchesDico[linename]['TOEXNAME'] = carray[3][i]\r
528 #        BranchesDico[linename]['FROMNUMBER'] = iarray[0][i]\r
529 #        BranchesDico[linename]['TONUMBER'] = iarray[1][i]\r
530 #\r
531 #    \r
532 #    #Extract Transfos\r
533 #    sid = -1\r
534 #    owner = 1\r
535 #    ties = 1\r
536 #    flag = 6 #two-winding transfos\r
537 #    entry = 1 #each branch once, not both directions\r
538 #    string = ['FROMNUMBER','TONUMBER']\r
539 #    ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string)\r
540 #    string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID']\r
541 #    ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string)\r
542 #\r
543 #    TfoDico = {} #[linename, Bus name 1, Bus name 2, machine ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2]\r
544 #    for i in range(len(iarray[0])):\r
545 #        idname = 'Tr' + carray[4][i].strip()\r
546 ###        try:\r
547 ###            idname = 'Tr' + str(int(carray[4][i]))\r
548 ###        except:\r
549 ###            idname = 'Tr' + carray[4][i]\r
550 #        tfoname = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname\r
551 #        tfoname = tfoname.replace(" ","_")\r
552 #        tfoname = tfoname.replace("-","_")\r
553 #        tfoname = tfoname.replace(".","_")\r
554 #        tfoname = tfoname.replace("&","and")\r
555 #        try:\r
556 #            int(tfoname[0])\r
557 #            tfoname="_" + tfoname\r
558 #        except:\r
559 #            pass\r
560 #        TfoDico[tfoname]={}\r
561 #        TfoDico[tfoname]['FROMNAME']=carray[0][i].strip()\r
562 #        TfoDico[tfoname]['TONAME']=carray[1][i].strip()\r
563 #        TfoDico[tfoname]['ID']=carray[4][i]\r
564 #        TfoDico[tfoname]['FROMEXNAME']=carray[2][i]\r
565 #        TfoDico[tfoname]['TOEXNAME']=carray[3][i]\r
566 #        TfoDico[tfoname]['FROMNUMBER']=iarray[0][i]\r
567 #        TfoDico[tfoname]['TONUMBER']=iarray[1][i]\r
568 #        TfoDico[tfoname]['#WIND']=2\r
569 #    print "Read Transfos"\r
570 #\r
571 #    #Extract 3 winding Transfos\r
572 #    sid = -1 #assume a subsystem containing all buses in working case\r
573 #    owner_3flow = 1 #1 = use bus ownership 2 = use tfo ownership\r
574 #    ties_3flow = 3 #ignored bc sid is negative. 3 = interior subsystem and subsystem tie 3 winding transformers \r
575 #    flag=3 #all 3 winding transfo windings\r
576 #    string = ['wind1number','wind2number','wind3number']\r
577 #    ierr,iarray = psspy.awndint(sid,owner,ties,flag,entry,string)\r
578 #    string = ['wind1name','wind2name','wind3name','wind1exname','wind2exname','wind3exname','id']\r
579 #    ierr,carray = psspy.awndchar(sid,owner,ties,flag,entry,string)\r
580 #\r
581 #    #[Bus name 1, Bus name 2, Bus name 3, machine ID, extended bus name 1, extended bus name 2, extended bus name 3, bus number 1, bus number 2, bus number 3]\r
582 #    for i in range(len(iarray[0])):\r
583 #        idname = 'Tr' + carray[6][i].strip()\r
584 ###        try:\r
585 ###            idname = 'Tr' + str(int(carray[4][i]))\r
586 ###        except:\r
587 ###            idname = 'Tr' + carray[4][i]\r
588 #        tfoname = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + carray[2][i].strip() + "__" + idname\r
589 #        tfoname = tfoname.replace(" ","_")\r
590 #        tfoname = tfoname.replace("-","_")\r
591 #        tfoname = tfoname.replace(".","_")\r
592 #        tfoname = tfoname.replace("&","and")\r
593 #        try:\r
594 #            int(tfoname[0])\r
595 #            tfoname="_" + tfoname\r
596 #        except:\r
597 #            pass\r
598 #        TfoDico[tfoname]={}\r
599 #        TfoDico[tfoname]['FROMNAME']=carray[0][i].strip()\r
600 #        TfoDico[tfoname]['TONAME']=carray[1][i].strip()\r
601 #        TfoDico[tfoname]['3NAME']=carray[2][i].strip()\r
602 #        TfoDico[tfoname]['ID']=carray[6][i]\r
603 #        TfoDico[tfoname]['FROMEXNAME']=carray[3][i]\r
604 #        TfoDico[tfoname]['TOEXNAME']=carray[4][i]\r
605 #        TfoDico[tfoname]['3EXNAME']=carray[5][i]\r
606 #        TfoDico[tfoname]['FROMNUMBER']=iarray[0][i]\r
607 #        TfoDico[tfoname]['TONUMBER']=iarray[1][i]\r
608 #        TfoDico[tfoname]['3NUMBER']=iarray[2][i]\r
609 #        TfoDico[tfoname]['#WIND']=3\r
610 #    print "Read 3-Winding Transfos"\r
611 #\r
612 #    return MachineDico, LoadDico, LineDico, TfoDico, MotorDico, BusDico, BranchesDico, BusNominal\r
613 #\r
614 #\r
615 ##NetworkFile = r'\\Atlas.edf.fr\co\dpit-cist-siege\Der.012\Dpt-Etudes-Reseaux.001\Outils DER - Divers (excel, codes python, etc.)\PSEN_V15\Example\Results\N_20160705_17h36m34\package0_N_20160705_17h36m34\BaseCase.sav'\r
616 ##PSSE_PATH=r"C:\Program Files (x86)\PTI\PSSE33\PSSBIN"\r
617 ##sys.path.append(PSSE_PATH)\r
618 ##os.environ['PATH'] +=  ';' + PSSE_PATH + ';'\r
619 ##getNominalkV(NetworkFile)\r
620 ##updateConts()\r