C INTGRA SOURCE PV 09/03/12 21:25:26 6325 C--------------------------------------------------------------------- C Integration d'une composante d'un MCHAML sur le domaine ou elle est C definie. Le resultat est soit global, soit local (i.e. sur chaque C element, option ELEM). C------------------------- C Phrase d'appel gibiane : C------------------------- C RESU1 = INTG ('ELEM') MODE1 CHAM1 ( MOT2 ) ( CHAM2 ) C------------------------- C Operandes et resultat : C------------------------- C ELEM : Option precisant que le resultat est donne elt par elt (MOT) C MODE1 : Modele de calcul (MMODEL) C CHAM1 : Champ par element (MCHAML) C MOT2 : Nom de la composante a integrer (MOT, facultatif si 1 comp.) C CHAM2 : Champ par element de CARACTERISTIQUE (MCHAML, facultatif) C RESU1 : FLOTTANT si l'option 'ELEM' n'est pas precisee, C Champ par element (objet MCHAML) sinon. C--------------------------------------------------------------------- SUBROUTINE INTGRA IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCOPTIO -INC SMCHAML CHARACTER*4 MACOMP,MOT1 C- Lecture eventuelle du mot cle 'ELEM' CALL LIRMOT('ELEM',1,IELEM,0) IF (IERR.NE.0) RETURN C- Lecture du modele CALL LIROBJ('MMODEL',IPMODL,1,IRET) IF (IERR.NE.0) RETURN C- Lecture du MCHAML CALL LIROBJ('MCHAML',IPCHB1,1,IRET) IF (IERR.NE.0) RETURN C- Lecture eventuelle du nom de la composante du MCHAML a considerer CALL LIRCHA(MACOMP,0,IRT3) IF (IERR.NE.0) RETURN C- Lecture facultative du MCHAML de CARACTERISTIQUES CALL LIROBJ('MCHAML',IPCHE2,0,IRET) IF (IERR.NE.0) RETURN C- Dans le cas ou le MCHAML a plus d'une composante C- on impose la donnee du nom de la composante a traiter. IF (IRT3.EQ.0) THEN MCHELM=IPCHB1 SEGACT,MCHELM N1=ICHAML(/1) DO i=1,N1 MCHAML=ICHAML(I) SEGACT,MCHAML N2=IELVAL(/1) SEGDES,MCHAML IF (N2.GT.1) THEN MOTERR(1:8)=' MCHAML ' INTERR(1)=N2 CALL ERREUR(761) SEGDES,MCHELM RETURN ENDIF ENDDO SEGDES,MCHELM ENDIF C- Dans le cas ou le nom de la composante du MCHAML C- a considerer est precise, on l'extrait du MCHAML. IPCHE1=IPCHB1 IF (IRT3.NE.0) THEN MOT1='SCAL' CALL EXCOC1(IPCHB1,MACOMP,IPCHE1,MOT1,0) IF (IERR.NE.0) RETURN ENDIF C- Calcul de l'integrale CALL INTGCA(IPMODL,IPCHE1,IPCHE2,IELEM,IRET,XRET,IPINT) IF (IERR.NE.0) RETURN C- Ecriture du resultat et menage IF (IPINT.EQ.0) THEN CALL ECRREE(XRET) ELSE CALL ECROBJ('MCHAML',IPINT) ENDIF IF (IRT3.NE.0) CALL DTCHAM(IPCHE1) RETURN END