Télécharger normam.eso

Retour à la liste

Numérotation des lignes :

normam
  1. C NORMAM SOURCE GOUNAND 25/04/30 21:15:23 12258
  2. SUBROUTINE NORMAM(AMORS,AISA,NORMP,NORMD,
  3. $ IMPR,IRET)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : NORMAM
  8. C DESCRIPTION : Equilibrage de la matrice avec normp
  9. C et normd
  10. C
  11. C
  12. C
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C********************************************************
  18. C***********************************************************************
  19. C SYNTAXE GIBIANE :
  20. C ENTREES :
  21. C ENTREES/SORTIES :
  22. C SORTIES :
  23. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  24. C***********************************************************************
  25. C VERSION : v1, 29/04/2003, version initiale
  26. C HISTORIQUE : v1, 29/04/2003, création
  27. C HISTORIQUE :
  28. C HISTORIQUE :
  29. C***********************************************************************
  30. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  31. C en cas de modification de ce sous-programme afin de faciliter
  32. C la maintenance !
  33. C***********************************************************************
  34.  
  35. -INC PPARAM
  36. -INC CCOPTIO
  37. POINTEUR AMORS.PMORS
  38. POINTEUR AISA.IZA
  39. POINTEUR NORMP.IZA
  40. POINTEUR NORMD.IZA
  41. POINTEUR NORMP2.IZA
  42. POINTEUR NORMD2.IZA
  43. *
  44. INTEGER IMPR,IRET
  45. *
  46. * Executable statements
  47. *
  48. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans normam.eso'
  49. * On commence par calculer 1/sqrt(normp) qui va nous servir
  50. SEGACT NORMP
  51. NTTDDL=NORMP.A(/1)
  52. NBVA=NTTDDL
  53. SEGINI NORMP2
  54. DO ITTDDL=1,NTTDDL
  55. NORMP2.A(ITTDDL)=1.D0/(SQRT(NORMP.A(ITTDDL)))
  56. ENDDO
  57. SEGACT NORMD
  58. NBVA=NTTDDL
  59. SEGINI NORMD2
  60. DO ITTDDL=1,NTTDDL
  61. NORMD2.A(ITTDDL)=1.D0/(SQRT(NORMD.A(ITTDDL)))
  62. ENDDO
  63. * On norme
  64. segact AMORS
  65. segact AISA*MOD
  66. NTTDD2=AMORS.IA(/1)-1
  67. IF (NTTDD2.NE.NTTDDL) THEN
  68. WRITE(IOIMP,*) 'Erreur grave'
  69. GOTO 9999
  70. ENDIF
  71. DO ITTDDL=1,NTTDDL
  72. JSTRT=AMORS.IA(ITTDDL)
  73. JSTOP=AMORS.IA(ITTDDL+1)-1
  74. DO J=JSTRT,JSTOP
  75. JTTDDL=AMORS.JA(J)
  76. VAL=AISA.A(J)
  77. VAL=VAL*NORMP2.A(JTTDDL)*NORMD2.A(ITTDDL)
  78. AISA.A(J)=VAL
  79. ENDDO
  80. ENDDO
  81. SEGSUP NORMP2
  82. SEGSUP NORMD2
  83. *
  84. * Normal termination
  85. *
  86. IRET=0
  87. RETURN
  88. *
  89. * Format handling
  90. *
  91. *
  92. * Error handling
  93. *
  94. 9999 CONTINUE
  95. IRET=1
  96. WRITE(IOIMP,*) 'An error was detected in subroutine normam'
  97. RETURN
  98. *
  99. * End of subroutine NORMAM
  100. *
  101. END
  102.  
  103.  

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