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.
@@ -573,52 +573,60 @@ static void (*_cffi_call_python_org)(struct _cffi_externpy_s *, char *);
573
573
  void de_jac_trap_up_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
574
574
 
575
575
  data[0] = 0.5*Dt + 1;
576
- data[13] = 0.5*Dt*p[8] + 1;
577
- data[18] = 0.5*Dt;
578
- data[133] = p[7];
579
- data[138] = -p[6];
576
+ data[15] = 0.5*Dt*p[8] + 1;
577
+ data[26] = 0.5*Dt;
578
+ data[183] = p[7];
579
+ data[194] = -p[6];
580
580
 
581
581
  }
582
582
 
583
583
  void de_jac_trap_xy_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
584
584
 
585
- data[50] = y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
586
- data[51] = y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
587
- data[52] = y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + 2*y[2]*p[1];
588
- data[53] = y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
589
- data[62] = y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
590
- data[63] = y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
591
- data[64] = 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]);
592
- data[65] = y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
593
- data[86] = 2*y[0]*p[1] - y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
594
- data[87] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
595
- data[88] = -y[0]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
596
- data[89] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
597
- data[98] = -2*y[0]*p[2] - y[0]*p[3] - y[2]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
598
- data[99] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
599
- data[100] = -y[0]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
585
+ data[58] = y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
586
+ data[59] = y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
587
+ data[60] = y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) + 2*y[2]*p[1];
588
+ data[61] = y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
589
+ data[72] = y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
590
+ data[73] = y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
591
+ 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]);
592
+ data[75] = y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
593
+ data[86] = -2*y[0]*p[1] - y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
594
+ data[87] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
595
+ data[88] = -y[0]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
596
+ data[89] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
597
+ data[100] = 2*y[0]*p[2] - y[2]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
600
598
  data[101] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
601
- data[110] = -y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
602
- data[111] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
603
- data[112] = -y[0]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3])) + 2*y[2]*p[1];
604
- data[113] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
605
- data[122] = -y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
606
- data[123] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
607
- data[124] = -y[0]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3])) - 2*y[2]*p[2] - y[2]*p[3];
608
- data[125] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
599
+ data[102] = -y[0]*(p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
600
+ data[103] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
601
+ data[114] = -y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
602
+ data[115] = -y[0]*y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
603
+ data[116] = -y[0]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3])) - 2*y[2]*p[1];
604
+ data[117] = -y[0]*y[2]*(-p[2]*cos(y[1] - y[3]) - p[1]*sin(y[1] - y[3]));
605
+ data[128] = -y[2]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3]));
606
+ data[129] = -y[0]*y[2]*(-p[2]*sin(y[1] - y[3]) + p[1]*cos(y[1] - y[3]));
607
+ data[130] = -y[0]*(p[2]*cos(y[1] - y[3]) + p[1]*sin(y[1] - y[3])) + 2*y[2]*p[2];
608
+ data[131] = -y[0]*y[2]*(p[2]*sin(y[1] - y[3]) - p[1]*cos(y[1] - y[3]));
609
+ data[142] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[4], 2) + pow(y[5], 2))/pow(y[0], 2);
610
+ data[146] = 1.4433756729740647e-6*p[0]*y[4]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
611
+ data[147] = 1.4433756729740647e-6*p[0]*y[5]*pow(pow(y[4], 2) + pow(y[5], 2), -0.5)/y[0];
612
+ data[158] = -1.4433756729740647e-6*p[0]*sqrt(pow(y[6], 2) + pow(y[7], 2))/pow(y[2], 2);
613
+ data[162] = 1.4433756729740647e-6*p[0]*y[6]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
614
+ data[163] = 1.4433756729740647e-6*p[0]*y[7]*pow(pow(y[6], 2) + pow(y[7], 2), -0.5)/y[2];
609
615
 
610
616
  }
611
617
 
612
618
  void de_jac_trap_num_eval(double *data,double *x,double *y,double *u,double *p,double Dt){
613
619
 
614
- data[26] = 1;
615
- data[39] = 1;
616
- data[78] = -1;
617
- data[91] = 1;
618
- data[104] = 1;
619
- data[117] = 1;
620
- data[130] = 1;
621
- data[143] = -1;
620
+ data[30] = 1;
621
+ data[45] = 1;
622
+ data[90] = 1;
623
+ data[105] = 1;
624
+ data[120] = 1;
625
+ data[135] = 1;
626
+ data[150] = -1;
627
+ data[165] = -1;
628
+ data[180] = -1;
629
+ data[195] = -1;
622
630
 
623
631
  }
624
632
 
@@ -3,5 +3,9 @@
3
3
  "theta_1": 0.0,
4
4
  "V_2": 1.0,
5
5
  "theta_2": 0.0,
6
+ "p_line_pu_1_2": 0.1,
7
+ "p_line_pu_2_1": -0.1,
8
+ "I_1_2": 0.1,
9
+ "I_2_1": -0.1,
6
10
  "omega_coi": 1.0
7
11
  }
@@ -3,5 +3,9 @@
3
3
  "theta_1": 0.0,
4
4
  "V_2": 1.0,
5
5
  "theta_2": 0.0,
6
+ "p_line_pu_1_2": 0.1,
7
+ "p_line_pu_2_1": -0.1,
8
+ "I_1_2": 0.1,
9
+ "I_2_1": -0.1,
6
10
  "omega_coi": 1.0
7
11
  }
@@ -263,6 +263,10 @@ class model:
263
263
  # jac_run_ss_eval_xy(self.jac_run,self.x,self.y_run,self.u_run,self.p)
264
264
  # jac_run_ss_eval_up(self.jac_run,self.x,self.y_run,self.u_run,self.p)
265
265
 
266
+
267
+ def jac_ini_eval(self):
268
+ de_jac_ini_eval(self.jac_ini,self.x,self.y_ini,self.u_ini,self.p,self.Dt)
269
+
266
270
  def jac_run_eval(self):
267
271
  de_jac_run_eval(self.jac_run,self.x,self.y_run,self.u_run,self.p,self.Dt)
268
272
 
