wcree0
C WCREE0 SOURCE CB215821 24/04/12 21:17:28 11897 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C----------------------------------------------------------------------- C C DESCRIPTION FONCTIONNELLE : C ------------------------- C C Preparation de donnees pour l'integration d'une loi VISCO_EXTERNE C C WCREE0 prepare les donnees independantes de l'element et du point C d'integration ; de ce fait, WCREE0 est appelee par COML6 avant le C demarrage des boucles imbriquees sur les elements de la sous-zone C et sur les points de Gauss de l'element. C C INTERFACE : C --------- C C IN : iqmod : pointeur actif sur le modele elementaire C IN : wrk52 : pointeur actif sur le segment de travail WRK52 C de l'objet DECHE C IN : wcreep : pointeur actif sur le segment de travail C WCREEP contenant les donnees a preparer C C C Les operations effectuees par WCREE0 consistent a initialiser C certains elements du segment de travail WCREEP. C Sont concernees les donnees suivantes : C C Entrees/sorties constantes de la routine CREEP : C ---------------------------------------------- C C SERD : REAL*8, puissance volumique de deformation C inelastique (produit contracte du tenseur des C contraintes et du tenseur des vitesses de C deformation inelastique) C Entree/sortie facultative de la routine CREEP, C non exploitee par CAST3M pour l'instant C Initialisation arbitraire C C CMNAMC : CHARACTER*16, identifiant de la loi de C comportement C Entree de la routine CREEP C C LEXIMP : INTEGER, indicateur d'integration par un schema C Entree de la routine CREEP, non active dans le C cas d'une adherence a CAST3M C Initialisation arbitraire C C NSTTVC : INTEGER, nombre de variables internes C supplementaires (en plus des 4 pre-definies) C Entree de la routine CREEP C C LAYERC : INTEGER, numero de couche pour des coques C composites ou des solides multi-couches C KSPTC : INTEGER, numero de section dans la couche C courante C Entrees de la routine CREEP, non actives dans le C cas d'une adherence a CAST3M C Initialisation arbitraire C C Entrees/sorties de la routine CREEP pouvant varier : C -------------------------------------------------- C C TMP12 : REAL*8, temperature a t+tau1/2 C TMP : REAL*8, temperature a t+tau C TMP32 : REAL*8, temperature a t+tau3/2 C DTMP12 : REAL*8, variation de temperature sur tau1/2 C DTMP : REAL*8, variation de temperature sur tau C PRD12 : REAL*8(*), parametres externes a t+tau1/2 C PRD : REAL*8(*), parametres externes a t+tau C PRD32 : REAL*8(*), parametres externes a t+tau3/2 C DPRD12 : REAL*8(*), variations des parametres externes C sur tau1/2 C DPRD : REAL*8(*), variations des parametres externes C sur tau C Entrees de la routine CREEP C Ces entrees ne sont initialisees par WCREE0 que C dans le cas ou elles ne sont pas actives, i.e. C quand aucun champ de temperature ni aucun champ C de parametre externe n'est fourni en entree a C l'operateur COMP (cas d'un modele independant C de la temperature et de tout autre parametre). C C KSTEPC : INTEGER C Entree de la routine CREEP n'ayant pas de sens C dans le cas d'une adherence a CAST3M C Initialisation arbitraire C On autorise la programmation de l'utilisateur a C se servir de KSTEPC comme code retour de CREEP C (voir module CREEP exemple integre au code) C C Variables de travail : C -------------------- C C LTMP : LOGICAL, indicateur de fourniture de C la temperature C LTMP=.TRUE. : les variables TMP* et DTMP* sont C mises a jour au cours du processus d'integration C LTMP=.FALSE. : les variables TMP* et DTMP* sont C initialisees une fois pour toutes par WCREE0 C C LPRD : LOGICAL, indicateur d'existence de parametres C externes du modele C LPRD=.TRUE. : les variables PRD* et DPRD* sont C mises a jour au cours du processus d'integration C LPRD=.FALSE. : les variables PRD* et DPRD* sont C initialisees une fois pour toutes par WCREE0 C C LSTV : LOGICAL, indicateur d'existence de variables C internes supplementaires (i.e. en plus des 4 C pre-definies) C LSTV=.TRUE. : les vecteurs de travail STV* du C segment WCREEP sont mis a jour au cours du C processus d'integration C LSTV=.FALSE. : les vecteurs de travail STV* du C segment WCREEP sont initialises une fois pour C toutes par WCREE0 C C IVIEX : INTEGER, indicateur de materiau 'VISCO_EXTERNE' C 1 : 'GENERAL' C 2 : 'DRUCKER_PRAGER' C 3 : 'COHESION' C 4 : 'CONSOLIDATION' C 5 : 'UTILISATEUR' C On a besoin d'un second indicateur pour les lois C 'VISCO_EXTERNE' car INPLAS=-100-ILOI ou ILOI est C le numero attribue par l'utilisateur C INPLAS permet de ditinguer les lois entre elles C IVIEX permet de "typer" une loi C C NPAREC : INTEGER, nombre de parametres externes de la loi C de comportement C Stockage dans une variable de travail afin de ne C pas "mesurer" un vecteur a chaque mise a jour au C cours du processus d'integration C N'est utile que dans le cas ou le modele depend C effectivement de parametres externes C C dTMPdt : REAL*8, derivee de la temperature par rapport au C temps, constante sur le pas de temps C dPRDdt : REAL*8(*), derivees des parametres externes par C rapport au temps, constantes sur le pas de temps C Ces variables ne servent que dans les cas ou C LTMP=.TRUE. et LPRD=.TRUE. respectivement C La temperature et les parametres extenes sont C supposes varier lineairement sur le pas de temps C C----------------------------------------------------------------------- -INC PPARAM -INC SMMODEL -INC DECHE C SEGMENT WCREEP C Entrees/sorties constantes de la routine CREEP REAL*8 SERD CHARACTER*16 CMNAMC INTEGER LEXIMP, NSTTVC, LAYERC, KSPTC C Entrees/sorties de la routine CREEP pouvant varier REAL*8 STV(NSTV), STV1(NSTV), STVP1(NSTV), & STVP2(NSTV), STV12(NSTV), STVP3(NSTV), & STVP4(NSTV), STV13(NSTV), STVF(NSTV), & TMP12, TMP, TMP32, & DTMP12, DTMP, & PRD12(NPRD), PRD(NPRD), PRD32(NPRD), & DPRD12(NPRD), DPRD(NPRD) INTEGER KSTEPC C Autres indicateurs et variables de travail LOGICAL LTMP, LPRD, LSTV INTEGER IVIEX, NPAREC REAL*8 dTMPdt, dPRDdt(NPRD) ENDSEGMENT C C Arguments de l'interface C C Pointeurs iqmod, wrk52, wcreep C C Variables locales C CHARACTER*16 MOMODL(200) C C---------------------- Debut du code executable ----------------------- C IMODEL = iqmod C C 1 - Entrees/sorties non actives/non exploitees de la routine CREEP C Initialisations arbitraires C SERD = 0.0D0 C LEXIMP = 0 LAYERC = 0 KSPTC = 0 C C 2 - Initialisation de KSTEPC qui pourra servir de code retour C KSTEPC = 1 C C 3 - Numero de loi externe encode dans une chaine de 16 caracteres C Typage de la loi 'VISCO_EXTERNE' C NMAMOD = MATMOD(/2) CMNAMC = MATMOD(NMAMOD) C nparmo = 0 NOBMOD = TYMODE(/2) IVIEX = IVAMOD(nparmo) C C 4 - Nombre de variables internes supplementaires C NSTTVC = VAR0(/1)-4 LSTV = (NSTTVC.GT.0) C C 5 - Existence d'un chargement en temperature C Existence de parametres externes autres que la temperature C NTURE0=TURE0(/1) IF ( NTURE0.GT.0 ) THEN LTMP = .TRUE. ELSE LTMP = .FALSE. TMP12 = 0.0D0 TMP = 0.0D0 TMP32 = 0.0D0 DTMP12 = 0.0D0 DTMP = 0.0D0 dTMPdt = 0.0D0 ENDIF C NPAREC=PAREX0(/1) nomid =LNOMID(14) IF (nomid.NE.0) THEN nparmo=lesobl(/2) C Normalement pas possible (Voir comou2) IF (nparmo.EQ. 1 .AND. lesobl(1).EQ.'T ') nparmo = 0 ELSE nparmo = 0 ENDIF IF (nparmo.GT.0) THEN LPRD=.TRUE. ELSE LPRD=.FALSE. PRD12(1) = 0.0D0 PRD(1) = 0.0D0 PRD32(1) = 0.0D0 DPRD12(1) = 0.0D0 DPRD(1) = 0.0D0 dPRDdt(1) = 0.0D0 ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales