Télécharger chalvm.eso

Retour à la liste

Numérotation des lignes :

chalvm
  1. C CHALVM SOURCE PASCAL 19/11/19 21:15:12 10384
  2.  
  3. C=======================================================================
  4. C= C H A L V M =
  5. C= ----------- =
  6. C= =
  7. C= OPERATEUR CAST3M "SOURCE" : =
  8. C= --------------------------- =
  9. C= VERIFICATIONS SUR LE MODELE =
  10. C= Le MODELE doit contenir exclusivement un seul type =
  11. C= d'elements, soit MASSIFs, soit COQUEs, soit BARREs. =
  12. C= =
  13. C=======================================================================
  14.  
  15. SUBROUTINE CHALVM (IPMODL,MOCOMP, IPMOD1,IFORMU,ITYPEF)
  16.  
  17. IMPLICIT INTEGER(I-N)
  18. IMPLICIT REAL*8 (A-H,O-Z)
  19.  
  20.  
  21. -INC PPARAM
  22. -INC CCOPTIO
  23.  
  24. -INC SMLMOTS
  25. -INC SMMODEL
  26.  
  27. CHARACTER*(*) MOCOMP
  28.  
  29. C ----------
  30. C= IMASSI Tableau contenant les numeros dans NOMTP des elements =
  31. C= thermiques de type MASSIF (dont l'element BARR) =
  32. C= LMASSI Longueur du tableau IMASSI =
  33. C= ICOQUE Tableau contenant les numeros dans NOMTP des elements =
  34. C= thermiques de type COQUE =
  35. C= LCOQUE Longueur du tableau ICOQUE =
  36. C= IBARTY Tableau contenant les numeros dans NOMTP des elements =
  37. C= thermiques de type BARRE ou TUYAU =
  38. C= LBARTY Longueur du tableau IBARTY =
  39. C ----------
  40. PARAMETER (LMASSI=16, LCOQUE=5, LBARTY=3)
  41. INTEGER IMASSI(LMASSI),ICOQUE(LCOQUE),IBARTY(LBARTY)
  42. C ----------
  43. C Elements TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10
  44. C MASSIFs PYR5 PY13 T1D2 T1D3 M1D2 M1D3
  45. C ----------
  46. DATA IMASSI / 4, 6, 8, 10, 14, 15, 16, 17, 23, 24,
  47. & 25, 26, 191, 192, 193, 194 /
  48. C -------------
  49. C Elts COQUEs COQ2 COQ3 COQ8 COQ4 COQ6
  50. C -------------
  51. DATA ICOQUE / 44, 27, 41, 49, 56 /
  52. C -------------
  53. C Elts BARRE/TUYA BARR TUYm TUYn
  54. C -------------
  55. DATA IBARTY / 46, 269, 270 /
  56. C -------------
  57.  
  58. IPMOD1 = 0
  59. IFORMU = 0
  60. ITYPEF = 0
  61.  
  62. C ======================================================
  63. C 1 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
  64. C ======================================================
  65. C 1.1 - Verification de la formulation (unique) du modele
  66. C 1.2 - Recuperation du modele de la formulation retenue
  67. C 1.3 - Verification sur unicite de type EF retenu
  68. C =====
  69. iTHER = 0
  70. iTHHY = 0
  71. iDIFF = 0
  72. iELEC = 0
  73. iCHPH = 0
  74. *
  75. jMASSi = 0
  76. jCOQUe = 0
  77. jBARRe = 0
  78. *
  79. * IGAU non nul : presence d'une source gaussienne de chaleur
  80. * Si IGAU non nul, uniquement massifs
  81. IGAU = 0
  82. *
  83. MMODEL = IPMODL
  84. SEGACT,MMODEL
  85. NSOUS = KMODEL(/1)
  86.  
  87. SEGINI,MMODE1=MMODEL
  88. N1 = 0
  89. DO isou = 1, NSOUS
  90. IMODEL = mmodel.KMODEL(isou)
  91. SEGACT,IMODEL
  92. MELE = imodel.NEFMOD
  93. i_mod1 = 0
  94. IF (imodel.FORMOD(/2).EQ.1) THEN
  95. IF (imodel.FORMOD(1).EQ.'THERMIQUE') THEN
  96. NMAT = imodel.MATMOD(/2)
  97. CALL PLACE(imodel.MATMOD,NMAT,icov,'CONVECTION')
  98. CALL PLACE(imodel.MATMOD,NMAT,iray,'RAYONNEMENT')
  99. CALL PLACE(imodel.MATMOD,NMAT,iga1,'GAUSSIENNE')
  100. IF (iga1.NE.0) IGAU = 1
  101. IF (icov+iray.EQ.0) THEN
  102. iTHER = 1
  103. i_mod1 = 1
  104. ENDIF
  105. ELSEIF (imodel.FORMOD(1).EQ.'THERMOHYDRIQUE ') THEN
  106. iTHHY = 1
  107. i_mod1 = 1
  108. ELSEIF (imodel.FORMOD(1).EQ.'DIFFUSION ') THEN
  109. iDIFF = 1
  110. i_mod1 = 1
  111. ELSEIF (imodel.FORMOD(1).EQ.'ELECTROSTATIQUE ') THEN
  112. iELEC = 1
  113. i_mod1 = 1
  114. ELSEIF (imodel.FORMOD(1).EQ.'CHANGEMENT_PHASE') THEN
  115. iCHPH = 1
  116. i_mod1 = 1
  117. ENDIF
  118. ENDIF
  119.  
  120. IF (i_mod1.NE.0) THEN
  121. N1 = N1 + 1
  122. MMODE1.KMODEL(N1) = IMODEL
  123. CALL PLACE2(IBARTY,LBARTY,iok,MELE)
  124. IF (iok.NE.0) THEN
  125. jBARRe = jBARRe+1
  126. ELSE
  127. CALL PLACE2(IMASSI,LMASSI,iok,MELE)
  128. IF (iok.NE.0) THEN
  129. jMASSi = jMASSi+1
  130. ELSE
  131. CALL PLACE2(ICOQUE,LCOQUE,iok,MELE)
  132. IF (iok.NE.0) jCOQUe = jCOQUe+1
  133. ENDIF
  134. ENDIF
  135. ENDIF
  136. ENDDO
  137.  
  138. IF (N1.EQ.0) THEN
  139. write(ioimp,*) 'Modele vide ??'
  140. CALL ERREUR(21)
  141. GOTO 9900
  142. ENDIF
  143.  
  144. IF ((iTHER+iTHHY+iELEC+iDIFF+iCHPH) .NE.1 ) THEN
  145. write(ioimp,*) 'Une seule formulation dans le modele !'
  146. CALL ERREUR(21)
  147. GOTO 9900
  148. ENDIF
  149. IF (iTHER .EQ. 1) THEN
  150. IFORMU = 1
  151. ELSE IF (iTHHY .EQ. 1) THEN
  152. IFORMU = 2
  153. ELSE IF (iDIFF .EQ. 1) THEN
  154. IFORMU = 3
  155. ELSE IF (iELEC .EQ. 1) THEN
  156. IFORMU = 4
  157. ELSE IF (iCHPH .EQ. 1) THEN
  158. IFORMU = 1
  159. ELSE
  160. IFORMU = 0
  161. CALL ERREUR(5)
  162. GOTO 9900
  163. ENDIF
  164.  
  165. IF (jMASSi.EQ.N1) THEN
  166. ITYPEF = 1
  167. ELSE IF (jCOQUe.EQ.N1) THEN
  168. ITYPEF = 2
  169. ELSE IF (jBARRe.EQ.N1) THEN
  170. ITYPEF = 3
  171. ELSE
  172. ITYPEF = 0
  173. CALL ERREUR(409)
  174. GOTO 9900
  175. ENDIF
  176.  
  177. IF (IGAU.NE.0.AND.ITYPEF.NE.1) THEN
  178. MOTERR(1:16) = 'SOURCE '
  179. MOTERR(17:32) = 'GAUSSIENNE '
  180. CALL ERREUR(1103)
  181. GOTO 9900
  182. ENDIF
  183.  
  184. IF (N1.NE.NSOUS) THEN
  185. SEGADJ,MMODE1
  186. ENDIF
  187.  
  188. C ==================================================
  189. C 2 - Adequation nom de composante source & modele
  190. C ==================================================
  191. IF (iTHER .EQ. 1) THEN
  192. IF (MOCOMP.EQ.' ') MOCOMP = 'Q '
  193. IF (MOCOMP.NE.'Q ') CALL ERREUR(665)
  194. c* SEGDES,MMODE1
  195. ELSE
  196. IPCOMP = 0
  197. CALL NOVARD(MMODE1,'FORC')
  198. CALL LIROBJ('LISTMOTS',IPCOMP,1,iret)
  199. IF (IERR.NE.0) RETURN
  200. mlmots = IPCOMP
  201. SEGACT,mlmots
  202. NCOMP = mlmots.MOTS(/2)
  203. * Normalement : NCOMP est non nul !
  204. * Cas particulier de la diffusion en attendant un traitement adequat ?
  205. IF (iDIFF.EQ.1 .AND. NCOMP.GT.1) THEN
  206. write(ioimp,*) 'Modele de DIFFUSION a une seule quantite SVP'
  207. CALL ERREUR(21)
  208. ELSE
  209. IF (MOCOMP.EQ.' ') THEN
  210. MOCOMP = mlmots.MOTS(1)
  211. ELSE
  212. CALL PLACE(mlmots.MOTS,NCOMP,iret,MOCOMP)
  213. IF (iret.EQ.0) CALL ERREUR(665)
  214. ENDIF
  215. ENDIF
  216. SEGSUP,mlmots
  217. ENDIF
  218. IF (IERR.NE.0) GOTO 9900
  219.  
  220. IPMOD1 = MMODE1
  221.  
  222. 9900 CONTINUE
  223.  
  224. END
  225.  
  226.  
  227.  

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