idcara
C IDCARA SOURCE OF166741 24/05/06 21:15:15 11082 *--------------------------------------------------------------------* * RECHERCHE DES NOMS DE CARACTERISTIQUES * *--------------------------------------------------------------------* * * * ENTREES: * * * * IPMODE Pointeur sur un MMODEL.KMODEL * * MFR0 Numero de Formulation * * - Sert seulement si different de celui calcule avec IMODEL * * * * SORTIES: * * * * IPNOMC Pointeur sur les tables de noms de composantes * * obligatoires et facultatives * * NBROBL leur nombre ( =0 si pas trouve ) * * NBRFAC leur nombre ( =0 si pas trouve ) * * * *--------------------------------------------------------------------* * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C==DEB= FORMULATION HHO == Include specifique ========================== -INC CCHHOPA C==FIN= FORMULATION HHO ================================================ -INC SMMODEL CHARACTER*16 NOM16 NOMID =0 NBROBL=0 NBRFAC=0 IMODEL=IPMODE C On suppose que le IMODEL est actif C SEGACT,IMODEL C Recuperation de IFOUR dans CCOPTIO.INC IFOU = IFOUR MELE = NEFMOD NOMID = IMODEL.LNOMID(7) C S'ils sont deja presents dans le IMODEL, on ne les refait pas... IF(NOMID .NE. 0 .AND. (MFR .EQ. MFR0))THEN SEGACT,NOMID NBROBL=LESOBL(/2) NBRFAC=LESFAC(/2) IPNOMC = NOMID RETURN ENDIF do im = 1,matmod(/2) if (matmod(im).eq.'IMPEDANCE') then RETURN endif enddo C Sinon on les determine MFR = MFR0 C=DEB== FORMULATION HHO === HHO = MECANIQUE + MASSIF =================== IF (MFR0 .EQ. HHO_MFR_ELEMENT) MFR = 1 C=FIN== FORMULATION HHO ================================================ C Cas un peu particulier de la THERMIQUE et de la DIFFUSION NOM16=FORMOD(1) IF(NOM16 .EQ. 'THERMIQUE ') GOTO 1001 IF(NOM16 .EQ. 'DIFFUSION ') GOTO 1002 IF (MFR .EQ.1 .OR. MFR .EQ.45) GOTO 1003 IF (IFOUR.LT.-3 .OR. IFOUR.GT.2 ) GOTO 1003 * * ELEMENTS CIFL MACRO ELEMENT CISAILLEMENT FLEXION * IF (MELE.EQ.258)THEN IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-2) THEN NBROBL=2 SEGINI NOMID LESOBL(1)= 'SECT' LESOBL(2)= 'INRZ' ENDIF ENDIF * * COQUE MINCE OU CISAILLEMENT TRANSVERSE * IF (MFR.EQ.3.OR.MFR.EQ.9) THEN NBROBL=1 NBRFAC=2 SEGINI NOMID LESOBL(1)='EPAI' LESFAC(1)='CALF' LESFAC(2)='EXCE' * * COQUE EPAISSE * ELSE IF (MFR.EQ.5) THEN NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='EPAI' LESFAC(1)='EXCE' * * POUTRES TRIDIM * ELSE IF (MFR.EQ.7) THEN IF (IFOUR.EQ.2) THEN NBRFAC=10 NBROBL=4 SEGINI NOMID LESOBL(1)= 'TORS' LESOBL(2)= 'INRY' LESOBL(3)= 'INRZ' LESOBL(4)= 'SECT' LESFAC(1)= 'SECY' LESFAC(2)= 'SECZ' LESFAC(3)= 'DX ' LESFAC(4)= 'DY ' LESFAC(5)= 'DZ ' LESFAC(6)= 'OMEG' LESFAC(7)= 'VECT' LESFAC(8)= 'VX ' LESFAC(9)= 'VY ' LESFAC(10)= 'VZ ' * * POUTRES 2D ELSEIF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN NBRFAC=2 NBROBL=2 SEGINI NOMID LESOBL(1)= 'SECT' LESOBL(2)= 'INRZ' LESFAC(1)= 'SECY' LESFAC(2)= 'DY ' * ENDIF * * LIA2 : ELEMENT 3D DE LIAISON A 2 NOEUDS * ELSE IF (MFR.EQ.51) THEN NBROBL=9 SEGINI NOMID LESOBL(1)='RLUX' LESOBL(2)='RLUY' LESOBL(3)='RLUZ' LESOBL(4)='RLRX' LESOBL(5)='RLRY' LESOBL(6)='RLRZ' LESOBL(7)='VX ' LESOBL(8)='VY ' LESOBL(9)='VZ ' * * BAEX : BARRE EXCENTRE * ELSE IF (MFR.EQ.49) THEN NBROBL=6 SEGINI NOMID LESOBL(1)='SECT' LESOBL(2)='EXCZ' LESOBL(3)='EXCY' LESOBL(4)='VX ' LESOBL(5)='VY ' LESOBL(6)='VZ ' * * TUYAU ACOUSTIQUE PURE * ELSE IF (MFR.EQ.41) THEN NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='RAYO' LESFAC(1)='RACO' * * TUYAU TRIDIM * ELSE IF (MFR.EQ.13) THEN IF (IFOUR.EQ.2) THEN NBROBL=2 NBRFAC=13 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='RAYO' LESFAC(1)='RACO' LESFAC(2)='PRES' LESFAC(3)='CISA' LESFAC(4)='CFFX' LESFAC(5)='CFMX' LESFAC(6)='CFMY' LESFAC(7)='CFMZ' LESFAC(8)='CFPR' LESFAC(9)= 'OMEG' LESFAC(10)='VECT' LESFAC(11)='VX ' LESFAC(12)='VY ' LESFAC(13)='VZ ' ENDIF * * TUYO * ELSE IF (MFR.EQ.39) THEN IF (IFOUR.EQ.2) THEN NBROBL=2 NBRFAC=6 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='RAYO' LESFAC(1)='RACO' LESFAC(2)='PRES' LESFAC(3)='VECT' LESFAC(4)='VX ' LESFAC(5)='VY ' LESFAC(6)='VZ ' ENDIF * * LINESPRING * ELSE IF (MFR.EQ.15) THEN IF (IFOUR.EQ.2) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='EPAI' LESOBL(2)='FISS' LESOBL(3)='VX ' LESOBL(4)='VY ' LESOBL(5)='VZ ' ENDIF * * TUYAU FISSURE * ELSE IF (MFR.EQ.17) THEN IF (IFOUR.EQ.2) THEN NBROBL=9 SEGINI NOMID c LESOBL(1)='RAYO' c LESOBL(2)='EPAI' c LESOBL(3)='ANGL' c LESOBL(4)='VX ' c LESOBL(5)='VY ' c LESOBL(6)='VZ ' c LESOBL(7)='VXF ' c LESOBL(8)='VYF ' c LESOBL(9)='VZF ' 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' ENDIF * * BARRE or COS2 * ELSE IF (MFR.EQ.27.OR.MFR.EQ.78) THEN NBROBL=1 SEGINI NOMID LESOBL(1)='SECT' * * ELEMENT HOMOGENE * ELSE IF (MFR.EQ.37) THEN IF (IFOUR.EQ.1.OR.IFOUR.EQ.0.OR.IFOUR.EQ.2) THEN NBROBL=5 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' LESOBL(4)='SECT' LESOBL(5)='INRZ' ELSE NBROBL=3 NBRFAC=2 SEGINI NOMID LESOBL(1)='SCEL' LESOBL(2)='SFLU' LESOBL(3)='EPS ' LESFAC(1)='NOF1' LESFAC(2)='NOF2' ENDIF * * RACCORD LIQUIDE TUYAU * ELSE IF (MFR.EQ.43) THEN NBROBL=1 NBRFAC=5 SEGINI NOMID LESOBL(1)='RAYO' LESFAC(1)='RACO' LESFAC(2)='VECT' LESFAC(3)='VX ' LESFAC(4)='VY ' LESFAC(5)='VZ ' * * ELEMENTS DE SECTION * ELSE IF (MFR.EQ.47) THEN IF (IFOUR.EQ.2) THEN NBROBL=2 SEGINI NOMID LESOBL(1)='ALPY' LESOBL(2)='ALPZ' ELSE NBROBL=1 NBRFAC=0 SEGINI NOMID LESOBL(1)='ALPY' ENDIF C * caracteristique supplementaire pour le SEGS IF(MELE.EQ.166)THEN NBROBL=NBROBL+1 SEGADJ,NOMID LESOBL(NBROBL)='LARG' ENDIF * caracteristique supplementaire pour le POJS IF(MELE.EQ.167)THEN NBROBL=NBROBL+1 SEGADJ,NOMID LESOBL(NBROBL)='SECT' ENDIF C * * JOINTS GENERALISE * ELSE IF (MFR.EQ.55) THEN CcPPj NBROBL=1 CcPPj NBRFAC=0 CcPPj SEGINI NOMID CcPPj LESOBL(1)='EPAI' NBROBL=0 NBRFAC=1 SEGINI NOMID LESFAC(1)='EPAI' * * LIQUIDE * ELSE IF (MFR.EQ.11.OR.MFR.EQ.19.OR.MFR.EQ.21) THEN IF (IFOUR.EQ.2) THEN NBROBL=0 NBRFAC=3 SEGINI NOMID LESFAC(1)='VX ' LESFAC(2)='VY ' LESFAC(3)='VZ ' ELSE NBROBL=0 NBRFAC=2 SEGINI NOMID LESFAC(1)='VX ' LESFAC(2)='VY ' ENDIF * ENDIF C write(6,*) 'MFR =',MFR C Par DEFAUT : segment VIDE C =========================== IF (NOMID.EQ.0) THEN SEGINI,NOMID ELSE 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 SEGACT,NOMID*NOMOD IPNOMC=NOMID RETURN C Formulation THERMIQUE C =========================== 1001 CONTINUE IF(MFR.EQ.79 .OR. MFR.EQ.27) then C TUY2, TUY3 pour ADVECTION ou BARR pour CONDUCTION NBROBL=1 SEGINI NOMID LESOBL(1)= 'SECT' ELSEIF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN C COQ3,COQ4,COQ6,COQ8 pour CONDUCTION NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='EPAI ' LESFAC(1)='EXCE ' ELSE C MASSIF pour CONDUCTION NBROBL=0 SEGINI NOMID ENDIF SEGACT,NOMID*NOMOD IPNOMC=NOMID RETURN C Formulation DIFFUSION C =========================== 1002 CONTINUE IF(MFR.EQ.79 .OR. MFR.EQ.27) then C TUY2, TUY3 pour ADVECTION ou BARR pour CONDUCTION NBROBL=1 SEGINI NOMID LESOBL(1)= 'SECT' ELSEIF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN C COQ3,COQ4,COQ6,COQ8 pour CONDUCTION NBROBL=1 NBRFAC=1 SEGINI NOMID LESOBL(1)='EPAI ' LESFAC(1)='EXCE ' ELSE C MASSIF pour CONDUCTION NBROBL=0 SEGINI NOMID ENDIF SEGACT,NOMID*NOMOD IPNOMC=NOMID RETURN 1003 CONTINUE C ajout de la densite (rendement) vectorielle du constituant kich IF (NOMID.EQ.0) SEGINI NOMID ifac = nbrfac NBRFAC= nbrfac + 10 segadj nomid lesfac(ifac + 1) = 'REND' lesfac(ifac + 2) = 'W1X ' lesfac(ifac + 3) = 'W1Y ' lesfac(ifac + 4) = 'W1Z ' lesfac(ifac + 5) = 'W2X ' lesfac(ifac + 6) = 'W2Y ' lesfac(ifac + 7) = 'W2Z ' lesfac(ifac + 8) = 'REN1' lesfac(ifac + 9) = 'REN2' lesfac(ifac + 10)= 'REN3' SEGACT,NOMID*NOMOD IPNOMC=NOMID RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales