1 | include(dom.inc)
2 |
3 | SUBROUTINE EMISSIV_SNB(nfcelt,celldata,Lb,Lo,epsil,Tf,WVNB_SI, &
4 | & ncells,nfacemax,celld,cellf,bcell,bface, &
5 | & nbface)
6 |
7 | USE mod_pmm
8 |
9 | IMPLICIT NONE
10 |
11 | include 'dom_constants.h'
12 |
13 | ! IN
14 | DOM_INT :: ncells,nfacemax,nbface
15 | DOM_INT :: celld, cellf
16 | DOM_INT, DIMENSION (ncells) :: nfcelt
17 | DOM_REAL :: WVNB_SI
18 | DOM_REAL, DIMENSION(8,ncells) :: celldata
19 | DOM_REAL, DIMENSION(nbface) :: epsil, Tf
20 | DOM_INT , DIMENSION(nbface) :: bcell, bface
21 |
22 | ! OUT
23 | DOM_REAL, DIMENSION(ncells) :: Lb
24 | DOM_REAL, DIMENSION(nfacemax,ncells) :: Lo
25 |
26 | ! LOCAL
27 | DOM_INT :: ielt,m, ibnd
28 | DOM_INT :: local_ncell
29 | DOM_INT :: ierr
30 | DOM_REAL :: blae
31 | DOM_REAL, DIMENSION(ncells) :: local_Lb
32 | DOM_REAL, DIMENSION(nfacemax,ncells) :: local_Lo
33 |
34 | Lo = 0.
35 | Lb = 0.
36 |
37 | ! -----------------------------!
38 | ! Initializing local cell data !
39 | ! -----------------------------!
40 |
41 | local_Lo = 0.
42 | local_Lb = 0.
43 |
44 | ! --------------------------------------------------------!
45 | ! Intensities at the boundaries in the partitioned domain !
46 | ! --------------------------------------------------------!
47 |
48 | ibnd = 1
49 | DO WHILE ( bcell(ibnd).lt.celld )
50 | ibnd = ibnd + 1
51 | ENDDO
52 |
53 | DO WHILE ((ibnd.le.nbface).and.(bcell(ibnd).le.cellf))
54 |
55 | ielt = bcell(ibnd)
56 | m = bface(ibnd)
57 |
58 | local_Lo(m,ielt)=epsil(ibnd)/pi*blae(WVNB_SI,Tf(ibnd))
59 | ibnd = ibnd + 1
60 |
61 | ENDDO
62 |
63 | ! ---------------------------------------------!
64 | ! Spectral intensity in the partitioned domain !
65 | ! ---------------------------------------------!
66 |
67 | DO ielt = celld, cellf
68 |
69 | local_Lb(ielt)=blae(WVNB_SI,celldata(1,ielt))/pi
70 |
71 | ENDDO
72 |
73 | ! ---------------------------------------!
74 | ! communcation....to put in pmm_reducelb !
75 | ! ---------------------------------------!
76 |
77 | ! print*, " proc ", pmm_rank,": sending L (",celld,",",cellf,")"
78 | CALL MPI_ALLREDUCE(local_Lo, Lo, nfacemax*ncells, &
79 | & MPI_DOUBLE_PRECISION, MPI_SUM, MPI_COMM_WORLD,&
80 | & ierr)
81 |
82 | CALL MPI_ALLREDUCE(local_Lb, Lb, ncells, MPI_DOUBLE_PRECISION, &
83 | & MPI_SUM, MPI_COMM_WORLD, ierr)
84 |
85 | END SUBROUTINE EMISSIV_SNB
emissiv_snb.F could be called by: