C CNEQ SOURCE SP204843 24/08/01 21:15:01 11973 SUBROUTINE CNEQ *_______________________________________________________________________ * * OPERATEUR DE CONVERSION DE CHAMPS VOLUMIQUES EN CHAMPS NODAUX * * ZOZO = CNEQ ('ELEM') MOD | CHP1 | (CAR1) ; * | CHM1 | * * MOD objet de type MMODEL * CHP1 objet de type CHPOINT * CHM1 objet de type MCHAML * CAR1 CHAMP PAR ELEMENT DE CARACTERISTIQUES * GEOMETRIQUES ET MATERIELLES, TYPE MCHAML (facultatif) * ZOZO CHPOINT (ou MCHAML si 'ELEM') donnant les VALEURS nodales * * Francois CAFFIN 1992 * Francois DI PAOLA 2024 : ajout option 'ELEM' *_______________________________________________________________________ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMCHPOI -INC SMCOORD * CHARACTER*4 MCLE(1) DATA MCLE/'ELEM'/ * * LECTURE DES MOTS CLEFS ICLE=0 CALL LIRMOT(MCLE,1,ICLE,0) IPCHE1=0 IPCHE2=0 IPCHPO=0 IPCHP2=0 IPCHE3=0 * * LECTURE DU MODELE CALL LIROBJ('MMODEL ',IPMODL,1,IRT1) CALL ACTOBJ('MMODEL ',IPMODL,1) IF (IERR.NE.0) RETURN * * LECTURE D'UN CHPOINT OU D'UN MCHAML CALL LIROBJ('CHPOINT ',IPCHPO,0,IRT1) IF (IERR.NE.0) RETURN IF (IRT1.EQ.1) THEN CALL ACTOBJ('CHPOINT ',IPCHPO,1) ELSE CALL LIROBJ('MCHAML ',IPIN,1,IRT1) CALL ACTOBJ('MCHAML ',IPIN,1) IF (IERR.NE.0) RETURN CALL REDUAF(IPIN,IPMODL,IPCHE1,0,IR,KER) IF(IR .NE. 1) CALL ERREUR(KER) IF(IERR .NE. 0) RETURN ENDIF * * LECTURE EVENTUELLE D'UN CHAMP DE CARACTERISTIQUES CALL LIROBJ('MCHAML ',IPIN,0,IRT1) IF (IERR .NE. 0) RETURN IPCHE2=0 IF (IRT1 .EQ. 1) THEN CALL ACTOBJ('MCHAML ',IPIN,1) CALL REDUAF(IPIN,IPMODL,IPCHE2,0,IR,KER) IF(IR .NE. 1) CALL ERREUR(KER) IF(IERR .NE. 0) RETURN ENDIF * * INTEGRATION DU MCHAML SEGACT,MCOORD CALL CNEQP(IPMODL,IPCHE1,IPCHPO,IPCHE2,IPCHE3,IRET) SEGDES,MCOORD IF (IERR.NE.0) RETURN * * SI ICLE=0 (DEFAUT) --> TRANSFORMATION DU MCHAML EN CHPOINT * (AVEC SOMME) IF (ICLE.EQ.0) THEN CALL CHAMPO(IPCHE3,0,IPCHP2,IRET) CALL DTCHAM(IPCHE3) IF (IRET.EQ.1) THEN * ON ATTRIBUE UNE NATURE DISCRETE AU CHAMP RESULTANT MCHPOI = IPCHP2 SEGACT MCHPOI*MOD JATTRI(1) = 2 CALL ACTOBJ('CHPOINT ',IPCHP2,1) CALL ECROBJ('CHPOINT ',IPCHP2) ENDIF * SI ICLE=1 --> ON SORT LE MCHAML TEL QUEL ELSEIF (ICLE.EQ.1) THEN CALL ACTOBJ('MCHAML ',IPCHE3,1) CALL ECROBJ('MCHAML ',IPCHE3) ENDIF END