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



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


fsck_case.F could be called by:
Makefile [TOOLS/RAY] - 70
Makefile [SEQCODE] - 79
Makefile [SOURCES] - 162
Makefile [TOOLS/TABFSCK] - 67
prissma.F [SEQCODE/MAIN] - 264
ray.F [TOOLS/RAY/SRC] - 251
slave.F [SOURCES/MAIN/SLAVE] - 237
tabfsck.F [TOOLS/TABFSCK/SRC] - 113