Télécharger tesja3.eso

Retour à la liste

Numérotation des lignes :

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

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