[updated 4.Feb.2010]

Librairie calelem > Fichier calinb.f

Qui appelle calinb ?

line
      SUBROUTINE CALINB (MIXTE,NDIM,NDMDOM,NBTRDO,INDTRD,NCHDON,NOMDON
     &                  ,POIDQ,ELTDIF,POIN,JACOBF
     &                  ,NBC,WC,DWC
     &                  ,NBL,WL,DWL,MCMATR,MCMATC
     &                  ,IST,RST,CST,NODONA,NOMFCT,IMPFCH)
line
  Auteur : D.Martin (Octobre 1988)
  Derniere modification : D.Martin (04 fevrier 2010)
  Version 9 : D.Martin (04 fevrier 2010)
 
  Calcul des integrales elementaires sur un domaine de dimension inferieure
  a la dimension d'espace, en un point de quadrature et ne necessitant pas
  d'extension (integrales sans derivees ou avec derivees tangentielles)
   
 -- Arguments (voir aussi Calelb) --
  MIXTE  indice de mixite des interpolations en ligne/colonne
  NDIM   dimension d'espace
  NDMDOM dimension du domaine de calcul
  NBTRDO nombre de termes a calculer sur le domaine
  INDTRD structure locale de description des termes du domaine
    Contenu du tableau INDTRD pour le terme numero NUTRDO
    (NUTRDO)           niveau, puis adresse absolue du terme dans RST,CST
    (NUTRDO+   NBTRDO) adresses relatives des matrices elementaires  
                       dans le tableau des matrices elementaires du bon type
    (NUTRDO+ 2*NBTRDO) adresses relatives des tableaux locaux de valeurs  
                       nodales dans le tableau des matrices elementaires
    (NUTRDO+ 3*NBTRDO) indice de type de declaration REEL ou COMPLEXE du terme
    (NUTRDO+ 4*NBTRDO) indice de type de calcul (ITYCAL)
    (NUTRDO+ 5*NBTRDO) numero d'integrand (NUKALE)
    (NUTRDO+ 6*NBTRDO) nombre de composantes de l'inconnue en colonne
    (NUTRDO+ 7*NBTRDO) type d'interpolation de l'inconnue en colonne
    (NUTRDO+ 8*NBTRDO) nombre de noeuds de l'inconnue en colonne
                       ou nombre de fonctions propres (inconnue spectrale)
    (NUTRDO+ 9*NBTRDO) nombre de composantes de l'inconnue en ligne
    (NUTRDO+10*NBTRDO) type d'interplation de l'inconnue en ligne
    (NUTRDO+11*NBTRDO) nombre de noeuds de l'inconnue en ligne
                       ou nombre de fonctions propres (inconnue spectrale)
    (NUTRDO+12*NBTRDO) numero de donnee affectee si cette donnee est de type
                       FONCTION ou TABLEAU
    (NUTRDO+13*NBTRDO) type de la donnee associee (CONSTANTE,FONCTION,TABLEAU) 
    (NUTRDO+14*NBTRDO) niveau ou numero de la donnee affectee au terme (NIVDON)  
    (NUTRDO+15*NBTRDO) type du resultat de la donnnee associee (REEL,COMPLEXE) 
    (NUTRDO+20*NBTRDO) niveau d'impression du terme
    de plus si la donnee affectee au terme est un tableau ou une fonction
    (NUTRDO+16*NBTRDO) adresse du tableau associe au terme ou
                       de la constante ou du tableau associe a la fonction
    (NUTRDO+17*NBTRDO) type (CONSTANTE ou TABLEAU) associe a la fonction
    (NUTRDO+18*NBTRDO) type du resultat (REEL, COMPLEXE) associe a la fonction
    (NUTRDO+19*NBTRDO) nombre de composantes par noeud pour une donnee
                       associee de type TABLEAU
  NCHDON nombre de caracteres par nom de donnee
  NOMDON tableau #OMDON des noms de donnees
  POIDQ  poids de quadrature au point de quadrature en cours
  ELTDIF element d'integration (element de surface ou de longueur)
  POIN   tableau de travail contenant les coordonnees de l'image du point
         de quadrature dans l'element courant,
         suivi de la norme et des composantes du vecteur normal unitaire
  NBC nombre de d.l. (de la face ou arete) de l'element en colonne
  WC  valeurs des fonctions de base pour l'interpolation en colonne
  DWC derivees des fonctions de base pour l'interpolation en colonne
  NBL nombre de d.l. (de la face ou arete) de l'element en ligne
  WL  valeurs des fonctions de base pour l'interpolation en ligne
  DWL derivees des fonctions de base pour l'interpolation en ligne
  MCMATR adresse du tableau des matrices elementaires reelles
  MCMATC adresse du tableau des matirces elementaires complexes
  IST    super-tableau entier
  RST    super-tableau reel
  CST    super-tableau complexe
  NODONA chaine de caractere receptrice d'un nom de donnee
  NOMFCT chaine de caractere receptrice d'un nom de fonction
  IMPFCH unite logique d'impression si non nul (pas d'impression si nul)
