Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_Grid), | intent(inout) | :: | grid | |||
type(ESMF_GridStatus_Flag), | optional | :: | status | |||
type(ESMF_DefaultFlag), | optional | :: | defaultflag | |||
integer, | intent(out), | optional | :: | rc |
subroutine ESMF_GridCommit(grid, status, defaultflag, rc) ! ! !ARGUMENTS: type(ESMF_Grid), intent(inout) :: grid type(ESMF_GridStatus_Flag), optional :: status ! NOT IMPLEMENTED type(ESMF_DefaultFlag), optional :: defaultflag ! NOT IMPLEMENTED integer, intent(out), optional :: rc ! ! !DESCRIPTION: ! This call is used to complete the {\tt grid} so that it is usable at ! the level indicated by the {\tt status} flag. For example, once committed ! with a {\tt status} value of {\tt ESMF\_GRIDSTATUS\_SHAPE\_READY}, the ! {\tt grid} will have sufficient size, dimCount, and distribution information to be ! used as the basis for allocating Field data. (The integration of ! Field and Grid classes has't yet happened, so you can't currently ! allocate Fields based on Grids no matter what the status.) ! ! It is necessary to call the {\tt ESMF\_GridCommit()} method after ! creating a Grid object using the {\tt ESMF\_GridEmptyCreate()} method ! and incrementally filling it in with {\tt ESMF\_GridSet()} calls. The ! {\tt EMF\_GridCommit()} call is a signal to the Grid that it can combine ! the pieces of information that it's received and finish building any ! necessary internal structures. For example, an {\tt ESMF\_GridCommit()} ! call with the {\tt status} flag set to ! {\tt ESMF\_GRIDSTATUS\_SHAPE\_READY} will trigger the {\tt grid} to ! build an internal DistGrid object that contains topology and distribution ! information. ! ! It's possible using the {\tt ESMF\_GridEmptyCreate()/ESMF\_GridSet()} ! approach that not all information is present when the {\tt ESMF\_GridCommit} ! call is made. If this is the case and the {\tt defaultflag} is set to ! {\tt ESMF\_USE\_DEFAULTS} the Grid will attempt to build any internal ! objects necessary to get to the desired {\tt status} by using reasonable ! defaults. If the {\tt defaultflag} is set to {\tt ESMF\_NO\_DEFAULTS} and ! any information is missing, the {\tt ESMF\_GridCommit} call will fail. ! If the {\tt defaultflag} argument is not passed in, {\it no} defaults ! are used. ! ! The arguments are: ! \begin{description} ! \item[{grid}] ! Grid object to commit. ! \item[{status}] ! Grid status to commit to. For valid values see section ! \ref{const:gridstatus}. [CURRENTLY NOT IMPLEMENTED] ! \item[{[defaultFlag]}] ! Indicates whether to use default values to achieve the desired ! grid status. The default value is {\tt ESMF\_NO\_DEFAULTS}. ! [CURRENTLY NOT IMPLEMENTED] ! \item[{[rc]}] ! Return code; equals {\tt ESMF\_SUCCESS} if there are no errors. ! \end{description} ! !EOPI integer :: localrc ! local error status ! Initialize return code; assume failure until success is certain localrc = ESMF_RC_NOT_IMPL if (present(rc)) rc = ESMF_RC_NOT_IMPL ! Check init status of arguments ESMF_INIT_CHECK_DEEP_SHORT(ESMF_GridGetInit, grid, rc) ! Check for Not Implemented options if (present(status)) then call ESMF_LogSetError(rcToCheck=ESMF_RC_NOT_IMPL, & msg="- status not yet implemented", & ESMF_CONTEXT, rcToReturn=rc) return endif if (present(defaultflag)) then call ESMF_LogSetError(rcToCheck=ESMF_RC_NOT_IMPL, & msg="- defaultflag not yet implemented", & ESMF_CONTEXT, rcToReturn=rc) return endif ! Call C++ Subroutine to do the create call c_ESMC_gridcommit(grid%this, localrc) if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, & ESMF_CONTEXT, rcToReturn=rc)) return ! Return successfully if (present(rc)) rc = ESMF_SUCCESS end subroutine ESMF_GridCommit