75 lines
3.2 KiB
Fortran
75 lines
3.2 KiB
Fortran
! $Id: setmodel.f,v 1.1 2009/06/09 21:51:51 daven Exp $
|
|
SUBROUTINE SETMODEL
|
|
!
|
|
!******************************************************************************
|
|
! Subroutine SETMODEL computes the number of grid blocks that are needed.
|
|
! (M. Jacobson 1997; bdf, bmy, 4/18/03)
|
|
!
|
|
! NOTES:
|
|
! (1 ) Originally, this routine also computed other meteorological parameters
|
|
! such as horizontal & vertical coordinates, sun angles, etc. These
|
|
! are now computed elsewhere in GEOS-CHEM so this code has now been
|
|
! removed. The only code left is the code which determines the number
|
|
! of grid blocks used for the parallelization. Now force double-
|
|
! precision with the "D" exponent. (bdf, bmy, 4/18/03)
|
|
!******************************************************************************
|
|
!
|
|
IMPLICIT NONE
|
|
|
|
# include "CMN_SIZE" ! Size parameters
|
|
# include "comode.h" ! SMVGEAR II arrays
|
|
C
|
|
C *********************************************************************
|
|
C ************ WRITTEN BY MARK JACOBSON (1993-4) ************
|
|
C *** (C) COPYRIGHT, 1993-4 BY MARK Z. JACOBSON ***
|
|
C *** EXCEPT FOR DENOTED EXCERPTED PORTIONS ***
|
|
C *** (650) 650-6836 ***
|
|
C *********************************************************************
|
|
C
|
|
C SSSSSSS EEEEEEE TTTTTTT M M OOOOOOO DDDDDD EEEEEEE L
|
|
C S E T M M M M O O D D E L
|
|
C SSSSSSS EEEEEEE T M M M O O D D EEEEEEE L
|
|
C S E T M M O O D D E L
|
|
C SSSSSSS EEEEEEE T M M OOOOOOO DDDDDD EEEEEEE LLLLLLL
|
|
C
|
|
C *********************************************************************
|
|
C * THIS SUBROUTINE INITIALIZES METEOROLOGICAL PARAMETERS *
|
|
C *********************************************************************
|
|
C
|
|
! Local variables
|
|
INTEGER :: IAVBLOK, IAVGSIZE, IREMAIN, JADD
|
|
C
|
|
C *********************************************************************
|
|
C * DETERMINE HOW MANY BLOCKS OF GRID POINTS ARE NEEDED *
|
|
C *********************************************************************
|
|
C
|
|
KULOOP = MIN(KULOOP,KBLOOP,NTLOOP)
|
|
NBLOCKS = 1 + NTTLOOP / (KULOOP + 0.0001d0)
|
|
IAVBLOK = 1 + NTTLOOP / (NBLOCKS + 0.0001d0)
|
|
IAVGSIZE = MIN0(IAVBLOK,KULOOP)
|
|
JLOOPLO = 0
|
|
IREMAIN = NTTLOOP
|
|
C
|
|
DO 260 KBLK = 1, NBLOCKS
|
|
JADD = MIN0(IAVGSIZE,IREMAIN)
|
|
JLOFIXED(KBLK) = JLOOPLO
|
|
JHIFIXED(KBLK) = JADD
|
|
IREMAIN = IREMAIN - JADD
|
|
JLOOPLO = JLOOPLO + JADD
|
|
260 CONTINUE
|
|
C
|
|
C MAKE SURE MXBLOCK IS SUFFICIENTLY LARGE SINCE NBLOCKUSE CHANGES IN
|
|
C PHYSPROC.F
|
|
C
|
|
IF (NBLOCKS+15.GT.MXBLOCK) THEN
|
|
WRITE(6,*)'READER: NBLOCKS+15>MXBLOCKS ',NBLOCKS+15, MXBLOCK
|
|
STOP
|
|
ENDIF
|
|
C
|
|
C *********************************************************************
|
|
C ******************** END OF SUBROUTINE SETMODEL.F *******************
|
|
C *********************************************************************
|
|
C
|
|
RETURN
|
|
END SUBROUTINE SETMODEL
|