Download dfnfrf.eso

Back to the list

   1 : C DFNFRF    SOURCE    GOUNAND   06/08/04    21:15:30     5520           
   2 :       SUBROUTINE DFNFRF(DFFPG,JMIJAC,SSFACT,NBELEF,
   3 :      $     JDFFPG,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT REAL*8 (A-H,O-Z)
   6 :       IMPLICIT INTEGER (I-N)
   7 : C***********************************************************************
   8 : C NOM         : DFNFRF
   9 : C DESCRIPTION : Calcul des dérivées premières des fonctions de forme aux
  10 : C               points de Gauss sur l'élément réel.
  11 : C
  12 : C             \partial_x = [j] \partial_{\xi}
  13 : C       
  14 : C             où \partial_x = trans( \frac{\partial}{\partial_x} 
  15 : C                                    \frac{\partial}{\partial_y} 
  16 : C                                    \frac{\partial}{\partial_z} )
  17 : C
  18 : C             \partial_{\xi} = trans( \frac{\partial}{\partial_{\xi}} 
  19 : C                                     \frac{\partial}{\partial_{\eta}} 
  20 : C                                     \frac{\partial}{\partial_{\zeta}})
  21 : C
  22 : C             [j] est l'inverse de la matrice jacobienne
  23 : C
  24 : C             cf. Dhatt et Touzot p.52
  25 : C
  26 : C LANGAGE     : ESOPE
  27 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  28 : C               mél : gounand@semt2.smts.cea.fr
  29 : C***********************************************************************
  30 : C APPELES          : RSET8  (copie de tableaux de CHARACTER*8)
  31 : C                    PRCHVA (impression d'un segment de type MCHEVA)
  32 : C                    DFNFRF1 (calcul des dérivées premières des fonctions
  33 : C                            de forme aux points de Gauss sur l'élément
  34 : C                            réel (fortran 77))  
  35 : C APPELE PAR       : NLAP, NCVN
  36 : C***********************************************************************
  37 : C ENTREES            : * DFFPG  (type MCHEVA) : valeurs des dérivées
  38 : C                        premières des fonctions d'interpolation aux
  39 : C                        points de gauss sur l'élément de référence.
  40 : C                        Structure (cf.include SMCHAEL) : 
  41 : C                        (1, nb. ddl, 1, dim.esp.réf, nb. poi. gauss, 1) 
  42 : C                      * JMIJAC (type MCHEVA) : valeurs de l'inverse de
  43 : C                        la matrice jacobienne aux points de Gauss sur
  44 : C                        le maillage élémentaire. 
  45 : C                        Structure (cf.include SMCHAEL) : 
  46 : C                        (1, 1, dim. esp. référence, dim. esp. réel,
  47 : C                         nb. poi. gauss, nb. éléments) 
  48 : C ENTREES/SORTIES    : -
  49 : C SORTIES            : * JDFFPG (type MCHEVA) : valeurs des dérivées
  50 : C                        premières des fonctions d'interpolation
  51 : C                        aux points de gauss sur l'élément réel. 
  52 : C                        Structure (cf.include SMCHAEL) : 
  53 : C                        (1, nb. ddl, 1, 1, nb. poi. gauss, nb. élém.) 
  54 : C TRAVAIL            : * NDDL   (type entier) : nombre de ddl (par
  55 : C                        élément) de la transformation géométrique.
  56 : C                      * IESREF (type entier) : dimension de l'espace de
  57 : C                        référence.
  58 : C                      * IESREL (type entier) : dimension de l'espace
  59 : C                        réel (i.e. géométrique).
  60 : C                      * NBPOGO (type entier) : nombre de points
  61 : C                        d'intégration.
  62 : C                      * NDELEM (type entier) : nombre d'éléments du
  63 : C                        maillage élémentaire courant.
  64 : C***********************************************************************
  65 : C VERSION    : v2, 03/10/03, refonte complète (modif SMPOUET)
  66 : C VERSION    : v1, 19/05/00, version initiale
  67 : C HISTORIQUE : v1, 19/05/00, création
  68 : C HISTORIQUE :
  69 : C HISTORIQUE :
  70 : C***********************************************************************
  71 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  72 : C en cas de modification de ce sous-programme afin de faciliter
  73 : C la maintenance !
  74 : C***********************************************************************
  75 : -INC CCOPTIO
  76 : CBEGININCLUDE SFACTIV
  77 :       SEGMENT FACTIV
  78 :       POINTEUR IFACTI(NBSOUV).SFACTI
  79 :       ENDSEGMENT
  80 :       SEGMENT SFACTI
  81 :       POINTEUR ISFACT(NBSOFV).SSFACT
  82 :       ENDSEGMENT
  83 :       SEGMENT SSFACT
  84 :       LOGICAL LFACTI(NBELFV,NBELEV)
  85 :       ENDSEGMENT
  86 : CENDINCLUDE SFACTIV
  87 : CBEGININCLUDE SMCHAEL
  88 :       SEGMENT MCHAEL
  89 :       POINTEUR IMACHE(N1).MELEME
  90 :       POINTEUR ICHEVA(N1).MCHEVA
  91 :       ENDSEGMENT
  92 :       SEGMENT MCHEVA
  93 :       REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  94 :       ENDSEGMENT
  95 :       SEGMENT LCHEVA
  96 :       POINTEUR LISCHE(NBCHE).MCHEVA
  97 :       ENDSEGMENT
  98 : CENDINCLUDE SMCHAEL
  99 :       INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
 100 :       POINTEUR DFFPG.MCHEVA
 101 :       POINTEUR JMIJAC.MCHEVA
 102 :       POINTEUR JDFFPG.MCHEVA
 103 : *
 104 :       INTEGER NBELEF
 105 :       INTEGER IMPR,IRET
 106 : *
 107 :       INTEGER NDLIG,NDCOL,N2DLIG,NDNOEU,NBELEV,NBELFV
 108 :       INTEGER NDDL,IESREF,IESREL,NBPOGO,NBELEM
 109 : *     
 110 : * Executable statements
 111 : *
 112 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfrf'
 113 :       SEGACT SSFACT
 114 :       NBELFV=SSFACT.LFACTI(/1)
 115 :       NBELEV=SSFACT.LFACTI(/2)
 116 :       IESREL=IDIM
 117 : *
 118 :       SEGACT DFFPG
 119 :       NDLIG =DFFPG.VELCHE(/1)
 120 :       NDDL  =DFFPG.VELCHE(/2)
 121 :       N2DLIG=DFFPG.VELCHE(/3)
 122 :       IESREF=DFFPG.VELCHE(/4)
 123 :       NBPOGO=DFFPG.VELCHE(/5)
 124 :       NDELEM=DFFPG.VELCHE(/6)
 125 :       IF (NDLIG.NE.1.OR.N2DLIG.NE.1
 126 :      $     .OR.(NDELEM.NE.NBELFV)) THEN
 127 :          WRITE(IOIMP,*) 'Erreur dims DFFPG'
 128 :          GOTO 9999
 129 :       ENDIF
 130 : *
 131 :       SEGACT JMIJAC
 132 :       NDLIG =JMIJAC.VELCHE(/1)
 133 :       NDCOL =JMIJAC.VELCHE(/2)
 134 :       N2DLIG=JMIJAC.VELCHE(/3)
 135 :       N2DCOL=JMIJAC.VELCHE(/4)
 136 :       NDNOEU=JMIJAC.VELCHE(/5)
 137 :       NBELEM=JMIJAC.VELCHE(/6)
 138 :       IF (NDLIG.NE.1.OR.NDCOL.NE.1.OR.N2DLIG.NE.IESREF
 139 :      $     .OR.N2DCOL.NE.IESREL
 140 :      $     .OR.(NDNOEU.NE.1.AND.NDNOEU.NE.NBPOGO)
 141 :      $     .OR.NBELEM.NE.NBELEF) THEN
 142 :          WRITE(IOIMP,*) 'Erreur dims JMIJAC'
 143 :          GOTO 9999
 144 :       ENDIF
 145 :       NPJMI=NDNOEU
 146 : *
 147 : * Initialisations...
 148 : *
 149 :       NBLIG=1
 150 :       NBCOL=NDDL
 151 :       N2LIG=1
 152 :       N2COL=IESREL
 153 :       NBPOI=NBPOGO
 154 :       NBELM=NBELEF
 155 :       SEGINI JDFFPG
 156 : *
 157 : * On effectue le calcul du coefficient aux points de Gauss
 158 : *
 158 :       CALL DFNFF1(NDDL,IESREF,IESREL,NBPOGO,NBELEV,NBELEF,NBELFV,
 159 :      $     NPJMI,
 160 :      $     DFFPG.VELCHE,JMIJAC.VELCHE,SSFACT.LFACTI,
 161 :      $     JDFFPG.VELCHE,
 162 :      $     IMPR,IRET)
 163 :       IF (IRET.NE.0) GOTO 9999
 164 :       SEGDES JDFFPG
 165 :       SEGDES DFFPG
 166 :       SEGDES JMIJAC
 167 :       SEGDES SSFACT
 168 : *
 169 : * Normal termination
 170 : *
 171 :       IRET=0
 172 :       RETURN
 173 : *
 174 : * Format handling
 175 : *
 176 : *
 177 : * Error handling
 178 : *
 179 :  9999 CONTINUE
 180 :       IRET=1
 181 :       WRITE(IOIMP,*) 'An error was detected in subroutine dfnfrf'
 182 :       RETURN
 183 : *
 184 : * End of subroutine DFNFRF
 185 : *
 186 :       END
 187 : 
 188 :  

© Cast3M 2003 - All rights reserved.
Disclaimer