Télécharger chalvm.eso

Retour à la liste

Numérotation des lignes :

chalvm
  1. C CHALVM SOURCE CB215821 23/04/28 21:15:05 11660
  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,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.  
  28. C ----------
  29. C= IMASSI Tableau contenant les numeros dans NOMTP des elements =
  30. C= thermiques de type MASSIF (dont l'element BARR) =
  31. C= LMASSI Longueur du tableau IMASSI =
  32. C= ICOQUE Tableau contenant les numeros dans NOMTP des elements =
  33. C= thermiques de type COQUE =
  34. C= LCOQUE Longueur du tableau ICOQUE =
  35. C= IBARTY Tableau contenant les numeros dans NOMTP des elements =
  36. C= thermiques de type BARRE ou TUYAU =
  37. C= LBARTY Longueur du tableau IBARTY =
  38. C ----------
  39. PARAMETER (LMASSI=16, LCOQUE=5, LBARTY=3)
  40. INTEGER IMASSI(LMASSI),ICOQUE(LCOQUE),IBARTY(LBARTY)
  41. C ----------
  42. C Elements TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10
  43. C MASSIFs PYR5 PY13 T1D2 T1D3 M1D2 M1D3
  44. C ----------
  45. DATA IMASSI / 4, 6, 8, 10, 14, 15, 16, 17, 23, 24,
  46. & 25, 26, 191, 192, 193, 194 /
  47. C -------------
  48. C Elts COQUEs COQ2 COQ3 COQ8 COQ4 COQ6
  49. C -------------
  50. DATA ICOQUE / 44, 27, 41, 49, 56 /
  51. C -------------
  52. C Elts BARRE/TUYA BARR TUYm TUYn
  53. C -------------
  54. DATA IBARTY / 46, 269, 270 /
  55. C -------------
  56.  
  57. IPMOD1 = 0
  58. IFORMU = 0
  59. ITYPEF = 0
  60.  
  61. C ======================================================
  62. C 1 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
  63. C ======================================================
  64. C 1.1 - Verification de la formulation (unique) du modele
  65. C 1.2 - Recuperation du modele de la formulation retenue
  66. C 1.3 - Verification sur unicite de type EF retenu
  67. C =====
  68. iTHER = 0
  69. iTHHY = 0
  70. iDIFF = 0
  71. iELEC = 0
  72. iCHPH = 0
  73. *
  74. jMASSi = 0
  75. jCOQUe = 0
  76. jBARRe = 0
  77. *
  78. * IGAU non nul : presence d'une source gaussienne de chaleur
  79. * Si IGAU non nul, uniquement massifs
  80. IGAU = 0
  81. *
  82. MMODEL = IPMODL
  83. SEGACT,MMODEL
  84. NSOUS = KMODEL(/1)
  85.  
  86. SEGINI,MMODE1=MMODEL
  87. N1 = 0
  88. DO isou = 1, NSOUS
  89. IMODEL = mmodel.KMODEL(isou)
  90. SEGACT,IMODEL
  91. MELE = imodel.NEFMOD
  92. i_mod1 = 0
  93. IF (imodel.FORMOD(/2).EQ.1) THEN
  94. IF (imodel.FORMOD(1).EQ.'THERMIQUE') THEN
  95. NMAT = imodel.MATMOD(/2)
  96. CALL PLACE(imodel.MATMOD,NMAT,icov,'CONVECTION')
  97. CALL PLACE(imodel.MATMOD,NMAT,iray,'RAYONNEMENT')
  98. CALL PLACE(imodel.MATMOD,NMAT,iga1,'GAUSSIENNE')
  99. IF (iga1.NE.0) IGAU = 1
  100. IF (icov+iray.EQ.0) THEN
  101. iTHER = 1
  102. i_mod1 = 1
  103. ENDIF
  104. ELSEIF (imodel.FORMOD(1).EQ.'THERMOHYDRIQUE ') THEN
  105. iTHHY = 1
  106. i_mod1 = 1
  107. ELSEIF (imodel.FORMOD(1).EQ.'DIFFUSION ') THEN
  108. iDIFF = 1
  109. i_mod1 = 1
  110. ELSEIF (imodel.FORMOD(1).EQ.'ELECTROSTATIQUE ') THEN
  111. iELEC = 1
  112. i_mod1 = 1
  113. ELSEIF (imodel.FORMOD(1).EQ.'CHANGEMENT_PHASE') THEN
  114. iCHPH = 1
  115. i_mod1 = 1
  116. ENDIF
  117. ENDIF
  118.  
  119. IF (i_mod1.NE.0) THEN
  120. N1 = N1 + 1
  121. MMODE1.KMODEL(N1) = IMODEL
  122. CALL PLACE2(IBARTY,LBARTY,iok,MELE)
  123. IF (iok.NE.0) THEN
  124. jBARRe = jBARRe+1
  125. ELSE
  126. CALL PLACE2(IMASSI,LMASSI,iok,MELE)
  127. IF (iok.NE.0) THEN
  128. jMASSi = jMASSi+1
  129. ELSE
  130. CALL PLACE2(ICOQUE,LCOQUE,iok,MELE)
  131. IF (iok.NE.0) jCOQUe = jCOQUe+1
  132. ENDIF
  133. ENDIF
  134. ENDIF
  135. ENDDO
  136.  
  137. IF ((iTHER+iTHHY+iELEC+iDIFF+iCHPH) .NE.1 ) THEN
  138. write(ioimp,*) 'Une seule formulation dans le modele !'
  139. CALL ERREUR(21)
  140. GOTO 9900
  141. ENDIF
  142. IF (iTHER .EQ. 1) THEN
  143. IFORMU = 1
  144. ELSE IF (iTHHY .EQ. 1) THEN
  145. IFORMU = 2
  146. ELSE IF (iDIFF .EQ. 1) THEN
  147. IFORMU = 3
  148. ELSE IF (iELEC .EQ. 1) THEN
  149. IFORMU = 4
  150. ELSE IF (iCHPH .EQ. 1) THEN
  151. IFORMU = 1
  152. ELSE
  153. IFORMU = 0
  154. CALL ERREUR(5)
  155. GOTO 9900
  156. ENDIF
  157.  
  158. IF (jMASSi.EQ.N1) THEN
  159. ITYPEF = 1
  160. ELSE IF (jCOQUe.EQ.N1) THEN
  161. ITYPEF = 2
  162. ELSE IF (jBARRe.EQ.N1) THEN
  163. ITYPEF = 3
  164. ELSE
  165. ITYPEF = 0
  166. CALL ERREUR(409)
  167. GOTO 9900
  168. ENDIF
  169.  
  170. IF (IGAU.NE.0.AND.ITYPEF.NE.1) THEN
  171. MOTERR(1:16) = 'SOURCE '
  172. MOTERR(17:32) = 'GAUSSIENNE '
  173. CALL ERREUR(1103)
  174. GOTO 9900
  175. ENDIF
  176.  
  177. C Dimensionnement final
  178. IF (N1.EQ.0) THEN
  179. write(ioimp,*) 'Modele vide ??'
  180. CALL ERREUR(21)
  181. GOTO 9900
  182. ELSEIF (N1 .EQ. NSOUS) THEN
  183. MMODE1 = MMODEL
  184. ELSE
  185. SEGADJ,MMODE1
  186. ENDIF
  187.  
  188. IPMOD1 = MMODE1
  189.  
  190. 9900 CONTINUE
  191.  
  192. END
  193.  
  194.  

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