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.  
  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. SEGDES NORMP
  58. SEGACT NORMD
  59. NBVA=NTTDDL
  60. SEGINI NORMD2
  61. DO ITTDDL=1,NTTDDL
  62. NORMD2.A(ITTDDL)=1.D0/(SQRT(NORMD.A(ITTDDL)))
  63. ENDDO
  64. SEGDES NORMD
  65. * On norme
  66. SEGACT AMORS
  67. SEGACT AISA*MOD
  68. NTTDD2=AMORS.IA(/1)-1
  69. IF (NTTDD2.NE.NTTDDL) THEN
  70. WRITE(IOIMP,*) 'Erreur grave'
  71. GOTO 9999
  72. ENDIF
  73. DO ITTDDL=1,NTTDDL
  74. JSTRT=AMORS.IA(ITTDDL)
  75. JSTOP=AMORS.IA(ITTDDL+1)-1
  76. DO J=JSTRT,JSTOP
  77. JTTDDL=AMORS.JA(J)
  78. VAL=AISA.A(J)
  79. VAL=VAL*NORMP2.A(JTTDDL)*NORMD2.A(ITTDDL)
  80. AISA.A(J)=VAL
  81. ENDDO
  82. ENDDO
  83. SEGDES AISA
  84. SEGDES AMORS
  85. SEGSUP NORMP2
  86. SEGSUP NORMD2
  87. *
  88. * Normal termination
  89. *
  90. IRET=0
  91. RETURN
  92. *
  93. * Format handling
  94. *
  95. *
  96. * Error handling
  97. *
  98. 9999 CONTINUE
  99. IRET=1
  100. WRITE(IOIMP,*) 'An error was detected in subroutine normam'
  101. RETURN
  102. *
  103. * End of subroutine NORMAM
  104. *
  105. END
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  

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