Download tesja2.eso

Back to the list

   1 : C TESJA2    SOURCE    GOUNAND   05/12/21    21:37:08     5281           
   2 :       SUBROUTINE TESJA2(MYLRFS,MYPGS,
   3 :      $     IMPR,IRET)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 :       IMPLICIT INTEGER (I-N)
   6 : C***********************************************************************
   7 : C NOM         : TESJA2
   8 : C PROJET      : Noyau linéaire NLIN
   9 : C DESCRIPTION : On vérifie le calcul de la matrice jacobienne et de son
  10 : C               déterminant sur un segment...
  11 : C     
  12 : C LANGAGE     : ESOPE
  13 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  14 : C               mél : gounand@semt2.smts.cea.fr
  15 : C***********************************************************************
  16 : C APPELES          :
  17 : C APPELES (E/S)    :
  18 : C APPELES (BLAS)   :
  19 : C APPELES (CALCUL) :
  20 : C APPELE PAR       : TESTJA
  21 : C***********************************************************************
  22 : C SYNTAXE GIBIANE    :
  23 : C ENTREES            :
  24 : C ENTREES/SORTIES    :
  25 : C SORTIES            :
  26 : C***********************************************************************
  27 : C VERSION    : v1, 16/08/99, version initiale
  28 : C HISTORIQUE : v1, 16/08/99, création
  29 : C HISTORIQUE :
  30 : C HISTORIQUE :
  31 : C***********************************************************************
  32 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33 : C en cas de modification de ce sous-programme afin de faciliter
  34 : C la maintenance !
  35 : C***********************************************************************
  36 : -INC CCOPTIO
  37 : -INC CCREEL
  38 : CBEGININCLUDE SELREF
  39 :       SEGMENT ELREF
  40 :       CHARACTER*(LNNOM)  NOMLRF
  41 :       CHARACTER*(LNFORM) FORME 
  42 :       CHARACTER*(LNTYPL) TYPEL 
  43 :       CHARACTER*(LNESP)  ESPACE
  44 :       INTEGER DEGRE
  45 :       REAL*8 XCONOD(NDIMEL,NBNOD)
  46 :       INTEGER NPQUAF(NBDDL)
  47 :       INTEGER NUMCMP(NBDDL)
  48 :       INTEGER QUENOD(NBDDL)
  49 :       INTEGER ORDDER(NDIMEL,NBDDL)
  50 :       POINTEUR MBPOLY.POLYNS
  51 :       ENDSEGMENT
  52 :       SEGMENT ELREFS
  53 :       POINTEUR LISEL(0).ELREF
  54 :       ENDSEGMENT
  55 : CENDINCLUDE SELREF
  56 :       POINTEUR MYLRFS.ELREFS
  57 :       POINTEUR MYLRF.ELREF
  58 : CBEGININCLUDE SPOGAU
  59 :       SEGMENT POGAU
  60 :       CHARACTER*(LNNPG)  NOMPG
  61 :       CHARACTER*(LNTPG)  TYPMPG
  62 :       CHARACTER*(LNFPG)  FORLPG
  63 :       INTEGER NORDPG
  64 :       REAL*8 XCOPG(NDLPG,NBPG)
  65 :       REAL*8 XPOPG(NBPG)
  66 :       ENDSEGMENT
  67 :       SEGMENT POGAUS
  68 :       POINTEUR LISPG(0).POGAU
  69 :       ENDSEGMENT
  70 : CENDINCLUDE SPOGAU
  71 :       POINTEUR MYPGS.POGAUS
  72 :       POINTEUR MYPG.POGAU
  73 : CBEGININCLUDE SMCHAEL
  74 :       SEGMENT MCHAEL
  75 :       POINTEUR IMACHE(N1).MELEME
  76 :       POINTEUR ICHEVA(N1).MCHEVA
  77 :       ENDSEGMENT
  78 :       SEGMENT MCHEVA
  79 :       REAL*8 VELCHE(NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM)
  80 :       ENDSEGMENT
  81 :       SEGMENT LCHEVA
  82 :       POINTEUR LISCHE(NBCHE).MCHEVA
  83 :       ENDSEGMENT
  84 : CENDINCLUDE SMCHAEL
  85 :       INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  86 :       POINTEUR JCOOR.MCHEVA
  87 :       POINTEUR JMAJAC.MCHEVA
  88 :       POINTEUR JMIJAC.MCHEVA
  89 :       POINTEUR JDTJAC.MCHEVA
  90 :       POINTEUR FFGPG.MCHEVA
  91 :       POINTEUR DFFGPG.MCHEVA
  92 : *     
  93 :       INTEGER IMPR,IRET
  94 : *     
  95 :       REAL*8 JXX(1,1),JIXX(1,1)
  96 :       REAL*8 X1,X2
  97 :       REAL*8 L,DETJXX,DETA,JXXA,JIXXA,XERR
  98 :       REAL*8 XERREL
  99 :       INTEGER NPG,INPG,INBTES
 100 :       LOGICAL LERJ
 101 : *     
 102 : * Executable statements
 103 : *     
 104 :       WRITE(IOIMP,*) 'Entrée dans tesja2'
 105 : *
 106 : * On teste sur un segment à deux noeuds (D&T p.96)
 107 : * avec six points de Gauss (sens direct et indirect pour le segment). 
 108 : * Dimension des espaces de référence et réels : 1, 1
 109 : *
 109 :       CALL FILRF('H1D1SE2',MYLRFS,MYLRF,IMPR,IRET)
 110 :       IF (IRET.NE.0) GOTO 9999
 110 :       CALL FIPG('GAC1-11-6',MYPGS,MYPG,IMPR,IRET)
 111 :       IF (IRET.NE.0) GOTO 9999
 111 :       CALL KFNREF(MYLRF,MYPG,FFGPG,DFFGPG,IMPR,IRET)
 112 :       IF (IRET.NE.0) GOTO 9999
 113 :       DO 3 INBTES=1,2
 114 :          IF (INBTES.EQ.1) THEN
 115 :             X1=-2.D0*XPI
 116 :             X2=XPI
 117 :          ELSEIF (INBTES.EQ.2) THEN
 118 :             X1=3.D0*XPI
 119 :             X2=-XPI
 120 :          ELSE
 121 :             WRITE(IOIMP,*) 'Erreur dans le nombre de tests'
 122 :             GOTO 9999
 123 :          ENDIF
 124 :          NBELM=1
 125 :          NBPOI=1
 126 :          N2COL=1
 127 :          N2LIG=1
 128 :          NBCOL=2
 129 :          NBLIG=1
 130 :          SEGINI JCOOR
 131 :          JCOOR.VELCHE(1,1,1,1,1,1)=X1
 132 :          JCOOR.VELCHE(1,2,1,1,1,1)=X2
 133 :          SEGDES JCOOR
 134 :          IF (IMPR.GT.3) THEN
 135 :             WRITE(IOIMP,*) 'JCOOR'
 135 :             CALL PRCHVA(JCOOR,IMPR,IRET)
 136 :             IF (IRET.NE.0) GOTO 9999
 137 :          ENDIF
 138 :          LERJ=.FALSE.
 138 :          CALL GEOLIN(DFFGPG,JCOOR,NBELM,
 139 :      $        JMAJAC,JMIJAC,JDTJAC,LERJ,
 140 :      $        IMPR,IRET)
 141 :          IF (IRET.NE.0) GOTO 9999
 142 : *     
 143 : *     Test sur les valeurs de la matrice jacobienne, de son inverse
 144 : *     et de son déterminant aux points de Gauss...
 145 : *     
 146 :          SEGACT JMAJAC
 147 :          SEGACT JMIJAC
 148 :          SEGACT JDTJAC
 149 :          L=(X2-X1)
 150 :          JXX(1,1)=L/2.D0
 151 :          JIXX(1,1)=2.D0/L
 152 :          DETJXX=L/2.D0
 153 :          DO INPG=1,JMAJAC.VELCHE(/5)
 154 :             JXXA=JMAJAC.VELCHE(1,1,1,1,INPG,1)
 155 :             XERR=XERREL(JXX(1,1),JXXA)
 156 :             IF (XERR.GT.10.D0*XZPREC) THEN
 157 :                WRITE(IOIMP,*) 'Erreur calcul mat. jac.'
 158 :                WRITE(IOIMP,*) 'XERR=',XERR, ' XZPREC=',XZPREC
 159 :                WRITE(IOIMP,*) 'JXX=',JXX(1,1)
 160 :                WRITE(IOIMP,*) 'JXXA=',JXXA
 161 :                GOTO 9999
 162 :             ENDIF
 163 :          ENDDO
 164 :          DO INPG=1,JMIJAC.VELCHE(/5)
 165 :             JIXXA=JMIJAC.VELCHE(1,1,1,1,INPG,1)
 166 :             XERR=XERREL(JIXX(1,1),JIXXA)
 167 :             IF (XERR.GT.10.D0*XZPREC) THEN
 168 :                WRITE(IOIMP,*) 'Erreur calcul mat. jac.'
 169 :                WRITE(IOIMP,*) 'XERR=',XERR, ' XZPREC=',XZPREC
 170 :                WRITE(IOIMP,*) 'JIXX=',JIXX(1,1)
 171 :                WRITE(IOIMP,*) 'JIXXA=',JIXXA
 172 :                GOTO 9999
 173 :             ENDIF
 174 :          ENDDO
 175 :          DO INPG=1,JDTJAC.VELCHE(/5)
 176 :             DETA=JDTJAC.VELCHE(1,1,1,1,INPG,1)
 177 :             XERR=XERREL(DETJXX,DETA)
 178 :             IF (XERR.GT.10.D0*XZPREC) THEN
 179 :                WRITE(IOIMP,*) 'Erreur calcul det. mat. jac.'
 180 :                WRITE(IOIMP,*) 'XERR=',XERR, ' XZPREC=',XZPREC
 181 :                WRITE(IOIMP,*) 'DETJXX=',DETJXX
 182 :                WRITE(IOIMP,*) 'DETA=',DETA
 183 :                GOTO 9999
 184 :             ENDIF
 185 :          ENDDO
 186 :          SEGDES JDTJAC
 187 :          SEGDES JMIJAC
 188 :          SEGDES JMAJAC
 189 :          IF (IMPR.GT.3) THEN
 190 :             WRITE(IOIMP,*) 'JMAJAC'
 190 :             CALL PRCHVA(JMAJAC,IMPR,IRET)
 191 :             IF (IRET.NE.0) GOTO 9999
 192 :             WRITE(IOIMP,*) 'JMIJAC'
 192 :             CALL PRCHVA(JMIJAC,IMPR,IRET)
 193 :             IF (IRET.NE.0) GOTO 9999
 194 :             WRITE(IOIMP,*) 'JDTJAC'
 194 :             CALL PRCHVA(JDTJAC,IMPR,IRET)
 195 :             IF (IRET.NE.0) GOTO 9999
 196 :          ENDIF
 197 :          WRITE(IOIMP,*) 'Test',INBTES,' successful'
 198 :  3    CONTINUE
 199 : *     
 200 : * Normal termination
 201 : *     
 202 :       IRET=0
 203 :       RETURN
 204 : *     
 205 : * Format handling
 206 : *     
 207 : *     
 208 : * Error handling
 209 : *     
 210 :  9999 CONTINUE
 211 :       IRET=1
 212 :       WRITE(IOIMP,*) 'An error was detected in subroutine tesja2'
 213 :       RETURN
 214 : *     
 215 : * End of subroutine tesja2
 216 : *     
 217 :       END
 218 : 
 219 :  

© Cast3M 2003 - All rights reserved.
Disclaimer