Télécharger extrap.eso

Retour à la liste

Numérotation des lignes :

extrap
  1. C EXTRAP SOURCE CB215821 26/08/24 21:16:33 12622
  2. SUBROUTINE EXTRAP(SHPTOT,NBPGAU,NBNN,NBNO)
  3. C================================================================
  4. C CALCULE LES FONCTIONS D EXTRAPOLATIONS A PARTIR DES FONCTIONS
  5. C D INTERPOLATIONS
  6. C ENTREES
  7. C SHPTOT(6,NBNO,NBPGAU) = FONCTIONS D INTERPOLATIONS
  8. C NBPGAU = NOMBRE DE POINTS DE GAUSS
  9. C NBNN = NOMBRE DE NOEUDS
  10. C NBNO = NOMBRE DE FONCTIONS D'INTERPOLATION
  11. C SORTIES
  12. C SHPTOT(6,NBNO,NBPGAU) = FONCTIONS D EXTRAPOLATIONS STOKEES
  13. C SUR LA 6 IEME LIGNE
  14. C EBERSOLT NOVEMBRE 86 PAS PLUS DE 30 NOEUDS
  15. C================================================================
  16. IMPLICIT INTEGER(I-N)
  17. IMPLICIT REAL*8(A-H,O-Z)
  18. PARAMETER(XZER=0.D0,UN=1.D0)
  19. DIMENSION SHPTOT(6,NBNO,*)
  20. DIMENSION XMAT(30,30),XVEC(30)
  21. C
  22. C PROTECTION PROVISOIRE
  23. IF(NBNN.NE.NBNO) RETURN
  24. C
  25. C UN SEUL POINT DE GAUSS
  26. C
  27. IF(NBPGAU.EQ.1) THEN
  28. DO 50 IA=1,NBNO
  29. SHPTOT(6,IA,1)=UN
  30. 50 CONTINUE
  31. C
  32. C PLUS D UN POINT DE GAUSS
  33. C
  34. ELSE IF(NBPGAU.GT.1) THEN
  35. CALL ZERO(XMAT,30,30)
  36. C
  37. C TRANSPOSE( A ) * A
  38. C
  39. DO 751 IA=1,NBNN
  40. DO 100 IB=1,NBNN
  41. CC = XZER
  42. DO 300 IC=1,NBPGAU
  43. CC = CC + SHPTOT(1,IA,IC)*SHPTOT(1,IB,IC)
  44. 300 CONTINUE
  45. XMAT(IA,IB)=CC
  46. 100 CONTINUE
  47. 751 CONTINUE
  48. C
  49. C NOMBRE DE POINTS DE GAUSS DIFFERENTS DU NOMBRE DE NOEUDS
  50. C
  51. IF(NBPGAU.NE.NBNN) THEN
  52. C
  53. C SI ON A MOINS DE POINTS DE GAUSS QUE DE NOEUDS ON RAJOUTE
  54. C UN PEU DE PENALISATION EMPECHANT D OSCILLER SUR LES NOEUDS
  55. C
  56. IF(NBPGAU.LT.NBNN) THEN
  57. DO 705 IA=1,NBNN
  58. CALL ZERO(XVEC,30,1)
  59. XVEC(IA)=NBNN
  60. DO 706 IB=1,NBNN
  61. XVEC(IB)=XVEC(IB)-UN
  62. 706 CONTINUE
  63. C
  64. C ON LE DEFLATIONNE DE SES COMPOSANTES PARRALELLES AUX H
  65. C
  66. DO 710 IB=1,NBPGAU
  67. SCAL=XZER
  68. XXNORM=XZER
  69. DO 730 IC=1,NBNN
  70. SCAL=SCAL+SHPTOT(1,IC,IB)*XVEC(IC)
  71. XXNORM=XXNORM+SHPTOT(1,IC,IB)*SHPTOT(1,IC,IB)
  72. 730 CONTINUE
  73. IF(XXNORM.LT.1.E-7) GOTO 700
  74. SCAL=SCAL/XXNORM
  75. C
  76. DO 720 IC=1,NBNN
  77. XVEC(IC)=XVEC(IC)-SCAL*SHPTOT(1,IC,IB)
  78. 720 CONTINUE
  79. 710 CONTINUE
  80. C
  81. C ON RAJOUTE CES VECTEURS DANS LA PENALISATION
  82. C
  83. DO 752 IB=1,NBNN
  84. DO 750 IC=1,NBNN
  85. XMAT(IB,IC)= XVEC(IB)*XVEC(IC)+XMAT(IB,IC)
  86. 750 CONTINUE
  87. 752 CONTINUE
  88. C
  89. 700 CONTINUE
  90. 705 CONTINUE
  91. C
  92. ENDIF
  93. C
  94. C ( T A P A ) ** -1 ALGO WILSON
  95. C
  96. DO 400 IEQ=1,NBNN
  97. DD = UN / XMAT(IEQ,IEQ)
  98. DO 410 IA=1,NBNN
  99. XMAT(IEQ,IA)=-XMAT(IEQ,IA)*DD
  100. 410 CONTINUE
  101. C
  102. DO 420 IA=1,NBNN
  103. IF(IA.EQ.IEQ) GOTO 420
  104. DO 430 IB=1,NBNN
  105. IF(IB.EQ.IEQ) GOTO 430
  106. XMAT(IA,IB)=XMAT(IA,IB)+XMAT(IA,IEQ)*XMAT(IEQ,IB)
  107. 430 CONTINUE
  108. 420 CONTINUE
  109. C
  110. DO 440 IA=1,NBNN
  111. XMAT(IA,IEQ)= XMAT(IA,IEQ)*DD
  112. 440 CONTINUE
  113. XMAT(IEQ,IEQ)= DD
  114. 400 CONTINUE
  115. C
  116. C (( T A . A ) ** -1 ) * ( T . A )
  117. C
  118. DO 500 IA=1,NBNN
  119. DO 510 IB=1,NBPGAU
  120. CC=XZER
  121. DO 520 IC=1,NBNN
  122. CC=CC+XMAT(IA,IC)*SHPTOT(1,IC,IB)
  123. 520 CONTINUE
  124. SHPTOT(6,IA,IB)=CC
  125. 510 CONTINUE
  126. 500 CONTINUE
  127. C
  128. C NOMBRE DE POINTS DE GAUSS EGAL AUX NOMBRE DE NOEUDS
  129. C
  130. ELSE IF(NBNN.EQ.NBPGAU) THEN
  131. DO 753 IA=1,NBNN
  132. DO 600 IB=1,NBNN
  133. SHPTOT(6,IA,IB)=XMAT(IA,IB)
  134. 600 CONTINUE
  135. 753 CONTINUE
  136. ENDIF
  137. ENDIF
  138. RETURN
  139. END
  140.  
  141.  
  142.  

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