Télécharger raye3.eso

Retour à la liste

Numérotation des lignes :

raye3
  1. C RAYE3 SOURCE CHAT 12/06/07 21:15:57 7389
  2. SUBROUTINE RAYE3(MATR, EMIS, RES)
  3.  
  4. C ************************************************************
  5. C **** SUBROUTINE DE CALCUL DE LA MATRICE DE RAYONNEMENT ****
  6. C **** ****
  7. C **** En entree : MATR matrice des facteurs de forme ****
  8. C **** EMIS valeur de l'emissivite en chaque ****
  9. C **** element de surface ****
  10. C **** En sortie : RES matrice de rayonnement ****
  11. C **** ****
  12. C **** Le resultat obtenu est RES: ****
  13. C **** RES = (I - F)*(I - (I - EMIS)*F)**(-1)*S*EMIS ****
  14. C **********************************************************T(J)
  15.  
  16. IMPLICIT INTEGER(I-N)
  17. IMPLICIT REAL*8 (A-H,O-Z)
  18.  
  19. -INC CCREEL
  20.  
  21. -INC PPARAM
  22. -INC CCOPTIO
  23.  
  24. C **********************************************************
  25. C **** Declaration de la structure des facteurs ****
  26. C **** de forme ****
  27. C **********************************************************
  28.  
  29. SEGMENT IFACFO
  30. INTEGER LFACT(NBEL1)
  31. ENDSEGMENT
  32. SEGMENT LFAC
  33. REAL *8 FACT(NBEL2)
  34. ENDSEGMENT
  35.  
  36. C **** Segment de travail pour l'inversion de matrice ****
  37.  
  38. SEGMENT TRAVAI
  39. REAL *8 A(NEL,NEL), BT(NEL,NEL)
  40. INTEGER IS(NEL)
  41. ENDSEGMENT
  42.  
  43. C **********************************************************
  44. C **** Declaration des variables du probleme ****
  45. C **********************************************************
  46.  
  47. POINTEUR MATR.IFACFO, RES.IFACFO
  48. POINTEUR LMATR.LFAC, LRES.LFAC
  49. POINTEUR PSUR.LFAC, B.LFAC, EMIS.LFAC
  50.  
  51. C **********************************************************
  52. C **** Activation de la matrice des facteurs de forme ****
  53. C **** par l'intermediaire de son pointeur. Sa ****
  54. C **** dimension est Nbel. Le dernier pointeur pointe ****
  55. C **** sur les elements de surface ****
  56. C **********************************************************
  57.  
  58. IF (IIMPI.GE.4) THEN
  59. WRITE(6,*) 'DEBUT DE RAYE3.ESO'
  60. ENDIF
  61.  
  62. SEGACT MATR
  63. Nel = MATR.LFACT(/1)
  64.  
  65. IF (IIMPI.GE.4) THEN
  66. WRITE(6,*) 'Nel =',Nel
  67. WRITE(6,*) 'On doit trouver comme NBEL1 (NBEL + 1)'
  68. ENDIF
  69.  
  70. Nel = Nel - 1
  71.  
  72. SEGINI TRAVAI
  73.  
  74. NBEL1 = Nel + 1
  75. NBEL2 = Nel
  76. PSUR = MATR.LFACT(NBEL1)
  77.  
  78. SEGACT EMIS
  79.  
  80. C **********************************************************
  81. C **** Calcul de (I - (I - EMIS)*F) ****
  82. C **** (EMIS matrice diagonale des emissivites) ****
  83. C **** Au debut, on travaille avec une structure ****
  84. C **** matricielle A(Nel, Nel) car la routine INVER ne ****
  85. C **** fonctionne que pour cette structure. ****
  86. C **********************************************************
  87.  
  88. DO 10 I = 1, Nel
  89. LMATR = MATR.LFACT(I)
  90.  
  91. SEGACT LMATR
  92.  
  93. DO 20 J = 1, Nel
  94. A(I,J)=-(1.D0-(EMIS.FACT(I)))*(LMATR.FACT(J))
  95. IF (I.EQ.J) A(I, I) = 1.D0 + A(I,J)
  96. 20 CONTINUE
  97.  
  98. SEGDES LMATR
  99.  
  100. 10 CONTINUE
  101.  
  102. SEGDES EMIS
  103.  
  104. C **********************************************************
  105. C **** Calcul de (I - (I - EMIS)*F)**(-1) grace a une ****
  106. C **** subroutine de calcul (INVER1) ****
  107. C **********************************************************
  108.  
  109. ICRIT = 0
  110. CALL INVER1(TRAVAI, Nel, ICRIT, XPETIT)
  111.  
  112.  
  113. C **********************************************************
  114. C **** Multiplication de RES par (I - F) ****
  115. C **********************************************************
  116.  
  117. SEGINI RES
  118.  
  119. RES.LFACT(NBEL1) = MATR.LFACT(NBEL1)
  120.  
  121. DO 50 I = 1, (NBEL1 - 1)
  122. SEGINI B
  123.  
  124. C **********************************************************
  125. C **** (I - F) est enregistre dans B ****
  126. C **********************************************************
  127.  
  128. LMATR = MATR.LFACT(I)
  129. SEGACT LMATR
  130.  
  131. DO 60 J = 1, NBEL2
  132. B.FACT(J) = -LMATR.FACT(J)
  133. IF (I.EQ.J) B.FACT(J) = 1.D0 + B.FACT(J)
  134. 60 CONTINUE
  135.  
  136. SEGINI LRES
  137. SEGACT PSUR
  138. SEGACT EMIS
  139.  
  140. DO 70 J = 1, NBEL2
  141.  
  142. C **********************************************************
  143. C **** LRES(i,j) = somm[B(i,k)*TEMP(k,j)] ****
  144. C **********************************************************
  145.  
  146. DO 80 K = 1, NBEL2
  147. LRES.FACT(J) = LRES.FACT(J) +
  148. # B.FACT(K)*A(K,J)
  149.  
  150. 80 CONTINUE
  151.  
  152. C **********************************************************
  153. C **** Multiplication par la surface et l'emissivite ****
  154. C **** LRES(i,j) = LRES(i,j)*S(i)*EMIS(j) ****
  155. C **********************************************************
  156.  
  157.  
  158.  
  159. LRES.FACT(J) = LRES.FACT(J)*PSUR.FACT(I)*
  160. # EMIS.FACT(J)
  161.  
  162.  
  163. C **********************************************************
  164. C **** Fin des differentes boucles de calcul ****
  165. C **********************************************************
  166.  
  167. 70 CONTINUE
  168. RES.LFACT(I) = LRES
  169. SEGDES PSUR
  170. SEGDES EMIS
  171. SEGDES LMATR
  172. SEGDES B
  173. SEGDES LRES
  174.  
  175. 50 CONTINUE
  176.  
  177. SEGSUP TRAVAI, B
  178. SEGDES RES
  179. SEGDES MATR
  180.  
  181. RETURN
  182. END
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales