Télécharger tesja4.eso

Retour à la liste

Numérotation des lignes :

tesja4
  1. C TESJA4 SOURCE GOUNAND 26/01/09 21:15:58 12441
  2. SUBROUTINE TESJA4(MYLRFS,MYPGS,
  3. $ IMPR,IRET)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. IMPLICIT INTEGER (I-N)
  6. C***********************************************************************
  7. C NOM : TESJA4
  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 tétraèdre...
  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 PPARAM
  37. -INC CCOPTIO
  38. -INC CCREEL
  39. -INC TNLIN
  40. *-INC SELREF
  41. POINTEUR MYLRFS.ELREFS
  42. POINTEUR MYLRF.ELREF
  43. *-INC SPOGAU
  44. POINTEUR MYPGS.POGAUS
  45. POINTEUR MYPG.POGAU
  46. *-INC SMCHAEL
  47. INTEGER NBLIG,NBCOL,N2LIG,N2COL,NBPOI,NBELM
  48. POINTEUR JCOOR.MCHEVA
  49. POINTEUR JMAJAC.MCHEVA
  50. POINTEUR JMIJAC.MCHEVA
  51. POINTEUR JDTJAC.MCHEVA
  52. POINTEUR FFGPG.MCHEVA
  53. POINTEUR DFFGPG.MCHEVA
  54. *
  55. INTEGER IMPR,IRET
  56. *
  57. REAL*8 JXX(3,3)
  58. REAL*8 X1,X2,X3,X4
  59. REAL*8 Y1,Y2,Y3,Y4
  60. REAL*8 Z1,Z2,Z3,Z4
  61. REAL*8 DETJXX,DETA,JXXA,XERR
  62. INTEGER NPG,INPG,ICOL,ILIG,INBTES
  63. *
  64. * Executable statements
  65. *
  66. WRITE(IOIMP,*) 'Entrée dans tesja4'
  67. *
  68. * On teste sur un tétraèdre à quatre noeuds (D&T p.131)
  69. * avec huit points de Gauss (sens direct et indirect pour le tétraèdre).
  70. * Dimension des espaces de référence et réels : 3, 3
  71. *
  72. CALL FILRF('H1D1TE4',MYLRFS,MYLRF,IMPR,IRET)
  73. IF (IRET.NE.0) GOTO 9999
  74. CALL FIPG('GAT3-3-8B',MYPGS,MYPG,IMPR,IRET)
  75. IF (IRET.NE.0) GOTO 9999
  76. CALL KFNREF(MYLRF,MYPG,FFGPG,DFFGPG,IMPR,IRET)
  77. IF (IRET.NE.0) GOTO 9999
  78. DO 3 INBTES=1,2
  79. IF (INBTES.EQ.1) THEN
  80. X1=1.01D0
  81. Y1=0.01D0
  82. Z1=0.01D0
  83. X2=0.02D0
  84. Y2=0.02D0
  85. Z2=1.02D0
  86. X3=0.03D0
  87. Y3=1.03D0
  88. Z3=0.03D0
  89. X4=0.02D0
  90. Y4=0.02D0
  91. Z4=0.02D0
  92. ELSEIF (INBTES.EQ.2) THEN
  93. X1=1.01D0
  94. Y1=0.01D0
  95. Z1=0.01D0
  96. X3=0.02D0
  97. Y3=0.02D0
  98. Z3=1.02D0
  99. X2=0.03D0
  100. Y2=1.03D0
  101. Z2=0.03D0
  102. X4=0.02D0
  103. Y4=0.02D0
  104. Z4=0.02D0
  105. ELSE
  106. WRITE(IOIMP,*) 'Erreur dans le nombre de tests'
  107. GOTO 9999
  108. ENDIF
  109. NBELM=1
  110. NBPOI=1
  111. N2COL=3
  112. N2LIG=1
  113. NBCOL=4
  114. NBLIG=1
  115. SEGINI JCOOR
  116. JCOOR.WELCHE(1,1,1,1,1,1)=X1
  117. JCOOR.WELCHE(1,1,1,2,1,1)=Y1
  118. JCOOR.WELCHE(1,1,1,3,1,1)=Z1
  119. JCOOR.WELCHE(1,2,1,1,1,1)=X2
  120. JCOOR.WELCHE(1,2,1,2,1,1)=Y2
  121. JCOOR.WELCHE(1,2,1,3,1,1)=Z2
  122. JCOOR.WELCHE(1,3,1,1,1,1)=X3
  123. JCOOR.WELCHE(1,3,1,2,1,1)=Y3
  124. JCOOR.WELCHE(1,3,1,3,1,1)=Z3
  125. JCOOR.WELCHE(1,4,1,1,1,1)=X4
  126. JCOOR.WELCHE(1,4,1,2,1,1)=Y4
  127. JCOOR.WELCHE(1,4,1,3,1,1)=Z4
  128. * Echelle de valeurs pour les coordonnées
  129. XYMAX=XZERO
  130. do ibelm=1,nbelm
  131. do ibpoi=1,nbpoi
  132. do i2col=1,n2col
  133. do i2lig=1,n2lig
  134. do ibcol=1,nbcol
  135. do iblig=1,nblig
  136. XYMAX=MAX(abs(jcoor.welche(iblig,ibcol,i2lig
  137. $ ,i2col,ibpoi,ibelm)),xymax)
  138. enddo
  139. enddo
  140. enddo
  141. enddo
  142. enddo
  143. enddo
  144. xtprec=max(XYMAX*xzprec,sqrt(xpetit))
  145. IF (IMPR.GT.3) THEN
  146. WRITE(IOIMP,*) 'JCOOR'
  147. CALL PRCHVA(JCOOR,IMPR,IRET)
  148. IF (IRET.NE.0) GOTO 9999
  149. ENDIF
  150. CALL GEOLIN(DFFGPG,JCOOR,NBELM,
  151. $ JMAJAC,JMIJAC,JDTJAC,
  152. $ IMPR,IRET)
  153. IF (IRET.NE.0) GOTO 9999
  154. *
  155. * Test sur les valeurs de la matrice jacobienne et de son
  156. * déterminant aux points de Gauss...
  157. *
  158. SEGACT MYPG
  159. SEGACT JMAJAC
  160. SEGACT JDTJAC
  161. NPG=MYPG.XCOPG(/2)
  162. JXX(1,1)=X2-X1
  163. JXX(1,2)=X3-X1
  164. JXX(1,3)=X4-X1
  165. JXX(2,1)=Y2-Y1
  166. JXX(2,2)=Y3-Y1
  167. JXX(2,3)=Y4-Y1
  168. JXX(3,1)=Z2-Z1
  169. JXX(3,2)=Z3-Z1
  170. JXX(3,3)=Z4-Z1
  171. IF (INBTES.EQ.1) THEN
  172. DETJXX=1.D0
  173. ELSEIF (INBTES.EQ.2) THEN
  174. DETJXX=-1.D0
  175. ELSE
  176. WRITE(IOIMP,*) 'Nb de test incorrect'
  177. GOTO 9999
  178. ENDIF
  179. DO INPG=1,JMAJAC.WELCHE(/5)
  180. DO 322 ILIG=1,3
  181. DO 3222 ICOL=1,3
  182. JXXA=JMAJAC.WELCHE(1,1,ILIG,ICOL,INPG,1)
  183. XERR=ABS(JXX(ILIG,ICOL)-JXXA)
  184. IF (XERR.GT.XTPREC) THEN
  185. WRITE(IOIMP,*) 'Erreur calcul mat. jac.'
  186. WRITE(IOIMP,*) 'XERR=',XERR, ' XTPREC=',XTPREC
  187. WRITE(IOIMP,*) 'JXX=',JXX(ILIG,ICOL)
  188. WRITE(IOIMP,*) 'JXXA=',JXXA
  189. GOTO 9999
  190. ENDIF
  191. 3222 CONTINUE
  192. 322 CONTINUE
  193. ENDDO
  194. DO INPG=1,JDTJAC.WELCHE(/5)
  195. DETA=JDTJAC.WELCHE(1,1,1,1,INPG,1)
  196. XERR=ABS(DETJXX-DETA)
  197. * IF (XERR.GT.0.1D0) THEN
  198. IF (XERR.GT.XTPREC) THEN
  199. WRITE(IOIMP,*) 'Erreur calcul det. mat. jac.'
  200. WRITE(IOIMP,*) 'XERR=',XERR, ' XTPREC=',XTPREC
  201. WRITE(IOIMP,*) 'DETJXX=',DETJXX
  202. WRITE(IOIMP,*) 'DETA=',DETA
  203. GOTO 9999
  204. ENDIF
  205. ENDDO
  206. SEGDES MYPG
  207. SEGDES JDTJAC
  208. SEGDES JMAJAC
  209. IF (IMPR.GT.3) THEN
  210. WRITE(IOIMP,*) 'JMAJAC'
  211. CALL PRCHVA(JMAJAC,IMPR,IRET)
  212. IF (IRET.NE.0) GOTO 9999
  213. WRITE(IOIMP,*) 'JMIJAC'
  214. CALL PRCHVA(JMIJAC,IMPR,IRET)
  215. IF (IRET.NE.0) GOTO 9999
  216. WRITE(IOIMP,*) 'JDTJAC'
  217. CALL PRCHVA(JDTJAC,IMPR,IRET)
  218. IF (IRET.NE.0) GOTO 9999
  219. ENDIF
  220. WRITE(IOIMP,*) 'Test',INBTES,' successful'
  221. 3 CONTINUE
  222. *
  223. * Normal termination
  224. *
  225. IRET=0
  226. RETURN
  227. *
  228. * Format handling
  229. *
  230. *
  231. * Error handling
  232. *
  233. 9999 CONTINUE
  234. IRET=1
  235. WRITE(IOIMP,*) 'An error was detected in subroutine tesja4'
  236. RETURN
  237. *
  238. * End of subroutine tesja4
  239. *
  240. END
  241.  
  242.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales