PROGRAM GRIDONLY_GPNORM ! GPNORM_TRANS on a grid-point-only resolution (SETUP_TRANS LDGRIDONLY=.TRUE.). ! Octahedral O16 grid (32 rows), split latitudes, equal regions. ! Usage: mpirun -n <N> ./gridonly_gpnorm <T|F> (T: LDGRIDONLY=.TRUE., F: the control) USE PARKIND1, ONLY: JPIM, JPRB USE MPL_MODULE, ONLY: MPL_INIT, MPL_END, MPL_MYRANK, MPL_NPROC IMPLICIT NONE #include "setup_trans0.h" #include "setup_trans.h" #include "trans_inq.h" #include "gpnorm_trans.h" INTEGER(KIND=JPIM), PARAMETER :: NDGL = 32 INTEGER(KIND=JPIM) :: NPROC, IRESOL, IGPTOT, JL, NLOEN(NDGL) REAL(KIND=JPRB), ALLOCATABLE :: ZGP(:,:,:) REAL(KIND=JPRB) :: ZAVE(1), ZMIN(1), ZMAX(1) LOGICAL :: LLGRIDONLY CHARACTER(LEN=8) :: CLARG CALL GET_COMMAND_ARGUMENT(1, CLARG) READ(CLARG,*) LLGRIDONLY CALL MPL_INIT() NPROC = MPL_NPROC() CALL SETUP_TRANS0(KPRGPNS=NPROC, KPRGPEW=1, KPRTRW=NPROC, LDEQ_REGIONS=.TRUE.) DO JL = 1, NDGL/2 NLOEN(JL) = 20 + 4*(JL-1) NLOEN(NDGL+1-JL) = NLOEN(JL) ENDDO CALL SETUP_TRANS(KSMAX=15, KDGL=NDGL, KLOEN=NLOEN, LDSPLIT=.TRUE., KRESOL=IRESOL, & & LDGRIDONLY=LLGRIDONLY) CALL TRANS_INQ(KRESOL=IRESOL, KGPTOT=IGPTOT) ALLOCATE(ZGP(IGPTOT,1,1)) ZGP(:,:,:) = 1.0_JPRB ZMIN(:) = 0.0_JPRB ZMAX(:) = 0.0_JPRB CALL GPNORM_TRANS(ZGP, 1, IGPTOT, ZAVE, ZMIN, ZMAX, .FALSE., KRESOL=IRESOL) IF (MPL_MYRANK() == 1) WRITE(*,*) 'LDGRIDONLY=', LLGRIDONLY, ' GPNORM_TRANS ave/min/max:', & & ZAVE, ZMIN, ZMAX CALL MPL_END() END PROGRAM GRIDONLY_GPNORM