[updated 28.Jun.2005]
SUBROUTINE DIVDIV (MIXTE,NBL,DWL,NBC,DWC,NDIM
& ,ELDIPQ,TYPE,COFVAR,COEFFR,COFVAC,COEFFC,IMP)
Auteur : D.Martin (Fevrier 1988)
Derniere modification : D.Martin (28 juin 2005)
Version 2
Calcul de l'integrale elementaire divU divV pour inconnues vectorielles
| dWi/dx1.dWj/dx1 dWi/dx1.dWj/dx2 dWi/dx1.dWj/dx3 |
a_{i1,i,j1,j} = | dWi/dx2.dWj/dx1 dWi/dx2.dWj/dx2 dWi/dx2.dWj/dx3 |
| dWi/dx3.dWj/dx1 dWi/dx3.dWj/dx2 dWi/dx3.dWj/dx3 |
-- Arguments --
MIXTE indicateur de mixite des interpolations
NBL nombre de lignes (comptees en noeuds) de la matrice elementaire
DWL derivees des fonctions a l'image du point de quadrature dans
l'element courant pour l'interpolation en ligne
NBC nombre de colonnes (comptees en noeuds) de la matrice elementaire
DWC derivees des fonctions a l'image du point quadrature dans
l'element courant pour l'interpolation en colonne
NDIM dimension d'espace
ELDIPQ poids de quadrature multiplie par l'element differentiel
TYPE type (REEL ou COMPLEXE) de la matrice elementaire
COFVAR coeff. variable (cas REEL)
COEFFR tableau des valeurs cumulees des integrands elementaires aux points
de quadrature (cas REEL)
COFVAC coeff. variable (cas COMPLEXE)
COEFFC tableau des valeurs cumulees des integrands elementaires aux points
de quadrature (cas COMPLEXE)
IMP numero du fichier d'impression si non nul
CHARACTER*(*) TYPE
INTEGER MIXTE,NBL,NBC,NDIM,IMP
REAL DWL(NDIM,*),DWC(NDIM,*),ELDIPQ
& ,COFVAR,COEFFR(NDIM,NBL,NDIM,*)
COMPLEX COFVAC,COEFFC(NDIM,NBL,NDIM,*)
INTEGER J,J1,I,I1
REAL RX,DWCJ
COMPLEX CX
IF (TYPE(1:1).EQ.'R') THEN
DO 24 J=1,NBC
DO 23 J1=1,NDIM
DWCJ=ELDIPQ*DWC(J1,J)
DO 22 I1=1,NDIM
Blocs sous et sur-diagonaux
DO 21 I=1,J-1
RX=COEFFR(I1,I,J1,J)
RX=RX + COFVAR * DWCJ * DWL(I1,I)
COEFFR(I1,I,J1,J)=RX
COEFFR(J1,J,I1,I)=RX
21 CONTINUE
Blocs diagonaux I=J
IF (I1.LE.J1) THEN
RX=COEFFR(I1,J,J1,J)
RX=RX + COFVAR * DWCJ * DWL(I1,J)
COEFFR(I1,J,J1,J)=RX
COEFFR(J1,J,I1,J)=RX
ENDIF
22 CONTINUE
23 CONTINUE
24 CONTINUE
ELSE
DO 44 J=1,NBC
DO 43 J1=1,NDIM
DWCJ=ELDIPQ*DWC(J1,J)
DO 42 I1=1,NDIM
DO 41 I=1,J-1
CX=COEFFC(I1,I,J1,J)
CX=CX + COFVAC * DWCJ * DWL(I1,I)
COEFFC(I1,I,J1,J)=CX
COEFFC(J1,J,I1,I)=CX
41 CONTINUE
IF (I1.LE.J1) THEN
CX=COEFFC(I1,J,J1,J)
CX=CX + COFVAC * DWCJ * DWL(I1,J)
COEFFC(I1,J,J1,J)=CX
COEFFC(J1,J,I1,J)=CX
ENDIF
42 CONTINUE
43 CONTINUE
44 CONTINUE
ENDIF
IF (IMP.GT.0) THEN
J=NBC
IF (MIXTE.EQ.0) J=0
CALL PRINTV ('DivU DivV (DIVDIV)'
& ,NDIM,NBL,NDIM,NBC,J,TYPE,COEFFR,COEFFC,IMP)
ENDIF
END !DivDiv
divdiv est appelé dans (8 procédures)