ESMF_SciCompCreate Function

public recursive function ESMF_SciCompCreate(keywordEnforcer, name, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_KeywordEnforcer), optional :: keywordEnforcer
character(len=*), intent(in), optional :: name
integer, intent(out), optional :: rc

Return Value type(ESMF_SciComp)


Calls

proc~~esmf_scicompcreate~~CallsGraph proc~esmf_scicompcreate ESMF_SciCompCreate c_esmc_vmaddfobject c_esmc_vmaddfobject proc~esmf_scicompcreate->c_esmc_vmaddfobject proc~esmf_compconstruct ESMF_CompConstruct proc~esmf_scicompcreate->proc~esmf_compconstruct proc~esmf_logfoundallocerror ESMF_LogFoundAllocError proc~esmf_scicompcreate->proc~esmf_logfoundallocerror proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_scicompcreate->proc~esmf_logfounderror proc~esmf_compconstruct->proc~esmf_logfoundallocerror proc~esmf_compconstruct->proc~esmf_logfounderror c_esmc_ftablecreate c_esmc_ftablecreate proc~esmf_compconstruct->c_esmc_ftablecreate c_esmc_methodtablecreate c_esmc_methodtablecreate proc~esmf_compconstruct->c_esmc_methodtablecreate interface~esmf_configcreate ESMF_ConfigCreate proc~esmf_compconstruct->interface~esmf_configcreate interface~esmf_vmget ESMF_VMGet proc~esmf_compconstruct->interface~esmf_vmget proc~esmf_basecreate ESMF_BaseCreate proc~esmf_compconstruct->proc~esmf_basecreate proc~esmf_configloadfile ESMF_ConfigLoadFile proc~esmf_compconstruct->proc~esmf_configloadfile proc~esmf_logseterror ESMF_LogSetError proc~esmf_compconstruct->proc~esmf_logseterror proc~esmf_vmgetcurrent ESMF_VMGetCurrent proc~esmf_compconstruct->proc~esmf_vmgetcurrent proc~esmf_vmplanconstruct ESMF_VMPlanConstruct proc~esmf_compconstruct->proc~esmf_vmplanconstruct proc~esmf_vmsetinitcreated ESMF_VMSetInitCreated proc~esmf_compconstruct->proc~esmf_vmsetinitcreated proc~esmf_vmsetthis ESMF_VMSetThis proc~esmf_compconstruct->proc~esmf_vmsetthis esmf_breakpoint esmf_breakpoint proc~esmf_logfoundallocerror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logfoundallocerror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logfoundallocerror->proc~esmf_logwrite proc~esmf_logfounderror->esmf_breakpoint proc~esmf_logfounderror->proc~esmf_logrc2msg proc~esmf_logfounderror->proc~esmf_logwrite

Called by

proc~~esmf_scicompcreate~~CalledByGraph proc~esmf_scicompcreate ESMF_SciCompCreate proc~f_esmf_scicompcreate f_esmf_scicompcreate proc~f_esmf_scicompcreate->proc~esmf_scicompcreate proc~testscicompnamedalias TestSciCompNamedAlias proc~testscicompnamedalias->proc~esmf_scicompcreate program~esmf_scicompcreateutest ESMF_SciCompCreateUTest program~esmf_scicompcreateutest->proc~esmf_scicompcreate program~esmf_scompex ESMF_SCompEx program~esmf_scompex->proc~esmf_scicompcreate program~esmf_namedaliasutest ESMF_NamedAliasUTest program~esmf_namedaliasutest->proc~testscicompnamedalias

Source Code

  recursive function ESMF_SciCompCreate(keywordEnforcer, name, rc)
!
! !RETURN VALUE:
    type(ESMF_SciComp) :: ESMF_SciCompCreate
!
! !ARGUMENTS:
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
    character(len=*),        intent(in),    optional :: name
    integer,                 intent(out),   optional :: rc
!
! !DESCRIPTION:
! This interface creates an {\tt ESMF\_SciComp} object. 
! The return value is the new {\tt ESMF\_SciComp}.
!   
! The arguments are:
! \begin{description}
! \item[{[name]}]
!   Name of the newly-created {\tt ESMF\_SciComp}.  This name can be altered
!   from within the {\tt ESMF\_SciComp} code once the initialization routine
!   is called.
! \item[{[rc]}]
!   Return code; equals {\tt ESMF\_SUCCESS} if there are no errors.
! \end{description}
!
!EOP
!------------------------------------------------------------------------------
    type(ESMF_CompClass), pointer :: compclass       ! generic comp
    type(ESMF_SciComp)            :: scomp
    integer                       :: localrc         ! local error status

    ! Initialize the pointer to null.
    nullify(ESMF_SciCompCreate%compp)
    nullify(compclass)

    ! initialize return code; assume routine not implemented
    if (present(rc)) rc = ESMF_RC_NOT_IMPL
    localrc = ESMF_RC_NOT_IMPL

    ! Allocate a new comp class
    allocate(compclass, stat=localrc)
    if (ESMF_LogFoundAllocError(localrc, msg="compclass", &
      ESMF_CONTEXT, rcTOReturn=rc)) return
      
    ! call Comp method
    call ESMF_CompConstruct(compclass, ESMF_COMPTYPE_SCI, name, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcTOReturn=rc)) then
      deallocate(compclass)
      return
    endif

    scomp%compp => compclass
    ! Add reference to this object into ESMF garbage collection table
    call c_ESMC_VMAddFObject(scomp, ESMF_ID_COMPONENT%objectID)
      
    ! Set return values
    ESMF_SciCompCreate%compp => compclass
    
    ESMF_INIT_SET_CREATED(ESMF_SciCompCreate)

    ! return successfully
    if (present(rc)) rc = ESMF_SUCCESS

  end function ESMF_SciCompCreate