[updated 28.Jun.2005]

Librairie integran > Fichier wvnwvn.f

Qui appelle wvnwvn ?

line
      SUBROUTINE WVNWVN (MIXTE,NBL,WL,NCL,NBC,WC,NCC,NORME,NORMAL
     &                  ,ELDIPQ,TYPE,COFVAR,COEFFR,COFVAC,COEFFC,IMP)
line
  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
line
      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
line
      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
line
top

wvnwvn est appelé dans (3 procédures)

calinb.f (calelem) calinb2006-10.f (calelem) intgroups.h (integran)

top