Télécharger dypol0.eso

Retour à la liste

Numérotation des lignes :

dypol0
  1. C DYPOL0 SOURCE CB215821 18/09/13 21:15:34 9917
  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.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC CCNOYAU
  28. -INC SMTABLE
  29. -INC CCASSIS
  30. *
  31. LOGICAL L0,L1
  32. CHARACTER*(8) TYPIND, TYPOBJ, MONOBJ
  33. CHARACTER*(18) CHAI1
  34. CHARACTER*(14) CHAI2
  35. PARAMETER (XZERO = 0.D0)
  36. * voir avec DYNE12
  37. ILC1 = 18
  38. ILC2 = 14
  39.  
  40. DATA CHAI1 /'RETARD_DEPLACEMENT'/
  41. DATA CHAI2 /'RETARD_VITESSE'/
  42. NXX = 0
  43. IPORIG = 0
  44. NI = 0
  45. XPDTS2 = 0.5 * XPDT
  46. *
  47. MTABLE = ITAB1
  48. SEGACT MTABLE
  49. NIND1 = MLOTAB
  50. * Nombre de points "support" et "origine"
  51. NI = NIND1 - 3
  52. *
  53. * Recherche des infos dans la table LIAISON_ELEMENTAIRE
  54. *
  55. if(nbesc.ne.0) segact ipiloc
  56. DO 10 I = 1,NIND1
  57. TYPIND = MTABTI(I)
  58. *
  59. * Cas d'un point "origine"
  60. *
  61. IF (TYPIND.EQ.'POINT ') THEN
  62. TYPOBJ = MTABTV(I)
  63. IF (TYPOBJ.EQ.'TABLE ') THEN
  64. MTAB1 = MTABIV(I)
  65. SEGACT,MTAB1
  66. NIND2 = MTAB1.MLOTAB
  67. IPORIG = IPORIG + 1
  68. XRD = XZERO
  69. XRV = XZERO
  70. *
  71. * Recherche des termes de retard pour dimensionner la
  72. * partie variable du tableau XPALA
  73. *
  74. DO 20 J=1,NIND2
  75. TYPIND = MTAB1.MTABTI(J)
  76. IF (TYPIND.EQ.'MOT ') THEN
  77. IP = MTAB1.MTABII(J)
  78. ID = IPCHAR(IP)
  79. IFI = IPCHAR(IP+1)
  80. IL1 = IFI - ID
  81. IF (IL1.EQ.ILC1) THEN
  82. IF (CHAI1.EQ.ICHARA(ID:IFI-1)) THEN
  83. TYPOBJ = MTAB1.MTABTV(J)
  84. IF (TYPOBJ.EQ.'FLOTTANT') THEN
  85. XRD = MTAB1.RMTABV(J)
  86. ENDIF
  87. ENDIF
  88. ELSE IF (IL1.EQ.ILC2) THEN
  89. IF (CHAI2.EQ.ICHARA(ID:IFI-1)) THEN
  90. TYPOBJ = MTAB1.MTABTV(J)
  91. IF (TYPOBJ.EQ.'FLOTTANT') THEN
  92. XRV = MTAB1.RMTABV(J)
  93. ENDIF
  94. ENDIF
  95. ENDIF
  96. ENDIF
  97. 20 CONTINUE
  98. XAUX1 = XRD / XPDTS2
  99. XAUX2 = XAUX1 + (XAUX1 / 1000.)
  100. ND = INT(XAUX2) + 1
  101. XAUX3 = XRV / XPDTS2
  102. XAUX4 = XAUX3 + (XAUX3 / 1000.)
  103. NV = INT(XAUX4) + 2
  104. NMAX = MAX(ND,NV)
  105. NXX = NXX + NMAX
  106. SEGDES,MTAB1
  107. ENDIF
  108. ENDIF
  109. 10 CONTINUE
  110. if(nbesc.ne.0)SEGDES,IPILOC
  111. NX = 1 + NXX + (6 * IPORIG)
  112. *
  113. END
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  

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