Télécharger nfil.eso

Retour à la liste

Numérotation des lignes :

nfil
  1. C NFIL SOURCE FD218221 25/12/15 21:15:03 12426
  2. SUBROUTINE NFIL
  3. ************************************************************************
  4. C NOM : NFIL
  5. C DESCRIPTION : L'operateur NFIL sert a normaliser/modifier
  6. C une matrice de filtragea (cree avec MFIL).
  7. ************************************************************************
  8. C APPELE PAR : pilot.eso
  9. ************************************************************************
  10. C SYNTAXE (GIBIANE) :
  11. C
  12. C HN = NFIL H HS ;
  13. C HM = NFIL H HS 'MODI' ;
  14. C
  15. C H : Martice de filtrage initiale
  16. C (RIGIDITE calculee par MFIL)
  17. C
  18. C HS : Vecteur de la somme des poids de filtrage
  19. C (CHPOINT egal a H * un CHPOINT unitaire)
  20. C
  21. C HN : Matrice "normalisee" (les termes de chaque ligne i sont
  22. C divises par la i-eme composante de HS)
  23. C
  24. C HM : Matrice "modifiee" (les termes de chaque colonne i sont
  25. C divises par la i-eme composante de HS)
  26. C
  27. ************************************************************************
  28.  
  29. C Typages implicites classiques
  30. IMPLICIT INTEGER(I-N)
  31. IMPLICIT REAL*8(A-H,O-Z)
  32.  
  33. C Includes des segments utiles
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC CCREEL
  37. -INC SMRIGID
  38. -INC SMCHPOI
  39. -INC SMELEME
  40.  
  41. C Mots clefs
  42. PARAMETER (LCLE=1)
  43. CHARACTER*4 MOCLE(LCLE)
  44. DATA MOCLE/'MODI'/
  45.  
  46. C Quelques objets utiles
  47. CHARACTER*(LOCHPO) MOT1
  48.  
  49. C Lecture du mot clef
  50. CALL LIRMOT(MOCLE,LCLE,ICLE,0)
  51.  
  52. C Lecture de la RIGIDITE
  53. CALL LIROBJ('RIGIDITE',RI1,1,IRETOU)
  54. CALL ACTOBJ('RIGIDITE',RI1,1)
  55. IF (IERR.NE.0) RETURN
  56.  
  57. C Lecture du CHPOINT
  58. CALL LIROBJ('CHPOINT ',MCHPO1,1,IRETOU)
  59. CALL ACTOBJ('CHPOINT ',MCHPO1,1)
  60. IF (IERR.NE.0) RETURN
  61.  
  62. C Petite verification du CHPOINT
  63. NSOUPO=MCHPO1.IPCHP(/1)
  64. IF (NSOUPO.EQ.0) THEN
  65. CALL ERREUR(150)
  66. RETURN
  67. ENDIF
  68.  
  69. C Initialisation de la matrice resultat RI2 (sur la base de RI1)
  70. SEGINI,RI2=RI1
  71.  
  72. C Normalisation/Modification de la matrice
  73. NRIGEL=RI2.IRIGEL(/2)
  74. C Boucle sur les sous matrices
  75. DO IM=1,NRIGEL
  76. C Initialisation des taleaux XMATRI de RI2 (sur la base de RI1)
  77. XMATR1=RI1.IRIGEL(4,IM)
  78. SEGINI,XMATR2=XMATR1
  79. RI2.IRIGEL(4,IM)=XMATR2
  80. NLIGRD=XMATR2.RE(/1)
  81. NLIGRP=XMATR2.RE(/2)
  82. NELRIG=XMATR2.RE(/3)
  83. IPT2=RI2.IRIGEL(1,IM)
  84. DES2=RI2.IRIGEL(3,IM)
  85. SEGACT IPT2,DES2
  86. C Boucle sur les elements
  87. DO IE=1,NELRIG
  88. C Boucle sur les inconnues
  89. C Si ICLE=0 : normalistion des lignes (on parcourt les duales)
  90. IF (ICLE.EQ.0) THEN
  91. NINC=NLIGRD
  92. C Si ICLE=1 : normalisation des colonnes (on parcourt les primales)
  93. ELSEIF(ICLE.EQ.1) THEN
  94. NINC=NLIGRP
  95. ENDIF
  96. DO IINC=1,NINC
  97. C Nom de l'inconnue (MOT1) et noeud (IGLO1)
  98. IF (ICLE.EQ.0) THEN
  99. MOT1=DES2.LISDUA(IINC)
  100. ILOC1=DES2.NOELED(IINC)
  101. ELSEIF(ICLE.EQ.1) THEN
  102. MOT1=DES2.LISINC(IINC)
  103. ILOC1=DES2.NOELEP(IINC)
  104. ENDIF
  105. IGLO1=IPT2.NUM(ILOC1,IE)
  106. C Extraction dans le CHPOINT de la valeur de la
  107. C composante MOT1 au noeud IGLO1
  108. CALL EXTRA9(MCHPO1,IGLO1,MOT1,0,.FALSE.,XVAL,IRET)
  109. C Si le point n'est pas present dans MCHPO1, on itere
  110. IF (IRET.EQ.0) THEN
  111. GOTO 10
  112. ENDIF
  113. C Si la valeur du champ est nulle, on itere
  114. IF (ABS(XVAL).LT.XPETIT) THEN
  115. GOTO 10
  116. ENDIF
  117. C Division des temres concernes
  118. C Pour la normalistion des lignes, on boucle sur les primales
  119. IF (ICLE.EQ.0) THEN
  120. DO J=1,NLIGRP
  121. XMATR2.RE(IINC,J,IE)=XMATR2.RE(IINC,J,IE)/XVAL
  122. ENDDO
  123. C Pour la normalistion par colonne, on boucle sur les duales
  124. ELSEIF(ICLE.EQ.1) THEN
  125. DO J=1,NLIGRD
  126. XMATR2.RE(J,IINC,IE)=XMATR2.RE(J,IINC,IE)/XVAL
  127. ENDDO
  128. ENDIF
  129. 10 CONTINUE
  130. ENDDO
  131. ENDDO
  132. SEGDES IPT2,DES2,XMATR2
  133. ENDDO
  134.  
  135. C Menage
  136. SEGDES RI2,MCHPO1
  137. CALL ECROBJ('RIGIDITE',RI2)
  138.  
  139. C Et c'est fini
  140. RETURN
  141. END
  142.  
  143.  

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