Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed! - OpenModelica - modelica

I want to model a storage using phase change materials. Basically, a hot heat transfer medium flows into one plate of the exchanger and a cold heat transfer medium flows in counterflow into another plate. The plate is located between 2 layers of encapsulated PCM. I would like to determine the outlet temperature of the hot and cold heat carriers for each instant. I made a spatial discretization (2D for the MCP part and 1D for the heat carriers).
When simulating my model, I get 9 error messages. Here are some examples of messages obtained:
[1] 14:20:03 Ecriture Notification
Skipped loading package SYNERGI (3,default) using MODELICAPATH C:/Program Files/OpenModelica/lib/omlibrary (uses-annotation may be wrong)
[3] 14:20:03 Traduction Erreur
Internal error DAEUtil.traverseDAEEquationsStmts not implemented correctly: for x in 1:1 loop
A := (ratio_a * PCM.ks_MCP + (1.0 - ratio_a) * Fin.k_ailettes) / 0.2;
der(A) := 0.0;
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / 0.2;
der(B) := 0.0;
A_prim := T_xy[x,y + 2,1] - 4.0 * T_xy[x,y + 1,1];
der(A_prim) := -0.0;
C_xy := (((-fl_xy[x,y + 2,1]) + 4.0 * fl_xy[x,y + 1,1]) / 0.2 * ((-T_xy[x,y + 2,1]) + 4.0 * T_xy[x,y + 1,1]) / 0.2 + ((-fl_xy[x + 2,y,1]) + 4.0 * fl_xy[x + 1,y,1]) / 0.2 * ((-T_xy[x + 2,y,1]) + 4.0 * T_xy[x + 1,y,1]) / 0.2) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5.0 * T_xy[x,y + 1,1]) + 4.0 * T_xy[x,y + 2,1] - T_xy[x,y + 3,1]) / 0.01 + ((-5.0 * T_xy[x + 1,y,1]) + 4.0 * T_xy[x + 2,y,1] - T_xy[x + 3,y,1]) / 0.01) * (ratio_a * PCM.ks_MCP + (1.0 - ratio_a) * Fin.k_ailettes);
der(C_xy) := 0.0;
CC_xy := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5.0 * T_xy[x,y + 1,1]) + 4.0 * T_xy[x,y + 2,1] - T_xy[x,y + 3,1]) / 0.01 + ((-5.0 * T_xy[x + 1,y,1]) + 4.0 * T_xy[x + 2,y,1] - T_xy[x + 3,y,1]) / 0.01) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-3.0 * T_xy[x + 2,y,1]) + 12.0 * T_xy[x + 1,y,1]) / 0.04000000000000001 + ((-3.0 * T_xy[x,y + 2,1]) + 12.0 * T_xy[x,y + 1,1]) / 0.04000000000000001);
der(CC_xy) := 0.0;
D_xy := -(3.0 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x,y + 2,1]) + 4.0 * fl_xy[x,y + 1,1]) / 0.04000000000000001 + ((-fl_xy[x + 2,y,1]) + 4.0 * fl_xy[x + 1,y,1]) / 0.04000000000000001) + 2.0 * (ratio_a * PCM.ks_MCP + (1.0 - ratio_a) * Fin.k_ailettes) * 200.0);
der(D_xy) := -0.0;
fl_xy[x,y,1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x,y,1]) + C_xy + D_xy * T_xy[x,y,1]) / (CC_xy + T_xy[x,y,1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * 849.9999999999999);
T_xy[x,y,1] := (h_ext * T_ext + A * A_prim + B * A_prim * fl_xy[x,y,1]) / (h_ext - 3.0 * A - 3.0 * B * fl_xy[x,y,1]);
end for;
[4] 17:05:49 Traduction Erreur
Internal error - IndexReduction.pantelidesIndexReductionMSS failed! Use -d=bltdump to get more information
[5] 14:20:03 Traduction Erreur
Internal error - IndexReduction.pantelidesIndexReductionMSS failed! Use -d=bltdump to get more information
[6] 14:20:04 Traduction Erreur
Internal error - IndexReduction.pantelidesIndexReduction1 failed! Use -d=bltdump to get more information
[7] 14:20:04 Traduction Erreur
Internal error - IndexReduction.pantelidesIndexReduction failed!
[8] 14:20:04 Traduction Erreur
Internal error Transformation Module PFPlusExt index Reduction Method Pantelides failed!
[9] 14:20:04 Ecriture Avertissement
Could not preserve the formatting of the model instead internal pretty-printing algorithm is used
This is my code:
model Octadecanol
parameter Modelica.Units.SI.Temperature T_fusion=25;
parameter Modelica.Units.SI.ThermalConductivity ks_MCP=0.301;
parameter Modelica.Units.SI.ThermalConductivity kl_MCP=0.205;
parameter Modelica.Units.SI.Density rho_MCP=850;
parameter Modelica.Units.SI.SpecificHeatCapacity cp_MCP_s=1750;
parameter Modelica.Units.SI.SpecificHeatCapacity cp_MCP_l=2150;
type Heat=Real(unit="J.kg-1");
parameter Heat h_latent = 226000;
model Ailettes
parameter Modelica.Units.SI.ThermalConductivity k_ailettes=20;
parameter Modelica.Units.SI.Volume V_ailettes=0.2;
parameter Modelica.Units.SI.Density rho_ailettes=1200;
model Glycol
parameter Modelica.Units.SI.ThermalConductivity k_c=0.6;
parameter Modelica.Units.SI.DynamicViscosity mu_c=0.001139;
parameter Modelica.Units.SI.Density rho_c=1000;
parameter Modelica.Units.SI.SpecificHeatCapacity cp_c=4186;
model Water
parameter Modelica.Units.SI.ThermalConductivity k_f=0.6;
parameter Modelica.Units.SI.DynamicViscosity mu_f=0.001139;
parameter Modelica.Units.SI.Density rho_f=1000;
parameter Modelica.Units.SI.SpecificHeatCapacity cp_f=4186;
model PCM
Modelica.Units.SI.Temperature T_stock (start = T_init);
Modelica.Units.SI.Temperature Ts_moy_c (start = T_init);
Modelica.Units.SI.Temperature Ts_moy_f (start = T_init);
Modelica.Units.SI.ThermalConductivity k_eff_MCP_ref;
Modelica.Units.SI.ThermalConductivity k_MCP_ref;
Modelica.Units.SI.SpecificHeatCapacity cp_MCP_ref;
Water Cold;
Glycol Hot;
Octadecanol PCM;
Ailettes Fin;
parameter Modelica.Units.SI.Temperature T_ext = 15;
parameter Modelica.Units.SI.MassFlowRate debit_sol = 60 * 150 / (3.6 * Hot.rho_c);
parameter Modelica.Units.SI.Temperature T_out_PAC = 10;
parameter Modelica.Units.SI.Temperature T_out_sol = 100;
parameter Integer Nombre_MCP = 1;
parameter Modelica.Units.SI.Length H_MCP = 0.4;
parameter Modelica.Units.SI.Length P_MCP = 0.4;
parameter Modelica.Units.SI.Length L_MCP = 0.4;
parameter Modelica.Units.SI.Length L_tuyau = 0.05;
parameter Modelica.Units.SI.Temperature T_init = 15;
parameter Modelica.Units.SI.Mass M_MCP = 50;
parameter Modelica.Units.SI.Volume V_MCP = M_MCP / PCM.rho_MCP;
parameter Modelica.Units.SI.Length L_batt_tot = (L_MCP + 2) * Nombre_MCP + L_MCP;
parameter Modelica.Units.SI.Length d_h_tuyau = 2 * S ^ 2 / (P_MCP + L_tuyau);
parameter Modelica.Units.SI.Area S = P_MCP * L_tuyau;
parameter Modelica.Units.SI.MassFlowRate debit_PAC = 2.5;
parameter Modelica.Units.SI.MassFlowRate debit_f = debit_PAC / Nombre_MCP;
parameter Modelica.Units.SI.MassFlowRate debit_c = debit_sol / Nombre_MCP;
parameter Modelica.Units.SI.DimensionlessRatio ratio_a = V_MCP / (V_MCP + Fin.V_ailettes);
parameter Modelica.Units.SI.CoefficientOfHeatTransfer h_ext = 500;
parameter Modelica.Units.SI.CoefficientOfHeatTransfer h_f = 0.664 * debit_f ^ 0.5 * Cold.k_f ^ (2 / 3) * Cold.cp_f ^ (1 / 3) / (Cold.mu_f ^ (1 / 6) * d_h_tuyau);
parameter Modelica.Units.SI.CoefficientOfHeatTransfer h_c = 0.664 * debit_c ^ 0.5 * Hot.k_c ^ (2 / 3) * Hot.cp_c ^ (1 / 3) / (Hot.mu_c ^ (1 / 6) * d_h_tuyau);
parameter Modelica.Units.SI.CoefficientOfHeatTransfer h_cf = 1 / (1 / h_c + 1 / h_f);
parameter Real Delta_x = 0.1;
parameter Real Delta_y = 0.1;
parameter Integer x_tot = integer(L_MCP / Delta_x);
parameter Integer y_tot = integer(H_MCP / Delta_y);
final constant Real pi = 2 * Modelica.Math.asin(1.0);
Real[:, :] Tc_y (start = fill(T_init, y_tot, Nombre_MCP));
Real[:, :] Tf_y (start = fill(T_init, y_tot, Nombre_MCP));
Real[:, :, :] T_xy (start = fill(PCM.T_fusion, x_tot, y_tot, Nombre_MCP + 1));
Real[:, :, :] fl_xy (start = fill(0, x_tot, y_tot, Nombre_MCP + 1));
Real[:, :] racines (start = fill(0, 2, 2));
Real Poly_1, Poly_2, Poly_3;
Real A, A_prim, B, C_y_prim, C_xy, C_xy_trio, CC_y, CC_xy, CC_xy_trio, D_y_prim, D_xy, D_xy_trio, E, G, H, I, L, N;
// Real K, J, H_prim, I_prim;
algorithm
k_MCP_ref := PCM.ks_MCP + fl_xy[1, 1, 1] * (PCM.kl_MCP - PCM.ks_MCP);
k_eff_MCP_ref := ratio_a * k_MCP_ref + (1 - ratio_a) * Fin.k_ailettes;
cp_MCP_ref := PCM.cp_MCP_s + fl_xy[1,1,1] * (PCM.cp_MCP_l - PCM.cp_MCP_s);
for y in 1:1 loop
for x in 1:1 loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / (2 * Delta_y);
A_prim := T_xy[x, y + 2, 1] - 4 * T_xy[x, y + 1, 1];
C_xy := (((-fl_xy[x, y + 2, 1]) + 4 * fl_xy[x, y + 1, 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, 1]) + 4 * T_xy[x, y + 1, 1]) / (2 * Delta_y) + ((-fl_xy[x + 2, y, 1]) + 4 * fl_xy[x + 1, y, 1]) / (2 * Delta_x) * ((-T_xy[x + 2, y, 1]) + 4 * T_xy[x + 1, y, 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, 1]) + 4 * T_xy[x + 2, y, 1] - T_xy[x + 3, y, 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, 1]) + 4 * T_xy[x + 2, y, 1] - T_xy[x + 3, y, 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-3 * T_xy[x + 2, y, 1]) + 12 * T_xy[x + 1, y, 1]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, 1]) + 12 * T_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2));
D_xy := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, 1]) + 4 * fl_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2) + ((-fl_xy[x + 2, y, 1]) + 4 * fl_xy[x + 1, y, 1]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, 1]) + C_xy + D_xy * T_xy[x, y, 1]) / (CC_xy + T_xy[x, y, 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, 1] := (h_ext * T_ext + A * A_prim + B * A_prim * fl_xy[x, y, 1]) / (h_ext - 3 * A - 3 * B * fl_xy[x, y, 1]);
end for;
for x in 2:x_tot - 1 loop
C_y_prim := (((-fl_xy[x, y + 2, 1]) + 4 * fl_xy[x, y + 1, 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, 1]) + 4 * T_xy[x, y + 1, 1]) / (2 * Delta_y) + (fl_xy[x + 1, y, 1] - fl_xy[x - 1, y, 1]) / (2 * Delta_x) * (T_xy[x + 1, y, 1] - T_xy[x - 1, y, 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + (T_xy[x + 1, y, 1] + T_xy[x - 1, y, 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_y := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + (T_xy[x + 1, y, 1] + T_xy[x - 1, y, 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (3 * T_xy[x, y + 2, 1] - 12 * T_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2);
D_y_prim := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (fl_xy[x, y + 2, 1] - 4 * fl_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_y ^ 2 - 1 / Delta_x ^ 2));
fl_xy[x, y, 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, 1]) + C_y_prim + D_y_prim * T_xy[x, y, 1]) / (CC_y + T_xy[x, y, 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2));
E := der(fl_xy[x, y, 1]) * (PCM.cp_MCP_s - PCM.cp_MCP_l);
Poly_1 := E * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_2 := E * CC_y - D_y_prim * der(T_xy[x, y, 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - E * PCM.T_fusion * ratio_a * (PCM.cp_MCP_l - PCM.cp_MCP_s) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2) - PCM.cp_MCP_s * der(T_xy[x, y, 1]) * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_3 := -(E * PCM.T_fusion * CC_y - PCM.cp_MCP_s * der(T_xy[x, y, 1]) * CC_y - C_y_prim * der(T_xy[x, y, 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, 1]) * der(T_xy[x, y, 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s));
racines := Modelica.Math.Polynomials.roots({Poly_1, Poly_2, Poly_3});
T_xy[x, y, 1] := racines[1, 1];
end for;
for x in x_tot:x_tot loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.ks_MCP - PCM.kl_MCP) / (2 * Delta_y);
G := T_xy[x, y + 2, 1] - 4 * T_xy[x, y + 1, 1];
C_xy_trio := (((-fl_xy[x, y + 2, 1]) + 4 * fl_xy[x, y + 1, 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, 1]) + 4 * T_xy[x, y + 1, 1]) / (2 * Delta_y) + (fl_xy[x - 2, y, 1] - 4 * fl_xy[x - 1, y, 1]) / (2 * Delta_x) * (T_xy[x - 2, y, 1] - 4 * T_xy[x - 1, y, 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, 1]) + 4 * T_xy[x - 2, y, 1] - T_xy[x - 3, y, 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy_trio := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, 1]) + 4 * T_xy[x, y + 2, 1] - T_xy[x, y + 3, 1]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, 1]) + 4 * T_xy[x - 2, y, 1] - T_xy[x - 3, y, 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * ((3 * T_xy[x - 2, y, 1] - 12 * T_xy[x - 1, y, 1]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, 1]) + 12 * T_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2));
D_xy_trio := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, 1]) + 4 * fl_xy[x, y + 1, 1]) / (4 * Delta_y ^ 2) + (fl_xy[x - 2, y, 1] - 4 * fl_xy[x - 1, y, 1]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, 1]) + C_xy_trio + D_xy_trio * T_xy[x, y, 1]) / (CC_xy_trio + T_xy[x, y, 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, 1] := (Tc_y[y, 1] * h_c + A * G + B * G * fl_xy[x, y, 1]) / (h_c - 3 * A - 3 * B * fl_xy[x, y, 1]);
end for;
H := h_cf * Delta_y + h_c * Delta_y - 3 * debit_c * Hot.cp_c / (2 * Delta_y);
I := (-Hot.rho_c * Delta_y * L_tuyau * Hot.cp_c * der(Tc_y[y, 1])) - debit_c * Hot.cp_c * (4 * Tc_y[y + 1, 1] - Tc_y[y + 2, 1]) / (2 * Delta_y);
Tc_y[y, 1] := (I + h_cf * Tf_y[y, 1] + h_c * Delta_y * T_xy[x_tot, y, 1]) / H;
// J := h_f*Delta_y-h_cf*Delta_y+(3*debit_f*Cold.cp_f)/(2*Delta_y);
// K := Cold.rho_f*Delta_y*L_tuyau*Cold.cp_f*der(Tf_y[y,1]) + debit_f*Cold.cp_f*(4*Tf_y[y+1,1]-Tf_y[y+2,1])/(2*Delta_y);
// Tf_y[y,1] := (K+h_f*Delta_y*T_xy[1,y,2]-h_cf*Delta_y*Tc_y[y,1]) / J;
Tf_y[y, 1] := T_out_PAC;
for k in 2:Nombre_MCP loop
for x in 1:1 loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / (2 * Delta_y);
L := (-T_xy[x, y + 2, k]) + 4 * T_xy[x, y + 1, k];
C_xy := (((-fl_xy[x, y + 2, k]) + 4 * fl_xy[x, y + 1, k]) / (2 * Delta_y) * ((-T_xy[x, y + 2, k]) + 4 * T_xy[x, y + 1, k]) / (2 * Delta_y) + ((-fl_xy[x + 2, y, k]) + 4 * fl_xy[x + 1, y, k]) / (2 * Delta_x) * ((-T_xy[x + 2, y, k]) + 4 * T_xy[x + 1, y, k]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, k]) + 4 * T_xy[x + 2, y, k] - T_xy[x + 3, y, k]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, k]) + 4 * T_xy[x + 2, y, k] - T_xy[x + 3, y, k]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-3 * T_xy[x + 2, y, k]) + 12 * T_xy[x + 1, y, k]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, k]) + 12 * T_xy[x, y + 1, k]) / (4 * Delta_y ^ 2));
D_xy := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, k]) + 4 * fl_xy[x, y + 1, k]) / (4 * Delta_y ^ 2) + ((-fl_xy[x + 2, y, k]) + 4 * fl_xy[x + 1, y, k]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, k] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, k]) + C_xy + D_xy * T_xy[x, y, k]) / (CC_xy + T_xy[x, y, k] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, k] := (h_f * Tf_y[y, k] + A * L + B * L * fl_xy[x, y, k]) / (h_f + 3 * A + 3 * B * fl_xy[x, y, k]);
end for;
for x in 2:x_tot - 1 loop
C_y_prim := (((-fl_xy[x, y + 2, k]) + 4 * fl_xy[x, y + 1, k]) / (2 * Delta_y) * ((-T_xy[x, y + 2, k]) + 4 * T_xy[x, y + 1, k]) / (2 * Delta_y) + (fl_xy[x + 1, y, k] - fl_xy[x - 1, y, k]) / (2 * Delta_x) * (T_xy[x + 1, y, k] - T_xy[x - 1, y, k]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + (T_xy[x + 1, y, k] + T_xy[x - 1, y, k]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_y := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + (T_xy[x + 1, y, k] + T_xy[x - 1, y, k]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (3 * T_xy[x, y + 2, k] - 12 * T_xy[x, y + 1, k]) / (4 * Delta_y ^ 2);
D_y_prim := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (fl_xy[x, y + 2, k] - 4 * fl_xy[x, y + 1, k]) / (4 * Delta_y ^ 2) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_y ^ 2 - 1 / Delta_x ^ 2));
fl_xy[x, y, k] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, k]) + C_y_prim + D_y_prim * T_xy[x, y, k]) / (CC_y + T_xy[x, y, k] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2));
E := der(fl_xy[x, y, k]) * (PCM.cp_MCP_s - PCM.cp_MCP_l);
Poly_1 := E * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_2 := E * CC_y - D_y_prim * der(T_xy[x, y, k]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - E * PCM.T_fusion * ratio_a * (PCM.cp_MCP_l - PCM.cp_MCP_s) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2) - PCM.cp_MCP_s * der(T_xy[x, y, k]) * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_3 := -(E * PCM.T_fusion * CC_y - PCM.cp_MCP_s * der(T_xy[x, y, k]) * CC_y - C_y_prim * der(T_xy[x, y, k]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, k]) * der(T_xy[x, y, k]) * (PCM.cp_MCP_l - PCM.cp_MCP_s));
racines := Modelica.Math.Polynomials.roots({Poly_1, Poly_2, Poly_3});
T_xy[x, y, k] := racines[1, 1];
end for;
for x in x_tot:x_tot loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / (2 * Delta_y);
G := T_xy[x, y + 2, k] - 4 * T_xy[x, y + 1, k];
C_xy_trio := (((-fl_xy[x, y + 2, k]) + 4 * fl_xy[x, y + 1, k]) / (2 * Delta_y) * ((-T_xy[x, y + 2, k]) + 4 * T_xy[x, y + 1, k]) / (2 * Delta_y) + (fl_xy[x - 2, y, k] - 4 * fl_xy[x - 1, y, k]) / (2 * Delta_x) * (T_xy[x - 2, y, k] - 4 * T_xy[x - 1, y, k]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, k]) + 4 * T_xy[x - 2, y, k] - T_xy[x - 3, y, k]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy_trio := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, k]) + 4 * T_xy[x, y + 2, k] - T_xy[x, y + 3, k]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, k]) + 4 * T_xy[x - 2, y, k] - T_xy[x - 3, y, k]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * ((3 * T_xy[x - 2, y, k] - 12 * T_xy[x - 1, y, k]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, k]) + 12 * T_xy[x, y + 1, k]) / (4 * Delta_y ^ 2));
D_xy_trio := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, k]) + 4 * fl_xy[x, y + 1, k]) / (4 * Delta_y ^ 2) + (fl_xy[x - 2, y, k] - 4 * fl_xy[x - 1, y, k]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, k] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, k]) + C_xy_trio + D_xy_trio * T_xy[x, y, k]) / (CC_xy_trio + T_xy[x, y, k] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, k] := (Tc_y[y, k] * h_c + A * G + B * G * fl_xy[x, y, k]) / (h_c - 3 * A - 3 * B * fl_xy[x, y, k]);
end for;
H := h_cf * Delta_y + h_c * Delta_y - 3 * debit_c * Hot.cp_c / (2 * Delta_y);
I := (-Hot.rho_c * Delta_y * L_tuyau * Hot.cp_c * der(Tc_y[y, k])) - debit_c * Hot.cp_c * (4 * Tc_y[y + 1, k] - Tc_y[y + 2, k]) / (2 * Delta_y);
Tc_y[y, k] := (I + h_cf * Tf_y[y, k] + h_c * Delta_y * T_xy[x_tot, y, k]) / H;
// J := h_f*Delta_y-h_cf*Delta_y+(3*debit_f*Cold.cp_f)/(2*Delta_y);
// K := Cold.rho_f*Delta_y*L_tuyau*Cold.cp_f*der(Tf_y[y,k]) + debit_f*Cold.cp_f*(4*Tf_y[y+1,k]-Tf_y[y+2,k])/(2*Delta_y);
// Tf_y[y,k] := (K+h_f*Delta_y*T_xy[1,y,k+1]-h_cf*Delta_y*Tc_y[y,k]) / J;
Tf_y[y, k] := T_out_PAC;
end for;
for x in 1:1 loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / (2 * Delta_y);
L := (-T_xy[x, y + 2, Nombre_MCP + 1]) + 4 * T_xy[x, y + 1, Nombre_MCP + 1];
C_xy := (((-fl_xy[x, y + 2, Nombre_MCP + 1]) + 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, Nombre_MCP + 1]) + 4 * T_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) + ((-fl_xy[x + 2, y, Nombre_MCP + 1]) + 4 * fl_xy[x + 1, y, Nombre_MCP + 1]) / (2 * Delta_x) * ((-T_xy[x + 2, y, Nombre_MCP + 1]) + 4 * T_xy[x + 1, y, Nombre_MCP + 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, Nombre_MCP + 1]) + 4 * T_xy[x + 2, y, Nombre_MCP + 1] - T_xy[x + 3, y, Nombre_MCP + 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + ((-5 * T_xy[x + 1, y, Nombre_MCP + 1]) + 4 * T_xy[x + 2, y, Nombre_MCP + 1] - T_xy[x + 3, y, Nombre_MCP + 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-3 * T_xy[x + 2, y, Nombre_MCP + 1]) + 12 * T_xy[x + 1, y, Nombre_MCP + 1]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, Nombre_MCP + 1]) + 12 * T_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2));
D_xy := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, Nombre_MCP + 1]) + 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2) + ((-fl_xy[x + 2, y, Nombre_MCP + 1]) + 4 * fl_xy[x + 1, y, Nombre_MCP + 1]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, Nombre_MCP + 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, Nombre_MCP + 1]) + C_xy + D_xy * T_xy[x, y, Nombre_MCP + 1]) / (CC_xy + T_xy[x, y, Nombre_MCP + 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, Nombre_MCP + 1] := (h_f * Tf_y[y, Nombre_MCP] + A * L + B * L * fl_xy[x, y, Nombre_MCP + 1]) / (h_f + 3 * A + 3 * B * fl_xy[x, y, Nombre_MCP + 1]);
end for;
for x in 2:x_tot - 1 loop
C_y_prim := (((-fl_xy[x, y + 2, Nombre_MCP + 1]) + 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, Nombre_MCP + 1]) + 4 * T_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) + (fl_xy[x + 1, y, Nombre_MCP + 1] - fl_xy[x - 1, y, Nombre_MCP + 1]) / (2 * Delta_x) * (T_xy[x + 1, y, Nombre_MCP + 1] - T_xy[x - 1, y, Nombre_MCP + 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + (T_xy[x + 1, y, Nombre_MCP + 1] + T_xy[x - 1, y, Nombre_MCP + 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_y := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + (T_xy[x + 1, y, Nombre_MCP + 1] + T_xy[x - 1, y, Nombre_MCP + 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (3 * T_xy[x, y + 2, Nombre_MCP + 1] - 12 * T_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2);
D_y_prim := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (fl_xy[x, y + 2, Nombre_MCP + 1] - 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_y ^ 2 - 1 / Delta_x ^ 2));
fl_xy[x, y, Nombre_MCP + 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, Nombre_MCP + 1]) + C_y_prim + D_y_prim * T_xy[x, y, Nombre_MCP + 1]) / (CC_y + T_xy[x, y, Nombre_MCP + 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2));
E := der(fl_xy[x, y, Nombre_MCP + 1]) * (PCM.cp_MCP_s - PCM.cp_MCP_l);
Poly_1 := E * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_2 := E * CC_y - D_y_prim * der(T_xy[x, y, Nombre_MCP + 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - E * PCM.T_fusion * ratio_a * (PCM.cp_MCP_l - PCM.cp_MCP_s) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2) - PCM.cp_MCP_s * der(T_xy[x, y, Nombre_MCP + 1]) * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) - 2 / Delta_x ^ 2);
Poly_3 := -(E * PCM.T_fusion * CC_y - PCM.cp_MCP_s * der(T_xy[x, y, Nombre_MCP + 1]) * CC_y - C_y_prim * der(T_xy[x, y, Nombre_MCP + 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s) - PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, Nombre_MCP + 1]) * der(T_xy[x, y, Nombre_MCP + 1]) * (PCM.cp_MCP_l - PCM.cp_MCP_s));
racines := Modelica.Math.Polynomials.roots({Poly_1, Poly_2, Poly_3});
T_xy[x, y, Nombre_MCP + 1] := racines[1, 1];
end for;
for x in x_tot:x_tot loop
A := (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) / (2 * Delta_y);
B := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) / (2 * Delta_y);
N := (-T_xy[x, y + 2, Nombre_MCP + 1]) - 4 * T_xy[x, y + 1, Nombre_MCP + 1];
C_xy_trio := (((-fl_xy[x, y + 2, Nombre_MCP + 1]) + 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) * ((-T_xy[x, y + 2, Nombre_MCP + 1]) + 4 * T_xy[x, y + 1, Nombre_MCP + 1]) / (2 * Delta_y) + (fl_xy[x - 2, y, Nombre_MCP + 1] - 4 * fl_xy[x - 1, y, Nombre_MCP + 1]) / (2 * Delta_x) * (T_xy[x - 2, y, Nombre_MCP + 1] - 4 * T_xy[x - 1, y, Nombre_MCP + 1]) / (2 * Delta_x)) * ratio_a * (PCM.ks_MCP - PCM.kl_MCP) - (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, Nombre_MCP + 1]) + 4 * T_xy[x - 2, y, Nombre_MCP + 1] - T_xy[x - 3, y, Nombre_MCP + 1]) / Delta_x ^ 2) * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes);
CC_xy_trio := ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-5 * T_xy[x, y + 1, Nombre_MCP + 1]) + 4 * T_xy[x, y + 2, Nombre_MCP + 1] - T_xy[x, y + 3, Nombre_MCP + 1]) / Delta_y ^ 2 + ((-5 * T_xy[x - 1, y, Nombre_MCP + 1]) + 4 * T_xy[x - 2, y, Nombre_MCP + 1] - T_xy[x - 3, y, Nombre_MCP + 1]) / Delta_x ^ 2) + ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * ((3 * T_xy[x - 2, y, Nombre_MCP + 1] - 12 * T_xy[x - 1, y, Nombre_MCP + 1]) / (4 * Delta_x ^ 2) + ((-3 * T_xy[x, y + 2, Nombre_MCP + 1]) + 12 * T_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2));
D_xy_trio := -(3 * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (((-fl_xy[x, y + 2, Nombre_MCP + 1]) + 4 * fl_xy[x, y + 1, Nombre_MCP + 1]) / (4 * Delta_y ^ 2) + (fl_xy[x - 2, y, Nombre_MCP + 1] - 4 * fl_xy[x - 1, y, Nombre_MCP + 1]) / (4 * Delta_x ^ 2)) + 2 * (ratio_a * PCM.ks_MCP + (1 - ratio_a) * Fin.k_ailettes) * (1 / Delta_x ^ 2 + 1 / Delta_y ^ 2));
fl_xy[x, y, Nombre_MCP + 1] := (PCM.rho_MCP * PCM.h_latent * der(fl_xy[x, y, Nombre_MCP + 1]) + C_xy_trio + D_xy_trio * T_xy[x, y, Nombre_MCP + 1]) / (CC_xy_trio + T_xy[x, y, Nombre_MCP + 1] * ratio_a * (PCM.kl_MCP - PCM.ks_MCP) * (17 / (4 * Delta_y ^ 2) + 17 / (4 * Delta_x ^ 2)));
T_xy[x, y, Nombre_MCP + 1] := (h_ext * T_ext + A * N + B * N * fl_xy[x, y, Nombre_MCP + 1]) / (h_ext + A + B * fl_xy[x, y, Nombre_MCP + 1]);
end for;
end for;
Ts_moy_c := sum(Tc_y[1, :]) / Nombre_MCP;
Ts_moy_f := sum(Tf_y[y_tot, :]) / Nombre_MCP;
T_stock := Ts_moy_c;
end PCM;

The code has the following problems:
For each of the medium models, the syntax should end with end Octadecanol;, end Ailettes; etc.
The model Batterie_PCM has 98 equations and 137 unknowns. For instance the variables N_scnd, K_prim etc. are not part of the equations.

Related

"fsolve" doesn't work for system nonlinear equation

I have these equations:
syms pm pr teta s
A1 = -2 * b1 * pm + 2 * b2 * pr + b * teta + (1-t) * s + (1-p) * a + c * (b1 - b2);
A2 = 2 * b2 * pm + 2 * b1 * pr + (1-b) * teta + t * s + p * a + c * (b1 - b2);
A3 = b * pm + (1-b) * pr - n * teta - c;
A4 = (1-t) * pm + t * pr - k * s - c;
eqns = [A1,A2,A3,A4];
F=#(pm, pr, teta, s) [A1
A2
A3
A4];
x0 = [10, 10, 10, 10];
fsolve(F, x0)
How I can solve them?
(When I use fsolve, it shows this error: FSOLVE requires all values returned by functions to be of data type double)
Since you tagged Mathematica
A1 = -2*b1*pm + 2*b2*pr + b*teta + (1 - t)*s + (1 - p)*a + c*(b1 - b2);
A2 = 2*b2*pm + 2*b1*pr + (1 - b)*teta + t*s + p*a + c*(b1 - b2);
A3 = b*pm + (1 - b)*pr - n*teta - c;
A4 = (1 - t)*pm + t*pr - k*s - c;
FullSimplify[Solve[{A1 == 10, A2 == 10, A3 == 10, A4 == 10}, {pm, pr, teta, s}]]
pm -> ((k ((-1 + b)^2 + 2 b1 n) + n t^2) (b (10 + c) k +
n (10 + c + 10 k - a k - b1 c k + b2 c k +
a k p - (10 + c) t)) + ((-1 + b) (10 + c) k +
k n (-10 + b1 c - b2 c + a p) - (10 + c) n t) (b k - b^2 k +
n (2 b2 k + t - t^2)))/(k n (1 - 2 b1 k + b^2 (1 + 4 b2 k) +
2 (b1 - 2 (b1^2 + b2^2) k) n - 2 t -
4 (b1 + b2) n t + (1 + 4 b2 n) t^2 +
2 b (-1 + 2 b1 k - 2 b2 k + t)))
pr -> (c +
b^2 (10 + c - (-20 + a + 2 b1 c - 2 b2 c) k) + 2 b1^2 c k n -
b2 (20 + c - 2 (-10 + a) k + 2 b2 c k) n - a (1 + 2 b2 k) n p -
2 b1 k (10 + c + n (10 - a p)) + 10 (1 + n - 2 t) -
c (2 + b2 n) t +
n (-30 + a + 20 b2 + a p) t + (10 + c - (-20 + a) n +
2 b2 c n) t^2 - b1 n (c + 20 t + c t (-1 + 2 t)) +
b (k (-10 + a + 20 b1 - 20 b2 - a p) + 20 (-1 + t) +
c (-2 + 3 b1 k - 3 b2 k + 2 t)))/(1 - 2 b1 k +
b^2 (1 + 4 b2 k) + 2 (b1 - 2 (b1^2 + b2^2) k) n - 2 t -
4 (b1 + b2) n t + (1 + 4 b2 n) t^2 +
2 b (-1 + 2 b1 k - 2 b2 k + t))
teta -> (10 - 20 b2 - b2 c -
20 b2 k + 2 a b2 k + 40 b2^2 k + 2 b2^2 c k +
2 b1^2 (20 + 3 c) k - a p -
2 a b2 k p + (-30 + 3 b2 (20 + c) + a (1 + p)) t - (-20 + a +
2 b2 (20 + c)) t^2 +
b (-10 - 4 b1^2 c k + a p +
b1 (20 + 40 k - 2 a k + c (3 + 4 b2 k - 2 t)) + 20 t - a t +
b2 (20 + c - 2 a k + 4 a k p - 2 (20 + c) t)) +
b1 (2 k (-10 + a p) + 20 (-1 + t) + c (-3 + (5 - 2 t) t)))/(1 -
2 b1 k + b^2 (1 + 4 b2 k) + 2 (b1 - 2 (b1^2 + b2^2) k) n - 2 t -
4 (b1 + b2) n t + (1 + 4 b2 n) t^2 +
2 b (-1 + 2 b1 k - 2 b2 k + t))
s -> (20 b1 + b1 c - b2 c -
2 b^2 (-10 + b1 c + b2 (20 + c)) + 20 b1 n + 40 b1^2 n -
20 b2 n + 40 b2^2 n + 2 b1^2 c n + 4 b1 b2 c n +
2 b2^2 c n - (b1 - b2) (20 + c) t +
4 b1 (-10 + b1 c - b2 c) n t - 10 (-1 + 2 b2 + t) +
a (-1 - b^2 - 2 b1 n + p + 2 (b1 + b2) n p + t - p t +
2 n (b1 + b2 - 2 b2 p) t - b (-2 + p + t)) +
b (-(-10 + b2 (20 + c)) (-3 + 2 t) + b1 (-20 + c - 2 c t)))/(1 -
2 b1 k + b^2 (1 + 4 b2 k) + 2 (b1 - 2 (b1^2 + b2^2) k) n - 2 t -
4 (b1 + b2) n t + (1 + 4 b2 n) t^2 +
2 b (-1 + 2 b1 k - 2 b2 k + t))