File without changes
@@ -0,0 +1,61 @@
1
+ import numpy as np
2
+ import sympy as sym
3
+ from pydae.bmapu import bmapu_builder
4
+ from pydae.build_v2 import build_mkl,build_numba
5
+
6
+
7
+
8
+ def build():
9
+ L,G,M,K_d = sym.symbols('L,G,M,K_d', real=True)
10
+ p_x,p_y,v_x,v_y = sym.symbols('p_x,p_y,v_x,v_y', real=True)
11
+ lam,f_x,theta = sym.symbols('lam,f_x,theta', real=True)
12
+
13
+
14
+ dp_x = v_x
15
+ dp_y = v_y
16
+ dv_x = (-2*p_x*lam + f_x - K_d*v_x)/M
17
+ dv_y = (-M*G - 2*p_y*lam - K_d*v_y)/M
18
+
19
+ g_1 = p_x**2 + p_y**2 - L**2 -lam*1e-6
20
+ g_2 = -theta + sym.atan2(p_x,-p_y)
21
+
22
+ params_dict = {'L':5.21,'G':9.81,'M':10.0,'K_d':1e-3} # parameters with default values
23
+
24
+ u_ini_dict = {'theta':np.deg2rad(5.0)} # input for the initialization problem
25
+ u_run_dict = {'f_x':0} # input for the running problem, its value is updated
26
+
27
+ sys_dict = {'name':'pendulum',
28
+ 'params_dict':params_dict,
29
+ 'f_list':[dp_x,dp_y,dv_x,dv_y],
30
+ 'g_list':[g_1,g_2],
31
+ 'x_list':[ p_x, p_y, v_x, v_y],
32
+ 'y_ini_list':[lam,f_x],
33
+ 'y_run_list':[lam,theta],
34
+ 'u_ini_dict':u_ini_dict,
35
+ 'u_run_dict':u_run_dict,
36
+ 'h_dict':{'E_p':M*G*(p_y+L),'E_k':0.5*M*(v_x**2+v_y**2),'f_x':f_x}}
37
+
38
+ build_numba(sys_dict)
39
+
40
+
41
+
42
+ if __name__ == "__main__":
43
+
44
+ build()
45
+ import pendulum
46
+ model = pendulum.model()
47
+
48
+
49
+ M = 30.0 # mass of the bob (kg)
50
+ L = 5.21 # length of the pendulum (m)
51
+
52
+ model.ini({'M':M,'L':L, # parameters setting
53
+ 'theta':np.deg2rad(0) # initial desired angle = 0º
54
+ },-1) # here -1 means that -1 is considered as initial gess for
55
+ # dynamic and algebraic states
56
+
57
+ model.report_x() # obtained dynamic states
58
+ model.report_y() # obtained algebraic states
59
+ model.report_z() # obtained outputs
60
+ model.report_u() # obtained algebraic states (theta is both state and output; f_x is both input and output)
61
+ model.report_params() # considered parameters
@@ -0,0 +1,191 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "id": "3cebf691",
7
+ "metadata": {},
8
+ "outputs": [
9
+ {
10
+ "data": {
11
+ "text/plain": [
12
+ "4"
13
+ ]
14
+ },
15
+ "execution_count": 1,
16
+ "metadata": {},
17
+ "output_type": "execute_result"
18
+ }
19
+ ],
20
+ "source": [
21
+ "2+2"
22
+ ]
23
+ },
24
+ {
25
+ "cell_type": "code",
26
+ "execution_count": 2,
27
+ "id": "d0478c7d",
28
+ "metadata": {},
29
+ "outputs": [
30
+ {
31
+ "name": "stdout",
32
+ "output_type": "stream",
33
+ "text": [
34
+ "p_x = 0.00\n",
35
+ "p_y = -5.21\n",
36
+ "v_x = 0.00\n",
37
+ "v_y = 0.00\n",
38
+ "lam = 28.24\n",
39
+ "theta = 0.00\n",
40
+ "E_p = -0.00\n",
41
+ "E_k = 0.00\n",
42
+ "f_x = -0.00\n",
43
+ "f_x =-0.00\n",
44
+ "L = 5.21\n",
45
+ "G = 9.81\n",
46
+ "M =30.00\n",
47
+ "K_d = 0.00\n"
48
+ ]
49
+ }
50
+ ],
51
+ "source": [
52
+ "import pendulum\n",
53
+ "import numpy as np\n",
54
+ "model = pendulum.model()\n",
55
+ "\n",
56
+ "\n",
57
+ "M = 30.0 # mass of the bob (kg)\n",
58
+ "L = 5.21 # length of the pendulum (m)\n",
59
+ "\n",
60
+ "model.ini({'M':M,'L':L, # parameters setting\n",
61
+ " 'theta':np.deg2rad(0) # initial desired angle = 0º\n",
62
+ " },-1) # here -1 means that -1 is considered as initial gess for\n",
63
+ " # dynamic and algebraic states\n",
64
+ "\n",
65
+ "model.report_x() # obtained dynamic states\n",
66
+ "model.report_y() # obtained algebraic states\n",
67
+ "model.report_z() # obtained outputs\n",
68
+ "model.report_u() # obtained algebraic states (theta is both state and output; f_x is both input and output)\n",
69
+ "model.report_params() # considered parameters\n"
70
+ ]
71
+ },
72
+ {
73
+ "cell_type": "code",
74
+ "execution_count": 3,
75
+ "id": "fc98ab21",
76
+ "metadata": {},
77
+ "outputs": [
78
+ {
79
+ "ename": "LinAlgError",
80
+ "evalue": "Matrix is singular to machine precision.",
81
+ "output_type": "error",
82
+ "traceback": [
83
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
84
+ "\u001b[31mLinAlgError\u001b[39m Traceback (most recent call last)",
85
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 10\u001b[39m\n\u001b[32m 1\u001b[39m xy_0_dict = {\n\u001b[32m 2\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mp_x\u001b[39m\u001b[33m\"\u001b[39m: \u001b[32m1.943753270464573e-27\u001b[39m,\n\u001b[32m 3\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mp_y\u001b[39m\u001b[33m\"\u001b[39m: \u001b[32m0\u001b[39m,\n\u001b[32m (...)\u001b[39m\u001b[32m 7\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mf_x\u001b[39m\u001b[33m\"\u001b[39m: -\u001b[32m1.0210510686201435e-24\u001b[39m\n\u001b[32m 8\u001b[39m }\n\u001b[32m---> \u001b[39m\u001b[32m10\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43mini\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mM\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43mM\u001b[49m\u001b[43m,\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mL\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43mL\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# parameters setting\u001b[39;49;00m\n\u001b[32m 11\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mtheta\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mdeg2rad\u001b[49m\u001b[43m(\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# initial desired angle = 0º\u001b[39;49;00m\n\u001b[32m 12\u001b[39m \u001b[43m \u001b[49m\u001b[43m}\u001b[49m\u001b[43m,\u001b[49m\u001b[43mxy_0_dict\u001b[49m\u001b[43m)\u001b[49m \n",
86
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\jmmau\\workspace\\pydae\\src\\pydae\\utils\\algebra\\pendulum.py:501\u001b[39m, in \u001b[36mmodel.ini\u001b[39m\u001b[34m(self, up_dict, xy_0)\u001b[39m\n\u001b[32m 498\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(xy_0) == \u001b[38;5;28mfloat\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(xy_0) == \u001b[38;5;28mint\u001b[39m:\n\u001b[32m 499\u001b[39m \u001b[38;5;28mself\u001b[39m.xy_0 = np.ones(\u001b[38;5;28mself\u001b[39m.N_x+\u001b[38;5;28mself\u001b[39m.N_y,dtype=np.float64)*xy_0\n\u001b[32m--> \u001b[39m\u001b[32m501\u001b[39m xy_ini,it = \u001b[43msstate\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mxy_0\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mu_ini\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mp\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 502\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mjac_ini\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 503\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mN_x\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mN_y\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 504\u001b[39m \u001b[43m \u001b[49m\u001b[43mmax_it\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmax_it\u001b[49m\u001b[43m,\u001b[49m\u001b[43mtol\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mitol\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 506\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m it < \u001b[38;5;28mself\u001b[39m.max_it-\u001b[32m1\u001b[39m:\n\u001b[32m 508\u001b[39m \u001b[38;5;28mself\u001b[39m.xy_ini = xy_ini\n",
87
+ "\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\jmmau\\miniconda3\\Lib\\site-packages\\numba\\np\\linalg.py:913\u001b[39m, in \u001b[36m_inv_err_handler\u001b[39m\u001b[34m()\u001b[39m\n\u001b[32m 911\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m \u001b[32m0\u001b[39m \u001b[38;5;66;03m# unreachable\u001b[39;00m\n\u001b[32m 912\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m r > \u001b[32m0\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m913\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m np.linalg.LinAlgError(\n\u001b[32m 914\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mMatrix is singular to machine precision.\u001b[39m\u001b[33m\"\u001b[39m)\n",
88
+ "\u001b[31mLinAlgError\u001b[39m: Matrix is singular to machine precision."
89
+ ]
90
+ }
91
+ ],
92
+ "source": [
93
+ "xy_0_dict = {\n",
94
+ " \"p_x\": 1.943753270464573e-27,\n",
95
+ " \"p_y\": 0,\n",
96
+ " \"v_x\": 0.0,\n",
97
+ " \"v_y\": 0.0,\n",
98
+ " \"lam\": 0,\n",
99
+ " \"f_x\": -1.0210510686201435e-24\n",
100
+ "}\n",
101
+ "\n",
102
+ "model.ini({'M':M,'L':L, # parameters setting\n",
103
+ " 'theta':np.deg2rad(0) # initial desired angle = 0º\n",
104
+ " },xy_0_dict) \n",
105
+ "\n"
106
+ ]
107
+ },
108
+ {
109
+ "cell_type": "code",
110
+ "execution_count": 6,
111
+ "id": "20241fd3",
112
+ "metadata": {},
113
+ "outputs": [
114
+ {
115
+ "data": {
116
+ "text/plain": [
117
+ "array([[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,\n",
118
+ " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n",
119
+ " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
120
+ " 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n",
121
+ " [-0.00000000e+00, 0.00000000e+00, -3.33333333e-05,\n",
122
+ " 0.00000000e+00, -0.00000000e+00, 3.33333333e-02],\n",
123
+ " [ 0.00000000e+00, -0.00000000e+00, 0.00000000e+00,\n",
124
+ " -3.33333333e-05, -0.00000000e+00, 0.00000000e+00],\n",
125
+ " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n",
126
+ " 0.00000000e+00, -1.00000000e-06, 0.00000000e+00],\n",
127
+ " [ nan, nan, 0.00000000e+00,\n",
128
+ " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])"
129
+ ]
130
+ },
131
+ "execution_count": 6,
132
+ "metadata": {},
133
+ "output_type": "execute_result"
134
+ }
135
+ ],
136
+ "source": [
137
+ "xy_0_dict = {\n",
138
+ " \"p_x\": 0.0,\n",
139
+ " \"p_y\": 0.0,\n",
140
+ " \"v_x\": 0.0,\n",
141
+ " \"v_y\": 0.0,\n",
142
+ " \"lam\": 0.0,\n",
143
+ " \"f_x\": 0.0\n",
144
+ "}\n",
145
+ "\n",
146
+ "model.dict2xy0(xy_0_dict)\n",
147
+ "model.jac_ini_eval()\n",
148
+ "model.jac_ini"
149
+ ]
150
+ },
151
+ {
152
+ "cell_type": "code",
153
+ "execution_count": null,
154
+ "id": "758508ea",
155
+ "metadata": {},
156
+ "outputs": [],
157
+ "source": [
158
+ "model.save_xy_0('xy_0.json')"
159
+ ]
160
+ },
161
+ {
162
+ "cell_type": "code",
163
+ "execution_count": null,
164
+ "id": "81147185",
165
+ "metadata": {},
166
+ "outputs": [],
167
+ "source": []
168
+ }
169
+ ],
170
+ "metadata": {
171
+ "kernelspec": {
172
+ "display_name": "base",
173
+ "language": "python",
174
+ "name": "python3"
175
+ },
176
+ "language_info": {
177
+ "codemirror_mode": {
178
+ "name": "ipython",
179
+ "version": 3
180
+ },
181
+ "file_extension": ".py",
182
+ "mimetype": "text/x-python",
183
+ "name": "python",
184
+ "nbconvert_exporter": "python",
185
+ "pygments_lexer": "ipython3",
186
+ "version": "3.13.9"
187
+ }
188
+ },
189
+ "nbformat": 4,
190
+ "nbformat_minor": 5
191
+ }