unit mol;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Buttons,
DbChart;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
StaticText1: TStaticText;
StaticText2: TStaticText;
Edit1: TEdit;
StaticText3: TStaticText;
Edit2: TEdit;
StaticText4: TStaticText;
Edit3: TEdit;
StaticText5: TStaticText;
Edit4: TEdit;
StaticText6: TStaticText;
Edit5: TEdit;
Splitter2: TSplitter;
StaticText7: TStaticText;
StaticText8: TStaticText;
StaticText9: TStaticText;
Edit6: TEdit;
Edit7: TEdit;
StaticText10: TStaticText;
Splitter3: TSplitter;
Button1: TButton;
Label1: TLabel;
Edit8: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit9: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit10: TEdit;
Edit11: TEdit;
Label6: TLabel;
Label7: TLabel;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Label8: TLabel;
Edit15: TEdit;
Label9: TLabel;
Edit16: TEdit;
Label10: TLabel;
Label11: TLabel;
Edit17: TEdit;
Label12: TLabel;
Edit18: TEdit;
Label13: TLabel;
Edit19: TEdit;
Series2: TLineSeries;
Label14: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var {par conv, A et B représentent les especes, 1 et 2 les milieux}
Form1: TForm1;
dens_pop_a , dens_nour_a, tx_abs_nour_a, dens_pop_b,
dens_nour_b , tx_abs_nour_b, supply_pool, temps, precision : string;
dpa,dn1,tana,dpb,dn2,tanb,s, coefr1,
coefr2,coefn1,coefn2, prec, pt_suiv_r1,pt_suiv_r2,
coefnA,coefnB,conv1A,conv1B,conv2A,conv2B,perteA,perteB : extended ;
i,n,c1,c2,pa1,pa2,pb1,pb2 : integer;
TNA,TNB : array of extended;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
dpa:=strtofloat(Edit1.text); {recupération des valeurs}
dn1:=strtofloat( Edit3.text);
dpb:= strtofloat( edit2.text);
dn2:=strtofloat( Edit4.text);
S:=strtofloat(Edit8.text);
n:=strtoint(Edit9.Text);
prec:=strtofloat(Edit5.text);
pa1:=strtoint(Edit10.Text);
pa2:=strtoint(Edit11.Text);
pb1:=strtoint(Edit12.Text);
pb2:=strtoint(Edit13.Text);
conv1A:=strtofloat(Edit17.text);
conv1B:=strtofloat(Edit18.text);
conv2A:=strtofloat(Edit16.text);
conv2B:=strtofloat(Edit15.text);
perteA:=strtofloat(Edit19.text);
perteB:=strtofloat(Edit14.text);
S:=strtofloat(Edit8.text);
c1:=1;
c2:=1;
SetLength(TNA, n); {init des tableaux}
SetLength(TNB, n);
tNA[0]:=dpa;
tNB[0]:=dpb;
series1.add(dpa);
series2.add(dpb);
coefR1:=c1*(S-dn1)-(pa1*dpa*dn1+pb1*dpb*dn1);
coefR2:=c2*(S-dn2)-(pa2*dpa*dn2+pb2*dpb*dn2);
coefnA:= dpa*(pa1*conv1A*dn1+pa2*conv1B*dn2-perteA);
coefnB:= dpa*(pb1*conv2a*dn1+pb2*conv2B*dn2-perteB);
pt_suiv_r1:=prec*coefR1; {point 1}
pt_suiv_r2:=prec*coefR2;
for i:=1 to n do
begin
tna[i]:=coefna*prec+tna[i-1];
tnb[i]:=coefnb*prec+tnb[i-1];
series1.add(tna[i]);
series2.add(tnb[i]);
coefr1:=c1*(S-pt_suiv_R1)-(pa1*dpa*pt_suiv_R1+pb1*dpb*pt_suiv_r1);
coefR2:=c2*(S-pt_suiv_r2)-(pa2*dpa*pt_suiv_r2+pb2*dpb*pt_suiv_r2);
coefna:=tna[i]*(pa1*conv1A*pt_suiv_r1+pa2*conv1B*pt_suiv_R2-perteA);
coefnb:=tnb[i]*(pb1*conv2a*pt_suiv_r1+pb2*conv2B*pt_suiv_R2-perteA);
pt_suiv_r1:=prec*coefR1;
pt_suiv_r2:=prec*coefR2;
if (pt_suiv_r1<0) then pt_suiv_r1:=0; {pas de ressources négatives}
if (pt_suiv_r2<0) then pt_suiv_r2:=0; {ca ou zngi???? ou zngi est a l'equilibre}
end;
end;
begin
{$R *.dfm}
c1:=1;
with form1 do
Button1Click(form1);
end.
voila merci de votre aide