Télécharger dypol0.eso

Retour à la liste

Numérotation des lignes :

  1. C DYPOL0 SOURCE CHAT 06/06/01 21:16:30 5450
  2. SUBROUTINE DYPOL0(ITAB1,XPDT,NX,NI)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. *--------------------------------------------------------------------*
  6. * *
  7. * Operateur DYNE : algorithme de Fu - de Vogelaere *
  8. * ________________________________________________ *
  9. * *
  10. * Recherche du nombre de parametres d'une liaison POLYNOMIALE *
  11. * *
  12. * Parametres: *
  13. * *
  14. * e ITAB1 Table decrivant une liaison POLYNOMIALE *
  15. * e XPDT Valeur du pas de temps *
  16. * s NX Nombre de valeurs reelles caracterisant la liaison *
  17. * s NI Nombre de points intervenant dans la liaison *
  18. * *
  19. * Auteur, date de creation: *
  20. * *
  21. * Denis ROBERT, le 23 avril 1992. *
  22. * *
  23. *--------------------------------------------------------------------*
  24. -INC CCOPTIO
  25. -INC CCNOYAU
  26. -INC SMTABLE
  27. -INC CCASSIS
  28. *
  29. LOGICAL L0,L1
  30. CHARACTER*(8) TYPIND, TYPOBJ, MONOBJ
  31. CHARACTER*(18) CHAI1
  32. CHARACTER*(14) CHAI2
  33. PARAMETER (XZERO = 0.D0)
  34. * voir avec DYNE12
  35. ILC1 = 18
  36. ILC2 = 14
  37.  
  38. DATA CHAI1 /'RETARD_DEPLACEMENT'/
  39. DATA CHAI2 /'RETARD_VITESSE'/
  40. NXX = 0
  41. IPORIG = 0
  42. NI = 0
  43. XPDTS2 = 0.5 * XPDT
  44. *
  45. MTABLE = ITAB1
  46. SEGACT MTABLE
  47. NIND1 = MLOTAB
  48. * Nombre de points "support" et "origine"
  49. NI = NIND1 - 3
  50. *
  51. * Recherche des infos dans la table LIAISON_ELEMENTAIRE
  52. *
  53. if(nbesc.ne.0) segact ipiloc
  54. DO 10 I = 1,NIND1
  55. TYPIND = MTABTI(I)
  56. *
  57. * Cas d'un point "origine"
  58. *
  59. IF (TYPIND.EQ.'POINT ') THEN
  60. TYPOBJ = MTABTV(I)
  61. IF (TYPOBJ.EQ.'TABLE ') THEN
  62. MTAB1 = MTABIV(I)
  63. SEGACT,MTAB1
  64. NIND2 = MTAB1.MLOTAB
  65. IPORIG = IPORIG + 1
  66. XRD = XZERO
  67. XRV = XZERO
  68. *
  69. * Recherche des termes de retard pour dimensionner la
  70. * partie variable du tableau XPALA
  71. *
  72. DO 20 J=1,NIND2
  73. TYPIND = MTAB1.MTABTI(J)
  74. IF (TYPIND.EQ.'MOT ') THEN
  75. IP = MTAB1.MTABII(J)
  76. ID = IPCHAR(IP)
  77. IFI = IPCHAR(IP+1)
  78. IL1 = IFI - ID
  79. IF (IL1.EQ.ILC1) THEN
  80. IF (CHAI1.EQ.ICHARA(ID:IFI-1)) THEN
  81. TYPOBJ = MTAB1.MTABTV(J)
  82. IF (TYPOBJ.EQ.'FLOTTANT') THEN
  83. XRD = MTAB1.RMTABV(J)
  84. ENDIF
  85. ENDIF
  86. ELSE IF (IL1.EQ.ILC2) THEN
  87. IF (CHAI2.EQ.ICHARA(ID:IFI-1)) THEN
  88. TYPOBJ = MTAB1.MTABTV(J)
  89. IF (TYPOBJ.EQ.'FLOTTANT') THEN
  90. XRV = MTAB1.RMTABV(J)
  91. ENDIF
  92. ENDIF
  93. ENDIF
  94. ENDIF
  95. 20 CONTINUE
  96. XAUX1 = XRD / XPDTS2
  97. XAUX2 = XAUX1 + (XAUX1 / 1000.)
  98. ND = INT(XAUX2) + 1
  99. XAUX3 = XRV / XPDTS2
  100. XAUX4 = XAUX3 + (XAUX3 / 1000.)
  101. NV = INT(XAUX4) + 2
  102. NMAX = MAX(ND,NV)
  103. NXX = NXX + NMAX
  104. SEGDES,MTAB1
  105. ENDIF
  106. ENDIF
  107. 10 CONTINUE
  108. if(nbesc.ne.0)segdes ipiloc
  109. NX = 1 + NXX + (6 * IPORIG)
  110. *
  111. END
  112.  
  113.  
  114.  
  115.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales