Télécharger pent15.eso

Retour à la liste

Numérotation des lignes :

pent15
  1. C PENT15 SOURCE CB215821 20/11/25 13:35:35 10792
  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. C
  79. IMPLICIT INTEGER(I-N)
  80.  
  81. -INC PPARAM
  82. -INC CCOPTIO
  83. -INC SMCHPOI
  84. -INC SMLMOTS
  85. C
  86. C
  87. C**** Variables de COOPTIO
  88. C
  89. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  90. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  91. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  92. C & ,IECHO, IIMPI, IOSPI
  93. C & ,IDIM
  94. C & ,MCOORD
  95. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  96. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  97. C & ,NORINC,NORVAL,NORIND,NORVAD
  98. C & ,NUCROU, IPSAUV, IFICLE, IPREFI
  99. C & ,IREFOR, ISAFOR
  100. C
  101. INTEGER IDOMA, IRET1, ICEN, IFACEL, IELTFA
  102. & ,IOP2, IOP3
  103. & ,ICHPO, ICHGRA, IMCALP
  104. & ,NBCOMP
  105. & ,ICHCL, IFAC, INORM
  106. & ,NSOUPO, ICELL, LMOT, JGM, JGN, ICHAM
  107.  
  108. C
  109. CHARACTER*(8) MOT
  110. C
  111. MOT=' '
  112. C
  113. C*************************************************
  114. C**** TABLE DOMAINE ****************************
  115. C*************************************************
  116. C
  117. C**** Lecture du MELEME SPG des points CENTRE.
  118. C
  119. CALL LEKTAB(IDOMA,'CENTRE',ICEN)
  120. IF(IERR .NE. 0) GO TO 9999
  121. C
  122. C**** Lecture du MELEME de connect. FACEL
  123. C
  124. CALL LEKTAB(IDOMA,'FACEL',IFACEL)
  125. IF(IERR .NE. 0) GO TO 9999
  126. C
  127. C**** Lecture du MELEME de connect. ELTFA
  128. C
  129. CALL LEKTAB(IDOMA,'ELTFA',IELTFA)
  130. IF(IERR .NE. 0) GO TO 9999
  131. C
  132. C**** Lecture du MELEME de connect. FACEL
  133. C
  134. CALL LEKTAB(IDOMA,'FACE',IFAC)
  135. IF(IERR .NE. 0) GO TO 9999
  136. C
  137. C**** Lecture du MELEME de connect. FACEL
  138. C
  139. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  140. IF(IERR .NE. 0) GO TO 9999
  141. JGN=4
  142. JGM=IDIM
  143. SEGINI MLMOT1
  144. MLMOT1.MOTS(1)='UX '
  145. MLMOT1.MOTS(2)='UY '
  146. IF(IDIM.EQ.3) MLMOT1.MOTS(3)='UZ '
  147. CALL QUEPO1(INORM, IFAC, MLMOT1)
  148. IF (IERR .NE. 0) GOTO 9999
  149. SEGSUP MLMOT1
  150. C
  151. C****************************************************
  152. C
  153. C
  154. C**** Lecture des noms des composantes du CHPOINT
  155. C
  156. CALL LIROBJ('LISTMOTS',LMOT,1,IRET1)
  157. IF(IERR .NE. 0) GOTO 9999
  158. C
  159. C**** Lecture du CHPOINT dont on veut calculer le gradient!
  160. C
  161. CALL LIROBJ('CHPOINT ',ICHPO,1,IRET1)
  162. CALL ACTOBJ('CHPOINT ',ICHPO,1)
  163. IF(IERR .NE. 0) GOTO 9999
  164. C
  165. C**** Control du CHPOINT
  166. C
  167. CALL QUEPO1(ICHPO, ICEN, LMOT)
  168. IF (IERR .NE. 0) GOTO 9999
  169. C
  170. MLMOTS=LMOT
  171. SEGACT MLMOTS
  172. NBCOMP = MLMOTS.MOTS(/2)
  173. SEGDES MLMOTS
  174. IF(NBCOMP .GT. 9)THEN
  175. C
  176. C******* Message d'erreur standard
  177. C -301 0 %m1:40
  178. C
  179. MOTERR(1:40) = 'NBCOMP > 9 '
  180. WRITE(IOIMP,*) MOTERR(1:40)
  181. CALL ERREUR(22)
  182. GOTO 9999
  183. ENDIF
  184. C
  185. C**** Lecture du CHPOINT du conditions aux limites (optionel)
  186. C
  187. IRET1=0
  188. CALL LIRCHA(MOT,0,IRET1)
  189. IF(IERR .NE. 0) GOTO 9999
  190. IF(IRET1.NE.0)THEN
  191. IF(MOT .EQ. 'CLIM') THEN
  192. CALL LIROBJ('CHPOINT ',ICHCL,1,ICELL)
  193. CALL ACTOBJ('CHPOINT ',ICHCL,1)
  194. IF(IERR .NE. 0) GOTO 9999
  195. MCHPOI = ICHCL
  196. SEGACT MCHPOI
  197. NSOUPO = MCHPOI.IPCHP(/1)
  198. IF(NSOUPO .EQ. 0) ICHCL=0
  199. SEGDES MCHPOI
  200. ELSE
  201. C
  202. C******* Je la remets dans la pile
  203. C
  204. CALL ECRCHA(MOT)
  205. IF(IERR .NE. 0) GOTO 9999
  206. ICHCL=0
  207. ENDIF
  208. ELSE
  209. ICHCL=0
  210. ENDIF
  211. C
  212. C**** Control du CHPOIT
  213. C N.B.: MLMOTS contient les composantes de ICHPO
  214. C
  215. IF(ICHCL .GT. 0)THEN
  216. ICELL = 0
  217. CALL QUEPO1(ICHCL, ICELL, MLMOTS)
  218. IF (IERR .NE. 0) GOTO 9999
  219. ENDIF
  220. C
  221. C**** Lecture du MCHAMLs qui contiennent les elements de matrice
  222. C pour le calcul du gradient
  223. C
  224. C Si MOT = 'GRADGEO', on a ces MCHAMLs; sinon il faut le calculer
  225. C
  226. CALL LIRCHA(MOT,0,IRET1)
  227. IF(IERR .NE. 0) GOTO 9999
  228. C
  229. C******* IOP2 1 2
  230. C 'EULESCAL','EULEVECT'
  231. C
  232. IF(MOT .NE. 'GRADGEO') THEN
  233. IF (IOP2.LE.3) THEN
  234. C CALL GRADGE(IDOMA,IOP2,ICHCL,MCHEL7)
  235. CALL GRADGE(ICEN,IELTFA,IFAC,IFACEL,INORM,ICHCL,ICHAM)
  236. IF (IERR .NE. 0) GOTO 9999
  237. ELSE
  238. CALL ERREUR(5)
  239. GOTO 9999
  240. ENDIF
  241. ELSE
  242. CALL LIROBJ('MCHAML ',ICHAM,1,IRET1)
  243. CALL ACTOBJ('MCHAML ',ICHAM,1)
  244. IF (IERR .NE. 0) GOTO 9999
  245. ENDIF
  246. C
  247. C**** Calcul de gradient
  248. C
  249. CALL PENTE1(ICEN,IFAC,IFACEL,INORM,IOP2,IOP3,ICHAM,ICHPO,
  250. & ICHCL,ICHGRA,IMCALP)
  251. C
  252. C**** Anomalie in PENTE1
  253. C
  254. IF(IERR .NE. 0) GOTO 9999
  255. C
  256. C**** Ecriture de gradient, limiteur,
  257. C (MCHAMLs pour le calcul de gradient)
  258. C
  259. IF(MOT .NE. 'GRADGEO') THEN
  260. CALL ACTOBJ('MCHAML ',ICHAM,1)
  261. CALL ECROBJ('MCHAML ',ICHAM)
  262. IF(IERR .NE. 0) GOTO 9999
  263. ENDIF
  264. IF(IERR .NE. 0) GOTO 9999
  265. CALL ACTOBJ('CHPOINT ',IMCALP,1)
  266. CALL ECROBJ('CHPOINT ',IMCALP)
  267. IF(IERR .NE. 0) GOTO 9999
  268. C
  269. CALL ACTOBJ('CHPOINT',ICHGRA,1)
  270. CALL ECROBJ('CHPOINT',ICHGRA)
  271. IF(IERR .NE. 0) GOTO 9999
  272. C
  273. C**** Sortie du programme
  274. C
  275. 9999 CONTINUE
  276. END
  277.  
  278.  
  279.  
  280.  

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