line
      IMPLICIT NONE
      CHARACTER*(*) NODONA,NOMFCT
      CHARACTER     NOMDON(*)
      INTEGER       MIXTE,NDIM,NDMDOM,NBTRDO,NCHDON,NBC
     &             ,NBL,MCMATR,MCMATC,IMPFCH
     &             ,INDTRD(*),IST(*)  
      REAL          POIDQ,POIN(*),JACOBF(NDIM,*),ELTDIF
     &             ,WL(*),WC(*),DWC(NDMDOM,*),DWL(NDMDOM,*)
     &             ,RST(*)
      COMPLEX       CST(*)
 
      Variables locales
      CHARACTER     DONINT*9,TYPINT*12,TYPE*12
      INTEGER       INTYKL
      INTEGER       NUTRDO,ITYPTR,KINTEG,ITYCAL,ALPHA,BETA,GAMMA,DELTA
     &             ,NCPINC,INTINC,NBFPRC,NCPINL,INTINL,NBFPRL
     &             ,NIVIMP,IMPINT,NUDONN,MCADRR,MCADRC,ADRTRM
      Pour dimensionner le tableau en cas de coefficient variable.
      LGCOFX doit etre >= NDIMX*NDIMX et >= NBFPRX
      NDIMX dimension maximum (3)
      NBFPRX nombre maximum de fonctions propres dans la methode
             des elements finis localises avec integration numerique
      INTEGER NDIMX,NBFPRX,LGCOFX
      PARAMETER ( NDIMX = 3, NBFPRX = 100, LGCOFX = NBFPRX )
      REAL    COFVAR(LGCOFX)
      COMPLEX COFVAC(LGCOFX)
