Télécharger ipln2i.eso

Retour à la liste

Numérotation des lignes :

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

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