chapo
C CHAPO SOURCE OF166741 24/10/03 21:15:06 12022 C C======================================================================= C C TRANSFORME LE MCHAML IPCHAM EN CHPOINT IPCHPO C il y a deja eu un reduaf sur IPMODL du mchaml -> IPCHAM C C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMMODEL -INC SMCHAML c -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMINTE -INC TMTRAV SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT SEGMENT MPTVAL INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT c tableau inverse pour retrouver la position d'inconnue SEGMENT KINCO(NINCO) SEGMENT MWRK1 REAL*8 XEL(3,NBN1) ENDSEGMENT SEGMENT MWRK2 REAL*8 TXR(3,3,NBN1),TH(NBN1) ENDSEGMENT PARAMETER (LTIT=72) CHARACTER*(LTIT) TITCH1 DIMENSION XIGAU(3) DIMENSION INFOS(3) CHARACTER*(NCONCH) CONM ************************************************************************ * PRELIMINAIRES ************************************************************************ IRET=1 IDIMP1 = IDIM + 1 SEGACT MCOORD*MOD * ACTIVATION DU MMODEL et MCHAML MMODEL=IPMODL NSOUS=KMODEL(/1) MCHELM=IPCHAM NSC = mchelm.INFCHE(/1) IF (NSC .EQ. 0) THEN write(IOIMP,*) 'CHAPO : MCHAML VIDE' c retourner un CHPOINT vide RETURN ENDIF * Verification du support : noeuds ou points d'integration (Gauss) ? ISUP = INFCHE(1,6) DO ISC = 2, NSC ISUP1 = INFCHE(ISC,6) IF (ISUP1.NE.ISUP) ISUP = 0 ENDDO * si ISUP = 1 : MCHAML aux noeuds * si ISUP = 2 : MCHAML au centre de gravite * si ISUP = 3 : MCHAML aux point d integration (rigidite) * si ISUP = 4 : MCHAML aux point d integration (masse) * si ISUP = 5 : MCHAML aux point d integration (stresses) * si ISUP = 6 : MCHAML aux point d integration de T IF (ISUP.LE.1.OR.ISUP.GT.6) THEN write(IOIMP,*) 'Supports incoherents',(INFCHE(isc,6),isc=1,NSC) RETURN ENDIF c On recupere TITCH1 dimensionne a 72 comme MOCHDE du SMCHPOI LTIT1 = min(LTIT,TITCHE(/1)) TITCH1(1:LTIT1) = TITCHE(1:LTIT1) c Segment MTRAV et ses dimensions NNIN =0 NNNOE=0 MTRAV=0 nbtype = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8' MOTYR8 = notype ************************************************************************ * Boucle sur les zones du MCHAML ************************************************************************ isous = 0 DO 100 ISOU = 1,NSOUS MELVEP = 0 IMODEL = KMODEL(ISOU) IPMAIL = IMAMOD CONM = CONMOD MELE = NEFMOD MELEME = IPMAIL c write(6,*) '==== zone',ISOU,'/',NSOUS,' itypel =',itypel IF (itypel.eq.48) goto 100 isous = isous+1 c write(6,*) ' => zone ok : ISOUS=', ISOUS * RECUP DU SEGMENT D'INTEGRATION MINTE if (infmod(/1).lt.7) then write(ioimp,*) 'chapo : infmod(/1) < 7' endif c* NBGS = INFELE(4) MFR = INFELE(13) IPMINT = INFMOD(ISUP+2) MINTE1 = INFMOD(8) minte = IPMINT c*Active par ACTOBJ : SEGACT,minte c*Active par ACTOBJ : IF (ISUP.GE.5.AND.MFR.EQ.5) SEGACT,minte1 c IF (IRET.EQ.0) call erreur(5) NBN1 = meleme.NUM(/1) NBELE1 = meleme.NUM(/2) IF (ISUP.EQ.1) THEN NIPO = NBN1 ELSE NBPGAU = minte.POIGAU(/1) NIPO = NBPGAU ENDIF IF (MFR.EQ.5) THEN IF (IPCARA.EQ.0) THEN MOTERR(1:16) = 'CARACTERISTIQUES' write(ioimp,*) 'erreur manque IPCARA' RETURN ENDIF * Cas des coques epaisses : recup de l'epaisseur * on neglige l'excentrement IF (ISUP.GE.5) THEN NBROBL = 1 NBRFAC = 0 SEGINI,nomid LESOBL(1) = 'EPAI' MOEP = nomid & MOTYR8,1,INFOS,3,IVAEP) SEGSUP,nomid IF (IERR.NE.0) RETURN mptval = IVAEP MELVEP = IVAL(1) SEGSUP,mptval ENDIF ENDIF * creation des segments de travail SEGINI MWRK1 NPPO = NIPO * NBELE1 c write(6,*) 'nb pts support', NIPO, '* nb elem',NBELE1,'=',NPPO IF (ISUP.GE.5.AND.MFR.EQ.5) SEGINI MWRK2 * ACTIVATION DU SOUS-MCHELM MCHAML MCHAML = ICHAML(ISOUS) NC = IELVAL(/1) * CREATION/AJUSTEMENT DU MTRAV * + REMPLISSAGE DE INCO et de KINCO NINCO=NC SEGINI,KINCO c -1er passage : IF(ISOUS.EQ.1) THEN NNIN =NC NNNOE1=0 NNNOE=NPPO SEGINI,MTRAV c toutes les composantes sont nouvelles DO IC=1,NC NHAR(IC) = INFCHE(ISOU,3) KINCO(IC)= IC ENDDO c -passages suivants : ELSE c on dimensionne au plus large NNIN1=NNIN NNIN =NNIN+NC NNNOE1=NNNOE NNNOE=NNNOE+NPPO SEGADJ,MTRAV c recherche des composantes nouvelles C pour MCHAML NCNEW=0 DO 101 IC=1,NC DO 102 IIN=1,NNIN1 IF(NHAR(IIN).EQ.INFCHE(ISOU,3)) THEN KINCO(IC)=IIN GOTO 101 ENDIF 102 CONTINUE c nouvelle composante ! NCNEW=NCNEW+1 NHAR(NCNEW)=INFCHE(ISOU,3) KINCO(IC)=NCNEW 101 CONTINUE c on remet a la bonne taille NNIN=NNIN1+NCNEW SEGADJ,MTRAV ENDIF * + REMPLISSAGE DE IGEO et de IBIN c sympa: a priori, tous les noeuds sont nouveaux ! NBPTS1 = NBPTS DO INOE = NNNOE1 + 1,NNNOE NBPTS = NBPTS + 1 IGEO(INOE)=NBPTS do IC=1,NC IIN = KINCO(IC) IBIN(IIN,INOE) = 1 enddo ENDDO SEGADJ,MCOORD c WRITE(*,*) 'INCO=',(INCO(iou),iou=1,NNIN) c IN NE RESTE QU'A REMPLIR BB... *======================================================================= * Boucle sur les composantes DO 150 IC = 1,NC c write(6,*) '============ ISOU,IC=',ISOU,IC,'IMODEL=',IMODEL * Recup du melval MELVAL=IELVAL(IC) ** * recup de la position IIN dans MTRAV DO 151 IIN=1,NNIN 151 CONTINUE RETURN 152 CONTINUE * + debut des nouveaux noeuds INOE = NNNOE1 *---------- Boucle sur les elements ------------------------------ DO 200 IEL = 1,NBELE1 * cas general * coques epaisses IF (ISUP.GE.5.AND.MFR.EQ.5) THEN MELVA1=MELVEP DO 201 IP = 1,NBN1 IPMN=MIN(IP ,MELVA1.VELCHE(/1)) IEMN=MIN(IEL,MELVA1.VELCHE(/2)) TH(IP)=MELVA1.VELCHE(IPMN,IEMN) 201 CONTINUE ENDIF *............. Boucle sur les points supports ............. DO 300 IPSU = 1,NIPO * remplissage des valeurs CHAMELEM -> MTRAV IPMN = MIN(IPSU,VELCHE(/1)) IEMN = MIN(IEL ,VELCHE(/2)) INOE=INOE+1 BB(IIN,INOE) = VELCHE(IPMN,IEMN) * 1er passage : on calcule les coord du pt d integration IF (IC.EQ.1) THEN IF (ISUP.GE.5.AND.MFR.EQ.5) THEN Z = 0.5D0 * DZEGAU(IPSU) r_z = 0.D0 DO IL = 1,NBN1 r_z = r_z + (SHPTOT(1,IL,IPSU)* ENDDO ENDDO ELSE r_z = 0.D0 DO IL = 1, NBN1 ENDDO ENDDO ENDIF * Le pdi est cree dans MCOORD KPTS=(IGEO(INOE)-1)*IDIMP1 XCOOR(KPTS+1) = XIGAU(1) XCOOR(KPTS+2) = XIGAU(2) IF (IDIM.EQ.3) XCOOR(KPTS+3)=XIGAU(3) XCOOR(KPTS+IDIMP1) = 0.D0 ENDIF 300 CONTINUE *............. fin de Boucle sur les points supports .......... 200 CONTINUE *---------- Fin de Boucle sur les elements ----------------------- 150 CONTINUE * Fin de Boucle sur les composantes *======================================================================= * Desactivation des segments de la zone ISOU SEGSUP,MWRK1 IF (ISUP.GE.5.AND.MFR.EQ.5) SEGSUP MWRK2 SEGSUP,KINCO 100 CONTINUE ************************************************************************ * FIN DE Boucle sur les zones du MCHAML ************************************************************************ ************************************************************************ * CREATION DU CHPOINT FINAL A PARTIR DU MTRAV ************************************************************************ SEGSUP,MTRAV IPCHPO=IPCHP1 900 CONTINUE notype = MOTYR8 SEGSUP,notype SEGDES,MCOORD C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales