test_xgrid_w_ngon_mesh Subroutine

subroutine test_xgrid_w_ngon_mesh(rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(out) :: rc

Calls

proc~~test_xgrid_w_ngon_mesh~~CallsGraph proc~test_xgrid_w_ngon_mesh test_xgrid_w_ngon_mesh interface~esmf_vmget ESMF_VMGet proc~test_xgrid_w_ngon_mesh->interface~esmf_vmget proc~createtestmesh2x2_1 CreateTestMesh2x2_1 proc~test_xgrid_w_ngon_mesh->proc~createtestmesh2x2_1 proc~createtestmeshph createTestMeshPH proc~test_xgrid_w_ngon_mesh->proc~createtestmeshph proc~esmf_logfounderror ESMF_LogFoundError proc~test_xgrid_w_ngon_mesh->proc~esmf_logfounderror proc~esmf_meshdestroy ESMF_MeshDestroy proc~test_xgrid_w_ngon_mesh->proc~esmf_meshdestroy proc~esmf_vmgetcurrent ESMF_VMGetCurrent proc~test_xgrid_w_ngon_mesh->proc~esmf_vmgetcurrent proc~esmf_xgridcreate ESMF_XGridCreate proc~test_xgrid_w_ngon_mesh->proc~esmf_xgridcreate proc~flux_exchange_sph_mesh flux_exchange_sph_mesh proc~test_xgrid_w_ngon_mesh->proc~flux_exchange_sph_mesh

Called by

proc~~test_xgrid_w_ngon_mesh~~CalledByGraph proc~test_xgrid_w_ngon_mesh test_xgrid_w_ngon_mesh program~esmf_xgridutest ESMF_XGridUTest program~esmf_xgridutest->proc~test_xgrid_w_ngon_mesh

Source Code

  subroutine test_xgrid_w_ngon_mesh(rc)
    integer, intent(out) :: rc
    integer              :: localrc, i, npet
    type(ESMF_XGrid)     :: xgrid
    type(ESMF_Mesh)      :: mesh_ngon, mesh_qt 
    type(ESMF_VM)        :: vm
    real(ESMF_KIND_R8)   :: xgrid_area(12), B_area(2,2)

    rc = ESMF_SUCCESS
    localrc = ESMF_SUCCESS

    call ESMF_VMGetCurrent(vm=vm, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    call ESMF_VMGet(vm, petcount=npet, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    ! Create ngon mesh
    call createTestMeshPH(mesh_ngon, localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    ! Create mesh containing quads and triangles
    call CreateTestMesh2x2_1(mesh_qt, localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return
    
    ! Create XGrid from meshes
    xgrid = ESMF_XGridCreate(sideAMesh=(/mesh_ngon/), &
                             sideBMesh=(/mesh_qt/), &
                             storeOverlay = .true., &
                             rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    ! Test flux exchange through xgrid
    call flux_exchange_sph_mesh(xgrid, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    ! Get rid of meshes
    call ESMF_MeshDestroy(mesh_ngon, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return

    call ESMF_MeshDestroy(mesh_qt, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
      ESMF_ERR_PASSTHRU, &
      ESMF_CONTEXT, rcToReturn=rc)) return
    
  end subroutine test_xgrid_w_ngon_mesh