init_src_sph Subroutine

subroutine init_src_sph(grid, coordX, coordY, nx, ny, dx, dy, src, rc)

Arguments

Type IntentOptional Attributes Name
type(ESMF_Grid), intent(in) :: grid
real(kind=ESMF_KIND_R8), pointer :: coordX(:,:)
real(kind=ESMF_KIND_R8), pointer :: coordY(:,:)
integer, intent(in) :: nx
integer, intent(in) :: ny
real, intent(in) :: dx
real, intent(in) :: dy
real(kind=ESMF_KIND_R8), pointer :: src(:,:)
integer, intent(out), optional :: rc

Calls

proc~~init_src_sph~~CallsGraph proc~init_src_sph init_src_sph interface~esmf_gridgetcoord ESMF_GridGetCoord proc~init_src_sph->interface~esmf_gridgetcoord interface~esmf_vmget ESMF_VMGet proc~init_src_sph->interface~esmf_vmget proc~esmf_logfounderror ESMF_LogFoundError proc~init_src_sph->proc~esmf_logfounderror proc~esmf_vmgetcurrent ESMF_VMGetCurrent proc~init_src_sph->proc~esmf_vmgetcurrent proc~esmf_gridgetcoord1dr4 ESMF_GridGetCoord1DR4 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord1dr4 proc~esmf_gridgetcoord1dr8 ESMF_GridGetCoord1DR8 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord1dr8 proc~esmf_gridgetcoord2dr4 ESMF_GridGetCoord2DR4 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord2dr4 proc~esmf_gridgetcoord2dr8 ESMF_GridGetCoord2DR8 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord2dr8 proc~esmf_gridgetcoord3dr4 ESMF_GridGetCoord3DR4 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord3dr4 proc~esmf_gridgetcoord3dr8 ESMF_GridGetCoord3DR8 interface~esmf_gridgetcoord->proc~esmf_gridgetcoord3dr8 proc~esmf_gridgetcoordinfo ESMF_GridGetCoordInfo interface~esmf_gridgetcoord->proc~esmf_gridgetcoordinfo proc~esmf_gridgetcoordintoarray ESMF_GridGetCoordIntoArray interface~esmf_gridgetcoord->proc~esmf_gridgetcoordintoarray proc~esmf_gridgetcoordr4 ESMF_GridGetCoordR4 interface~esmf_gridgetcoord->proc~esmf_gridgetcoordr4 proc~esmf_gridgetcoordr8 ESMF_GridGetCoordR8 interface~esmf_gridgetcoord->proc~esmf_gridgetcoordr8 proc~esmf_vmgetdefault ESMF_VMGetDefault interface~esmf_vmget->proc~esmf_vmgetdefault proc~esmf_vmgetpetspecific ESMF_VMGetPetSpecific interface~esmf_vmget->proc~esmf_vmgetpetspecific 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_vmgetcurrent->proc~esmf_logfounderror c_esmc_vmgetcurrent c_esmc_vmgetcurrent proc~esmf_vmgetcurrent->c_esmc_vmgetcurrent

Called by

proc~~init_src_sph~~CalledByGraph proc~init_src_sph init_src_sph proc~test_regrid2xgsph~2 test_regrid2xgSph proc~test_regrid2xgsph~2->proc~init_src_sph

Source Code

  subroutine init_src_sph(grid, coordX, coordY, nx, ny, dx, dy, src, rc)
    type(ESMF_Grid), intent(in)      :: grid
    real(ESMF_KIND_R8), pointer      :: coordX(:,:)
    real(ESMF_KIND_R8), pointer      :: coordY(:,:)
    integer, intent(in)              :: nx, ny
    real, intent(in)                 :: dx, dy
    real(ESMF_KIND_R8), pointer      :: src(:,:)
    integer, intent(out), optional   :: rc

    integer                          :: localrc, i,j,npet, lpet
    type(ESMF_VM)                    :: vm

    if(present(rc)) rc = ESMF_SUCCESS

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

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

    ! X center 
    call ESMF_GridGetCoord(grid, localDE=0, &
        staggerLoc=ESMF_STAGGERLOC_CENTER, &
        coordDim=1, farrayPtr=coordX, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return
    ! Y center 
    call ESMF_GridGetCoord(grid, localDE=0, &
        staggerLoc=ESMF_STAGGERLOC_CENTER, &
        coordDim=2, farrayPtr=coordY, rc=localrc)
    if (ESMF_LogFoundError(localrc, &
        ESMF_ERR_PASSTHRU, &
        ESMF_CONTEXT, rcToReturn=rc)) return

    write(*, '(A, 5I5)') 'init_src_sph bounds: ', lpet, &
      lbound(src, 1), ubound(src, 1), &
      lbound(src, 2), ubound(src, 2)

    do i = lbound(coordX,1), ubound(coordX,1)
      do j = lbound(coordX,2), ubound(coordX,2)
        !src(i,j) = 0.5*sin(coordX(i,j)/(nx*dx)*3*3.14159)*cos(coordY(i,j)&
        !/(ny*dy)*5*3.14159)+10.5
        src(i,j) = 2.
      enddo
    enddo

  end subroutine init_src_sph