Skip to content

Commit 64d3aac

Browse files
committed
Simplify and robustify code to access index info. Should work correctly
now for all stagger locations.
1 parent cca4469 commit 64d3aac

File tree

1 file changed

+2
-42
lines changed

1 file changed

+2
-42
lines changed

src/Infrastructure/Field/src/ESMF_FieldGet.cppF90

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -374,11 +374,7 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
374374
!------------------------------------------------------------------------------
375375
type(ESMF_FieldType), pointer :: ftype
376376
integer :: localrc, fieldrank
377-
type(ESMF_GridDecompType) :: decompType
378-
type(ESMF_GeomType_Flag) :: localGeomType
379377
type(ESMF_Status) :: fieldstatus
380-
type(ESMF_Grid) :: l_grid
381-
type(ESMF_Mesh) :: l_mesh
382378
type(ESMF_DistGrid) :: distgrid
383379

384380
! Initialize
@@ -407,16 +403,12 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
407403
status = ftype%status
408404
endif
409405

410-
! set default decomp type to non-arb.
411-
decompType = ESMF_GRID_NONARBITRARY
412-
413406
! Get the geometry type
414407
if (present(geomtype)) then
415-
call ESMF_GeomGet(ftype%geom, geomtype=localGeomType, rc=localrc)
408+
call ESMF_GeomGet(ftype%geom, geomtype=geomtype, rc=localrc)
416409
if (ESMF_LogFoundError(localrc, &
417410
ESMF_ERR_PASSTHRU, &
418411
ESMF_CONTEXT, rcToReturn=rc)) return
419-
geomtype = localGeomType
420412
endif
421413

422414
if (present(geom)) then
@@ -651,40 +643,8 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
651643
if(present(minIndex) .or. present(maxIndex) .or. present(elementCount) .or. &
652644
present(localMinIndex) .or. present(localMaxIndex) .or. present(localElementCount)) then
653645

654-
call ESMF_GeomGet(ftype%geom, geomtype=localGeomType, rc=localrc)
655-
if (ESMF_LogFoundError(localrc, &
656-
ESMF_ERR_PASSTHRU, &
657-
ESMF_CONTEXT, rcToReturn=rc)) return
658-
659-
if (localGeomType == ESMF_GEOMTYPE_GRID) then
660-
call ESMF_GeomGet(ftype%geom, &
661-
grid=l_grid, rc=localrc)
662-
if (ESMF_LogFoundError(localrc, &
663-
ESMF_ERR_PASSTHRU, &
664-
ESMF_CONTEXT, rcToReturn=rc)) return
665-
call ESMF_GridGet(l_grid, distgrid=distgrid, rc=localrc)
666-
if (ESMF_LogFoundError(localrc, &
667-
ESMF_ERR_PASSTHRU, &
668-
ESMF_CONTEXT, rcToReturn=rc)) return
669-
else if (localGeomType == ESMF_GEOMTYPE_MESH) then
670-
call ESMF_GeomGet(ftype%geom, &
671-
mesh=l_mesh, rc=localrc)
672-
if (ESMF_LogFoundError(localrc, &
673-
ESMF_ERR_PASSTHRU, &
674-
ESMF_CONTEXT, rcToReturn=rc)) return
675-
call ESMF_MeshGet(l_mesh, nodaldistgrid=distgrid, rc=localrc)
676-
if (ESMF_LogFoundError(localrc, &
677-
ESMF_ERR_PASSTHRU, &
678-
ESMF_CONTEXT, rcToReturn=rc)) return
679-
else
680-
call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_BAD, &
681-
msg="Only implemented for Grid and Mesh.", &
682-
ESMF_CONTEXT, rcToReturn=rc)
683-
return
684-
endif
685-
686646
call ESMF_ArrayGet(ftype%array, rank=fieldrank, &
687-
rc=localrc)
647+
distgrid=distgrid, rc=localrc)
688648
if (localrc .ne. ESMF_SUCCESS) then
689649
call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_BAD, &
690650
msg="Cannot retrieve fieldrank from ftypep%array", &

0 commit comments

Comments
 (0)