line
      CALL PRFXMJ (1,'*CalInb*')
   
      Boucle sur les Integrands elementaires
 
      DO 3000 NUTRDO=1,NBTRDO
 
         Type de calcul ('ELFINI' ou 'ELFLQU') du terme courant
         ITYCAL=INDTRD(NUTRDO+ 4*NBTRDO)
         Numero d'integrand
         KINTEG=INDTRD(NUTRDO+ 5*NBTRDO)
         IF (KINTEG.LE.0) GOTO 3000
         Adresse relative pour l'integrale elementaire dans le tableau des
         matrices elementaires
         ADRTRM=INDTRD(NUTRDO+   NBTRDO)
         Indicateur de type de declaration de l'integrale elementaire
         ITYPTR=INDTRD(NUTRDO+ 3*NBTRDO)
         Nombre de composantes pour l'inconnue en colonne
         NCPINC=INDTRD(NUTRDO+ 6*NBTRDO)

         Nombre de composantes pour l'inconnue en ligne
         NCPINL=INDTRD(NUTRDO+ 9*NBTRDO)

         Numero de donnee affectee a l'integrale elementaire
         NUDONN=INDTRD(NUTRDO+12*NBTRDO)
         Niveau d'impression pour l'integrale elementaire
         NIVIMP=INDTRD(NUTRDO+20*NBTRDO)
 
         Type REEL ou COMPLEXE de l'integrale elementaire
         TYPE  =TYPINT (ITYPTR)                                         !utilite
         IMPINT=0
         IF (NIVIMP.GT.0) IMPINT=IMPFCH
         Adresse pour l'integrale elementaire
         MCADRR=MCMATR-1+ADRTRM
         MCADRC=MCMATC-1+ADRTRM
 
         COFVAR(1)=1.
         COFVAC(1)=1.
 
         IF (ITYCAL.EQ.INTYKL('ELFLQU')) THEN
 
            Cas d'une integrale de la methode des elements finis localise
            avec integration numerique
 
            IF (NUDONN.LE.0) CALL ERINTG (100,1)                        !utilite
            Type de l'inconnue en colonne
            INTINC=INDTRD(NUTRDO+ 7*NBTRDO)
            Nombre de fonctions propres pour l'inconnue en colonne
            NBFPRC=INDTRD(NUTRDO+ 8*NBTRDO)
            Type de l'inconnue en ligne
            INTINL=INDTRD(NUTRDO+10*NBTRDO)
            Nombre de fonctions propres pour l'inconnue en ligne
            NBFPRL=INDTRD(NUTRDO+11*NBTRDO)
 
            IF (INTINC.EQ.-1.AND.INTINL.EQ.-1) THEN            
               Cas d'une inconnue Spectrale en colonne et en ligne              
               IF (NBFPRL.GT.NBFPRX) 
     &            CALL BAISE('Parameter NBFPRX sous-estime.')                
               On suppose meme  inconnue en ligne et en colonne
               Calcul des fonctions spectrales au point de quadrature
               CALL CALCOP (NDIM,NBTRDO,INDTRD,POIN,NBFPRL
     &                     ,MCMATR,MCMATC,NUTRDO,NUDONN,NCHDON          
     &                     ,NOMDON,NODONA,NOMFCT,IST,RST,CST
     &                     ,COFVAR,COFVAC)             
 
               Calcul de l'integrand a inconnue 'Spectrale' en colonne 
               et inconnue 'Spectrale' en ligne
    
               CALL FSPEC2 (NBFPRL,NBFPRC,POIDQ*ELTDIF,TYPE
     &                     ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC)
     &                     ,IMPINT)              
 
            ELSEIF (INTINC.EQ.-1) THEN
               Cas d'une inconnue Spectrale en colonne
               IF (NBFPRC.GT.NBFPRX) 
     &            CALL BAISE('Parameter NBFPRX sous-estime.')                 
               Calcul des fonctions spectrales au point de quadrature
               CALL CALCOP (NDIM,NBTRDO,INDTRD,POIN,NBFPRC
     &                     ,MCMATR,MCMATC,NUTRDO,NUDONN,NCHDON          
     &                     ,NOMDON,NODONA,NOMFCT,IST,RST,CST
     &                     ,COFVAR,COFVAC)
 
               Calcul de l'integrand a inconnue 'Spectrale' en colonne 
               et a inconnue 'Valeurs Nodales' en ligne
 
               CALL FSPECW (NBL,WL,NCPINL,NBFPRC,POIDQ*ELTDIF,TYPE
     &                     ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC)
     &                     ,IMPINT)
            ELSEIF (INTINL.EQ.-1) THEN

               Cas d'une inconnue Spectrale en ligne
               IF (NBFPRL.GT.NBFPRX) 
     &            CALL BAISE('Parameter NBFPRX sous-estime.')                 
               Calcul des fonctions spectrales au point de quadrature
               CALL CALCOP (NDIM,NBTRDO,INDTRD,POIN,NBFPRL
     &                     ,MCMATR,MCMATC,NUTRDO,NUDONN,NCHDON          
     &                     ,NOMDON,NODONA,NOMFCT,IST,RST,CST
     &                     ,COFVAR,COFVAC)
 
               Calcul de l'integrand inconnue 'Valeurs Nodales' en colonne 
               et inconnue 'Spectrale' en ligne
 
               CALL FSPECW (NBC,WC,NCPINC,NBFPRL,POIDQ*ELTDIF,TYPE
     &                     ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC)
     &                     ,IMPINT) 
 
            ELSE
               CALL ERINTG (103,1)
            ENDIF
            GOTO 3000
         ENDIF
   
         Integrand contenant un coefficient variable ?
line
 
         IF (NUDONN.GT.0)
     &      CALL CALCOV (NDIM,NBTRDO,INDTRD,POIN,NBC,WC,MCMATR,MCMATC
     &                  ,NUTRDO,TYPE,NUDONN,NCHDON,NOMDON,NODONA             
     &                  ,NOMFCT,IST,RST,CST,COFVAR,COFVAC)
 
         IF (NCPINC.LE.1.AND.NCPINL.LE.1) THEN
 
         Integrands a inconnues scalaires
line
 
         GOTO (1001,1999,1999,1999,1005,1999) KINTEG
         IF (KINTEG.EQ.307) GOTO 1307
         IF (KINTEG.EQ.313) GOTO 1313
         GOTO 1999
 
 --      Integrand V
 1001    CALL WISCA  (NBL,WL
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      Integrand UV
 1005    CALL WWISCA (MIXTE,NBL,WL,NBC,WC
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      dU/dt.dV/dt (2d seulement)
 1307    CALL DTWDTW (NBL,DWL,NBC,DWC,NDMDOM
     &               ,POIDQ/ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      Integrand GRADGRADTG Produit scalaire des gradients tangentiels
 1313    CALL GRTGRT (MIXTE,NBL,DWL,NBC,DWC,NDIM,NDMDOM,JACOBF
     &               ,POIDQ/ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
 
         ELSE
 
         Integrands a inconnues vectorielles
line
 
         GOTO (2001,2999,2999,2999,2005) KINTEG
         GOTO (2040,2999,2042,2042,2042,2042,2042,2042,2042,2042
     &        ,2042) KINTEG-39
         GOTO (2203,2203,2203,2203,2203,2203) KINTEG-202
         GOTO (2301,2302,2999,2999,2999,2999,2999,2999,2999,2310
     &        ,2311,2312,2999) KINTEG-300
         GOTO 2999
 
         (F.V) (produit scalaire)
 2001    CALL WIVEC  (NBL,WL,NCPINL
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      (U.V) (produit scalaire)
 2005    CALL WWIVEC (MIXTE,NBL,WL,NCPINL,NBC,WC,NCPINC
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      U^V (produit vectoriel) (2d)
 2040    CALL WVW    (MIXTE,NBL,WL,NCPINL,NBC,WC,NCPINC
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      UaVb
 2042    CALL INTNOS (KINTEG,ALPHA,BETA,GAMMA,DELTA)
         IF (ALPHA.EQ.BETA) THEN
            CALL WAWA   (MIXTE,ALPHA,NBL,WL,NCPINL,NBC,WC,NCPINC
     &                  ,POIDQ*ELTDIF,TYPE
     &                  ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         ELSE
            CALL WAWB   (MIXTE,BETA,NBL,WL,NCPINL,ALPHA,NBC,WC,NCPINC
     &                  ,POIDQ*ELTDIF,TYPE
     &                  ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         ENDIF
         GOTO 3000
 
 --      Ua V ou U Va (produit d'une composante d'une inconnue vectorielle
         par un inconnue scalaire)
 2203    CALL INTNOS (KINTEG,ALPHA,BETA,GAMMA,DELTA)
         IF (ALPHA.GT.0) THEN
            CALL WAW(MIXTE,ALPHA,NBL,WL,NCPINL,NBC,WC,NCPINC
     &              ,POIDQ*ELTDIF,TYPE
     &              ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         ELSE
            CALL WWA(MIXTE,BETA,NBL,WL,NCPINL,NBC,WC,NCPINC
     &              ,POIDQ*ELTDIF,TYPE
     &              ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         ENDIF
         GOTO 3000
 
 --      (V.N) (produit scalaire par la normale)
 2301    CALL WN     (NBL,WL,NCPINL,POIN(NDIM+2)
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 --      (V^N) (produit vectoriel par la normale) (2d)
 2302    CALL WVN    (NBL,WL,NCPINL,POIN(NDIM+2)
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      (U^N.V^N) (produit scalaire de produits vectoriels)
 2310    CALL WVNWVN (MIXTE,NBL,WL,NCPINL,NBC,WC,NCPINC,POIN(NDIM+1)
     &               ,POIN(NDIM+2),POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      (U.N)(V.N) (produit de produits scalaires)
 2311    CALL WNWN   (MIXTE,NBL,WL,NCPINL,NBC,WC,NCPINC,POIN(NDIM+2)
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
 
 --      (U.N)V
 2312    CALL WNV    (NBL,WL,NBC,WC,NCPINC,POIN(NDIM+2)
     &               ,POIDQ*ELTDIF,TYPE
     &               ,COFVAR,RST(MCADRR),COFVAC,CST(MCADRC),IMPINT)
         GOTO 3000
         ---------------------------------------------------------------
         ENDIF
 3000 CONTINUE  
      CALL PRFXMJ (-1,'*CalInb*')
      RETURN
line
 1999 CALL ERINTG (15,KINTEG)
 2999 CALL ERINTG (16,KINTEG)
line
 -- File history
  Version 9 : D.Martin (04 fevrier 2010)
  - ajout d'un GOTO 3000 apres l'appel de WIVEC (bug anterieur a octobre 2006)
  Version 8 : D.Martin (10 novembre 2009)
  - ajout du cas d'une inconnue variationnelle vectorielle pour les termes
    elements finis localises
  - ajout integrales de bord a inconnues vectorielles U_{alpha}V et UV_{alpha}
  Version 7 : D. Martin & E. Luneville (26 mars 2009)
  - bug d'argument (POIDQ*ELTDIF au lieu de POIDQ/ELTDIF) à l'appel de DTWDTW
  Version 6 : D.Martin & C.Chambeyron (2 octobre 2006)
  - ajout du calcul de matrices spectrales en ligne et colonne (Fspec2)
  Version 5 : D.Martin (6 octobre 2005)
  - ajout des integrales de bord a inconnues vectorielles U_{alpha}V_{beta}
  Version 4 : D.Martin (23 juin 2005)
  Version 3 : D.Martin (4 mai 2004)
  - ajout de nouveaux integrands
  Version 2.0.7 : D.Martin (20 juin 2003)
line
                                                                    END !CalInb
  
line
top

calinb est appelé dans (5 procédures)

calcop.f (calelem) calelb.f (calelem) calinb2006-10.f (calelem)
dtwdtw.f (integran) intgroups.h (integran)  

top