tconve
C TCONVE SOURCE CB215821 24/04/12 21:17:19 11897 C======================================================================= C= T C O N V E = C= ----------- = C= = C= Fonction : = C= ---------- = C= Calcul de la matrice de CONDUCTIVITE de sous-type CONVECTION = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= IPMODE (E) Segment IMODEL (modele elementaire) (ACTIF) = C= IPCHEL (E) Segment MCHELM de CARACTERISTIQUES (?) = C= ISUPMA (E) Support du champ de caracteristiques materiau = C= IPRIGI (E/S) Segment MRIGID CONVECTION (ACTIF) = C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMCHAML -INC SMCOORD -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 PARAMETER ( NINF=3 ) DIMENSION INFOS(NINF) CHARACTER*(8) CMATE CHARACTER*(LCONMO) CONM CHARACTER*16 PEAU C= LEFCON Liste des numeros d'elements finis supportant la CONVECTION C= NEFCON Longueur de cette liste = C= LEFCOQ Liste des numeros d'elements finis COQUEs C= NEFCOQ Longueur de cette liste = PARAMETER ( NEFCON = 13 , NEFCOQ=5 ) DIMENSION LEFCON(NEFCON), LEFCOQ(NEFCOQ) C ============ C Elements SEG2 SEG3 TRI3 TRI6 QUA4 QUA8 RAC2 RAC3 LIA3 LIA6 C CONVECTION LIA4 LIA8 POI1 DATA LEFCON / 2, 3, 4, 6, 8, 10, 12, 13, 18, 19, & 20, 21, 1 / C ============ C Elements COQUEs COQ2 COQ3 COQ6 COQ4 COQ8 DATA LEFCOQ / 44, 27, 56, 49, 41 / C 1 - INITIALISATIONS ET VERIFICATIONS C ====================================== C 1.0 - Matrice de CONDUCTIVITE C === MRIGID = IPRIGI c* SEGACT,MRIGID NRIGE0 = IRIGEL(/2) C 1.1 - Recuperation du sous-modele et de la zone elementaire associee C === IMODEL=IPMODE c* SEGACT,IMODEL c CMATE = CMATEE MATE = IMATEE c CONM = CONMOD NEF = NEFMOD c Element fini de type COQUE ? IF ((IDIM.EQ.1).AND.(NEF.EQ.2)) NLG = 1 C ERREUR : Element fini non implemente IF (ICON.EQ.0) THEN RETURN ENDIF c IPT1 = IMAMOD SEGACT,IPT1 NBNOE1 = IPT1.NUM(/1) NBELE1 = IPT1.NUM(/2) IPINTE = 0 IVAMAT = 0 MOMATE = 0 MOTYPE = 0 MMAT1 = 0 C 1.2 - Remplissage du tableau INFOS C === IRET = 1 IF (IRET.EQ.0) GOTO 9990 C 1.3 - Recuperation d'informations sur l'element fini C === IF(NEF .NE. 45)THEN IF (IERR.NE.0) GOTO 9990 ENDIF C 1.4 - Recuperation des caracteristiques materielles (obligatoires) C === nbrobl = 1 nbrfac = 0 SEGINI,nomid lesobl(1) = 'H ' NMATO = nbrobl NMATF = nbrfac NMATT = NMATO + NMATF MOMATE = nomid C NBTYPE = 1 SEGINI,notype TYPE(1) = 'REAL*8' MOTYPE = notype C 1.5 - Definition du descripteur IDESCR C === IF (ICOQ .NE. 0) THEN PEAU = MATMOD(3) ElSE PEAU = ' ' ENDIF IF (IERR .NE. 0) RETURN descr = IDESCR SEGACT,descr NLIGRP = LISINC(/2) NLIGRD = LISDUA(/2) SEGDES,descr C 1.8 - Partitionnement si necessaire de la matrice de conductivite C determinant ainsi le nombre d'objets elementaires de MRIGID C === LRE = NLIGRD 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,*) ' tconve : nblprt nblmax = ',nblprt,nblmax,nbele1 C 2 - Ajout de la matrice de CONVECTION a la matrice globale C ========================================================== NRIGEL = NRIGE0 + NBLPRT SEGADJ,MRIGID meleme = IPT1 nbnn = NBNOE1 nbelem = NBELE1 nbsous = 0 nbref = 0 C 3 - 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 ENDIF ipmail = meleme C Initialisation de la matrice de rigidite elementaire (xmatri) NELRIG = nbelem SEGINI,xmatri ipmatr = xmatri IF (IERR.NE.0) GOTO 9991 IF (ISUPMA.EQ.1) THEN IF (IERR.NE.0) THEN ISUPMA = 0 GOTO 9991 ENDIF ENDIF C- Calcul de la matrice elementaire pour la paritition elementaire et C Remplissage de la matrice globale (IPRIGI) IF(NEF .EQ. 45)THEN C Elements POI1 sans integration ELSE C Elements a integration NUMERIQUE IF(IERR.NE.0)RETURN ENDIF 9991 CONTINUE IF (ISUPMA.EQ.1 .OR. NBLPRT.NE.1) THEN ELSE ENDIF IF (IERR.NE.0) GOTO 9990 xmatri = ipmatr SEGDES,xmatri jrige = NRIGE0 + irige COERIG(jrige) = 1. IRIGEL(1,jrige) = ipmail IRIGEL(2,jrige) = 0 IRIGEL(3,jrige) = IDESCR IRIGEL(4,jrige) = ipmatr IRIGEL(5,jrige) = NIFOUR IRIGEL(6,jrige) = 0 IRIGEL(7,jrige) = 0 IRIGEL(8,jrige) = 0 ENDDO IPRIGI = MRIGID C MENAGE : desactivation/destruction de segments C ============================================== 9990 CONTINUE IF (MOMATE.NE.0) THEN nomid = MOMATE SEGSUP,nomid ENDIF IF (MOTYPE.NE.0) THEN notype = MOTYPE SEGSUP,notype ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales