Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_Mesh), | intent(in) | :: | mesh | |||
real(kind=ESMF_KIND_R8), | pointer | :: | areaList(:) | |||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_MeshGetElemArea(mesh, areaList, rc) ! ! !ARGUMENTS: type(ESMF_Mesh), intent(in) :: mesh real(ESMF_KIND_R8), pointer :: areaList(:) integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! Write a mesh to VTK file. ! ! \begin{description} ! \item [mesh] ! The mesh. ! \item [areaList] ! Areas for the mesh elements will be put here ! \item [{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} ! !EOPI !------------------------------------------------------------------------------ integer :: localrc type(ESMF_Logical) :: isfree type(ESMF_MeshStatus_Flag) :: status ! initialize return code; assume routine not implemented localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL ! Check init status of arguments ESMF_INIT_CHECK_DEEP(ESMF_MeshGetInit, mesh, rc) call C_ESMC_MeshGetIsFree(mesh, isfree) if (isfree == ESMF_TRUE) then call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_WRONG, & msg="- the mesh internals have been freed", & ESMF_CONTEXT, rcToReturn=rc) return endif call C_ESMC_MeshGetStatus(mesh, status) if (status .ne. ESMF_MESHSTATUS_COMPLETE) then call ESMF_LogSetError(rcToCheck=ESMF_RC_OBJ_WRONG, & msg="- the mesh has not been fully created", & ESMF_CONTEXT, rcToReturn=rc) return endif ! Call into mesh get areas call C_ESMC_MeshGetArea(mesh%this, size(areaList), areaList, localrc); if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! return success if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_MeshGetElemArea