fsk_case.F [SRC] [CPP] [JOB] [SCAN]
SOURCES / MODELSEQCODE/MODEL [=]



   1 | include(dom.inc)
   2 | 
   3 |       SUBROUTINE FSK_CASE(all_k_abs, w, celldata, nelmts, all_WVNB,       &
   4 |      &                     all_DWVNB, ngbands,                            &
   5 |      &                     nallbandes, nkabs, ieltd, ieltf)
   6 | 
   7 |       USE mod_inout
   8 |       USE mod_pmm
   9 | #ifdef USEPALM
  10 |       USE palmlib
  11 | #endif
  12 | 
  13 |       IMPLICIT NONE
  14 | 
  15 |       include 'dom_constants.h'
  16 | 
  17 | !     IN
  18 |       DOM_INT                          :: nallbandes
  19 |       DOM_INT                          :: nkabs, ieltd, ieltf
  20 |       DOM_INT                          :: nelmts, ngbands
  21 |       DOM_REAL,DIMENSION(nallbandes)   :: all_WVNB,all_DWVNB
  22 |       DOM_REAL,DIMENSION(8,nelmts)     :: celldata
  23 | 
  24 | !     OUT
  25 |       DOM_REAL,DIMENSION(nkabs)        :: w
  26 |       DOM_REAL,DIMENSION(nkabs,nelmts) :: all_k_abs
  27 | 
  28 | !     LOCAL
  29 |       DOM_REAL,DIMENSION(nkabs,nelmts) :: local_all_k_abs
  30 |       DOM_REAL,DIMENSION(2)            :: SNBDATA
  31 |       DOM_REAL,DIMENSION(ngbands,2)    :: gasdata
  32 |       DOM_REAL,DIMENSION(nelmts)       :: K_SOOT, FSK_SOOT
  33 |       DOM_REAL,DIMENSION(nkabs)        :: k_absmel
  34 |       DOM_REAL,DIMENSION(ngbands)      :: F
  35 |       DOM_REAL                         :: blae, planck
  36 |       DOM_REAL                         :: WVNB,DWVNB,WVNB_SI,DWVNB_SI
  37 |       DOM_INT                          :: ielt, i, ierr
  38 |       DOM_INT                          :: i_bande, n_cl
  39 |       DOM_INT                          :: ICO,ICO2,IH2O
  40 |       LOGICAL                          :: LICO,LICO2,LIH2O
  41 | 
  42 |       local_all_k_abs = 0.
  43 |       all_k_abs       = 0.
  44 |       FSK_SOOT        = 0.
  45 | 
  46 | !     ---------------------------------------------!
  47 | !     Non-homogeneous system or homogeneous system !
  48 | !     ---------------------------------------------!
  49 | 
  50 |       IF (homosyst.eq.'NO') THEN
  51 |         n_cl=ieltf
  52 |       ELSEIF (homosyst.eq.'YES') THEN
  53 |         n_cl=ieltd
  54 |       ENDIF
  55 | 
  56 |       DO ielt=ieltd,n_cl
  57 | 
  58 |         k_absmel = 0.
  59 | 
  60 | !       -----------------------------------!
  61 | !       Seting spectral data for each band !
  62 | !       -----------------------------------!
  63 | 
  64 |         gasdata = 0.
  65 | 
  66 |         DO i_bande=1,ngbands
  67 | 
  68 | !         IF (pmm_rank.eq.0) WRITE(*,*) ">> Bande:",i_bande,"/",ngbands
  69 | 
  70 |           WVNB    = all_WVNB(i_bande)
  71 |           DWVNB   = all_DWVNB(i_bande)
  72 |           WVNB_SI = 100.*WVNB
  73 |           DWVNB_SI= 100.*DWVNB
  74 | 
  75 | !         ----------------------------------------!
  76 | !         Spectral index lecture for each species !
  77 | !         ----------------------------------------!
  78 | 
  79 |           IF (WVNB.le.9300.0) THEN
  80 | 
  81 | !           print*, pmm_rank, " >> Findi"
  82 |             CALL FINDI(LICO,LICO2,LIH2O,ICO,ICO2,IH2O,WVNB,DWVNB)
  83 | 
  84 | !           print*, pmm_rank, " >> kbarandphi"
  85 |             CALL KBARANDPHI(celldata(:,ielt),LICO,LICO2,LIH2O,ICO,      &
  86 |      &                      ICO2,IH2O,SNBDATA,                          &
  87 |      &                      nallbandes)
  88 | 
  89 |             gasdata(i_bande,1:2)=SNBDATA(1:2)
  90 | 
  91 |           ENDIF
  92 | 
  93 | !         -------------------------------------!
  94 | !         Band groupment multiplicative factor !
  95 | !         -------------------------------------!
  96 | 
  97 | !         IF (pmm_rank.eq.0) print*, "soot"
  98 | 
  99 |           F(i_bande)   = blae(WVNB_SI,celldata(1,ielt))*DWVNB_SI
 100 |           K_SOOT(ielt) = 5.5*celldata(8,ielt)*WVNB_SI
 101 | 
 102 |           FSK_SOOT(ielt)=FSK_SOOT(ielt)+F(i_bande)*K_SOOT(ielt)
 103 | 
 104 |         ENDDO
 105 | 
 106 |         FSK_SOOT(ielt) = FSK_SOOT(ielt) / SUM(F)
 107 |         F              = F / SUM (F)
 108 | 
 109 | !       -------------------------------------------!
 110 | !       Quadrature calculation using spectral data !
 111 | !       -------------------------------------------!
 112 | 
 113 |         CALL k_distributeur(F, ngbands, gasdata, nkabs, k_absmel,w)
 114 | 
 115 |         local_all_k_abs(:,ielt)=k_absmel+FSK_SOOT(ielt)
 116 | 
 117 |         IF ((MOD(ielt,100).eq.0).and.(pmm_rank.eq.0)) THEN
 118 |           print*, "      >> Node:",ielt-ieltd,"/",n_cl-ieltd
 119 |         ENDIF
 120 | 
 121 |       ENDDO
 122 | 
 123 |       IF (homosyst.eq.'YES') THEN
 124 |         DO i=ieltd+1,ieltf
 125 |           local_all_k_abs(:,i) = local_all_k_abs(:,ieltd)
 126 |         ENDDO
 127 |       ENDIF
 128 | 
 129 | !     ------------------------------------------------!
 130 | !     sending all_k_abs....change to a pmm subroutine !
 131 | !     ------------------------------------------------!
 132 | 
 133 |        CALL MPI_ALLREDUCE(local_all_k_abs, all_k_abs, nkabs*nelmts,     &
 134 |      &                    MPI_DOUBLE_PRECISION, MPI_SUM, COMM_PARA ,    &
 135 |      &                    ierr)
 136 | 
 137 |       END SUBROUTINE FSK_CASE
 138 | 


fsk_case.F could be called by:
deri_kappa.F [SOURCES/SCHEMES] - 65
Makefile [TOOLS/RAY] - 70
Makefile [SEQCODE] - 79
Makefile [SOURCES] - 152
Makefile [TOOLS/TABFSK] - 68
prissma.F [SEQCODE/MAIN] - 264
ray.F [TOOLS/RAY/SRC] - 251
slave.F [SOURCES/MAIN/SLAVE] - 215
tabfsk.F [TOOLS/TABFSK/SRC] - 147