1 : C WCREE0 SOURCE FANDEUR 14/01/22 21:15:19 7891 2 : 3 : SUBROUTINE WCREE0 ( iqmod, wrk52, wcreep ) 4 : 5 : IMPLICIT INTEGER(I-N) 6 : IMPLICIT REAL*8(A-H,O-Z) 7 : C----------------------------------------------------------------------- 8 : 9 : C 10 : C DESCRIPTION FONCTIONNELLE : 11 : C ------------------------- 12 : C 13 : C Preparation de donnees pour l'integration d'une loi VISCO_EXTERNE 14 : C 15 : C WCREE0 prepare les donnees independantes de l'element et du point 16 : C d'integration ; de ce fait, WCREE0 est appelee par COML6 avant le 17 : C demarrage des boucles imbriquees sur les elements de la sous-zone 18 : C et sur les points de Gauss de l'element. 19 : C 20 : C INTERFACE : 21 : C --------- 22 : C 23 : C IN : iqmod : pointeur actif sur le modele elementaire 24 : C IN : wrk52 : pointeur actif sur le segment de travail WRK52 25 : C de l'objet DECHE 26 : C IN : wcreep : pointeur actif sur le segment de travail 27 : C WCREEP contenant les donnees a preparer 28 : C 29 : C 30 : C Les operations effectuees par WCREE0 consistent a initialiser 31 : C certains elements du segment de travail WCREEP. 32 : C Sont concernees les donnees suivantes : 33 : C 34 : C Entrees/sorties constantes de la routine CREEP : 35 : C ---------------------------------------------- 36 : C 37 : C SERD : REAL*8, puissance volumique de deformation 38 : C inelastique (produit contracte du tenseur des 39 : C contraintes et du tenseur des vitesses de 40 : C deformation inelastique) 41 : C Entree/sortie facultative de la routine CREEP, 42 : C non exploitee par CAST3M pour l'instant 43 : C Initialisation arbitraire 44 : C 45 : C CMNAMC : CHARACTER*16, identifiant de la loi de 46 : C comportement 47 : C Entree de la routine CREEP 48 : C 49 : C LEXIMP : INTEGER, indicateur d'integration par un schema 50 : C Entree de la routine CREEP, non active dans le 51 : C cas d'une adherence a CAST3M 52 : C Initialisation arbitraire 53 : C 54 : C NSTTVC : INTEGER, nombre de variables internes 55 : C supplementaires (en plus des 4 pre-definies) 56 : C Entree de la routine CREEP 57 : C 58 : C LAYERC : INTEGER, numero de couche pour des coques 59 : C composites ou des solides multi-couches 60 : C KSPTC : INTEGER, numero de section dans la couche 61 : C courante 62 : C Entrees de la routine CREEP, non actives dans le 63 : C cas d'une adherence a CAST3M 64 : C Initialisation arbitraire 65 : C 66 : C Entrees/sorties de la routine CREEP pouvant varier : 67 : C -------------------------------------------------- 68 : C 69 : C TMP12 : REAL*8, temperature a t+tau1/2 70 : C TMP : REAL*8, temperature a t+tau 71 : C TMP32 : REAL*8, temperature a t+tau3/2 72 : C DTMP12 : REAL*8, variation de temperature sur tau1/2 73 : C DTMP : REAL*8, variation de temperature sur tau 74 : C PRD12 : REAL*8(*), parametres externes a t+tau1/2 75 : C PRD : REAL*8(*), parametres externes a t+tau 76 : C PRD32 : REAL*8(*), parametres externes a t+tau3/2 77 : C DPRD12 : REAL*8(*), variations des parametres externes 78 : C sur tau1/2 79 : C DPRD : REAL*8(*), variations des parametres externes 80 : C sur tau 81 : C Entrees de la routine CREEP 82 : C Ces entrees ne sont initialisees par WCREE0 que 83 : C dans le cas ou elles ne sont pas actives, i.e. 84 : C quand aucun champ de temperature ni aucun champ 85 : C de parametre externe n'est fourni en entree a 86 : C l'operateur COMP (cas d'un modele independant 87 : C de la temperature et de tout autre parametre). 88 : C 89 : C KSTEPC : INTEGER 90 : C Entree de la routine CREEP n'ayant pas de sens 91 : C dans le cas d'une adherence a CAST3M 92 : C Initialisation arbitraire 93 : C On autorise la programmation de l'utilisateur a 94 : C se servir de KSTEPC comme code retour de CREEP 95 : C (voir module CREEP exemple integre au code) 96 : C 97 : C Variables de travail : 98 : C -------------------- 99 : C 100 : C LTMP : LOGICAL, indicateur de fourniture de 101 : C la temperature 102 : C LTMP=.TRUE. : les variables TMP* et DTMP* sont 103 : C mises a jour au cours du processus d'integration 104 : C LTMP=.FALSE. : les variables TMP* et DTMP* sont 105 : C initialisees une fois pour toutes par WCREE0 106 : C 107 : C LPRD : LOGICAL, indicateur d'existence de parametres 108 : C externes du modele 109 : C LPRD=.TRUE. : les variables PRD* et DPRD* sont 110 : C mises a jour au cours du processus d'integration 111 : C LPRD=.FALSE. : les variables PRD* et DPRD* sont 112 : C initialisees une fois pour toutes par WCREE0 113 : C 114 : C LSTV : LOGICAL, indicateur d'existence de variables 115 : C internes supplementaires (i.e. en plus des 4 116 : C pre-definies) 117 : C LSTV=.TRUE. : les vecteurs de travail STV* du 118 : C segment WCREEP sont mis a jour au cours du 119 : C processus d'integration 120 : C LSTV=.FALSE. : les vecteurs de travail STV* du 121 : C segment WCREEP sont initialises une fois pour 122 : C toutes par WCREE0 123 : C 124 : C IVIEX : INTEGER, indicateur de materiau 'VISCO_EXTERNE' 125 : C 1 : 'GENERAL' 126 : C 2 : 'DRUCKER_PRAGER' 127 : C 3 : 'COHESION' 128 : C 4 : 'CONSOLIDATION' 129 : C 5 : 'UTILISATEUR' 130 : C On a besoin d'un second indicateur pour les lois 131 : C 'VISCO_EXTERNE' car INPLAS=-100-ILOI ou ILOI est 132 : C le numero attribue par l'utilisateur 133 : C INPLAS permet de ditinguer les lois entre elles 134 : C IVIEX permet de "typer" une loi 135 : C 136 : C NPAREC : INTEGER, nombre de parametres externes de la loi 137 : C de comportement 138 : C Stockage dans une variable de travail afin de ne 139 : C pas "mesurer" un vecteur a chaque mise a jour au 140 : C cours du processus d'integration 141 : C N'est utile que dans le cas ou le modele depend 142 : C effectivement de parametres externes 143 : C 144 : C dTMPdt : REAL*8, derivee de la temperature par rapport au 145 : C temps, constante sur le pas de temps 146 : C dPRDdt : REAL*8(*), derivees des parametres externes par 147 : C rapport au temps, constantes sur le pas de temps 148 : C Ces variables ne servent que dans les cas ou 149 : C LTMP=.TRUE. et LPRD=.TRUE. respectivement 150 : C La temperature et les parametres extenes sont 151 : C supposes varier lineairement sur le pas de temps 152 : C 153 : C----------------------------------------------------------------------- 154 : -INC SMMODEL 155 : -INC DECHE 156 : C 157 : SEGMENT WCREEP 158 : C Entrees/sorties constantes de la routine CREEP 159 : REAL*8 SERD 160 : CHARACTER*16 CMNAMC 161 : INTEGER LEXIMP, NSTTVC, LAYERC, KSPTC 162 : C Entrees/sorties de la routine CREEP pouvant varier 163 : REAL*8 STV(NSTV), STV1(NSTV), STVP1(NSTV), 164 : & STVP2(NSTV), STV12(NSTV), STVP3(NSTV), 165 : & STVP4(NSTV), STV13(NSTV), STVF(NSTV), 166 : & TMP12, TMP, TMP32, 167 : & DTMP12, DTMP, 168 : & PRD12(NPRD), PRD(NPRD), PRD32(NPRD), 169 : & DPRD12(NPRD), DPRD(NPRD) 170 : INTEGER KSTEPC 171 : C Autres indicateurs et variables de travail 172 : LOGICAL LTMP, LPRD, LSTV 173 : INTEGER IVIEX, NPAREC 174 : REAL*8 dTMPdt, dPRDdt(NPRD) 175 : ENDSEGMENT 176 : C 177 : C Arguments de l'interface 178 : C 179 : C Pointeurs iqmod, wrk52, wcreep 180 : C 181 : C Variables locales 182 : C 183 : CHARACTER*16 MOMODL(200) 184 : C 185 : C---------------------- Debut du code executable ----------------------- 186 : C 187 : IMODEL = iqmod 188 : C 189 : C 1 - Entrees/sorties non actives/non exploitees de la routine CREEP 190 : C Initialisations arbitraires 191 : C 192 : SERD = 0.0D0 193 : C 194 : LEXIMP = 0 195 : LAYERC = 0 196 : KSPTC = 0 197 : C 198 : C 2 - Initialisation de KSTEPC qui pourra servir de code retour 199 : C 200 : KSTEPC = 1 201 : C 202 : C 3 - Numero de loi externe encode dans une chaine de 16 caracteres 203 : C Typage de la loi 'VISCO_EXTERNE' 204 : C 205 : NMAMOD = MATMOD(/2) 206 : CMNAMC = MATMOD(NMAMOD) 207 : C 208 : nparmo = 0 209 : NOBMOD = TYMODE(/2) 209 : CALL PLACE(TYMODE,NOBMOD,nparmo,'IVIEX ') 209 : IF (nparmo.EQ.0) CALL ERREUR(5) 210 : IVIEX = IVAMOD(nparmo) 211 : C 212 : C 4 - Nombre de variables internes supplementaires 213 : C 214 : NSTTVC = VAR0(/1)-4 215 : LSTV = (NSTTVC.GT.0) 216 : C 217 : C 5 - Existence d'un chargement en temperature 218 : C Existence de parametres externes autres que la temperature 219 : C 220 : NTURE0=TURE0(/1) 221 : IF ( NTURE0.GT.0 ) THEN 222 : LTMP = .TRUE. 223 : ELSE 224 : LTMP = .FALSE. 225 : TMP12 = 0.0D0 226 : TMP = 0.0D0 227 : TMP32 = 0.0D0 228 : DTMP12 = 0.0D0 229 : DTMP = 0.0D0 230 : dTMPdt = 0.0D0 231 : ENDIF 232 : C 233 : NPAREC=PAREX0(/1) 234 : nomid=LNOMID(14) 235 : IF (nomid.NE.0) THEN 236 : SEGACT,nomid 237 : nparmo=lesobl(/2) 238 : IF (nparmo.EQ.1) THEN 239 : IF (lesobl(1).EQ.'T ') THEN 240 : nparmo = 0 241 : ENDIF 242 : ENDIF 243 : SEGDES,nomid 244 : ELSE 245 : nparmo = 0 246 : ENDIF 247 : IF (nparmo.GT.0) THEN 248 : LPRD=.TRUE. 249 : ELSE 250 : LPRD=.FALSE. 251 : PRD12(1) = 0.0D0 252 : PRD(1) = 0.0D0 253 : PRD32(1) = 0.0D0 254 : DPRD12(1) = 0.0D0 255 : DPRD(1) = 0.0D0 256 : dPRDdt(1) = 0.0D0 257 : ENDIF 258 : C 259 : RETURN 260 : END 261 : 262 : 263 :
© Cast3M 2003 - All rights reserved.
Disclaimer