Télécharger normam.eso

Retour à la liste

Numérotation des lignes :

  1. C NORMAM SOURCE PV 16/11/17 22:00:53 9180
  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. -INC CCOPTIO
  35. POINTEUR AMORS.PMORS
  36. POINTEUR AISA.IZA
  37. POINTEUR NORMP.IZA
  38. POINTEUR NORMD.IZA
  39. POINTEUR NORMP2.IZA
  40. POINTEUR NORMD2.IZA
  41. *
  42. INTEGER IMPR,IRET
  43. *
  44. * Executable statements
  45. *
  46. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans normam.eso'
  47. * On commence par calculer 1/sqrt(normp) qui va nous servir
  48. SEGACT NORMP
  49. NTTDDL=NORMP.A(/1)
  50. NBVA=NTTDDL
  51. SEGINI NORMP2
  52. DO ITTDDL=1,NTTDDL
  53. NORMP2.A(ITTDDL)=1.D0/(SQRT(NORMP.A(ITTDDL)))
  54. ENDDO
  55. SEGDES NORMP
  56. SEGACT NORMD
  57. NBVA=NTTDDL
  58. SEGINI NORMD2
  59. DO ITTDDL=1,NTTDDL
  60. NORMD2.A(ITTDDL)=1.D0/(SQRT(NORMD.A(ITTDDL)))
  61. ENDDO
  62. SEGDES NORMD
  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. SEGDES AISA
  82. SEGDES AMORS
  83. SEGSUP NORMP2
  84. SEGSUP NORMD2
  85. *
  86. * Normal termination
  87. *
  88. IRET=0
  89. RETURN
  90. *
  91. * Format handling
  92. *
  93. *
  94. * Error handling
  95. *
  96. 9999 CONTINUE
  97. IRET=1
  98. WRITE(IOIMP,*) 'An error was detected in subroutine normam'
  99. RETURN
  100. *
  101. * End of subroutine NORMAM
  102. *
  103. END
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  

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