C RAYT2 SOURCE CB215821 20/11/04 21:20:51 10766 C FFMCHA SOURCE CHAT 05/01/12 23:58:55 5004 SUBROUTINE RAYT2(MYMOD,INFOEL,ITEMP,TRAD,ICPEL) C_________________________________________________________________ C NOM : InterFace Tableau->CHAmp par éléments C_________________________________________________________________ C OBJET : C INTERFACE INTERVENANT EN THERMIQUE (RAYONNEMENT) C_________________________________________________________________ C FONCTION : C PERMET DE PASSER D'UN MODELE (+ segment INFOEL) C ET DU TABLEAU TRAD C AU CHAMELEME CORRESPONDANT C_________________________________________________________________ C OPERANDES : C C en entrée : C MYMOD (MMODEL) MODELE SUR LEQUEL REPOSE TRAD C INFOEL INFORMATIONS SUR LE TYPE DES ELEMENTS C !!!!! si on ne doit pas tenir compte du cas des C éléments COQ , ce pointeur doit être mis à 0 . C ITEMP Chamelem temperature moyenne argument de C l'operateur C TRAD Tableau contenant le champ de temperature TRAD C en sortie : C ICPEL CHAMELEM RESULTAT C C_________________________________________________________________ C C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C -INC PPARAM -INC CCOPTIO -INC SMCHAML -INC SMELEME -INC SMMODEL C ___________________________________________________________ C pour mémoire C C FACTEURS DE FORME stockage sous forme matricielle C NNBEL1 = NOMBRE DE LIGNES + 1 C NBEL2 = NOMBRE DE COLONNES C LFACT(NNBEL1) POINTE SUR LE TABLEAU DES SURFACES C SEGMENT IFACFO INTEGER LFACT(NNBEL1) ENDSEGMENT SEGMENT LFAC REAL*8 FACT(NBEL2) ENDSEGMENT C POINTEUR TRAD.LFAC C ___________________________________________________________ C Stockage d'informations concernant le type des éléments des maillages SEGMENT ,INFOEL LOGICAL KCOQ(N1),KQUAD(N1) ENDSEGMENT C ___________________________________________________________ C POINTEUR MYMOD.MMODEL POINTEUR ISSM.MELEME POINTEUR ICHFAC.MCHELM , ICPEL.MCHELM, ITEMP.MCHELM LOGICAL ICOQ C_________________________________________________________________ C IF(IIMPI.GE.2) THEN WRITE (6,*) 'On est dans rayt2 ' ENDIF C IF (INFOEL.EQ.0) THEN ICOQ = .FALSE. ELSE ICOQ = .TRUE. ENDIF C IF (INFOEL.NE.0) THEN C WRITE(6,*) ' on ne traite pas les coques' C ENDIF C SEGACT MYMOD, ITEMP C C On construit l'information maillage du CHAMELEM L1 = 22 N3 = 6 N1 = MYMOD.KMODEL(/1) IF (N1.EQ.0) THEN CALL ERREUR(21) RETURN ENDIF C SEGINI ,ICPEL ICPEL.TITCHE = ITEMP.TITCHE IF (IFOMOD.NE.0) THEN IF (IDIM.EQ.3) THEN ICPEL.IFOCHE = 2 ELSE ICPEL.IFOCHE = -1 ENDIF ELSE ICPEL.IFOCHE = 0 ENDIF DO I=1,N1 IMODE1 = MYMOD.KMODEL(I) SEGACT IMODE1 C maillage du modele ICPEL.IMACHE(I) = IMODE1.IMAMOD C on impose pour nom de constituant celui du champ ITEMP ICPEL.CONCHE(I) = ITEMP.CONCHE(I) C les valeurs sont definies aux centres de gravite ICPEL.INFCHE(I,6) = 2 ENDDO C C------------------------------------------------------------ C C C On récupère le nombre total d'éléments . C On vérifiera que le maillage et la matrice C portent sur le même nombre d'éléments . SEGACT TRAD NBEL = TRAD.FACT(/1) NUMB = 0 C C -------------------------------------------- DO NSMB=1,N1 C On boucle sur les sous-champs C ISSM = ICPEL.IMACHE(NSMB) SEGACT ISSM C NBPTB = ISSM.NUM(/1) NBELB = ISSM.NUM(/2) N1EL = NBELB N1PTEL = 1 N2EL = 0 N2PTEL = 0 C N2 = 1 SEGINI MCHAM4 ICPEL.ICHAML(NSMB) = MCHAM4 SEGINI ,MELVA4 MCHAM4.NOMCHE(1) = 'T' MCHAM4.TYPCHE(1) = 'REAL*8' MCHAM4.IELVAL(1) = MELVA4 C C --------------------------------------- DO NELMB=1,NBELB C On boucle sur les éléments du sous-champs NSMB C C On copie la valeur du tableau NUMB = NUMB + 1 MELVA4.VELCHE(1,NELMB) = TRAD.FACT(NUMB) C WRITE(6,*) N1,NBELB,MELVA4.VELCHE(1,NELMB) C ENDDO C fin NELMB ----------------------------- C C ENDDO C fin NSMB ------------------------------------- C C SEGSUP TRAD IF (NUMB.NE.NBEL) THEN CALL ERREUR(21) C WRITE (6,*) 'Le maillage et la matrice portent sur un nombre' C # ,' différent d éléments .' ENDIF END