[updated 28.Jun.2005]
SUBROUTINE WVNWVN (MIXTE,NBL,WL,NCL,NBC,WC,NCC,NORME,NORMAL
& ,ELDIPQ,TYPE,COFVAR,COEFFR,COFVAC,COEFFC,IMP)
Auteurs : D.Martin & O.DeBayser (Novembre 1992)
Derniere modification : D.Martin (28 juin 2005)
Version 2
Calcul de la matrice elementaire U^n . V^n en 2D ou 3D
pour des inconnues a 3 composantes
| n_2^2+n_3^2 -n_1n_2 -n_1n_3 |
a_{i1,i,j1,j} = | -n_1n_2 n_1^2+n_3^2 -n_2n_3 | W_i W_j
| -n_1n_3 -n_2n_3 n_1^2+n_2^2 |
avec n_3= 0, en dimension 2.
pour des inconnues a 2 composantes
| n_2^2 -n_1n_2 |
a_{i1,i,j1,j} = | | W_i W_j
| -n_1n_2 n_1^2 |
i.e. a_{i1,i,j1,j} = ( delta_{i1,j1} ||n||^2 - n_{i1}n_{j1} ) W_i W_j
-- Arguments --
MIXTE indicateur de mixite de l'interpolation
NBL nombre de lignes (comptees en noeuds) de la matrice elementaire
WL valeurs de fonctions de base pour l'interpolation en ligne
NCL nombre de composantes pour l'inconnue en ligne
NBC nombre de colonnes (comptees en noeuds) de la matrice elementaire
WC valeurs de fonctions de base pour l'interpolation en ligne
NCC nombre de composantes pour l'inconnue en colonne
NORME norme du vecteur normal (egale l'element differentiel !)
NORMAL composantes du vecteur normal au point image du point de quadrature
ELDIPQ poids de quadrature multiplie par l'element differentiel
TYPE type (REEL ou COMPLEXE) de l'integrand ou du coeff. variable
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,NCL,NBC,NCC,IMP
REAL WC(*),WL(*),ELDIPQ,NORME,NORMAL(*)
REAL COFVAR,COEFFR(NCL,NBL,NCC,*)
COMPLEX COFVAC,COEFFC(NCL,NBL,NCC,*)
INTEGER J,J1,I,I1
REAL RS,WORK(3,3)
COMPLEX CS
Calcul de la matrice ( delta_{i1,j1} - n_{i1}n_{j1} / ||n||^2 )
DO 1 J1=1,NCC
DO 2 I1=1,J1-1
RS=-NORMAL(I1)*NORMAL(J1)*ELDIPQ
WORK(I1,J1)=RS
WORK(J1,I1)=RS
2 CONTINUE
WORK(J1,J1)=(NORME*NORME-NORMAL(J1)*NORMAL(J1))*ELDIPQ
1 CONTINUE
IF (TYPE(1:1).EQ.'R') THEN
IF (MIXTE.EQ.0) THEN
DO 24 J=1,NBC
DO 23 J1=1,NCC
DO 21 I=1,J
DO 20 I1=1,MAX(NCC*MIN(1,J-I),J1)
RS=COEFFR(I1,I,J1,J)
RS=RS+COFVAR * WC(J) * WL(I) * WORK(I1,J1)
COEFFR(I1,I,J1,J)=RS
COEFFR(J1,J,I1,I)=RS
20 CONTINUE
21 CONTINUE
23 CONTINUE
24 CONTINUE
ELSE
DO 29 J=1,NBC
DO 28 J1=1,NCC
DO 27 I=1,NBL
DO 26 I1=1,NCL
COEFFR(I1,I,J1,J)=COEFFR(I1,I,J1,J)
& + COFVAR * WC(J) * WL(I) * WORK(I1,J1)
26 CONTINUE
27 CONTINUE
28 CONTINUE
29 CONTINUE
ENDIF
ELSE
IF (MIXTE.EQ.0) THEN
DO 44 J=1,NBC
DO 43 J1=1,NCC
DO 41 I=1,J
DO 40 I1=1,MAX(NCC*MIN(1,J-I),J1)
CS=COEFFC(I1,I,J1,J)
CS=CS+ COFVAC * WC(J) * WC(I) * WORK(I1,J1)
COEFFC(I1,I,J1,J)=CS
COEFFC(J1,J,I1,I)=CS
40 CONTINUE
41 CONTINUE
43 CONTINUE
44 CONTINUE
ELSE
DO 49 J=1,NBC
DO 48 J1=1,NCC
DO 47 I=1,NBL
DO 46 I1=1,NCL
COEFFC(I1,I,J1,J)=COEFFC(I1,I,J1,J)
& + COFVAC * WC(J) * WL(I) * WORK(I1,J1)
46 CONTINUE
47 CONTINUE
48 CONTINUE
49 CONTINUE
ENDIF
ENDIF
IF (IMP.GT.0) THEN
J=NBC
IF (MIXTE.EQ.0) J=0
CALL PRINTV ('(U^n.V^n) (WVNWVN)'
& ,NCL,NBL,NCC,NBC,J,TYPE,COEFFR,COEFFC,IMP)
ENDIF
END !WvnWvn
wvnwvn est appelé dans (3 procédures)