get_file_levels Subroutine

subroutine get_file_levels(filename, vertical_data, rc)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: filename
type(verticalData), intent(inout) :: vertical_data
integer, intent(out), optional :: rc

Calls

proc~~get_file_levels~~CallsGraph proc~get_file_levels get_file_levels none~create~5 FileMetadataUtils%create proc~get_file_levels->none~create~5 none~get_coordinate_info FileMetadataUtils%get_coordinate_info proc~get_file_levels->none~get_coordinate_info none~get_level_name FileMetadataUtils%get_level_name proc~get_file_levels->none~get_level_name proc~mapl_abort MAPL_abort proc~get_file_levels->proc~mapl_abort proc~mapl_verify MAPL_Verify proc~get_file_levels->proc~mapl_verify none~get_coordinate_info->proc~mapl_verify interface~mapl_assert MAPL_Assert none~get_coordinate_info->interface~mapl_assert none~get_attribute~2 Variable%get_attribute none~get_coordinate_info->none~get_attribute~2 none~get_coordinate_data CoordinateVariable%get_coordinate_data none~get_coordinate_info->none~get_coordinate_data none~get_coordinate_variable FileMetadataUtils%get_coordinate_variable none~get_coordinate_info->none~get_coordinate_variable none~get_dimension FileMetadataUtils%get_dimension none~get_coordinate_info->none~get_dimension none~get_file_name FileMetadataUtils%get_file_name none~get_coordinate_info->none~get_file_name none~get_ith_dimension Variable%get_ith_dimension none~get_coordinate_info->none~get_ith_dimension none~get_value~23 UnlimitedEntity%get_value none~get_coordinate_info->none~get_value~23 none~var_has_attr FileMetadataUtils%var_has_attr none~get_coordinate_info->none~var_has_attr proc~mapl_return MAPL_Return none~get_coordinate_info->proc~mapl_return none~first~238 StringVariableMapIterator%first none~get_level_name->none~first~238 none~ftn_begin~35 StringVariableMap%ftn_begin none~get_level_name->none~ftn_begin~35 none~ftn_end~35 StringVariableMap%ftn_end none~get_level_name->none~ftn_end~35 none~get_level_name->none~get_coordinate_variable none~get_variable_attribute FileMetadataUtils%get_variable_attribute none~get_level_name->none~get_variable_attribute none~get_variables FileMetadataUtils%get_variables none~get_level_name->none~get_variables none~is_attribute_present Variable%is_attribute_present none~get_level_name->none~is_attribute_present none~next~96 StringVariableMapIterator%next none~get_level_name->none~next~96 none~get_level_name->proc~mapl_return mpi_abort mpi_abort proc~mapl_abort->mpi_abort proc~mapl_throw_exception MAPL_throw_exception proc~mapl_verify->proc~mapl_throw_exception

Called by

proc~~get_file_levels~~CalledByGraph proc~get_file_levels get_file_levels program~time_ave time_ave program~time_ave->proc~get_file_levels

Source Code

   subroutine get_file_levels(filename,vertical_data,rc)
      character(len=*), intent(in) :: filename
      type(VerticalData), intent(inout) :: vertical_data
      integer, intent(out), optional :: rc

      integer :: status
      type(NetCDF4_fileFormatter) :: formatter
      type(FileMetadata) :: basic_metadata
      type(FileMetadataUtils) :: metadata
      character(len=:), allocatable :: lev_name
      character(len=ESMF_MAXSTR) :: long_name
      character(len=ESMF_MAXSTR) :: standard_name
      character(len=ESMF_MAXSTR) :: vcoord
      character(len=ESMF_MAXSTR) :: lev_units
      real, allocatable, target :: levs(:)
      real, pointer :: plevs(:)

      call formatter%open(trim(filename),pFIO_Read,_RC)
      basic_metadata=formatter%read(_RC)
      call metadata%create(basic_metadata,trim(filename))
      lev_name = metadata%get_level_name(_RC)
      if (lev_name /= '') then
         call metadata%get_coordinate_info(lev_name,coords=levs,coordUnits=lev_units,long_name=long_name,&
               standard_name=standard_name,coordinate_attr=vcoord,_RC)
         plevs => levs
         vertical_data = VerticalData(levels=plevs,vunit=lev_units,vcoord=vcoord,standard_name=standard_name,long_name=long_name, &
               force_no_regrid=.true.,_RC)
         nullify(plevs)
      end if

      if (present(rc)) then
         rc=_SUCCESS
      end if

   end subroutine get_file_levels