1 | include(dom.inc)
2 |
3 | SUBROUTINE MFSCHEME(k_abs,k_scat,V,nface,S,Di,Lb,Gi,Li,Le,Lp, &
4 | & alpha,nfacemax)
5 |
6 | ! ******************************************************************!
7 | ! kabs --> Coeff. d'absorption gris !
8 | ! k_scat --> Coeff de diffusion isotrope !
9 | ! V --> Volume de la cellule !
10 | ! S --> Vecteur des 4 surfaces (ABC, ABD, ACD et BCD) !
11 | ! Di --> Vecteur des produits (normes*direction discrete) !
12 | ! Lb --> Luminace noire emise au centre de la cellule !
13 | ! Gi --> Luminance incidente a l'iteration precedente !
14 | ! Li --> Lminance aux faces d'entree !
15 | ! Le --> Luminance calculees aux faces de sortie !
16 | ! Lp --> Lp total au centre de la cellule !
17 | ! ******************************************************************!
18 |
19 | IMPLICIT NONE
20 |
21 | include 'dom_constants.h'
22 |
23 | ! IN
24 | DOM_INT :: nface, nfacemax
25 |
26 | DOM_REAL :: k_abs, alpha
27 | DOM_REAL :: Lb, Gi, k_scat, V
28 | DOM_REAL, DIMENSION (nfacemax) :: Li, Di, S
29 |
30 | ! OUT
31 | DOM_REAL :: Lp
32 | DOM_REAL,DIMENSION(nfacemax) :: Le
33 |
34 | ! LOCAL
35 | DOM_REAL :: L_IN, AREA_IN
36 | DOM_REAL :: SD
37 | DOM_INT :: i
38 |
39 | L_IN = 0.
40 | AREA_IN = 0.
41 |
42 | DO i=1,nface
43 | IF (Di(i)<0.) THEN
44 | SD = S(i)*Di(i)
45 | L_IN = L_IN + SD*Li(i)
46 | AREA_IN = AREA_IN + SD
47 | ENDIF
48 | ENDDO
49 |
50 | ! For a homogeneously out-scattering gas:
51 | ! ---------------------------------------
52 | ! Y1=-L_IN+alpha*V*(k_abs*Lb+k_scat/(4*pi)*Gi)
53 | ! Y2=(k_abs+k_scat)*alpha*V-AREA_IN
54 | ! Lp=Y1/Y2
55 |
56 | ! Non-scattering gas:
57 | ! -------------------
58 |
59 | Lp = ( alpha*V*k_abs*Lb - L_IN ) / ( alpha*V*k_abs - AREA_IN )
60 |
61 | DO i=1,nface
62 | IF (Di(i)>0.) THEN
63 | Le(i)=( Lp - (1.-alpha)*L_IN/AREA_IN ) / alpha
64 | IF ( Le(i).lt.0. ) THEN
65 | Le(i) = 0.
66 | ENDIF
67 | ENDIF
68 | ENDDO
69 |
70 | END SUBROUTINE MFSCHEME
mfscheme.F could be called by: