pydae 0.56.1__py3-none-any.whl → 0.56.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pydae/__init__.py CHANGED
@@ -7,5 +7,5 @@ Differential Algebraic Equations in Python
7
7
 
8
8
  """
9
9
 
10
- __version__ = "0.56.1"
10
+ __version__ = "0.56.3"
11
11
 
@@ -381,10 +381,19 @@ class bmapu:
381
381
 
382
382
  if 'monitor' in line:
383
383
  if line['monitor']:
384
- h_grid.update({f"p_line_{bus_j}_{bus_k}":P_line_to})
385
- h_grid.update({f"q_line_{bus_j}_{bus_k}":Q_line_to})
386
- h_grid.update({f"p_line_{bus_k}_{bus_j}":P_line_from})
387
- h_grid.update({f"q_line_{bus_k}_{bus_j}":Q_line_from})
384
+ # h_grid.update({f"p_line_{bus_j}_{bus_k}":P_line_to})
385
+ # h_grid.update({f"q_line_{bus_j}_{bus_k}":Q_line_to})
386
+ # h_grid.update({f"p_line_{bus_k}_{bus_j}":P_line_from})
387
+ # h_grid.update({f"q_line_{bus_k}_{bus_j}":Q_line_from})
388
+ p_line_to,q_line_to = sym.symbols(f"p_line_{bus_j}_{bus_k},q_line_{bus_j}_{bus_k}", real=True)
389
+ p_line_from,q_line_from = sym.symbols(f"p_line_{bus_k}_{bus_j},q_line_{bus_k}_{bus_j}", real=True)
390
+
391
+ g_grid += [p_line_to - P_line_to]
392
+ g_grid += [q_line_to - Q_line_to]
393
+ g_grid += [p_line_from - P_line_from]
394
+ g_grid += [q_line_from - Q_line_from]
395
+
396
+ y_grid += [p_line_to,q_line_to,p_line_from,q_line_from]
388
397
 
389
398
  self.dae['f'] += []
390
399
  self.dae['g'] += g_grid
@@ -17,6 +17,6 @@ syns:[
17
17
  }
18
18
  ],
19
19
  "sources":[{"type":"vsource","bus":"2"}],
20
- "pods":[{bus:"1","type":"pod_2wo_3ll","K_p_pll": 180, "K_i_pll": 3200, "T_pll": 0.02,"K_stab":20,
21
- "T_1":1, "T_2":1, "T_3":1.0, "T_4":1, "T_5":1.0, "T_6":1, "T_wo1":10.0, "T_wo2":10.0}]
20
+ "pods":[{bus:"1","type":"pod_2wo_3ll","K_p_pll": 180, "K_i_pll": 3200, "T_pll": 0.02,"K_stab":-20,
21
+ "T_lpf":0.01, "T_1":1, "T_2":1, "T_3":1.0, "T_4":1, "T_5":1.0, "T_6":1, "T_wo1":10.0, "T_wo2":10.0}]
22
22
  }
@@ -75,6 +75,8 @@ def add_pod_2wo_3ll(grid,data):
75
75
  ############################################################################################################
76
76
 
77
77
  # dynamic states
78
+ x_lpf = sym.Symbol(f"x_lpf_pod_{name}", real=True) # low pass filter
79
+
78
80
  x_wo1 = sym.Symbol(f"x_wo1_pod_{name}", real=True) # washout 1
79
81
  x_wo2 = sym.Symbol(f"x_wo2_pod_{name}", real=True) # washout 2
80
82
 
@@ -90,6 +92,7 @@ def add_pod_2wo_3ll(grid,data):
90
92
  T_wo1 = sym.Symbol(f"T_wo1_pod_{name}", real=True)
91
93
  T_wo2 = sym.Symbol(f"T_wo2_pod_{name}", real=True)
92
94
 
95
+ T_lpf = sym.Symbol(f"T_lpf_pod_{name}", real=True)
93
96
  T_1 = sym.Symbol(f"T_1_pod_{name}", real=True)
94
97
  T_2 = sym.Symbol(f"T_2_pod_{name}", real=True)
95
98
  T_3 = sym.Symbol(f"T_3_pod_{name}", real=True)
@@ -106,10 +109,13 @@ def add_pod_2wo_3ll(grid,data):
106
109
 
107
110
  # auxiliar
108
111
  omega = omega_pll_f
109
- u_wo1 = K_stab*(omega - 1.0) + u_pll_probe
112
+ u_lpf = K_stab*(omega - 1.0) + u_pll_probe
110
113
 
111
- z_wo1 = u_wo1 - x_wo1
114
+ z_lpf = x_lpf
115
+ z_wo1 = z_lpf - x_wo1
112
116
  z_wo2 = z_wo1 - x_wo2
117
+
118
+ u_wo1 = z_lpf
113
119
  u_wo2 = z_wo1
114
120
  z_12 = (z_wo2 - x_12)*T_1/T_2 + x_12
115
121
  z_34 = (z_12 - x_34)*T_3/T_4 + x_34
@@ -117,6 +123,7 @@ def add_pod_2wo_3ll(grid,data):
117
123
 
118
124
  pod_out_nosat = z_56
119
125
 
126
+ dx_lpf = (u_lpf - x_lpf)/T_lpf # low pass filter state
120
127
  dx_wo1 = (u_wo1 - x_wo1)/T_wo1 # washout1 state
121
128
  dx_wo2 = (u_wo2 - x_wo2)/T_wo2 # washout2 state
122
129
  dx_12 = (z_wo2 - x_12)/T_2 # lead compensator state
@@ -125,11 +132,12 @@ def add_pod_2wo_3ll(grid,data):
125
132
 
126
133
  g_pod_out = -pod_out + sym.Piecewise((-Limit,pod_out_nosat<-Limit),(Limit,pod_out_nosat>Limit),(pod_out_nosat,True))
127
134
 
128
- grid.dae['f'] += [dx_wo1,dx_wo2,dx_12,dx_34, dx_56]
129
- grid.dae['x'] += [ x_wo1, x_wo2, x_12, x_34, x_56]
135
+ grid.dae['f'] += [dx_lpf, dx_wo1,dx_wo2,dx_12,dx_34, dx_56]
136
+ grid.dae['x'] += [ x_lpf, x_wo1, x_wo2, x_12, x_34, x_56]
130
137
  grid.dae['g'] += [g_pod_out]
131
138
  grid.dae['y_ini'] += [pod_out]
132
139
  grid.dae['y_run'] += [pod_out]
140
+ grid.dae['params_dict'].update({str(T_lpf):data['T_lpf']})
133
141
  grid.dae['params_dict'].update({str(T_wo1):data['T_wo1']})
134
142
  grid.dae['params_dict'].update({str(T_wo2):data['T_wo2']})
135
143
  grid.dae['params_dict'].update({str(T_1):data['T_1']})