Skip to content

Commit

Permalink
Simplify and robustify code to access index info. Should work correctly
Browse files Browse the repository at this point in the history
now for all stagger locations.
  • Loading branch information
theurich committed Mar 28, 2024
1 parent cca4469 commit 64d3aac
Showing 1 changed file with 2 additions and 42 deletions.
44 changes: 2 additions & 42 deletions src/Infrastructure/Field/src/ESMF_FieldGet.cppF90
Original file line number Diff line number Diff line change
Expand Up @@ -374,11 +374,7 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
!------------------------------------------------------------------------------
type(ESMF_FieldType), pointer :: ftype
integer :: localrc, fieldrank
type(ESMF_GridDecompType) :: decompType
type(ESMF_GeomType_Flag) :: localGeomType
type(ESMF_Status) :: fieldstatus
type(ESMF_Grid) :: l_grid
type(ESMF_Mesh) :: l_mesh
type(ESMF_DistGrid) :: distgrid

! Initialize
Expand Down Expand Up @@ -407,16 +403,12 @@ type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
status = ftype%status
endif

! set default decomp type to non-arb.
decompType = ESMF_GRID_NONARBITRARY

! Get the geometry type
if (present(geomtype)) then
call ESMF_GeomGet(ftype%geom, geomtype=localGeomType, rc=localrc)
call ESMF_GeomGet(ftype%geom, geomtype=geomtype, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
geomtype = localGeomType
endif

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

call ESMF_GeomGet(ftype%geom, geomtype=localGeomType, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return

if (localGeomType == ESMF_GEOMTYPE_GRID) then
call ESMF_GeomGet(ftype%geom, &
grid=l_grid, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
call ESMF_GridGet(l_grid, distgrid=distgrid, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
else if (localGeomType == ESMF_GEOMTYPE_MESH) then
call ESMF_GeomGet(ftype%geom, &
mesh=l_mesh, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
call ESMF_MeshGet(l_mesh, nodaldistgrid=distgrid, rc=localrc)
if (ESMF_LogFoundError(localrc, &
ESMF_ERR_PASSTHRU, &
ESMF_CONTEXT, rcToReturn=rc)) return
else
call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_BAD, &
msg="Only implemented for Grid and Mesh.", &
ESMF_CONTEXT, rcToReturn=rc)
return
endif

call ESMF_ArrayGet(ftype%array, rank=fieldrank, &
rc=localrc)
distgrid=distgrid, rc=localrc)
if (localrc .ne. ESMF_SUCCESS) then
call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_BAD, &
msg="Cannot retrieve fieldrank from ftypep%array", &
Expand Down

0 comments on commit 64d3aac

Please sign in to comment.