solve complex equations in MATLAB (Variable Equations)

I have some equations which include some parameters and variables.
Each variable defines and also exists in other equations. these are my equations:
syms Pof s Pon teta landa PIon PIof PISC
Pof = (s * y - teta + T * teta - landa + Pi * landa + alpha * p + Pon * b1 + w * b2)/(2 * b2);
s = -(y * (w - Pof))/q;
Pon = (q * s * y + 2 * w * y - 2 * w * y^2 + 2 * q * alpha + 2 * q * Pi * landa - q * teta + 3 * q * T * teta - q * landa + q * Pi * landa - q * alpha * p - 2 * y * Pof + 2 * y^2 * Pof + C * q * b1 + q * w * b2)/(2 * q * b1);
teta = (C - 3 * C * T - Pon + 3 * T * Pon)/2 * q;
landa = (-1/2) * (-1 + Pi) * (C - Pon);
Don = (1-p) * alpha - b1 * Pon + b2 * Pof - (1-y) * s + T * teta + landa * Pi;
Dof = p * alpha - b1 * Pof + b2 * Pon + y * s - (1-T) * teta - landa * (1-Pi);
PIon = (Pon-C) * Don - (1/2) * n * teta^2 - (1/2) * q * landa^2;
PIof = (Pof-w) * Dof - (1/2) * L * s^2;
PISC = PIon + PIof;
How I can solve these in order to get a numeric answer for each variable?
(I don't want parametric answers)
The equations as stated are
which can be arranged as a linear system A x = b as follows
which you solve in Matlab as x = A \ b
On further investigation, it seems A is singular since it's 10×8 in size and cannot be inverted. So a least-squares solution is needed where
x = inv(AT* A)* AT b

How to create a matrix in Matlab with every entry being the output of a bivariate function

I want to create a 4 x 4 matrix with each entry representing f(x,y) where both x and y take values 0, 1, 2 and 3. So the first entry would be f(0,0), all the way to f(3,3).
The function f(x,y) is:
3 * cos(0*x + 0*y) + 2 * cos(0*x + 1*y) + 3 * cos(0*x + 2*y) + 8 * cos(0*x + 3*y)
+ 3 * cos(1*x + 0*y) + 25 * cos(1*x + 1*y) + 3 * cos(1*x + 2*y)
+ 8 * cos(1*x + 3*y)
+ 3 * cos(2*x + 0*y) + 25 * cos(2*x + 1*y) + 3 * cos(2*x + 2*y)
+ 8 * cos(2*x + 3*y)
+ 3 * cos(3*x + 0*y) + 25 * cos(3*x + 1*y) + 3 * cos(3*x + 2*y)
- 90 * cos(3*x + 3*y)
I haven't used Matlab much, and it's been a while. I have tried turning f(x,y) into a #f(x,y) function; using the .* operator; meshing x and y, etc. All of it without success...
Not sure, what you've tried exactly, but using meshgrid is the correct idea.
% Function defintion (abbreviated)
f = #(x, y) 3 * cos(0*x + 0*y) + 2 * cos(0*x + 1*y) + 3 * cos(0*x + 2*y)
% Set up x and y values.
x = 0:3
y = 0:3
% Generate grid.
[X, Y] = meshgrid(x, y);
% Rseult matrix.
res = f(X, Y)
Generated output:
f =
#(x, y) 3 * cos (0 * x + 0 * y) + 2 * cos (0 * x + 1 * y) + 3 * cos (0 * x + 2 * y)
x =
0 1 2 3
y =
0 1 2 3
res =
8.00000 8.00000 8.00000 8.00000
2.83216 2.83216 2.83216 2.83216
0.20678 0.20678 0.20678 0.20678
3.90053 3.90053 3.90053 3.90053

How to use "field" with rationals?

Can anybody tell me why the tactic "field" does not work when I try to prove the following goal involving rationals?
nat_to_Q 3 * nat_to_Q n * nat_to_Q n + nat_to_Q 3 * nat_to_Q n +
nat_to_Q 3 * nat_to_Q n + nat_to_Q 3 + nat_to_Q 3 * nat_to_Q n +
nat_to_Q 3 + nat_to_Q n * nat_to_Q n * nat_to_Q n + nat_to_Q n * nat_to_Q n +
nat_to_Q n * nat_to_Q n * nat_to_Q 2 + nat_to_Q n * nat_to_Q 2 ==
nat_to_Q 3 * nat_to_Q n * nat_to_Q n * nat_to_Q n +
nat_to_Q 6 * nat_to_Q n * nat_to_Q n + nat_to_Q 11 * nat_to_Q n +
nat_to_Q 6
Note: n is nat and nat_to_Q is (Z.of_nat n # Pos.of_nat 1).
Thanks a lot,
Marcus.
Let's remove the coercions to make this easier to read:
3 * n * n + 3 * n +
3 * n + 3 * n +
3 + n * n * n + n * n +
n * n * 2 + n * 2 ==
3 * n * n * n +
6 * n * n + 11 * n + 6
Now we can see the issue: the goal does not hold. The 3rd order coefficient on the left-hand side is 1, but on the right-hand side it is 3.

how to solve simultaneous equations with solve and with result without roots

Here is the code:
syms G1 G2 G3 M1 M2 M3 P1 P2 P3 D1 D2 D3
S = solve(0 == 0.9 * (20 - G1) - 0.012 * D3 * G1, ...
0 == 0.9 * (20 - G2) - 0.012 * D1 * G2, ...
0 == 0.9 * (20 - G3) - 0.012 * D2 * G3, ...
0 == -0.0033 * M1 + 0.002 * G1, ...
0 == -0.0033 * M2 + 0.002 * G2, ...
0 == -0.0033 * M3 + 0.002 * G3, ...
0 == 0.1 * M1 - 0.0033 * P1 + 2 * 0.5 * D1 - 2 * 0.025 * (P1 ^ 2), ...
0 == 0.1 * M2 - 0.0033 * P2 + 2 * 0.5 * D2 - 2 * 0.025 * (P2 ^ 2), ...
0 == 0.1 * M3 - 0.0033 * P3 + 2 * 0.5 * D3 - 2 * 0.025 * (P3 ^ 2), ...
0 == -0.5 * D1 + 0.025 * (P1 ^ 2) + 0.9 * (20 - G2) - 0.012 * D1 * G2, ...
0 == -0.5 * D2 + 0.025 * (P2 ^ 2) + 0.9 * (20 - G3) - 0.012 * D2 * G3, ...
0 == -0.5 * D3 + 0.025 * (P3 ^ 2) + 0.9 * (20 - G1) - 0.012 * D3 * G1)
The problem is that I need real solution, but I have got answers with roots. How can I get real answers?
Assuming by "real solution" you mean a numeric value instead of the exact root-of-polynomial form, there are two options depending on how you intend on using the results:
double: this will evaluate the RootOf expressions, assuming there are no free parameters, and return a numeric output of class double. While the output is now limited to double-precision, if your goal is to use the roots in computation and care about performance, this is the fastest option.
vpa: this will evaluate the RootOf expressions, assuming there are no free parameters, and return a Symbolic output of class sym. While the output is now able to be approximated to varying degrees of accuracy at evaluation by calling digits beforehand, there may be a large computational overhead in subsequent calculations due to its Symbolic nature.