Download dfnfr.eso

Back to the list

   1 : C DFNFR     SOURCE    GOUNAND   06/01/18    21:15:26     5293           
   2 :       SUBROUTINE DFNFR(DFFPG,JMIJAC,
   3 :      $     JDFFPG,
   4 :      $     IMPR,IRET)
   5 :       IMPLICIT REAL*8 (A-H,O-Z)
   6 :       IMPLICIT INTEGER (I-N)
   7 : C***********************************************************************
   8 : C NOM         : DFNFR
   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          : PRCHVA (impression d'un segment de type MCHEVA)
  31 : C                    DFNFR1 (calcul des dérivées premières des fonctions
  32 : C                            de forme aux points de Gauss sur l'élément
  33 : C                            réel (fortran 77))  
  34 : C APPELE PAR       : NLAP, NCVN
  35 : C***********************************************************************
  36 : C ENTREES            : * DFFPG  (type MCHEVA) : valeurs des dérivées
  37 : C                        premières des fonctions d'interpolation aux
  38 : C                        points de gauss sur l'élément de référence.
  39 : C                        Structure (cf.include SMCHAEL) : 
  40 : C                        (1, nb. ddl, 1, dim.esp.réf, nb. poi. gauss, 1) 
  41 : C                      * JMIJAC (type MCHEVA) : valeurs de l'inverse de
  42 : C                        la matrice jacobienne aux points de Gauss sur
  43 : C                        le maillage élémentaire. 
  44 : C                        Structure (cf.include SMCHAEL) : 
  45 : C                        (1, 1, dim. esp. référence, dim. esp. réel,
  46 : C                         nb. poi. gauss, nb. éléments) 
  47 : C ENTREES/SORTIES    : -
  48 : C SORTIES            : * JDFFPG (type MCHEVA) : valeurs des dérivées
  49 : C                        premières des fonctions d'interpolation
  50 : C                        aux points de gauss sur l'élément réel. 
  51 : C                        Structure (cf.include SMCHAEL) : 
  52 : C                        (1, nb. ddl, 1, 1, nb. poi. gauss, nb. élém.) 
  53 : C TRAVAIL            : * NDDL   (type entier) : nombre de ddl (par
  54 : C                        élément) de la transformation géométrique.
  55 : C                      * IESREF (type entier) : dimension de l'espace de
  56 : C                        référence.
  57 : C                      * IESREL (type entier) : dimension de l'espace
  58 : C                        réel (i.e. géométrique).
  59 : C                      * NDPOGO (type entier) : nombre de points
  60 : C                        d'intégration.
  61 : C                      * NDELEM (type entier) : nombre d'éléments du
  62 : C                        maillage élémentaire courant.
  63 : C***********************************************************************
  64 : C VERSION    : v2, 25/09/03, refonte complète (modif SMPOUET)
  65 : C VERSION    : v1, 19/05/00, version initiale
  66 : C HISTORIQUE : v1, 19/05/00, création
  67 : C HISTORIQUE :
  68 : C HISTORIQUE :
  69 : C***********************************************************************
  70 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  71 : C en cas de modification de ce sous-programme afin de faciliter
  72 : C la maintenance !
  73 : C***********************************************************************
  74 : -INC CCOPTIO
  75 : CBEGININCLUDE SMCHAEL
  76 :       SEGMENT MCHAEL
  77 :       POINTEUR IMACHE(N1).MELEME
  78 :       POINTEUR ICHEVA(N1).MCHEVA
  79 :       ENDSEGMENT
  80 :       SEGMENT MCHEVA
  81 :       REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  82 :       ENDSEGMENT
  83 :       SEGMENT LCHEVA
  84 :       POINTEUR LISCHE(NBCHE).MCHEVA
  85 :       ENDSEGMENT
  86 : CENDINCLUDE SMCHAEL
  87 :       INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  88 :       POINTEUR DFFPG.MCHEVA
  89 :       POINTEUR JMIJAC.MCHEVA
  90 :       POINTEUR JDFFPG.MCHEVA
  91 : *
  92 :       INTEGER IMPR,IRET
  93 : *
  94 :       INTEGER NDLIG,NDCOL,N2DLIG,N2DCOL,NDNOEU,NDELEM
  95 :       INTEGER NDDL,IESREF,IESREL,NDPOGO,NBELEM
  96 : *     
  97 : * Executable statements
  98 : *
  99 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans dfnfr'
 100 :       SEGACT DFFPG
 101 :       NDLIG1=DFFPG.VELCHE(/1)
 102 :       NDDL =DFFPG.VELCHE(/2)
 103 :       N2DLI1=DFFPG.VELCHE(/3)
 104 :       IESREF=DFFPG.VELCHE(/4)
 105 :       NDPOG1=DFFPG.VELCHE(/5)
 106 :       NDELEM=DFFPG.VELCHE(/6)
 107 :       SEGACT JMIJAC
 108 :       NDLIG =JMIJAC.VELCHE(/1)
 109 :       NDCOL =JMIJAC.VELCHE(/2)
 110 :       N2DLIG=JMIJAC.VELCHE(/3)
 111 :       N2DCOL=JMIJAC.VELCHE(/4)
 112 :       NDPOG2=JMIJAC.VELCHE(/5)
 113 :       NBELEM=JMIJAC.VELCHE(/6)
 114 :       IF (NDLIG.NE.1.OR.NDCOL.NE.1) THEN
 115 :          WRITE(IOIMP,*) 'Erreur dims JMIJAC'
 116 :          GOTO 9999
 117 :       ENDIF
 118 :       NDPOGO=MAX(NDPOG1,NDPOG2)
 119 : *      WRITE(IOIMP,*) 'NDPOGO=',NDPOGO
 120 : *
 121 :       IF (NDLIG1.NE.1.OR.N2DLI1.NE.1.OR.NDELEM.NE.1.OR.
 122 :      $     (NDPOG1.NE.1.AND.NDPOG1.NE.NDPOGO)) THEN
 123 :          WRITE(IOIMP,*) 'Erreur dims DFFPG'
 124 :          GOTO 9999
 125 :       ENDIF
 126 :       IF (N2DLIG.NE.IESREF.OR.N2DCOL.NE.IDIM.OR.
 127 :      $     (NDPOG2.NE.1.AND.NDPOG2.NE.NDPOGO)) THEN
 128 :          WRITE(IOIMP,*) 'Incompatibilité JMIJAC-DFFPG'
 129 :          GOTO 9999
 130 :       ENDIF
 131 : *
 132 :       IESREL=N2DCOL
 133 :       NPFF =NDPOG1
 134 :       NPJMI=NDPOG2
 135 : *
 136 : * Initialisations...
 137 : *
 138 :       NBLIG=1
 139 :       NBCOL=NDDL
 140 :       N2LIG=1
 141 :       N2COL=IESREL
 142 :       NBPOI=NDPOGO
 143 :       NBELM=NBELEM
 144 :       SEGINI JDFFPG
 145 : *
 146 : * On effectue le calcul du coefficient aux points de Gauss
 147 : *
 147 :       CALL DFNFR1(NDDL,IESREF,IESREL,NPFF,NDPOGO,NBELEM,
 148 :      $     NPJMI,
 149 :      $     DFFPG.VELCHE,JMIJAC.VELCHE,
 150 :      $     JDFFPG.VELCHE,
 151 :      $     IMPR,IRET)
 152 :       IF (IRET.NE.0) GOTO 9999
 153 :       SEGDES JDFFPG
 154 :       SEGDES JMIJAC
 155 :       SEGDES DFFPG
 156 :       IF (IMPR.GT.3) THEN
 157 :          WRITE(IOIMP,*) 'On a créé',
 158 :      $        ' JDFFPG(élément , poi.gauss ,',
 159 :      $        'dim. esp. réel. ,1, ddl ,1)'
 159 :          CALL PRCHVA(JDFFPG,IMPR,IRET)
 160 :          IF (IRET.NE.0) GOTO 9999
 161 :       ENDIF
 162 : *
 163 : * Normal termination
 164 : *
 165 :       IRET=0
 166 :       RETURN
 167 : *
 168 : * Format handling
 169 : *
 170 : *
 171 : * Error handling
 172 : *
 173 :  9999 CONTINUE
 174 :       IRET=1
 175 :       WRITE(IOIMP,*) 'An error was detected in subroutine dfnfr'
 176 :       RETURN
 177 : *
 178 : * End of subroutine DFNFR
 179 : *
 180 :       END
 181 : 
 182 :  
 183 :  

© Cast3M 2003 - All rights reserved.
Disclaimer