sste1
C SSTE1 SOURCE OF166741 24/10/07 21:15:47 12016 ************************************************************************* ************************************************************************* ************************************************************************* . PRECIS,NITMAX,NMAXSSTEPS,NNUMER,DELTAX, . IPCHE7,IPCHE8,IPCHE9,IPRIGI) * entrees: * ipmodl = pointeur sur un objet mmodel * ipche1 = pointeur sur un mchaml de contraintes initiales * ipche2 = pointeur sur un mchaml de variables internes initiales * ipche4 = pointeur sur un mchaml d'increment elastique de deformations * ipcar = pointeur sur un mchaml de caracteristiques * precis = precision des iterations internes * sorties: * ipche7 = pointeur sur un mchaml de contraintes * ipche8 = pointeur sur un mchaml de variables internes * ipche9 = pointeur sur un mchaml de deformations * iprigi = pointeur sur l'objet de type rigidite * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCGEOME -INC SMCHAML -INC SMELEME -INC SMINTE -INC SMMODEL -INC SMRIGID SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS) INTEGER NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM PARAMETER (NINF=3) INTEGER INFOS(NINF) IF (ISUP1.GT.1) RETURN IF (ISUP2.GT.1) RETURN IF (ISUP4.GT.1) RETURN IF (ISUP5.GT.1) RETURN NBTYPE = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8 ' MOTYR8 = notype c c Activar el modelo c MMODEL=IPMODL NSOUS=MMODEL.KMODEL(/1) c c Creation de los 3 mchelms de salida c N1=NSOUS L1=11 N3=6 SEGINI MCHELM MCHELM.TITCHE='CONTRAINTES' MCHELM.IFOCHE=IFOUR IPCHE7=MCHELM L1=18 SEGINI MCHEL1 MCHEL1.TITCHE='VARIABLES INTERNES' MCHEL1.IFOCHE=IFOUR IPCHE8=MCHEL1 L1=12 SEGINI MCHEL2 MCHEL2.TITCHE='DEFORMATIONS' MCHEL2.IFOCHE=IFOUR IPCHE9=MCHEL2 c c Creacion del objeto rigidite c NRIGEL=NSOUS SEGINI MRIGID MRIGID.MTYMAT = 'RIGIDITE' MRIGID.ICHOLE=0 MRIGID.IMGEO1=0 MRIGID.IMGEO2=0 MRIGID.IFORIG=IFOUR DO ISOUS=1,NSOUS MRIGID.COERIG(ISOUS)=1.D0 MRIGID.IRIGEL(4,ISOUS)=0 ENDDO IPRIGI=MRIGID c c bucle sobre zonas c DO 1000 ISOUS=1,NSOUS NSTR=0 MOSTRS=0 IVASTR=0 MOVARI=0 NVARI=0 NVARF=0 IVARI=0 MOEPSI=0 NDEF=0 IVADEF=0 IVADS=0 NCARA=0 NCARF=0 MOCARA=0 IVACAR=0 NMATF=0 NMATR=0 MOMATR=0 IVAMAT=0 IVASTF=0 IVARIF=0 IVADEP=0 KERRE=0 KERR1=0 MCHAML=0 MCHAM1=0 MCHAM2=0 c Recuperar la informacion general de la zona c Activa el modelo de la zona IMODEL=KMODEL(ISOUS) MELE =IMODEL.NEFMOD CONM =IMODEL.CONMOD c Activa la malla MELEME=IMODEL.IMAMOD NBNN =MELEME.NUM(/1) NBELEM=MELEME.NUM(/2) c Tipo de material CMATE = imodel.CMATEE MATE = imodel.IMATEE INPLAS = imodel.INATUU c Controlar que sea uno de los materiales de trabajo IF ((INPLAS.lt.111).or.(INPLAS.gt.113)) then write(*,*) ' Material no disponible' ENDIF ccc * informacion de elementos finitos * activa un segmento q se llama luego INFO, q tiene INFELE MELE =INFELE(1) NBGS =INFELE(4) NBG =INFELE(6) IPORE=INFELE(8) LRE =INFELE(9) LHOOK=INFELE(10) MINTE=INFMOD(7) MFR =INFELE(13) NDDL =INFELE(15) NSTRS=INFELE(16) ippore=0 * Controla que sean elementos masivos IF ((MFR.lt.1).or.(MFR.gt.1)) then write(*,*) ' Tipo de elemento no disponible' ENDIF * Llena informacion en los 3 campos de salida MCHELM.IMACHE(ISOUS)=MELEME MCHELM.CONCHE(ISOUS)=CONM MCHEL1.IMACHE(ISOUS)=MELEME MCHEL1.CONCHE(ISOUS)=CONM MCHEL2.IMACHE(ISOUS)=MELEME MCHEL2.CONCHE(ISOUS)=CONM MCHELM.INFCHE(ISOUS,1)=0 MCHELM.INFCHE(ISOUS,2)=0 MCHELM.INFCHE(ISOUS,3)=NIFOUR MCHELM.INFCHE(ISOUS,4)=MINTE MCHELM.INFCHE(ISOUS,5)=0 MCHELM.INFCHE(ISOUS,6)=5 MCHEL1.INFCHE(ISOUS,1)=0 MCHEL1.INFCHE(ISOUS,2)=0 MCHEL1.INFCHE(ISOUS,3)=NIFOUR MCHEL1.INFCHE(ISOUS,4)=MINTE MCHEL1.INFCHE(ISOUS,5)=0 MCHEL1.INFCHE(ISOUS,6)=5 MCHEL2.INFCHE(ISOUS,1)=0 MCHEL2.INFCHE(ISOUS,2)=0 MCHEL2.INFCHE(ISOUS,3)=NIFOUR MCHEL2.INFCHE(ISOUS,4)=MINTE MCHEL2.INFCHE(ISOUS,5)=0 MCHEL2.INFCHE(ISOUS,6)=5 * Llena informacion la rigidite * Activa segmento MINTE NBNO=NBNN NBPGAU=MINTE.POIGAU(/1) IPMINT=MINTE * Inicializa segmento descr, descripcion incognitas matriz rigidite NLIGRP=LRE NLIGRD=LRE SEGINI DESCR IPDESCR=DESCR nomid=lnomid(1) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(1)=0' endif modepl=nomid ndepl=lesobl(/2) ndum=lesfac(/2) nomid=lnomid(2) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(2)=0' endif moforc=nomid nforc=lesobl(/2) ndum=lesfac(/2) * Llena el segmento descr con los nombres de las incognitas IDDL=1 NCOMP=NDEPL NBNNS=NBNN DO INOEUD=1,NBNNS DO ICOMP=1,NCOMP NOMID=MODEPL DESCR.LISINC(IDDL)=LESOBL(ICOMP) NOMID=MOFORC DESCR.LISDUA(IDDL)=LESOBL(ICOMP) NOELEP(IDDL)=INOEUD NOELED(IDDL)=INOEUD IDDL=IDDL+1 ENDDO ENDDO * Inicializa segmento imatri, chapeau sur les segments * contenant les matrices de rigidite elementaires NELRIG =NBELEM SEGINI xMATRI * Trata la rigidite MRIGID.IRIGEL(1,ISOUS)=MELEME MRIGID.IRIGEL(2,ISOUS)=0 MRIGID.IRIGEL(3,ISOUS)=IPDESCR MRIGID.IRIGEL(4,ISOUS)=xMATRI MRIGID.IRIGEL(5,ISOUS)=NIFOUR MRIGID.IRIGEL(6,ISOUS)=0 c no simetricas = 2, simetricas = 0 IRIGE7=2 MRIGID.IRIGEL(7,ISOUS)=IRIGE7 xmatri.symre=irige7 * tratamiento de los 4 campos dados IF (IRTD.EQ.0)THEN write(*,*)' no compatibles' RETURN ENDIF * contraintes: IVASTR nomid=lnomid(4) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(4)=0' endif mostrs=nomid nstr=lesobl(/2) nfac=lesfac(/2) IF (ISUP1.EQ.1) THEN goto 888 ENDIF * variables internes: IVARI nomid=lnomid(10) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(10)=0' endif movari=nomid nvari=lesobl(/2) nvarf=lesfac(/2) NVART=NVARI+NVARF IF (ISUP2.EQ.1) THEN goto 888 ENDIF * increments de deformations: IVADS nomid=lnomid(5) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(5)=0' endif moepsi=nomid ndef=lesobl(/2) nfac=lesfac(/2) IF (ISUP4.EQ.1) THEN goto 888 ENDIF * caracteristiques materielles: IVAMAT nomid=lnomid(6) if (nomid.eq.0) then write(ioimp,*) 'LNOMID(6)=0' endif momatr=nomid nmatr=lesobl(/2) nmatf=lesfac(/2) NMATT=NMATR+NMATF IF (ISUP5.EQ.1) THEN goto 888 ENDIF * Creacion de los mchamls de las zonas NBPTEL=NBGS NEL =NBELEM N1PTEL=NBPTEL N1EL =NEL * contraintes N2 =NSTRS SEGINI MCHAML MCHELM.ICHAML(ISOUS)=MCHAML mchelm.conche(isous) = conmod NS =1 NCOSOU=NSTRS SEGINI MPTVAL IVASTF=MPTVAL NOMID =MOSTRS DO ICOMP=1,NSTRS MCHAML.NOMCHE(ICOMP)=NOMID.LESOBL(ICOMP) MCHAML.TYPCHE(ICOMP)='REAL*8' N2PTEL=0 N2EL=0 SEGINI MELVAL MCHAML.IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL enddo * variables internes N2 =NVART SEGINI MCHAM1 MCHEL1.ICHAML(ISOUS)=MCHAM1 mchel1.conche(isous) = conmod NS =1 NCOSOU=NVART SEGINI MPTVAL IVARIF=MPTVAL NOMID=MOVARI DO ICOMP=1,NVARI MCHAM1.NOMCHE(ICOMP)=LESOBL(ICOMP) MCHAM1.TYPCHE(ICOMP)='REAL*8' N2PTEL=0 N2EL=0 SEGINI MELVAL MCHAM1.IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL enddo DO ICOMP=NVARI+1,NVART MCHAM1.NOMCHE(ICOMP)=LESFAC(ICOMP-NVARI) MCHAM1.TYPCHE(ICOMP)='REAL*8' N2PTEL=0 N2EL=0 SEGINI MELVAL MCHAM1.IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL enddo N1PTEL=NBPTEL N1EL=NEL N2=NDEF SEGINI MCHAM2 MCHEL2.ICHAML(ISOUS)=MCHAM2 mchel2.conche(isous) = conmod NS=1 NCOSOU=NDEF SEGINI MPTVAL IVADEP=MPTVAL NOMID=MOEPSI DO ICOMP=1,NDEF MCHAM2.NOMCHE(ICOMP)=LESOBL(ICOMP) MCHAM2.TYPCHE(ICOMP)='REAL*8' N2PTEL=0 N2EL=0 SEGINI MELVAL MCHAM2.IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL enddo . NBELEM,NBPTEL,NBNN,LRE,MFR, . IVASTR,IVARI,IVADS,IVAMAT,NSTRS,NVARI,NMATT, . IVASTF,IVARIF,IVADEP,LHOOK,IRIGE7, . PRECIS,NITMAX,NMAXSSTEPS,NNUMER,DELTAX,KERRE) * Desactivar segmentos IF(ISUP1.EQ.1)THEN ELSE ENDIF IF(ISUP2.EQ.1)THEN ELSE ENDIF IF(ISUP4.EQ.1)THEN ELSE ENDIF IF(ISUP5.EQ.1)THEN ELSE ENDIF IF (KERRE.EQ.0) THEN ELSE SEGSUP MCHAML,MCHAM1,MCHAM2 GO TO 888 END IF 1000 continue 888 CONTINUE IF(KERRE.NE.0)THEN SEGSUP MCHELM,MCHEL1,MCHEL2,MRIGID,xMATRI,DESCR ENDIF notype = MOTYR8 SEGSUP,notype RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales