Bonjour à tous,
Pour un projet d'école je suis en train de programmer une petite simulation sur Matlab. J'ai fais un premier code qui marche bien et qui permet de résoudre mon problème avec des conditions initiales "fixes".
J'aimerai maintenant calculer les nouvelles valeurs à partir des valeurs précédentes grâce a une boucle for mais j'ai de la peine à écrire un code pour cela.
Mon code est le suivant :
J'aimerai donc par exemple mettre les températures initiales Tg0 = 15°C, lancé le calcul, avoir un résultat et utiliser ce résultat pour la prochain itération et faire cela pour toutes mes températures et paramètres.Code:Ta = [8 9 10 10 10 10 11 12 14 16 18 25 22 21 19 28 17 26 15 14 12 11 10 10]; v_wind = 1.5; Aire = 1.58; G = [0 0 0 0 0 0 30 100 400 600 700 1000 1100 1100 1050 900 850 700 500 300 0 0 0 0]; debit=100; Acell = 0.156*0.156; Ncell = 60; Tcell = ones(1,24)*(25+273); Amod = 1.66; PF = (Acell*Ncell)/Amod; rend_ech = 0.7; rend_optique = 0.578; e_g = 0.003; lambda_g = 0.93; tau_g = 0.92; epsilon_g = 0.88; alpha_g = 0.05; Cw=4180; e_pv = 3e-4; lambda_pv = 150; alpha_pv = 0.75; tau_pv = 0.95; e_ab = 0.005; lambda_ab = 25; epsilon_ab = 0.5; e_bs = 5e-4; lambda_bs = 0.033; eff_ab = rend_optique/(alpha_pv*tau_pv); Ta_K = Ta + 273.15; Tsol = Ta_K + 2; Tin = 20+273.15; Tsky = 0.0552*(Ta_K).^ 1.5; Tg0 = Ta_K + 2; Tpv0 = Ta_K + 2; Tab0 = Ta_K + 2; Tmoy = (Tpv0+Tg0)/2; hc_n = 5.67+3.86*v_wind; c_boltz = 5.67e-8; hrad_sky = c_boltz*epsilon_g.*[(Tg0.^2 - Tsky.^2) .* (Tg0.^2 + Tsky.^2)./(Tg0-Ta_K)]; hc_g = lambda_g/e_g; hc_air = 2.4; hc_eva = ones(1,24)*30; hrad_g_pv = 4*c_boltz*E*Tmoy.^3; hw = 232.3; hloss = 200; E = (1/e_pv + 1/e_g -1)^-1; %% Connues matrice B : b1 = G*Aire*alpha_g + Ta_K.*Aire.*hc_n + Tsky.*Aire.*hrad_sky; b2 = G*Aire*alpha_pv*tau_g - (G*tau_g*PF*Aire*0.8); b3 = 0*G ; b4 = Tin.*(debit.*Cw.*rend_ech + hw*Aire) + Ta_K.*hloss.*Aire; B = [b1 ; b2 ; b3 ; b4];
Donc exemple :
Je fixe au temps t=0 :
Tg0 = 15;
Tsky = 12;
Ta_K = 10;
Je calcule mon hrad_sky = c_boltz*epsilon_g.*[(Tg0.^2 - Tsky.^2) .* (Tg0.^2 + Tsky.^2)./(Tg0-Ta_K)]; au temps 0.
Je résous mes équations, je trouve mes Tg, Tsky, Ta puis je remets ces nouvelles valeurs dans ma boucle afin d'obtenir un nouveau hrad_sky..
Pour cela je pensais initialiser ma matrice b à zéro, puis faire une boucle for mais impossible d'écrire quelques chose qui fonctionne..
J'espère avoir été clair, sinon je me re explique volontiers.
Merci d'avance.
-----