gnflp
C GNFLP SOURCE OF166741 24/10/03 21:15:19 12022 C_______________________________________________________________________ C C IPMODL MMODEL C IPCHE1 MCHAML C IPCHE2 MCHAML de caract{ristiques (facultatif) C IPCHP4 CHPOINT resultat C IRET =1 OU 0 suivant succes ou pas (Message d'erreur) C_______________________________________________________________________ C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMMODEL -INC SMINTE * SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) LoGICAL lsupfo lsupfo=.false. IRET = 0 IPCHP4 = 0 IPCHE5 = 0 * * Verification du lieu support du MCHAML * IF (IPCHE1.NE.0) THEN IF (ISUP1.GT.1) THEN RETURN ENDIF IPCHM1 = IPCHE1 * * PASSAGE DU CHPOINT EN MCHAML * ELSE IF (IERR.NE.0) RETURN ISUP1 = 1 ENDIF * * Verification du lieu support du MCHAML de caracteristiques * IF (IPCHE2.NE.0) THEN IF (ISUP2.GT.1) THEN RETURN ENDIF ENDIF *_______________________________________________________________________ * * ACTIVATION DU MODELE *_______________________________________________________________________ * MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) C Petite verification sur le MODELE : uniquement FORMULATION POREUX DO ISOUS = 1, NSOUS IMODEL=KMODEL(ISOUS) SEGACT,IMODEL NFOR=FORMOD(/2) IF (NFOR.EQ.1) THEN IF (FORMOD(1).NE.'POREUX') THEN MOTERR(1:8)=FORMOD(1) GOTO 9900 ENDIF C* ELSE IF (NFOR.GT.1) THEN ELSE MOTERR(1:8)=FORMOD(1) GOTO 9900 ENDIF ENDDO C C ACTIVATION DU CHAMP EN ENTREE C MCHEL1=IPCHM1 SEGACT,MCHEL1 C C INITIALISATION DU MCHELM DE VALEURS NODALES C L1=6 N1=NSOUS N3=6 SEGINI,MCHELM IPCHE5=MCHELM IFOCHE=IFOUR TITCHE='FORCES' C_______________________________________________________________________ C C BOUCLE SUR LES SOUS ZONES C_______________________________________________________________________ C DO 200 ISOUS=1,NSOUS C C INITIALISATION C IVACAR=0 IVAFOR=0 IVAVCO=0 MOCARA=0 MOFORC=0 MOVECO=0 C C TRAITEMENT DU MODELE C IMODEL=KMODEL(ISOUS) IIPDPG = imodel.IPDPGE MELE=NEFMOD IPMAIL=IMAMOD CONM =CONMOD C____________________________________________________________________ C C ACTIVATION DU MELEME C MELEME=IPMAIL SEGACT MELEME NBNN=NUM(/1) NBELEM=NUM(/2) C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) GOTO 9990 C_______________________________________________________________________ C C INFORMATIONS SUR L'ELEMENT FINI C_______________________________________________________________________ C if(infmod(/1).lt.5) then IF (IERR.NE.0) GOTO 9990 INFO=IPINF NBPGAU= INFELL(4) NBG = INFELL(6) MINTE = INFELL(11) MINTE1= INFELL(12) IPMINT= MINTE IPMIN1= MINTE1 MFR = INFELL(13) LW = INFELL(7) IELE = INFELL(14) IPORE = INFELL(8) segsup info ELSE NBPGAU= INFELE(4) NBG = INFELE(6) * MINTE = INFELE(11) MINTE=INFMOD(5) MINTE1= INFMOD(8) IPMINT= MINTE IPMIN1= MINTE1 MFR = INFELE(13) LW = INFELE(7) IELE = INFELE(14) IPORE = INFELE(8) ENDIF IPPORE=0 IF(MFR.EQ.33) THEN IPPORE=NBNN IDECAP=1 ELSE IF(MFR.EQ.57) THEN IPPORE=NBNN IDECAP=2 ELSE IF(MFR.EQ.59) THEN IPPORE=NBNN IDECAP=3 ENDIF NHRM = NIFOUR C SEGACT MINTE C C RECOPIE DU MCHELM C IMACHE(ISOUS)=IPMAIL CONCHE(ISOUS)=CONMOD INFCHE(ISOUS,1)=0 INFCHE(ISOUS,2)=0 INFCHE(ISOUS,3)=NIFOUR INFCHE(ISOUS,4)=0 INFCHE(ISOUS,5)=0 INFCHE(ISOUS,6)=1 C_______________________________________________________________________ C C NOMS DE COMPOSANTES EN SORTIE C_______________________________________________________________________ C if(lnomid(2).ne.0) then lsupfo=.false. moforc=lnomid(2) nomid=moforc segact nomid NFORC=lesobl(/2) nfac=lesfac(/2) else lsupfo=.true. NOMID=MOFORC SEGACT NOMID endif NCOMP=IDECAP C C CREATION DU MCHAML C N2=NCOMP SEGINI MCHAML ICHAML(ISOUS)=MCHAML DO 110 ICOMP=1,NCOMP IPRDEC=NFORC-IDECAP+ICOMP NOMCHE(ICOMP)=LESOBL(IPRDEC) TYPCHE(ICOMP)='REAL*8' 110 CONTINUE *_______________________________________________________________________ * * TRAITEMENT DU CHAMP DE VALEURS EN ENTREE *_______________________________________________________________________ * * ON PREND TOUS LES NOMS DE FORCES COMME COMPOSANTES POSSIBLES * MAIS ON LES MET EN FACULTATIF * * CAS JOINTS * IF((MELE.GE.108.AND.MELE.LE.110).OR. . (MELE.GE.185.AND.MELE.LE.190)) THEN IF(IFOUR.LE.0) THEN * CAS PLAN NCOVEC=3 ELSE IF (IFOUR.EQ.2) THEN * 3D NCOVEC=4 ENDIF ELSE IF(IFOUR.LE.0) THEN * CONTRAINTES PLANES - DEFORMATIONS PLANES * DEFO PLAN GENE * AXISYMETRIQUE NCOVEC=2 ELSE IF (IFOUR.GT.0) THEN * FOURIER * 3D NCOVEC=3 ENDIF ENDIF * * PUIS ON CREE LE SEGMENT MOVECO * NBROBL=0 NBRFAC=NCOVEC*IDECAP * NVECO=NBRFAC SEGINI NOMID MOVECO=NOMID IF((MELE.GE.108.AND.MELE.LE.110).OR. . (MELE.GE.185.AND.MELE.LE.190)) THEN DO 121 IPR=1,IDECAP IPRDEC = (IPR-1)*NCOVEC IF(IPR.EQ.1) THEN LESFAC(IPRDEC+1)='VCPH' LESFAC(IPRDEC+2)='VCPB' LESFAC(IPRDEC+3)='VCP1' IF(NCOVEC.EQ.4) LESFAC(IPRDEC+4)='VCP2' ELSE IF(IPR.EQ.2) THEN LESFAC(IPRDEC+1)='VCQH' LESFAC(IPRDEC+2)='VCQB' LESFAC(IPRDEC+3)='VCQ1' IF(NCOVEC.EQ.4) LESFAC(IPRDEC+4)='VCQ2' ELSE IF(IPR.EQ.3) THEN LESFAC(IPRDEC+1)='VCTH' LESFAC(IPRDEC+2)='VCTB' LESFAC(IPRDEC+3)='VCT1' IF(NCOVEC.EQ.4) LESFAC(IPRDEC+4)='VCT2' ENDIF 121 CONTINUE ELSE DO 120 IPR=1,IDECAP IPRDEC = (IPR-1)*NCOVEC IF(IPR.EQ.1) THEN LESFAC(IPRDEC+1)='VCP1' LESFAC(IPRDEC+2)='VCP2' IF(NCOVEC.EQ.3) LESFAC(IPRDEC+3)='VCP3' ELSE IF(IPR.EQ.2) THEN LESFAC(IPRDEC+1)='VCQ1' LESFAC(IPRDEC+2)='VCQ2' IF(NCOVEC.EQ.3) LESFAC(IPRDEC+3)='VCQ3' ELSE IF(IPR.EQ.3) THEN LESFAC(IPRDEC+1)='VCT1' LESFAC(IPRDEC+2)='VCT2' IF(NCOVEC.EQ.3) LESFAC(IPRDEC+3)='VCT3' ENDIF 120 CONTINUE ENDIF * * RECUPERATION DES COMPOSANTES PRESENTES * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9991 * * ON VERIFIE A POSTERIORI QU'ON A TROUVE QUELQUE CHOSE * MPTVAL = IVAVCO NCOSOU = IVAL(/1) DO 50 I=1,NCOSOU IF (IVAL(I).NE.0) GOTO 501 50 CONTINUE MOTERR(1:8)='VEC. COU' MOTERR(9:12)=NOMTP(MELE) MOTERR(13:20)='GNFL ' GO TO 9991 501 CONTINUE * * CHANGEMENT DE SUPPORT SI BESOIN * IF (ISUP1.EQ.1) THEN IF (IERR.NE.0) THEN ISUP1 = 0 GOTO 9991 ENDIF ENDIF C____________________________________________________________________ C * TRAITEMENT DES CHAMPS DE CARACTERISTIQUES * C____________________________________________________________________ * NCARA=0 NCARF=0 IF (IPCHE2.NE.0) THEN NBROBL=0 NBRFAC=0 * * EPAISSEUR DANS LE CAS MASSIF EN CONTRAINTES PLANES * IF((MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) + .AND.IFOUR.EQ.-2)THEN NBROBL=0 NBRFAC=1 SEGINI NOMID MOCARA=NOMID LESFAC(1)='DIM3' * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' ENDIF NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF * IF (MOCARA.NE.0) THEN MOTYPE=NOTYPE $ IVACAR) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9991 * IF (ISUP2.EQ.1) THEN IF (IERR.NE.0) THEN ISUP2=0 GOTO 9991 ENDIF ENDIF ENDIF ENDIF C C TAILLES DE MELVAL C N1EL =NBELEM N1PTEL=NBNN N2PTEL=0 N2EL=0 NBPTEL=NBPGAU NEL =N1EL C C CREATION DU MELVAL DE FORCES NODALES C NS=1 NCOSOU=NCOMP SEGINI MPTVAL IVAFOR=MPTVAL DO 100 ICOMP=1,NCOSOU SEGINI MELVAL IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL 100 CONTINUE C IF(MELE.GE.79.AND.MELE.LE.83) GO TO 4 IF(MELE.GE.173.AND.MELE.LE.182) GO TO 4 IF(MELE.GE.108.AND.MELE.LE.110) GO TO 4 IF(MELE.GE.185.AND.MELE.LE.190) GO TO 4 C 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(5:8)='GNFL' GOTO 9991 C_______________________________________________________________________ C C poreux C_______________________________________________________________________ C 4 CONTINUE & IPORE,NCOMP,IVAFOR,IIPDPG,IDECAP) GOTO 510 C_______________________________________________________________________ C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS C_______________________________________________________________________ 510 CONTINUE C 9991 CONTINUE 9990 CONTINUE C IF (ISUP1.EQ.1)THEN ELSE ENDIF IF (MOVECO.NE.0) THEN NOMID=MOVECO SEGSUP NOMID ENDIF C IF (MOFORC.NE.0) THEN NOMID=MOFORC if (lsupfo) SEGSUP NOMID ENDIF C IF (IPCHE2.NE.0) THEN IF (ISUP2.EQ.1) THEN ELSE ENDIF IF (MOCARA.NE.0) THEN NOMID=MOCARA SEGSUP NOMID ENDIF ENDIF C IF (IERR.NE.0) GO TO 9999 C 200 CONTINUE C_______________________________________________________________________ C C TRANSFORMATION DU CHAMELEM EN CHPOINT C_______________________________________________________________________ C IF (IERR.NE.0) GOTO 9999 C IRET = 1 GOTO 9900 C C ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR 9999 CONTINUE IRET = 0 IPCHP4 = 0 IF (IPCHE5.NE.0) SEGSUP,MCHELM C- Fin du sous-programme : gestion des segments 9900 CONTINUE C Destructions de segments si necessaire END
© Cast3M 2003 - Tous droits réservés.
Mentions légales