Php iteration über mehrere zwischenrechnungen******

Akrival

Grünschnabel
Hallo,
das ist jetzt hier mein erster Beitrag, ich hoffe es kann mir jemand helfen, da ich in Informatik nicht so beschlagen bin und nur rudimentäre Kenntnisse besitze.

Ich will in meinem Programm eine Iteration durchführen bei der ich einen bestimmten Wert für den Massenstrom (mv1an) annehme, daraus über Zwischenrechnungen die Enthalpie (hgemt2) berechne und diesen Wert der Enthalpie in die Gleichung für den Massenstrom einsetze. Anschließend soll kontrolliert werden, ob der angenommene (mv1an) und der berechnete Massenstrom (mv1rech) übereinstimmen (Iteration eben). Falls nicht soll mb1an so lange erhöht werden, bis die Massenströme mv1an und mv1rech übereinstimmen.

Hier einmal der entsprechende Code (?):

$mb1an = $Omin/$xiO2v1*$_POST['mbrenn'];
$mv1an = $mwt + $mb1an;
$mv1an = sprintf("%01.1f", $mv1an);




for ($i=0; $i<100; $i++)
{
if ($mv1rech!=$mv1an)
{
$mb1an=$mb1an + 1;
}
else
{
$mv1 = $mv1an;
}




// Massenanteile Brennkammeraustritt


$xiN2b2 = ($xiN2v1 * $mb1an)/($mb1an + $_POST['mbrenn'] + $_POST['mwasser']);
$xiO2b2 = ($xiO2v1 * $mb1an - $Omin * $_POST['mbrenn'])/($mb1an + $_POST['mbrenn'] + $_POST['mwasser']);
$xiH2Ob2 = ($xiH2Ov1 * $mb1an + $_POST['mwasser'] + $_POST['mbrenn']*$_POST['h'] + $molO2/(2*$molH2)*$_POST['h']*$_POST['mbrenn'])/($mb1an + $_POST['mbrenn'] + $_POST['mwasser']);
$xiCO2b2 = ($xiCO2v1 * $mb1an + $_POST['mbrenn']*$_POST['c'] + $molO2/$molC*$_POST['c']*$_POST['mbrenn'])/($mb1an + $_POST['mbrenn'] + $_POST['mwasser']);
$xiArb2 = ($xiArv1 * $mb1an)/($mb1an + $_POST['mbrenn'] + $_POST['mwasser']);



$mb2 = $mb1an + $_POST['mbrenn'] + $_POST['mwasser'];


// Massenanteile Turbineneintritt


$xiN2t1 = ($xiN2b2 * $mb2 + $xiN2v1 * $mwt )/($mb2 + $mwt);
$xiO2t1 = ($xiO2b2 * $mb2 + $xiO2v1 * $mwt )/($mb2 + $mwt);
$xiH2Ot1 = ($xiH2Ob2 * $mb2 + $xiH2Ov1 * $mwt )/($mb2 + $mwt);
$xiCO2t1 = ($xiCO2b2 * $mb2 + $xiCO2v1 * $mwt )/($mb2 + $mwt);
$xiArt1 = ($xiArb2 * $mb2 + $xiArv1 * $mwt )/($mb2 + $mwt);



// Gesamtenthalpie


$hgemt2 = ($xiN2t1*$hn2t2/$molN2 + $xiO2t1*$ho2t2/$molO2 + $xiH2Ot1*$hh2ot2/$molH2O + $xiCO2t1*$hco2t2/$molCO2 + $xiArt1*$hart2/$molAr);



// Massenstromberechnung Gleichung A

$zaehler = -$_POST['mbrenn']*$_POST['hu'] - $_POST['Pb'] + abs($_POST['Pmv']) + abs($_POST['Pgv']) + abs($_POST['Pgenv']) + abs($_POST['Pgt']) - $_POST['mbrenn']*$_POST['cpbrenn']*($_POST['tbrenn']-25) - $_POST['mkühl'] * $cpH2O * ($_POST['tkw1']-$_POST['tkw2']) - $_POST['mwasser']*($cpH2O*$_POST['twasser']+$hh2o0C) + ($_POST['mbrenn']+$_POST['mwasser'])*$hgemt2;
$nenner = $hgemv1-$hgemt2;



$mv1rech = $zaehler / $nenner;
$mv1rech = sprintf("%01.1f", $mv1rech);
}

echo "<h2>mv1: ".$mv1rech." kg/s</h2><br />";

;



Vielen Dank im Voraus!
 
Zuletzt bearbeitet:
Es klappt nicht bzw. nur bei $i<10. Bei allen Werten darüber wird die Berechnungszeit von 30sek überschritten und es wird kein Wert ausgegeben. Aber was ist eine Iteration über 10 Werte wert?
Die Iteration soll aber über viele kleine Schritte stattfinden, ich dachte da so an 1000.

Es gibt ja anscheinend eine fest Formel für Iterationen, irgendwas mit foreach oder $smarty, aber ich bin zu dämlich das einzubauen.

Meine Frage ist: Wie würden die Programmierer unter Euch solch ein Problem lösen bzw. gibt es nicht eine bessere, einfachere und elegantere Lösung als mein Vorschlag?
 
Bitte den Code formatiert (inkl. Tablulatorischem einrücken) in PHP-Tags setzen: [PHP]mein Code[/PHP]
So wie er jetzt da steht kann man das Ding kaum lesen
 
Danke an Alle, die es sich durchgelesen haben, ich habe den Fehler jetzt selber gefunden. Die geschweifte Klammer über echo "<h2>mv1... muss oben über den Kommentar //Massenanteile Brennkammeraustritt geschrieben werden, sodaß das $i<100 sich nur auf die erste for-schleife bezieht.

Vielen Dank, manchmal werden bestimmte Dinge erst beim zweiten Blick klarer!
 
Zurück