Télécharger prchl1.eso

Retour à la liste

Numérotation des lignes :

prchl1
  1. C PRCHL1 SOURCE PV090527 25/01/07 14:42:53 12115
  2. C
  3. C-----------------------------------------------------------------------
  4. C Sous-programme de l'operateur PRESSION :
  5. C
  6. C IPCHE2 = PRES IPMOD1 IPCHE1 ;
  7. C
  8. C En entree :
  9. C -----------
  10. C IPMOD1 : MMODEL de formulation CHARGEMENT PRESSION
  11. C IPCHE1 : MCHAML passe par l'utilisateur, reduit sur IPMOD1
  12. C
  13. C En sortie :
  14. C -----------
  15. C IPCHE2 : contient le MCHAML de pression resultat / 0 si echec
  16. C desactive en sortie
  17. C
  18. C-----------------------------------------------------------------------
  19. SUBROUTINE PRCHL1(IPMOD10,IPCHE10,IPCHE2)
  20. C
  21. IMPLICIT INTEGER(I-N)
  22. IMPLICIT REAL*8 (A-H,O-Z)
  23.  
  24. CHARACTER*11 TITCHE
  25. CHARACTER*4 MOCONT
  26.  
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC SMCHAML
  31. -INC SMMODEL
  32. -INC SMCOORD
  33. C
  34. IPMOD1 = IPMOD10
  35. IPCHE1 = IPCHE10
  36. IPCHE2 = 0
  37. C
  38. C Verif du support / Changement si besoin
  39. ICOND = 0
  40. CALL QUESUP(IPMOD1,IPCHE1,0,ICOND,ISUP,IRET2)
  41. IF (IERR.NE.0) RETURN
  42. C
  43. C Changement de support si besoin
  44. IF (IRET2.EQ.9999) THEN
  45. CALL ERREUR(560)
  46. RETURN
  47. ELSEIF (ISUP.NE.5) THEN
  48. CALL CHASUP(IPMOD1,IPCHE1,IPCHEL,IRET,5)
  49. IF (IERR.NE.0) RETURN
  50. IPCHE1=IPCHEL
  51. ENDIF
  52. c write (6,*) ' Apres QUESUP, ISUP, IRET2=',ISUP,IRET2
  53. C
  54. C On active le MMODEL
  55. MMODEL=IPMOD1
  56. SEGACT, MMODEL
  57. NSZ = MMODEL.KMODEL(/1)
  58. C
  59. C Initialisation de IPCHE2 (MCHEL2)
  60. MCHEL1=IPCHE1
  61. SEGACT,MCHEL1
  62. SEGINI,MCHEL2=MCHEL1
  63. N1 = MCHEL1.ICHAML(/1)
  64. N3 = MCHEL1.INFCHE(/2)
  65. L1 = 11
  66. SEGADJ,MCHEL2
  67. MCHEL2.TITCHE='CONTRAINTES'
  68. MCHEL2.IFOCHE=IFOUR
  69. C
  70. C Verif nb sous-zones MCHAML < MMODEL
  71. IF (N1.GT.NSZ) THEN
  72. CALL ERREUR(553)
  73. GOTO 999
  74. ENDIF
  75. C
  76. C Boucles sur les sous-zones :
  77. DO I=1,N1
  78. MCHAM1=MCHEL1.ICHAML(I)
  79. SEGACT,MCHAM1
  80. C On verifie le type de la composante
  81. IF (MCHAM1.TYPCHE(1).NE.'REAL*8') THEN
  82. CALL ERREUR(671)
  83. GOTO 999
  84. ENDIF
  85. C Tests sur composantes
  86. NCPCH=MCHAM1.NOMCHE(/2)
  87. IMODEL=MMODEL.KMODEL(I)
  88. SEGACT,IMODEL
  89. C Noms des composantes de contrainte
  90. NOMID=IMODEL.LNOMID(4)
  91. SEGACT,NOMID
  92. NCPMO=NOMID.LESOBL(/2)
  93. C Le MCHAML doit avoir le meme nbr de composante que le MMODEL
  94. IF (NCPCH.NE.NCPMO) THEN
  95. MOTERR(1:8)='MCHAML '
  96. CALL ERREUR(980)
  97. GOTO 999
  98. ENDIF
  99. C S'il y a plusieurs composantes de contrainte, le MCHAML fourni
  100. C doit avoir les memes noms de composante que le MMODEL
  101. IF (NCPMO.NE.1) THEN
  102. DO J=1,NCPMO
  103. IF (MCHAM1.NOMCHE(J).NE.NOMID.LESOBL(J)) THEN
  104. MOTERR(1:4)=NOMID.LESOBL(J)
  105. MOTERR(5:30)=' par element en argument '
  106. CALL ERREUR(77)
  107. GOTO 999
  108. ENDIF
  109. ENDDO
  110. ELSE
  111. C Initialisation de MCHAM2 pour changer le nom des composantes
  112. SEGINI,MCHAM2=MCHAM1
  113. MCHEL2.ICHAML(I)=MCHAM2
  114. MCHAM2.NOMCHE(1)=NOMID.LESOBL(1)
  115. SEGDES,MCHAM2
  116. ENDIF
  117. SEGDES,NOMID
  118. C Mise a jour du tableabu INFCHE
  119. MCHEL2.INFCHE(I,1)=0
  120. MCHEL2.INFCHE(I,2)=0
  121. MCHEL2.INFCHE(I,3)=NIFOUR
  122. MCHEL2.INFCHE(I,4)=IMODEL.INFMOD(7)
  123. MCHEL2.INFCHE(I,5)=0
  124. MCHEL2.INFCHE(I,6)=5
  125. ENDDO
  126. C
  127. IPCHE2=MCHEL2
  128. C
  129. 999 SEGDES,MCHEL2
  130. C
  131. RETURN
  132. END
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  

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