Monsieur,
Je travaille sur un projet de modélisation de la montée en vitesse d'une pompe centrifuge.
J'ai trouvé un algorithme sur fortran mais je n'arrive pas à le comprendre surtout les variables.
Si quelqu'un peut m'aider et c'est urgent.
merci
****************************** l'algorithme************
Methode des caractéristiques
! Exemple
integer N1,N2,N3
real R,rp,kL,la,kv,L1,L3,kk,delta,L 2,kvv
dimension V1(2001),Vp1(2001),H1(2001),Hp 1(2001)
dimension V2(2001),Vp2(2001),H2(2001),Hp 2(2001),kL(2001)
dimension X(2001),Dh(2001)
dimension V3(2001),Vp3(2001),H3(2001),Hp 3(2001)
open(1,file='C:\pression.dat')
open(2,file='C:\vitesse.dat')
! *************** données de la pompe *****************
pi=3.14
! N2=5
R=0.064
! R=0.084
rp=0.019
Nm=1500
omo=Nm*pi/30
b=0.0045
c=900
kvv=8
teta=2*pi/kvv
g=9.81
tp=0.15
la=0.02 !6
L2=R-rp
! ************* données des conduites amont et aval**********************
D1=0.04
L1=0.5 !0.5
D3=0.04
L3=1.5 !0.5
! write(*,*)omo,la,teta,1/2
! stop
! *************** calcul du diametre hydraulique pompe ****************************
dt=0.000005
N2=L2/dt/c
dx2=(R-rp)/N2
! write(*,*)dx2,N2
! stop
do 10 i=1,N2+1
kL(i)=(rp+(i-1)*dx2)*teta
Dh(i)=4*b*kL(i)/(2*kL(i)+2*b)
X(i)=rp+(i-1)*dx2
! write(*,*) Dh(i),x(i),dh(i)/dh(1)
10 continue
! **************** calcul régime permanant pompe ***************************
! stop
do 20 i=1,N2+1
H2(i)=0
V2(i)=0
20 continue
! dt=dx2/c
N1=L1/(c*dt)
! L1=c*dt*N1
N3=L3/(c*dt)
! L3=c*dt*N3
! write(*,*) N1,N3,L1,L3,N2
! stop
do 21 i=1,N1+1
H1(i)=0
V1(i)=0
21 continue
do 22 i=1,N3+1
H3(i)=0
V3(i)=0
22 continue
! ****************************** *Calcul Du Régime Transitoire
t=0
! write(1,*) t,H3(N3+1)
! write(2,*) t,V2(N2+1)
do 31 j=1,150000
t=t+dt
if (t.ge.tp) then
om=omo
else
om=(omo/tp)*t
end if
! ******* Calcul de la conduite amont 1 ******************************
do 25 i=2, N1
Vp1(i)=0.5*((g/c)*(H1(i-1)-H1(i+1))+V1(i+1)+V1(i-1)+(g/c)*dt*
1(V1(i+1)-V1(i-1))-(la*dt/(2*D1))*(V1(i-1)*abs(V1(i-1))+V1(i+1)*
1abs(V1(i+1))))
Hp1(i)=(c/(2*g))*(V1(i-1)-V1(i+1)-(g/c)*dt*(V1(i-1)+
1V1(i+1))+(la*dt/(2*D1))*(-V1(i-1)
1*abs(V1(i-1))+V1(i+1)*abs(V1(i+1))))+(H1 (i-1)+H1(i+1))/2
25 continue
! ******** calcul au niveau de la pompe 2 *****************************
do 26 i=2, N2
! Vp2(i)=0.5*((g/c)*(H2(i-1)-H2(i+1))+V2(i+1)+V2(i-1)+
! 1(g/c)*dt*(V2(i+1)-V2(i-1))-(la*dt/2)*
! 1(V2(i-1)*abs(V2(i-1))/Dh(i-1)+V2(i+1)*abs(V2(i+1))/Dh(i+1))
! 1+(om**2)*dt*(X(i-1)+X(i+1)))
! vp2(i)=vp2(i-1)*kl(i-1)/kl(i)
! Hp2(i)=(c/(2*g))*(V2(i-1)-V2(i+1)-(g/c)*dt*
! 1(V2(i+1)+V2(i-1))+(la*dt/2)*(-V2(i-1)*abs(V2(i-1))
! 1/Dh(i-1)+V2(i+1)*abs(V2(i+1))/Dh(i+1))+(om**2)*dt*(X(i-1)-X(i+1)))
! 1+(H2(i-1)+H2(i+1))/2
C1=g/c
xl1=C1*H2(i-1)+V2(i-1)-(la*dt/2)*V2(i-1)*abs(V2(i-1))/Dh(i-1)+
1(om**2)*dt*X(i)-C1*dt*V2(i-1)
xl2=-C1*H2(i+1)+V2(i+1)-(la*dt/2)*V2(i+1)*abs(V2(i+1))/Dh(i+1)+
1(om**2)*dt*X(i)+C1*dt*V2(i+1)
Hp2(i)=(xl2-xl1)/(-2*C1)
vp2(i)=xl1-C1*Hp2(i)
! write(*,*) t,xl1
! stop
26 continue
! stop
! ************ calcul de la conduite aval 3 ****************************** *
do 27 i=2,N3
Vp3(i)=0.5*((g/c)*(H3(i-1)-H3(i+1))+V3(i+1)+V3(i-1)+(g/c)*dt*
1(V3(i+1)-V3(i-1))-(la*dt/(2*D3))
1*(V3(i-1)*abs(V3(i-1))+V3(i+1)*abs(V3(i+1))))
Hp3(i)=(c/(2*g))*(V3(i-1)-V3(i+1)-(g/c)*dt*(V3(i+1)+
1V3(i-1))+(la*dt/(2*D3))*(-V3(i-1)
1*abs(V3(i-1))+V3(i+1)*abs(V3(i+1))))+(H3 (i-1)+H3(i+1))/2
27 continue
! ********** condition au limite à l'extrémité amont de la conduite 1 *********
Hp1(1)=0
C1=(g/c)
C2=C1*H1(2)-V1(2)+(la*dt/(2*D1))*V1(2)*abs(V1(2))-C1*dt*V1(2)
! A=C1*(2.14E-8)*D1**4
! B=1-C1*(5.26E-6)*D1**2
! C11=C2-C1*9.2384
! delta1=B*B-4*A*C11
! write(*,*) t,H3(N3+1)
! stop -
! Vp1(1)=(-B+sqrt(delta1))/2/A
Vp1(1)=C1*Hp1(1)-C2
! Hp1(1)=(-Vp1(1)-C2)/C1
! if (Hp1(1).lt.-10.33) goto 123
! goto 124
! 123 Hp1(1)=-10.33
!124 continue
! *********** jonction entre conduite 1 aval et pompe extrémité amont ***************
s1=(pi*D1**2)/4
s3=(pi*D3**2)/4
! sp=2*pi*rp*b ! surface latérale aspiration
! spp=2*pi*R*b ! ,, ,, refoulement
Dx4=4*b*(kvv*kL(1))/(2*kvv*kL(1)+2*b)
Dx5=4*b*(kvv*kL(N2+1))/(2*kvv*kL(N2+1)+2*b)
sp=(pi*dx4**2)/4
spp=(pi*dx5**2)/4
! write(*,*) dx2,dx4,dx5
! stop
kk=(sp+s1)/s1
Vp2(1)=(1/kk)*((g/c)*(H1(N1)-H2(2))+V2(2)+V1(N1)+(om**2)*dt *X(1)-
1(la*dt/2)*(V2(2)*abs(V2(2))/Dh(2)+V1(N1)*abs(V1(N1))/D1)+
1(g/c)*dt*(-V1(N1)+V2(2)))
Vp1(N1+1)=Vp2(1)*sp/s1
Hp1(N1+1)=(c/g)*(V1(N1)-Vp1(N1+1)-(la*dt/(2*D1))*
1V1(N1)*abs(V1(N1)))+H1(N1)-V1(N1)*dt
Hp2(1)=Hp1(N1+1)
! write(*,*) 1/kk,Vp2(1),(spp+s3)/s3,(spp+s3)/spp
! stop
! *********** jonction entre conduite 3 amont et pompe extrémité aval ***************
kk=(spp+s3)/s3
Vp2(N2+1)=(1/kk)*((g/c)*(H2(N2)-H3(2))+V2(N2)+V3(2)+(om**2)*dt *
1X(N2+1)+(g/c)*dt*(V3(2)-V2(N2))-(la*dt/2)*(V2(N2)*abs(V2(N2))/
1Dh(N2)+V3(2)*abs(V3(2))/D3))
Vp3(1)=Vp2(N2+1)*spp/s3
Hp3(1)=(c/g)*(Vp3(1)-V3(2)+(la*dt/(2*D3))*
1V3(2)*abs(V3(2)))+H3(2)+V3(2) *dt
Hp2(N2+1)=Hp3(1)
! *********** jonction entre conduite 3 aval et vanne ***************
kv=0.15 !1000 ! perte de charge singulière vanne
cv=1/sqrt(1+kv)
cc=0.8 !0.5 ! coefficient de contaction
ag=1*s3 ! ouverture de la vanne
bv=cv*cc*ag ! coefficient cd=cv*cc
ck=((s3/bv)**2)*(1./(2*g))
bb=g/c
c3=(la*dt/(2*D3))*V3(N3)*abs(V3(N3))-bb*H3(N3)-V3(N3)+bb*V3(N3)*dt
delta=1-4*bb*ck*c3
Vp3(N3+1)=(-1+sqrt(delta))/(2*ck*bb)
! Vp3(N3+1)=0
Hp3(N3+1)=(1/bb)*(-c3-Vp3(N3+1))
! write(*,*) t,Hp3(N3+1),1/bb,delta
! stop
do 28 i=1, N1+1
H1(i)=Hp1(i)
V1(i)=Vp1(i)
28 continue
do 29 i=1, N2+1
H2(i)=Hp2(i)
V2(i)=Vp2(i)
29 continue
do 30 i=1, N3+1
H3(i)=Hp3(i)
V3(i)=Vp3(i)
30 continue
! if (IU/Kkk*Kkk-IU) 31,300,31
if (j/30*30-j) 39,300,39
300 write(1,*) t,H3(1)-H1(N1+1)
write(2,*) t,V2(N2+1)*spp*1000
39 continue
31 continue
end
-----