Télécharger selmod.eso

Retour à la liste

Numérotation des lignes :

selmod
  1. C SELMOD SOURCE OF166741 24/10/21 21:15:23 12042
  2.  
  3. C Operateur CONVEC :
  4. C ==================
  5. C Selectionne dans un modele (quelconque) les sous-modeles de
  6. C formulation 'THERMIQUE' concernes par la CONVECTION forcee/externe
  7.  
  8. SUBROUTINE SELMOD (ipmodt, ipmodc)
  9.  
  10. IMPLICIT INTEGER(I-N)
  11. IMPLICIT REAL*8 (A-H,O-Z)
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15. -INC CCPRECO
  16.  
  17. -INC SMMODEL
  18. -INC SMELEME
  19.  
  20. C Elem. RACCORD : RAC2 RAC3 LIA3 LIA4 LIA6 LIA8 SEG2
  21. C Cas Particulier : en 1D, SEG2 = element RACCORD (OF)
  22. C ---------------
  23. PARAMETER ( NBRAC=7 )
  24. INTEGER IRAC(NBRAC)
  25. DATA IRAC / 12 , 13 , 18 , 19 , 20 , 21 , 2 /
  26.  
  27. CHARACTER*(16) mofort,mofcnv,mofray
  28.  
  29. IPMODC = 0
  30.  
  31. mmodel = IPMODT
  32. c* segact mmodel <- Actif en E/S
  33.  
  34. iimpi0 = IIMPI
  35. c*dbg iimpi0 = 1972
  36.  
  37. C- Recherche si le modele IPMODT n'a pas deja ete traite :
  38. C- Verification si presence dans le preconditionnement CCPRECO
  39. ith = oothrd
  40. ith1 = ith + 1
  41.  
  42. CALL OOOHO1(mmodel,ihorot)
  43. ITAILL = NBMOCV(ith1)
  44. DO is = 1, ITAILL
  45. IF ( PMOCVE(is,ith1) .EQ. mmodel .AND.
  46. & PMOCVH(is,ith1) .EQ. ihorot ) THEN
  47. mmode1 = PMOCVS(is,ith1)
  48. if (iimpi0.eq.1972) then
  49. write(ioimp,*) 'Preconditionnement SELMOD trouve',
  50. & ipmodt,mmode1,is
  51. endif
  52. C Mise a jour du preconditionnement dans CCPRECO : Deplacement en position 1
  53. IF (is .GT. 1) THEN
  54. DO js = is, 2, -1
  55. PMOCVE(js,ith1) = PMOCVE(js - 1,ith1)
  56. PMOCVH(js,ith1) = PMOCVH(js - 1,ith1)
  57. PMOCVS(js,ith1) = PMOCVS(js - 1,ith1)
  58. ENDDO
  59. PMOCVE(1,ith1) = mmodel
  60. PMOCVH(1,ith1) = ihorot
  61. PMOCVS(1,ith1) = mmode1
  62. ENDIF
  63. GOTO 100
  64. ENDIF
  65. ENDDO
  66.  
  67. C- Construction du MODELE recherche
  68. mofort = 'THERMIQUE '
  69. C (1) SELECTION dans le MODELE de la partie 'CONVECTION'
  70. mofcnv = 'CONVECTION '
  71. C (2) OUBLI des elements RACCORDs (s'ils existent) de la partie CONVECTION
  72. C Petit traitement pour le cas 1D : on simule l'element raccord 1D via
  73. C un element fini SEG2 (cela evite de creer un nouvel element fini)
  74. IF (IDIM.EQ.1) THEN
  75. KRACC = 7
  76. NRACC = 1
  77. ELSE
  78. KRACC = 1
  79. NRACC = 6
  80. ENDIF
  81. C (3) SELECTION dans le MODELE de la partie 'RAYONNEMENT'
  82. mofray = 'RAYONNEMENT '
  83. C (4) IPMODC = FUSION des parties 'CONVECTION' sans RACCORD et 'RAYONNEMENT'
  84.  
  85. SEGINI,mmode1=mmodel
  86. nsou = mmode1.kmodel(/1)
  87.  
  88. N1 = 0
  89. DO is = 1, nsou
  90. imodel = mmode1.kmodel(is)
  91. c* segact imodel
  92. DO js = 1, imodel.formod(/2)
  93. inok = 1
  94. IF (imodel.formod(js).EQ.mofort) THEN
  95. DO k = 1, imodel.matmod(/2)
  96. IF (imodel.matmod(k).EQ.mofcnv) THEN
  97. CALL PLACE2(IRAC(KRACC),NRACC,inok,imodel.NEFMOD)
  98. ELSE IF (imodel.matmod(k).EQ.mofray) THEN
  99. inok = 0
  100. ENDIF
  101. ENDDO
  102. ENDIF
  103. IF (inok.EQ.0) THEN
  104. N1 = N1 + 1
  105. mmode1.kmodel(N1) = imodel
  106. ENDIF
  107. ENDDO
  108. ENDDO
  109.  
  110. IF (N1.NE.nsou) then
  111. SEGADJ,mmode1
  112. else
  113. if (iimpi0.eq.1972) write(ioimp,*) 'SELMOD : IPMODT=IPMODC !'
  114. segsup,mmode1
  115. mmode1=mmodel
  116. endif
  117.  
  118. C Mise a jour du preconditionnement dans CCPRECO
  119. ITAILL = MIN(ITAILL + 1, NPMCNV)
  120. NBMOCV(ith1) = ITAILL
  121. DO is = ITAILL, 2, -1
  122. PMOCVE(is,ith1) = PMOCVE(is - 1,ith1)
  123. PMOCVH(is,ith1) = PMOCVH(is - 1,ith1)
  124. PMOCVS(is,ith1) = PMOCVS(is - 1,ith1)
  125. ENDDO
  126. PMOCVE(1,ith1) = mmodel
  127. PMOCVH(1,ith1) = ihorot
  128. PMOCVS(1,ith1) = mmode1
  129. if (iimpi0.eq.1972) then
  130. write(ioimp,*) 'Preconditionnement SELMOD realise',ipmodt,mmode1
  131. endif
  132.  
  133. 100 CONTINUE
  134. IPMODC = mmode1
  135. IF (IPMODC.NE.IPMODT) CALL ACTOBJ('MMODEL ',IPMODC,1)
  136.  
  137. c return
  138. END
  139.  
  140.  
  141.  

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