masse1
C MASSE1 SOURCE OF166741 24/10/21 21:15:16 12042 *_______________________________________________________________________ * * appele par masse ( opérateur masse et lump ) * * entrees : * ======== * * modori pointeur sur un mmodel * ipche1 pointeur sur un mchaml de caracteristique * ilump si il s'agit de l'opérateur lump * * sorties : * ========= * * ipmass pointeur sur la masse construite * iret 1 si ok, 0 sinon * *_______________________________________________________________________ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCGEOME -INC CCREEL -INC SMCOORD -INC SMRIGID -INC SMCHAML -INC SMELEME -INC SMINTE -INC SMMODEL INTEGER oooval SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS),NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT segment modsta integer pimoda(nmoda),pistat(nstat) integer ivmoda(nmoda),ivstat(nstat) endsegment CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM PARAMETER (NINF=3) INTEGER INFOS(NINF),nrnlin LOGICAL BDPGE,dcmate,dcmat2 NHRM=NIFOUR IRET = 0 C ACTIVATION DU MODELE C * MODORI = Modele initial complet * IPMODL = Modele "deroule" (uniquement "MECANIQUE", "LIQUIDE" ou "POREUX") IF (IPMODL.EQ.0) RETURN * IPMODL est ACTIF en retour MMODEL = IPMODL NSOUS = mmodel.KMODEL(/1) C C CREATION DE L'OBJET MATRICE DE MASSE C NRIGEL=0 SEGINI,MRIGID IPMASS=MRIGID MTYMAT='MASSE' IFORIG=IFOUR ICHOLE=0 IMGEO1=0 IMGEO2=0 ISUPEQ=0 mchelm = ipche1 n3 = mchelm.infche(/2) c en cas de besoin n1 = 1 SEGINI,mmode1 L1 = 8 SEGINI,mchel1 mchel1.ifoche = mchelm.ifoche n2 = 2 SEGINI,mcham1 mchel1.ichaml(1) = mcham1 * termes croises STATIQUE et/ou MODAL nstat = 100 kstat = 0 nmoda = 100 kmoda = 0 segini modsta nbtype = 1 SEGINI,notype notype.type(1) = 'REAL*8' MOTYR8 = notype C_______________________________________________________________________ C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES SOUS ZONES C_______________________________________________________________________ C isouss=0 DO 500 ISOUS=1,NSOUS C ON RECUPERE LINFORMATION GENERALES C IMODEL = mmodel.KMODEL(ISOUS) IPMAIL = imodel.IMAMOD CONM = imodel.CONMOD C C TRAITEMENT DU MODELE C MELE = imodel.NEFMOD * Cas particulier des relations de conformites : pas de masse IF (MELE.EQ.22) GOTO 500 IF (MELE.EQ.259) GOTO 500 C NATURE DU MATERIAU C CMATE = CMATEE MATE = IMATEE INAT = INATUU dcmate = .false. dcmat2 = .false. DO im = 1,matmod(/2) if (matmod(im).eq.'IMPEDANCE') then dcmate =.true. if (tymode(/2).gt.0)then * detecte impedance seg2 hybride ddl if(tymode(1).eq.'LISTMOTS') dcmat2 = .true. endif endif ENDDO C C CREATION DU TABLEAU INFOS C irtd=1 IF (irtd.EQ.0) GOTO 9996 C_______________________________________________________________________ C C INFORMATION SUR L ELEMENT FINI C_______________________________________________________________________ C IPT1 = IPMAIL NBNOE1 = IPT1.NUM(/1) NBELE1 = IPT1.NUM(/2) mele = nefmod C Cas particulier : POI1/SEG2 et IMPEDANCE IF (dcmate) THEN if (ipt1.itypel.eq.1) mele = 45 if (ipt1.itypel.eq.2) mele = 2 ENDIF npint = MAX(infmod(1),1) isupo=4 if (npint.eq.12345) isupo=1 * integration aux noeuds if (infmod(/1).lt.2+isupo) then write(ioimp,*) 'MASSE1 : INFMOD(/1) <',2+isupo endif IPMINT = INFMOD(2+isupo) IPMIN1 = INFELE(12) MFR = INFELE(13) LRE = INFELE(9) LW = INFELE(7) LHOOK = INFELE(10) NDDL = INFELE(15) IELE = INFELE(14) ICARA = INFELE(5) NLIGRP = INFELE(9) NLIGRD = INFELE(9) MINTE1 = IPMIN1 * write(6,*) 'poigau',(poigau(iou),iou=1,poigau(/1)) * write(6,*) ((shptot(ir,it,1),ir=1,shptot(/1)),it=1,shptot(/2)) MINTE = IPMINT if(mele.ne.260) then NBPGAU = minte.POIGAU(/1) else NBPGAU=5 endif IPPORE=0 IF (MFR.EQ.33) IPPORE = NBNOE1 C- Cas particulier en DEFO PLAN GENE IIPDPG = imodel.IPDPGE NDDLGE = NDPGE IF (BDPGE) THEN IF (IIPDPG.LE.0) THEN GOTO 9995 ENDIF if (maildg.eq.0) then ENDIF ipt2 = MAILDG IPMAIG = ipt2.lisous(isous) meleme = IPMAIG NBNOEG = meleme.num(/1) NBELEG = meleme.num(/2) C* Cas particulier (pourquoi ?) IF (IFOUR.EQ.-3) NDDLGE = 1 ELSE IPMAIG = IPMAIL ENDIF C ---------------------------------------------------------* C INITIALISATION DU SEGMENT DESCR, SEGMENT DESCRIPTEUR DES * C DES INCONNUES RELATIVES A LA MATRICE DE RIGIDITE * C ---------------------------------------------------------* MODEPL = imodel.lnomid(1) IF (MODEPL.EQ.0) THEN write(ioimp,*) 'MASSE1 : MODEPL = lnomid(1) non defini' write(ioimp,*) ' ',IMODEL,FORMOD(1),MFR ENDIF nomid = MODEPL NDEPL = nomid.lesobl(/2) c* ndum = nomid.lesfac(/2) MOFORC = imodel.lnomid(2) if (MOFORC.eq.0) then write(ioimp,*) 'MASSE1 : MODEPL = lnomid(2) non defini' write(ioimp,*) ' ',IMODEL,FORMOD(1),MFR endif nomid = MOFORC NFORC = nomid.lesobl(/2) c* ndum = nomid.lesfac(/2) IF (NDEPL.EQ.0 .OR. NFORC.EQ.0 .OR. NDEPL.NE.NFORC) THEN moterr = 'pas d inconnue duale ou primale ' interr(1) = imodel moterr(1:16) = conmod moterr(17:24) = ' ' return ENDIF C REMPLISSAGE DU SEGMENT DESCRIPTEUR C SEGINI,DESCR NCOMP = NDEPL NBNN = NBNOE1 NBNNS = NBNOE1 IF (MFR.EQ.33) NCOMP = NDEPL-1 IF (BDPGE) THEN NCOMP = NDEPL-NDPGE NBNN = NBNOE1 + 1 ENDIF IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS=NBNN/2 IDDL=1 DO INOEUD=1,NBNNS DO ICOMP=1,NCOMP NOMID=MODEPL LISINC(IDDL)=LESOBL(ICOMP) if (dcmat2) then if (inoeud.eq.2) then LISINC(IDDL)=LESFAC(ICOMP) endif endif NOMID=MOFORC LISDUA(IDDL)=LESOBL(ICOMP) if (dcmat2) then if (inoeud.eq.2) then LISDUA(IDDL)=LESFAC(ICOMP) endif endif NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO ENDDO * cas de la deformation plane generalisee IF (BDPGE) THEN DO ICOMP=(NDPGE-1),0,-1 NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL-ICOMP) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NFORC-ICOMP) NOELEP(IDDL)=NBNN NOELED(IDDL)=NBNN IDDL=IDDL+1 ENDDO ENDIF C C CAS DES MILIEUX POREUX C IF (MFR.EQ.33) THEN DO INOEUD=1,NBSOM(IELE) NOMID=MODEPL LISINC(IDDL)=LESOBL(NDEPL) NOMID=MOFORC LISDUA(IDDL)=LESOBL(NDEPL) NOELEP(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) NOELED(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1) IDDL=IDDL+1 ENDDO ENDIF * * cas des element raccord * IF (MFR.EQ.19.OR.MFR.EQ.21) THEN DO INOEUD=NBNNS+1,NBNN DO ICOMP=1,NDEPL NOMID=MODPL LISINC(IDDL)=LESOBL(ICOMP) NOMID=MOFRC LISDUA(IDDL)=LESOBL(ICOMP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO ENDDO NOMID=MODPL SEGSUP,NOMID NOMID=MOFRC SEGSUP,NOMID ENDIF SEGDES DESCR IPDSCR=DESCR C_______________________________________________________________________ C C TRAITEMENT DES CHAMP MATERIAUX C_______________________________________________________________________ C NBROBL=0 NBRFAC=0 LHOTRA=0 NOMID = 0 NOTYPE = MOTYR8 * * JOINT UNIDIMENSIONNEL JOI1 * IF (MFR.EQ.75) THEN IF (IDIM.EQ.3) THEN NBROBL=10 SEGINI NOMID LESOBL(1)='V1X' LESOBL(2)='V1Y' LESOBL(3)='V1Z' LESOBL(4)='V2X' LESOBL(5)='V2Y' LESOBL(6)='V2Z' LESOBL(7)='MASS' LESOBL(8)='JX' LESOBL(9)='JY' LESOBL(10)='JZ' ELSE IF (IDIM.EQ.2) THEN NBROBL=4 SEGINI NOMID LESOBL(1)='V1X' LESOBL(2)='V1Y' LESOBL(3)='MASS' LESOBL(4)='JZ' ENDIF * * rho dans les cas,massif,coq3,poutre,tuyau,coq8,coq2,barre,jot3,joi4,joi2,xfem * ELSE IF (MFR.EQ.1.OR.MFR.EQ.7.OR.MFR.EQ.13.OR.MFR.EQ.3. 1 OR.MFR.EQ.27.OR.MFR.EQ.9.OR.MFR.EQ.35.OR.MFR.EQ.31. 2 OR.MFR.EQ.49.OR.MFR.EQ.53.OR.MFR.EQ.63.OR.MFR.EQ.5) THEN * IF (CMATE.NE.'SECTION') THEN NBROBL=1 SEGINI NOMID LESOBL(1)='RHO ' ELSE LHOTRA=LHOOK NBROBL=2 SEGINI NOMID LESOBL(1)='MODS' LESOBL(2)='MATS' NBTYPE=2 SEGINI NOTYPE TYPE(1)='POINTEURMMODEL' TYPE(2)='POINTEURMCHAML' ENDIF * * rhoref rlcar dans le cas des elements de raccord et surface libre * ELSE IF (MFR.EQ.19.OR.MFR.EQ.21.OR.MFR.EQ.23) THEN NBROBL=2 SEGINI NOMID LESOBL(1)='RORF' LESOBL(2)='LCAR' * * caracteristiques pour les elements liquides * ELSE IF (MFR.EQ.11) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='RHO ' LESOBL(2)='CSON' LESOBL(3)='RORF' LESOBL(4)='CREF' LESOBL(5)='LCAR' * * caracteristiques pour les elements homogeneises * ELSE IF (MFR.EQ.37) THEN IF (MELE.EQ.157) THEN NBROBL=15 SEGINI NOMID LESOBL( 1)='B11 ' LESOBL( 2)='B22 ' LESOBL( 3)='B12 ' LESOBL( 4)='ROF ' LESOBL( 5)='ROS ' LESOBL( 6)='CSON' LESOBL( 7)='RORF' LESOBL( 8)='CREF' LESOBL( 9)='LCAR' LESOBL(10)='E111' LESOBL(11)='E112' LESOBL(12)='E121' LESOBL(13)='E122' LESOBL(14)='E221' LESOBL(15)='E222' ELSE NBROBL=9 SEGINI NOMID LESOBL(1)='B11 ' LESOBL(2)='B22 ' LESOBL(3)='B12 ' LESOBL(4)='ROF ' LESOBL(5)='ROS ' LESOBL(6)='CSON' LESOBL(7)='RORF' LESOBL(8)='CREF' LESOBL(9)='LCAR' ENDIF * * caracteristiques pour l'element acoustique pure * ELSE IF (MFR.EQ.41) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='RHO ' LESOBL(2)='CSON' LESOBL(3)='RORF' LESOBL(4)='CREF' LESOBL(5)='LCAR' * * caracteristiques pour l'element raccord liquide tuyau * ELSE IF (MFR.EQ.43) THEN NBROBL=3 SEGINI NOMID LESOBL(1)='RHO ' LESOBL(3)='RORF' LESOBL(2)='LCAR' * * caracteristiques pour les joints generalises * ELSE IF (MFR.EQ.55) THEN NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='RHO ' LESFAC(1)='EPAI' * * poi1 -- MODAL * ELSE IF (CMATE.EQ.'MODAL') THEN NBROBL=3 SEGINI NOMID LESOBL(1)='FREQ' LESOBL(2)='MASS' LESOBL(3)='DEFO' NBTYPE=3 SEGINI NOTYPE TYPE(1)='REAL*8' TYPE(2)='REAL*8' TYPE(3)='POINTEURCHPOINT' * * poi1 -- STATIQUE ELSE IF (CMATE.EQ.'STATIQUE') THEN NBROBL=3 SEGINI NOMID LESOBL(1)='DEFO' LESOBL(2)='RIDE' LESOBL(3)='MADE' NBTYPE=1 SEGINI NOTYPE TYPE(1)='POINTEURCHPOINT' ELSE IF (CMATE.EQ.'NLIN') THEN NBROBL=1 SEGINI NOMID LESOBL(1)='FREQ' ENDIF DO imat = 1 , matmod(/2) IF (matmod(imat).eq.'IMPEDANCE') THEN NBROBL=0 NBRFAC=2 SEGINI NOMID LESFAC(1)='MASS' LESFAC(2)='INER' NOTYPE = MOTYR8 ENDIF ENDDO NMATR=NBROBL NMATF=NBRFAC NMATT=NMATR+NMATF MOMATR = NOMID MOTYMA = NOTYPE C____________________________________________________________________ C C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES C____________________________________________________________________ NBROBL=0 NBRFAC=0 NOMID = 0 C* Sauf cas particuier, composantes de type REAL*8 NOTYPE = MOTYR8 * * epaisseur dans le cas massif en contraintes planes * IF ((MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.63.OR.MELE.EQ.35.OR. & MELE.EQ.36.OR.MELE.EQ.63).AND.IFOUR.EQ.-2)THEN NBRFAC=1 SEGINI NOMID LESFAC(1)='DIM3' * * epaisseur et excentrement dans le cas des coques * ELSEIF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN NBROBL=1 IF (MFR.EQ.3.AND.IFOUR.EQ.-2) THEN NBRFAC=2 ELSE NBRFAC=1 ENDIF SEGINI NOMID LESOBL(1)='EPAI' LESFAC(1)='EXCE' IF (MFR.EQ.3.AND.IFOUR.EQ.-2) LESFAC(2)='DIM3' * * section pour les barres et les cerces * ELSE IF (MFR.EQ.27) THEN IF (.NOT.dcmate) THEN NBROBL=1 SEGINI NOMID LESOBL(1)='SECT' ENDIF * * section, excentrements et orientation pour les barres excentrees * ELSE IF (MFR.EQ.49) THEN NBROBL=6 SEGINI NOMID LESOBL(1)='SECT' LESOBL(2)='EXCZ' LESOBL(3)='EXCY' LESOBL(4)='VX ' LESOBL(5)='VY ' LESOBL(6)='VZ ' * * caracteristiques pour les poutres * ELSE IF (MFR.EQ.7 ) THEN if (dcmate) then NBRFAC=3 SEGINI NOMID LESFAC(1)='VX' LESFAC(2)='VY' LESFAC(3)='VZ' else IF (CMATE.EQ.'SECTION') THEN NBRFAC=3 SEGINI NOMID LESFAC(1)='VX' LESFAC(2)='VY' LESFAC(3)='VZ' * CAS 2D ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN NBRFAC=1 NBROBL=2 SEGINI NOMID LESOBL(1)= 'SECT' LESOBL(2)= 'INRZ' LESFAC(1)= 'SECY' ELSE NBROBL=4 NBRFAC=5 SEGINI NOMID LESOBL(1)='TORS' LESOBL(2)='INRY' LESOBL(3)='INRZ' LESOBL(4)='SECT' LESFAC(1)='SECY' LESFAC(2)='SECZ' LESFAC(3)='VX' LESFAC(4)='VY' LESFAC(5)='VZ' ENDIF endif * * caracteristiques pour les tuyaux * ELSE IF (MFR.EQ.13) THEN NBROBL=2 NBRFAC=5 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='RAYO' LESFAC(1)='RACO' LESFAC(2)='CISA' LESFAC(3)='VX' LESFAC(4)='VY' LESFAC(5)='VZ' * * caracteristique pour les elements de raccord * ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN IF (IDIM.EQ.2)THEN NBROBL=2 SEGINI NOMID LESOBL(1)='VX ' LESOBL(2)='VY ' ELSEIF(IDIM.EQ.3)THEN NBROBL=3 SEGINI NOMID LESOBL(1)='VX ' LESOBL(2)='VY ' LESOBL(3)='VZ ' ENDIF * * caracteristiques des elements homogeneises * ELSE IF (MFR.EQ.37) THEN IF (IFOUR.EQ.1.OR.IFOUR.EQ.0.OR.IFOUR.EQ.2) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' LESOBL(4)='SECT' LESOBL(5)='INRZ ' ELSE NBROBL=5 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' LESOBL(4)='NOF1' LESOBL(5)='NOF2' ENDIF * * caracteristiques de l'element tuyau acoustique * ELSE IF (MFR.EQ.41) THEN NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='RAYO' LESFAC(1)='RACO' * * caracteristiques de l'element de raccord liquide tuyau * ELSE IF (MFR.EQ.43) THEN NBROBL=1 NBRFAC=4 SEGINI NOMID LESOBL(1)='RAYO' LESFAC(1)='RACO' LESFAC(2)='VX' LESFAC(3)='VY' LESFAC(4)='VZ' ENDIF NCARA = NBROBL NCARF = NBRFAC NCARR = NCARA+NCARF MOCARA = NOMID MOTYCA = NOTYPE * Preparation du PARTITIONNEMENT du segment xMATRI 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 NRIGE0 = mrigid.IRIGEL(/2) NRIGEL = IRIGEL(/2) + NBLPRT if (cmate.eq.'NLIN') then if (ilump.eq.0) nrnlin = 2 if (ilump.eq.2) nrnlin = 1 nrigel = nrige0 + nrnlin*nblprt endif SEGADJ,MRIGID IPMASS=MRIGID MELEME = IPT1 ipt3 = IPMAIG nbnn = NBNOE1 nbelem = NBELE1 nbsous = 0 nbref = 0 * Boucle (5000) de PARTITIONNEMENT du segment xMATRI DO 5000 IPRT = 1,NBLPRT isouss=isouss+1 IF (NBLPRT.GT.1) THEN JPRT=(IPRT-1)*NBLMAX NBNN = NBNOE1 NBELEM = MIN(NBLMAX,NBELE1-JPRT) SEGINI,MELEME ITYPEL=IPT1.ITYPEL DO ielt = 1, NBELEM jelt = ielt + JPRT DO inoe = 1, NBNN NUM(inoe,ielt)=IPT1.NUM(inoe,jelt) ENDDO ICOLOR(ielt) = IPT1.ICOLOR(jelt) ENDDO IF (BDPGE) THEN ipt2 = IPMAIG nbnn = NBNOEG cc nbelem = MIN(NBLMAX,NBELEG-JPRT) SEGINI,ipt3 ipt3.itypel = 28 DO ielt = 1, nbelem jelt = ielt + JPRT DO inoe = 1, nbnn ipt3.num(inoe,ielt) = IPT2.NUM(inoe,jelt) ENDDO ipt3.icolor(ielt) = IPT2.ICOLOR(jelt) ENDDO SEGDES,IPT3 ELSE IPT3 = meleme ENDIF ENDIF nbnn = NBNOE1 IPMAIL = MELEME ipdscr = DESCR ipmadg = ipt3 C ------------------------------------------------------------* C INITIALISATION DU SEGMENT xMATRI, CHAPEAU SUR LES SEGMENTS * C CONTENANT LES MATRICES DE RIGIDITE ELEMENTAIRES * C ------------------------------------------------------------* xMATRI = 0 C* cas XFEM : DESCR et xMATRI crees par massxr.eso C* Cas particulier des elements XFEM en cas de partition : C* Il faut aussi partitionner le modele (nomme imoxfem) IF (MFR.EQ.63) THEN IF (nblprt.GT.1) THEN imoxfem = 0 IF (IERR.NE.0) RETURN ELSE imoxfem = IMODEL ENDIF GOTO 1999 ENDIF if (cmate.eq.'NLIN') goto 1999 C NBELEM: NB D'ELEMENTS DANS LA SOUS ZONE NLIGRP=LRE NLIGRD=LRE NELRIG=NBELEM SEGINI,xMATRI IPMATR=xMATRI C------------------------------------------------------* C TRAITEMENT DU CHAPEAU DES RIGIDITES, SEGMENT MRIGID * C------------------------------------------------------* COERIG(isouss)=1.D0 IRIGEL(1,isouss)=IPMADG IRIGEL(2,isouss)=0 IRIGEL(3,isouss)=IPDSCR IRIGEL(4,isouss)=IPMATR IRIGEL(5,isouss)=NHRM IRIGEL(6,isouss)=0 IRIGEL(7,isouss)=0 IRIGEL(8,isouss)=0 xMATRI.SYMRE = 0 1999 CONTINUE IVAMAT = 0 IF (MOMATR.NE.0) THEN * verification du support des composantes recherchees * IF (ISUP.GT.1)THEN GO TO 9990 ENDIF IF (IERR.NE.0) GOTO 9990 IF (ISUP.EQ.1)THEN IF(IERR.NE.0)THEN ISUP=0 GOTO 9990 ENDIF ENDIF if (cmate.eq.'STATIQUE'.or.cmate.eq.'MODAL') then mptval = ivamat if (cmate.eq.'STATIQUE') then kstat = kstat + 1 if (kstat.eq.nstat) then nstat = nstat + 100 segadj modsta endif ivstat(kstat) = ivamat pistat(kstat) = imodel endif if (cmate.eq.'MODAL') then kmoda = kmoda + 1 if (kmoda.eq.nmoda) then nmoda = nmoda + 100 segadj modsta endif ivmoda(kmoda) = ivamat pimoda(kmoda) = imodel endif endif ENDIF C____________________________________________________________________ C C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES C____________________________________________________________________ IVACAR = 0 IF (MOCARA.NE.0) THEN * * verification du support des composantes recherchees * IF (ISUP.GT.1)THEN GO TO 9990 ENDIF * IF (IERR.NE.0) GOTO 9990 IF (ISUP.EQ.1)THEN IF(IERR.NE.0)THEN ISUP=0 GOTO 9990 ENDIF ENDIF ENDIF C C NAVIER_STOKES NLIN if (cmate.eq.'NLIN') then segact mmode1*mod mmode1.kmodel(1) = imodel mchel1.conche(1) = conm mchel1.imache(1) = ipmail mptval = ivamat nomid = momatr * do jj = 1,n2 mcham1.nomche(1) = lesobl(1) mcham1.typche(1) = tyval(1) mcham1.ielval(1) = ival(1) * enddo ipmons = mmode1 ipchns = mchel1 if (ilump.eq.2) then call go2nli(ipmons,ipchns,iprins,7) else call go2nli(ipmons,ipchns,iprins,2) endif if (ierr.ne.0) return RI3 = iprins segact ri3 if (ri3.coerig(/1).ne.nrnlin) then write(6,*) 'mari3',ri3.coerig(/1),nrnlin return endif isouss = isouss - 1 do kige = 1,nrnlin ipdesc = ri3.IRIGEL(3,kige) ipmatr = ri3.IRIGEL(4,kige) isymm = ri3.irigel(7,kige) isouss = isouss + 1 jrige = isouss COERIG(jrige) = ri3.coerig(kige) 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) = ri3.irigel(7,kige) IRIGEL(8,jrige) = 0 enddo endif C_______________________________________________________________________ C C NUMERO DES ETIQUETTES : C ETIQUETTES DE 1 A 98 POUR TRAITEMENT SPECIFIQUE A L ELEMENT C LES ELEMENTS SONT GROUPES COMME SUIT : C - MASSIF,LIQUIDE 'SURFACE LIBRE' ----------------------> MASSE2 C - COQ3/POUTRE,DKT,COQ4,COQ8,COQ2,DST ------------------> MASSE3 C ET POUTRE DE TIMOSCHENKO C - RACCORDS LIQUIDE/MASSIFS,RACCORDS LIQUIDE/COQUES, C BARRE,HOMOGENEISE,JOINTS --------------------------> MASSE4 C_______________________________________________________________________ IF (MELE.LE.100) * CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8 QUA9 & GOTO ( 99, 27, 99, 4, 99, 4, 99, 4, 99, 4, 99 * RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6 LIA8 MULT & , 12, 99, 4, 4, 4, 4, 12, 12, 99, 99, 99 * TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP FAC3 FAC4 FAC6 & , 4, 4, 4, 4, 27, 27, 27, 30, 99, 99, 99 * FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5 COQ8 TUYA TUFI COQ2 & , 99, 4, 4, 4, 4, 4, 4, 27, 27, 43, 27 * POI1 BARR RACO LSU2 COQ4 LISM COF3 RES2 LSU3 LSU4 LICO & , 12, 12, 12, 4, 27, 99, 99, 99, 4, 4, 12 * COQ6 CVS2 CVS3 CVT3 CVT6 CVQ4 CVQ8 THP5 TH13 THP6 TH15 & , 27, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * THC8 TH20 ICT3 ICQ4 ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10 & , 99, 99, 4, 4, 4, 4, 4, 4, 4, 4, 4 * IC15 TRIP QUAP CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4 & , 4, 99, 99, 99, 99, 99, 27, 12, 99, 12, 12 * JOI6 JOI8 LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3 & , 99, 99, 99, 12, 27, 12, 12, 27, 27, 12, 99 * HYQ4 & , 99),MELE IF (MELE.LE.200) * HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8 & GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12 PO13 & , 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 * PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3 QUF4 CUF8 & , 4, 12, 12, 50, 12, 12, 99, 99, 99, 99, 99 * PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18 MT10 MP14 SEF3 & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6 TR21 QU36 C216 P126 & , 510, 510, 99, 99, 99, 99, 99, 99, 99, 99, 99 * TE56 PY91 TRH6 ???? ???? ???? ???? ???? ???? ???? ???? & , 99, 99, 12, 51, 51, 51, 51, 51, 51, 51, 51 * ???? ???? JCT3 JCI4 JGI2 JGT3 JGI4 ???? ???? ???? ???? & , 51, 51, 12, 12, 12, 12, 12, 51, 51, 51, 51 * ???? ???? ???? ???? ???? ???? E183 E184 ???? ???? ???? & , 51, 51, 51, 51, 51, 51, 4, 4, 51, 51, 51 * ???? ???? ???? ???? ???? M1D2 M1D3 ???? ???? ???? ???? & , 51, 51, 51, 51, 51, 4, 4, 51, 51, 51, 51 * ???? ???? & , 51, 51),MELE-100 IF (MELE.LE.300) C LC19 LS03 LS07 LS09 LS27 LS21 LS15 LS19 BS03 BS07 & GOTO ( 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 C BS09 BS27 BS21 BS15 BS19 MC03 MC07 MC09 MC27 MC21 1 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 C MC15 MC19 M103 M107 M109 M127 M121 M115 M119 MS03 2 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 C MS07 MS09 MS27 MS21 MS15 MS19 QC03 QC07 QC09 QC27 3 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 C QC21 QC15 QC19 Q103 Q107 Q109 Q127 Q121 Q115 Q119 4 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 C QS03 QS07 QS09 QS27 QS21 QS15 QS19 CIFL SURE SHB8 5 , 99, 99, 99, 99, 99, 99, 99, 99, 99, 4 C CAF2 CAF3 XQ4R XC8R JOI1 ZCO2 ZCO3 ZCO4 TUY2 TUY3 6 , 99, 99, 63, 63, 12, 99, 99, 99, 99, 99 C COS2 COA2 ICY5 IC13 CU27 PR21 TE15 PY19 C20R P15R 7 , 99, 99, 4, 4, 99, 99, 99, 99, 99, 99) c cccccc . ,MELE-200 C 51 CONTINUE 99 CONTINUE SEGSUP xMATRI IRIGEL(4,isouss)=0 MOTERR(1:4)=NOMTP(MELE) MOTERR(5:12)='MASSE' GOTO 9990 C_______________________________________________________________________ C C MASSIF, LIQUIDE, 'SURFACE LIBRE' C_______________________________________________________________________ C 4 CONTINUE IF (BDPGE) NDDL=NDDL+NDDLGE & IVACAR,NMATT,IPMATR,ILUMP,IIPDPG) GOTO 510 C_______________________________________________________________________ C C RACCORDS LIQUIDE/MASSIF,RACCORD LIQUIDE/COQUE,BARRE,HOMOGENEISE,JOT3 C JOI4,JOI2,JOI1 C_______________________________________________________________________ C 12 CONTINUE & IPMINT,NDDL,MELE,MFR,IPMATR,ILUMP,isouss,IIPDPG,imodel) GOTO 510 C_______________________________________________________________________ C C COQ3/POUTRE,DKT,COQ4,COQ8,COQ2 ,DST, POUTRE DE TIMOSCHENKO C_______________________________________________________________________ C 27 CONTINUE & isouss,NBPGAU,IPMINT,IPMIN1,NDDL,MATE, & CMATE,LHOTRA,IPMATR,ILUMP,IIPDPG,imodel) GOTO 510 C_______________________________________________________________________ C C ELEMENT LINESPRING CA NE PESE RIEN C_______________________________________________________________________ C 30 CONTINUE GOTO 510 CC______________________________________________________________________ C C ELEMENT TUYAU FISSURE CA NE PESE RIEN C_______________________________________________________________________ C 43 CONTINUE GOTO 510 C_______________________________________________________________________ C C ELEMENT LIA2 (LIAISON A 2 NOEUDS) CA NE PESE RIEN C_______________________________________________________________________ C 50 CONTINUE GOTO 510 C_______________________________________________________________________ C C ELEMENT XFEM (MFR = 63) C_______________________________________________________________________ C Le sous-programme MASSXR gere les appels aux elements de type XFEM C (imoxfem est le modele complet ou partitionne si necessaire) 63 CONTINUE $ IVAMAT,IVACAR,NMATT,CMATE, IIPDPG,IPMASS,IRETER) IF (IRETER.NE.0) RETURN if (nblprt.GT.1) THEN imode1 = imoxfem segsup,imode1 endif C il n'y aura plus que les desactivations a faire GOTO 510 C_______________________________________________________________________ C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE IA C_______________________________________________________________________ C 510 CONTINUE C IF (ISUP.EQ.1) THEN MPTVAL=IVACAR SEGSUP,MPTVAL ENDIF if (cmate.eq.'MODAL'.or.cmate.eq.'STATIQUE') goto 519 IF (ISUP.EQ.1) THEN MPTVAL=IVAMAT SEGSUP,MPTVAL ENDIF 519 CONTINUE IF (xMATRI.NE.0) SEGDES,xMATRI C C ERREUR DANS LES S-P MASSE2 ,MASSE3 ,MASSE4 C IF (IERR.NE.0) GOTO 888 * * Fin de la boucle (5000) de PARTITIONNEMENT du segment xMATRI 5000 CONTINUE * NOMID=MOCARA IF (MOCARA.NE.0) SEGSUP NOMID notype = MOTYCA IF (MOTYCA.NE.MOTYR8) SEGSUP,notype NOMID=MOMATR IF (MOMATR.NE.0) SEGSUP NOMID notype = MOTYMA IF (MOTYMA.NE.MOTYR8) SEGSUP,notype * *----------------------------------------------------------------------- * Fin de la boucle sur les sous-zones du modele *----------------------------------------------------------------------- 500 CONTINUE IF (isouss.NE.IRIGEL(/2)) THEN NRIGEL = isouss SEGADJ,MRIGID ENDIF *termes croises 'STATIQUE'/'MODAL' ir2 = 0 nstat = kstat nmoda = kmoda segadj modsta if (nstat.ne.0) then if (nstat.gt.0) then IF (ISUP.EQ.1) THEN do kstat=1,nstat mptval = ivstat(kstat) SEGSUP,MPTVAL enddo ENDIF endif if (nmoda.gt.0) then IF (ISUP.EQ.1) THEN do kmoda=1,nmoda mptval = ivmoda(kmoda) SEGSUP,MPTVAL enddo ENDIF endif endif IRET = 1 888 CONTINUE if (ierr.eq.0.and.ir2.gt.0) then ir1 = mrigid mrigid = ir3 ipmass = mrigid endif SEGDES MRIGID GOTO 666 C C ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR C 9990 CONTINUE IRET=0 C 9995 CONTINUE 9996 CONTINUE SEGSUP MRIGID C 666 CONTINUE mmodel = IPMODL SEGDES,mmodel meleme = MAILDG IF (meleme.NE.0) SEGDES,meleme SEGSUP,modsta c RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales