Télécharger ktange.eso

Retour à la liste

Numérotation des lignes :

  1. C KTANGE SOURCE CB215821 16/12/05 21:39:58 9237
  2.  
  3. SUBROUTINE KTANGE
  4.  
  5. *_______________________________________________________________________
  6. *
  7. * Operateur matrice de rigidite tangente KTAN
  8. *
  9. * RI1 = 'KTAN' MOD1 SI1 VA1 CA1
  10. * ('PREC' FLO1) ('DT ' FLO2 ) ('SYME') ;
  11. *
  12. * MOD1 MMODEL Modele de calcul
  13. * SI1 MCHAML Champ par element de contraintes
  14. * VA1 MCHAML Champ par element de variables internes
  15. * CA1 MCHAML Champ par element de caracteristiques
  16. * (materielles et/ou geometriques)
  17. * FLO1 FLOTTANT (par defaut 1.D-3)
  18. * précision avec laquelle on cherche si un état de
  19. * contraintes est plastique ou non
  20. * FLO2 FLOTTANT nécessaire que pour les modèles visqueux
  21. * pas de temps servant à calculer la matrice tangente
  22. *
  23. *_______________________________________________________________________
  24. *
  25. * Calcul de la matrice de rigidite tangente par perturbation
  26. *
  27. * RI1 = 'KTAN' 'PERT' MOD1 CHE1 CHE2
  28. * ('C1' FLO1) ('C2' FLO2) ('SYME') ;
  29. *
  30. * MOD1 MMODEL Modele de calcul
  31. * CHE1 MCHAML Champ par element a t pour COMP
  32. * CHE2 MCHAML Champ par element a t+dt
  33. * (champs pour COMP et les contraintes)
  34. * FLO1 FLOTTANT positif (par defaut 1.D-3)
  35. * coefficient de perturbation de l increment de
  36. * deformation
  37. * FLO2 FLOTTANT positif (par defaut FLO1/100.)
  38. * perturbation minimale
  39. *
  40. *_______________________________________________________________________
  41. *
  42. IMPLICIT INTEGER(I-N)
  43. IMPLICIT REAL*8(A-H,O-Z)
  44. *
  45. -INC CCOPTIO
  46. *
  47. LOGICAL BC2
  48. CHARACTER*4 DEUXMOT(3),PERTURB(4)
  49. *
  50. DATA DEUXMOT / 'PREC','DT ','SYME' /
  51. DATA PERTURB / 'PERT','C1 ','C2 ','SYME' /
  52. *
  53. CALL LIRMOT(PERTURB,1,IPLA,0)
  54. IF (IERR.NE.0) RETURN
  55. *
  56. IPRIGI=0
  57. *
  58. ************************************************************************
  59. * MATRICE TANGENTE ANALYTIQUE SI POSSIBLE, SINON ELASTIQUE
  60. ************************************************************************
  61. IF (IPLA.EQ.0) THEN
  62. *
  63. * Lecture d'un modele
  64. *
  65. CALL LIROBJ('MMODEL',IPMODL,1,IRET)
  66. IF (IERR.NE.0) RETURN
  67. *
  68. * Lecture du MCHAML de CONTRAINTES
  69. *
  70. CALL LIROBJ('MCHAML',IPIN,1,IRET)
  71. IF (IERR.NE.0) RETURN
  72. CALL REDUAF(IPIN,IPMODL,IPCHE1,0,IR,KER)
  73. IF(IR .NE. 1) CALL ERREUR(KER)
  74. IF(IERR .NE. 0) RETURN
  75. *
  76. * Lecture du MCHAML de VARIABLES INTERNES
  77. *
  78. CALL LIROBJ('MCHAML',IPIN,1,IRET)
  79. IF (IERR.NE.0) RETURN
  80. CALL REDUAF(IPIN,IPMODL,IPCHE2,0,IR,KER)
  81. IF(IR .NE. 1) CALL ERREUR(KER)
  82. IF(IERR .NE. 0) RETURN
  83. *
  84. * Lecture du MCHAML de CARACTERISTIQUES
  85. *
  86. CALL LIROBJ('MCHAML',IPIN,1,IRET)
  87. IF (IERR.NE.0) RETURN
  88. CALL REDUAF(IPIN,IPMODL,IPCHE3,0,IR,KER)
  89. IF(IR .NE. 1) CALL ERREUR(KER)
  90. IF(IERR .NE. 0) RETURN
  91. *
  92. * On lit un ou deux flottants xprec et dt
  93. *
  94. XPREC = 1.D-3
  95. DTPS = 0.D0
  96. IKTSYM = 0
  97. 1 CONTINUE
  98. CALL LIRMOT(DEUXMOT,3,IVAL,0)
  99. IF (IERR.NE.0) RETURN
  100. IF (IVAL .EQ. 1) THEN
  101. CALL LIRREE(XPREC,1,IRET)
  102. IF (IERR.NE.0) RETURN
  103. GOTO 1
  104. ELSE IF (IVAL .EQ. 2) THEN
  105. CALL LIRREE(DTPS,1,IRET)
  106. IF (IERR.NE.0) RETURN
  107. GOTO 1
  108. ELSE IF (IVAL .EQ. 3) THEN
  109. IKTSYM = 1
  110. GOTO 1
  111. ENDIF
  112. *
  113. * Calcul de la matrice tangente
  114. *
  115. CALL KTANGA(IPMODL,IPCHE1,IPCHE2,IPCHE3,XPREC,DTPS,IKTSYM,
  116. & IPRIGI)
  117. *
  118. ************************************************************************
  119. * MATRICE DE RAIDEUR TANGENTE PAR PERTURBATION
  120. ************************************************************************
  121. * Appel a 'KTAN' 'PERT'
  122. ELSE IF (IPLA.EQ.1) THEN
  123. *
  124. * Lecture d'un modele
  125. *
  126. CALL LIROBJ('MMODEL',IPMODL,1,IRET)
  127. IF (IERR.NE.0) RETURN
  128. *
  129. * Lecture du MCHAML initial
  130. *
  131. CALL LIROBJ('MCHAML',IPIN,1,IRET)
  132. IF (IERR.NE.0) RETURN
  133. CALL REDUAF(IPIN,IPMODL,IPCHE1,0,IR,KER)
  134. IF(IR .NE. 1) CALL ERREUR(KER)
  135. IF(IERR .NE. 0) RETURN
  136. *
  137. * Lecture du MCHAML final
  138. *
  139. CALL LIROBJ('MCHAML',IPIN,1,IRET)
  140. IF (IERR.NE.0) RETURN
  141. CALL REDUAF(IPIN,IPMODL,IPCHE2,0,IR,KER)
  142. IF(IR .NE. 1) CALL ERREUR(KER)
  143. IF(IERR .NE. 0) RETURN
  144. *
  145. * On lit un ou deux flottants CO1 et CO2
  146. * par defaut CO1 = 1.D-3 et CO2 = CO1/100.
  147. *
  148. CO1 = 1.D-3
  149. BC2 = .TRUE.
  150. IKTSYM = 0
  151. 100 CONTINUE
  152. CALL LIRMOT(PERTURB(2),3,IVAL,0)
  153. IF (IERR.NE.0) RETURN
  154. IF (IVAL .EQ. 1) THEN
  155. CALL LIRREE(CO1,1,IRET)
  156. IF (IERR.NE.0) RETURN
  157. GOTO 100
  158. ELSE IF (IVAL .EQ. 2) THEN
  159. CALL LIRREE(CO2,1,IRET)
  160. IF (IERR.NE.0) RETURN
  161. BC2 = .FALSE.
  162. GOTO 100
  163. ELSE IF (IVAL .EQ. 3) THEN
  164. IKTSYM = 1
  165. GOTO 100
  166. ENDIF
  167. *
  168. * Verification des coefficients de perturbation C1 et C2
  169. *
  170. IF (CO1.LE.0.) THEN
  171. CO1 = 1.D-3
  172. WRITE (IOIMP,*) 'Valeur de C1 negative ==> ',
  173. & 'valeur par defaut (1.D-3) utilisee'
  174. ENDIF
  175. IF (CO2.LE.0.) THEN
  176. BC2 = .TRUE.
  177. WRITE (IOIMP,*) 'Valeur de C2 negative ==> ',
  178. & 'valeur par defaut (C1/100.) utilisee'
  179. ENDIF
  180. IF (BC2) CO2 = CO1/1.D2
  181. *
  182. * Calcul de la matrice par perturbation
  183. *
  184. CALL KTAPER(IPMODL,IPCHE1,IPCHE2,CO1,CO2,IKTSYM, IPRIGI)
  185. *
  186. ENDIF
  187. *
  188. ************************************************************************
  189. * Ecriture de la RIGIDITE
  190. ************************************************************************
  191. IF (IPRIGI.GT.0) CALL ECROBJ('RIGIDITE',IPRIGI)
  192. *
  193. RETURN
  194. END
  195.  
  196.  
  197.  

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