fpfiss
C FPFISS SOURCE OF166741 24/10/03 21:15:16 12022 1 IPTFP,IRET) C_____________________________________________________________________ C C CALCULE LES FORCES DE PRESSIONS APPLIQUEES SUR DES LEVRES D UNE C FISSURE (ELT LINESPRING) C C ENTREES : C --------- C C P VALEUR DE LA PRESSION SI ELLE EST CONSTANTE C IPCHE1 CHPOINT CONTENANT LES VALEURS DES PRESSIONS AUX NOEUDS C IPMODL OBJET MMODEL SUR LEQUEL S APPLIQUE LA PRESSION C IPVECT VECTEUR INDIQUANT LA DIRECTION DANS LAQUELLE C S APPLIQUE LA PRESSION C IPPOIN POINT OU SE RAPPORTE LE VECTEUR C IPCHE2 MCHAML CONTENANT LES CARACTERISTIQUES C C SORTIE : C -------- C C IPTFP CHPOINT DES FORCES NODALES EQUIVALENTES C IRET 1 OU 0 SUIVANT SUCCES OU NON C C REVISION JACQUELINE BROCHARD SEPTEMBRE 86 C PASSAGE AUX NOUVEAUX MCHAMLS PAR JM CAMPENON LE 05 09 90 C C_____________________________________________________________________ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCOORD -INC SMELEME -INC SMMODEL -INC SMCHAML -INC SMCHPOI -INC SMINTE C C SEGMENT DONNANT LE POINTEUR DE MAILLAGE CORRECTE AU MCHAML DE C CARACTERISTIQUE APRES CREATION D'UN MMODEL C logical ltelq SEGMENT JPMAIL INTEGER MAIL1 (NSOUS1) INTEGER MAIL2 (NSOUS1) ENDSEGMENT * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT C SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT C DIMENSION V(3),XP(3) DIMENSION BPSS(3,3),XE(3,4),XEL(3,3),V1(3),V2(3),H1(3),H2(3) CHARACTER*8 MOT CHARACTER*(NCONCH) CONM PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) LOGICAL lsupfo C DATA X774/.774596669241483D0/ DATA MOT/'NOEUD '/ lsupfo=.false. IRET=0 C C VERIFICATION DU LIEU SUPPORT DU MCHAML DE CARACTERISTIQUES C IF (ISUP.GT.1) RETURN C IFLAG=0 NHRM=NIFOUR C C ON RECUPERE LES COORDONNEES DU VECTEUR C IREF=(IPVECT-1)*(IDIM+1) V(1)=XCOOR(IREF+1) V(2)=XCOOR(IREF+2) IF (IDIM.EQ.2) THEN VN=SQRT(V(1)**2+V(2)**2) IF (VN.EQ.0.) THEN RETURN ENDIF V(1)=V(1)/VN V(2)=V(2)/VN ELSE V(3)=XCOOR(IREF+3) VN=SQRT(V(1)**2+V(2)**2+V(3)**2) IF (VN.EQ.0.) THEN RETURN ENDIF V(1)=V(1)/VN V(2)=V(2)/VN V(3)=V(3)/VN ENDIF C C LE FLAG SERT A INDIQUER SI L'ON DOIT OU NON DETRUIRE LE MODELE C EN CAS DE CREATION ( 0 : DESTRUCTION D'UN MMODEL CREE ) C JPMAIL=0 IF (IPCHE1.NE.0) THEN C C ON CREE LE MMODEL S'ACCROCHANT AU CHPOINT C IF (IERR.NE.0) RETURN C C ON CREE L OBJET MAILLAGE CONTENANT TOUS LES POINT DU CHPOINT C MCHPOI=IPCHE SEGACT MCHPOI NSOUPO=IPCHP(/1) IPGEOM = 0 DO 1140 I=1,NSOUPO MSOUPO=IPCHP(I) SEGACT MSOUPO IF (IPGEOM.EQ.0) THEN IPGEOM = IGEOC ELSE IPP2 = IGEOC ltelq=.false. IPGEOM = IPPT ENDIF SEGDES MSOUPO 1140 CONTINUE SEGDES MCHPOI C N1=0 SEGINI MMODEL IPMOD=MMODEL C MMODE1=IPMODL SEGACT MMODE1 NSOUS1=MMODE1.KMODEL(/1) C C BOUCLE SUR LES SOUS ZONE GEOMETRIQUE ELEMENTAIRE C IRRT=0 DO 50 ISOUS=1,NSOUS1 IMODE1=MMODE1.KMODEL(ISOUS) SEGACT IMODE1 ITGEOM=IMODE1.IMAMOD IF (IRR.EQ.0) THEN C C ON A VERIFIER L ADHERENCE DU CHPOINT A CE MAILLAGE C IF (IERR.NE.0) THEN SEGDES MMODE1 SEGDES IMODE1 SEGSUP MMODEL RETURN ENDIF N1=N1+1 SEGADJ MMODEL C C CREATION DE L'OBJET IMODEL DE CETTE SOUS ZONE C NFOR=IMODE1.FORMOD(/2) NMAT=IMODE1.MATMOD(/2) MN3 =IMODE1.INFMOD(/1) NPARMO=0 nobmod=0 C SEGINI IMODEL conmod(17:24)=' ' IMAMOD=IPOGEO NEFMOD=IMODE1.NEFMOD CONMOD=IMODE1.CONMOD IPDPGE=IMODE1.IPDPGE C C CREATION D'UN TABLEAU DE CORRESPONDANCE LE IMAMOD DU C MMODEL (IPMODL) ET DU IMAMOD DU NVX MMODEL QUE L'ON CREE C IF (JPMAIL.EQ.0) SEGINI JPMAIL MAIL1(ISOUS)=ITGEOM MAIL2(ISOUS)=IPOGEO DO 47 I=1,MN3 INFMOD(I)=IMODE1.INFMOD(I) 47 CONTINUE CONMOD=IMODE1.CONMOD DO 48 I=1,NFOR FORMOD(I)=IMODE1.FORMOD(I) 48 CONTINUE DO 49 I=1,NMAT MATMOD(I)=IMODE1.MATMOD(I) 49 CONTINUE KMODEL(N1)=IMODEL SEGDES IMODEL ELSE C C LE CHPOINT N'ADHERE PAS A CETTE ZONE C IRRT=IRRT+1 ENDIF SEGDES IMODE1 50 CONTINUE SEGDES MMODE1 SEGDES MMODEL C IF (NSOUPO.GT.1) THEN MELEME=IPGEOM SEGSUP MELEME ENDIF C IF (IRRT.EQ.NSOUS1) THEN C C L'OBJET MAILLAGE ET LE CHPOINT SONT INCOMPATIBLES C MOTERR(1:8)='MAILLAGE' MOTERR(9:16)='CHPOINT' MMODEL=IPMOD SEGSUP MMODEL RETURN ENDIF C IF (IERR.NE.0) THEN SEGSUP JPMAIL RETURN ENDIF ELSE IFLAG=1 IPMOD=IPMODL IF (IERR.NE.0) RETURN MCHEL1=IPCH1 SEGACT MCHEL1 NSOUS=MCHEL1.ICHAML(/1) DO 11 ISOUS=1,NSOUS MCHAM1=MCHEL1.ICHAML(ISOUS) SEGACT MCHAM1 MELVA1=MCHAM1.IELVAL(1) SEGACT MELVA1 N1PTEL=MELVA1.VELCHE(/1) N1EL =MELVA1.VELCHE(/2) DO 9 IGAU=1,N1PTEL DO 9 IB=1,N1EL MELVA1.VELCHE(IGAU,IB)=P 9 CONTINUE SEGDES MELVA1 SEGDES MCHAM1 11 CONTINUE SEGDES MCHEL1 ENDIF NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='SCAL' MOSCAL = NOMID NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' MOTYR8 = NOTYPE C C ACTIVATION DU MODEL C MMODEL=IPMOD SEGACT MMODEL NSOUS=KMODEL(/1) C C CREATION DU MCHELM DES FORCES NODALES C N1=NSOUS L1=5 N3=6 SEGINI MCHELM IPCHEL=MCHELM TITCHE='FORCE' IFOCHE=IFOUR C_______________________________________________________________________ C C BOUCLE SUR LES SOUS ZONES DU MAILLAGE C_______________________________________________________________________ C DO 500 ISOUS=1,NSOUS C C ON RECUPERE L INFORMATION GENERALE C IMODEL=KMODEL(ISOUS) SEGACT IMODEL IPMAIL=IMAMOD CONM =CONMOD IMACHE(ISOUS)=IPMAIL C C TRAITEMENT DU MODEL C MELE=NEFMOD C C ERREUR L ELEMENT N EST PAS ENCORE IMPLEMENTE IF (MELE.NE.30) THEN MOTERR(1:4)=NOMTP(MELE) MOTERR(5:12)='FPFISS' SEGDES IMODEL,MMODEL SEGSUP MCHELM IF (JPMAIL.NE.0) SEGSUP JPMAIL RETURN ENDIF C MELEME=IMAMOD IPTGEO=MELEME C C INFORMATION SUR L'ELEMENT FINI C MFR =INFELE(13) * IPTINT=INFELE(11) IPTINT=infmod(5) MINTE=IPTINT SEGACT,MINTE C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) THEN SEGDES IMODEL,MMODEL SEGSUP MCHELM IF (JPMAIL.NE.0) SEGSUP JPMAIL RETURN ENDIF C INFCHE(ISOUS,1)=0 INFCHE(ISOUS,2)=0 INFCHE(ISOUS,3)=NHRM INFCHE(ISOUS,4)=IPTINT INFCHE(ISOUS,5)=0 INFCHE(ISOUS,6)=3 C C RECHERCHE DU MELVAL DU CHAMELEM DE PRESSION C NCARA=0 NCARF=0 MOCARA=0 NFOR=0 MOFORC=0 C IF (IERR.NE.0) GOTO 9990 MPTVAL=IVASCA IPTVPR=IVAL(1) C C CALCUL DES FORCES NODALES EQUIVALENTES C BRANCHEMENT SUIVANT LE TYPE DES ELEMENTS C C RECHERCHE DES NOM DE COMPOSANTES C if(lnomid(2).ne.0) then nomid=lnomid(2) segact nomid moforc=nomid nfor=lesobl(/2) nfac=0 lsupfo=.false. else lsupfo=.true. endif C C ELEMENT LINESPRING C SEGACT MELEME NBNN =NUM(/1) NBELEM=NUM(/2) IPPORE=0 IF(MFR.EQ.33) IPPORE=NBNN C CREATION DU MCHAML DE LA SOUS ZONE C C INIT DU MELVAL DEVANT CONTENIR LES FORCES DE PRESSION C N1PTEL=4 N1EL=NBELEM N2PTEL=0 N2EL=0 C N2=NFOR SEGINI MCHAML ICHAML(ISOUS)=MCHAML NS=1 NCOSOU=NFOR SEGINI MPTVAL IVAFOR=MPTVAL NOMID=MOFORC DO 1100 ICOMP=1,NFOR NOMCHE(ICOMP)=LESOBL(ICOMP) TYPCHE(ICOMP)='REAL*8' SEGINI MELVAL IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL 1100 CONTINUE C C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES POUR LES LINESPRING C NBROBL=5 NBRFAC=0 SEGINI NOMID MOCARA=NOMID LESOBL(1)='EPAI' LESOBL(2)='FISS' LESOBL(3)='VX ' LESOBL(4)='VY ' LESOBL(5)='VZ ' IF (JPMAIL.NE.0) THEN C C ON RECUPERE LE IMAMOD DU MMODEL D'ORIGINE POUR QUE LE C DONNE CORRESPONDE A CELUI DE IPCHE21 C DO 60 KISOUS=1,NSOUS1 IF (IPMAIL.EQ.MAIL2(KISOUS)) THEN IPMAI1=MAIL1(KISOUS) GOTO 61 ENDIF 60 CONTINUE C C NE DOIT NORMALEMENT JAMAIS SE PRODUIRE C GOTO 9990 ELSE IPMAI1=IPMAIL ENDIF 61 CONTINUE 1 1,INFOS,3,IVACAR) IF (IERR.NE.0) GOTO 9990 C NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF C IF (ISUP.EQ.1) THEN ENDIF C C ELEMENT LINESPRING C C C DESACTIVATION DES SEGMENT PROPRE A LA GEOMETRIE ISOUS C SEGDES,MINTE SEGDES IMODEL SEGDES MCHAML C IF (ISUP.EQ.1) THEN ELSE ENDIF C C C NOMID=MOFORC if(lsupfo)SEGSUP NOMID NOMID=MOCARA SEGSUP NOMID C SEGDES MELEME C 500 CONTINUE SEGDES MMODEL IF (JPMAIL.NE.0) SEGSUP JPMAIL C NOTYPE = MOTYR8 SEGSUP NOTYPE NOMID = MOSCAL SEGSUP NOMID C C ON TRANSFORME LE CHAM/ELEM EN CHAM/POIN C C* SEGDES MCHELM IF (IRETOU.EQ.0) RETURN C C ON COMPARE LE SENS DE LA FORCE AU SENS DU VECTEUR AU POINT INDIQUE C MCHPOI=IPTFP SEGACT MCHPOI DO 201 I=1,IPCHP(/1) MSOUPO=IPCHP(I) SEGACT MSOUPO MELEME=IGEOC SEGACT MELEME DO 202 K=1,NUM(/2) IF (NUM(1,K).EQ.IPPOIN) GO TO 205 202 CONTINUE SEGDES MSOUPO,MELEME 201 CONTINUE C C LE POINT DONNE N APPARTIENT PAS A LA STRUCTURE C INTERR(1)=IPPOIN MOTERR(1:8)=' ' SEGDES MCHPOI RETURN C 205 CONTINUE SEGDES MELEME MPOVAL=IPOVAL SEGACT MPOVAL FN2=ZERO DO 210 J=1,IDIM r_z = VPOCHA(K,J) FN2=FN2 + r_z*r_z 210 CONTINUE FN=SQRT(FN2) SEGDES MPOVAL,MSOUPO,MCHPOI C C ERREUR IMPOSSIBLE D ORIENTER LES FORCES DE PRESSION C RETURN ENDIF XFLOT=-UN IPTFP=IPTFP0 ENDIF IRET = 1 RETURN C C ERREUR DANS UNE SOUS ZONE / DESACTIVATION ET RETOUR C 9990 CONTINUE IRET=0 IF (JPMAIL.NE.0) SEGSUP JPMAIL C SEGSUP MCHELM C IF (ISUP.EQ.1) THEN ELSE ENDIF C C C NOMID=MOCARA IF (MOCARA.NE.0) SEGSUP NOMID NOMID=MOFORC IF (lsupfo.and.MOFORC.NE.0) SEGSUP NOMID C SEGDES,MINTE SEGDES IMODEL SEGDES MMODEL RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales