Package pypower :: Package t :: Module t_case30_userfcns
[hide private]
[frames] | no frames]

Source Code for Module pypower.t.t_case30_userfcns

  1  # Copyright (C) 1996-2011 Power System Engineering Research Center (PSERC) 
  2  # Copyright (C) 2011 Richard Lincoln 
  3  # 
  4  # PYPOWER is free software: you can redistribute it and/or modify 
  5  # it under the terms of the GNU General Public License as published 
  6  # by the Free Software Foundation, either version 3 of the License, 
  7  # or (at your option) any later version. 
  8  # 
  9  # PYPOWER is distributed in the hope that it will be useful, 
 10  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 11  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
 12  # GNU General Public License for more details. 
 13  # 
 14  # You should have received a copy of the GNU General Public License 
 15  # along with PYPOWER. If not, see <http://www.gnu.org/licenses/>. 
 16   
 17  """Power flow data for 30 bus, 6 gen case w/reserves & iflims. 
 18  """ 
 19   
 20  from numpy import array 
 21   
 22   
23 -def t_case30_userfcns():
24 """Power flow data for 30 bus, 6 gen case w/reserves & iflims. 25 Please see L{caseformat} for details on the case file format. 26 27 Same as case30.py, but with fixed reserve and interface flow limit data. 28 The reserve data is defined in the fields of ppc.reserves and the 29 interface flow limit data in ppc.if at the bottom of the file. 30 31 @return: Power flow data for 30 bus, 6 gen case w/reserves & iflims. 32 """ 33 ppc = {} 34 35 ## PYPOWER Case Format : Version 2 36 ppc['version'] = '2' 37 38 ##----- Power Flow Data -----## 39 ## system MVA base 40 ppc['baseMVA'] = 100.0 41 42 ## bus data 43 # bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin 44 ppc['bus'] = array([ 45 [1, 3, 0, 0, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 46 [2, 2, 21.7, 12.7, 0, 0, 1, 1, 0, 135, 1, 1.1, 0.95], 47 [3, 1, 2.4, 1.2, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 48 [4, 1, 7.6, 1.6, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 49 [5, 1, 0, 0, 0, 0.19, 1, 1, 0, 135, 1, 1.05, 0.95], 50 [6, 1, 0, 0, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 51 [7, 1, 22.8, 10.9, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 52 [8, 1, 30, 30, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 53 [9, 1, 0, 0, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 54 [10, 1, 5.8, 2, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95], 55 [11, 1, 0, 0, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 56 [12, 1, 11.2, 7.5, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 57 [13, 2, 0, 0, 0, 0, 2, 1, 0, 135, 1, 1.1, 0.95], 58 [14, 1, 6.2, 1.6, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 59 [15, 1, 8.2, 2.5, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 60 [16, 1, 3.5, 1.8, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 61 [17, 1, 9, 5.8, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 62 [18, 1, 3.2, 0.9, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 63 [19, 1, 9.5, 3.4, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 64 [20, 1, 2.2, 0.7, 0, 0, 2, 1, 0, 135, 1, 1.05, 0.95], 65 [21, 1, 17.5, 11.2, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95], 66 [22, 2, 0, 0, 0, 0, 3, 1, 0, 135, 1, 1.1, 0.95], 67 [23, 2, 3.2, 1.6, 0, 0, 2, 1, 0, 135, 1, 1.1, 0.95], 68 [24, 1, 8.7, 6.7, 0, 0.04, 3, 1, 0, 135, 1, 1.05, 0.95], 69 [25, 1, 0, 0, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95], 70 [26, 1, 3.5, 2.3, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95], 71 [27, 2, 0, 0, 0, 0, 3, 1, 0, 135, 1, 1.1, 0.95], 72 [28, 1, 0, 0, 0, 0, 1, 1, 0, 135, 1, 1.05, 0.95], 73 [29, 1, 2.4, 0.9, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95], 74 [30, 1, 10.6, 1.9, 0, 0, 3, 1, 0, 135, 1, 1.05, 0.95] 75 ]) 76 77 ## generator data 78 # bus, Pg, Qg, Qmax, Qmin, Vg, mBase, status, Pmax, Pmin, Pc1, Pc2, 79 # Qc1min, Qc1max, Qc2min, Qc2max, ramp_agc, ramp_10, ramp_30, ramp_q, apf 80 ppc['gen'] = array([ 81 [1, 23.54, 0, 150, -20, 1, 100, 1, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 82 [2, 60.97, 0, 60, -20, 1, 100, 1, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 83 [22, 21.59, 0, 62.5, -15, 1, 100, 1, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 84 [27, 26.91, 0, 48.7, -15, 1, 100, 1, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 85 [23, 19.2, 0, 40, -10, 1, 100, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 86 [13, 37, 0, 44.7, -15, 1, 100, 1, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 87 ]) 88 89 ## branch data 90 # fbus, tbus, r, x, b, rateA, rateB, rateC, ratio, angle, status, angmin, angmax 91 ppc['branch'] = array([ 92 [1, 2, 0.02, 0.06, 0.03, 130, 130, 130, 0, 0, 1, -360, 360], 93 [1, 3, 0.05, 0.19, 0.02, 130, 130, 130, 0, 0, 1, -360, 360], 94 [2, 4, 0.06, 0.17, 0.02, 65, 65, 65, 0, 0, 1, -360, 360], 95 [3, 4, 0.01, 0.04, 0, 130, 130, 130, 0, 0, 1, -360, 360], 96 [2, 5, 0.05, 0.2, 0.02, 130, 130, 130, 0, 0, 1, -360, 360], 97 [2, 6, 0.06, 0.18, 0.02, 65, 65, 65, 0, 0, 1, -360, 360], 98 [4, 6, 0.01, 0.04, 0, 90, 90, 90, 0, 0, 1, -360, 360], 99 [5, 7, 0.05, 0.12, 0.01, 70, 70, 70, 0, 0, 1, -360, 360], 100 [6, 7, 0.03, 0.08, 0.01, 130, 130, 130, 0, 0, 1, -360, 360], 101 [6, 8, 0.01, 0.04, 0, 32, 32, 32, 0, 0, 1, -360, 360], 102 [6, 9, 0, 0.21, 0, 65, 65, 65, 0, 0, 1, -360, 360], 103 [6, 10, 0, 0.56, 0, 32, 32, 32, 0, 0, 1, -360, 360], 104 [9, 11, 0, 0.21, 0, 65, 65, 65, 0, 0, 1, -360, 360], 105 [9, 10, 0, 0.11, 0, 65, 65, 65, 0, 0, 1, -360, 360], 106 [4, 12, 0, 0.26, 0, 65, 65, 65, 0, 0, 1, -360, 360], 107 [12, 13, 0, 0.14, 0, 65, 65, 65, 0, 0, 1, -360, 360], 108 [12, 14, 0.12, 0.26, 0, 32, 32, 32, 0, 0, 1, -360, 360], 109 [12, 15, 0.07, 0.13, 0, 32, 32, 32, 0, 0, 1, -360, 360], 110 [12, 16, 0.09, 0.2, 0, 32, 32, 32, 0, 0, 1, -360, 360], 111 [14, 15, 0.22, 0.2, 0, 16, 16, 16, 0, 0, 1, -360, 360], 112 [16, 17, 0.08, 0.19, 0, 16, 16, 16, 0, 0, 1, -360, 360], 113 [15, 18, 0.11, 0.22, 0, 16, 16, 16, 0, 0, 1, -360, 360], 114 [18, 19, 0.06, 0.13, 0, 16, 16, 16, 0, 0, 1, -360, 360], 115 [19, 20, 0.03, 0.07, 0, 32, 32, 32, 0, 0, 1, -360, 360], 116 [10, 20, 0.09, 0.21, 0, 32, 32, 32, 0, 0, 1, -360, 360], 117 [10, 17, 0.03, 0.08, 0, 32, 32, 32, 0, 0, 1, -360, 360], 118 [10, 21, 0.03, 0.07, 0, 32, 32, 32, 0, 0, 1, -360, 360], 119 [10, 22, 0.07, 0.15, 0, 32, 32, 32, 0, 0, 1, -360, 360], 120 [21, 22, 0.01, 0.02, 0, 32, 32, 32, 0, 0, 1, -360, 360], 121 [15, 23, 0.1, 0.2, 0, 16, 16, 16, 0, 0, 1, -360, 360], 122 [22, 24, 0.12, 0.18, 0, 16, 16, 16, 0, 0, 1, -360, 360], 123 [23, 24, 0.13, 0.27, 0, 16, 16, 16, 0, 0, 1, -360, 360], 124 [24, 25, 0.19, 0.33, 0, 16, 16, 16, 0, 0, 1, -360, 360], 125 [25, 26, 0.25, 0.38, 0, 16, 16, 16, 0, 0, 1, -360, 360], 126 [25, 27, 0.11, 0.21, 0, 16, 16, 16, 0, 0, 1, -360, 360], 127 [28, 27, 0, 0.4, 0, 65, 65, 65, 0, 0, 1, -360, 360], 128 [27, 29, 0.22, 0.42, 0, 16, 16, 16, 0, 0, 1, -360, 360], 129 [27, 30, 0.32, 0.6, 0, 16, 16, 16, 0, 0, 1, -360, 360], 130 [29, 30, 0.24, 0.45, 0, 16, 16, 16, 0, 0, 1, -360, 360], 131 [8, 28, 0.06, 0.2, 0.02, 32, 32, 32, 0, 0, 1, -360, 360], 132 [6, 28, 0.02, 0.06, 0.01, 32, 32, 32, 0, 0, 1, -360, 360] 133 ]) 134 135 ##----- OPF Data -----## 136 ## area data 137 # area refbus 138 ppc['areas'] = array([ 139 [1, 8], 140 [2, 23], 141 [3, 26], 142 ]) 143 144 ## generator cost data 145 # 1 startup shutdown n x1 y1 ... xn yn 146 # 2 startup shutdown n c(n-1) ... c0 147 ppc['gencost'] = array([ 148 [2, 0, 0, 3, 0.02, 2, 0], 149 [2, 0, 0, 3, 0.0175, 1.75, 0], 150 [2, 0, 0, 3, 0.0625, 1, 0], 151 [2, 0, 0, 3, 0.00834, 3.25, 0], 152 [2, 0, 0, 3, 0.025, 3, 0], 153 [2, 0, 0, 3, 0.025, 3, 0] 154 ]) 155 156 ##----- Reserve Data -----## 157 ppc['reserves'] = {} 158 159 ## reserve zones, element i, j is 1 if gen j is in zone i, 0 otherwise 160 ppc['reserves']['zones'] = array([ 161 [1, 1, 1, 1, 1, 1], 162 [0, 0, 0, 0, 1, 1] 163 ], float) 164 165 ## reserve requirements for each zone in MW 166 ppc['reserves']['req'] = array([60, 20], float) 167 168 ## reserve costs in $/MW for each gen that belongs to at least 1 zone 169 ## (same order as gens, but skipping any gen that does not belong to any zone) 170 ppc['reserves']['cost'] = array([1.9, 2, 3, 4, 5, 5.5]) 171 #ppc.reserves.cost = array([6, 5, 4, 3, 2, 1]) 172 173 ## OPTIONAL max reserve quantities for each gen that belongs to at least 1 zone 174 ## (same order as gens, but skipping any gen that does not belong to any zone) 175 ppc['reserves']['qty'] = array([25, 25, 25, 25, 25, 25], float) 176 177 178 ##----- Interface Flow Limit Data -----## 179 ppc['if'] = {} 180 181 # ifnum branchidx (negative defines opposite direction) 182 ppc['if']['map'] = array([ 183 [1, -11], ## 1 : area 1 imports 184 [1, -13], 185 [1, -14], 186 [1, -35], 187 [2, 14], ## 2 : area 2 imports 188 [2, 24], 189 [2, 25], 190 [2, -31], 191 [3, 11], ## 3 : area 3 imports 192 [3, 13], 193 [3, -24], 194 [3, -25], 195 [3, 31], 196 [3, 35] 197 ], int) 198 199 ## DC model flow limits in MW 200 ## (negative and positive directions can be different) 201 # ifnum lower upper 202 ppc['if']['lims'] = array([ 203 [1, -15, 25], ## area 1 imports 204 [2, -10, 20] ## area 2 imports 205 ], float) 206 207 return ppc
208