Skip to content
Snippets Groups Projects
Commit cef7c7f8 authored by Rolf Heilemann Myhre's avatar Rolf Heilemann Myhre
Browse files

working slowly forward

parent 35e02e7b
Branches
Tags
No related merge requests found
MODULE GETDATA_RAIN_ICE_OLD_MOD
USE OMP_LIB
INTERFACE REPLICATE
MODULE PROCEDURE REPLICATE2
MODULE PROCEDURE REPLICATE3
MODULE PROCEDURE REPLICATE4
MODULE PROCEDURE REPLICATEL
END INTERFACE
INTERFACE NPROMIZE
MODULE PROCEDURE NPROMIZE3
MODULE PROCEDURE NPROMIZE4
MODULE PROCEDURE NPROMIZE5
MODULE PROCEDURE NPROMIZEL
END INTERFACE
INTERFACE INTERPOLATE
MODULE PROCEDURE INTERPOLATE3
MODULE PROCEDURE INTERPOLATE4
MODULE PROCEDURE INTERPOLATE5
MODULE PROCEDURE INTERPOLATEL
END INTERFACE
INTERFACE SET
MODULE PROCEDURE SET3
MODULE PROCEDURE SET4
MODULE PROCEDURE SET5
END INTERFACE
CONTAINS
SUBROUTINE GETDATA_RAIN_ICE_OLD(NPROMA, NGPBLKS, NFLEVG, LLMICRO_B, PEXNREF_B, PDZZ_B, PRHODJ_B, PRHODREF_B, &
&PEXNREF2_B, PPABSM_B, PCIT_B, PCLDFR_B, PHLC_HRC_B, PHLC_HCF_B, PHLI_HRI_B, PHLI_HCF_B, PTHT_B, PRT_B, PTHS_B, &
&PRS_B, PSIGS_B, PSEA_B, PTOWN_B, PCIT_OUT_B, PRS_OUT_B, ZINPRC_B, ZINPRC_OUT_B, PINPRR_B, PINPRR_OUT_B, PEVAP_B, PEVAP_OUT_B, &
&PINPRS_B, PINPRS_OUT_B, PINPRG_B, PINPRG_OUT_B, ZINDEP_B, ZINDEP_OUT_B, ZRAINFR_B, ZRAINFR_OUT_B, PFPR_B, PFPR_OUT_B, LDVERBOSE)
USE IEEE_ARITHMETIC, ONLY : IEEE_SIGNALING_NAN, IEEE_VALUE
IMPLICIT NONE
INTEGER, PARAMETER :: IFILE = 77
INTEGER :: KLON
INTEGER :: KIDIA
INTEGER :: KFDIA
INTEGER :: KLEV
INTEGER :: KRR
INTEGER :: KDUM
LOGICAL :: LDVERBOSE
LOGICAL, ALLOCATABLE, intent(out) :: LLMICRO_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PEXNREF_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PDZZ_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PRHODJ_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PRHODREF_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PEXNREF2_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PPABSM_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PCIT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PCLDFR_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PHLC_HRC_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PHLC_HCF_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PHLI_HRI_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PHLI_HCF_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PTHT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PRT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PTHS_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PRS_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PSIGS_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PSEA_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PTOWN_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PCIT_OUT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PRS_OUT_B (:,:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZINPRC_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZINPRC_OUT_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRR_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRR_OUT_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PEVAP_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PEVAP_OUT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRS_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRS_OUT_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRG_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: PINPRG_OUT_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZINDEP_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZINDEP_OUT_B (:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZRAINFR_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: ZRAINFR_OUT_B (:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PFPR_B (:,:,:,:,:)
REAL, ALLOCATABLE, intent(out) :: PFPR_OUT_B (:,:,:,:,:)
LOGICAL, ALLOCATABLE :: LLMICRO (:,:,:)
REAL, ALLOCATABLE :: PEXNREF (:,:,:)
REAL, ALLOCATABLE :: PDZZ (:,:,:,:)
REAL, ALLOCATABLE :: PRHODJ (:,:,:,:)
REAL, ALLOCATABLE :: PRHODREF (:,:,:,:)
REAL, ALLOCATABLE :: PEXNREF2 (:,:,:)
REAL, ALLOCATABLE :: PPABSM (:,:,:,:)
REAL, ALLOCATABLE :: PCIT (:,:,:,:)
REAL, ALLOCATABLE :: PCLDFR (:,:,:,:)
REAL, ALLOCATABLE :: PHLC_HRC (:,:,:,:)
REAL, ALLOCATABLE :: PHLC_HCF (:,:,:,:)
REAL, ALLOCATABLE :: PHLI_HRI (:,:,:,:)
REAL, ALLOCATABLE :: PHLI_HCF (:,:,:,:)
REAL, ALLOCATABLE :: PTHT (:,:,:,:)
REAL, ALLOCATABLE :: PRT (:,:,:,:)
REAL, ALLOCATABLE :: PTHS (:,:,:,:)
REAL, ALLOCATABLE :: PRS (:,:,:,:)
REAL, ALLOCATABLE :: PSIGS (:,:,:,:)
REAL, ALLOCATABLE :: PSEA (:,:,:)
REAL, ALLOCATABLE :: PTOWN (:,:,:)
REAL, ALLOCATABLE :: PCIT_OUT (:,:,:,:)
REAL, ALLOCATABLE :: PRS_OUT (:,:,:,:,:)
REAL, ALLOCATABLE :: ZINPRC_OUT (:,:,:)
REAL, ALLOCATABLE :: PINPRR_OUT (:,:,:)
REAL, ALLOCATABLE :: PEVAP_OUT (:,:,:,:)
REAL, ALLOCATABLE :: PINPRS_OUT (:,:,:)
REAL, ALLOCATABLE :: PINPRG_OUT (:,:,:)
REAL, ALLOCATABLE :: ZINDEP_OUT (:,:,:)
REAL, ALLOCATABLE :: ZRAINFR_OUT (:,:,:,:)
REAL, ALLOCATABLE :: PFPR_OUT (:,:,:,:,:)
INTEGER :: IPROMA, ISIZE
INTEGER :: NGPTOT, NPROMA, NGPBLKS, NFLEVG
INTEGER :: IOFF, IBL
LOGICAL :: LLEXIST
CHARACTER(LEN=32) :: CLFILE
REAL :: ZNAN
KRR=6
NGPTOT = NPROMA * NGPBLKS
IBL = 1
WRITE (CLFILE, '("data/",I8.8,".dat")') IBL
OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED')
READ (IFILE) IPROMA, ISIZE
READ (IFILE) KLON, KDUM, KLEV, KRR
CLOSE (IFILE)
IF (NFLEVG < 0) NFLEVG = KLEV
ALLOCATE (LLMICRO_B (NPROMA,NFLEVG,NGPBLKS))
ALLOCATE (PEXNREF_B (NPROMA,NFLEVG,NGPBLKS))
ALLOCATE (PDZZ_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PRHODJ_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PRHODREF_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PEXNREF2_B (NPROMA,NFLEVG,NGPBLKS))
ALLOCATE (PPABSM_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PCIT_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PCLDFR_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PHLC_HRC_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PHLC_HCF_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PHLI_HRI_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PHLI_HCF_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PTHT_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PRT_B (NPROMA,NFLEVG,KRR,NGPBLKS))
ALLOCATE (PTHS_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PRS_B (NPROMA,NFLEVG,KRR,NGPBLKS))
ALLOCATE (PSIGS_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PSEA_B (NPROMA,1,NGPBLKS))
ALLOCATE (PTOWN_B (NPROMA,1,NGPBLKS))
ALLOCATE (PCIT_OUT_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PRS_OUT_B (NPROMA,1,NFLEVG,KRR,NGPBLKS))
ALLOCATE (ZINPRC_B (NPROMA,1,NGPBLKS))
ALLOCATE (ZINPRC_OUT_B (NPROMA,1,NGPBLKS))
ALLOCATE (PINPRR_B (NPROMA,1,NGPBLKS))
ALLOCATE (PINPRR_OUT_B (NPROMA,1,NGPBLKS))
ALLOCATE (PEVAP_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PEVAP_OUT_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PINPRS_B (NPROMA,1,NGPBLKS))
ALLOCATE (PINPRS_OUT_B (NPROMA,1,NGPBLKS))
ALLOCATE (PINPRG_B (NPROMA,1,NGPBLKS))
ALLOCATE (PINPRG_OUT_B (NPROMA,1,NGPBLKS))
ALLOCATE (ZINDEP_B (NPROMA,1,NGPBLKS))
ALLOCATE (ZINDEP_OUT_B (NPROMA,1,NGPBLKS))
ALLOCATE (ZRAINFR_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (ZRAINFR_OUT_B (NPROMA,1,NFLEVG,NGPBLKS))
ALLOCATE (PFPR_B (NPROMA,1,NFLEVG,KRR,NGPBLKS))
ALLOCATE (PFPR_OUT_B (NPROMA,1,NFLEVG,KRR,NGPBLKS))
ZNAN = IEEE_VALUE (ZNAN, IEEE_SIGNALING_NAN)
!CALL SET (LLMICRO_B )
CALL SET (PEXNREF_B )
CALL SET (PDZZ_B )
CALL SET (PRHODJ_B )
CALL SET (PRHODREF_B )
CALL SET (PEXNREF2_B )
CALL SET (PPABSM_B )
CALL SET (PCIT_B )
CALL SET (PCLDFR_B )
CALL SET (PHLC_HRC_B )
CALL SET (PHLC_HCF_B )
CALL SET (PHLI_HRI_B )
CALL SET (PHLI_HCF_B )
CALL SET (PTHT_B )
CALL SET (PRT_B )
CALL SET (PTHS_B )
CALL SET (PRS_B )
CALL SET (PSIGS_B )
CALL SET (PSEA_B )
CALL SET (PTOWN_B )
CALL SET (PCIT_OUT_B )
CALL SET (PRS_OUT_B )
CALL SET (ZINPRC_OUT_B )
CALL SET (PINPRR_OUT_B )
CALL SET (PEVAP_OUT_B )
CALL SET (PINPRS_OUT_B )
CALL SET (PINPRG_OUT_B )
CALL SET (ZINDEP_OUT_B )
CALL SET (ZRAINFR_OUT_B )
CALL SET (PFPR_OUT_B )
ZINPRC_OUT_B = ZNAN
PINPRR_OUT_B = ZNAN
PEVAP_OUT_B = ZNAN
PINPRS_OUT_B = ZNAN
PINPRG_OUT_B = ZNAN
ZINDEP_OUT_B = ZNAN
ZRAINFR_OUT_B = ZNAN
PFPR_OUT_B = ZNAN
IOFF = 0
IBL = 0
LLEXIST = .TRUE.
DO WHILE(LLEXIST)
IBL = IBL + 1
WRITE (CLFILE, '("data/",I8.8,".dat")') IBL
INQUIRE (FILE=TRIM (CLFILE), EXIST=LLEXIST)
IF (LDVERBOSE) PRINT *, TRIM (CLFILE)
IF (.NOT. LLEXIST) EXIT
OPEN (IFILE, FILE=TRIM (CLFILE), FORM='UNFORMATTED')
READ (IFILE) IPROMA, ISIZE
READ (IFILE) KLON, KDUM, KLEV, KRR
IF (IBL == 1) THEN
ALLOCATE (LLMICRO (NGPTOT, KLEV, 1))
ALLOCATE (PEXNREF (NGPTOT, KLEV, 1))
ALLOCATE (PDZZ (NGPTOT, 1, KLEV, 1))
ALLOCATE (PRHODJ (NGPTOT, 1, KLEV, 1))
ALLOCATE (PRHODREF (NGPTOT, 1, KLEV, 1))
ALLOCATE (PEXNREF2 (NGPTOT, KLEV, 1))
ALLOCATE (PPABSM (NGPTOT, 1, KLEV, 1))
ALLOCATE (PCIT (NGPTOT, 1, KLEV, 1))
ALLOCATE (PCLDFR (NGPTOT, 1, KLEV, 1))
ALLOCATE (PHLC_HRC (NGPTOT, 1, KLEV, 1))
ALLOCATE (PHLC_HCF (NGPTOT, 1, KLEV, 1))
ALLOCATE (PHLI_HRI (NGPTOT, 1, KLEV, 1))
ALLOCATE (PHLI_HCF (NGPTOT, 1, KLEV, 1))
ALLOCATE (PTHT (NGPTOT, 1, KLEV, 1))
ALLOCATE (PRT (NGPTOT, KLEV, KRR, 1))
ALLOCATE (PTHS (NGPTOT, 1, KLEV, 1))
ALLOCATE (PRS (NGPTOT, KLEV, KRR, 1))
ALLOCATE (PSIGS (NGPTOT, 1, KLEV, 1))
ALLOCATE (PSEA (NGPTOT, 1, 1))
ALLOCATE (PTOWN (NGPTOT, 1, 1))
ALLOCATE (PCIT_OUT (NGPTOT, 1, KLEV, 1))
ALLOCATE (PRS_OUT (NGPTOT, 1, KLEV, KRR, 1))
ALLOCATE (ZINPRC_OUT (NGPTOT, 1, 1))
ALLOCATE (PINPRR_OUT (NGPTOT, 1, 1))
ALLOCATE (PEVAP_OUT (NGPTOT, 1, KLEV, 1))
ALLOCATE (PINPRS_OUT (NGPTOT, 1, 1))
ALLOCATE (PINPRG_OUT (NGPTOT, 1, 1))
ALLOCATE (ZINDEP_OUT (NGPTOT, 1, 1))
ALLOCATE (ZRAINFR_OUT (NGPTOT, 1, KLEV, 1))
ALLOCATE (PFPR_OUT (NGPTOT, 1, KLEV, KRR, 1))
ENDIF
IF (IOFF+KLON > NGPTOT) THEN
EXIT
ENDIF
READ (IFILE) LLMICRO (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PEXNREF (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PDZZ (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PRHODJ (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PRHODREF (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PEXNREF2 (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PPABSM (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PCIT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PCLDFR (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PHLC_HRC (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PHLC_HCF (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PHLI_HRI (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PHLI_HCF (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PTHT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PRT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PTHS (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PRS (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PSIGS (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PSEA (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PTOWN (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PCIT_OUT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PRS_OUT (IOFF+1:IOFF+KLON, :, :, :, 1)
READ (IFILE) ZINPRC_OUT (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PINPRR_OUT (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PEVAP_OUT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PINPRS_OUT (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) PINPRG_OUT (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) ZINDEP_OUT (IOFF+1:IOFF+KLON, :, 1)
READ (IFILE) ZRAINFR_OUT (IOFF+1:IOFF+KLON, :, :, 1)
READ (IFILE) PFPR_OUT (IOFF+1:IOFF+KLON, :, :, :, 1)
CLOSE (IFILE)
IOFF = IOFF + KLON
ENDDO
IF (NFLEVG /= KLEV) THEN
CALL INTERPOLATE (NFLEVG, IOFF, LLMICRO )
CALL INTERPOLATE (NFLEVG, IOFF, PEXNREF )
CALL INTERPOLATE (NFLEVG, IOFF, PDZZ )
CALL INTERPOLATE (NFLEVG, IOFF, PRHODJ )
CALL INTERPOLATE (NFLEVG, IOFF, PRHODREF )
CALL INTERPOLATE (NFLEVG, IOFF, PEXNREF2 )
CALL INTERPOLATE (NFLEVG, IOFF, PPABSM )
CALL INTERPOLATE (NFLEVG, IOFF, PCIT )
CALL INTERPOLATE (NFLEVG, IOFF, PCLDFR )
CALL INTERPOLATE (NFLEVG, IOFF, PHLC_HRC )
CALL INTERPOLATE (NFLEVG, IOFF, PHLC_HCF )
CALL INTERPOLATE (NFLEVG, IOFF, PHLI_HRI )
CALL INTERPOLATE (NFLEVG, IOFF, PHLI_HCF )
CALL INTERPOLATE (NFLEVG, IOFF, PTHT )
CALL INTERPOLATE (NFLEVG, IOFF, PRT )
CALL INTERPOLATE (NFLEVG, IOFF, PTHS )
CALL INTERPOLATE (NFLEVG, IOFF, PRS )
CALL INTERPOLATE (NFLEVG, IOFF, PSIGS )
CALL INTERPOLATE (NFLEVG, IOFF, PSEA )
CALL INTERPOLATE (NFLEVG, IOFF, PTOWN )
CALL INTERPOLATE (NFLEVG, IOFF, PCIT_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PRS_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, ZINPRC_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PINPRR_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PEVAP_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PINPRS_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PINPRG_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, ZINDEP_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, ZRAINFR_OUT )
CALL INTERPOLATE (NFLEVG, IOFF, PFPR_OUT )
ENDIF
CALL REPLICATE (IOFF, LLMICRO (:, :, 1))
CALL REPLICATE (IOFF, PEXNREF (:, :, 1))
CALL REPLICATE (IOFF, PDZZ (:, :, :, 1))
CALL REPLICATE (IOFF, PRHODJ (:, :, :, 1))
CALL REPLICATE (IOFF, PRHODREF (:, :, :, 1))
CALL REPLICATE (IOFF, PEXNREF2 (:, :, 1))
CALL REPLICATE (IOFF, PPABSM (:, :, :, 1))
CALL REPLICATE (IOFF, PCIT (:, :, :, 1))
CALL REPLICATE (IOFF, PCLDFR (:, :, :, 1))
CALL REPLICATE (IOFF, PHLC_HRC (:, :, :, 1))
CALL REPLICATE (IOFF, PHLC_HCF (:, :, :, 1))
CALL REPLICATE (IOFF, PHLI_HRI (:, :, :, 1))
CALL REPLICATE (IOFF, PHLI_HCF (:, :, :, 1))
CALL REPLICATE (IOFF, PTHT (:, :, :, 1))
CALL REPLICATE (IOFF, PRT (:, :, :, 1))
CALL REPLICATE (IOFF, PTHS (:, :, :, 1))
CALL REPLICATE (IOFF, PRS (:, :, :, 1))
CALL REPLICATE (IOFF, PSIGS (:, :, :, 1))
CALL REPLICATE (IOFF, PSEA (:, :, 1))
CALL REPLICATE (IOFF, PTOWN (:, :, 1))
CALL REPLICATE (IOFF, PCIT_OUT (:, :, :, 1))
CALL REPLICATE (IOFF, PRS_OUT (:, :, :, :, 1))
CALL REPLICATE (IOFF, ZINPRC_OUT (:, :, 1))
CALL REPLICATE (IOFF, PINPRR_OUT (:, :, 1))
CALL REPLICATE (IOFF, PEVAP_OUT (:, :, :, 1))
CALL REPLICATE (IOFF, PINPRS_OUT (:, :, 1))
CALL REPLICATE (IOFF, PINPRG_OUT (:, :, 1))
CALL REPLICATE (IOFF, ZINDEP_OUT (:, :, 1))
CALL REPLICATE (IOFF, ZRAINFR_OUT (:, :, :, 1))
CALL REPLICATE (IOFF, PFPR_OUT (:, :, :, :, 1))
CALL NPROMIZE (NPROMA, LLMICRO , LLMICRO_B )
CALL NPROMIZE (NPROMA, PEXNREF , PEXNREF_B )
CALL NPROMIZE (NPROMA, PDZZ , PDZZ_B )
CALL NPROMIZE (NPROMA, PRHODJ , PRHODJ_B )
CALL NPROMIZE (NPROMA, PRHODREF , PRHODREF_B )
CALL NPROMIZE (NPROMA, PEXNREF2 , PEXNREF2_B )
CALL NPROMIZE (NPROMA, PPABSM , PPABSM_B )
CALL NPROMIZE (NPROMA, PCIT , PCIT_B )
CALL NPROMIZE (NPROMA, PCLDFR , PCLDFR_B )
CALL NPROMIZE (NPROMA, PHLC_HRC , PHLC_HRC_B )
CALL NPROMIZE (NPROMA, PHLC_HCF , PHLC_HCF_B )
CALL NPROMIZE (NPROMA, PHLI_HRI , PHLI_HRI_B )
CALL NPROMIZE (NPROMA, PHLI_HCF , PHLI_HCF_B )
CALL NPROMIZE (NPROMA, PTHT , PTHT_B )
CALL NPROMIZE (NPROMA, PRT , PRT_B )
CALL NPROMIZE (NPROMA, PTHS , PTHS_B )
CALL NPROMIZE (NPROMA, PRS , PRS_B )
CALL NPROMIZE (NPROMA, PSIGS , PSIGS_B )
CALL NPROMIZE (NPROMA, PSEA , PSEA_B )
CALL NPROMIZE (NPROMA, PTOWN , PTOWN_B )
CALL NPROMIZE (NPROMA, PCIT_OUT , PCIT_OUT_B )
CALL NPROMIZE (NPROMA, PRS_OUT , PRS_OUT_B )
CALL NPROMIZE (NPROMA, ZINPRC_OUT , ZINPRC_OUT_B )
CALL NPROMIZE (NPROMA, PINPRR_OUT , PINPRR_OUT_B )
CALL NPROMIZE (NPROMA, PEVAP_OUT , PEVAP_OUT_B )
CALL NPROMIZE (NPROMA, PINPRS_OUT , PINPRS_OUT_B )
CALL NPROMIZE (NPROMA, PINPRG_OUT , PINPRG_OUT_B )
CALL NPROMIZE (NPROMA, ZINDEP_OUT , ZINDEP_OUT_B )
CALL NPROMIZE (NPROMA, ZRAINFR_OUT , ZRAINFR_OUT_B )
CALL NPROMIZE (NPROMA, PFPR_OUT , PFPR_OUT_B )
END SUBROUTINE
SUBROUTINE REPLICATE4 (KOFF, P)
INTEGER :: KOFF
REAL :: P (:,:,:,:)
INTEGER :: I, J
DO I = KOFF+1, SIZE (P, 1)
J = 1 + MODULO (I - 1, KOFF)
P (I, :, :, :) = P (J, :, :, :)
ENDDO
END SUBROUTINE
SUBROUTINE REPLICATE3 (KOFF, P)
INTEGER :: KOFF
REAL :: P (:,:,:)
INTEGER :: I, J
DO I = KOFF+1, SIZE (P, 1)
J = 1 + MODULO (I - 1, KOFF)
P (I, :, :) = P (J, :, :)
ENDDO
END SUBROUTINE
SUBROUTINE REPLICATE2 (KOFF, P)
INTEGER :: KOFF
REAL :: P (:,:)
INTEGER :: I, J
DO I = KOFF+1, SIZE (P, 1)
J = 1 + MODULO (I - 1, KOFF)
P (I, :) = P (J, :)
ENDDO
END SUBROUTINE
SUBROUTINE REPLICATEL (KOFF, L)
INTEGER :: KOFF
LOGICAL :: L(:,:)
INTEGER :: I, J
DO I = KOFF+1, SIZE (L, 1)
J = 1 + MODULO (I - 1, KOFF)
L (I, :) = L (J, :)
ENDDO
END SUBROUTINE
SUBROUTINE NPROMIZE3 (KPROMA, PI, PO)
INTEGER :: KPROMA
REAL, INTENT (IN) :: PI (:,:,:)
REAL, INTENT (OUT) :: PO (:,:,:)
INTEGER :: I, J, IGPBLK, IGPTOT, IGP, JLON, JIDIA, JFDIA
IF (SIZE (PI, 3) /= 1) STOP 1
IGPTOT = SIZE (PI, 1)
IGPBLK = 1 + (IGPTOT-1) / KPROMA
DO IGP = 1, IGPTOT, KPROMA
IBL = 1 + (IGP - 1) / KPROMA
JIDIA = 1
JFDIA = MIN (KPROMA, IGPTOT - (IBL - 1) * KPROMA)
DO JLON = JIDIA, JFDIA
PO (JLON, :, IBL) = PI (IGP + (JLON - 1), :, 1)
ENDDO
DO JLON = JFDIA+1, KPROMA
PO (JLON, :, IBL) = PO (JFDIA, :, IBL)
ENDDO
ENDDO
END SUBROUTINE
SUBROUTINE NPROMIZE4 (KPROMA, PI, PO)
INTEGER :: KPROMA
REAL, INTENT (IN) :: PI (:,:,:,:)
REAL, INTENT (OUT) :: PO (:,:,:,:)
INTEGER :: I, J, IGPBLK, IGPTOT, IGP, JLON, JIDIA, JFDIA
IF (SIZE (PI, 4) /= 1) STOP 1
IGPTOT = SIZE (PI, 1)
IGPBLK = 1 + (IGPTOT-1) / KPROMA
DO IGP = 1, IGPTOT, KPROMA
IBL = 1 + (IGP - 1) / KPROMA
JIDIA = 1
JFDIA = MIN (KPROMA, IGPTOT - (IBL - 1) * KPROMA)
DO JLON = JIDIA, JFDIA
PO (JLON, :, :, IBL) = PI (IGP + (JLON - 1), :, :, 1)
ENDDO
DO JLON = JFDIA+1, KPROMA
PO (JLON, :, :, IBL) = PO (JFDIA, :, :, IBL)
ENDDO
ENDDO
END SUBROUTINE
SUBROUTINE NPROMIZE5 (KPROMA, PI, PO)
INTEGER :: KPROMA
REAL, INTENT (IN) :: PI (:,:,:,:,:)
REAL, INTENT (OUT) :: PO (:,:,:,:,:)
INTEGER :: I, J, IGPBLK, IGPTOT, IGP, JLON, JIDIA, JFDIA
IF (SIZE (PI, 5) /= 1) STOP 1
IGPTOT = SIZE (PI, 1)
IGPBLK = 1 + (IGPTOT-1) / KPROMA
DO IGP = 1, IGPTOT, KPROMA
IBL = 1 + (IGP - 1) / KPROMA
JIDIA = 1
JFDIA = MIN (KPROMA, IGPTOT - (IBL - 1) * KPROMA)
DO JLON = JIDIA, JFDIA
PO (JLON, :, :, :, IBL) = PI (IGP + (JLON - 1), :, :, :, 1)
ENDDO
DO JLON = JFDIA+1, KPROMA
PO (JLON, :, :, :, IBL) = PI (JFDIA, :, :, :, IBL)
ENDDO
ENDDO
END SUBROUTINE
SUBROUTINE NPROMIZEL (KPROMA, LI, LO)
INTEGER :: KPROMA
LOGICAL, INTENT(IN) :: LI(:,:,:)
LOGICAL, INTENT(OUT) :: LO(:,:,:)
INTEGER :: I, J, IGPBLK, IGPTOT, IGP, JLON, JIDIA, JFDIA
IF (SIZE (LI, 3) /= 1) STOP 1
IGPTOT = SIZE (LI, 1)
IGPBLK = 1 + (IGPTOT-1) / KPROMA
DO IGP = 1, IGPTOT, KPROMA
IBL = 1 + (IGP - 1) / KPROMA
JIDIA = 1
JFDIA = MIN (KPROMA, IGPTOT - (IBL - 1) * KPROMA)
DO JLON = JIDIA, JFDIA
LO(JLON, :, IBL) = LI(IGP + (JLON - 1), :, 1)
ENDDO
DO JLON = JFDIA+1, KPROMA
LO(JLON, :, IBL) = LI(JFDIA, :, IBL)
ENDDO
ENDDO
END SUBROUTINE
SUBROUTINE INTERPOLATE3 (KFLEVG, KOFF, P)
INTEGER :: KFLEVG, KOFF
REAL, ALLOCATABLE :: P (:,:,:)
REAL :: Z (LBOUND (P, 1):UBOUND (P, 1), &
& LBOUND (P, 2):UBOUND (P, 2), &
& LBOUND (P, 3):UBOUND (P, 3))
INTEGER :: ILEV1A, ILEV1B, ILEV2, NLEV1, NLEV2
REAL :: ZWA, ZWB, ZLEV1, ZLEV2
Z = P
NLEV1 = SIZE (P, 2)
NLEV2 = KFLEVG
DEALLOCATE (P)
ALLOCATE (P (LBOUND (Z, 1):UBOUND (Z, 1), &
& KFLEVG, &
& LBOUND (Z, 3):UBOUND (Z, 3)))
DO ILEV2 = 1, NLEV2
ZLEV2 = REAL (ILEV2 - 1) / REAL (NLEV2 -1)
ZLEV1 = 1. + ZLEV2 * REAL (NLEV1 - 1)
ILEV1B = MIN (CEILING (ZLEV1), NLEV1)
ILEV1A = MAX (FLOOR (ZLEV1), 1)
IF (ILEV1A == ILEV1B) THEN
ZWA = 1.
ZWB = 0.
ELSE
ZWA = REAL (ILEV1B) - ZLEV1
ZWB = ZLEV1 - REAL (ILEV1A)
ENDIF
P(1:KOFF, ILEV2, :) = ZWA * Z(1:KOFF, ILEV1A, :) + ZWB * Z(1:KOFF, ILEV1B, :)
ENDDO
END SUBROUTINE
SUBROUTINE INTERPOLATE4 (KFLEVG, KOFF, P)
INTEGER :: KFLEVG, KOFF
REAL, ALLOCATABLE :: P (:,:,:,:)
REAL :: Z (LBOUND (P, 1):UBOUND (P, 1), &
& LBOUND (P, 2):UBOUND (P, 2), &
& LBOUND (P, 3):UBOUND (P, 3), &
& LBOUND (P, 4):UBOUND (P, 4))
INTEGER :: ILEV1A, ILEV1B, ILEV2, NLEV1, NLEV2
REAL :: ZWA, ZWB, ZLEV1, ZLEV2
Z = P
NLEV1 = SIZE (P, 3)
NLEV2 = KFLEVG
DEALLOCATE (P)
ALLOCATE (P (LBOUND (Z, 1):UBOUND (Z, 1), &
& LBOUND (Z, 2):UBOUND (Z, 2), &
& KFLEVG, &
& LBOUND (Z, 4):UBOUND (Z, 4)))
DO ILEV2 = 1, NLEV2
ZLEV2 = REAL (ILEV2 - 1) / REAL (NLEV2 -1)
ZLEV1 = 1. + ZLEV2 * REAL (NLEV1 - 1)
ILEV1B = MIN (CEILING (ZLEV1), NLEV1)
ILEV1A = MAX (FLOOR (ZLEV1), 1)
IF (ILEV1A == ILEV1B) THEN
ZWA = 1.
ZWB = 0.
ELSE
ZWA = REAL (ILEV1B) - ZLEV1
ZWB = ZLEV1 - REAL (ILEV1A)
ENDIF
P (1:KOFF, :, ILEV2, :) = ZWA * Z (1:KOFF, :, ILEV1A, :) + ZWB * Z (1:KOFF, :, ILEV1B, :)
ENDDO
END SUBROUTINE
SUBROUTINE INTERPOLATE5 (KFLEVG, KOFF, P)
INTEGER :: KFLEVG, KOFF
REAL, ALLOCATABLE :: P (:,:,:,:,:)
REAL :: Z (LBOUND (P, 1):UBOUND (P, 1), &
& LBOUND (P, 2):UBOUND (P, 2), &
& LBOUND (P, 3):UBOUND (P, 3), &
& LBOUND (P, 4):UBOUND (P, 4), &
& LBOUND (P, 5):UBOUND (P, 5))
INTEGER :: ILEV1A, ILEV1B, ILEV2, NLEV1, NLEV2
REAL :: ZWA, ZWB, ZLEV1, ZLEV2
Z = P
NLEV1 = SIZE (P, 3)
NLEV2 = KFLEVG
DEALLOCATE (P)
ALLOCATE (P (LBOUND (Z, 1):UBOUND (Z, 1), &
& LBOUND (Z, 2):UBOUND (Z, 2), &
& KFLEVG, &
& LBOUND (Z, 4):UBOUND (Z, 4), &
& LBOUND (Z, 5):UBOUND (Z, 5)))
DO ILEV2 = 1, NLEV2
ZLEV2 = REAL (ILEV2 - 1) / REAL (NLEV2 -1)
ZLEV1 = 1. + ZLEV2 * REAL (NLEV1 - 1)
ILEV1B = MIN (CEILING (ZLEV1), NLEV1)
ILEV1A = MAX (FLOOR (ZLEV1), 1)
IF (ILEV1A == ILEV1B) THEN
ZWA = 1.
ZWB = 0.
ELSE
ZWA = REAL (ILEV1B) - ZLEV1
ZWB = ZLEV1 - REAL (ILEV1A)
ENDIF
P (1:KOFF, :, ILEV2, :, :) = ZWA * Z (1:KOFF, :, ILEV1A, :, :) + ZWB * Z (1:KOFF, :, ILEV1B, :, :)
ENDDO
END SUBROUTINE
SUBROUTINE INTERPOLATEL (KFLEVG, KOFF, L)
INTEGER :: KFLEVG, KOFF
LOGICAL, ALLOCATABLE :: L(:,:,:)
LOGICAL :: Z (LBOUND (L, 1):UBOUND (L, 1), &
LBOUND (L, 2):UBOUND (L, 2), &
LBOUND (L, 3):UBOUND (L, 3))
INTEGER :: ILEV1A, ILEV1B, ILEV2, NLEV1, NLEV2
REAL :: ZWA, ZWB, ZLEV1, ZLEV2
Z = L
NLEV1 = SIZE (L, 3)
NLEV2 = KFLEVG
DEALLOCATE (L)
ALLOCATE (L (LBOUND (Z, 1):UBOUND (Z, 1), &
& KFLEVG, &
& LBOUND (Z, 3):UBOUND (Z, 3)))
DO ILEV2 = 1, NLEV2
ZLEV2 = REAL (ILEV2 - 1) / REAL (NLEV2 -1)
ZLEV1 = 1. + ZLEV2 * REAL (NLEV1 - 1)
ILEV1B = MIN (CEILING (ZLEV1), NLEV1)
ILEV1A = MAX (FLOOR (ZLEV1), 1)
IF (ILEV1A == ILEV1B) THEN
ZWA = 1.
ZWB = 0.
ELSE
ZWA = REAL (ILEV1B) - ZLEV1
ZWB = ZLEV1 - REAL (ILEV1A)
ENDIF
L(1:KOFF, ILEV2, :) = ZWA * MERGE(1., 0., Z(1:KOFF, ILEV1A, :)) + ZWB * MERGE(1., 0., Z (1:KOFF, ILEV1B, :)) >= 0.5
ENDDO
END SUBROUTINE
SUBROUTINE SET3 (P)
REAL :: P (:,:,:)
INTEGER :: IBL, IGPBLKS
INTEGER :: NTID, ITID, JBLK1, JBLK2
IGPBLKS = SIZE (P, 3)
!$OMP PARALLEL PRIVATE (ITID, JBLK1, JBLK2, NTID)
NTID = OMP_GET_MAX_THREADS ()
ITID = OMP_GET_THREAD_NUM ()
JBLK1 = 1 + (IGPBLKS * (ITID+0)) / NTID
JBLK2 = (IGPBLKS * (ITID+1)) / NTID
DO IBL = JBLK1, JBLK2
P (:,:,IBL) = ZNAN
ENDDO
!$OMP END PARALLEL
END SUBROUTINE
SUBROUTINE SET4 (P)
REAL :: P (:,:,:,:)
INTEGER :: IBL, IGPBLKS
INTEGER :: NTID, ITID, JBLK1, JBLK2
IGPBLKS = SIZE (P, 4)
!$OMP PARALLEL PRIVATE (ITID, JBLK1, JBLK2, NTID)
NTID = OMP_GET_MAX_THREADS ()
ITID = OMP_GET_THREAD_NUM ()
JBLK1 = 1 + (IGPBLKS * (ITID+0)) / NTID
JBLK2 = (IGPBLKS * (ITID+1)) / NTID
DO IBL = JBLK1, JBLK2
P (:,:,:,IBL) = ZNAN
ENDDO
!$OMP END PARALLEL
END SUBROUTINE
SUBROUTINE SET5 (P)
REAL :: P (:,:,:,:,:)
INTEGER :: IBL, IGPBLKS
INTEGER :: NTID, ITID, JBLK1, JBLK2
IGPBLKS = SIZE (P, 5)
!$OMP PARALLEL PRIVATE (ITID, JBLK1, JBLK2, NTID)
NTID = OMP_GET_MAX_THREADS ()
ITID = OMP_GET_THREAD_NUM ()
JBLK1 = 1 + (IGPBLKS * (ITID+0)) / NTID
JBLK2 = (IGPBLKS * (ITID+1)) / NTID
DO IBL = JBLK1, JBLK2
P (:,:,:,:,IBL) = ZNAN
ENDDO
!$OMP END PARALLEL
END SUBROUTINE
END MODULE
PROGRAM MAIN_RAIN_ICE_OLD PROGRAM MAIN_RAIN_ICE_OLD
use xrd_getoptions use xrd_getoptions, only: initoptions, getoption
use yomhook, only : lhook, dr_hook use getdata_rain_ice_old_mod, only: getdata_rain_ice_old
use parkind1, only : jprb, jpim
use yomhook, only: lhook, dr_hook
use parkind1, only: jprb, jpim
use ddh_mix, only : typ_ddh
use yomlddh, only : tlddh
use yommddh, only : tmddh
use iso_fortran_env, only: output_unit use iso_fortran_env, only: output_unit
...@@ -10,31 +16,156 @@ implicit none ...@@ -10,31 +16,156 @@ implicit none
integer :: n_gp_blocks, & integer :: n_gp_blocks, &
n_proma, & n_proma, &
n_lev n_levels
real, allocatable, dimension(:,:,:) :: pexnref
real, allocatable, dimension(:,:,:,:) :: pdzz
real, allocatable, dimension(:,:,:,:) :: prhodj
real, allocatable, dimension(:,:,:,:) :: prhodref
real, allocatable, dimension(:,:,:) :: pexnref2
real, allocatable, dimension(:,:,:,:) :: ppabsm
real, allocatable, dimension(:,:,:,:) :: pcit
real, allocatable, dimension(:,:,:,:) :: pcldfr
real, allocatable, dimension(:,:,:,:) :: phlc_hrc
real, allocatable, dimension(:,:,:,:) :: phlc_hcf
real, allocatable, dimension(:,:,:,:) :: phli_hri
real, allocatable, dimension(:,:,:,:) :: phli_hcf
real, allocatable, dimension(:,:,:,:) :: ptht
real, allocatable, dimension(:,:,:,:) :: prt
real, allocatable, dimension(:,:,:,:) :: pths
real, allocatable, dimension(:,:,:,:) :: prs
real, allocatable, dimension(:,:,:,:) :: psigs
real, allocatable, dimension(:,:,:) :: psea
real, allocatable, dimension(:,:,:) :: ptown
real, allocatable, dimension(:,:,:,:) :: pcit_out
real, allocatable, dimension(:,:,:,:,:) :: prs_out
real, allocatable, dimension(:,:,:) :: zinprc, zinprc_out
real, allocatable, dimension(:,:,:) :: pinprr, pinprr_out
real, allocatable, dimension(:,:,:,:) :: pevap, pevap_out
real, allocatable, dimension(:,:,:) :: pinprs, pinprs_out
real, allocatable, dimension(:,:,:) :: pinprg, pinprg_out
real, allocatable, dimension(:,:,:) :: zindep, zindep_out
real, allocatable, dimension(:,:,:,:) :: zrainfr, zrainfr_out
real, allocatable, dimension(:,:,:,:,:) :: pfpr, pfpr_out
logical, allocatable, dimension(:,:,:) :: l_micro
!Dummies for now
!SPP stuff
real, allocatable, dimension(:,:) :: picenu, pkgn_acon, pkgn_sbgr
!OCND2 stuff
real, allocatable, dimension(:,:,:) :: picldfr ! Ice cloud fraction
real, allocatable, dimension(:,:,:) :: pwcldfr ! Water or mixed-phase cloud fraction
real, allocatable, dimension(:,:,:) :: pifr ! Ratio cloud ice moist part to dry part
real, allocatable, dimension(:,:,:) :: pssio ! Super-saturation with respect to ice in the supersaturated fraction
real, allocatable, dimension(:,:,:) :: pssiu ! Sub-saturation with respect to ice in the subsaturated fraction
integer :: counter, c_rate integer :: counter, c_rate
logical :: l_verbose
integer :: kka
integer :: kku
integer :: kkl
integer :: krr
integer :: ksplitr
logical :: osedic
logical :: ocnd2
logical :: lkogan
logical :: lmodicedep
logical :: csedim
logical :: csubg_aucv_rc
logical :: owarm
real :: ptstep
integer :: i_block
type(typ_ddh) :: ydddh
type(tlddh) :: ydlddh
type(tmddh) :: ydmddh
real(kind=jprb) :: time_start_real, time_end_real real(kind=jprb) :: time_start_real, time_end_real
real(kind=jprb) :: time_start_cpu, time_end_cpu real(kind=jprb) :: time_start_cpu, time_end_cpu
n_gp_blocks = 150 n_gp_blocks = 150
n_proma = 32 n_proma = 32
n_lev = 90 n_levels = 90
call initoptions () call initoptions()
call getoption ("--blocks", n_gp_blocks) call getoption ("--blocks", n_gp_blocks)
call getoption ("--nproma", n_proma) call getoption ("--nproma", n_proma)
call getoption ("--nflevg", n_lev) call getoption ("--nflevg", n_levels)
call getoption ("--verbose", l_verbose)
write(output_unit, *) n_gp_blocks write(output_unit, *) n_gp_blocks
write(output_unit, *) n_proma write(output_unit, *) n_proma
write(output_unit, *) n_lev write(output_unit, *) n_levels
call getdata_rain_ice_old(n_proma, n_gp_blocks, n_levels, l_micro, pexnref, pdzz, prhodj, prhodref, &
pexnref2, ppabsm, pcit, pcldfr, phlc_hrc, phlc_hcf, phli_hri, phli_hcf, ptht, prt, pths, &
prs, psigs, psea, ptown, pcit_out, prs_out, zinprc, zinprc_out, pinprr, pinprr_out, pevap, pevap_out, &
pinprs, pinprs_out, pinprg, pinprg_out, zindep, zindep_out, zrainfr, zrainfr_out, pfpr, pfpr_out, l_verbose)
!Dummies
allocate(picenu(n_proma, 1))
allocate(pkgn_acon(n_proma, 1))
allocate(pkgn_sbgr(n_proma, 1))
allocate(picldfr(n_proma, 1, n_levels))
picenu = 1.0
pkgn_acon = 1.0
pkgn_sbgr = 1.0
osedic = .false.
ocnd2 = .true.
lkogan = .false.
lmodicedep = .false.
csedim = .false.
csubg_aucv_rc = .false.
owarm = .true.
ptstep = 25.0000000000000
kka = 1
kku = n_levels
kkl = -1
krr = 6
ksplitr = 2
call cpu_time(time_start_cpu) call cpu_time(time_start_cpu)
call system_clock(count=counter, count_rate=c_rate) call system_clock(count=counter, count_rate=c_rate)
time_start_real = real(counter,8)/c_rate time_start_real = real(counter,8)/c_rate
do i_block = 1, n_gp_blocks
CALL RAIN_ICE_OLD(OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, &
HSEDIM=CSEDIM, HSUBG_AUCV_RC=CSUBG_AUCV_RC, &
OWARM=OWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=KSPLITR, &
PTSTEP=2*PTSTEP, KRR=KRR, &
PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF, &
PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR, &
PICLDFR=PICLDFR, PWCLDFR=PWCLDFR, &
PSSIO=PSSIO, PSSIU=PSSIU, PIFR=PIFR, &
PTHT=PTHT,PRVT=PRT(:,:,:,1),PRCT= PRT(:,:,:,2), &
PRRT=PRT(:,:,:,3), &
PRIT=PRT(:,:,:,4), PRST=PRT(:,:,:,5), &
PRGT=PRT(:,:,:,6), &
PTHS=PTHS, PRVS=PRS(:,:,:,1),PRCS=PRS(:,:,:,2), &
PRRS=PRS(:,:,:,3), &
PRIS=PRS(:,:,:,4),PRSS= PRS(:,:,:,5),PRGS= PRS(:,:,:,6), &
PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP, &
PINPRS=PINPRS, PINPRG=PINPRG, &
PSIGS=PSIGS, PSEA=PSEA, PTOWN=PTOWN, &
YDDDH=YDDDH,YDLDDH=YDLDDH,YDMDDH=YDMDDH, &
PICENU=PICENU, PKGN_ACON=PKGN_ACON, PKGN_SBGR=PKGN_SBGR, &
PFPR=PFPR(:,:,:,:,i_block))
enddo
call cpu_time(time_end_cpu) call cpu_time(time_end_cpu)
call system_clock(count=counter, count_rate=c_rate) call system_clock(count=counter, count_rate=c_rate)
time_end_real = real(counter,8)/c_rate time_end_real = real(counter,8)/c_rate
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment