rayt1
C RAYT1 SOURCE MB234859 26/09/22 21:15:06 12653 C RAYE3 SOURCE CHAT 05/01/13 02:45:13 5004 C ************************************************************ C **** SUBROUTINE DE CALCUL DE LA TEMPERATURE TRAD **** C **** INTERVENANT EN RAYONNEMENT THERMIQUE **** C **** **** C **** En entree : MATR matrice des facteurs de forme **** C **** EMIS valeur de l'emissivite en chaque **** C **** element de surface **** C **** TEMP temperature moyenne par element **** C **** ERRJ erreur relative sur le calcul **** C **** milieu absorbant (02/2011) **** C **** KABS si =1 il existe un milieu absorbant** C **** TABS temperaure du milieu absorbant **** C **** **** C **** En sortie : TRAD temperature moyenne par element **** C **** résultant des transferts radiatifs*** C **** **** C **** **** C ************************************************************ IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCREEL -INC PPARAM -INC CCOPTIO -INC SMLENTI -INC SMLREEL C ********************************************************** C **** Declaration de la structure des facteurs **** C **** de forme **** C ********************************************************** SEGMENT IFACFO INTEGER LFACT(NBEL1) ENDSEGMENT SEGMENT LFAC REAL *8 FACT(NBEL2) ENDSEGMENT C ********************************************************** C **** Declaration des variables du probleme **** C ********************************************************** POINTEUR MATR.IFACFO,LMATR.LFAC POINTEUR EMIS.LFAC,TEMP.LFAC,TRAD.LFAC POINTEUR EMIT.LFAC,JRAD.LFAC,JRAD1.LFAC,DIFF.LFAC POINTEUR EGAZ.LFAC,AF.LFAC C constante de Stefan SIG = 5.67D-8 C nombre d'iterations max pour le calcul de la radiosité NK = 50 C ********************************************************** C **** Activation de la matrice des facteurs de forme **** C **** par l'intermediaire de son pointeur. Sa **** C **** dimension est Nbel. Le dernier pointeur pointe **** C **** sur les elements de surface **** C ********************************************************** IF (IIMPI.GE.4) WRITE(6,*) 'DEBUT DE RAYT1.ESO' SEGACT MATR NEL = MATR.LFACT(/1) - 1 NBEL2 = NEL SEGINI,EMIT,JRAD,JRAD1,TRAD C ********************************************************** C **** calcul des flux emis par les parois **** C ********************************************************** SEGACT,EMIS,TEMP DO I=1,NEL LMATR = MATR.LFACT(I) SEGACT,LMATR EMIT .FACT(I) = EMIS.FACT(I) * SIG * (TEMP.FACT(I)**4) JRAD1.FACT(I) = EMIT.FACT(I) ENDDO SEGDES,TEMP IF (IIMPI.EQ.-1) THEN WRITE(IOIMP,*) 'FLUX EMIS' ENDIF C ********************************************************** C **** calcul du flux emis par le milieu absorbant **** C ********************************************************** IF (KABS.EQ.1) THEN SEGINI,EGAZ,AF C ------------------------------------------------------ C calcul des sommes sur j des Fij : tableau AF **** C ------------------------------------------------------ DO I = 1, NEL LMATR = MATR.LFACT(I) AF.FACT(I) = 0.D0 DO J = 1, NEL AF.FACT(I) = AF.FACT(I) + LMATR.FACT(J) ENDDO ENDDO C CALL UTPRIM(AF.FACT,NEL) SIGTG4 = SIG * (TABS**4) C write(6,*) ' SIGTG4: ', SIGTG4 DO I = 1, NEL EGAZ.FACT(I) = (1.D0 - AF.FACT(I)) EGAZ.FACT(I) = EGAZ.FACT(I)*SIGTG4 EMIT.FACT(I) = EMIT.FACT(I) $ + (1.D0-EMIS.FACT(I))*EGAZ.FACT(I) ENDDO SEGSUP,AF IF(IIMPI.EQ.(-1)) THEN WRITE(IOIMP,*) ' FLUX EMIS PAR LE GAZ' ENDIF ENDIF C ********************************************************** C **** calcul iteratif de la radiosité **** C **** methode BICGSTAB **** C ********************************************************** JG=NEL SEGINI,MLENT1,MLREE2 DO I=1,NEL LMATR=MATR.LFACT(I) RO =1.D0 - EMIS.FACT(I) SEGINI,MLREE1 DO J=1,NEL IF (J.EQ.I) THEN ELSE ENDIF MLENT1.LECT(I)=MLREE1 ENDDO SEGDES,LMATR,MLREE1 ENDDO SEGINI,MLREE3=MLREE2 IMATR=MLENT1 ISMBR=MLREE2 ISOLU=MLREE3 C CALL BCGSTB(NEL,IMATR,ISMBR,ISOLU,ERRJ,NK,KERRE) C DO I=1,NEL MLREE1=MLENT1.LECT(I) SEGSUP,MLREE1 ENDDO SEGSUP,MLENT1,MLREE2,MLREE3 GOTO 2 C ********************************************************** C **** calcul iteratif de la radiosité **** C **** methode de Gauss-Seidel **** C ********************************************************** SEGINI,DIFF DO 1 K=1,NK C ------------------------------------------------------ DO I = 1, NEL LMATR = MATR.LFACT(I) SEGACT LMATR IF (KABS.EQ.1) THEN JRAD.FACT(I) = EMIT.FACT(I) $ + (1.D0-EMIS.FACT(I))*EGAZ.FACT(I) ELSE JRAD.FACT(I) = EMIT.FACT(I) ENDIF RO = 1.D0 - EMIS.FACT(I) C cas des surfaces noires: on saute les boucles IF (RO.GT.1D-3) THEN C methode de Jacobi pour mémoire C DO J = 1, NEL C C JRAD.FACT(I) = JRAD.FACT(I) C $ + RO * LMATR.FACT(J) * JRAD1.FACT(J) C ENDDO C... elements tels que J<I C ------------------------------------------------- IF (I.GT.1) THEN DO J = 1, (I-1) JRAD.FACT(I) = JRAD.FACT(I) $ + RO * LMATR.FACT(J) * JRAD.FACT(J) ENDDO ENDIF C ------------------------------------------------- C... elements tels que J>=I C ------------------------------------------------- DO J = I, NEL JRAD.FACT(I) = JRAD.FACT(I) $ + RO * LMATR.FACT(J) * JRAD1.FACT(J) ENDDO C ------------------------------------------------- C ENDIF ENDIF C JRAD.FACT(I) = EMIT.FACT(I) + JRAD.FACT(I) C COEF = 1.D0 - ( RO * LMATR.FACT(I)) C JRAD.FACT(I) = JRAD.FACT(I) / COEF SEGDES LMATR ENDDO C ------------------------------------------------------ C Test de convergence sur la radiosite DO I = 1, NEL IF (JRAD1.FACT(I).GE.1D-2) THEN DIFF.FACT(I) = 1.D0 - (JRAD.FACT(I)/JRAD1.FACT(I)) ENDIF ENDDO IF (IIMPI.EQ.(-1)) write(6,*) ' K VAL ',K,VAL IF (VAL.LE.ERRJ) THEN GOTO 2 ENDIF DO I = 1, NEL JRAD1.FACT(I) = JRAD.FACT(I) ENDDO IF(IIMPI.EQ.(-1)) THEN write(6,*) ' JRAD ' write(6,*) ' JRAD1 ' ENDIF IF(IIMPI.EQ.(-1)) THEN write(6,*) ' radiosite ' ENDIF 1 CONTINUE SEGSUP,DIFF C 2 CONTINUE IF (IIMPI.EQ.1) WRITE (IOIMP,*) ' K VAL ',K,VAL C ********************************************************** C **** calcul des eclairements **** C ********************************************************** DO I = 1, NEL LMATR = MATR.LFACT(I) SEGACT LMATR C! CALL UTPRIM(LMATR.FACT,NEL) JRAD.FACT(I) = 0.D0 DO J =1, NEL JRAD.FACT(I) = JRAD.FACT(I) + LMATR.FACT(J) * JRAD1.FACT(J) ENDDO C Ajouter le terme du au milieu absorbant IF (KABS.EQ.1) JRAD.FACT(I) = JRAD.FACT(I) + EGAZ.FACT(I) SEGDES LMATR ENDDO IF(IIMPI.EQ.-1) THEN WRITE(IOIMP,*) ' ECLAIREMENT' ENDIF C ********************************************************** C **** calcul de la temperature TRAD résultat **** C ********************************************************** SIGM1 = 1.D0 / SIG DO I = 1, NEL TRAD.FACT(I) = (SIGM1 * JRAD.FACT(I))**0.25 ENDDO IF(IIMPI.EQ.-1) THEN WRITE(IOIMP,*) ' TRAD' ENDIF SEGDES EMIS,TRAD SEGSUP MATR,EMIT,JRAD,JRAD1 IF (KABS.EQ.1) SEGSUP EGAZ C END
© Cast3M 2003 - Tous droits réservés.
Mentions légales