| 477 | } |
| 478 | |
| 479 | void tiny_initialize_sensitivity_matrices(TinySolver *solver) { |
| 480 | |
| 481 | int nu = solver->work->nu; |
| 482 | int nx = solver->work->nx; |
| 483 | // Initialize matrices with zeros |
| 484 | solver->cache->dKinf_drho = tinyMatrix::Zero(nu, nx); |
| 485 | solver->cache->dPinf_drho = tinyMatrix::Zero(nx, nx); |
| 486 | solver->cache->dC1_drho = tinyMatrix::Zero(nu, nu); |
| 487 | solver->cache->dC2_drho = tinyMatrix::Zero(nx, nx); |
| 488 | |
| 489 | const float dKinf_drho[4][12] = { |
| 490 | { 0.0001, -0.0001, -0.0025, 0.0003, 0.0007, 0.0050, 0.0001, -0.0001, -0.0008, 0.0000, 0.0001, 0.0008}, |
| 491 | { -0.0001, -0.0000, -0.0025, -0.0001, -0.0006, -0.0050, -0.0001, 0.0000, -0.0008, -0.0000, -0.0001, -0.0008}, |
| 492 | { 0.0000, 0.0000, -0.0025, 0.0001, 0.0004, 0.0050, 0.0000, 0.0000, -0.0008, 0.0000, 0.0000, 0.0008}, |
| 493 | { -0.0000, 0.0001, -0.0025, -0.0003, -0.0004, -0.0050, -0.0000, 0.0001, -0.0008, -0.0000, -0.0000, -0.0008} |
| 494 | }; |
| 495 | |
| 496 | const float dPinf_drho[12][12] = { |
| 497 | { 0.0494, -0.0045, -0.0000, 0.0110, 0.1300, -0.0283, 0.0280, -0.0026, -0.0000, 0.0004, 0.0070, -0.0094}, |
| 498 | { -0.0045, 0.0491, 0.0000, -0.1320, -0.0111, 0.0114, -0.0026, 0.0279, 0.0000, -0.0076, -0.0004, 0.0038}, |
| 499 | { -0.0000, 0.0000, 2.4450, 0.0000, -0.0000, -0.0000, -0.0000, 0.0000, 1.2593, 0.0000, 0.0000, 0.0000}, |
| 500 | { 0.0110, -0.1320, 0.0000, 0.3913, 0.0592, 0.3108, 0.0080, -0.0776, 0.0000, 0.0254, 0.0068, 0.0750}, |
| 501 | { 0.1300, -0.0111, -0.0000, 0.0592, 0.4420, 0.7771, 0.0797, -0.0081, -0.0000, 0.0068, 0.0350, 0.1875}, |
| 502 | { -0.0283, 0.0114, -0.0000, 0.3108, 0.7771, 10.0441, 0.0272, -0.0109, 0.0000, 0.0655, 0.1639, 2.6362}, |
| 503 | { 0.0280, -0.0026, -0.0000, 0.0080, 0.0797, 0.0272, 0.0163, -0.0016, -0.0000, 0.0005, 0.0047, 0.0032}, |
| 504 | { -0.0026, 0.0279, 0.0000, -0.0776, -0.0081, -0.0109, -0.0016, 0.0161, 0.0000, -0.0046, -0.0005, -0.0013}, |
| 505 | { -0.0000, 0.0000, 1.2593, 0.0000, -0.0000, 0.0000, -0.0000, 0.0000, 0.9232, 0.0000, 0.0000, 0.0000}, |
| 506 | { 0.0004, -0.0076, 0.0000, 0.0254, 0.0068, 0.0655, 0.0005, -0.0046, 0.0000, 0.0022, 0.0017, 0.0244}, |
| 507 | { 0.0070, -0.0004, 0.0000, 0.0068, 0.0350, 0.1639, 0.0047, -0.0005, 0.0000, 0.0017, 0.0054, 0.0610}, |
| 508 | { -0.0094, 0.0038, 0.0000, 0.0750, 0.1875, 2.6362, 0.0032, -0.0013, 0.0000, 0.0244, 0.0610, 0.9869} |
| 509 | }; |
| 510 | |
| 511 | const float dC1_drho[4][4] = { |
| 512 | { -0.0000, 0.0000, -0.0000, 0.0000}, |
| 513 | { 0.0000, -0.0000, 0.0000, -0.0000}, |
| 514 | { -0.0000, 0.0000, -0.0000, 0.0000}, |
| 515 | { 0.0000, -0.0000, 0.0000, -0.0000} |
| 516 | }; |
| 517 | |
| 518 | const float dC2_drho[12][12] = { |
| 519 | { 0.0000, -0.0000, 0.0000, 0.0000, 0.0000, -0.0000, 0.0000, -0.0000, 0.0000, 0.0000, 0.0000, -0.0000}, |
| 520 | { -0.0000, 0.0000, 0.0000, -0.0000, -0.0000, 0.0000, -0.0000, 0.0000, 0.0000, -0.0000, -0.0000, 0.0000}, |
| 521 | { -0.0000, 0.0000, 0.0001, 0.0000, -0.0000, -0.0000, -0.0000, 0.0000, 0.0000, 0.0000, -0.0000, -0.0000}, |
| 522 | { 0.0000, -0.0000, -0.0000, 0.0001, 0.0000, -0.0000, 0.0000, -0.0000, -0.0000, 0.0000, 0.0000, -0.0000}, |
| 523 | { 0.0000, -0.0000, -0.0000, 0.0000, 0.0001, -0.0000, 0.0000, -0.0000, -0.0000, 0.0000, 0.0000, -0.0000}, |
| 524 | { -0.0000, 0.0000, -0.0000, -0.0000, 0.0000, 0.0001, -0.0000, 0.0000, -0.0000, 0.0000, 0.0000, 0.0000}, |
| 525 | { 0.0000, -0.0000, 0.0000, 0.0000, 0.0000, -0.0000, 0.0000, -0.0000, 0.0000, 0.0000, 0.0000, -0.0000}, |
| 526 | { -0.0000, 0.0000, 0.0000, -0.0000, -0.0000, 0.0000, -0.0000, 0.0000, 0.0000, -0.0000, -0.0000, 0.0000}, |
| 527 | { -0.0000, 0.0000, 0.0021, 0.0000, -0.0000, -0.0000, -0.0000, 0.0000, 0.0006, 0.0000, -0.0000, -0.0000}, |
| 528 | { 0.0002, -0.0027, -0.0000, 0.0068, 0.0005, -0.0005, 0.0001, -0.0015, -0.0000, 0.0004, 0.0000, -0.0001}, |
| 529 | { 0.0027, -0.0002, 0.0000, 0.0005, 0.0066, -0.0011, 0.0015, -0.0001, 0.0000, 0.0000, 0.0004, -0.0002}, |
| 530 | { -0.0001, 0.0001, 0.0000, -0.0000, 0.0000, 0.0041, -0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0006} |
| 531 | }; |
| 532 | |
| 533 | |
| 534 | |
| 535 | // Map arrays to Eigen matrices |
| 536 | solver->cache->dKinf_drho = Map<const Matrix<float, 4, 12>>(dKinf_drho[0]).cast<tinytype>(); |