cneqp
C CNEQP SOURCE OF166741 24/10/03 21:15:07 12022 C_______________________________________________________________________ C C Entrees: C ________ C C IPMODL Pointeur sur un MMODEL C IPCHE1 Pointeur sur un MCHAML de forces volumiques C IPCHPO Pointeur sur un CHPOINT de forces volumiques C IPCHE2 Pointeur sur un MCHAML de caracteristiques (FACULTATIF) C C SORTIES: C ________ C C IPCHE3 Pointeur sur un MCHAML de forces aux noeuds C IRET =1 OU 0 suivant succes ou pas (Message d'erreur C imprime dans ce cas C C_______________________________________________________________________ C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC SMCHAML -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMMODEL POINTEUR NOMID1.NOMID -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 PARAMETER ( NINF=3 , ISUPC=3) INTEGER INFOS(NINF) CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM LOGICAL lsupfo INTEGER ISUP1, ISUP2 IRET = 0 ISUP1 = 0 ISUP2 = 0 nbtype = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8' MOTYR8 = notype * Premieres verifications sur le modele (formulation) MMODEL = IPMODL NSOUS = KMODEL(/1) IMECA = 0 IELEC = 0 IMAGN = 0 DO ISOUS = 1, NSOUS IMODEL = KMODEL(ISOUS) NFOR = FORMOD(/2) IF (NFOR.EQ.1) THEN IF (FORMOD(1).EQ.'MECANIQUE' .OR. FORMOD(1).EQ.'POREUX') THEN IMECA = 1 ELSE IF (FORMOD(1).EQ.'ELECTROSTATIQUE') THEN IELEC = 1 ELSE IF (FORMOD(1).EQ.'MAGNETODYNAMIQUE') THEN IMAGN = 1 ELSE MOTERR(1:8) = FORMOD(1) GOTO 9991 ENDIF ELSE IF (NFOR.GT.1) THEN MOTERR(1:8) = FORMOD(1) GOTO 9991 ENDIF ENDDO IF (IMECA+IELEC+IMAGN .NE. 1) THEN *AV Affiner l'erreur ! write(ioimp,*) 'Une seule formulation dans le modele !' GOTO 9990 ENDIF * PASSAGE DU CHPOINT EN MCHAML IF (IPCHE1.EQ.0) THEN ENDIF * Verification du lieu support du MCHAML de forces volumiques IF (ISUP1.GT.1) THEN GOTO 9990 ENDIF * Verification du lieu support du MCHAML de caracteristiques IF (IPCHE2.NE.0) THEN IF (ISUP2.GT.1) THEN GOTO 9990 ENDIF ENDIF *_______________________________________________________________________ * INITIALISATION DU MCHELM DE VALEURS NODALES *_______________________________________________________________________ L1=6 N1=NSOUS N3=6 SEGINI MCHELM IPCHE3=MCHELM IFOCHE=IFOUR TITCHE='FORCES' C Initialisation de quelques variables (MECANIQUE ou POREUX) IF (IMECA.EQ.1) THEN IF (IFOUR.EQ.-3) THEN NFORDG=3 ELSE IF (IFOUR.EQ.11) THEN NFORDG=2 ELSE IF ((IFOUR.GE.7.AND.IFOUR.LE.10).OR.IFOUR.EQ.14) THEN NFORDG=1 ELSE NFORDG=0 ENDIF ELSE NFORDG=0 ENDIF C_______________________________________________________________________ C C BOUCLE SUR LES SOUS ZONES C_______________________________________________________________________ DO 200 ISOUS=1,NSOUS C C INITIALISATION C IPMINT = 0 IVACAR = 0 IVAFOR = 0 IVAFVO = 0 MOCARA = 0 MOFORC = 0 MOFOVO = 0 MCHAML = 0 C C TRAITEMENT DU MODELE C IMODEL=KMODEL(ISOUS) MELE=NEFMOD IPMAIL=IMAMOD CONM =CONMOD IIPDPG = imodel.IPDPGE CMATE = imodel.CMATEE C____________________________________________________________________ C C ACTIVATION DU MELEME C MELEME=IPMAIL NBNN = meleme.NUM(/1) NBELEM = meleme.NUM(/2) C C CREATION DU TABLEAU INFOS C IF (IRTD.EQ.0) GOTO 510 C_______________________________________________________________________ C C INFORMATIONS SUR L'ELEMENT FINI C_______________________________________________________________________ C iplaz=3 IF (IMAGN .EQ. 1) iplaz=2 if (infmod(/1).lt.2+iplaz) then IF (IERR.NE.0) GOTO 510 INFO=IPINF NBPGAU= INFELL(4) NBG = INFELL(6) IPMINT= INFELL(11) MFR = INFELL(13) LW = INFELL(7) NDDL = INFELL(15) LRE = INFELL(9) IPORE = INFELL(8) IPMIN1=INFELL(12) SEGSUP,INFO ELSE NBPGAU= INFELE(4) NBG = INFELE(6) IPMINT= INFMOD(2+iplaz) ** IPMIN1= INFELE(12) IPMIN1= INFMOD(8) MFR = INFELE(13) LW = INFELE(7) NDDL = INFELE(15) LRE = INFELE(9) IPORE = INFELE(8) ENDIF IPPORE=0 IF(MFR.EQ.33) IPPORE=NBNN NHRM = NIFOUR C MINTE = IPMINT 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 ( FORCES POUR L'INSTANT , C COMPTE TENU DES FORMULATIONS DISPONIBLES ) C + CREATION DU MCHAML C_______________________________________________________________________ C C* IF (FORMOD(1).EQ.'MAGNETODYNAMIQUE') THEN IF (IMAGN .EQ. 1) THEN IF ( NFAC.NE.0 ) THEN GO TO 510 ENDIF NOMID1=MOFORC lsupfo=.true. NCOMP=NFOR N2=1 SEGINI MCHAML ICHAML(ISOUS)=MCHAML NOMCHE(1)='ED' TYPCHE(1)='REAL*8' ELSE moforc=lnomid(2) if (moforc.eq.0) then write(ioimp,*) 'CNEQP : MOFORC = lnomid(2) = 0' endif nomid1=moforc nfor =nomid1.lesobl(/2) nfac =nomid1.lesfac(/2) IF (NFAC.NE.0 .OR. NFOR.NE.NDDL) THEN GO TO 510 ENDIF lsupfo=.false. NCOMP=NFOR-NFORDG NDDL =NDDL-NFORDG N2=NCOMP SEGINI,MCHAML ICHAML(ISOUS)=MCHAML DO 110 ICOMP=1,NCOMP NOMCHE(ICOMP)=NOMID1.LESOBL(ICOMP) TYPCHE(ICOMP)='REAL*8' 110 CONTINUE ENDIF *_______________________________________________________________________ * TRAITEMENT DU CHAMP DE VALEURS NODALES EN ENTREE *_______________________________________________________________________ * ON PREND TOUS LES NOMS DE FORCES COMME COMPOSANTES POSSIBLES * MAIS ON LES MET EN FACULTATIF * PUIS ON CREE LE SEGMENT MOFOVO NBROBL=0 NBRFAC=NCOMP NFOVO=NBRFAC SEGINI NOMID MOFOVO=NOMID DO 120 ICOMP=1,NCOMP LESFAC(ICOMP)=NOMID1.LESOBL(ICOMP) 120 CONTINUE * RECUPERATION DES COMPOSANTES PRESENTES IF (IERR.NE.0) GOTO 510 * ON VERIFIE A POSTERIORI QU'ON A TROUVE QUELQUE CHOSE MPTVAL = IVAFVO NCOSOU = IVAL(/1) NFOVOL = 0 DO 50 I=1,NCOSOU IF (IVAL(I).NE.0) NFOVOL=NFOVOL+1 50 CONTINUE IF(NFOVOL.EQ.0) THEN GO TO 510 ENDIF * CHANGEMENT DE SUPPORT SI BESOIN IF (ISUP1.EQ.1) THEN ENDIF C____________________________________________________________________ C * TRAITEMENT DES CHAMPS DE CARACTERISTIQUES * C____________________________________________________________________ NBROBL=0 NBRFAC=0 NOMID =0 IVECT=0 NOTYPE = MOTYR8 C* IF (FORMOD(1).NE.'MECANIQUE' .AND. C* & FORMOD(1).NE.'POREUX' ) GO TO 777 IF (IMECA .NE. 1) GO TO 777 * EPAISSEUR DANS LE CAS MASSIF EN CONTRAINTES PLANES IF ((MFR.EQ.1.OR.MFR.EQ.33).AND.IFOUR.EQ.-2. + AND.IPCHE2.NE.0)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 ELSE IF (MFR.EQ.27) THEN NBROBL=1 SEGINI NOMID LESOBL(1)='SECT' * CARACTERISTIQUES POUR LES POUTRES ELSE IF (MFR.EQ.7 ) THEN 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' IVECT=1 * CARACTERISTIQUES POUR LES TUYAUX ELSE IF (MFR.EQ.13) THEN NBROBL=2 NBRFAC=4 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='RAYO' LESFAC(1)='RACO' LESFAC(2)='VX ' LESFAC(3)='VY ' LESFAC(4)='VZ ' IVECT=1 * CARACTERISTIQUES POUR LES LINESPRING ELSE IF (MFR.EQ.15) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='FISS' LESOBL(3)='VX ' LESOBL(4)='VY ' LESOBL(5)='VZ ' * CARACTERISTIQUES POUR LES TUYAUX FISSURES ELSE IF (MFR.EQ.17) THEN NBROBL=9 SEGINI NOMID LESOBL(1)='RAYO' LESOBL(2)='EPAI' LESOBL(3)='VX ' LESOBL(4)='VY ' LESOBL(5)='VZ ' LESOBL(6)='VXF ' LESOBL(7)='VYF ' LESOBL(8)='VZF ' LESOBL(9)='ANGL' * CARACTERISTIQUES DES ELEMENTS HOMOGENEISES ELSE IF (MFR.EQ.37) THEN IF(IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN NBROBL=4 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' LESOBL(4)='XINE' ELSE NBROBL=3 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' ENDIF ENDIF NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF MOCARA = NOMID MOTYPE = NOTYPE IF (MOCARA.NE.0) THEN IF (IPCHE2.EQ.0) THEN IF (MOTYPE.NE.MOTYR8) SEGSUP NOTYPE MOTERR(1:8)='CARACTER' MOTERR(9:12)=NOMTP(MELE) MOTERR(13:20)='CNEQ ' GOTO 510 ENDIF $ IVACAR) IF (MOTYPE.NE.MOTYR8) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 510 IF (ivect.eq.1) IVECT=2 IF (ISUP2.EQ.1) THEN IF (IERR.NE.0)THEN ISUP2=0 GOTO 510 ENDIF ENDIF ENDIF C C TAILLES DE MELVAL C 777 CONTINUE C N1EL =NBELEM N1PTEL=NBNN N2PTEL=0 N2EL=0 NBPTEL=NBPGAU NEL =N1EL C C CREATION DU MELVAL DE FORCES NODALES C NS=1 C* IF (FORMOD(1).EQ.'MAGNETODYNAMIQUE') THEN IF (IMAGN .EQ. 1) THEN NCOSOU=1 ELSE NCOSOU=NCOMP ENDIF SEGINI MPTVAL IVAFOR=MPTVAL DO 100 ICOMP=1,NCOSOU SEGINI MELVAL IELVAL(ICOMP)=MELVAL IVAL(ICOMP)=MELVAL 100 CONTINUE 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, poreux ---------------------------------> CNEQ1 C - coq3,dkt,coq4,coq8,coq2 ------------------------> CNEQ2 C - poutre,tuyau,linespring,tuyau fissure,barre ----> CNEQ3 C_______________________________________________________________________ C IF(MELE.EQ.128) GO TO 128 GOTO (99,99,99, 4,99, 4,99, 4,99, 4,99,99,99, 4, 4, 4, 4,99,99,99, 1 99,99, 4, 4, 4, 4,27,27,29,29,99,99,99,99,99,99,99,99,99,99, 2 27,29,29,27,99,29,99,99,27,29,99,99,99,99,99,27,99,99,99,99, 3 99,99,99,99,99,99,99,99, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 4, 4, 4,99,99,99,99,99,99,99,99,99,27,99,99,99,99),MELE C IF (MELE.EQ.193.OR.MELE.EQ.194) GOTO 4 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(5:8)='CNEQ' GOTO 510 C_______________________________________________________________________ C C massifs, poreux C_______________________________________________________________________ C 4 CONTINUE IF (MFR.EQ.71) THEN ELSE & IPORE,NCOMP,IVAFOR,IIPDPG) ENDIF GOTO 510 C_______________________________________________________________________ C C coq3,dkt,coq4,coq8,coq2,dst C_______________________________________________________________________ C 27 CONTINUE & NBPTEL,MELE,IPMINT,IPMIN1,IVAMAT,NMATT,NBGMAT,NELMAT,IMAT,IVAFOR) GOTO 510 C_______________________________________________________________________ C C poutre,tuyau,linespring,tuyau fissure,barre C_______________________________________________________________________ C 29 CONTINUE GO TO 99 C_______________________________________________________________________ C C Element fini rot3 pour la magnetodynamique C_______________________________________________________________________ C 128 CONTINUE GO TO 510 C_______________________________________________________________________ C C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS C_______________________________________________________________________ C 510 CONTINUE IF(ISUP1.EQ.1)THEN ELSE ENDIF IF(ISUP2.EQ.1)THEN ELSE ENDIF NOMID=MOFORC if (nomid.NE.0 .AND. lsupfo) SEGSUP NOMID NOMID=MOFOVO if (nomid.NE.0) SEGSUP NOMID NOMID=MOCARA if (nomid.NE.0) SEGSUP NOMID IF (IERR.EQ.0) THEN ELSE IF (MCHAML.NE.0) SEGSUP MCHAML SEGSUP MCHELM IRET = 0 GO TO 9990 ENDIF 200 CONTINUE IRET = 1 C Desactivation (modele,mchaml) dans tous les cas 9990 CONTINUE notype = MOTYR8 SEGSUP,notype 9991 CONTINUE C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales