C FRIGTA SOURCE PV 21/12/18 07:15:04 11240 SUBROUTINE FRIGTA(IPMODL,IPCAR,IPVARI,CRIGI) ********************************************************************** * * COMPOSANTES DE LA RIGIDITE (HOOK) TANGENTE * CONTRIBUTION DES ELEMENTS DE CHAQUE SS_ZONE DU MODELE DE * SECTION * ********************************************************************** * * ENTREES: * * IPMODL = POINTEUR SUR UN OBJET MMODEL * IPCAR = POINTEUR SUR UN MCHAML DE CARACTERISTIQUES * IPVARI = POINTEUR SUR UN MCHAML DE VARIABLE INTERNE * * SORTIES: * * ************************************************************************ * Pierre Pegon (ISPRA) Juillet/Aout 1993 *********************************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMELEME -INC SMCOORD -INC SMMODEL -INC SMINTE -INC CCHAMP C DIMENSION CRIGI(12) * 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 CHARACTER*16 MOMODL(10) PARAMETER ( NINF=3 ) INTEGER INFOS(NINF) LOGICAL lsupva,lsupma,lsupca lsupma=.false. lsupca=.false. lsupva=.false. C NHRM=NIFOUR C C VERIFICATION DU LIEU SUPPORT DU MCHAML DE CARACTERISTIQUES C CALL QUESUP(IPMODL,IPCAR,5,0,ISUP5,IRETCA) IF (ISUP5.GT.1) RETURN * * VERIFICATION DU LIEU SUPPORT DU MCHAML DE VARIABLES INTERNES * CALL QUESUP(IPMODL,IPVARI,5,0,ISUP5,IRETVI) IF (ISUP5.GT.1) RETURN C C ACTIVATION DU MODELE C MMODEL=IPMODL SEGACT MMODEL NSOUS=KMODEL(/1) C C MISE A ZERO DES RIGIDITES C DO IE1=1,12 CRIGI(IE1)=0.D0 ENDDO C____________________________________________________________________ C C DEBUT DE LA BOUCLE SUR LES DIFFERENTES ZONES C____________________________________________________________________ C DO 1000 ISOUS=1,NSOUS * * INITIALISATION * NMATF=0 NMATR=0 MOMATR=0 IVAMAT=0 NCARA=0 NCARF=0 MOCARA=0 IVACAR=0 MOVARI=0 IVARI=0 IPMINT=0 C C ON RECUPERE L INFORMATION GENERALE C IMODEL=KMODEL(ISOUS) SEGACT IMODEL IPMAIL=IMAMOD CONM =CONMOD * MELE=NEFMOD MELEME=IMAMOD SEGACT MELEME NBNN=NUM(/1) NBELEM=NUM(/2) C+PPf C ON EVACUE LE CAS DU SEGS EN 3D IF(MELE.EQ.166.AND.IDIM.EQ.3)THEN CALL ERREUR(832) GOTO 9990 ENDIF C+PPf C C TRAITEMENT DU MODELE C NFOR=FORMOD(/2) NMAT=MATMOD(/2) C C NATURE DU MATERIAU C CALL NOMATE(FORMOD,NFOR,MATMOD,NMAT,CMATE,MATE,INFIBR) IF (CMATE.EQ.' ')THEN CALL ERREUR(251) GOTO 9990 ENDIF IF(MATE.NE.1)THEN CALL ERREUR(635) GOTO 9990 ENDIF CALL TEMANF(INFIBR,NIFIBR) IF((NIFIBR.EQ.0).AND.(INFIBR.NE.0))THEN CALL ERREUR(636) GOTO 9990 ENDIF INFIBR=NIFIBR * C____________________________________________________________________ C C INFORMATION SUR L'ELEMENT FINI C____________________________________________________________________ C MFR =INFELE(13) IPPORE=0 IF(MFR.EQ.33) IPPORE=NBNN IF (MFR.NE.47)THEN CALL ERREUR(637) GOTO 9990 ENDIF NBG =INFELE(6) NBGS =INFELE(4) LRE =INFELE(9) * MINTE=INFELE(11) MINTE=INFMOD(7) IPMINT=MINTE SEGACT,MINTE C C CREATION DU TABLEAU INFOS C CALL IDENT(IPMAIL,CONM,IPCAR,IPCAR,INFOS,IRTD) IF (IRTD.EQ.0) GOTO 9990 * * TRAITEMENT DU CHAMP DE CARACTERISTIQUES MATERIELLES if(lnomid(6).ne.0) then nomid=lnomid(6) segact nomid momatr=nomid nmatr=lesobl(/2) nmatf=lesfac(/2) lsupma=.false. else lsupma=.true. CALL IDMATR(MFR,IMODEL,MOMATR,NMATR,NMATF) endif IF (MOMATR.EQ.0) THEN MOTERR(1:4)='MATE' MOTERR(5:8)=NOMTP(MELE) CALL ERREUR (76) GOTO 9990 ENDIF * IF (NIFIBR.NE.8) THEN NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' * ELSE NBTYPE=13 SEGINI NOTYPE MOTYPE=NOTYPE DO I=1,NBTYPE TYPE(I)='REAL*8' ENDDO TYPE(10)='POINTEUREVOLUTIO' TYPE(11)='POINTEUREVOLUTIO' * ENDIF * CALL KOMCHA(IPCAR,IPMAIL,CONM,MOMATR,MOTYPE,1, & INFOS,3,IVAMAT) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 NMATT=NMATR+NMATF * IF (ISUP5.EQ.1) THEN CALL VALCHE(IVAMAT,NMATT,IPMINT,IPPORE,MOMATR,MELE) IF(IERR.NE.0)THEN ISUP5=0 GOTO 9990 ENDIF ENDIF * * TRAITEMENT DU CHAMP DE CARACTERISTIQUES GEOMETRIQUES * if(lnomid(7).ne.0) then nomid=lnomid(7) segact nomid mocara=nomid ncara=lesobl(/2) ncarf=lesfac(/2) lsupca=.false. else lsupca=.true. CALL IDCARB(MELE,IFOUR,MOCARA,NCARA,NCARF) endif * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' * CALL KOMCHA(IPCAR,IPMAIL,CONM,MOCARA,MOTYPE,1, & INFOS,3,IVACAR) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 NCARR=NCARA+NCARF * IF (ISUP5.EQ.1.AND.MOCARA.NE.0) THEN CALL VALCHE(IVACAR,NCARR,IPMINT,IPPORE,MOCARA,MELE) IF(IERR.NE.0)THEN ISUP5=0 GOTO 9990 ENDIF ENDIF * * TRAITEMENT DU CHAMP DE VARIABLES INTERNES * if(lnomid(10).ne.0) then nomid=lnomid(10) segact nomid movari=nomid nvari=lesobl(/2) nvarf=lesfac(/2) lsupva=.false. else lsupva=.true. CALL IDVARI(MFR,IMODEL,MOVARI,NVARI,NVARF) endif * NBTYPE=1 SEGINI NOTYPE MOTYPE=NOTYPE TYPE(1)='REAL*8' * CALL KOMCHA(IPVARI,IPMAIL,CONM,MOVARI,MOTYPE,1,INFOS,3,IVARI) SEGSUP NOTYPE IF (IERR.NE.0) GOTO 9990 NVART=NVARI+NVARF * * APPEL AU CALCUL PROPREMENT DIT * IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN CALL FRI2T2(INFIBR,MELE,IPMAIL,IPMINT,NBGS, 1 IVAMAT,IVACAR,IVARI,NMATT,NCARR,NVART, 2 CRIGI) ELSE CALL FRIGT2(INFIBR,MELE,IPMAIL,IPMINT,NBGS, 1 IVAMAT,IVACAR,IVARI,NMATT,NCARR,NVART, 2 CRIGI) ENDIF * 9990 CONTINUE * * DESACTIVATION DES SEGMENTS * SEGDES,MELEME,IMODEL * IF (IPMINT.NE.0) SEGDES,MINTE IF(ISUP5.EQ.1)THEN CALL DTMVAL (IVAMAT,3) CALL DTMVAL (IVACAR,3) ELSE CALL DTMVAL (IVAMAT,1) CALL DTMVAL (IVACAR,1) ENDIF * IF (MOCARA.NE.0) THEN NOMID=MOCARA if(lsupca)SEGSUP NOMID END IF IF (MOVARI.NE.0) THEN NOMID=MOVARI if(lsupva)SEGSUP NOMID END IF * IF (MOMATR.NE.0) THEN NOMID=MOMATR if(lsupma)SEGSUP NOMID END IF * IF (IERR.NE.0) GO TO 888 * 1000 CONTINUE * 888 CONTINUE SEGDES MMODEL RETURN END