Download ktange.eso

Back to the list

   1 : C KTANGE    SOURCE    FANDEUR   10/01/12    21:15:36     6599           
   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 : *
  52 :       CALL LIRMOT(PERTURB,1,IPLA,0)
  53 :       IF (IERR.NE.0) RETURN
  54 : *
  55 :       IPRIGI=0
  56 : *
  57 : ************************************************************************
  58 : *     MATRICE TANGENTE ANALYTIQUE SI POSSIBLE, SINON ELASTIQUE
  59 : ************************************************************************
  60 :       IF (IPLA.EQ.0) THEN
  61 : *
  62 : *       Lecture d'un modele
  63 : *
  63 :         CALL LIROBJ('MMODEL',IPMODL,1,IRET)
  64 :         IF (IERR.NE.0) RETURN
  65 : *
  66 : *       Lecture du MCHAML de CONTRAINTES
  67 : *
  67 :         CALL LIROBJ('MCHAML',IPCHE1,1,IRET)
  68 :         IF (IERR.NE.0) RETURN
  69 : *
  70 : *       Lecture du MCHAML de VARIABLES INTERNES
  71 : *
  71 :         CALL LIROBJ('MCHAML',IPCHE2,1,IRET)
  72 :         IF (IERR.NE.0) RETURN
  73 : *
  74 : *       Lecture du MCHAML de CARACTERISTIQUES
  75 : *
  75 :         CALL LIROBJ('MCHAML',IPCHE3,1,IRET)
  76 :         IF (IERR.NE.0) RETURN
  77 : *
  78 : *       On lit un ou deux flottants xprec et dt
  79 : *
  80 :         XPREC  = 1.D-3
  81 :         DTPS   = 0.D0
  82 :         IKTSYM = 0
  83 :  1      CONTINUE
  83 :         CALL LIRMOT(DEUXMOT,3,IVAL,0)
  84 :         IF (IERR.NE.0) RETURN
  85 :         IF (IVAL .EQ. 1) THEN
  85 :           CALL LIRREE(XPREC,1,IRET)
  86 :           IF (IERR.NE.0) RETURN
  87 :           GOTO 1
  88 :         ELSE IF (IVAL .EQ. 2) THEN  
  88 :           CALL LIRREE(DTPS,1,IRET)
  89 :           IF (IERR.NE.0) RETURN
  90 :           GOTO 1
  91 :         ELSE IF (IVAL .EQ. 3) THEN
  92 :           IKTSYM = 1
  93 :           GOTO 1
  94 :         ENDIF
  95 : *
  96 : *       Calcul de la matrice tangente
  97 : *
  97 :         CALL KTANGA(IPMODL,IPCHE1,IPCHE2,IPCHE3,XPREC,DTPS,IKTSYM,
  98 :      &              IPRIGI)
  99 : *
 100 : ************************************************************************
 101 : *         MATRICE DE RAIDEUR TANGENTE PAR PERTURBATION
 102 : ************************************************************************
 103 : * Appel a 'KTAN' 'PERT'
 104 :       ELSE IF (IPLA.EQ.1) THEN
 105 : *
 106 : *       Lecture d'un modele
 107 : *
 107 :         CALL LIROBJ('MMODEL',IPMODL,1,IRET)
 108 :         IF (IERR.NE.0) RETURN
 109 : *
 110 : *       Lecture du MCHAML initial
 111 : *
 111 :         CALL LIROBJ('MCHAML',IPCHE1,1,IRET)
 112 :         IF (IERR.NE.0) RETURN
 113 : *
 114 : *       Lecture du MCHAML final
 115 : *
 115 :         CALL LIROBJ('MCHAML',IPCHE2,1,IRET)
 116 :         IF (IERR.NE.0) RETURN
 117 : *
 118 : *       On lit un ou deux flottants CO1 et CO2
 119 : *       par defaut CO1 = 1.D-3 et CO2 = CO1/100.
 120 : *
 121 :         CO1 = 1.D-3
 122 :         BC2 = .TRUE.
 123 :         IKTSYM = 0
 124 :  100    CONTINUE
 124 :         CALL LIRMOT(PERTURB(2),3,IVAL,0)
 125 :         IF (IERR.NE.0) RETURN
 126 :         IF (IVAL .EQ. 1) THEN
 126 :           CALL LIRREE(CO1,1,IRET)
 127 :           IF (IERR.NE.0) RETURN
 128 :           GOTO 100
 129 :         ELSE IF (IVAL .EQ. 2) THEN
 129 :           CALL LIRREE(CO2,1,IRET)
 130 :           IF (IERR.NE.0) RETURN
 131 :           BC2 = .FALSE.
 132 :           GOTO 100
 133 :         ELSE IF (IVAL .EQ. 3) THEN
 134 :           IKTSYM = 1
 135 :           GOTO 100
 136 :         ENDIF
 137 : *
 138 : *   Verification des coefficients de perturbation C1 et C2
 139 : *
 140 :         IF (CO1.LE.0.) THEN
 141 :           CO1 = 1.D-3
 142 :           WRITE (IOIMP,*) 'Valeur de C1 negative ==> ',
 143 :      &                    'valeur par defaut (1.D-3) utilisee'
 144 :         ENDIF
 145 :         IF (CO2.LE.0.) THEN
 146 :           BC2 = .TRUE.
 147 :           WRITE (IOIMP,*) 'Valeur de C2 negative ==> ',
 148 :      &                    'valeur par defaut (C1/100.) utilisee'
 149 :         ENDIF
 150 :         IF (BC2) CO2 = CO1/1.D2
 151 : *
 152 : *   Calcul de la matrice par perturbation
 153 : *
 153 :         CALL KTAPER(IPMODL,IPCHE1,IPCHE2,CO1,CO2,IKTSYM, IPRIGI)
 154 : *
 155 :       ENDIF
 156 : *
 157 : ************************************************************************
 158 : *       Ecriture de la RIGIDITE
 159 : ************************************************************************
 159 :       IF (IPRIGI.GT.0) CALL ECROBJ('RIGIDITE',IPRIGI)
 160 : *
 161 :       RETURN
 162 :       END
 163 : 
 164 :  

© Cast3M 2003 - All rights reserved.
Disclaimer