raye2
C RAYE2 SOURCE CB215821 24/04/12 21:17:03 11897 C ********************************************************** C **** SUBROUTINE D'INTERFACAGE CHAMELEM -->EMISSIVITE **** C **** **** C **** En entree : CHAMP champ par element **** C **** MODL modele sur lequel s'appuie le **** C **** probleme **** C **** INFOEL pointeur contenant des **** C **** informations relatives au maillage **** C **** **** C **** En sortie : EMIS matrice des composantes **** C **** des emissivites **** C **** **** C ********************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C ********************************************************** C **** Structure des elements utilises **** C ********************************************************** -INC SMCHAML -INC SMELEME -INC SMMODEL -INC PPARAM -INC CCOPTIO SEGMENT MATR REAL*8 VAL(NTOT) ENDSEGMENT SEGMENT ADRES INTEGER V(NBS, 3) ENDSEGMENT C **** ADRES contient les informations suivantes **** C **** V(j,1) : Numero du type d'element dans **** C **** MODL **** C **** V(j,2) : Numero correspondant au meme **** C **** element que le precedent mais **** C **** dans le CHAMELEM **** C **** V(j,3) : Nombre de surfaces dans cet **** C **** ensemble **** SEGMENT INFOEL LOGICAL KCOQ(N1), KQUAD(N1) ENDSEGMENT POINTEUR EMIS.MATR POINTEUR CHAMP.MCHELM POINTEUR PCHAMP.MCHAML POINTEUR DCHAM.MELVAL, DCHAM1.MELVAL, DCHAM2.MELVAL POINTEUR MAILL.MELEME, SMAILL.MELEME POINTEUR MODL.MMODEL POINTEUR ID0.IMODEL CHARACTER*(LOCOMP) MOT C ********************************************************** C **** Declaration des variables utilisees **** C ********************************************************** IF (IIMPI.GE.4) WRITE(6,*) 'DEBUT DE RAYE2.ESO' SEGACT CHAMP NBS = CHAMP.IMACHE(/1) SEGINI ADRES NTOT = 0 SEGACT MODL NBS2 = MODL.KMODEL(/1) SEGACT INFOEL DO 10 J = 1, NBS2 ID0 = MODL.KMODEL(J) SEGACT ID0 ID2 = ID0.IMAMOD DO 20 I = 1, NBS ADRES.V(J,1) = J MAILL = CHAMP.IMACHE(I) ID1 = MAILL IF (ID1.EQ.ID2) THEN ADRES.V(J, 2) = I SEGACT MAILL NBSOUS = MAILL.LISOUS(/1) IF (NBSOUS.EQ.0) THEN NEL = MAILL.NUM(/2) ELSE DO 30 L = 1, NBSOUS SMAILL = MAILL.LISOUS(L) SEGACT SMAILL NEL = NEL + SMAILL.NUM(/2) 30 CONTINUE ENDIF ADRES.V(J,3) = NEL IF (KCOQ(I)) NEL = NEL + NEL ENDIF 20 CONTINUE NTOT = NTOT + NEL 10 CONTINUE C **** NTOT designe la dimension du vecteur EMIS **** SEGDES INFOEL IF (IIMPI.GE.4) THEN WRITE(6,*) 'Dimension du vecteur d''emissivite =',NTOT ENDIF SEGINI EMIS N = 1 DO 40 K = 1, NBS I = ADRES.V(K,2) PCHAMP = CHAMP.ICHAML(I) SEGACT PCHAMP NBST = PCHAMP.IELVAL(/1) nbs2=nbsT * *on cherche les positions des EMIS ou EINF et ESUP position ie1 ie2 * lemis=0 leinf=0 lesup=0 do iva=1,nbst if( PCHAMP.NOMCHE(iva).eq.'EMIS') lemis=iva if( PCHAMP.NOMCHE(iva).eq.'EINF') leinf=iva if( PCHAMP.NOMCHE(iva).eq.'ESUP') lesup=iva enddo nbs2=1 if(lemis.eq.0) then if( (leinf.eq.0.or.lesup.eq.0).and.nbst.ne.1) then moterr(1:4)='EMIS' return endif if(nbst.ne.1) nbs2=2 endif if (nbs2.eq.1.and. nbst.eq.1) lemis =1 IF (IIMPI.GE.4.AND.NBS2.GT.2) THEN WRITE(6,*) 'Dimensions incompatibles' ENDIF IF (NBS2.EQ.2) THEN C **** Il y a des elements COQ **** DCHAM1 = PCHAMP.IELVAL(lesup) DCHAM2 = PCHAMP.IELVAL(leinf) SEGACT DCHAM1, DCHAM2 N1PTEL = DCHAM1.VELCHE(/1) N1EL = DCHAM1.VELCHE(/2) IF (N1EL.EQ.1) THEN * write(6,*) 'k,, ADRES.V(K,3 dcham1', k , ADRES.V(K,3),dcham1 DO 70 M = 1, ADRES.V(K,3) EMIS.VAL(N) = DCHAM1.VELCHE(1,1) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 EMIS.VAL(N) = DCHAM2.VELCHE(1,1) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 70 CONTINUE ENDIF IF (N1EL.NE.1) THEN DO 75 M = 1, ADRES.V(K,3) EMIS.VAL(N) = DCHAM1.VELCHE(1,M) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 EMIS.VAL(N) = DCHAM2.VELCHE(1,M) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 75 CONTINUE ENDIF ENDIF IF (NBS2.EQ.1) THEN C **** Il n'y a pas d'elements COQ **** MOT = PCHAMP.NOMCHE(1) IF (IIMPI.GE.4) WRITE(6,*) 'MOT =',MOT DCHAM = PCHAMP.IELVAL(1) SEGACT DCHAM N1PTEL = DCHAM.VELCHE(/1) N1EL = DCHAM.VELCHE(/2) IF (N1EL.EQ.1) THEN DO 90 M = 1, ADRES.V(K,3) EMIS.VAL(N) = DCHAM.VELCHE(1,1) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 90 CONTINUE ENDIF IF (N1EL.NE.1) THEN DO 95 M = 1, ADRES.V(K,3) EMIS.VAL(N) = DCHAM.VELCHE(1,M) IF (IIMPI.GE.4) THEN WRITE(6,*) 'EMIS =',EMIS.VAL(N) ENDIF N = N + 1 95 CONTINUE ENDIF ENDIF 40 CONTINUE IF (IIMPI.GE.4) THEN WRITE(6,*) 'Nombre de surfaces traitees', N - 1 ENDIF SEGDES EMIS,ADRES END
© Cast3M 2003 - Tous droits réservés.
Mentions légales