Télécharger konsf1.eso

Retour à la liste

Numérotation des lignes :

konsf1
  1. C KONSF1 SOURCE OF166741 24/12/13 21:16:44 12097
  2. SUBROUTINE KONSF1(INDMET,ISF,IVN,INORM,ICHPSU,ICHPDI,
  3. & MELEMC,MELEMF,MELEFE,ICHFLU,DT,LOGAN,
  4. & MESERR)
  5. C************************************************************************
  6. C
  7. C PROJET : CASTEM 2000
  8. C
  9. C NOM : KONSF1
  10. C
  11. C DESCRIPTION : Voir KONV14
  12. C
  13. C Cas 2D/3D
  14. C
  15. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DM2S/SFME
  18. C
  19. C************************************************************************
  20. C
  21. C APPELES (Outils
  22. C CASTEM) : KRIPAD, LICHT
  23. C
  24. C APPELES (Calcul) :
  25. C
  26. C************************************************************************
  27. C
  28. C ENTREES
  29. C
  30. C 1) PARAMETRES
  31. C
  32. C INDMET : 1 UPWIND
  33. C
  34. C 2 CENTERED
  35. C
  36. C 2) Pointeurs des MCHAMLs/CHPOINTs
  37. C
  38. C ISF : MCHAML sur "FACEL" contenant les scalaires passifs
  39. C ("gauche" et "droite");
  40. C
  41. C IVN : CHPOINTs sur "FACE" (vitesse aux faces)
  42. C
  43. C 3) Pointeurs de CHPOINTs de la table DOMAINE
  44. C
  45. C INORM : CHPOINT "FACE" contenant les normales aux faces
  46. C
  47. C ICHPSU : CHPOINT "FACE" contenant la surface des faces
  48. C
  49. C ICHPDI : CHPOINT "CENTRE" contenant le diametre minimum
  50. C de chaque element
  51. C
  52. C
  53. C 4) Pointeurs de MELEME de la table DOMAINE
  54. C
  55. C MELEMC : MELEME 'CENTRE' du SPG des CENTRES
  56. C
  57. C MELEMF : MELEME 'FACE' du SPG des FACES
  58. C
  59. C MELEFE : MELEME 'FACEL' du connectivité FACES -> ELEM
  60. C
  61. C SORTIES
  62. C
  63. C ICHFLU : pointeurs de CHPOINTs "FACE" des flux aux interfaces:
  64. C
  65. C DT : pas de temps pour le respect de la CFL-like condition
  66. C DT < DIAMMIN /2 /max(Lambda_i)
  67. C En maillage regulier cette condition garantie la
  68. C non-interaction des ondes
  69. C
  70. C LOGAN : (LOGICAL): si .TRUE. une anomalie à été detectée
  71. C
  72. C MESERR : pour l'ecriture des messages d'erreurs
  73. C
  74. C************************************************************************
  75. C
  76. C HISTORIQUE (Anomalies et modifications éventuelles)
  77. C
  78. C HISTORIQUE : créée le 29.11.01
  79. C
  80. C************************************************************************
  81. C
  82. IMPLICIT INTEGER(I-N)
  83. INTEGER INDMET, ISF, IVN, INORM
  84. & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
  85. & ,IGEOMC,IGEOMF
  86. & ,ICHFLU
  87. & ,NFAC
  88. & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
  89. & ,NGCF, NLCF1, NSCA, ISCA
  90. REAL*8 DT, UNSDT, UX, UY, UZ, UN
  91. & , SURF,CNX, CNY, CNZ
  92. & , CELL, DIAM
  93. LOGICAL LOGAN
  94. CHARACTER*(40) MESERR
  95. CHARACTER*(8) TYPE
  96. C
  97. C**** LES INCLUDES
  98. C
  99.  
  100. -INC PPARAM
  101. -INC CCOPTIO
  102. -INC SMCHAML
  103. -INC SMCHPOI
  104. POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
  105. & , MPOFLU.MPOVAL, MPNORM.MPOVAL, MPOVIT.MPOVAL
  106. -INC SMELEME
  107. -INC SMLMOTS
  108. -INC SMLENTI
  109. C
  110. C**** Les flux aux interface dans le repaire (n,t)
  111. C
  112. INTEGER NFLU
  113. SEGMENT IFLUX
  114. REAL*8 FLUX(NFLU)
  115. ENDSEGMENT
  116. C
  117. C**** Scalaires
  118. C
  119. MCHEL1 = ISF
  120. SEGACT MCHEL1
  121. MCHAM1 = MCHEL1.ICHAML(1)
  122. SEGDES MCHEL1
  123. SEGACT MCHAM1
  124. NSCA= MCHAM1.IELVAL(/1)
  125. DO ISCA=1,NSCA,1
  126. MELVAL=MCHAM1.IELVAL(ISCA)
  127. SEGACT MELVAL
  128. ENDDO
  129. C
  130. C**** La vitesse
  131. C
  132. CALL LICHT(IVN,MPOVIT,TYPE,IGEOMC)
  133. IF(IERR.NE.0)GOTO 9999
  134. C SEGACT MPOVIT
  135. C
  136. C**** Le flux à l'interface
  137. C
  138. NFLU=NSCA
  139. SEGINI IFLUX
  140. C
  141. C**** Lecture des MELEMEs
  142. C
  143. C 'CENTRE', 'FACEL'
  144. C
  145. IPT2 = MELEFE
  146. SEGACT IPT2
  147. NFAC = IPT2.NUM(/2)
  148. C
  149. C**** KRIPAD pour la correspondance global/local de centre
  150. C
  151. CALL KRIPAD(MELEMC,MLENT1)
  152. IF(IERR.NE.0)GOTO 9999
  153. C
  154. C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
  155. C
  156. C Si i est le numero global d'un noeud de ICEN,
  157. C MLENT1.LECT(i) contient sa position, i.e.
  158. C
  159. C I = numero global du noeud centre
  160. C MLENT1.LECT(i) = numero local du noeud centre
  161. C
  162. C MLENT1 déjà activé, i.e.
  163. C
  164. C SEGACT MLENT1
  165. C
  166. C
  167. C**** KRIPAD pour la correspondance global/local de 'FACE'
  168. C
  169. CALL KRIPAD(MELEMF,MLENT2)
  170. IF(IERR.NE.0)GOTO 9999
  171. C SEGACT MELNT2
  172. C
  173. C**** CHPOINTs de la table DOMAINE
  174. C
  175. CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
  176. IF(IERR.NE.0)GOTO 9999
  177. CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
  178. IF(IERR.NE.0)GOTO 9999
  179. CALL LICHT(INORM,MPNORM,TYPE,IGEOMF)
  180. IF(IERR.NE.0)GOTO 9999
  181. C
  182. C**** LICHT active les MPOVALs en *MOD
  183. C
  184. C i.e.
  185. C
  186. C SEGACT MPOVSU*MOD
  187. C SEGACT MPOVDI*MOD
  188. C SEGACT MPNORM*MOD
  189. C
  190. C**** Les FLUX aux faces
  191. C
  192. CALL LICHT(ICHFLU,MPOFLU,TYPE,IGEOMF)
  193. C
  194. C SEGACT MPOFLU*MOD
  195. C
  196. C
  197. C**** Initialisation de 1/DT
  198. C
  199. UNSDT = 0.0D0
  200. C
  201. C**** BOUCLE SUR FACEL pour le calcul du FLUX
  202. C
  203. DO NLCF = 1, NFAC
  204. C
  205. C******* NLCF = numero local du centre de facel
  206. C NGCF = numero global du centre de facel
  207. C NLCF1 = numero local du centre de face
  208. C NGCEG = numero global du centre ELT "gauche"
  209. C NLCEG = numero local du centre ELT "gauche"
  210. C NGCED = numero global du centre ELT "droite"
  211. C NLCED = numero local du centre ELT "droite"
  212. C
  213. NGCEG = IPT2.NUM(1,NLCF)
  214. NGCED = IPT2.NUM(3,NLCF)
  215. NGCF = IPT2.NUM(2,NLCF)
  216. NLCF1 = MLENT2.LECT(NGCF)
  217. NLCEG = MLENT1.LECT(NGCEG)
  218. NLCED = MLENT1.LECT(NGCED)
  219. C
  220. C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
  221. C
  222. IF(NLCF .NE. NLCF1)THEN
  223. MESERR = 'Il ne faut pas jouer avec la console. '
  224. LOGAN = .TRUE.
  225. GOTO 9999
  226. ENDIF
  227. C
  228. C******* Calcul du flux/DT
  229. C
  230. UX=MPOVIT.VPOCHA(NLCF,1)
  231. UY=MPOVIT.VPOCHA(NLCF,2)
  232. CNX=MPNORM.VPOCHA(NLCF,1)
  233. CNY=MPNORM.VPOCHA(NLCF,2)
  234. UN= (UX*CNX) + (UY*CNY)
  235. IF(IDIM .EQ.3)THEN
  236. UZ=MPOVIT.VPOCHA(NLCF,3)
  237. CNZ=MPNORM.VPOCHA(NLCF,3)
  238. UN=UN+(UZ*CNZ)
  239. ENDIF
  240. C
  241. IF(INDMET .EQ. 1)THEN
  242. IF(UN.GT.0.0D0)THEN
  243. DO ISCA=1,NSCA,1
  244. MELVAL=MCHAM1.IELVAL(ISCA)
  245. IFLUX.FLUX(ISCA)=UN*MELVAL.VELCHE(1,NLCF)
  246. DIAM = MPOVDI.VPOCHA(NLCEG,1)
  247. ENDDO
  248. ELSE
  249. DO ISCA=1,NSCA,1
  250. MELVAL=MCHAM1.IELVAL(ISCA)
  251. IFLUX.FLUX(ISCA)=UN*MELVAL.VELCHE(3,NLCF)
  252. DIAM = MPOVDI.VPOCHA(NLCED,1)
  253. ENDDO
  254. ENDIF
  255. ELSEIF(INDMET .EQ. 2)THEN
  256. DO ISCA=1,NSCA,1
  257. MELVAL=MCHAM1.IELVAL(ISCA)
  258. IFLUX.FLUX(ISCA)=UN*(MELVAL.VELCHE(1,NLCF)+MELVAL
  259. $ .VELCHE(3,NLCF))*0.5D0
  260. DIAM = MIN(MPOVDI.VPOCHA(NLCED,1),MPOVDI.VPOCHA(NLCEG,1))
  261. ENDDO
  262. ENDIF
  263. C
  264. C******* Ecriture des flux
  265. C
  266. SURF = MPOVSU.VPOCHA(NLCF,1)
  267. DO ISCA=1,NSCA,1
  268. MPOFLU.VPOCHA(NLCF,ISCA) =
  269. & (IFLUX.FLUX(ISCA) * SURF )
  270. ENDDO
  271. C
  272. C******* Calcul du pas du temps (CFL)
  273. C
  274. CELL = ABS(UN)/DIAM
  275. IF(CELL .GT. UNSDT)THEN
  276. UNSDT = CELL
  277. ENDIF
  278. C
  279. C**** Fin boucle sur FACEL
  280. C
  281. ENDDO
  282. C
  283. C**** Pas du temps (condition de non interaction en 1D)
  284. C
  285. DT = 0.5D0 / UNSDT
  286. C
  287. C**** Desactivation des segments et
  288. C on detruit les MCHAMLs
  289. C
  290. SEGSUP MLENT1
  291. SEGSUP MLENT2
  292. SEGDES IPT2
  293. C
  294. SEGSUP IFLUX
  295. C
  296. SEGDES MPOVSU
  297. SEGDES MPOVDI
  298. SEGDES MPNORM
  299. C
  300. SEGDES MPOFLU
  301. C
  302. DO ISCA=1,NSCA,1
  303. MELVAL=MCHAM1.IELVAL(ISCA)
  304. SEGDES MELVAL
  305. ENDDO
  306. SEGDES MCHAM1
  307. C
  308. 9999 CONTINUE
  309. C
  310. RETURN
  311. END
  312. C
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  

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