iddefo
C IDDEFO SOURCE MB234859 25/08/04 21:15:15 12339 C======================================================================= C= RECHERCHE DES NOMS DE COMPOSANTES DE DEFORMATIONS = C= ------------------------------------------------- = C= = C= Entrees : = C= IPMODL pointeur ACTIF sur objet IMODEL = C= IFOU valeur de IFOUR de CCOPTIO = C= = C= Sorties : = C= IPNOMC pointeur de type NOMID sur les listes de noms de = C= composantes OBLigatoires et FACultatives = C= NBROBL nombre de composantes OBLigatoires = C= NBRFAC nombre de composantes FACultatives = C= = C= Remarque : Voir INOMID ou CCOPTIO pour signification IFOUR = C======================================================================= C C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C -INC PPARAM -INC CCOPTIO C==DEB= FORMULATION HHO == Include specifique ========================== -INC CCHHOPA C==FIN= FORMULATION HHO ================================================ -INC SMMODEL POINTEUR nomid1.nomid C NBROBL = 0 NBRFAC = 0 C IMODEL=IPMODL NOMID =IMODEL.LNOMID(5) C C Ne pas recreer le NOMID si deja present IF (NOMID.NE.0) THEN NBROBL=LESOBL(/2) NBRFAC=LESFAC(/2) IPNOMC=NOMID RETURN ENDIF C MELE=IMODEL.NEFMOD MFR2=NUMFOR(IMODEL) * * MACRO ELEMENT * IF (MFR.EQ.61)THEN IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='EPS1' LESOBL(2)='CZ1 ' LESOBL(3)='GXY ' LESOBL(4)='EPS2' LESOBL(5)='CZ2 ' ENDIF C ================================================================= C FORMULATION MECANIQUE/LIAISON/NAVIER_STOKES/HHO C ================================================================= ELSE IF (MFR2.EQ.2.OR.MFR2.EQ.24.OR.MFR2.EQ.52.OR. & MFR2.EQ.HHO_MFR_ELEMENT) THEN C NMAT=MATMOD(/2) IF (IIMPE.NE.0) THEN C C Recuperation du NOMID des composantes primales NOMID1=IMODEL.LNOMID(1) NBROBL=NOMID1.LESOBL(/2) NBRFAC=NOMID1.LESFAC(/2) SEGINI,NOMID DO IO = 1,NBROBL LESOBL(IO)='E'//NOMID1.LESOBL(IO)(1:3) ENDDO DO IO = 1,NBRFAC LESFAC(IO)='E'//NOMID1.LESFAC(IO)(1:3) ENDDO IPNOMC=NOMID RETURN ENDIF C C Elements MASSIFS (standard,incompressibles,XFEM,Navier_Stokes,HHO) C ================ IF (MFR.EQ.1.OR.MFR.EQ.31.OR.MFR.EQ.63.OR.MFR.EQ.52.OR. & MFR.EQ.HHO_MFR_ELEMENT) THEN IF (IFOUR.EQ.-3.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' ELSE IF (IFOUR.EQ.0) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' ELSE IF (IFOUR.EQ.1) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='GART' LESOBL(6)='GAZT' ELSE IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='GAXZ' LESOBL(6)='GAYZ' ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15.AND.MFR.EQ.1) THEN NBROBL=3 SEGINI,NOMID IF (IFOUR.LE.11) THEN LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' ELSE IF (IFOUR.GE.12.AND.IFOUR.LE.14) THEN LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' ELSE IF (IFOUR.EQ.15) THEN LESOBL(1)='EPRR' C Voir TC pour LESOBL(2)='EPFF' ? LESOBL(2)='EPZZ' LESOBL(3)='EPTT' ENDIF ENDIF C C Elements COQUES C =============== ELSE IF (MFR.EQ.3.OR.MFR.EQ.39) THEN NPINT=INFMOD(1) IF (NPINT.EQ.0) THEN IF (IFOUR.EQ.2.OR.IFOUR.EQ.1) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='GAST' LESOBL(4)='RTSS' LESOBL(5)='RTTT' LESOBL(6)='RTST' ELSE IF (IFOUR.EQ.0) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='RTSS' LESOBL(4)='RTTT' ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPZZ' LESOBL(3)='RTSS' LESOBL(4)='RTZZ' ENDIF ELSE IF (MFR.EQ.3.AND.IFOUR.EQ.2) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='EPNN' LESOBL(4)='GAST' ENDIF ENDIF C C Elements COQUE EPAISSE C ====================== ELSE IF (MFR.EQ.5) THEN NBROBL=5 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='GAST' LESOBL(4)='GASN' LESOBL(5)='GATN' C C Element de COQUE en CISAILLEMENT TRANSVERSE (tridimensionnel) C =========================================== ELSE IF (MFR.EQ.9) THEN NPINT=INFMOD(1) IF (NPINT.EQ.0) THEN IF (IFOUR.EQ.2) THEN NBROBL=8 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='GAST' LESOBL(4)='RTSS' LESOBL(5)='RTTT' LESOBL(6)='RTST' LESOBL(7)='GASN' LESOBL(8)='GATN' ENDIF ENDIF C C Elements POUTRES ET TUYAUX C ========================== ELSE IF (MFR.EQ.7.OR.MFR.EQ.13) THEN IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPS ' LESOBL(2)='GXY ' LESOBL(3)='GXZ ' LESOBL(4)='CX ' LESOBL(5)='CY ' LESOBL(6)='CZ ' ELSE IF (IFOUR.EQ.-3.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='EPS ' LESOBL(2)='GXY ' LESOBL(3)='CZ ' ENDIF C C Element LIA2 C ============ ELSE IF (MFR.EQ.51) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPS ' LESOBL(2)='GXY ' LESOBL(3)='GXZ ' LESOBL(4)='CX ' LESOBL(5)='CY ' LESOBL(6)='CZ ' C C Element JOINT JOI1 C ================== ELSE IF (MFR.EQ.75) THEN IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EXX ' LESOBL(2)='GXY ' LESOBL(3)='GXZ ' LESOBL(4)='CXX ' LESOBL(5)='CXY ' LESOBL(6)='CXZ ' ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='EXX ' LESOBL(2)='GXY ' LESOBL(3)='CXZ ' ENDIF C C Element JOINT JOI2 C ================= ELSE IF (MFR.EQ.35) THEN IF (IFOUR.EQ.2) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' ELSE IF ((IFOUR.EQ.-3).OR.(IFOUR.EQ.-2).OR.(IFOUR.EQ.-1).OR. & (IFOUR.EQ.0)) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' ENDIF C C Element BARRE EXCENTREE C ======================= ELSE IF (MFR.EQ.49) THEN NBROBL=1 SEGINI,NOMID LESOBL(1)='EPSS' C C Element LINESPRING C ================== ELSE IF (MFR.EQ.15) THEN IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPZZ' LESOBL(2)='GAXZ' LESOBL(3)='GAYZ' LESOBL(4)='RTXX' LESOBL(5)='RTZZ' LESOBL(6)='DJP ' ENDIF C C Element de MEMBRANE C =================== ELSE IF (MFR.EQ.25) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='EPSS' LESOBL(2)='EPTT' LESOBL(3)='GAST' C C Element UNIAXIALE C ================= ELSE IF (MFR.EQ.27) THEN NBROBL=1 SEGINI,NOMID LESOBL(1)='EPSS' C C Element TUYAU FISSURE C ===================== ELSE IF (MFR.EQ.17) THEN IF (IFOUR.EQ.2) THEN NBROBL=8 SEGINI,NOMID LESOBL(1)='EPS ' LESOBL(2)='GXY ' LESOBL(3)='GXZ ' LESOBL(4)='CX ' LESOBL(5)='CY ' LESOBL(6)='CZ ' LESOBL(7)='EPS7' LESOBL(8)='EPS8' ENDIF C C Element SECTION/FIBRE C ===================== ELSE IF (MFR.EQ.47) THEN IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='GAXY' ELSE IF (IFOUR.EQ.2) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='GAXY' LESOBL(3)='GAXZ' ENDIF C C Element coaxial COS2 C ==================== ELSE IF ( MFR.EQ.78) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='GLIT' LESOBL(2)='GLIN' LESOBL(3)='GLIM' C C Element JOINT CISAILLEMENT C ========================= ELSE IF (MFR.EQ.53) THEN IF ((IFOUR.EQ.-3).OR.(IFOUR.EQ.-2).OR.(IFOUR.EQ.-1)) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' ENDIF C C Elements JOINT GENERALISE C ========================= ELSE IF (MFR.EQ.55) THEN IF ((IFOUR.EQ.-3).OR.(IFOUR.EQ.-2).OR.(IFOUR.EQ.-1)) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' LESOBL(3)='EPTT' LESOBL(4)='EPZZ' ELSE IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' LESOBL(4)='EPTT' LESOBL(5)='EPUU' LESOBL(6)='GATU' ENDIF C C Elements ZONE COHESIVE C ========================== ELSE IF (MFR.EQ.77) THEN IF (IFOUR.GT.0) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' ELSE IF (IFOUR.LE.0) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' ENDIF ENDIF C ================================================================= C FORMULATION THERMIQUE C ================================================================= ELSE IF (MFR2.EQ.29) THEN IF (IFOUR.EQ.2) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='GRDX' LESOBL(2)='GRDY' LESOBL(3)='GRDZ' ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='GRDX' LESOBL(2)='GRDY' ELSE IF (IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='GRDX' LESOBL(2)='GRDY' C*OF LESOBL(1)='GRDR' C*OF LESOBL(2)='GRDZ' ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15) THEN NBROBL=1 SEGINI,NOMID LESOBL(1)='GRDX' ENDIF C ================================================================= C FORMULATION POREUX C ================================================================= ELSE IF (MFR2.EQ.33) THEN C C Elements POREUX C ================ IF (MFR.EQ.33) THEN IF (MELE.GE.79.AND.MELE.LE.83) THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=5 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='PRES' ELSE IF (IFOUR.EQ.0) THEN NBROBL=5 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='PRES' ELSE IF (IFOUR.EQ.1) THEN NBROBL=7 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='GART' LESOBL(6)='GAZT' LESOBL(7)='PRES' ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN NBROBL=7 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='GAXZ' LESOBL(6)='GAYZ' LESOBL(7)='PRES' ENDIF ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN IF (IFOUR.EQ.2) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' LESOBL(4)='PRES' ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.0) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' LESOBL(3)='PRES' ENDIF ENDIF C C Elements POREUX Type Q C ====================== ELSE IF (MFR.EQ.57) THEN IF (MELE.GE.173.AND.MELE.LE.177) THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='PRES' LESOBL(6)='PREQ' ELSE IF (IFOUR.EQ.0) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='PRES' LESOBL(6)='PREQ' ELSE IF (IFOUR.EQ.1) THEN NBROBL=8 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='GART' LESOBL(6)='GAZT' LESOBL(7)='PRES' LESOBL(8)='PREQ' ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN NBROBL=8 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='GAXZ' LESOBL(6)='GAYZ' LESOBL(7)='PRES' LESOBL(8)='PREQ' ENDIF ELSE IF (MELE.GE.185.AND.MELE.LE.187) THEN IF (IFOUR.EQ.2) THEN NBROBL=5 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' LESOBL(4)='PRES' LESOBL(5)='PREQ' ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.0) THEN NBROBL=4 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' LESOBL(3)='PRES' LESOBL(4)='PREQ' ENDIF ENDIF C C Elements POREUX Type R C ====================== ELSE IF (MFR.EQ.59) THEN IF (MELE.GE.178.AND.MELE.LE.182) THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1) THEN NBROBL=7 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='PRES' LESOBL(6)='PREQ' LESOBL(7)='TPT ' ELSE IF (IFOUR.EQ.0) THEN NBROBL=7 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='PRES' LESOBL(6)='PREQ' LESOBL(7)='TPT ' ELSE IF (IFOUR.EQ.1) THEN NBROBL=9 SEGINI,NOMID LESOBL(1)='EPRR' LESOBL(2)='EPZZ' LESOBL(3)='EPTT' LESOBL(4)='GARZ' LESOBL(5)='GART' LESOBL(6)='GAZT' LESOBL(7)='PRES' LESOBL(8)='PREQ' LESOBL(9)='TPT ' ELSE IF (IFOUR.EQ.2.OR.IFOUR.EQ.-3) THEN NBROBL=9 SEGINI,NOMID LESOBL(1)='EPXX' LESOBL(2)='EPYY' LESOBL(3)='EPZZ' LESOBL(4)='GAXY' LESOBL(5)='GAXZ' LESOBL(6)='GAYZ' LESOBL(7)='PRES' LESOBL(8)='PREQ' LESOBL(9)='TPT ' ENDIF ELSE IF (MELE.GE.188.AND.MELE.LE.190) THEN IF (IFOUR.EQ.2) THEN NBROBL=6 SEGINI,NOMID LESOBL(1)='DRS1' LESOBL(2)='DRS2' LESOBL(3)='DRN ' LESOBL(4)='PRES' LESOBL(5)='PREQ' LESOBL(6)='TPT ' ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.0) THEN NBROBL=5 SEGINI,NOMID LESOBL(1)='DRSN' LESOBL(2)='DRN ' LESOBL(3)='PRES' LESOBL(4)='PREQ' LESOBL(5)='TPT ' ENDIF ENDIF ENDIF C ================================================================= C FORMULATION ELECTROSTATIQUE C ================================================================= ELSE IF (MFR2.EQ.71) THEN IF (IFOUR.EQ.2) THEN NBROBL=3 SEGINI,NOMID LESOBL(1)='EELX ' LESOBL(2)='EELY ' LESOBL(3)='EELZ ' ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='EELX ' LESOBL(2)='EELY ' ELSE IF (IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN NBROBL=2 SEGINI,NOMID LESOBL(1)='EELR ' LESOBL(2)='EELZ ' ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15) THEN NBROBL=1 SEGINI,NOMID IF (IFOUR.LE.11) THEN LESOBL(1)='EELX ' ELSE LESOBL(1)='EELR ' ENDIF ENDIF C ================================================================= C FORMULATION DIFFUSION C ================================================================= ELSE IF (MFR2.EQ.73) THEN C*DEB = Merci de conserver ces lignes ! (Developpements futurs) C*XC ====== C*XC 22.0 - BARRE C*XC ====== C*X IF (MELE.EQ.46) THEN C*X NBROBL=1 C*X SEGINI,NOMID C*X LESOBL(1)='GS ' C*X ELSE C*X IF (IFOUR.EQ.2) THEN C*X NBROBL=3 C*X SEGINI,NOMID C*X LESOBL(1)='GX ' C*X LESOBL(2)='GY ' C*X LESOBL(3)='GZ ' C*X ELSE IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2.OR.IFOUR.EQ.-3) THEN C*X NBROBL=2 C*X SEGINI,NOMID C*X LESOBL(1)='GX ' C*X LESOBL(2)='GY ' C*X ELSE IF (IFOUR.EQ.1.OR.IFOUR.EQ.0) THEN C*X NBROBL=2 C*X SEGINI,NOMID C*X LESOBL(1)='GR ' C*X LESOBL(2)='GZ ' C*X ELSE IF (IFOUR.GE.3.AND.IFOUR.LE.15) THEN C*X NBROBL=1 C*X SEGINI,NOMID C*X IF (IFOUR.LE.11) THEN C*X LESOBL(1)='GX ' C*X ELSE C*X LESOBL(1)='GR ' C*X ENDIF C*X ENDIF C*X ENDIF C*XC* Ajout du nom de l'INCOnnue (DDL) contenu dans TYMODE(1) C*X DO i = 1, NBROBL C*X LESOBL(i)(3:8) = imodel.TYMODE(1)(1:6) C*X ENDDO C*FIN = Merci de conserver ces lignes ! (Developpements futurs) C ================================================================= ENDIF C IF (NOMID.NE.0) THEN IF (IFOMOD.EQ.6) THEN NBRFA0 = NBRFAC NBRFAC = NBROBL + (NBRFA0*2) SEGADJ,NOMID DO IMO = 1,NBROBL LESFAC(NBRFA0 + IMO)(2:4) = LESOBL(IMO)(1:3) LESFAC(NBRFA0 + IMO)(1:1) = 'I' ENDDO DO IMO = 1,NBRFA0 LESFAC(NBRFA0+NBROBL+IMO)(2:4) = LESFAC(IMO)(1:3) LESFAC(NBRFA0+NBROBL+IMO)(1:1) = 'I' ENDDO ENDIF ENDIF C IF (NOMID.NE.0) SEGACT,NOMID*NOMOD IPNOMC=NOMID END
© Cast3M 2003 - Tous droits réservés.
Mentions légales