Salome HOME
commentaire
[tools/eficas.git] / PSEN_Eficas / ExtractGeneratorLoadLineandTransfoDico.py
1 #NetworkFile = r"C:\Users\J15773\Documents\GTDosier\PSENdocs\Victoria ALL - EFICAS PSEN\Data\2030Conv_HFP2.sav"\r
2 #PSSE_PATH = "C:/Program Files/PTI/PSSE33/PSSBIN" #emplacement de PSSE\r
3 \r
4 def ExtractGeneratorLoadLineandTransfoDico(NetworkFile,PSSE_PATH):\r
5 \r
6     import os\r
7     import sys\r
8 \r
9     print NetworkFile\r
10     print PSSE_PATH\r
11     sys.path.append(PSSE_PATH)\r
12     os.environ['PATH'] +=  ';' + PSSE_PATH + ';'\r
13 \r
14     import psspy\r
15     import redirect\r
16 \r
17     ###initialization PSSE\r
18     psspy.psseinit(10000)\r
19     _i=psspy.getdefaultint()\r
20     _f=psspy.getdefaultreal()\r
21     _s=psspy.getdefaultchar()\r
22     redirect.psse2py()\r
23 \r
24     # Silent execution of PSSe\r
25     islct=6 # 6=no output; 1=standard\r
26     psspy.progress_output(islct)\r
27 \r
28     #open Network File\r
29     psspy.case(NetworkFile)\r
30 \r
31     #Extract Loads\r
32     sid = -1 #all buses\r
33     flag = 1 #all in service loads/generators (4 all loads/generators)\r
34 \r
35 \r
36     string = ['NUMBER']\r
37     ierr,iarray = psspy.aloadint(sid,flag,string)\r
38 \r
39     string = ['NAME','ID','EXNAME']\r
40     ierr,carray = psspy.aloadchar(sid,flag,string)\r
41 \r
42     LoadDico = {}  # [Bus name, load ID, extended bus name, bus number]\r
43     for i in range(len(iarray[0])):\r
44         idname = "Lo" + str(int(carray[1][i]))\r
45         loadname = carray[0][i].strip()+ "__" + idname\r
46         loadname = loadname.replace(" ","_")\r
47         loadname = loadname.replace(".","_")\r
48         loadname = loadname.replace("&","and")\r
49         try:\r
50             int(loadname[0])\r
51             loadname="_" + loadname\r
52         except:\r
53             pass\r
54         LoadDico[loadname]= {}\r
55         LoadDico[loadname]['BusName'] = carray[0][i].strip()\r
56         LoadDico[loadname]['ID'] = carray[1][i]\r
57         LoadDico[loadname]['BusExName'] =carray[2][i]\r
58         LoadDico[loadname]['BusNum']=iarray[0][i]\r
59 \r
60     #Extract Generators\r
61     sid = -1 #all buses\r
62     flag = 1 #all in service loads/generators (4 all loads/generators)\r
63         \r
64     string = ['NUMBER']\r
65     ierr,iarray = psspy.amachint(sid,flag,string)\r
66 \r
67     string = ['NAME','ID','EXNAME']\r
68     ierr,carray = psspy.amachchar(sid,flag,string)\r
69 \r
70     MachineDico = {} # [Bus name, machine ID, extended bus name, bus number]\r
71     for i in range(len(iarray[0])):\r
72         idname = "Gr" + str(int(carray[1][i]))\r
73         machinename = carray[0][i].strip()+ "__" + idname\r
74         machinename = machinename.replace(" ","_")\r
75         machinename = machinename.replace(".","_")\r
76         machinename = machinename.replace("&","and")\r
77         try:\r
78             int(machinename[0])\r
79             machinename="_" + machinename\r
80         except:\r
81             pass\r
82         MachineDico[machinename]={}\r
83         MachineDico[machinename]['NAME'] = carray[0][i].strip()\r
84         MachineDico[machinename]['ID'] = carray[1][i]\r
85         MachineDico[machinename]['EXNAME'] =carray[2][i]\r
86         MachineDico[machinename]['NUMBER']=iarray[0][i]\r
87 \r
88     #Extract Lignes\r
89     sid = -1\r
90     owner = 1\r
91     ties = 1\r
92     flag = 2 #6 for two-winding transfos\r
93     entry = 1 #each branch once, not both directions\r
94     string = ['FROMNUMBER','TONUMBER']\r
95     ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string)\r
96     string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID']\r
97     ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string)\r
98 \r
99     LineDico = {} #[linename, Bus name 1, Bus name 2, ID, extended bus name 1, extended bus name 2, bus number 1, bus number 2]\r
100     for i in range(len(iarray[0])):\r
101         idname = carray[4][i]\r
102         if '@' in idname:\r
103             idname = idname.replace('@','Br')\r
104         else:\r
105             idname = 'Li' + str(int(idname))\r
106         linename =carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname\r
107         linename = linename.replace(" ","_")\r
108         linename = linename.replace(".","_")\r
109         linename = linename.replace("&","and")\r
110         try:\r
111             int(linename[0])\r
112             linename="_" + linename\r
113         except:\r
114             pass\r
115         LineDico[linename]={}\r
116         LineDico[linename]['FROMNAME']=carray[0][i].strip()\r
117         LineDico[linename]['TONAME']=carray[1][i].strip()\r
118         LineDico[linename]['ID']=carray[4][i]\r
119         LineDico[linename]['FROMEXNAME']=carray[2][i]\r
120         LineDico[linename]['TOEXNAME']=carray[3][i]\r
121         LineDico[linename]['FROMNUMBER']=iarray[0][i]\r
122         LineDico[linename]['TONUMBER']=iarray[1][i]\r
123 \r
124     #Extract Transfos\r
125     sid = -1\r
126     owner = 1\r
127     ties = 1\r
128     flag = 6 #two-winding transfos\r
129     entry = 1 #each branch once, not both directions\r
130     string = ['FROMNUMBER','TONUMBER']\r
131     ierr,iarray = psspy.abrnint(sid,owner,ties,flag,entry,string)\r
132     string = ['FROMNAME','TONAME','FROMEXNAME','TOEXNAME','ID']\r
133     ierr,carray = psspy.abrnchar(sid,owner,ties,flag,entry,string)\r
134 \r
135     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
136     for i in range(len(iarray[0])):\r
137         idname = 'Tr' + str(int(carray[4][i]))\r
138         tfoname = carray[0][i].strip() + "__" + carray[1][i].strip() + "__" + idname\r
139         tfoname = tfoname.replace(" ","_")\r
140         tfoname = tfoname.replace(".","_")\r
141         tfoname = tfoname.replace("&","and")\r
142         try:\r
143             int(tfoname[0])\r
144             tfoname="_" + tfoname\r
145         except:\r
146             pass\r
147         TfoDico[tfoname]={}\r
148         TfoDico[tfoname]['FROMNAME']=carray[0][i].strip()\r
149         TfoDico[tfoname]['TONAME']=carray[1][i].strip()\r
150         TfoDico[tfoname]['ID']=carray[4][i]\r
151         TfoDico[tfoname]['FROMEXNAME']=carray[2][i]\r
152         TfoDico[tfoname]['TOEXNAME']=carray[3][i]\r
153         TfoDico[tfoname]['FROMNUMBER']=iarray[0][i]\r
154         TfoDico[tfoname]['TONUMBER']=iarray[1][i]\r
155 \r
156     return MachineDico, LoadDico, LineDico, TfoDico\r
157 \r
158 \r
159 #MachineDico, LoadDico, LineDico, TfoDico = ExtractGeneratorLoadLineandTransfoDico(NetworkFile,PSSE_PATH)\r
160 \r
161  \r
162 def ExtractGeneratorLoadLineandTransfoDico2(NetworkFile,PSSE_PATH):\r
163     MachineDico={'M1':'M1','M2':'M2','M3':'M3','M4':'M4','B6_BUS13__1':'AZ','CSPRING__1':'DD','GT12B__1':'ER','BSTMB__1':'JJ'}\r
164     LoadDico={'C1':'C1','C2':'C2','C3':'C3','C4':'C4'}\r
165     LineDico={'L1':'L1','L2':'L2','L3':'L3','L4':'L4'}\r
166     TfoDico={'T1':'T1','T2':'T2','T3':'T3','T4':'T4'}\r
167     MDico={'MZ1':'MZ1','MZ2':'MZ2','MZ3':'MZ3','MZ4':'MZ4'}\r
168     if NetworkFile == '/home/A96028/PSEN/PSEN_V8/Code/PSEN_Eficas/faux2.sav': \r
169        print "sans T1"\r
170        TfoDico={'T2':'T2','T3':'T3','T4':'T4'}\r
171 \r
172 \r
173     return MachineDico, LoadDico, LineDico, TfoDico, MDico\r