@@ -15,6 +15,7 @@ module dshr_strdata_mod
1515 use ESMF , only : ESMF_POLEMETHOD_ALLAVG, ESMF_EXTRAPMETHOD_NEAREST_STOD
1616 use ESMF , only : ESMF_REGRIDMETHOD_BILINEAR, ESMF_REGRIDMETHOD_NEAREST_STOD, ESMF_FieldSMMStore
1717 use ESMF , only : ESMF_REGRIDMETHOD_CONSERVE, ESMF_NORMTYPE_FRACAREA, ESMF_NORMTYPE_DSTAREA
18+ use ESMF , only : ESMF_REGRIDMETHOD_PATCH
1819 use ESMF , only : ESMF_ClockGet, operator (- ), operator (==), ESMF_CALKIND_NOLEAP
1920 use ESMF , only : ESMF_FieldReGridStore, ESMF_FieldRedistStore, ESMF_UNMAPPEDACTION_IGNORE
2021 use ESMF , only : ESMF_TERMORDER_SRCSEQ, ESMF_FieldRegrid, ESMF_FieldFill, ESMF_FieldIsCreated
@@ -645,6 +646,16 @@ subroutine shr_strdata_init(sdat, model_clock, stream_name, rc)
645646 srcMaskValues= (/ sdat% stream(ns)% src_mask_val/ ), &
646647 srcTermProcessing= srcTermProcessing_Value, ignoreDegenerate= .true. , rc= rc)
647648 if (chkerr(rc,__LINE__,u_FILE_u)) return
649+ else if (trim (sdat% stream(ns)% mapalgo) == " patch" ) then
650+ call ESMF_FieldRegridStore(sdat% pstrm(ns)% field_stream, lfield_dst, &
651+ routehandle= sdat% pstrm(ns)% routehandle, &
652+ regridmethod= ESMF_REGRIDMETHOD_PATCH, &
653+ polemethod= ESMF_POLEMETHOD_ALLAVG, &
654+ extrapMethod= ESMF_EXTRAPMETHOD_NEAREST_STOD, &
655+ dstMaskValues= (/ sdat% stream(ns)% dst_mask_val/ ), &
656+ srcMaskValues= (/ sdat% stream(ns)% src_mask_val/ ), &
657+ srcTermProcessing= srcTermProcessing_Value, ignoreDegenerate= .true. , rc= rc)
658+ if (chkerr(rc,__LINE__,u_FILE_u)) return
648659 else if (trim (sdat% stream(ns)% mapalgo) == ' redist' ) then
649660 call ESMF_FieldRedistStore(sdat% pstrm(ns)% field_stream, lfield_dst, &
650661 routehandle= sdat% pstrm(ns)% routehandle, &
0 commit comments