[updated 3.Jan.2011]
SUBROUTINE INTATR (NUINTG,KDERIC,INDEXC,KDERIL,INDEXL,INSYME)
Auteur : D.Martin (Novembre 1990)
Derniere modification : D.Martin (03 janvier 2011)
Version 6
Recherche des attributs d'un integrand :
- rangs des derivees en colonne et ligne
- indices d'extension en colonne et ligne
(a confirmer selon la dimension du domaine de calcul)
- indicateur de symetrie pour l'integrand
(a confirmer quand les interpolations en ligne / colonne sont egales)
-- Argument d'entree --
NUINTG numero d'integrand
-- Arguments de sortie --
KDERIC rang de la derivee en colonne (=-1 pour un terme unicolonne)
INDEXC indice d'extension en colonne
(presence de derivees non tangentielles pour une integrale de bord)
KDERIL rang de la derivee en ligne (=-1 pour un terme uniligne)
INDEXL indice d'extension en ligne
(presence de derivees non tangentielles pour une integrale de bord)
INSYME indicateur de symetrie : 1 integrand symetrique
-1 integrand antisymetrique
0 ni symetrique, ni antisymetrique
IMPLICIT NONE
INTEGER NUINTG,KDERIC,INDEXC,KDERIL,INDEXL,INSYME
INTEGER ALPHA,BETA,GAMMA,DELTA
KDERIC=0
INDEXC=0
KDERIL=0
INDEXL=0
INSYME=0
IF (NUINTG.LE.12) THEN
IF (NUINTG.LE.1) THEN
KDERIC=-1
ELSEIF (NUINTG.LE.4) THEN
D1V D2V D3V
KDERIC=-1
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.EQ.5) THEN
UV
INSYME=1
ELSEIF (NUINTG.EQ.6) THEN
U.AV (symetrique si et seulement si A symetrique)
INSYME=0
ELSEIF (NUINTG.LE.9) THEN
UD1V UD2V UD3V
KDERIL=1
INDEXL=1
ELSE
D1UV D2UV D3UV
KDERIC=1
INDEXC=1
ENDIF
ELSEIF (NUINTG.LE.26) THEN
D1UD1V D1UD2V D1UD3V D2UD1V D2UD2V D2UD3V D3UD1V D3UD2V D3UD3V
GRADGRAD ROTROT DIVDIV EIJEIJ AIJDIDJ
KDERIC=1
INDEXC=1
KDERIL=1
INDEXL=1
CALL INTNOS (NUINTG,ALPHA,BETA,GAMMA,DELTA)
IF (GAMMA.EQ.DELTA) INSYME=1
ELSEIF (NUINTG.LE.29) THEN
GRADUV DIVUV ROTUV
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.LE.32) THEN
UDIVV UGRADV UROTV
IF (NUINTG.EQ.32) INSYME=-1 (SUREMENT PAS ANTISYMETRIQUE !!!)
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.LE.39) THEN
ROTROTBT0 ROTROTBT1 ROTROTBT2 DIVDIVBT0 DIVDIVBT1 DIVDIVBT2 EIJEIJBT0
IF (NUINTG.EQ.33.OR.NUINTG.EQ.36.OR.NUINTG.EQ.39) THEN
KDERIC=1
INDEXC=1
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.EQ.34) THEN
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.EQ.37) THEN
KDERIL=1
INDEXL=1
ENDIF
INSYME=1
ELSEIF (NUINTG.EQ.40) THEN
U^V
INSYME=-1
ELSEIF (NUINTG.EQ.41) THEN
DIV (??????)
KDERIC=-1
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.LE.50) THEN
UaVb ( 1<= a,b <= 3 )
CALL INTNOS (NUINTG,ALPHA,BETA,GAMMA,DELTA)
IF (ALPHA.EQ.BETA) INSYME=1
ELSEIF (NUINTG.LE.131) THEN
Ua,gVb,d ( 1<= a,g,b,d <= 3 )
KDERIC=1
KDERIL=1
INDEXL=1
INDEXC=1
CALL INTNOS (NUINTG,ALPHA,BETA,GAMMA,DELTA)
IF (ALPHA.EQ.BETA.AND.GAMMA.EQ.DELTA) INSYME=1
ELSEIF (NUINTG.LE.133) THEN
UI,IVJ,J UI,JVJ,I
KDERIC=1
KDERIL=1
INDEXL=1
INDEXC=1
INSYME=1
ELSEIF (NUINTG.LE.160) THEN
Ua,gVb ( 1<= a,b,g <= 3 )
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.LE.187) THEN
UaVb,g ( 1<= a,b,g <= 3 )
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.LE.201) THEN
ROTROTP1 ROTROTP2 ROTROTP3 ROTROTP12 ROTROTP23 ROTROTP13 ROTROTP123
DIVDIVP1 DIVDIVP2 DIVDIVP3 DIVDIVP12 DIVDIVP23 DIVDIVP13 DIVDIVP123
: ROTROT et DIVDIV dans les methodes PML (G. Legendre)
KDERIC=1
INDEXC=1
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.LE.208) THEN
EIJEIJP1 EIJEIJP2 EIJEIJP3 EIJEIJP12 EIJEIJP23 EIJEIJP13 EIJEIJP123
: EIJEIJ dans la methode PML (G. Legendre)
KDERIC=1
KDERIL=1
INDEXL=1
INDEXC=1
INSYME=1
ELSEIF (NUINTG.LE.225) THEN
UROTVP1 UROTVP2 UROTVP3 UROTVP12 UROTVP23 UROTVP13 UROTVP123
protV / URotV dans la methode PML (G. Legendre)
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.LE.228) THEN
ROTUVP1 ROTUVP2 ROTUVP2 ROTUVP12 ROTUVP23 ROTUVP13 ROTUVP123
rotUq / RotUV dans la methode PML (G. Legendre)
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.LE.284) THEN
GOTO 90001
-----C'est la ZONE ! (pour introduire de nouveaux integrands)
ELSEIF (NUINTG.......) THEN
ELSEIF (NUINTG.LE.300) THEN
GOTO 90001
Integrands de bord, contenant la normale
ELSEIF (NUINTG.LE.302) THEN
VN V^N
KDERIC=-1
ELSEIF (NUINTG.EQ.303) THEN
DNV
KDERIC=-1
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.EQ.304) THEN
UDNV
KDERIL=1
INDEXL=1
ELSEIF (NUINTG.EQ.305) THEN
DNUV
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.LE.306) THEN
DNUDNV
KDERIC=1
INDEXC=1
KDERIL=1
INDEXL=1
INSYME=1
ELSEIF (NUINTG.EQ.307) THEN
DTUDTV
KDERIC=1
KDERIL=1
INSYME=1
ELSEIF (NUINTG.LE.309) THEN
NROTUV NDIVUV
KDERIC=1
INDEXC=1
ELSEIF (NUINTG.LE.311) THEN
U^N.V^N U.NV.N
INSYME=1
ELSEIF (NUINTG.EQ.312) THEN
U.NV
INSYME=0
ELSEIF (NUINTG.EQ.313) THEN
GRADGRADTG gradgrad tangentiel
KDERIC=1
KDERIL=1
INSYME=1
ELSE
GOTO 90001
ENDIF
RETURN
90001 CALL ERINTG (0,NUINTG)
-- File History
Version 6 : D.Martin (3 janiver 2011)
- ajout des integrand PML 3d (ROTROTP/DIVDIVP/EIJEIJ/UROTP/ROTUVP[23/13/123]
- et de l'integrand NON antisymetrique RotUV
Version 5 : D.Martin & G. Legendre (30 octobre 2008)
- ajout des integrands PML generaux por l'elasticite 2D :
EIJEIJP1 EIJEIJP2 EIJEIJP12
Version 4 : D.Martin (18 octobre 2006)
- ajout des integrands PML generaux 2D :
ROTROTP1 ROTROTP2 ROTROTP12 DIVDIVP1 DIVDIVP2 DIVDIVP12
Version 3 : D.Martin (03 octobre 2005)
END !IntAtr
intatr est appelé dans (8 procédures)