The subroutine BundleRegrid
regrids a source bundle (srcBUN) into a destination bundle (dstBUN)
using hinterp. A bundle is thought of as being comprised of n 2D
slices (nslices) distributed among the n PEs (ns_per_pe). The
limits among each ns_per_pe region are given by n1 and n2 which
are functions of mype (the local PE):
slice_pe
1 --- n1(pe=0) - --> 0
2 --- | --> 0
. |_ ns_per_pe(pe=0) .
. | 0
. | 0
--- n2(pe=0) - 0
--- n1(pe=1) 1
. .
. .
. .
--- n2(pe=1) 1
--- n1(pe=2) 2
. .
. .
. .
ns --- slice_pe(ns)
. .
. .
. .
nslices --- n2(pe=n) --> npe
Each slice is gathered, regridded (hinterp), and scattered on a PE determined by a slice-to-PE map (slice_pe) to “load balance” the work of the serial hinterp function.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_FieldBundle), | intent(inout) | :: | srcBUN |
source bundle |
||
type(ESMF_FieldBundle), | intent(inout) | :: | dstBUN |
destination bundle |
||
integer, | intent(out), | optional | :: | rc |
return code |
The subroutine StateRegrid
regrids a state.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_State), | intent(inout) | :: | srcSTA | |||
type(ESMF_State), | intent(inout) | :: | dstSTA | |||
integer, | intent(out), | optional | :: | rc |
return code |
The subroutine FieldRegrid1
regrids 3D fields using ESMF_FieldRegrid.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_Field), | intent(in) | :: | srcFLD | |||
type(ESMF_Grid), | intent(in) | :: | Sgrid2D | |||
type(ESMF_Field), | intent(inout) | :: | dstFLD | |||
type(ESMF_Grid), | intent(in) | :: | Dgrid2D | |||
type(ESMF_VM), | intent(inout) | :: | vm | |||
type(ESMF_RouteHandle), | intent(inout) | :: | rh | |||
character(len=*), | intent(in) | :: | fname | |||
integer, | intent(out), | optional | :: | rc |
The subroutine BundleRegrid1
regrids members of a bundle using ESMF_FieldRegrid.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_FieldBundle), | intent(inout) | :: | srcBUN | |||
type(ESMF_Grid), | intent(in) | :: | Sgrid2D | |||
type(ESMF_FieldBundle), | intent(inout) | :: | dstBUN | |||
type(ESMF_Grid), | intent(in) | :: | Dgrid2D | |||
type(ESMF_VM), | intent(inout) | :: | vm | |||
type(ESMF_RouteHandle), | intent(inout) | :: | rh | |||
integer, | intent(out), | optional | :: | rc |