Télécharger ryo2v.eso

Retour à la liste

Numérotation des lignes :

ryo2v
  1. C RYO2V SOURCE GOUNAND 25/04/30 21:15:38 12258
  2. SUBROUTINE RYO2V(IRT)
  3. C*************************************************************************
  4. C
  5. C
  6. C
  7. C
  8. C
  9. C*************************************************************************
  10.  
  11. IMPLICIT INTEGER(I-N)
  12. IMPLICIT REAL*8 (A-H,O-Z)
  13.  
  14.  
  15. -INC PPARAM
  16. -INC CCOPTIO
  17. -INC SMTABLE
  18. -INC SMLMOTS
  19. -INC SMELEME
  20. POINTEUR MELEMC.MELEME
  21. -INC SMCOORD
  22.  
  23. POINTEUR MAT1.MATRIK,MAT2.MATRIK,MAT3.MATRIK
  24. -INC SMCHPOI
  25. POINTEUR CBLOQ.MCHPOI,FBLOQ.MCHPOI
  26. C POINTEUR IZV1.MCHPOI,IZVV1.MPOVAL
  27. C POINTEUR IZV2.MCHPOI,IZVV2.MPOVAL
  28.  
  29. DIMENSION XVEC(3)
  30. CHARACTER*8 TYPE,TYPC,TYPE1,TYPE2
  31. LOGICAL LDMULT
  32. PARAMETER (NBOP=13)
  33. CHARACTER*4 MOT4
  34. CHARACTER*8 LOPER(NBOP),MTYP,NOMI
  35. DATA LOPER/'CMCT ','RIMA ','NINCDUPR','NINCPRDU',
  36. $ 'EXTRNINC',
  37. $ 'EXTRINCO','POINTEUR','EXTRDIAG','SPAIDIAG','RELA ',
  38. $ 'CONDENSE','EVAPORE ','BLOQ '/
  39. C***
  40. C ********************************************
  41. C * La premiere partie de cette routine *
  42. C * consiste a recuperer les arguments de *
  43. C * l operateur KOPS afin de pouvoir leurs *
  44. C * attribuer le traitement correspondant *
  45. C ********************************************
  46.  
  47. C On saisit le premier objet de la pile
  48. C *************************************
  49.  
  50. CALL QUETYP(MTYP,0,IRET)
  51. IF(IRET.EQ.0)THEN
  52. IRT=1
  53. RETURN
  54. ENDIF
  55. C write(6,*)' KOPS nag=',nag,' MTYP=',MTYP
  56.  
  57. C ============================================
  58. C Cas : Objet = MOT
  59. C ============================================
  60. IRT=0
  61. IF(MTYP.NE.'MOT')THEN
  62. IRT=1
  63. RETURN
  64. ELSE
  65. CALL LIRMOT(LOPER,NBOP,KOP,1)
  66. C write(6,*)' KOPS ', LOPER(KOP)
  67. C write(6,*) 'Avant KOPS ', LOPER(KOP)
  68. IF(KOP.EQ.0)THEN
  69. IRT=1
  70. RETURN
  71. ENDIF
  72. ENDIF
  73.  
  74. C Cas tres tres particulier(s)
  75.  
  76. C CAS KOP=1
  77. IF(KOP.EQ.1 )THEN
  78. CALL PRCMCT
  79. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  80. RETURN
  81. ENDIF
  82. C CAS KOP=2
  83. IF(KOP.EQ.2 )THEN
  84. CALL RIMA
  85. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  86. RETURN
  87. ENDIF
  88. IF(KOP.EQ.3)THEN
  89. CALL MACHI2(1)
  90. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  91. RETURN
  92. ENDIF
  93. IF(KOP.EQ.4)THEN
  94. CALL MACHI2(2)
  95. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  96. RETURN
  97. ENDIF
  98. * Mot clé non disponible, voir l'opérateur EXTR 'COMP'
  99. IF(KOP.EQ.5)THEN
  100. CALL EXTIPD
  101. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  102. RETURN
  103. ENDIF
  104. IF(KOP.EQ.6)THEN
  105. CALL EXINCO
  106. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  107. RETURN
  108. ENDIF
  109. IF(KOP.EQ.7)THEN
  110. MTYP=' '
  111. CALL LIROBJ(MTYP,IRET,1,IRETOU)
  112. IF (IERR.NE.0) RETURN
  113. CALL ECRENT(IRET)
  114. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  115. RETURN
  116. ENDIF
  117. IF(KOP.EQ.8)THEN
  118. CALL EXDIAG(1)
  119. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  120. RETURN
  121. ENDIF
  122. IF(KOP.EQ.9)THEN
  123. CALL EXDIAG(2)
  124. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  125. RETURN
  126. ENDIF
  127. IF(KOP.EQ.10)THEN
  128. CALL RELRIG
  129. C write(6,*) 'Apres KOPS ', LOPER(KOP)
  130. RETURN
  131. ENDIF
  132. *
  133. * Condense les relations
  134. *
  135. IF(KOP.EQ.11)THEN
  136. CALL LIROBJ('RIGIDITE',MRIGID,1,IRET)
  137. IF (IERR.NE.0) RETURN
  138. CALL LIROBJ('CHPOINT ',KSMBR,1,IRET)
  139. IF (IERR.NE.0) RETURN
  140. * On ne dédouble pas les multiplicateurs ici
  141. LDMULT=.FALSE.
  142. * On élimine les relations ici, c'est le but
  143. NELIM=1
  144. CALL KRES6(MRIGID,KSMBR,LDMULT,NELIM,
  145. $ MRIGIC,KSMBRC,KSMBR1)
  146. * 2018/10/08 Gérer le cas où il n'y a pas de chpoint ksmbr1 (ksmbr1=0)
  147. if (ksmbr1.eq.0) then
  148. call ecrent(ksmbr1)
  149. else
  150. CALL ECROBJ('CHPOINT ',KSMBR1)
  151. endif
  152. CALL ECROBJ('CHPOINT ',KSMBRC)
  153. CALL ECROBJ('RIGIDITE',MRIGIC)
  154. RETURN
  155. ENDIF
  156. *
  157. * Evapore : opération inverse de la condensation
  158. *
  159. IF(KOP.EQ.12)THEN
  160. CALL LIROBJ('CHPOINT ',MSOLC,1,IRET)
  161. IF (IERR.NE.0) RETURN
  162. CALL LIROBJ('RIGIDITE',MRIGID,1,IRET)
  163. IF (IERR.NE.0) RETURN
  164. CALL LIROBJ('CHPOINT ',KSMBR,1,IRET)
  165. IF (IERR.NE.0) RETURN
  166. CALL LIRENT(KSMBR1,0,IRET)
  167. IF (IRET.EQ.0) THEN
  168. CALL LIROBJ('CHPOINT ',KSMBR1,1,IRET)
  169. ELSE
  170. if (ksmbr1.ne.0) call erreur(5)
  171. ENDIF
  172. IF (IERR.NE.0) RETURN
  173. * Ne pas détruire le champ solution, c'est un objet utilisateur Gibiane
  174. IDTARG=0
  175. CALL KRES7(MSOLC,MRIGID,KSMBR,KSMBR1,IDTARG,
  176. $ MCHSOL)
  177. IF (IERR.NE.0) RETURN
  178. CALL ECROBJ('CHPOINT ',MCHSOL)
  179. RETURN
  180. ENDIF
  181. *
  182. * BLOQ : a partir d'un CHPOINT de CLIM de Dirichlet, genere la
  183. * rigidite de blocage et la force associee au blocage
  184. *
  185. IF(KOP.EQ.13)THEN
  186. CALL LIROBJ('CHPOINT ',CBLOQ,1,IRET)
  187. IF (IERR.NE.0) RETURN
  188. CALL ACTOBJ('CHPOINT ',CBLOQ,1)
  189. CALL KBLOQ(CBLOQ,MBLOQ,FBLOQ)
  190. CALL ACTOBJ('RIGIDITE',MBLOQ,1)
  191. CALL ECROBJ('RIGIDITE',MBLOQ)
  192. CALL ACTOBJ('CHPOINT ',FBLOQ,1)
  193. CALL ECROBJ('CHPOINT ',FBLOQ)
  194. RETURN
  195. ENDIF
  196. RETURN
  197. END
  198.  
  199.  

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