pydae 0.57.1__py3-none-any.whl → 0.57.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 +1 -1
- pydae/bmapu/bmapu_builder.py +212 -180
- pydae/bmapu/lines/line_dtr.py +525 -0
- pydae/bmapu/lines/lines.py +82 -129
- pydae/bmapu/lines/temp.py +20 -16
- pydae/bmapu/lines/temp_ini_cffi.c +60 -50
- pydae/bmapu/lines/temp_run_cffi.c +60 -50
- pydae/bmapu/lines/temp_trap_cffi.c +43 -35
- pydae/bmapu/lines/temp_xy_0.json +4 -0
- pydae/bmapu/lines/xy_0.json +4 -0
- pydae/templates/class_dae_template_v2.py +4 -0
- pydae/utils/algebra/__init__.py +0 -0
- pydae/utils/algebra/algebra.py +61 -0
- pydae/utils/algebra/dev_algebra.ipynb +191 -0
- pydae/utils/algebra/pendulum.py +1827 -0
- pydae/utils/algebra/pendulum_cffi.c +3044 -0
- pydae/utils/algebra/pendulum_ini_cffi.c +1245 -0
- pydae/utils/algebra/pendulum_run_cffi.c +1245 -0
- pydae/utils/algebra/pendulum_trap_cffi.c +950 -0
- pydae/utils/algebra/xy_0.json +8 -0
- pydae/utils/dates.py +49 -0
- {pydae-0.57.1.dist-info → pydae-0.57.3.dist-info}/METADATA +1 -1
- {pydae-0.57.1.dist-info → pydae-0.57.3.dist-info}/RECORD +26 -16
- {pydae-0.57.1.dist-info → pydae-0.57.3.dist-info}/WHEEL +0 -0
- {pydae-0.57.1.dist-info → pydae-0.57.3.dist-info}/licenses/COPYING +0 -0
- {pydae-0.57.1.dist-info → pydae-0.57.3.dist-info}/licenses/LICENSE +0 -0
pydae/bmapu/lines/lines.py
CHANGED
|
@@ -8,151 +8,98 @@ Created on Thu August 10 23:52:55 2022
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import sympy as sym
|
|
10
10
|
|
|
11
|
+
from pydae.bmapu.lines.line_dtr import add_line_dtr
|
|
12
|
+
|
|
11
13
|
|
|
12
14
|
def add_lines(self):
|
|
15
|
+
sys = self.system
|
|
13
16
|
|
|
14
|
-
self.g_line_monitors = []
|
|
15
|
-
self.y_line_monitors = []
|
|
16
|
-
|
|
17
17
|
for line in self.lines:
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
if not 'dtr' in line: line.update({'dtr':False})
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
if line['dtr']:
|
|
22
|
+
add_line_dtr(self, line)
|
|
23
|
+
else:
|
|
24
|
+
add_line(self, line)
|
|
23
25
|
|
|
24
|
-
idx_j = self.buses_list.index(bus_j)
|
|
25
|
-
idx_k = self.buses_list.index(bus_k)
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
self.A[it,idx_k] =-1
|
|
29
|
-
self.A[it+1,idx_j] = 1
|
|
30
|
-
self.A[it+2,idx_k] = 1
|
|
31
|
-
|
|
32
|
-
line_name = f"{bus_j}_{bus_k}"
|
|
33
|
-
g_jk = sym.Symbol(f"g_{line_name}", real=True)
|
|
34
|
-
b_jk = sym.Symbol(f"b_{line_name}", real=True)
|
|
35
|
-
bs_jk = sym.Symbol(f"bs_{line_name}", real=True)
|
|
36
|
-
self.G_primitive[it,it] = g_jk
|
|
37
|
-
self.B_primitive[it,it] = b_jk
|
|
38
|
-
self.B_primitive[it+1,it+1] = bs_jk/2
|
|
39
|
-
self.B_primitive[it+2,it+2] = bs_jk/2
|
|
40
|
-
|
|
41
|
-
if not 'thermal' in line:
|
|
42
|
-
line.update({'thermal':False})
|
|
43
|
-
|
|
44
|
-
if 'X_pu' in line:
|
|
45
|
-
if 'S_mva' in line: S_line = 1e6*line['S_mva']
|
|
46
|
-
R = line['R_pu']*self.sys['S_base']/S_line # in pu of the system base
|
|
47
|
-
X = line['X_pu']*self.sys['S_base']/S_line # in pu of the system base
|
|
48
|
-
G = R/(R**2+X**2)
|
|
49
|
-
B = -X/(R**2+X**2)
|
|
50
|
-
self.params_grid.update({f"g_{line_name}":G})
|
|
51
|
-
self.params_grid.update({f'b_{line_name}':B})
|
|
52
|
-
|
|
53
|
-
if 'X' in line:
|
|
54
|
-
bus_idx = self.buses_list.index(line['bus_j'])
|
|
55
|
-
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
56
|
-
Z_base = U_base**2/self.sys['S_base']
|
|
57
|
-
R = line['R']/Z_base # in pu of the system base
|
|
58
|
-
X = line['X']/Z_base # in pu of the system base
|
|
59
|
-
G = R/(R**2+X**2)
|
|
60
|
-
B = -X/(R**2+X**2)
|
|
61
|
-
self.params_grid.update({f"g_{line_name}":G})
|
|
62
|
-
self.params_grid.update({f'b_{line_name}':B})
|
|
63
|
-
|
|
64
|
-
if 'X_km' in line:
|
|
65
|
-
bus_idx = self.buses_list.index(line['bus_j'])
|
|
66
|
-
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
67
|
-
Z_base = U_base**2/self.sys['S_base']
|
|
68
|
-
if line['thermal']:
|
|
69
|
-
R = sym.Symbol(f"R_{line_name}", real=True)
|
|
70
|
-
R_N = line['R_km']*line['km']/Z_base # in pu of the system base
|
|
71
|
-
self.u_grid.update({str(R):R_N})
|
|
72
|
-
else:
|
|
73
|
-
R = line['R_km']*line['km']/Z_base # in pu of the system base
|
|
74
|
-
|
|
75
|
-
X = line['X_km']*line['km']/Z_base # in pu of the system base
|
|
76
|
-
G = R/(R**2+X**2)
|
|
77
|
-
B = -X/(R**2+X**2)
|
|
78
|
-
self.params_grid.update({f"g_{line_name}":G})
|
|
79
|
-
self.params_grid.update({f'b_{line_name}':B})
|
|
80
|
-
|
|
81
|
-
self.params_grid.update({f'bs_{line_name}':0.0})
|
|
82
|
-
if 'Bs_pu' in line:
|
|
83
|
-
if 'S_mva' in line: S_line = 1e6*line['S_mva']
|
|
84
|
-
Bs = line['Bs_pu']*S_line/self.sys['S_base'] # in pu of the system base
|
|
85
|
-
bs = Bs
|
|
86
|
-
self.params_grid[f'bs_{line_name}'] = bs
|
|
87
|
-
|
|
88
|
-
if 'Bs_km' in line:
|
|
89
|
-
bus_idx = self.buses_list.index(line['bus_j'])
|
|
90
|
-
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
91
|
-
Z_base = U_base**2/self.sys['S_base']
|
|
92
|
-
Y_base = 1.0/Z_base
|
|
93
|
-
Bs = line['Bs_km']*line['km']/Y_base # in pu of the system base
|
|
94
|
-
bs = Bs
|
|
95
|
-
self.params_grid[f'bs_{line_name}'] = bs
|
|
96
|
-
|
|
97
|
-
it += 3
|
|
98
|
-
|
|
99
|
-
if 'monitor' in line:
|
|
100
|
-
if line['monitor']:
|
|
101
|
-
|
|
102
|
-
bus_j = line['bus_j']
|
|
103
|
-
bus_k = line['bus_k']
|
|
104
|
-
|
|
105
|
-
line_name = f"{bus_j}_{bus_k}"
|
|
27
|
+
def add_line(self, line):
|
|
106
28
|
|
|
107
|
-
|
|
108
|
-
idx_k = self.buses_list.index(bus_k)
|
|
109
|
-
|
|
110
|
-
V_j = sym.Symbol(f"V_{bus_j}", real=True)
|
|
111
|
-
V_k = sym.Symbol(f"V_{bus_k}", real=True)
|
|
112
|
-
theta_j = sym.Symbol(f"theta_{bus_j}", real=True)
|
|
113
|
-
theta_k = sym.Symbol(f"theta_{bus_k}", real=True)
|
|
114
|
-
|
|
115
|
-
b_ij_p = 0.0
|
|
116
|
-
if f'bs_{line_name}' in self.params_grid:
|
|
117
|
-
b_ij_p = self.params_grid[f'bs_{line_name}']
|
|
118
|
-
|
|
119
|
-
G_jk = g_jk
|
|
120
|
-
B_jk = b_jk
|
|
121
|
-
theta_jk = theta_j - theta_k
|
|
122
|
-
P_line_to = V_j*V_k*(G_jk*sym.cos(theta_jk) + B_jk*sym.sin(theta_jk)) - V_j**2*(G_jk)
|
|
123
|
-
Q_line_to = V_j*V_k*(G_jk*sym.sin(theta_jk) - B_jk*sym.cos(theta_jk)) + V_j**2*(B_jk) + V_j**2*(bs_jk/2)
|
|
124
|
-
P_line_from = V_j*V_k*(G_jk*sym.cos(-theta_jk) + B_jk*sym.sin(-theta_jk)) - V_k**2*(G_jk)
|
|
125
|
-
Q_line_from = V_j*V_k*(G_jk*sym.sin(-theta_jk) - B_jk*sym.cos(-theta_jk)) + V_k**2*(B_jk) + V_k**2*(bs_jk/2)
|
|
29
|
+
sys = self.system
|
|
126
30
|
|
|
31
|
+
bus_j = line['bus_j']
|
|
32
|
+
bus_k = line['bus_k']
|
|
127
33
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
# h_grid.update({f"p_line_{bus_k}_{bus_j}":P_line_from})
|
|
131
|
-
# h_grid.update({f"q_line_{bus_k}_{bus_j}":Q_line_from})
|
|
132
|
-
p_line_to_pu,q_line_to_pu = sym.symbols(f"p_line_pu_{bus_j}_{bus_k},q_line_pu_{bus_j}_{bus_k}", real=True)
|
|
133
|
-
p_line_from_pu,q_line_from_pu = sym.symbols(f"p_line_pu_{bus_k}_{bus_j},q_line_pu_{bus_k}_{bus_j}", real=True)
|
|
34
|
+
idx_j = self.buses_list.index(bus_j)
|
|
35
|
+
idx_k = self.buses_list.index(bus_k)
|
|
134
36
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
37
|
+
self.A[self.it,idx_j] = 1
|
|
38
|
+
self.A[self.it,idx_k] =-1
|
|
39
|
+
self.A[self.it+1,idx_j] = 1
|
|
40
|
+
self.A[self.it+2,idx_k] = 1
|
|
41
|
+
|
|
42
|
+
line_name = f"{bus_j}_{bus_k}"
|
|
43
|
+
g_jk = sym.Symbol(f"g_{line_name}", real=True)
|
|
44
|
+
b_jk = sym.Symbol(f"b_{line_name}", real=True)
|
|
45
|
+
bs_jk = sym.Symbol(f"bs_{line_name}", real=True)
|
|
46
|
+
self.G_primitive[self.it,self.it] = g_jk
|
|
47
|
+
self.B_primitive[self.it,self.it] = b_jk
|
|
48
|
+
self.B_primitive[self.it+1,self.it+1] = bs_jk/2
|
|
49
|
+
self.B_primitive[self.it+2,self.it+2] = bs_jk/2
|
|
139
50
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
U_base = self.buses[idx_j]['U_kV']*1000
|
|
143
|
-
I_base = self.S_base/(np.sqrt(3)*U_base)
|
|
51
|
+
if not 'thermal' in line:
|
|
52
|
+
line.update({'thermal':False})
|
|
144
53
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
54
|
+
if 'X_pu' in line:
|
|
55
|
+
if 'S_mva' in line: S_line = 1e6*line['S_mva']
|
|
56
|
+
R = line['R_pu']*sys['S_base']/S_line # in pu of the system base
|
|
57
|
+
X = line['X_pu']*sys['S_base']/S_line # in pu of the system base
|
|
58
|
+
G = R/(R**2+X**2)
|
|
59
|
+
B = -X/(R**2+X**2)
|
|
60
|
+
self.dae['params_dict'].update({f"g_{line_name}":G})
|
|
61
|
+
self.dae['params_dict'].update({f'b_{line_name}':B})
|
|
149
62
|
|
|
150
|
-
|
|
151
|
-
|
|
63
|
+
if 'X' in line:
|
|
64
|
+
bus_idx = buses_list.index(line['bus_j'])
|
|
65
|
+
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
66
|
+
Z_base = U_base**2/sys['S_base']
|
|
67
|
+
R = line['R']/Z_base # in pu of the system base
|
|
68
|
+
X = line['X']/Z_base # in pu of the system base
|
|
69
|
+
G = R/(R**2+X**2)
|
|
70
|
+
B = -X/(R**2+X**2)
|
|
71
|
+
self.dae['params_dict'].update({f"g_{line_name}":G})
|
|
72
|
+
self.dae['params_dict'].update({f'b_{line_name}':B})
|
|
152
73
|
|
|
153
|
-
|
|
154
|
-
|
|
74
|
+
if 'X_km' in line:
|
|
75
|
+
bus_idx = self.buses_list.index(line['bus_j'])
|
|
76
|
+
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
77
|
+
Z_base = U_base**2/sys['S_base']
|
|
78
|
+
R = line['R_km']*line['km']/Z_base # in pu of the system base
|
|
79
|
+
|
|
80
|
+
X = line['X_km']*line['km']/Z_base # in pu of the system base
|
|
81
|
+
G = R/(R**2+X**2)
|
|
82
|
+
B = -X/(R**2+X**2)
|
|
83
|
+
self.dae['params_dict'].update({f"g_{line_name}":G})
|
|
84
|
+
self.dae['params_dict'].update({f'b_{line_name}':B})
|
|
85
|
+
|
|
86
|
+
self.dae['params_dict'].update({f'bs_{line_name}':0.0})
|
|
87
|
+
if 'Bs_pu' in line:
|
|
88
|
+
if 'S_mva' in line: S_line = 1e6*line['S_mva']
|
|
89
|
+
Bs = line['Bs_pu']*S_line/sys['S_base'] # in pu of the system base
|
|
90
|
+
bs = Bs
|
|
91
|
+
self.dae['params_dict'][f'bs_{line_name}'] = bs
|
|
155
92
|
|
|
93
|
+
if 'Bs_km' in line:
|
|
94
|
+
bus_idx = self.buses_list.index(line['bus_j'])
|
|
95
|
+
U_base = self.buses[bus_idx]['U_kV']*1000
|
|
96
|
+
Z_base = U_base**2/sys['S_base']
|
|
97
|
+
Y_base = 1.0/Z_base
|
|
98
|
+
Bs = line['Bs_km']*line['km']/Y_base # in pu of the system base
|
|
99
|
+
bs = Bs
|
|
100
|
+
self.dae['params_dict'][f'bs_{line_name}'] = bs
|
|
101
|
+
|
|
102
|
+
self.it += 3
|
|
156
103
|
|
|
157
104
|
|
|
158
105
|
def change_line(model,bus_j,bus_k, *args,**kwagrs):
|
|
@@ -230,6 +177,8 @@ def test_line_pu_build():
|
|
|
230
177
|
grid.uz_jacs = False
|
|
231
178
|
grid.verbose = True
|
|
232
179
|
grid.construct(f'temp')
|
|
180
|
+
|
|
181
|
+
|
|
233
182
|
build_numba(grid.sys_dict)
|
|
234
183
|
|
|
235
184
|
def test_line_pu_ini():
|
|
@@ -267,6 +216,10 @@ def test_line_km_build():
|
|
|
267
216
|
grid.uz_jacs = False
|
|
268
217
|
grid.verbose = True
|
|
269
218
|
grid.construct(f'temp')
|
|
219
|
+
|
|
220
|
+
print(grid.sys_dict)
|
|
221
|
+
|
|
222
|
+
|
|
270
223
|
build_numba(grid.sys_dict)
|
|
271
224
|
|
|
272
225
|
def test_line_km_ini():
|
|
@@ -274,7 +227,7 @@ def test_line_km_ini():
|
|
|
274
227
|
import temp
|
|
275
228
|
|
|
276
229
|
model = temp.model()
|
|
277
|
-
model.ini({'P_2':5000e6,'Q_2':0, "K_xif":0.01},'xy_0.json')
|
|
230
|
+
model.ini({'P_2':5000e6,'Q_2':0, "K_p_agc":0.0,"K_i_agc":0.0, "K_xif":0.01},'xy_0.json')
|
|
278
231
|
print(f"V_1 = {model.get_value('V_1'):2.2f}, V_2 = {model.get_value('V_2'):2.2f}")
|
|
279
232
|
|
|
280
233
|
print("report_y:")
|
pydae/bmapu/lines/temp.py
CHANGED
|
@@ -92,7 +92,7 @@ class model:
|
|
|
92
92
|
self.solvern = 5
|
|
93
93
|
self.imax = 100
|
|
94
94
|
self.N_x = 2
|
|
95
|
-
self.N_y =
|
|
95
|
+
self.N_y = 12
|
|
96
96
|
self.N_z = 9
|
|
97
97
|
self.N_store = 100000
|
|
98
98
|
self.params_list = ['S_base', 'g_1_2', 'b_1_2', 'bs_1_2', 'U_1_n', 'U_2_n', 'K_p_agc', 'K_i_agc', 'K_xif']
|
|
@@ -101,11 +101,11 @@ class model:
|
|
|
101
101
|
self.inputs_ini_values_list = [0.0, 0.0, 5000000000.0, 0.0, 1.0, 0.0]
|
|
102
102
|
self.inputs_run_list = ['P_1', 'Q_1', 'P_2', 'Q_2', 'v_ref_1', 'theta_ref_1']
|
|
103
103
|
self.inputs_run_values_list = [0.0, 0.0, 5000000000.0, 0.0, 1.0, 0.0]
|
|
104
|
-
self.outputs_list = ['
|
|
104
|
+
self.outputs_list = ['V_1', 'V_2', 'p_line_1_2', 'q_line_1_2', 'p_line_2_1', 'q_line_2_1', 'I_line_1_2', 'I_line_2_1', 'V_dummy_1']
|
|
105
105
|
self.x_list = ['V_dummy_1', 'xi_freq']
|
|
106
|
-
self.y_run_list = ['V_1', 'theta_1', 'V_2', 'theta_2', '
|
|
106
|
+
self.y_run_list = ['V_1', 'theta_1', 'V_2', 'theta_2', 'p_line_pu_1_2', 'q_line_pu_1_2', 'p_line_pu_2_1', 'q_line_pu_2_1', 'I_1_2', 'I_2_1', 'omega_coi', 'p_agc']
|
|
107
107
|
self.xy_list = self.x_list + self.y_run_list
|
|
108
|
-
self.y_ini_list = ['V_1', 'theta_1', 'V_2', 'theta_2', '
|
|
108
|
+
self.y_ini_list = ['V_1', 'theta_1', 'V_2', 'theta_2', 'p_line_pu_1_2', 'q_line_pu_1_2', 'p_line_pu_2_1', 'q_line_pu_2_1', 'I_1_2', 'I_2_1', 'omega_coi', 'p_agc']
|
|
109
109
|
self.xy_ini_list = self.x_list + self.y_ini_list
|
|
110
110
|
self.t = 0.0
|
|
111
111
|
self.it = 0
|
|
@@ -264,6 +264,10 @@ class model:
|
|
|
264
264
|
# jac_run_ss_eval_xy(self.jac_run,self.x,self.y_run,self.u_run,self.p)
|
|
265
265
|
# jac_run_ss_eval_up(self.jac_run,self.x,self.y_run,self.u_run,self.p)
|
|
266
266
|
|
|
267
|
+
|
|
268
|
+
def jac_ini_eval(self):
|
|
269
|
+
de_jac_ini_eval(self.jac_ini,self.x,self.y_ini,self.u_ini,self.p,self.Dt)
|
|
270
|
+
|
|
267
271
|
def jac_run_eval(self):
|
|
268
272
|
de_jac_run_eval(self.jac_run,self.x,self.y_run,self.u_run,self.p,self.Dt)
|
|
269
273
|
|
|
@@ -1800,24 +1804,24 @@ def c_h_eval(z,x,y,u,p,Dt):
|
|
|
1800
1804
|
|
|
1801
1805
|
def sp_jac_ini_vectors():
|
|
1802
1806
|
|
|
1803
|
-
sp_jac_ini_ia = [0, 1,
|
|
1804
|
-
sp_jac_ini_ja = [0, 1, 3, 4, 5, 9, 13,
|
|
1805
|
-
sp_jac_ini_nia =
|
|
1806
|
-
sp_jac_ini_nja =
|
|
1807
|
+
sp_jac_ini_ia = [0, 1, 12, 2, 3, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 6, 2, 3, 4, 5, 7, 2, 3, 4, 5, 8, 2, 3, 4, 5, 9, 2, 6, 7, 10, 4, 8, 9, 11, 12, 1, 12, 13]
|
|
1808
|
+
sp_jac_ini_ja = [0, 1, 3, 4, 5, 9, 13, 18, 23, 28, 33, 37, 41, 42, 45]
|
|
1809
|
+
sp_jac_ini_nia = 14
|
|
1810
|
+
sp_jac_ini_nja = 14
|
|
1807
1811
|
return sp_jac_ini_ia, sp_jac_ini_ja, sp_jac_ini_nia, sp_jac_ini_nja
|
|
1808
1812
|
|
|
1809
1813
|
def sp_jac_run_vectors():
|
|
1810
1814
|
|
|
1811
|
-
sp_jac_run_ia = [0, 1,
|
|
1812
|
-
sp_jac_run_ja = [0, 1, 3, 4, 5, 9, 13,
|
|
1813
|
-
sp_jac_run_nia =
|
|
1814
|
-
sp_jac_run_nja =
|
|
1815
|
+
sp_jac_run_ia = [0, 1, 12, 2, 3, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 6, 2, 3, 4, 5, 7, 2, 3, 4, 5, 8, 2, 3, 4, 5, 9, 2, 6, 7, 10, 4, 8, 9, 11, 12, 1, 12, 13]
|
|
1816
|
+
sp_jac_run_ja = [0, 1, 3, 4, 5, 9, 13, 18, 23, 28, 33, 37, 41, 42, 45]
|
|
1817
|
+
sp_jac_run_nia = 14
|
|
1818
|
+
sp_jac_run_nja = 14
|
|
1815
1819
|
return sp_jac_run_ia, sp_jac_run_ja, sp_jac_run_nia, sp_jac_run_nja
|
|
1816
1820
|
|
|
1817
1821
|
def sp_jac_trap_vectors():
|
|
1818
1822
|
|
|
1819
|
-
sp_jac_trap_ia = [0, 1,
|
|
1820
|
-
sp_jac_trap_ja = [0, 1, 3, 4, 5, 9, 13,
|
|
1821
|
-
sp_jac_trap_nia =
|
|
1822
|
-
sp_jac_trap_nja =
|
|
1823
|
+
sp_jac_trap_ia = [0, 1, 12, 2, 3, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 6, 2, 3, 4, 5, 7, 2, 3, 4, 5, 8, 2, 3, 4, 5, 9, 2, 6, 7, 10, 4, 8, 9, 11, 12, 1, 12, 13]
|
|
1824
|
+
sp_jac_trap_ja = [0, 1, 3, 4, 5, 9, 13, 18, 23, 28, 33, 37, 41, 42, 45]
|
|
1825
|
+
sp_jac_trap_nia = 14
|
|
1826
|
+
sp_jac_trap_nja = 14
|
|
1823
1827
|
return sp_jac_trap_ia, sp_jac_trap_ja, sp_jac_trap_nia, sp_jac_trap_nja
|
|
@@ -573,7 +573,7 @@ static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *);
|
|
|
573
573
|
void f_ini_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
574
574
|
|
|
575
575
|
data[0] = -x[0] + u[4];
|
|
576
|
-
data[1] = -p[8]*x[1] - y[
|
|
576
|
+
data[1] = -p[8]*x[1] - y[10] + 1;
|
|
577
577
|
|
|
578
578
|
}
|
|
579
579
|
|
|
@@ -583,78 +583,88 @@ data[0] = y[0] - u[4];
|
|
|
583
583
|
data[1] = y[1] - u[5];
|
|
584
584
|
data[2] = -u[2]/p[0] + y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + pow(y[2], 2)*p[1];
|
|
585
585
|
data[3] = -u[3]/p[0] + y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + pow(y[2], 2)*(-p[2] - 1.0/2.0*p[3]);
|
|
586
|
-
data[4] = 1
|
|
587
|
-
data[5] = pow(y[0], 2)*p[
|
|
588
|
-
data[6] = -
|
|
589
|
-
data[7] = -y[0]*y[2]*(
|
|
590
|
-
data[8] = -y[
|
|
591
|
-
data[9] =
|
|
586
|
+
data[4] = -pow(y[0], 2)*p[1] - y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + y[4];
|
|
587
|
+
data[5] = pow(y[0], 2)*p[2] - y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3])) + y[5];
|
|
588
|
+
data[6] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) - pow(y[2], 2)*p[1] + y[6];
|
|
589
|
+
data[7] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + pow(y[2], 2)*p[2] + y[7];
|
|
590
|
+
data[8] = -y[8] + 1.4433756729740647e-6*p[0]*sqrt(pow(y[4], 2) + pow(y[5], 2))/y[0];
|
|
591
|
+
data[9] = -y[9] + 1.4433756729740647e-6*p[0]*sqrt(pow(y[6], 2) + pow(y[7], 2))/y[2];
|
|
592
|
+
data[10] = 1.0 - y[10];
|
|
593
|
+
data[11] = p[7]*x[1] + p[6]*(1 - y[10]) - y[11];
|
|
592
594
|
|
|
593
595
|
}
|
|
594
596
|
|
|
595
597
|
void h_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
596
598
|
|
|
597
|
-
data[0] =
|
|
598
|
-
data[1] =
|
|
599
|
-
data[2] = p[0]*y[
|
|
600
|
-
data[3] = p[0]*y[
|
|
601
|
-
data[4] =
|
|
602
|
-
data[5] =
|
|
603
|
-
data[6] = y[
|
|
604
|
-
data[7] = y[
|
|
599
|
+
data[0] = y[0];
|
|
600
|
+
data[1] = y[2];
|
|
601
|
+
data[2] = p[0]*y[4];
|
|
602
|
+
data[3] = p[0]*y[5];
|
|
603
|
+
data[4] = p[0]*y[6];
|
|
604
|
+
data[5] = p[0]*y[7];
|
|
605
|
+
data[6] = y[8];
|
|
606
|
+
data[7] = y[9];
|
|
605
607
|
data[8] = x[0];
|
|
606
608
|
|
|
607
609
|
}
|
|
608
610
|
|
|
609
611
|
void de_jac_ini_up_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
610
612
|
|
|
611
|
-
data[
|
|
612
|
-
data[
|
|
613
|
-
data[
|
|
613
|
+
data[15] = -p[8];
|
|
614
|
+
data[183] = p[7];
|
|
615
|
+
data[194] = -p[6];
|
|
614
616
|
|
|
615
617
|
}
|
|
616
618
|
|
|
617
619
|
void de_jac_ini_xy_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
618
620
|
|
|
619
|
-
data[
|
|
620
|
-
data[
|
|
621
|
-
data[
|
|
622
|
-
data[
|
|
623
|
-
data[
|
|
624
|
-
data[
|
|
625
|
-
data[
|
|
626
|
-
data[
|
|
627
|
-
data[86] = 2*y[0]*p[1] - y[2]*(p[2]*sin(y[1] - y[3])
|
|
628
|
-
data[87] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3])
|
|
629
|
-
data[88] = -y[0]*(p[2]*sin(y[1] - y[3])
|
|
630
|
-
data[89] = -y[0]*y[2]*(
|
|
631
|
-
data[
|
|
632
|
-
data[99] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
633
|
-
data[100] = -y[0]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
621
|
+
data[58] = y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
622
|
+
data[59] = y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
623
|
+
data[60] = y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + 2*y[2]*p[1];
|
|
624
|
+
data[61] = y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
625
|
+
data[72] = y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
626
|
+
data[73] = y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
627
|
+
data[74] = y[0]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + 2*y[2]*(-p[2] - 1.0/2.0*p[3]);
|
|
628
|
+
data[75] = y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
629
|
+
data[86] = -2*y[0]*p[1] - y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
630
|
+
data[87] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
631
|
+
data[88] = -y[0]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
632
|
+
data[89] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
633
|
+
data[100] = 2*y[0]*p[2] - y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
634
634
|
data[101] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
635
|
-
data[
|
|
636
|
-
data[
|
|
637
|
-
data[
|
|
638
|
-
data[
|
|
639
|
-
data[
|
|
640
|
-
data[
|
|
641
|
-
data[
|
|
642
|
-
data[
|
|
635
|
+
data[102] = -y[0]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
636
|
+
data[103] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
637
|
+
data[114] = -y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
638
|
+
data[115] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
639
|
+
data[116] = -y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) - 2*y[2]*p[1];
|
|
640
|
+
data[117] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
641
|
+
data[128] = -y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
642
|
+
data[129] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
643
|
+
data[130] = -y[0]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + 2*y[2]*p[2];
|
|
644
|
+
data[131] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
645
|
+
data[142] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[4], 2) + pow(y[5], 2))/pow(y[0], 2);
|
|
646
|
+
data[146] = 1.4433756729740647e-6*p[0]*y[4]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
|
|
647
|
+
data[147] = 1.4433756729740647e-6*p[0]*y[5]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
|
|
648
|
+
data[158] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[6], 2) + pow(y[7], 2))/pow(y[2], 2);
|
|
649
|
+
data[162] = 1.4433756729740647e-6*p[0]*y[6]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
|
|
650
|
+
data[163] = 1.4433756729740647e-6*p[0]*y[7]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
|
|
643
651
|
|
|
644
652
|
}
|
|
645
653
|
|
|
646
654
|
void de_jac_ini_num_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
647
655
|
|
|
648
656
|
data[0] = -1;
|
|
649
|
-
data[
|
|
650
|
-
data[
|
|
651
|
-
data[
|
|
652
|
-
data[
|
|
653
|
-
data[
|
|
654
|
-
data[
|
|
655
|
-
data[
|
|
656
|
-
data[
|
|
657
|
-
data[
|
|
657
|
+
data[26] = -1;
|
|
658
|
+
data[30] = 1;
|
|
659
|
+
data[45] = 1;
|
|
660
|
+
data[90] = 1;
|
|
661
|
+
data[105] = 1;
|
|
662
|
+
data[120] = 1;
|
|
663
|
+
data[135] = 1;
|
|
664
|
+
data[150] = -1;
|
|
665
|
+
data[165] = -1;
|
|
666
|
+
data[180] = -1;
|
|
667
|
+
data[195] = -1;
|
|
658
668
|
|
|
659
669
|
}
|
|
660
670
|
|
|
@@ -573,7 +573,7 @@ static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *);
|
|
|
573
573
|
void f_run_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
574
574
|
|
|
575
575
|
data[0] = -x[0] + u[4];
|
|
576
|
-
data[1] = -p[8]*x[1] - y[
|
|
576
|
+
data[1] = -p[8]*x[1] - y[10] + 1;
|
|
577
577
|
|
|
578
578
|
}
|
|
579
579
|
|
|
@@ -583,78 +583,88 @@ data[0] = y[0] - u[4];
|
|
|
583
583
|
data[1] = y[1] - u[5];
|
|
584
584
|
data[2] = -u[2]/p[0] + y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + pow(y[2], 2)*p[1];
|
|
585
585
|
data[3] = -u[3]/p[0] + y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + pow(y[2], 2)*(-p[2] - 1.0/2.0*p[3]);
|
|
586
|
-
data[4] = 1
|
|
587
|
-
data[5] = pow(y[0], 2)*p[
|
|
588
|
-
data[6] = -
|
|
589
|
-
data[7] = -y[0]*y[2]*(
|
|
590
|
-
data[8] = -y[
|
|
591
|
-
data[9] =
|
|
586
|
+
data[4] = -pow(y[0], 2)*p[1] - y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + y[4];
|
|
587
|
+
data[5] = pow(y[0], 2)*p[2] - y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3])) + y[5];
|
|
588
|
+
data[6] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) - pow(y[2], 2)*p[1] + y[6];
|
|
589
|
+
data[7] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + pow(y[2], 2)*p[2] + y[7];
|
|
590
|
+
data[8] = -y[8] + 1.4433756729740647e-6*p[0]*sqrt(pow(y[4], 2) + pow(y[5], 2))/y[0];
|
|
591
|
+
data[9] = -y[9] + 1.4433756729740647e-6*p[0]*sqrt(pow(y[6], 2) + pow(y[7], 2))/y[2];
|
|
592
|
+
data[10] = 1.0 - y[10];
|
|
593
|
+
data[11] = p[7]*x[1] + p[6]*(1 - y[10]) - y[11];
|
|
592
594
|
|
|
593
595
|
}
|
|
594
596
|
|
|
595
597
|
void h_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
596
598
|
|
|
597
|
-
data[0] =
|
|
598
|
-
data[1] =
|
|
599
|
-
data[2] = p[0]*y[
|
|
600
|
-
data[3] = p[0]*y[
|
|
601
|
-
data[4] =
|
|
602
|
-
data[5] =
|
|
603
|
-
data[6] = y[
|
|
604
|
-
data[7] = y[
|
|
599
|
+
data[0] = y[0];
|
|
600
|
+
data[1] = y[2];
|
|
601
|
+
data[2] = p[0]*y[4];
|
|
602
|
+
data[3] = p[0]*y[5];
|
|
603
|
+
data[4] = p[0]*y[6];
|
|
604
|
+
data[5] = p[0]*y[7];
|
|
605
|
+
data[6] = y[8];
|
|
606
|
+
data[7] = y[9];
|
|
605
607
|
data[8] = x[0];
|
|
606
608
|
|
|
607
609
|
}
|
|
608
610
|
|
|
609
611
|
void de_jac_run_up_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
610
612
|
|
|
611
|
-
data[
|
|
612
|
-
data[
|
|
613
|
-
data[
|
|
613
|
+
data[15] = -p[8];
|
|
614
|
+
data[183] = p[7];
|
|
615
|
+
data[194] = -p[6];
|
|
614
616
|
|
|
615
617
|
}
|
|
616
618
|
|
|
617
619
|
void de_jac_run_xy_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
618
620
|
|
|
619
|
-
data[
|
|
620
|
-
data[
|
|
621
|
-
data[
|
|
622
|
-
data[
|
|
623
|
-
data[
|
|
624
|
-
data[
|
|
625
|
-
data[
|
|
626
|
-
data[
|
|
627
|
-
data[86] = 2*y[0]*p[1] - y[2]*(p[2]*sin(y[1] - y[3])
|
|
628
|
-
data[87] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3])
|
|
629
|
-
data[88] = -y[0]*(p[2]*sin(y[1] - y[3])
|
|
630
|
-
data[89] = -y[0]*y[2]*(
|
|
631
|
-
data[
|
|
632
|
-
data[99] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
633
|
-
data[100] = -y[0]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
621
|
+
data[58] = y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
622
|
+
data[59] = y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
623
|
+
data[60] = y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + 2*y[2]*p[1];
|
|
624
|
+
data[61] = y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
625
|
+
data[72] = y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
626
|
+
data[73] = y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
627
|
+
data[74] = y[0]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + 2*y[2]*(-p[2] - 1.0/2.0*p[3]);
|
|
628
|
+
data[75] = y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
629
|
+
data[86] = -2*y[0]*p[1] - y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
630
|
+
data[87] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
631
|
+
data[88] = -y[0]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
632
|
+
data[89] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
633
|
+
data[100] = 2*y[0]*p[2] - y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
634
634
|
data[101] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
635
|
-
data[
|
|
636
|
-
data[
|
|
637
|
-
data[
|
|
638
|
-
data[
|
|
639
|
-
data[
|
|
640
|
-
data[
|
|
641
|
-
data[
|
|
642
|
-
data[
|
|
635
|
+
data[102] = -y[0]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
636
|
+
data[103] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
637
|
+
data[114] = -y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
638
|
+
data[115] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
639
|
+
data[116] = -y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) - 2*y[2]*p[1];
|
|
640
|
+
data[117] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
|
|
641
|
+
data[128] = -y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
|
|
642
|
+
data[129] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
|
|
643
|
+
data[130] = -y[0]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + 2*y[2]*p[2];
|
|
644
|
+
data[131] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
|
|
645
|
+
data[142] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[4], 2) + pow(y[5], 2))/pow(y[0], 2);
|
|
646
|
+
data[146] = 1.4433756729740647e-6*p[0]*y[4]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
|
|
647
|
+
data[147] = 1.4433756729740647e-6*p[0]*y[5]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
|
|
648
|
+
data[158] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[6], 2) + pow(y[7], 2))/pow(y[2], 2);
|
|
649
|
+
data[162] = 1.4433756729740647e-6*p[0]*y[6]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
|
|
650
|
+
data[163] = 1.4433756729740647e-6*p[0]*y[7]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
|
|
643
651
|
|
|
644
652
|
}
|
|
645
653
|
|
|
646
654
|
void de_jac_run_num_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
|
|
647
655
|
|
|
648
656
|
data[0] = -1;
|
|
649
|
-
data[
|
|
650
|
-
data[
|
|
651
|
-
data[
|
|
652
|
-
data[
|
|
653
|
-
data[
|
|
654
|
-
data[
|
|
655
|
-
data[
|
|
656
|
-
data[
|
|
657
|
-
data[
|
|
657
|
+
data[26] = -1;
|
|
658
|
+
data[30] = 1;
|
|
659
|
+
data[45] = 1;
|
|
660
|
+
data[90] = 1;
|
|
661
|
+
data[105] = 1;
|
|
662
|
+
data[120] = 1;
|
|
663
|
+
data[135] = 1;
|
|
664
|
+
data[150] = -1;
|
|
665
|
+
data[165] = -1;
|
|
666
|
+
data[180] = -1;
|
|
667
|
+
data[195] = -1;
|
|
658
668
|
|
|
659
669
|
}
|
|
660
670
|
|