Exemple of calculation routine CAMIL (Amil gates)

  1. SUBROUTINE CAMIL(U,Y,PARA)
  2. PARAMETER(NBCM=$NBCM,NBUM=$NBUM,NSING=$NTO,NBIEF=$IB)
  3. PARAMETER(NPOIN=$NPOIN,NSECT=$NSC)
  4. CHARACTER CFIC1*3
  5. DIMENSION Y(*),U(*),PARA(*)
  6. C-----index of the current controller (INURE),
  7. C-----current number of calls of the controller n (INUAP(n))
  8. COMMON/P1/IFIC1,INURE,INUAP(NBCM),IFIC2
  9. COMMON/P2/INU,IFIC3(2),FIC1(3)
  10. COMMON/REGU/IFIC4,CFIC1(NBUM),IFIC5(NBUM,2),NSUG(NBUM)
  11. 1 ,IFIC6(NBUM),NKSU(NBUM),FIC2(NBUM,2)
  12. COMMON/REG2/NUD(NBCM),IFIC7(NBCM),BFIC1(NBCM)
  13. COMMON/NGEO/IFIC8(NBIEF,2),IP1(NSECT),IFIC9(NSECT,2)
  14. COMMON/RGEO/IFIC10,FIC3(NSECT),YGEO(NPOIN),FIC4(NPOIN,3)
  15. 1 ,FIC5(NSECT,3)
  16. COMMON/RSIN/FIC6(NSING),ZS0(NSING),FIC7(NSING,3)
  17. C-----Equations de Goussard
  18. C-----Affectations
  19. C-----PARA(1) Modele (D parmis LISTD) de vanne AMIL
  20. D=PARA(1)
  21. Dec=PARA(2)
  22. R=PARA(3)
  23. HA=PARA(4)
  24. C-----On met un filtre d'ordre 1 : S/E = (1-a)Z-1 / 1-aZ-1 (FILTRE = a)
  25. FILTRE=PARA(5)
  26. C-----ZD : hauteur du radier % cote de fond
  27. ZD=ZS0(NKSU(NUD(INURE)))-YGEO(IP1(NSUG(NUD(INURE))))
  28. C-----Calcul pour cette methode
  29. alfmax=asin(0.45*D/R)-asin(0.2205*D/R)
  30. alfb=HA/R
  31. alfb=min(alfb,1.)
  32. alfb=max(alfb,-1.)
  33. alfb=acos(alfb)
  34. alfc=alfb+alfmax
  35. UMAX=HA-R*cos(alfc)
  36. C-----Y(1) est en tirant d'eau (mode TYS obligatoire sur le fichier .REG)
  37. Z=Y(1)-HA-ZD
  38. C-----Initialisation de Zold au premier appel
  39. IF(INUAP(INURE).EQ.1) PARA(10)=Z
  40. Z=FILTRE*PARA(10)+(1.0-FILTRE)*Z
  41. C-----On stocke Zold filtré dans PARA(10) pour le filtre
  42. PARA(10)=Z
  43. C-----Regular setting
  44. if (Z.LE.-Dec) then
  45. alfa=0
  46. c=0
  47. elseif (z.GE.0.) then
  48. alfa=alfmax
  49. c=1
  50. else
  51. alfa=alfmax-asin(-Z/Dec*sin(alfmax))
  52. c=(1 - (0.45*D/R)**2)**0.5 * sin(alfa)
  53. 1 / (0.2295*D/R) + 1.9608 * (1 - cos(alfa))
  54. endif
  55. C-----Calcul de la commande
  56. U(1)=c*UMAX
  57. C-----Si plusieurs U (SIMO) on duplique la meme ouverture
  58. C-----(interessant dans le cas de plusieurs vannes identiques en parallele
  59. C en mode V par exemple)
  60. IF(INU.GT.1) THEN
  61. DO 10 I=2,INU
  62. U(I)=U(1)
  63. 10 CONTINUE
  64. ENDIF
  65. C-----Calcul du debit
  66. C En réglage classique Zmax=0, en réglage alternatif Zmax=Dec
  67. C Kj=1 + 2.2*zmax/D - 1.6*(zmax/D)**2
  68. C Kq=1 + 2.82*zmax/D - 34.8*(zmax/D)**2 + 164*(zmax/D)**3
  69. C x=Y(1)-z2
  70. C if (x.LT.0) then
  71. C Q=0.
  72. C elseif (x.LE.(0.45*(1 - 0.7211*c**0.3)*Kj*D)) then
  73. C Q=0.7096*c*Kq*D**2.103*x**0.397
  74. C else
  75. C Q=0.3113*c*Kq*Kj**0.397*D**2.5
  76. C endif
  77. END

Download