thcapa1
C THCAPA1 SOURCE CB215821 24/04/12 21:17:20 11897 C======================================================================= C= T H C A P A 1 = C= ------------- = C= (CAPA1 dans le cas de la thermique) = C= Fonction : = C= ---------- = C= Calcul de la matrice de CAPACITE en couplage THERMOHYDRIQUE = C= (type RIGIDITE) = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= IPMODE (E) Segment IMODEL pour un modele elementaire (ACTIF) = C= IPCHEL (E) Segment MCHELM de CARACTERISTIQUES (?) = C= ISUPCA (E) Support du champ de CARACTERISTIQUES = C= IPRIGI (E/S) Segment MRIGID : CAPACITE (ACTIF) = C= = C= Zakaria HABIBI le 30 juin 2008. = C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMINTE -INC SMMODEL -INC SMRIGID INTEGER OOOVAL SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS),NSOF(NS), IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT CHARACTER*8 CMATE CHARACTER*(LCONMO) CONM PARAMETER ( NINF=3 ) DIMENSION INFOS(NINF) C= LEFMAS Liste des numeros d'elements finis MASSIFs supportant la = C la formulation thermohydrique = C= NEFMAS Longueur de cette liste = PARAMETER ( NEFMAS = 14 ) DIMENSION LEFMAS(NEFMAS) C ========== C Elements TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10 C MASSIFs PYR5 PY13 T1D2 T1D3 C ========== DATA LEFMAS / 4, 6, 8, 10, 14, 15, 16, 17, 23, 24, & 25, 26, 191, 192 / IPINTE = 0 IPINT1 = 0 MOMATE = 0 MOTYPE = 0 C- Matrice de capacite MRIGID = IPRIGI c* SEGACT,MRIGID NRIGE0 = IRIGEL(/2) C- Recuperation du sous-modele et de la zone elementaire associee IMODEL = IPMODE c* SEGACT,IMODEL NEF = NEFMOD C Test sur l'element fini IMAS = 0 C ERREUR : Element fini non implemente actuellement IF (NEF.EQ.22 .OR. IMAS.EQ.0) THEN GOTO 9991 ENDIF C C- Recuperation d'informations sur le maillage elementaire IPT1 = IMAMOD SEGACT,IPT1 NBNOE1 = IPT1.NUM(/1) NBELE1 = IPT1.NUM(/2) * C- Quelques informations sur le modele CONM = CONMOD CMATE = CMATEE MATE = IMATEE IRET = 1 IF (IRET.EQ.0) GOTO 9990 C- Recuperation d'informations sur l'element fini IF (IERR.NE.0) GOTO 9990 MINTE = IPINTE SEGACT,MINTE IF (MATE.EQ.2 .OR. MATE.EQ.3) THEN IF (IOK.EQ.0) GOTO 9990 MINTE1 = IPINT1 SEGACT,MINTE1 ENDIF C- Recuperation des caracteristiques materielles nomid = LNOMID(6) SEGACT,nomid NMATO = lesobl(/2) NMATF = lesfac(/2) NMATT = NMATO + NMATF MOMATE = nomid nbtype = 1 SEGINI,notype TYPE(1) = 'REAL*8' MOTYPE = notype C- Definition du descripteur IDESCR IDESCR = 0 descr = IDESCR SEGACT,descr NLIGRD = lisdua(/2) NLIGRP = lisinc(/2) SEGDES,descr LRE = NLIGRD C- Partionnement si necessaire de la matrice thermohydrique C- determinant ainsi le nombre d'objets elementaires de MRIGID LTRK = oooval(1,4) IF (LTRK.EQ.0) LTRK = oooval(1,1) LTRK=MAX(LTRK,2**24) * Ajout a la taille en mots de la matrice des infos du segment LSEG = LRE*LRE*NBELE1 + 16 NBLPRT = (LSEG-1)/LTRK + 1 NBLMAX = (NBELE1-1)/NBLPRT + 1 NBLPRT = (NBELE1-1)/NBLMAX + 1 * write(ioimp,*) ' thcond1 : nblprt nblmax = ',nblprt,nblmax,nbele1 C Ajout de la matrice de CAPACITE THERMOHYDRIQUE a la matrice globale C =================================================================== NRIGEL = NRIGE0 + NBLPRT SEGADJ,MRIGID descr = IDESCR meleme = IPT1 nbnn = NBNOE1 nbelem = NBELE1 nbsous = 0 nbref = 0 C Boucle sur les PARTITIONS elementaires de la matrice C======================================================= DO irige = 1, NBLPRT IF (NBLPRT.GT.1) THEN C Partitionnement du maillage support de la matrice elementaire SEGACT,IPT1 ielem = (irige-1)*NBLMAX nbelem = MIN(NBLMAX,NBELE1-ielem) * write(ioimp,*) ' creation segment ',nbnn,nbelem SEGINI,meleme itypel = IPT1.itypel DO ielt = 1, nbelem jelt = ielt + ielem DO inoe = 1, nbnn num(inoe,ielt) = IPT1.NUM(inoe,jelt) ENDDO icolor(ielt) = IPT1.ICOLOR(jelt) ENDDO C Recopie du descripteur des1 = IDESCR SEGINI,descr=des1 SEGDES,descr ENDIF ipmail = meleme ipdesc = descr C Initialisation de la matrice de rigidite elementaire (xmatri) NELRIG = nbelem SEGINI,xmatri ipmatr = xmatri IVAMAT = 0 IF (IERR.NE.0) GOTO 9995 IF (ISUPCA.EQ.1) THEN IF (IERR.NE.0) THEN ISUPCA = 0 GOTO 9995 ENDIF ENDIF C- Elements MASSIFs a integration NUMERIQUE IF (IMAS.NE.0) THEN & ipmatr,LRE) C- Element fini non implemente ELSE ENDIF C- Un peu de menage 9995 CONTINUE IF (ISUPCA.EQ.1 .OR. NBLPRT.GT.1) THEN ELSE ENDIF IF (IERR.NE.0) GOTO 9990 xmatri = ipmatr IF (NBLPRT.GT.1) THEN meleme = ipmail SEGDES,meleme ENDIF C- Remplissage de la matrice de CAPACITE jrige = NRIGE0 + irige COERIG(jrige) = 1. IRIGEL(1,jrige) = ipmail IRIGEL(2,jrige) = 0 IRIGEL(3,jrige) = ipdesc IRIGEL(4,jrige) = ipmatr IRIGEL(5,jrige) = NIFOUR IRIGEL(6,jrige) = 0 IRIGEL(7,jrige) = 2 IRIGEL(8,jrige) = 0 xmatri.symre=2 SEGDES,xmatri ENDDO IPRIGI = MRIGID C FIN DU TRAITEMENT : DESACTIVATION/DESTRUCTION DE SEGMENTS C ========================================================= 9990 CONTINUE SEGDES,IPT1 IF (IPINTE.GT.0) THEN MINTE = IPINTE SEGDES,MINTE ENDIF IF (IPINT1.GT.0) THEN MINTE = IPINT1 SEGDES,MINTE ENDIF IF (MOMATE.NE.0) THEN nomid = MOMATE SEGDES,nomid ENDIF IF (MOTYPE.NE.0) THEN notype = MOTYPE SEGSUP,notype ENDIF 9991 CONTINUE c* SEGDES,IMODEL c* SEGDES,MRIGID RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales