Télécharger pent15.eso

Retour à la liste

Numérotation des lignes :

pent15
  1. C PENT15 SOURCE OF166741 24/12/13 21:16:54 12097
  2. SUBROUTINE PENT15(IDOMA,IOP2,IOP3)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PENT15
  8. C
  9. C DESCRIPTION : Appellé par PENT
  10. C
  11. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  12. C
  13. C AUTEUR : A. BECCANTINI, R. MOREL, DRN/DMT/SEMT/LTMF
  14. C
  15. C************************************************************************
  16. C
  17. C
  18. C PHRASE D'APPEL (GIBIANE) :
  19. C
  20. C
  21. C RCHPO1 RCHPO2 RCHELEM1 = 'PENT'
  22. C MCLE1 MCLE2 MCLE3 TABDO LMOT CHPO1 (MCLE4 CHPO2) ;
  23. C
  24. C ou
  25. C
  26. C RCHPO1 RCHPO2 = 'PENT'
  27. C MCLE1 MCLE2 MCLE3 TABDO LMOT CHPO1 (MCL4 CHPO2) 'GRADGEO' RCHELEM1 ;
  28. C
  29. C
  30. C Entrées:
  31. C
  32. C TABDO : Donnée de la table domaine;
  33. C
  34. C MCLE1 : type du champ par point CHPO1. Pour le moment, seul le type
  35. C 'CENTRE' est autorisé;
  36. C
  37. C MCLE2 : Traitement des éléments de bord et ordre de précision du
  38. C calcul de gradient . Options sont possibles : 'BORDNULL',
  39. C 'EULESCAL', 'EULEVECT', 'LINEXACT', 'QUADRATI'
  40. C
  41. C MCLE3 : Calcul ou non du limiteur : 'LIMITEUR' ou 'NOLIMITE';
  42. C
  43. C LMOT : noms de composantes du chpoint
  44. C
  45. C CHPO1 : Donnée du Champ par point de type MCLE1;
  46. C
  47. C MCLE4 : Donnée ou non du CHPO2
  48. C 'CLIM' si donnée, vide sinon.
  49. C
  50. C CHPO2 : Donnée du Champ par point des conditions aux limites
  51. C
  52. C
  53. C
  54. C E/S :
  55. C
  56. C RCHELEM1: Champ par élément des coefficients géométriques pour le
  57. C calcul du gradient
  58. C (entrée si MCLE4 = 'GRADGEO', sinon sortie).
  59. C
  60. C
  61. C Sorties:
  62. C
  63. C RCHPO1 : Champ par point contenant le gradient de CHPO1 (toujours
  64. C calculé) ;
  65. C
  66. C RCHPO2 : Champ par point contenant le limiteur du gradient
  67. C (toujours calculé) ;
  68. C
  69. C
  70. C************************************************************************
  71. C
  72. C HISTORIQUE (Anomalies et modifications éventuelles)
  73. C
  74. C HISTORIQUE : Recreé le 22/3/2000
  75. C
  76. C************************************************************************
  77. C
  78. IMPLICIT INTEGER(I-N)
  79.  
  80. -INC PPARAM
  81. -INC CCOPTIO
  82. -INC SMCHPOI
  83. -INC SMLMOTS
  84. C
  85. INTEGER IDOMA, IRET1, ICEN, IFACEL, IELTFA
  86. & ,IOP2, IOP3
  87. & ,ICHPO, ICHGRA, IMCALP
  88. & ,NBCOMP
  89. & ,ICHCL, IFAC, INORM
  90. & ,NSOUPO, ICELL, LMOT, JGM, JGN, ICHAM
  91.  
  92. C
  93. CHARACTER*(8) MOT
  94. C
  95. MOT=' '
  96. C
  97. C*************************************************
  98. C**** TABLE DOMAINE ****************************
  99. C*************************************************
  100. C
  101. C**** Lecture du MELEME SPG des points CENTRE.
  102. C
  103. CALL LEKTAB(IDOMA,'CENTRE',ICEN)
  104. IF(IERR .NE. 0) GO TO 9999
  105. C
  106. C**** Lecture du MELEME de connect. FACEL
  107. C
  108. CALL LEKTAB(IDOMA,'FACEL',IFACEL)
  109. IF(IERR .NE. 0) GO TO 9999
  110. C
  111. C**** Lecture du MELEME de connect. ELTFA
  112. C
  113. CALL LEKTAB(IDOMA,'ELTFA',IELTFA)
  114. IF(IERR .NE. 0) GO TO 9999
  115. C
  116. C**** Lecture du MELEME de connect. FACEL
  117. C
  118. CALL LEKTAB(IDOMA,'FACE',IFAC)
  119. IF(IERR .NE. 0) GO TO 9999
  120. C
  121. C**** Lecture du MELEME de connect. FACEL
  122. C
  123. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  124. IF(IERR .NE. 0) GO TO 9999
  125. JGN=4
  126. JGM=IDIM
  127. SEGINI MLMOT1
  128. MLMOT1.MOTS(1)='UX '
  129. MLMOT1.MOTS(2)='UY '
  130. IF(IDIM.EQ.3) MLMOT1.MOTS(3)='UZ '
  131. CALL QUEPO1(INORM, IFAC, MLMOT1)
  132. IF (IERR .NE. 0) GOTO 9999
  133. SEGSUP MLMOT1
  134. C
  135. C****************************************************
  136. C
  137. C
  138. C**** Lecture des noms des composantes du CHPOINT
  139. C
  140. CALL LIROBJ('LISTMOTS',LMOT,1,IRET1)
  141. IF(IERR .NE. 0) GOTO 9999
  142. C
  143. C**** Lecture du CHPOINT dont on veut calculer le gradient!
  144. C
  145. CALL LIROBJ('CHPOINT ',ICHPO,1,IRET1)
  146. CALL ACTOBJ('CHPOINT ',ICHPO,1)
  147. IF(IERR .NE. 0) GOTO 9999
  148. C
  149. C**** Control du CHPOINT
  150. C
  151. CALL QUEPO1(ICHPO, ICEN, LMOT)
  152. IF (IERR .NE. 0) GOTO 9999
  153. C
  154. MLMOTS=LMOT
  155. SEGACT MLMOTS
  156. NBCOMP = MLMOTS.MOTS(/2)
  157. SEGDES MLMOTS
  158. IF(NBCOMP .GT. 9)THEN
  159. C
  160. C******* Message d'erreur standard
  161. C -301 0 %m1:40
  162. C
  163. MOTERR(1:40) = 'NBCOMP > 9 '
  164. WRITE(IOIMP,*) MOTERR(1:40)
  165. CALL ERREUR(22)
  166. GOTO 9999
  167. ENDIF
  168. C
  169. C**** Lecture du CHPOINT du conditions aux limites (optionel)
  170. C
  171. IRET1=0
  172. CALL LIRCHA(MOT,0,IRET1)
  173. IF(IERR .NE. 0) GOTO 9999
  174. IF(IRET1.NE.0)THEN
  175. IF(MOT .EQ. 'CLIM') THEN
  176. CALL LIROBJ('CHPOINT ',ICHCL,1,ICELL)
  177. CALL ACTOBJ('CHPOINT ',ICHCL,1)
  178. IF(IERR .NE. 0) GOTO 9999
  179. MCHPOI = ICHCL
  180. SEGACT MCHPOI
  181. NSOUPO = MCHPOI.IPCHP(/1)
  182. IF(NSOUPO .EQ. 0) ICHCL=0
  183. SEGDES MCHPOI
  184. ELSE
  185. C
  186. C******* Je la remets dans la pile
  187. C
  188. CALL ECRCHA(MOT)
  189. IF(IERR .NE. 0) GOTO 9999
  190. ICHCL=0
  191. ENDIF
  192. ELSE
  193. ICHCL=0
  194. ENDIF
  195. C
  196. C**** Control du CHPOIT
  197. C N.B.: MLMOTS contient les composantes de ICHPO
  198. C
  199. IF(ICHCL .GT. 0)THEN
  200. ICELL = 0
  201. CALL QUEPO1(ICHCL, ICELL, MLMOTS)
  202. IF (IERR .NE. 0) GOTO 9999
  203. ENDIF
  204. C
  205. C**** Lecture du MCHAMLs qui contiennent les elements de matrice
  206. C pour le calcul du gradient
  207. C
  208. C Si MOT = 'GRADGEO', on a ces MCHAMLs; sinon il faut le calculer
  209. C
  210. CALL LIRCHA(MOT,0,IRET1)
  211. IF(IERR .NE. 0) GOTO 9999
  212. C
  213. C******* IOP2 1 2
  214. C 'EULESCAL','EULEVECT'
  215. C
  216. IF(MOT .NE. 'GRADGEO') THEN
  217. IF (IOP2.LE.3) THEN
  218. C CALL GRADGE(IDOMA,IOP2,ICHCL,MCHEL7)
  219. CALL GRADGE(ICEN,IELTFA,IFAC,IFACEL,INORM,ICHCL,ICHAM)
  220. IF (IERR .NE. 0) GOTO 9999
  221. ELSE
  222. CALL ERREUR(5)
  223. GOTO 9999
  224. ENDIF
  225. ELSE
  226. CALL LIROBJ('MCHAML ',ICHAM,1,IRET1)
  227. CALL ACTOBJ('MCHAML ',ICHAM,1)
  228. IF (IERR .NE. 0) GOTO 9999
  229. ENDIF
  230. C
  231. C**** Calcul de gradient
  232. C
  233. CALL PENTE1(ICEN,IFAC,IFACEL,INORM,IOP2,IOP3,ICHAM,ICHPO,
  234. & ICHCL,ICHGRA,IMCALP)
  235. C
  236. C**** Anomalie in PENTE1
  237. C
  238. IF(IERR .NE. 0) GOTO 9999
  239. C
  240. C**** Ecriture de gradient, limiteur,
  241. C (MCHAMLs pour le calcul de gradient)
  242. C
  243. IF(MOT .NE. 'GRADGEO') THEN
  244. CALL ACTOBJ('MCHAML ',ICHAM,1)
  245. CALL ECROBJ('MCHAML ',ICHAM)
  246. IF(IERR .NE. 0) GOTO 9999
  247. ENDIF
  248. IF(IERR .NE. 0) GOTO 9999
  249. CALL ACTOBJ('CHPOINT ',IMCALP,1)
  250. CALL ECROBJ('CHPOINT ',IMCALP)
  251. IF(IERR .NE. 0) GOTO 9999
  252. C
  253. CALL ACTOBJ('CHPOINT',ICHGRA,1)
  254. CALL ECROBJ('CHPOINT',ICHGRA)
  255. IF(IERR .NE. 0) GOTO 9999
  256. C
  257. C**** Sortie du programme
  258. C
  259. 9999 CONTINUE
  260. END
  261.  
  262.  
  263.  
  264.  
  265.  

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