cneqp
C CNEQP SOURCE CB215821 24/04/12 21:15:19 11897 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 IPCHP4 Pointeur sur un CHPOINT 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 -INC SMINTE * SEGMENT INFO INTEGER INFELL(JG) ENDSEGMENT * POINTEUR NOMID1.NOMID * 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 ) INTEGER INFOS(NINF) CHARACTER*8 CMATE CHARACTER*(NCONCH) CONM LOGICAL lsupfo INTEGER ISUP1,ISUP2 * IRET = 0 ISUP1 = 0 ISUP2 = 0 IPCHP4 = 0 * * Premieres verifications sur le modele (formulation) MMODEL = IPMODL SEGACT,MMODEL NSOUS = KMODEL(/1) IMECA = 0 IELEC = 0 IMAGN = 0 DO ISOUS = 1, NSOUS IMODEL = KMODEL(ISOUS) SEGACT,IMODEL 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 *_______________________________________________________________________ * * ACTIVATION DU MODELE *_______________________________________________________________________ * MMODEL=IPMODL SEGACT,MMODEL NSOUS=KMODEL(/1) C C ACTIVATION DU CHAMP VOLUMIQUE C MCHEL1=IPCHE1 SEGACT MCHEL1 C C INITIALISATION DU MCHELM DE VALEURS NODALES C L1=6 N1=NSOUS N3=5 SEGINI MCHELM IPCHE5=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_______________________________________________________________________ C DO 200 ISOUS=1,NSOUS C C INITIALISATION C IPMINT = 0 IVACAR = 0 IVAFOR = 0 IVAFVO = 0 MOCARA = 0 MOFORC = 0 MOFOVO = 0 lsupfo=.true. MCHAML = 0 C C TRAITEMENT DU MODELE C IMODEL=KMODEL(ISOUS) SEGACT IMODEL 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 510 C_______________________________________________________________________ C C INFORMATIONS SUR L'ELEMENT FINI C_______________________________________________________________________ C iplaz=3 C* IF (FORMOD(1).EQ.'MAGNETODYNAMIQUE') iplaz=2 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) MINTE = INFELL(11) MFR = INFELL(13) LW = INFELL(7) NDDL = INFELL(15) LRE = INFELL(9) IPORE = INFELL(8) MINTE1=INFELL(12) SEGSUP,INFO ELSE NBPGAU= INFELE(4) NBG = INFELE(6) minte=infmod(2+iplaz) MINTE1= 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 IPMINT = MINTE IPMIN1 = MINTE1 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 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 NCOMP=NFOR NOMID1=MOFORC SEGACT NOMID1 N2=1 SEGINI MCHAML ICHAML(ISOUS)=MCHAML NOMCHE(1)='ED' TYPCHE(1)='REAL*8' ELSE if(lnomid(2).ne.0) then moforc=lnomid(2) nomid1=moforc segact nomid1 nfor=nomid1.lesobl(/2) nfac=nomid1.lesfac(/2) lsupfo=.false. else NOMID1=MOFORC SEGACT,NOMID1 endif IF (NFAC.NE.0 .OR. NFOR.NE.NDDL) THEN GO TO 510 ENDIF 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 * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' SEGSUP NOTYPE 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 * MOTERR(1:8)='FOR. VOL' * MOTERR(9:12)=NOMTP(MELE) * MOTERR(13:20)='CNEQ ' 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 * 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 NBROBL=0 NBRFAC=1 SEGINI NOMID LESFAC(1)='DIM3' * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' * * 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' * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' * * SECTION POUR LES BARRES * ELSE IF (MFR.EQ.27) THEN NBROBL=1 SEGINI NOMID LESOBL(1)='SECT' * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' * * 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 * NBTYPE=9 SEGINI NOTYPE TYPE(1)='REAL*8' TYPE(2)='REAL*8' TYPE(3)='REAL*8' TYPE(4)='REAL*8' TYPE(5)='REAL*8' TYPE(6)='REAL*8' TYPE(7)='REAL*8' TYPE(8)='REAL*8' TYPE(9)='REAL*8' * * 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 C NBTYPE=6 SEGINI NOTYPE TYPE(1)='REAL*8' TYPE(2)='REAL*8' TYPE(3)='REAL*8' TYPE(4)='REAL*8' TYPE(5)='REAL*8' TYPE(6)='REAL*8' * * 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 ' C NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' * * 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' * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' * * 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 * NBTYPE=1 SEGINI NOTYPE TYPE(1)='REAL*8' ENDIF * MOCARA=NOMID NCARA=NBROBL NCARF=NBRFAC NCARR=NCARA+NCARF * IF (MOCARA.NE.0) THEN IF (IPCHE2.EQ.0) THEN SEGSUP NOTYPE MOTERR(1:8)='CARACTER' MOTERR(9:12)=NOMTP(MELE) MOTERR(13:20)='CNEQ ' GOTO 510 ENDIF MOTYPE=NOTYPE $ IVACAR) 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 CAS NON PREVU C CALL CNEQ3(IPMAIL,LRE,NFOVO,LW,IVACAR,NCARR,IVECT,MELE, C & IVAFVO,ISOUS,NBPGAU,NBPTEL,IPMINT,NCOMP,IVAFOR) C GOTO 510 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 C C IF(ISUP1.EQ.1)THEN ELSE ENDIF C IF(ISUP2.EQ.1)THEN ELSE ENDIF C NOMID=MOFORC if(lsupfo.AND.MOFORC.NE.0) SEGSUP NOMID NOMID=MOFOVO IF (MOFOVO.NE.0) SEGSUP NOMID NOMID=MOCARA IF (MOCARA.NE.0) SEGSUP NOMID C IF (IERR.EQ.0) THEN ELSE IF (MCHAML.NE.0) SEGSUP MCHAML SEGSUP MCHELM IRET = 0 GO TO 9990 ENDIF C 200 CONTINUE C_______________________________________________________________________ C C TRANSFORMATION DU CHAMELEM EN CHPOINT C_______________________________________________________________________ C IRET = 1 C C Desactivation (modele,mchaml) dans tous les cas 9990 CONTINUE 9991 CONTINUE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales