create_coord Function

private function create_coord(index, grid, axis, rc)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: index
type(grid_specification_record) :: grid
integer, intent(in) :: axis
integer, intent(inout) :: rc

Return Value real(kind=esmf_kind_r8)


Calls

proc~~create_coord~~CallsGraph proc~create_coord create_coord proc~create_gaussian_coord create_gaussian_coord proc~create_coord->proc~create_gaussian_coord proc~create_uniform_coord create_uniform_coord proc~create_coord->proc~create_uniform_coord proc~esmf_logseterror ESMF_LogSetError proc~create_coord->proc~esmf_logseterror proc~legendre_roots legendre_roots proc~create_gaussian_coord->proc~legendre_roots esmf_breakpoint esmf_breakpoint proc~esmf_logseterror->esmf_breakpoint proc~esmf_logrc2msg ESMF_LogRc2Msg proc~esmf_logseterror->proc~esmf_logrc2msg proc~esmf_logwrite ESMF_LogWrite proc~esmf_logseterror->proc~esmf_logwrite 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 float float proc~legendre_roots->float 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

Called by

proc~~create_coord~~CalledByGraph proc~create_coord create_coord proc~create_grid_from_distgrid create_grid_from_distgrid proc~create_grid_from_distgrid->proc~create_coord proc~field_redist_test field_redist_test proc~field_redist_test->proc~create_grid_from_distgrid proc~field_regrid_test field_regrid_test proc~field_regrid_test->proc~create_grid_from_distgrid proc~runtests RunTests proc~runtests->proc~field_redist_test proc~runtests->proc~field_regrid_test program~esmf_test_harness esmf_test_harness program~esmf_test_harness->proc~runtests

Source Code

  real(ESMF_KIND_R8) function create_coord(index, grid, axis, rc)
  !-----------------------------------------------------------------------------
  ! selects coordinate value based upon specified grid type.
  !-----------------------------------------------------------------------------
  integer, intent(in   ) :: index, axis
  integer, intent(inout) :: rc
  type(grid_specification_record)::grid

  !-----------------------------------------------------------------------------
  !
  !-----------------------------------------------------------------------------
  select case( trim(grid%gtype(axis)%string) )
    case("UNI")
       create_coord = create_uniform_coord(index, grid%grange(axis,2),         &
                            grid%grange(axis,1), grid%gsize(axis))
    case("UNIFORM")
       create_coord = create_uniform_coord(index, grid%grange(axis,2),         &
                            grid%grange(axis,1), grid%gsize(axis))
    case("UNIFORM_POLE")
       create_coord = create_uniform_coord(index, grid%grange(axis,2),         &
                            grid%grange(axis,1), grid%gsize(axis))
    case("UNIFORM_PERIODIC")
       create_coord = create_uniform_coord(index, grid%grange(axis,2),         &
                            grid%grange(axis,1), grid%gsize(axis))
    case("GAUSS")
       create_coord = create_gaussian_coord(index, grid%grange(axis,2),        &
                            grid%grange(axis,1), grid%gsize(axis))
    case("GAUSSIAN")
       create_coord = create_gaussian_coord(index, grid%grange(axis,2),        &
                            grid%grange(axis,1), grid%gsize(axis))
    case("GAUSSIAN_POLE")
       create_coord = create_gaussian_coord(index, grid%grange(axis,2),        &
                            grid%grange(axis,1), grid%gsize(axis))
    case("GAUSSIAN_PERIODIC")
       create_coord = create_gaussian_coord(index, grid%grange(axis,2),        &
                            grid%grange(axis,1), grid%gsize(axis))
    case default
       print*,'Unsupported grid type',trim(grid%gtype(axis)%string)
       call ESMF_LogSetError( ESMF_FAILURE, msg="Unsupported grid type " //       &
               trim(grid%gtype(axis)%string), rcToReturn=rc)
       return

  end select

  !-----------------------------------------------------------------------------
  end function create_coord