From bc1b165631ee2755c5a54ecd00dad5bbae2a6b41 Mon Sep 17 00:00:00 2001 From: Dmitry Pekurovsky Date: Thu, 15 Aug 2024 16:24:04 -0700 Subject: [PATCH] This version compiles and runs without crashing for 10 steps. It produces reasonable error norms. --- src/trans/cpu/internal/dir_trans_ctl_mod.F90 | 17 ++++++++++------- src/trans/cpu/internal/overlap_types_mod.F90 | 13 +++++++------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/trans/cpu/internal/dir_trans_ctl_mod.F90 b/src/trans/cpu/internal/dir_trans_ctl_mod.F90 index f8c2c38a9..0286e1e6c 100644 --- a/src/trans/cpu/internal/dir_trans_ctl_mod.F90 +++ b/src/trans/cpu/internal/dir_trans_ctl_mod.F90 @@ -84,8 +84,9 @@ SUBROUTINE DIR_TRANS_CTL(KF_UV_G,KF_SCALARS_G,KF_GP,KF_FS,KF_UV,KF_SCALARS,& USE TPM_GEN, ONLY: NPROMATR, NOUT USE ABORT_TRANS_MOD, ONLY: ABORT_TRANS USE LINKED_LIST_M, ONLY: LINKEDLISTNODE -USE TPM_DISTR, ONLY: D,NPROC,MYPROC,MYSETW - +USE TPM_DISTR, ONLY: D,NPROC,MYPROC,MYSETW,NPRTRNS +USE TPM_TRANS ,ONLY : NGPBLKS +USE TRGTOL_MOD, ONLY : TRGTOL_PROLOG IMPLICIT NONE ! Declaration of arguments @@ -117,11 +118,12 @@ SUBROUTINE DIR_TRANS_CTL(KF_UV_G,KF_SCALARS_G,KF_GP,KF_FS,KF_UV,KF_SCALARS,& INTEGER(KIND=JPIM) :: IBLKS,JBLK INTEGER(KIND=JPIM) :: NDONE,KNRECV,KRECVCOUNT,KSENDCOUNT,IGL,JGL,J,ISETW,KNSEND INTEGER(KIND=JPIM) :: IFIRSTLAT, ILASTLAT, IPOS, ISETA, ISETB, IRECV, ISETV,JFLD,JROC -INTEGER(KIND=JPIM), ALLOCATABLE :: KSENDTOT(:), KRECVTOT(:), KSEND(:), KRECV(:), KNDOFF(:), KGPTRSEND(:) -INTEGER(KIND=JPIM) :: KVSETUV(KF_GP) +INTEGER(KIND=JPIM), ALLOCATABLE :: KSENDTOT(:), KRECVTOT(:), KSEND(:), KRECV(:), KNDOFF(:) +INTEGER(KIND=JPIM) :: KGPTRSEND(2,NGPBLKS,NPRTRNS) +INTEGER(KIND=JPIM) :: IVSET(KF_GP) INTEGER(KIND=JPIM) :: KINDEX(D%NLENGTF) TYPE(LINKEDLISTNODE), POINTER :: IB -INTEGER(KIND=JPIM) :: IOFFSEND,IOFFRECV,IOFFGTF,IPOS,JFLD +INTEGER(KIND=JPIM) :: IOFFSEND,IOFFRECV,IOFFGTF INTEGER(KIND=JPIM) :: IST ! ------------------------------------------------------------------ @@ -152,7 +154,7 @@ SUBROUTINE DIR_TRANS_CTL(KF_UV_G,KF_SCALARS_G,KF_GP,KF_FS,KF_UV,KF_SCALARS,& ALLOCATE(KSEND(NPROC)) ALLOCATE(KRECV(NPROC)) ALLOCATE(KNDOFF(NPROC)) - ALLOCATE(KGPTRSEND(2,NGPBLKS,NPRTRNS)) +! ALLOCATE(KGPTRSEND(2,NGPBLKS,NPRTRNS)) ! Create a combined V-set array IST = 1 @@ -247,7 +249,8 @@ SUBROUTINE ACTIVATE(N, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, PGP, IOFF CLASS(BATCH), POINTER :: NEW_BATCH ! Add a new Batch to the list - CALL ACTIVE_BATCHES%APPEND(BATCH(N, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, IOFFSEND, IOFFRECV, IOFFGTF, SENDCNTMAX, RECVCNTMAX)) + CALL ACTIVE_BATCHES%APPEND(BATCH(N, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, IOFFSEND, & + & IOFFRECV, IOFFGTF, SENDCNTMAX, RECVCNTMAX)) SELECT TYPE (NEW_BATCH => ACTIVE_BATCHES%TAIL%VALUE) TYPE IS (BATCH) diff --git a/src/trans/cpu/internal/overlap_types_mod.F90 b/src/trans/cpu/internal/overlap_types_mod.F90 index 4ba60f353..ba547ce99 100644 --- a/src/trans/cpu/internal/overlap_types_mod.F90 +++ b/src/trans/cpu/internal/overlap_types_mod.F90 @@ -53,7 +53,8 @@ MODULE OVERLAP_TYPES_MOD ! Batch methods ! ----------------------------------------------------------------------------- - FUNCTION BATCH_CONSTRUCTOR(KBLK, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, IOFFSEND, IOFFRECV, IOFFGTF, SENDCNTMAX, RECVCNTMAX) RESULT(THIS) + FUNCTION BATCH_CONSTRUCTOR(KBLK, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, IOFFSEND, & + & IOFFRECV, IOFFGTF, SENDCNTMAX, RECVCNTMAX) RESULT(THIS) USE SHUFFLE_MOD, ONLY: SHUFFLE USE FIELD_SPLIT_MOD, ONLY: FIELD_SPLIT USE TPM_GEN, ONLY: NPROMATR, NOUT @@ -152,9 +153,9 @@ FUNCTION BATCH_CONSTRUCTOR(KBLK, KF_GP, KF_SCALARS_G, KF_UV_G, KVSETUV, KVSETSC, & THIS%NRECV, THIS%NINDEX, THIS%NNDOFF, THIS%NGPTRSEND) THIS%MYOFFSEND = IOFFSEND - IOFFSEND = IOFFSEND + SENDCNTMAX + IOFFSEND = IOFFSEND + THIS%NSENDCOUNT THIS%MYOFFRECV = IOFFRECV - IOFFRECV = IOFFRECV + RECVCNTMAX + IOFFRECV = IOFFRECV + THIS%NRECVCOUNT END FUNCTION BATCH_CONSTRUCTOR SUBROUTINE START_COMM(THIS, PGP, IREQ_RECV,PGTF,PCOMBUFS,PCOMBUFR) @@ -168,8 +169,8 @@ SUBROUTINE START_COMM(THIS, PGP, IREQ_RECV,PGTF,PCOMBUFS,PCOMBUFR) REAL(KIND=JPRB) :: PCOMBUFR(:,:),PCOMBUFS(:,:) CALL TRGTOL_COMM_SEND(PGTF(THIS%IOFFGTF:THIS%IOFFGTF+THIS%NF_FS-1,:), & - & PCOMBUFS(THIS%MYOFFSEND:THIS%MYOFFSEND+THIS%SENDCNTMAX,:), & - & PCOMBUFR(THIS%MYOFFRECV:THIS%MYOFFRECV+THIS%RECVCNTMAX,:), & + & PCOMBUFS(THIS%MYOFFSEND:THIS%MYOFFSEND+THIS%NSENDCOUNT,:), & + & PCOMBUFR(THIS%MYOFFRECV:THIS%MYOFFRECV+THIS%NRECVCOUNT,:), & & THIS%NF_FS, THIS%NF_GP, THIS%NF_SCALARS_G, THIS%NVSET, THIS%NSENDCOUNT, & & THIS%NRECVCOUNT, THIS%NNSEND, THIS%NNRECV, THIS%NSENDTOT, & & THIS%NRECVTOT, THIS%NSEND, THIS%NRECV, THIS%NINDEX, THIS%NNDOFF, & @@ -209,7 +210,7 @@ SUBROUTINE FINISH_COMM(THIS, PGTF, IREQ_RECV, PCOMBUFR, PSPVOR, PSPDIV, PSPSCALA REAL(KIND=JPRB), INTENT(INOUT) :: PCOMBUFR(:,:) CALL TRGTOL_COMM_RECV(PGTF(THIS%IOFFGTF:THIS%IOFFGTF+THIS%NF_FS-1,:), & - & PCOMBUFR(THIS%IOFFRECV:THIS%IOFFRECV+THIS%RECVCNTMAX,:), & + & PCOMBUFR(THIS%MYOFFRECV:THIS%MYOFFRECV+THIS%NRECVCOUNT,:), & & THIS%NF_FS, THIS%NRECVCOUNT, THIS%NNRECV, THIS%NRECVTOT, THIS%NRECV, & & THIS%NINDEX, THIS%NNDOFF, THIS%MYOFFRECV, IREQ_RECV) CALL FTDIR_CTL_COMP(PGTF(THIS%IOFFGTF:THIS%IOFFGTF+THIS%NF_FS-1,:), THIS%NF_FS)