Télécharger ipln2i.eso

Retour à la liste

Numérotation des lignes :

  1. C IPLN2I SOURCE CB215821 16/09/20 21:15:03 9097
  2. SUBROUTINE IPLN2I(ithr)
  3. C Interface avec IPLNU2 qui peut être appelee en parallele
  4. C pour un ensemble de valeurs a interpoler
  5. C
  6. C
  7. C Creation : 08/04/2015
  8. C Createur : CB215821
  9.  
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8 (A-H,O-Z)
  12.  
  13. -INC CCOPTIO
  14. -INC SMCHAML
  15. -INC SMCHPOI
  16. -INC SMNUAGE
  17.  
  18. C Declaration du COMMON pour le travail en parallele
  19. COMMON/iplnuc/XP1,NBTHR,INUAG,ITR1,MAXI1,IVAL,N,NN,MM,NNMM,
  20. & IMPOV1,IMPOV2,
  21. & IMCHA1,IMCHA2,N1EL,N1PTEL,
  22. & ITR2
  23.  
  24. SEGMENT MTR2
  25. REAL*8 XI(N,NN)
  26. REAL*8 YI(N,MM)
  27. ENDSEGMENT
  28.  
  29.  
  30. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  31. C Utilisation du bon pointeur : MPOVAL ou MCHAML C
  32. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  33. IF (IMPOV1 .NE. 0) THEN
  34. C Cas d'un CHPOINT passe a IPOL
  35. C Write(IOIMP,*)' Cas des CHPOINT'
  36. MPOVAL = IMPOV1
  37. MPOVA1 = IMPOV2
  38. ELSEIF (IMCHA1 .NE. 0) THEN
  39. C Cas d'un MCHAML passe a IPOL
  40. C Write(IOIMP,*)' Cas des MCHAML'
  41. MCHAML = IMCHA1
  42. MCHAM1 = IMCHA2
  43. MTR2 = ITR2
  44. ELSE
  45. C Ce cas ne peut en theorie pas arriver, mais ne sait on jamais
  46. CALL ERREUR(5)
  47. RETURN
  48. ENDIF
  49.  
  50. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  51. C Debut du Travail sur tous les points a interpoler C
  52. CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  53. IF (IMPOV1 .NE. 0) THEN
  54. C Cas des CHPOINTS
  55. NNC = N
  56. IRES = MOD(NNC,NBTHR)
  57. IF (IRES .EQ. 0) THEN
  58. ILON = NNC / NBTHR
  59. IDEB = (ithr -1)* ILON + 1
  60. ELSE
  61. IF (ithr .LE. IRES) THEN
  62. ILON = (NNC / NBTHR) + 1
  63. IDEB = (ithr -1)* ILON + 1
  64. ELSE
  65. ILON = NNC / NBTHR
  66. IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1
  67. ENDIF
  68. ENDIF
  69. IFIN = IDEB + ILON - 1
  70.  
  71. DO J=IDEB,IFIN
  72. C Interpolation
  73. CALL IPLNU2(INUAG,ITR1,MPOVAL.VPOCHA(1,1),
  74. & MPOVA1.VPOCHA(1,1),
  75. & MAXI1,IVAL,
  76. & N,J,NN,MM,NNMM,XP1)
  77. IF (IERR .NE. 0) RETURN
  78. ENDDO
  79.  
  80. ELSE
  81. C Cas des MCHAML
  82. NNC = N1EL
  83. IRES = MOD(NNC,NBTHR)
  84. IF (IRES .EQ. 0) THEN
  85. ILON = NNC / NBTHR
  86. IDEB = (ithr -1)* ILON + 1
  87. ELSE
  88. IF (ithr .LE. IRES) THEN
  89. ILON = (NNC / NBTHR) + 1
  90. IDEB = (ithr -1)* ILON + 1
  91. ELSE
  92. ILON = NNC / NBTHR
  93. IDEB = (IRES * (ILON+1)) + (ithr-IRES-1)* ILON + 1
  94. ENDIF
  95. ENDIF
  96. IFIN = IDEB + ILON - 1
  97.  
  98. DO J=IDEB,IFIN
  99. DO K=1,N1PTEL
  100. INDICE = (J-1)*N1PTEL+K
  101. DO L=1,NN
  102. C Boucle sur les composantes CONNUES
  103. MELVAL = IELVAL(L)
  104. MTR2.XI(INDICE,L) = VELCHE(K,J)
  105. ENDDO
  106.  
  107. C Interpolation
  108. CALL IPLNU2(INUAG,ITR1,MTR2.XI(1,1),
  109. & MTR2.YI(1,1),
  110. & MAXI1,IVAL,
  111. & N,INDICE,NN,MM,NNMM,XP1)
  112. IF ( IERR .NE. 0 ) RETURN
  113. C
  114. C Ecriture des resultats stockes dans YI
  115. DO L=1,MM
  116. MELVAL = MCHAM1.IELVAL(L)
  117. VELCHE(K,J) = MTR2.YI(INDICE,L)
  118. ENDDO
  119. ENDDO
  120. ENDDO
  121. ENDIF
  122.  
  123. RETURN
  124. END
  125.  
  126.  
  127.  

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