[updated 7.Nov.2002]
Librairie lecdire > Fichier lcfloc.f |
SUBROUTINE LCFLOC (NUNATU,NIVIMP,IMPMES)
Auteur : O.DeBayser (Mai 1989)
Derniere modification : D.Martin (1er Mars 2000)
Version 1.0.1
LeCture de la nature d'un terme element Finis LOCalise
-- Argument d'entree --
NIVIMP niveau d'impression en lecture des directives
IMPMES numero d'unite d'impression des messages
-- Arguments de sortie --
NUNATU numero de nature du terme ELFLOC ....
-- Sous-directives de la sous-directive NATURE
NATURE + <VARIATIONNELLE/SPECTRALE> EN <COLONNE/LIGNE>
-- Valeur de NUNATU
On a NUNATU = NUNATUC (en colonne) + NUNATUL (en ligne) avec :
NUNATU(C ou L) = 2 si nature spectrale
NUNATU(C ou L) = 1 si nature variationelle en colonne
NUNATU(C ou L) = 0 si nature variationelle en ligne
de telle sorte que l'on ait le tableau suivant:
-----------------------------------------
I COLONNE I
I Variationelle I Spectrale I
----------------------------------------------------------------
I Variationelle I NUNATU=1 I NUNATU=2 I
I LIGNE---------------------------------------------------------
I Spectrale I NUNATU=3 I NUNATU=4 I
----------------------------------------------------------------
INTEGER NUNATU,NIVIMP,IMPMES
DOUBLE PRECISION FLOT
CHARACTER TEXTE*80
INTEGER NFIX,IRE,NER,NCAR,ILU,IOP
& ,LUDIRE,NUCOLI,NUVRSP
COMMON/REDCO1/ FLOT,NFIX,IRE,NER,NCAR,ILU,IOP(5)
COMMON/REDCOM/ TEXTE
CALL PRFXMJ (1,'*LcFloc*')
LUDIRE=0
NUNATU=0
NUCOLI=0
NUVRSP=0
4 CALL REDLE
IF (IRE.NE.3) CALL REDERR (13,' ')
IF (IMPMES.GT.0.AND.NIVIMP.GT.0)
& WRITE (IMPMES,10003) '*LcFloc*',TEXTE(1:NCAR)
IF (TEXTE(1:NCAR).EQ.'COLONNE') THEN
NUCOLI=1
ELSEIF (TEXTE(1:NCAR).EQ.'LIGNE') THEN
NUCOLI=2
ELSEIF (TEXTE(1:NCAR).EQ.'VARIATIONNELLE') THEN
NUVRSP=1
ELSEIF (TEXTE(1:NCAR).EQ.'SPECTRALE') THEN
NUVRSP=2
ELSE
GOTO 999
ENDIF
LUDIRE=LUDIRE+1
LUDIRE sert a deux choses 1)lire par paire
2)calculer NUNATU pour chaque paire
IF (LUDIRE.EQ.2) THEN
IF (NUCOLI*NUVRSP.EQ.0) CALL REDERR (3,TEXTE(1:NCAR))
IF (NUVRSP.EQ.1) THEN
si variationelle en colonne
LUDIRE=1
si variationelle en ligne
IF (NUCOLI.EQ.2) LUDIRE=0
ENDIF
si spectrale en colonne ou en ligne LUDIRE vaut 2
NUNATU=NUNATU+LUDIRE
LUDIRE=0
NUCOLI=0
NUVRSP=0
ENDIF
GOTO 4
999 CALL PRFXMJ (-1,'*LcFloc*')
10001 FORMAT(T6,A8,T56,' , suivi de nombre : ',I12)
10002 FORMAT(T6,A8,T56,' , suivi de nombre : ',E12.4)
10003 FORMAT(T6,A8,T56,' , suivi du mot : ',A)
10004 FORMAT(T2,A8,T56,' , suivi de la chaine (*',I2,') : ',A)
END !LcFloc
lcfloc est appelé dans (2 procédures)