From 53b6b225d2d11844e380589249d5d1dc5a2c4453 Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Fri, 5 Jul 2024 14:48:37 +0000 Subject: [PATCH] Skip 'cpl_scalars' field when dumping export state --- cpl/module_cap_cpl.F90 | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/cpl/module_cap_cpl.F90 b/cpl/module_cap_cpl.F90 index 80a84130a..cc7d31350 100644 --- a/cpl/module_cap_cpl.F90 +++ b/cpl/module_cap_cpl.F90 @@ -135,6 +135,9 @@ subroutine State_RWFields_tiles(state,filename,rc) endif enddo + fieldbundle = ESMF_FieldBundleCreate(rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + call ESMF_LogWrite(trim(subname)//": write "//trim(filename), ESMF_LOGMSG_INFO, rc=rc) do ifld=1, fieldCount @@ -158,6 +161,13 @@ subroutine State_RWFields_tiles(state,filename,rc) call ESMF_ArrayGet(array, distgrid=distgrid, dimCount=dimCount, tileCount=tileCount, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + ! skip 'cpl_scalars' field because it has tileCount == 1, while all other fields have 6. + ! This causes the following error: + ! 20240705 134459.788 ERROR PET000 ESMCI_IO.C:1614 ESMCI::IO::checkNtiles() Wrong data value - New number of tiles (6) does not match previously-set number of tiles (1) for this IO object. All arrays handled by a given IO object must have the same number of tiles. + if (trim(fldNameList(ifld)) == 'cpl_scalars') then + cycle + endif + allocate(fieldDimLen(fieldDimCount)) allocate(minIndexPTile(dimCount, tileCount)) @@ -221,13 +231,10 @@ subroutine State_RWFields_tiles(state,filename,rc) deallocate(gridded_dim_labels) deallocate(ungridded_dim_labels) - enddo - - fieldbundle = ESMF_FieldBundleCreate(rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + call ESMF_FieldBundleAdd(fieldbundle, (/flds(ifld)/), rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - call ESMF_FieldBundleAdd(fieldbundle, flds, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + enddo call ESMF_FieldBundleWrite(fieldbundle, fileName=trim(filename), convention=convention, purpose=purpose, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return