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