ESMF_FieldWriteVTK Subroutine

public subroutine ESMF_FieldWriteVTK(field, fileName, keywordEnforcer, rc)

Arguments

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

Calls

proc~~esmf_fieldwritevtk~~CallsGraph proc~esmf_fieldwritevtk ESMF_FieldWriteVTK esmf_fieldget esmf_fieldget proc~esmf_fieldwritevtk->esmf_fieldget proc~esmf_gridwritevtk ESMF_GridWriteVTK proc~esmf_fieldwritevtk->proc~esmf_gridwritevtk proc~esmf_logfounderror ESMF_LogFoundError proc~esmf_fieldwritevtk->proc~esmf_logfounderror proc~esmf_logseterror ESMF_LogSetError proc~esmf_fieldwritevtk->proc~esmf_logseterror proc~esmf_meshwritevtk ESMF_MeshWriteVTK proc~esmf_fieldwritevtk->proc~esmf_meshwritevtk proc~esmf_gridwritevtk->proc~esmf_logfounderror c_esmc_gridio c_esmc_gridio proc~esmf_gridwritevtk->c_esmc_gridio esmf_breakpoint esmf_breakpoint proc~esmf_logfounderror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logfounderror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logfounderror->proc~esmf_logwrite proc~esmf_logseterror->esmf_breakpoint proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logseterror->proc~esmf_logwrite proc~esmf_meshwritevtk->proc~esmf_logfounderror proc~esmf_meshwritevtk->proc~esmf_logseterror c_esmc_meshgetisfree c_esmc_meshgetisfree proc~esmf_meshwritevtk->c_esmc_meshgetisfree c_esmc_meshgetstatus c_esmc_meshgetstatus proc~esmf_meshwritevtk->c_esmc_meshgetstatus c_esmc_meshwritevtk c_esmc_meshwritevtk proc~esmf_meshwritevtk->c_esmc_meshwritevtk proc~esmf_imerr ESMF_IMErr proc~esmf_meshwritevtk->proc~esmf_imerr proc~esmf_meshgetinit ESMF_MeshGetInit proc~esmf_meshwritevtk->proc~esmf_meshgetinit proc~esmf_imerr->proc~esmf_logfounderror proc~esmf_initcheckdeep ESMF_InitCheckDeep proc~esmf_imerr->proc~esmf_initcheckdeep c_esmc_loggeterrormsg c_esmc_loggeterrormsg proc~esmf_logrc2msg->c_esmc_loggeterrormsg c_esmc_vmwtime c_esmc_vmwtime proc~esmf_logwrite->c_esmc_vmwtime proc~esmf_logclose ESMF_LogClose proc~esmf_logwrite->proc~esmf_logclose proc~esmf_logflush ESMF_LogFlush proc~esmf_logwrite->proc~esmf_logflush proc~esmf_logopenfile ESMF_LogOpenFile proc~esmf_logwrite->proc~esmf_logopenfile proc~esmf_utiliounitflush ESMF_UtilIOUnitFlush proc~esmf_logwrite->proc~esmf_utiliounitflush proc~esmf_utilstring2array ESMF_UtilString2Array proc~esmf_logwrite->proc~esmf_utilstring2array proc~esmf_logclose->proc~esmf_logflush proc~esmf_logflush->proc~esmf_utiliounitflush proc~esmf_utilarray2string ESMF_UtilArray2String proc~esmf_logflush->proc~esmf_utilarray2string proc~esmf_logopenfile->proc~esmf_utiliounitflush proc~esmf_utiliounitget ESMF_UtilIOUnitGet proc~esmf_logopenfile->proc~esmf_utiliounitget

Source Code

  subroutine ESMF_FieldWriteVTK(field, fileName, keywordEnforcer, rc)
!
!
! !ARGUMENTS:
    type(ESMF_Field),           intent(in)             :: field 
    character(*),               intent(in)             :: fileName
type(ESMF_KeywordEnforcer), optional:: keywordEnforcer ! must use keywords below
    integer,                    intent(out), optional  :: rc
!
!EOPI
!------------------------------------------------------------------------------
    integer                         :: localrc
    type(ESMF_GeomType_Flag)        :: geomtype
    type(ESMF_StaggerLoc)           :: staggerloc
    type(ESMF_MeshLoc)              :: meshloc
    type(ESMF_Array)                :: array
    type(ESMF_Grid)                 :: grid
    type(ESMF_Mesh)                 :: mesh

    localrc = ESMF_RC_NOT_IMPL
    if (present(rc)) rc = ESMF_RC_NOT_IMPL

    call ESMF_FieldGet(field, geomtype=geomtype, rc=localrc)
    if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    if (geomtype==ESMF_GEOMTYPE_GRID) then
      call ESMF_FieldGet(field, grid=grid, array=array, staggerloc=staggerloc, &
        rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
      call ESMF_GridWriteVTK(grid, filename=fileName, staggerloc=staggerloc, &
        array1=array, rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
    elseif (geomtype==ESMF_GEOMTYPE_MESH) then
      call ESMF_FieldGet(field, mesh=mesh, array=array, meshloc=meshloc, &
        rc=localrc)
      if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
      if (meshloc==ESMF_MESHLOC_ELEMENT) then
        call ESMF_MeshWriteVTK(mesh, filename=fileName, elemArray1=array, &
          rc=localrc)
        if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
      elseif (meshloc==ESMF_MESHLOC_NODE) then
        call ESMF_MeshWriteVTK(mesh, filename=fileName, nodeArray1=array, &
          rc=localrc)
        if (ESMF_LogFoundError(localrc, ESMF_ERR_PASSTHRU, &
          ESMF_CONTEXT, rcToReturn=rc)) return
      else
        call ESMF_LogSetError(ESMF_RC_ARG_BAD, &
          msg="Unsupported MESHLOC detected.", &
          ESMF_CONTEXT, &
          rcToReturn=rc)
        return ! bail out
      endif
    else
      call ESMF_LogSetError(ESMF_RC_ARG_BAD, &
        msg="Unsupported geomtype detected.", &
        ESMF_CONTEXT, &
        rcToReturn=rc)
      return ! bail out
    endif

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

  end subroutine ESMF_FieldWriteVTK