This README for library routines is generated by running the following:
~oplapb/bin/libsummary.csh | tee README
To improve the documentation, more 'cdoc' comments can be added to
individual library source code files. The 'cdoc' in each flagged comment
line will be keyed by this script. These comments should briefly (generally
in one or two lines) explain the purpose of each subroutine or function.
 
 
add.f
        subroutine add(a,b,result,imax,jmax)
             Routine to add array 'b' to array 'a' and put the
             result into array 'result' .
        subroutine add_miss(a,b,result,imax,jmax)
             Routine to add array 'b' to array 'a' and put the
             result into array 'result'. This takes account of 'r_missing_data'.
 
addcon.f
        subroutine addcon(a,con,result,imax,jmax)
             Routine to add the constant 'con' to array 'a' and put the
             result into array 'result'.
        subroutine addcon_miss(a,con,result,imax,jmax)
             Routine to add the constant 'con' to array 'a' and put the
             result into array 'result'. This takes account of 'r_missing_data'.
 
advect.f
        subroutine advect(u,v,array_in,array_buf,grid_spacing_m
        subroutine cpt_advection(field,u,v,dx,dy,ni,nj,advection)
 
array_diagnosis.f
        subroutine array_diagnosis(a,imax,jmax,name)
        subroutine get_mxmn_2d(nx,ny,array_2d,rmx2d,rmn2d
 
aski4tim_gg.f
      function aski4t_gg(time)
 
atan3.f
      FUNCTION ATAN3(X,Y)
 
atan3d.f
      FUNCTION ATAN3D(X,Y)
 
barnes_multivariate.f
      subroutine barnes_multivariate
      subroutine barnes_multivariate_sub
      subroutine get_fnorm_max(imax,jmax                         ! I
        subroutine get_rms_barnesobs(u,ni,nj,nk,r_missing_data,nobs      ! I/O 
      function fnorm_calc(iii,r0_norm_sq,exp_offset,expm80)
      subroutine arrays_to_barnesobs(imax,jmax,kmax                   ! I
      subroutine get_time_wt(i4time_sys,i4time_ob,time_wt,istatus)
 
bilinear_interp.f
        subroutine bilinear_interp (n1,m1,g1,n2,m2,g2,dn,dm)
 
block_data.f
 
climate_sm.f
        subroutine climate_sm(v_lat,            !input
        subroutine det_mix_rat_sm(press, temp, dewpt_dep,
      real function sat_pt_sm(press, temp)
        real function vpice_sm(temp)
        function satvap_sm(temp)
        subroutine calday(nyrday,kyear,nmon,kalday,mon)
 
constant.f
        subroutine constant(a,const,imax,jmax)
        subroutine constant_i(a,iconst,imax,jmax)
        subroutine constant_3d(a,const,imax,jmax,kmax)
 
convc2f.f
        subroutine conv_c2f(t_c,t_f,imax,jmax)
 
conversions.f
        function omega_to_w(omega,pressure_pa)
             Convert Omega to W
        function w_to_omega(w,pressure_pa)
             Convert W to Omega
        subroutine latlon_to_radar(lat_grid,lon_grid,height_grid
             Convert Lat/Lon/Elev to Radar Azimuth / Slant Range / Elevation Angle
        function height_to_zcoord(height_m,istatus) ! Using standard atmosphere
             Convert Height to fractional Z-coordinate
             Note that this routine works with the standard atmosphere.
             When the vertical grid is pressure, the height is converted to
             pressure, then the interpolation to the vertical grid is performed.
             Thus if the height is midway between two LAPS levels in height space,
             the value of height_to_zcoord will not have a fraction of 0.5.
             If the pressure is midway between two LAPS levels, then the
             value of height_to_zcoord will have a fraction of 0.5.
        function height_to_zcoord2(height_m,heights_3d
             Convert from Height to fractional Z-coordinate. 3-D Heights 
             are used as a reference.
             Note that this routine works with the real atmosphere.
             When the vertical grid is pressure (e.g.), the height is converted to
             pressure, then the interpolation to the vertical grid is performed.
             Thus if the height is midway between two LAPS levels in height space,
             the value of 'height_to_zcoord3' will not have a fraction of 0.5.
             If the pressure is midway between two LAPS levels, then the
             value of 'height_to_zcoord3' will have a fraction of 0.5.
        function height_to_zcoord3(height_m,heights_3d,zcoords_1d
             Convert from Height to fractional Z-coordinate. 3-D Heights and
             1-D Z-coordinate values are used as a reference.
             Note that this routine works with the real atmosphere.
             The type of interpolation is similar to that in 'height_to_zcoord2'.
             When the vertical grid is pressure (e.g.), the height is converted to
             pressure, then the interpolation to the vertical grid is performed.
             Thus if the height is midway between two LAPS levels in height space,
             the value of 'height_to_zcoord3' will not have a fraction of 0.5.
             If the pressure is midway between two LAPS levels, then the
             value of 'height_to_zcoord3' will have a fraction of 0.5.
        function height_to_pressure(height_m,heights_3d
             Convert height to pressure, using 3-D heights and 1-D pressures as
             a reference.
        subroutine pressure_to_height(pres_pa,heights_3d
             Convert Pressure to Height, using a 3-D Height field for reference
        subroutine pres_to_ht(pres_pa,pres_3d,heights_3d
             Convert Pressure to Height, using 3-D Pres & Ht fields for reference
             This currently does a linear interpolation in the vertical. We can 
             change this to a log interpolation later if needed.
        function height_of_level(level)
             Calculate the height of a given pressure level, using standard atmos.
             Works only for constant pressure levels
        function zcoord_of_level(level)
             Calculate zcoord (e.g. pressure) of a given level. 
             Works only for constant pressure levels
        function pressure_of_level(level)
             Calculate pressure of a given integer level. 
             Works only for constant pressure levels
        function pressure_of_rlevel(rlevel)
             Obtain pressure of a given real (fractional) level. 
             Works only for constant pressure levels
        function rlevel_of_field(value,field_3d,ni,nj,nk,i,j,istatus)       
             Find z coordinate given a field value, i, j, and the whole 3-D field
        function rlevel_of_logfield(value,field_3d,ni,nj,nk,i,j,istatus)       
             Find z coordinate given a field value, i, j, and the whole 3-D field
             Log vertical interpolation is used. Warning: under construction
             as log code is not yet in place.
        function zcoord_of_pressure(pres_pa)
             Convert pressure to a real (fractional) level. 
             Works only for constant pressure levels.
        function zcoord_of_logpressure(pres_pa)
             Convert pressure to a real (fractional) level in log space. 
             Works only for constant pressure levels.
        subroutine   uvgrid_to_radar(u_grid,     ! I
             Convert U and V (grid north) to Tangential and Radial velocity,
             given the radar azimuth and geographic longitude.
        subroutine   uvtrue_to_radar(u_true,  ! I
             Convert U and V (true north) to Tangential and Radial velocity,
             given the radar azimuth.
        subroutine   uvgrid_to_disptrue(u_grid,    ! I
             Convert U and V (grid north) to DIR and SPEED (true north),
             given the longitude.
        subroutine   disptrue_to_radar(di_true, ! I
             Convert DIR and SPEED (true north) to Tangential and Radial velocity,
             given the radar azimuth.
        subroutine   radar_to_uvgrid(t_radar,   ! I
             Convert Tangential and Radial velocity to U and V (grid north),
             given the radar azimuth and geographic longitude.
        subroutine   radar_to_uvtrue(t_radar,  ! I
             Convert Tangential and Radial velocity to U and V (true north),
             given the radar azimuth.
        subroutine   radar_to_disptrue(di_true,  ! O
             Convert Tangential and Radial velocity to DIR and SPEED (true north),
             given the radar azimuth.
        subroutine   disptrue_to_uvgrid(di_true,     ! I
             Convert DIR and SPEED (true north) to U and V (grid north)
        subroutine   uvtrue_to_uvgrid(u_true,    ! I
             Convert wind vector from true north to grid north, given the longitude.
        subroutine   uvgrid_to_uvtrue(u_grid,    ! I
             Convert wind vector from grid north to true north, given the longitude
      subroutine rotate_vec(u1,v1,u2,v2,angle)
           Rotate vector (u1,v1) through an angle to obtain vector (u2,v2)
        subroutine   disp_to_uv(dir,
             Convert DIR and SPEED to U and V
        subroutine   uv_to_disp(u,
             Convert U and V to DIR and SPEED
        function k_to_f(x)
             Convert Kelvin to Fahrenheit
        function f_to_k(x)
             Convert Fahrenheit to Kelvin
        function k_to_c(x)
             Convert Kelvin to Celsius
        function c_to_k(x)
             Convert Celsius to Kelvin
        function f_to_c(x)
             Convert Fahrenheit to Celsius
        function c_to_f(t_c)
             Convert Celsius to Fahrenheit
        subroutine conv_meters_to_inches(data_in, numarr,prodno,
 
convf2c.f
        subroutine conv_f2c(t_f,t_c,imax,jmax)
 
convf2k.f
        subroutine conv_f2k(t_f,t_k,imax,jmax)
 
convk2f.f
        subroutine conv_k2f(t_k,t_f,imax,jmax)
 
convkt2ms.f
        subroutine conv_kt2ms(kt,ms,imax,jmax)
 
convm2miles.f
        subroutine conv_m2miles(m,miles,imax,jmax)
 
convmiles2m.f
        subroutine conv_miles2m(miles,m,imax,jmax)
 
convms2kt.f
        subroutine conv_ms2kt(ms,kt,imax,jmax)
 
diff.f
        subroutine diff(a,b,result,imax,jmax)
        subroutine diff_3d(a,b,result,imax,jmax,kmax)
        subroutine diff_miss(a,b,result,imax,jmax)
             Routine to subtract array 'b' from array 'a' and put the
             result into array 'result'. This takes account of 'r_missing_data'
 
downcase.f
        subroutine      downcase(input,output)
 
esat1.f
        subroutine esat1(t,es,ni,nj)
 
fflxc.f
        SUBROUTINE FFLXC(NI,NJ,M,SCALE,uh,vh,field,flxcnv,lat,lon 
             Calculates convergence given a wind field rotated to the map projection
        subroutine get_sigma(rlat,rlon,sigma,istatus)
             Sigma (map factor) is defined to be one when we are located in the 
             intersection of the projection plane and the earth's surface. It varies
             from unity elsewhere.
 
filename13.f
        function filename13(i4time,ext)
 
filter_filenames.f
        subroutine    Filter_non_numeric_fnames(c_fnames,
             Routine takes the result of 'get_file_names' and filters
             it for certain filename types. It tests the first two characters
 
fname_conversions.f
        function a10_to_a9(a10_time,istatus)
             Convert a10_time (yyMMddhhmm) to a9_time (yydddhhmm)
        function yr_a10_to_a9(a10_time)
             Convert a10_time (yyyyMMddhh) to a9_time (yydddhhmm)
        function a9_to_yr_a10_time(a9_time,istatus)
             Convert a9_time (yydddhhmm) to a10_time (yyyyMMddhh)
        function a8_to_a9(a8_time)
             Convert a8_time (yyMMddhh) to a9_time (yydddhhmm)
        function a9_to_a8(a9_time)
           Routine to convert LAPS 'yyjjjhhmm' time to 'yymmddhh' time.
        function rsa13_to_a9(rsa13_time)
             Convert rsa13_time (yyyyjjjhhmmss) to a9_time (yyjjjhhmm)
        function a9_to_rsa13(a9_time)
             Convert a9_time (yyjjjhhmm) to rsa13_time (yyyyjjjhhmmss)
      function a7_to_a9_time(a7_time)
           Routine takes FA (CWB) model intial time, as described below, and converts
           (make_fa_valtime, a9_to_a7_time, make_fa_ext, and fname13_to_FA_filename)
           take the FA model filename extension and convert it to a 4 character valid
           time, or vice versa.
      function a9_to_a7_time(a9_time)
      function fname13_to_FA_filename(fname13,cmodel)
      function c4_FA_valtime(c_FA_ext)
      function c3_FA_ext(a4_string)
      function wrftolaps_c6_maprojname(map_proj_name)
 
fsystem_dum.f
        function fsystem_dum()
 
gen_bl_file.f
      subroutine gen_bl_file (i4time,pb,igrid,jgrid,istatus)
 
gen_btemps.f
      subroutine gen_btemps (kk,temp,pres,sfc_temp,sfc_pres,q,
      real zenith               !external function
 
get_cloud_deriv.f
        subroutine get_cloud_deriv(ni,nj,nk,clouds_3d,cld_hts,
             This routine calculates SLWC, Cloud Type, MVD, and Icing Index
             This routine also does the Cloud Bogussed Omega and the Snow Potential.
        subroutine cpt_pcp_type_3d(temp_3d,rh_3d_pct,pres_3d
             Compute 3D Precip Type given profiles of T, RH, Reflectivity
        subroutine get_sfc_preciptype(pres_2d,t_sfc_k,td_sfc_k
             Compute Sfc Precip Type, given both sfc and 3D fields
        subroutine get_slwc1d(nk,cbase_m,ctop_m,kbase,ktop
             Determine cloud liquid profile within a given cloud layer
        subroutine integrate_slwc(slwc,heights_3d,imax,jmax,kmax
             Integrates cloud liquid through the column
        subroutine get_mvd(itype,rmvd)
             rmvd        Output Mean Volume Diameter in microns, given cloud type
        subroutine get_cloudtype(temp_k,d_thetae_dz
             Determine Cloud Type, given temperature and stability d(theta(e))/dz
        subroutine get_stability(nk,temp_1d,heights_1d,pressures_mb
             This routine returns stability at a given level given 1D array inputs
             Saturation is assumed and d(theta(e))/dz is returned
      subroutine isi3(slw,temp,ictype,iptype,xindex)
           routine to calculate icing severity index
      function wb_melting_threshold(t_c,dbz)
           This function calculates the wet-bulb threshold for melting snow into
           rain as a function of dbz and t_c.
        subroutine nowrad_virga_correction(r_pcp_type_2d,
             Correct precip type for snow drying in sub-cloud layer based on sfc rh
 
get_dir_length.f
        subroutine get_directory_length(c_fname,lenf)
             This routine takes as input a full path filename and returns an
             index that points at the end of the directory portion of the pathname.
        subroutine get_time_length(c_fname,lenf)
             This routine takes as input a full path filename and returns an
             index that points at the end of the filetime portion of the pathname.
        subroutine s_len(string,s_length)
             This routine receives a fortran string, and
             returns the number of characters in the string
             before the first "space" is encountered.  
        subroutine get_fname_length(c_fname,lenf)
             This routine takes as input a full path filename and returns
             the length of the filename portion of the path.
        subroutine get_filetime_length(c_fname,lent)
             This routine takes as input a full path filename and returns
             the length of the file time length portion of the path.
        subroutine get_filetime_type(c_fname,c20_type,leni,lent)
             This routine takes as input a full path filename and returns
             the length and type of the file time length portion of the path.
        subroutine filter_string(string)
             This routine filters a fortran string of unprintable characters
        function l_string_contains(string,substring,istatus)
             Returns boolean on whether 'string' contains 'substring'
             The 'string' and 'substring' should be free of blanks.
        function l_parse(string1,string2)
             Returns boolean on whether 'string1' contains 'string2'
             Similar to 'l_string_contains' except that blanks are allowed
        subroutine s_len2(string,len_string)
             This routine finds the length of the string counting intermediate
             blanks
 
get_directory.f
        subroutine get_directory(ext_in,directory_out,len_dir)
 
get_domain_perimeter.f
        subroutine get_latlon_perimeter(ni,nj,r_buffer             ! I
             Obtain lat/lon box surrounding laps grid, including a buffer
             Works on the basis of max/min lat/lons and limited accounting
             for when the dateline or poles are near the box.
             This version is more generic with static file source.
        subroutine get_domain_perimeter(ni,nj,LAPS_DOMAIN_FILE
             Obtain lat/lon box surrounding laps grid, including a buffer
             Works on the basis of max/min lat/lons and limited accounting
             for when the dateline or poles are near the box.
        subroutine get_domain_perimeter_grid(ni,nj,LAPS_DOMAIN_FILE
             Obtain lat/lon box surrounding laps grid, including a buffer
             Works on the basis of lat/lons and greater accounting
             for when the dateline or poles are near or in the box.
 
get_file_names.f
      subroutine get_file_names(pathname_in,numoffiles,c_filenames,
      subroutine sort_fn (names,number,istatus)
 
get_file_time.f
        subroutine get_file_time(c_filespec
             Given a directory path with a wildcard and a desired time, find the best
             matching file i4time in the given directory matching that wildcard.
             If there are very many files in the directory, you will need to
             use a directory name only, the ls command can't handle it otherwise.
        subroutine get_latest_file_time(c_filespec,i4time_latest)
             Given a directory path with a wildcard  find the latest
             matching file i4time in the given directory matching that wildcard.
             If there are very many files in the directory, you will need to
             use a directory name only, the ls command can't handle it otherwise.
        subroutine get_file_times(c_filespec,max_files,c_fnames
             Given a directory path with a wildcard find all files and
             return a list of the filenames and associated i4times
             If there are very many files in the directory, you will need to
             use a directory name only, the ls command can't handle it otherwise.
 
get_heights_hydrostatic.f
        subroutine get_heights_hydrostatic
             Generate heights of grid points using laps data and hydrostatic equation
        FUNCTION Z_thk(PT,P,T,TD,alog_array,esat_lut,N)
             THIS FUNCTION RETURNS THE THICKNESS OF A LAYER BOUNDED BY PRESSURE
             P(1) AT THE BOTTOM AND PRESSURE PT AT THE TOP.
        FUNCTION W_laps(T,P,esat_lut)
             Convert T(C) and P to W. This is a fast approximate routine.
             Output W_laps is dimensionless mixing ratio
 
get_local_towerobs.f
        subroutine get_local_towerobs(maxsta,maxlvls,                    ! I
         subroutine read_local_tower(filename,fn_len,             ! I 
      subroutine remove_blanks(string)
 
get_lowref.f
        subroutine get_low_ref(z_3d_in,pres_sfc_pa,ni,nj,nk
 
get_maps_lapsgrid.f
        subroutine get_modelfg_3d(i4time,var_2d,imax,jmax,kmax
        subroutine get_modelfg_3d_sub(i4time_needed,var_2d,subdir,ext_a
        subroutine get_fcst_times(a_filename,i4_initial,i4_valid,
        subroutine get_best_fcst(maxfiles,i4time_needed
        subroutine get_modelfg_2d(i4time,var_2d,imax,jmax
 
get_maxref.f
        subroutine get_max_ref(grid_ra_ref,imax,jmax,kmax,radar_array)
        subroutine get_max_reflect(grid_ra_ref,imax,jmax,kmax
 
get_maxtops.f
        subroutine get_maxtops(grid_ra_ref,heights_3d
 
get_pres_3d.f
      subroutine get_pres_1d(i4time,nk,pres_1d_out,istatus)
           Returns a 1-D grid of pressures. This is useful if we have a non-uniform
           pressure grid. This does not support an arbitrary vertical grid.
      subroutine get_pres_3d(i4time,ni,nj,nk,pres_3d,istatus)
           Returns a 3-D grid of pressures. This is useful if we have a non-uniform
           pressure grid or other type of arbitrary vertical grid.
      subroutine get_rep_pres_intvl(pres_3d,ni,nj,nk,rep_pres_intvl
           This routine returns a representative pressure interval that is used
           in the free atmosphere. This is useful if we have a variable interval
           pressure grid (even perhaps an arbitrary vertical grid), especially if 
           there are more levels in the boundary layer.
 
get_radar_deriv.f
       subroutine get_radar_deriv(nx,ny,nz,dx,r_miss,
       subroutine radar_bogus_w
          subroutine get_con_str(nx,ny,nz,nxx,nyy,radar_ref_3d,pres_3d,
          subroutine df_random_index(nx,ny,str_con_index,index_random
          subroutine dfconstr(nx,ny,r_miss,ref_2d,icon,ier,dx1)
 
get_radar_max_pd.f
        subroutine get_radar_max_pd(i4time_beg,i4time_end,imax,jmax,kmax
        subroutine get_fracs_radar(i4time_beg,i4time_end,max_radar_gap
 
get_static_info.f
      subroutine get_static_info(c_vars_req,c_values_req_in,n_vars_req      
 
get_systime.f
      subroutine get_systime(i4time_sys,a9_time,istatus)
      subroutine get_systime_i4(i4time_sys,istatus)
      subroutine get_systime_all(i4time_sys,a9_time,analysis_hr,
 
get_time_window.f
       subroutine get_windob_time_window(c_obstype,i4_window_ob
       subroutine get_tempob_time_window(c_obstype,i4_window_ob
 
get_wrfsi_config.f
      subroutine get_wrfsi_config(nest,istatus)
        function grid_spacing_wrf_m(nest)
	subroutine get_nmm_grid_spacing(dlmd,dphd,res)
	end subroutine get_nmm_grid_spacing
 
getcld3d.f
        subroutine get_clouds_3dgrid(i4time_needed,i4time_nearest
        subroutine get_clouds_3dpres(i4time_needed,imax,jmax,kmax
        subroutine interp_height_pres(imax,jmax,kmax,kcloud
        subroutine interp_height_pres_fast(imax,jmax,kmax,kcloud
 
getradar.f
             Module Summary:
             get_multiradar_vel
                 now called from wind/lplot
             get_radar_ref
                 now called from lplot
             read_radar_3dref
                 now called from deriv
                 now called from accum
                 now called from lplot
                 now called from get_radar_ref
                 now called from mosaic_radar
             read_multiradar_3dref
                 now called from cloud
                 now called from read_radar_3dref
             read_radar_2dref
                 now called directly from wind-derived
                 now called from (wind-derived via) get_radar_max_pd
             read_radar_vel
                 now called from (wind/lplot via) get_multiradar_vel
             read_nowrad_3dref
                 now called from read_multiradar_3dref
             read_vrz_3dref
                 now called from read_multiradar_3dref
        subroutine get_multiradar_vel(
             Returns Velocity from multiple radars.
             Called from wind/lapsplot
        subroutine get_radar_ref(i4time_ref,i4time_tol,i4time_radar
             This routine returns 3D radar ref data from the LAPS radar files
             Called from lapsplot
        subroutine read_radar_3dref(i4time_radar,                        ! I
             Steve Albers Feb 1998   This routine will read in a 3D radar
                                     reflectivity field. It is a jacket that
                                     calls read_multiradar_3dref.
        subroutine read_multiradar_3dref(i4time_radar,                  ! I
        subroutine read_radar_2dref(i4time_radar,radar_name,
        subroutine read_radar_raw2d(i4time_radar,             ! I
        subroutine read_radar_vel(i4time_radar,l_apply_map,
        subroutine ground_clutter(
        subroutine read_nowrad_3dref(i4time_radar
        subroutine read_vrz_3dref(i4time_radar                      ! I
 
gettmp2d.f
        subroutine get_temp_2d(i4time_needed,i4time_tol,i4time_nearest
 
gettmp3d.f
        subroutine get_temp_3d(i4time_needed,i4time_nearest,iflag,
             Returns 3-D temperature (or ht) field within a time window. Has options
             for theta and/or balanced fields depending on the 'iflag' input.
 
getuv3d.f
        subroutine get_uv_3d(i4time,imax,jmax,kmax,u_3d,v_3d,ext,istatus
 
getw3d.f
        subroutine get_w_3d(i4time,imax,jmax,kmax,w_3d,ext,istatus)
 
ghbry.f
      subroutine ghbry (i4time,p_3d,pb,sfc_t,lt1dat,htby,
 
gridconv.f
      subroutine polar_stereographic
      subroutine geoll_2_psll(glat,glon,PLA,PLO)
      subroutine psll_2_psij(pslat,pslon,psi,psj)
      subroutine psij_2_psll(psi,psj,pslat,pslon)
      subroutine psll_2_geoll(pla,plo,glat,glon)
      subroutine ps_param(xmin,ymin,dx,dy)
      subroutine conical_equidistant
      subroutine geoll_2_coneqll(glat,glon,celat,celon)
      subroutine coneqll_2_coneqij(celat,celon,cei,cej)
      subroutine coneqij_2_coneqll(cei,cej,celat,celon)
      subroutine coneqll_2_geoll(celat,celon,glat,glon)
      subroutine lambert_conformal
      subroutine lc_param(s,cone,xmin,ymin,dx,dy)
      subroutine lat_lon
      subroutine cylindrical_equidistant
      subroutine latlon_2_mcij(n,rlat,rlon,ri,rj)
      subroutine latlon_2_npij(n,rlat,rlon,ri,rj)
      subroutine init_gridconv_cmn(gproj,nxbg,nybg,nzbg
      subroutine init_hinterp(nx_bg,ny_bg,nx_laps,ny_laps,gproj,
      subroutine hinterp_field(nx_bg,ny_bg,nx_laps,ny_laps,nz,
      subroutine gdtost(ab,ix,iy,stax,stay,staval,bgmodel)
      subroutine binom(x1,x2,x3,x4,y1,y2,y3,y4,xxx,yyy)
 
gridconv_new.f
      subroutine polar_stereographic
      subroutine geoll_2_psll(glat,glon,PLA,PLO)
      subroutine psll_2_psij(pslat,pslon,psi,psj)
      subroutine psij_2_psll(psi,psj,pslat,pslon)
      subroutine psll_2_geoll(pla,plo,glat,glon)
      subroutine ps_param(xmin,ymin,dx,dy)
      subroutine conical_equidistant
      subroutine geoll_2_coneqll(glat,glon,celat,celon)
      subroutine coneqll_2_coneqij(celat,celon,cei,cej)
      subroutine coneqij_2_coneqll(cei,cej,celat,celon)
      subroutine coneqll_2_geoll(celat,celon,glat,glon)
      subroutine lambert_conformal
      subroutine lc_param(s,cone,xmin,ymin,dx,dy)
      subroutine lat_lon
      subroutine cylindrical_equidistant
      subroutine latlon_2_mcij(n,rlat,rlon,ri,rj)
      subroutine init_gridconv_cmn(gproj,nxbg,nybg,nzbg
      subroutine init_hinterp(nx_bg,ny_bg,nx_laps,ny_laps,gproj,
      subroutine hinterp_field(nx_bg,ny_bg,nx_laps,ny_laps,nz,
      subroutine gdtost(ab,ix,iy,stax,stay,staval,bgmodel)
      subroutine binom(x1,x2,x3,x4,y1,y2,y3,y4,xxx,yyy)
 
ground_temp.f
        subroutine get_ground_temperature(i4time,laps_cycle_time
        function t_ground_k(t_sfc_k,solar_alt,solar_ha
        else ! ramp the function
 
hum.f
        subroutine hum(t,td,rh,ni,nj,sat_t,sat_td)
 
i4time_asc_gg.f
        function        i4time_asc_gg(atime,istatus)
        integer       i4time_asc_gg,  ! this function
 
i4time_fname_lp.f
        SUBROUTINE i4time_fname_lp (FNAME_IN, I4TIME, ISTATUS)
             This routine converts several different file name types (i.e. yydddhhmm)
             into the corresponding I4 time.
        SUBROUTINE CV_JUL_MMDD_LP (JULIAN_DAY, YEAR, MONTH, DAY, ISTATUS
             This routine converts from day of year (Julian days) to month and 
        FUNCTION I4TIME_INT_LP (NYEAR,NMONTH,NDAY,NHOUR,NMIN,NSEC
             I4TIME_INT_LP RETURNS I4 TIME (# OF SECONDS SINCE 00:00 01-JAN-60)
             GIVEN A 6 INTEGERS CONTAINING YEAR, MONTH, DAY, HOUR,
             MINUTE, SECOND
 
ingest_madis_map.f
        subroutine ingest_madis_map(i4time_sys,NX_L,NY_L,ext,istatus)
 
ingest_routines.f
      function l_closest_time_i(wmoid,a9time_ob,nobs
           Determine if the ob time is the closest time for that station to systime
      subroutine convert_array(array_in,array_out,n,string
           QC the observation array and convert units if needed
           If 'string' is 'none', then do just the QC without conversion
      subroutine convert_array_i2r(array_in,array_out,n,string
           QC the observation array and convert units if needed
           If 'string' is 'none', then do just the QC without conversion
      subroutine apply_qc_rsa(iflag_rsa,variable,nobs)
 
interp.f
        subroutine interp (li,l1,l2,v1,v2,output)
 
interpolate_3dfield.f
        subroutine interpolate_3dfield(field_3d_in,nx,ny,
 
laps_io.f
        subroutine get_laps_2d(i4time,EXT,var_2d,units_2d,
             Used to read in a surface grid with inputs of time and ext
        subroutine get_lapsdata_2d(i4time,i4_valid,EXT
             This routine can be used to read in a surface grid of known time
             by calling the new READ_LAPS routine
        subroutine get_laps_2dgrid(i4time_needed,i4tol,i4time_nearest
             Returns a 2-D grid. Inputs include the extension and time window.
        subroutine get_2dgrid_dname(directory
             Returns a 2-D grid. Inputs include the directory, ext, and time window.
        subroutine get_laps_2dvar(i4time_needed,i4tol,i4time_nearest
             This routine tries to read in the desired variable from all files
             having the proper extension, picking the closest one within the
             specified time window.
             added lvd subdirectory flexibility. Only one 2d satellite field returned.
        subroutine get_laps_3d(i4time,imax,jmax,kmax
             Returns a 3-D grid. Inputs include the extension and time.
        subroutine get_lapsdata_3d(i4time,i4_valid
             Returns a 3-D fcst grid. Inputs include directory, initial and valid time.
        subroutine get_laps_3dgrid(i4time_needed,i4tol,i4time_nearest,
             Returns a 3-D analysis grid. Inputs include the extension and time window.
        subroutine put_laps_2d(i4time,EXT,var_2d,units_2d,
             Writes a 2-D grid. Inputs include the extension and time.
        subroutine put_laps_3d(i4time,EXT,var_2d,units_2d,
             Writes a 3-D grid. Inputs include the extension and time.
        subroutine put_laps_multi_3d(i4time,EXT,var_2d,units_2d,
             Writes multiple 3-D grids. Inputs include the extension and time.
        subroutine put_compressed_multi_3d(i4time,EXT,var_2d,units_2d,
             Writes multiple 3-D compressed grids. Inputs include the extension and
             time.
        subroutine put_laps_multi_2d(i4time,EXT,var_a,units_a,
             Writes multiple 2-D grids. Inputs include the extension and time.
        subroutine sort_integer(i_array,i_dim,istatus)
        subroutine open_lapsprd_file(lun,i4time,ext,istatus)
        subroutine open_lapsprd_file_read(lun,i4time,ext,istatus)
        subroutine open_lapsprd_file_append(lun,i4time,ext,istatus)
      subroutine open_ext(lun,i4time_sys,ext,istatus)
        subroutine get_filespec(ext,mode,c_filespec,istatus)
        subroutine get_laps_sat(maxsat,c_sat_id,isats
          This routine acquires satellite data from the lvd subdirectories
          and makes decisions about what the best data is to return as the
          2d field (for var_2d).
        subroutine get_laps_lvd(c_sat_id,
        subroutine get_3dgrid_dname(directory_in
             Returns a 3-D analysis grid. Inputs include a directory, ext, and time window.
        subroutine get_3d_dir_time(directory_in,i4time
             Returns a 3-D grid. Inputs include a directory, ext, and time.
        function l_is_vxx(ext)
      subroutine bgmodel_name(maxbgmodels,nbgm,bgmodelnames,istatus)
 
laps_routines.f
	subroutine mean_lapse(num_sfc,elev,t,td,a_t,b_t,a_td,b_td,
        subroutine mean_pressure(p_s,n_sfc,p_bk,ni,nj,badflag,pbar)
	real function alt_2_sfc_press(alt,elev)
c	Changes:	07-20-88	Changed from subroutine to function.
	subroutine find_ij(lat_s,lon_s,lat,lon,numsta,mxsta,
	subroutine extract(a,imax,jmax,i,j,ix,jy)
	subroutine decompwind_gm(dd,ff,ucomp,vcomp,status)
      subroutine stats(x,ni,nj)
	subroutine clouds(imax,jmax,topo,t,smsng,tb8,
	subroutine lp_fire_danger (ni,nj,lp_10krh,lp_10kt,lp_10kws,
      subroutine heat_index(t,rh,hi,ni,nj,r_missing_data)
	subroutine bkgwts(lat,lon,topo,numsfc,lat_s,lon_s,elev_s,     ! I
      subroutine aplot(field, ni, nj)
       subroutine check_field_2d(x,ni,nj,fill_val,istatus)
	subroutine checknan_2d(x,ni,nj,nan_flag)
	subroutine get_background_sfc(i4time_in,var_in,bkg_ext,
	subroutine get_bkgwind_sfc(i4time_in,bkg_ext,bkg_time,bkg_u,bkg_v,
      subroutine interp_to_sfc(sfc_2d,field_3d,heights_3d,ni,nj,nk,
	subroutine tagit(name, code)
        subroutine pstn_anal(back_mp,back_sp,mslp_bk,mslp,ni,nj
	subroutine meso_anl(u,v,p,t,td,theta,dx,dy,q,qcon,qadv,
      subroutine verify(field,ob,stn,n_obs_b,title,iunit,
      subroutine splie2(x1a,x2a,ya,m,n,y2a)
      subroutine splin2(x1a,x2a,ya,y2a,m,n,x1,x2,y)
      subroutine spline_db(x,y,n,yp1,ypn,y2)
      subroutine splint(xa,ya,y2a,n,x,y)
	subroutine reduce_p(temp,dewp,pres,elev,lapse_t,
 
laps_thermo.f
        subroutine put_stability(
             Calculate and write out set of 2-D stability grids
        subroutine laps_be(ni,nj,nk
             Returns 2-D PBE and NBE in Joules, Parcel is lifted from lowest level
        SUBROUTINE SINDX(NLEVEL,LI,SI,BLI,TT,SWEAT,HWB0
             Calculate a variety of stability indices from an input sounding
        SUBROUTINE POTBE(Q,NLEVEL,PMEAN,TMEAN,WMEAN,PLCL
             Calculate a PBE/LCL related indices from an input sounding
        FUNCTION WTBLB(P,TC,W,IOUT,istatus)
             Calculate Wet Bulb, given P,T,W
        SUBROUTINE BLAYR(P,T,Q,PMEAN,TMEAN,WMEAN,THKNES,NLEVEL,HH,
             Calculate boundary layer mean values from an input sounding
        SUBROUTINE LLCL(LCL,TLCL,PLCL,P,TC,W,IO) ! In Meters
             Calculate LCL properties from an input parcel
        SUBROUTINE LCL_fast(P,TC,TD,HLCL,TLCL,PLCL)
             Calculate LCL properties from an input sounding (efficiently)
        SUBROUTINE ITPLV(P,PARAM,NLEVEL,PINT,PARMAN,IO,istatus)
             Interpolate any parameter from a pressure sounding to a specific pres
        SUBROUTINE NEWTN(X,XOLD,Y,YOLD,SLOPE,ITER,IO,FENCE,istatus)
             Newton iteration
        SUBROUTINE MSAD5
             Calculate along a moist adiabat. Solve for T, given ThetaE and P
       FUNCTION THAE(TC,TD,P)
            Calculate Theta(e), given T, Td, P
       FUNCTION THD(P,T,W,PMEI)
            COMPUTES THE DRY AIR POTENTIAL TEMPERATURE
       FUNCTION RL(TM2)
            LATENT HEAT OF EVAPORATION
       SUBROUTINE DRYAD(P1,P2,T1,T2,W,IO)
            COMPUTES THE DRY AIR POTENTIAL TEMPERATURE (theta), GIVEN P and T
       FUNCTION THETE(T,TD,ALT,HGT)
            Compute theta(e), given T, TD, Altimeter setting, and elevation (HGT)
       FUNCTION XMXRAT(PRES,DEWP)
            COMPUTE MIXING RATIO (GM/GM) GIVEN DEW POINT TEMP AND THE PRESSURE (MB)
       FUNCTION THAEK(P,TC,W)
            COMPUTES THE EQUIVALENT POTENTIAL TEMPURATURE (K).
            (USING THE ROSSBY DEFINITION)
        function oe_fast(t,td,pres)
             Quick way to get Theta(e) using lookup table
        function tmlaps_fast(thetae,pres)
             Quick way to get temperature along a moist adiabat given theta(e)
             This uses a lookup table
        FUNCTION DWPT_laps(T,RH)
          THIS FUNCTION RETURNS THE DEW POINT (CELSIUS) GIVEN THE TEMPERATURE
          (CELSIUS) AND RELATIVE HUMIDITY (%).
        function twet_fast(t_c,td_c,pres_mb)
             This is a fast approximate Wet Bulb routine using lookup tables
       subroutine li_laps(tc,td,pr,i4time,imax,jmax,li,flag
            Compute 2-D grid of LI, given a grid of parcels to launch
        function func_li(t_c,td_c,psta_mb,t500_c,r_missing_data)
             Calculate LI given an input parcel
        subroutine thetae_to_t500(thetae,t500,istatus)
             Given theta(e), what is T-500mb?
        function expm(x)
             Calculate exp function with check to avoid underflow with large inputs.
        function devirt_td(t_k,td_k,p_pa)
             This function yields the approximate temperature given the virtual temp
             tv from the mthermo library is called. 
        function devirt_sh(t_k,sh,p_pa)
             This function yields the approximate temperature given the virtual temp
             tv from the mthermo library is called. 
        function devirt_rh(t_k,rh,p_pa)
             This function yields the approximate temperature given the virtual temp
             devirt_td from the laps library is called. 
        FUNCTION TV_SH(T,SH,P)
             THIS FUNCTION RETURNS THE VIRTUAL TEMPERATURE TV (CELSIUS) OF
             A PARCEL OF AIR AT TEMPERATURE T (CELSIUS), DEW POINT TD
             (CELSIUS), AND PRESSURE P (MILLIBARS). THE EQUATION APPEARS
             IN MOST STANDARD METEOROLOGICAL TEXTS.
      FUNCTION TSA_fast(OS,P)
           THIS FUNCTION RETURNS THE TEMPERATURE TSA (CELSIUS) ON A SATURATION
           ADIABAT AT PRESSURE P (MILLIBARS). OS IS THE EQUIVALENT POTENTIAL
           TEMPERATURE OF THE PARCEL (CELSIUS). SIGN(A,B) REPLACES THE
           ALGEBRAIC SIGN OF A WITH THAT OF B.
        subroutine get_tw_approx_2d(t_k,td_k,p_pa,ni,nj,tw_k)
             Calculate Wet Bulb, using a fast approximate method
        subroutine get_tw_2d(t_k,td_k,p_pa,ni,nj,tw_k)
             Calculate 2-D grid of Wet Bulb, using 'tw_fast'
        subroutine get_tw_2d_orig(t_k,td_k,p_pa,ni,nj,tw_k)
             Calculate 2-D grid of Wet Bulb, using 'tw'
        FUNCTION TW_fast(T,TD,P)
             THIS FUNCTION RETURNS THE WET-BULB TEMPERATURE TW (CELSIUS)
             GIVEN THE TEMPERATURE T (CELSIUS), DEW POINT TD (CELSIUS)
             AND PRESSURE P (MB).  SEE P.13 IN STIPANUK (1973), REFERENCED
             ABOVE, FOR A DESCRIPTION OF THE TECHNIQUE.
             WARNING: This routine may not work because it calls TSA_fast
        FUNCTION W_fast(T,P) ! Saturation mixing ratio wrt water
             THIS FUNCTION RETURNS THE MIXING RATIO (GRAMS OF WATER VAPOR PER
             KILOGRAM OF DRY AIR) GIVEN THE TEMPERATURE T (CELSIUS) AND PRESSURE
             (MILLIBARS). THE FORMULA IS QUOTED IN MOST METEOROLOGICAL TEXTS.
             Note this is a faster version done by Steve Albers.
        FUNCTION Wice_fast(T,P) ! Saturation mixing ratio wrt ice
             THIS FUNCTION RETURNS THE MIXING RATIO (GRAMS OF WATER VAPOR PER
             KILOGRAM OF DRY AIR) GIVEN THE TEMPERATURE T (CELSIUS) AND PRESSURE
             (MILLIBARS). THE FORMULA IS QUOTED IN MOST METEOROLOGICAL TEXTS.
             Note this is a faster version done by Steve Albers
        FUNCTION OS_fast(TK,P)
             THIS FUNCTION RETURNS THE EQUIVALENT POTENTIAL TEMPERATURE OS
             (K) FOR A PARCEL OF AIR SATURATED AT TEMPERATURE T (K)
             AND PRESSURE P (MILLIBARS).
             Note this is a faster version done by Steve Albers
 
lapsgrid.f
        subroutine get_mother_domain(ni,nj,lat,lon,istatus)
             Reads in lat and lon fields for nested domains. Only WRFSI
        subroutine get_laps_domain(ni,nj,grid_fnam,lat,lon,topo,istatus)
             Reads in lat/lon/topo/landfrac fields
        subroutine get_domain_laps(ni,nj,grid_fnam,lat,lon,topo
             Reads in lat/lon/topo fields with grid spacing
        subroutine get_laps_domain_95(ni,nj,lat,lon,topo
             Reads in lat/lon/topo/landfrac fields with grid spacing
        subroutine read_static_grid(ni,nj,var,static_grid,istatus)
             Reads an arbitrary static field given an input 'var' string
      subroutine force_get_laps_config(grid_fnam,istatus)
      subroutine get_laps_config(grid_fnam,istatus)
      subroutine get_config(istatus)
      subroutine get_laps_config_sub(grid_fnam,istatus)
      subroutine find_domain_name(data_root, domain_name,
      subroutine get_mother_dims(nx_mother,ny_mother,istatus)
      subroutine get_standard_longitude(std_lon_ret,istatus)
      subroutine get_grid_spacing(grid_spacing_m_ret,istatus)
      subroutine get_grid_center(grid_cen_lat_ret,grid_cen_lon_ret
      subroutine get_standard_latitude(std_lat,istatus)
      subroutine get_standard_latitudes(std_lat1,std_lat2,istatus)
      subroutine get_vertical_grid(vert_grid,istatus)
      subroutine get_maxstns(maxstns_ret,istatus)
      subroutine get_c8_project(c8_project_ret,istatus)
      subroutine get_c8_blpfmt(c8_blpfmt_ret,istatus)
      subroutine get_raddat_type(c_raddat_type_ret,istatus)
      subroutine get_c6_maproj(c6_maproj_ret,istatus)
      subroutine get_c80_description(c80_description_ret,istatus)
      subroutine get_laps_dimensions(nk,istatus)
      subroutine get_aircraft_time_window(aircraft_time_window_ret
      subroutine get_laps_cycle_time(laps_cycle_time_ret,istatus)
      subroutine get_num_domains(num_domains,istatus)
      subroutine get_domain_origin(lli_orig,llj_orig
      subroutine get_ratio_to_parent(iratio,istatus)
      subroutine get_parent_id(parent_id,istatus)
      subroutine get_grid_dim_xy(NX_L_ret,NY_L_ret,istatus)
      subroutine get_topo_parms(silavwt_parm_ret,toptwvl_parm_ret
      subroutine get_meso_sao_pirep(n_meso,n_sao,n_pirep_ret,istatus)
      subroutine get_max_radars (max_radars_ret, istatus)
      subroutine get_max_stations (maxstns_ret, istatus)
      subroutine get_vert_rads (vert_rad_pirep_ret,
      subroutine get_r_missing_data(r_missing_data_ret, istatus)
      subroutine get_i2_missing_data(i2_missing_data_ret, istatus)
      subroutine get_i_perimeter(i_perimeter_ret, istatus)
      subroutine get_ref_base(ref_base_ret, istatus)
      subroutine get_ref_base_useable(ref_base_useable_ret, istatus)
      subroutine get_r_hybrid_first_gate(r_hybrid_first_gate_ret
      subroutine get_max_radar_files(max_radar_files_ret, istatus)       
      subroutine get_l_compress_radar(l_compress_radar_ret, istatus)
      subroutine get_l_use_tamdar(l_use_tamdar_ret, istatus)
      subroutine get_l_3dvar(l_3dvar_ret, istatus)
      function ltest_vertical_grid(c_vertical_grid)
      function ltest_vertical_grid_lc(c_vertical_grid)
      subroutine get_earth_radius(erad,istatus)
      subroutine get_fdda_model_source(fdda_model_source_ret
      subroutine get_path_to_topo_10m(path_to_topo_10m_ret,istatus)
      subroutine get_path_to_topo_30s(path_to_topo_30s_ret,istatus)
      subroutine get_path_to_soiltype_top(path_to_soiltype_top_30s_ret
      subroutine get_path_to_soiltype_bot(path_to_soiltype_bot_30s_ret
      subroutine get_path_to_landuse_30s(path_to_landuse_30s_ret
      subroutine get_path_to_green_frac(path_to_green_frac_ret
      subroutine get_path_to_soiltemp_1deg(path_to_soiltemp_1deg_ret
      subroutine get_path_to_albedo(path_to_albedo_ret,istatus)
      subroutine get_path_to_maxsnoalb(pathtomaxsnoalb_ret,istatus)
	subroutine get_path_to_islope(pathtoislope_ret,istatus)
      subroutine get_path_to_sst(path_to_sst_ret,istatus)
      subroutine get_n_staggers(n_staggers,istatus)
      subroutine get_stagger_index(istag,istatus)
      subroutine array_minmax(a,ni,nj,rmin,rmax,r_missing_data)
 
latlon_to_rlaps.f
        subroutine latlon_to_rlapsgrid(rlat,rlon,lat,lon,ni,nj,ri,rj
             This routine assumes a polar stereographic, lambert conformal,
             or mercator projection.
        subroutine rlapsgrid_to_latlon(ri,rj,lat,lon,ni,nj,rlat,rlon
             This routine assumes a polar stereographic, lambert conformal,
             or mercator projection.
        subroutine latlon_to_uv(rlat,rlon,u,v,istatus)
             This routine assumes a polar stereographic, lambert conformal,
             or mercator projection.
        subroutine latlon_to_uv_ps(rlat_in,rlon_in,slat,polat,slon,u,v)
        subroutine latlon_to_uv_lc(rlat,rlon,slat1,slat2,slon,u,v)
        subroutine latlon_to_uv_mc(rlat,rlon,slat,cenlon,u,v)
        subroutine latlon_to_uv_ll(rlat,rlon,cenlon,u,v)
        subroutine uv_to_latlon(u,v,rlat,rlon,istatus)
        subroutine uv_to_latlon_ps(u,v,slat,polat,slon
        subroutine uv_to_latlon_lc(u,v,slat1,slat2,slon,rlat,rlon)
        subroutine uv_to_latlon_mc(u,v,slat,cenlon,rlat,rlon)
        subroutine uv_to_latlon_ll(u,v,cenlon,rlat,rlon)
        function projrot_latlon(rlat,rlon,istatus)
             1997 Steve Albers    Calculate map projection rotation, this is the
                                  angle between the y-axis (grid north) and
                                  true north. Units are degrees.
        function projrot_laps(rlon)
             This routine is being phased out. Please try to use 'projrot_latlon'.
      subroutine check_domain(lat,lon,ni,nj,grid_spacing_m,intvl
           This routine checks whether the lat/lon grid is consistent with
           map projection parameters as processed by latlon_to_rlapsgrid,
           and rlapsgrid_to_latlon. The grid size is also checked.
           This is a good sanity check of the NetCDF static file, namelist files,
           as well as various grid conversion routines.
      subroutine lambert_parms(slat1,slat2,n_out,s_out,rconst_out)
      subroutine get_grid_spacing_actual(rlat,rlon
           Calculate actual grid spacing at any given lat/lon location
      subroutine get_grid_spacing_actual_xy(rlat,rlon
           Calculate actual grid spacing (x,y directions) at any given lat/lon 
           location. This works for conformal or 'latlon' grids
        subroutine get_grid_spacing_cen(grid_spacing_cen_m,istatus)
             Calculate actual grid spacing at the center of the domain
             If we have a lat/lon domain the Y direction spacing will be used
      subroutine get_ps_parms(slat1,slat2,grid_spacing_m                ! I
 
libdummies.f
        function ishow_timer()
        function init_timer()
        subroutine LIB$SHOW_TIMER(my_show_timer)
        FUNCTION LIB$INIT_TIMER()
        FUNCTION lib$set_logical()
        FUNCTION ltest_log_gg()
        FUNCTION lib$set_symbol()
        subroutine notify_exec_gs(izero,             ! INPUT
 
machine_dependent.f
        function i4_to_byte(i4_in)
             Converts an integer to a byte (character) variable
        function byte_to_i4(b_in)
             Converts a byte (character) to an integer variable
      subroutine open_append(lun,file,status,istat)
           Opens a file for appending
          Below are some Taiwan FGGE routines
           Below are dummy routines for other platforms
      subroutine read_fa(lun,filename                   ! I
      subroutine read_fa_nf ( lun, filename,                   ! I
 
make_optran_layers.f
      subroutine make_optran_layers (a,b,c,aa,bb,cc,p,pp,kk,istatus)
      end subroutine make_optran_layers
 
make_rh.f
        function make_rh (p,t,ssh,t_ref)
        real eslo  !function type
        real esice !function type
        real es    !function type
 
make_ssh.f
        function make_ssh (p,t,rh, t_ref)
        real eslo  !function type
        real esice !function type
        real es    !function type
 
make_td.f
        function make_td (p,t,q,t_ref)
        function func (x)
        real ssh2 !function type
        func = qc-ssh2(pc,tc,x,t_refc)  ! function will be zero when ssh2=q
 
map_proj.f
        SUBROUTINE XYTOPS(X,Y,PLA,PLO,ERAD)
      SUBROUTINE PSTOGE(PLA,PLO,GLAT,GLON,RLAT,WLON1)
      SUBROUTINE GETOPS(PLA_r4,PLO_r4,GLAT_r4,GLON_r4,RLAT_r4,WLON1_r4)       
      SUBROUTINE PSTOXY(X,Y,PLA,PLO,ERAD)
      subroutine latlon_to_xy_old(glat,glon,rlat,wlon1,erad,x,y)
      subroutine latlon_to_xy(glat,glon,erad,x,y)
      subroutine xy_to_latlon_old(x,y,erad,rlat,wlon1,glat,glon)
      subroutine xy_to_latlon(x,y,erad,glat,glon)
      subroutine xy_to_uv(x,y,erad,u,v)
      subroutine uv_to_xy(u,v,erad,x,y)
 
meanlapse.f
        subroutine mean_lapse(num_sfc,elev,t,td,a_t,b_t,a_td,b_td,hbar)
 
meanpres.f
        subroutine mean_pres(num_sfc,p_s,pbar)
 
move.f
        subroutine move(a,b,imax,jmax)
        subroutine move_i(a,b,imax,jmax)
        subroutine move_3d(a,b,imax,jmax,kmax)
        subroutine move_2dto3d(a,b,index,imax,jmax,kmax)
        subroutine move_3dto2d(a,index,b,imax,jmax,kmax)
 
multar.f
        subroutine multar(a,b,result,imax,jmax)
 
multcon.f
        subroutine multcon(a,const,imax,jmax)
 
my_show_timer.f
      subroutine my_show_timer (line)
 
nan_routines.f
       subroutine check_nan (var,istatus)
           This routine checks a variable for Not a Number conditions (NaN).  It 
           returns an istatus of 0 if NaNs are detected. Otherwise it returns a 
           value of 1.
       subroutine check_nan1 (var1,n,istatus)
           This routine checks a 1d array for Not a Number conditions (NaN).  It 
           returns an istatus of 0 if NaNs are detected. Otherwise it returns a 
           value of 1.
       subroutine  check_nan2 (var2,n,m,istatus)
           This routine checks a 2d array for Not a Number conditions (NaN).  It 
           returns an istatus of 0 if NaNs are detected. Otherwise it returns a 
           value of 1.
       subroutine check_nan3 (var3,n,m,l,istatus)
           This routine checks a 3d array for Not a Number conditions (NaN).  It 
           returns an istatus of 0 if NaNs are detected. Otherwise it returns a 
           value of 1.
      function nanf(arg)
           Function subroutine to check a variable for Nan. 1 means a Nan was 
           detected, otherwise it returns a 0.
 
newreadobs.f
        subroutine read_obs_i(infile,maxstns,atime,num_meso,
 
normalize.f
        Subroutine Normalize_Brightness(i4time,lat,lon,image,ni,nj
        Subroutine Stretch(IL,IH,JL,JH,rArg)
        subroutine deviate_ray(l1,x5,y5,z5,x3,y3,z3,x8,y8,z8)
      subroutine sat_angular_alt(sat_radius,lat,lon
 
ofm.f
      subroutine ofm (kk,laps_p,laps_t,laps_q,laps_sfc_t,
      integer compute_rtm      ! optran 90 wrapper function is type int
 
oh_zone.f
      subroutine oh_zone (i_p, ozone, nl, repeat, istatus)
      subroutine interpolate_ozone(xa,ya,n,x,y,istatus)
 
pcpcnc.f
        subroutine cpt_pcp_cnc(ref_3d,temp_3d,cldpcp_type_3d  ! Input
        subroutine cpt_fall_velocity(ipcp_type,p,t,dbz,fall_velocity)
        subroutine cpt_concentration(rate,fall_velocity,concentration)
 
prof_cdf.f
        subroutine PROF_CDF_CLOSE(cdfid,status)
        subroutine PROF_CDF_OPEN(file,cdfid,status)
        subroutine PROF_CDF_READ(cdfid,staname,wmoid,varname,dtype,
        subroutine PROF_CDF_SET_ERROR(error_code,status)
        subroutine PROF_CDF_GET_STATIONS(cdfid,n_stations,staname,
        subroutine prof_i4_avg_wdw(i4_avg_wdw_sec, cdfid, istatus)
 
psatoz.f
      Real Function PsaToZ(psain)
 
qc.f
        function pct_rejected(n_good_qc,n_bad_qc)
 
qc_field_3d.f
      subroutine qc_field_2d(var_2d,field_2d,ni,nj,istatus)
      subroutine qc_field_3d(var_2d,field_3d,ni,nj,nk,istatus)
 
radar_qc.f
        subroutine radar_qc(ni,nj,nk,ref_3d,istatus_qc)
 
radar_to_latlon.f
        subroutine radar_to_latlon_old(lat_grid,lon_grid,height_grid
        subroutine radar_to_latlon(lat_grid,lon_grid,height_grid
             Calculate radar echo location given radar location and az/ran/elev 
             of radar echo
 
razm_lat_lon_gm.f
        Subroutine RAzm_Lat_Lon_GM(r4_SLat,r4_SLon,r4_Range,
 
rd_laps_static.f
      subroutine rd_laps_static (dir,laps_dom_file,imax,jmax,n_grids,
      subroutine make_static_fname(dir,laps_dom_file,file_name,
 
read-laps-static.f
        SUBROUTINE READ_LAPS_STATIC (DIR, EXT, IDIM, JDIM, KMAX, KDIM,
 
read_acars_ob.f
        subroutine read_acars_ob(lun,c_obtype,xlat,xlon,elev,arg1,arg2       
 
read_covar.f
      subroutine read_stage4(filename,nx4,ny4,km,ri,
 
read_ldad_prof.f
      subroutine read_ldad_prof(i4time_sys,i4_prof_window
      subroutine read_prof(nf_fid, level, maxStaticIds, nInventoryBins,       
      subroutine read_ldad_prof_netcdf(nf_fid, level, maxStaticIds, 
      function iqc_rsa(iflag)
 
read_namelist.f
      subroutine config_satellite_lvd(istatus)
           Reads static/satellite_lvd.nl file.
      subroutine get_sat_sounder_info(n_sndr,
           Reads static/sat_sounder.nl file.
      subroutine get_balance_nl(lrunbal,adv_anal_by_t_min
           Reads static/balance.nl file.
      subroutine get_sfcqc_nl(lrunqc,istatus)
           Reads static/balance.nl file.
      subroutine mosaic_radar_nl(c_radar_mosaic_type,n_radars,
           Reads static/radar_mosaic.nl file
      subroutine get_background_info(bgpaths,bgmodels
          reads static/background.nl
           Reads static/osse.nl file.
       subroutine get_wind_parms(l_use_raob,l_use_cdw,l_use_radial_vel
       subroutine get_gridnl(mode)
       subroutine read_verif_nl(type_obs,path_to_raw_profiler,
       subroutine read_sfc_nl(use_lso_qc,skip_internal_qc 
       subroutine get_laps_redp(redp_lvl,istatus)
      subroutine conf_isjtkc(nsdim,ntdim,ncdim,
 
read_pro_data.f
        subroutine read_pro_metadata(lun,i4time_prof,ext              ! I
             Returns wind profile metadata from the PRO file. 
             Jacket for read_pro_data.
        subroutine read_pro_data(lun,i4time_prof,ext                  ! I
             Returns wind profile data from the PRO file
 
read_snd_data.f
        subroutine read_snd_data2(lun,i4time_snd,ext                   ! I
             Returns sounding wind, T, Td data from the SND file
             Also returns the lat/lon/time info from all the levels
        subroutine read_snd_data(lun,i4time_snd,ext                    ! I
             Returns sounding wind, T, Td data from the SND file
        subroutine read_snd_metadata(lun,i4time_snd,ext                ! I
             Returns sounding metadata from the SND file
	subroutine read_sfc_snd(i4time,atime_s,n_obs_g,n_obs_b, ! regular SND
 
read_surface_obs.f
	subroutine read_surface_data(i4time,btime,n_obs_g,n_obs_b,time,
             Routine to read the newer LAPS LSO surface data file with the expanded 
             variable list. The data is passed back to the calling routine in 1-d 
             arrays.
	subroutine read_sfc_metadata(i4time,n_obs_g,n_obs_b,time
             Routine to read the LAPS LSO surface data file and return the station
             metadata.   The data is passed back to the calling routine in 1-d 
             arrays.
	subroutine read_sfc_state(i4time,ext,btime,n_obs_g,n_obs_b,
             Routine to read the LAPS LSO surface data file and return the state
             variables (wind, temp, dewpt, altimeter & pressure).   The data is 
             passed back to the calling routine in 1-d arrays.
	subroutine read_sfc_temp(i4time,btime,n_obs_g,n_obs_b,
             Routine to read the LAPS LSO surface data file and return the
             temperature.   The data is passed back to the calling routine in 
             1-d arrays.
        subroutine read_sfc_wind(i4time,ext,n_obs_g,n_obs_b,obstime
             Routine to read the LAPS LSO surface data file and return wind data. 
             The data is passed back to the calling routine in 1-d arrays.
	subroutine read_sfc_press(i4time,btime,n_obs_g,n_obs_b,
             Routine to read the LAPS LSO surface data file and return pressure
             data.   The data is passed back to the calling routine in 1-d arrays.
	subroutine read_sfc_precip(i4time,btime,n_obs_g,n_obs_b,
             Routine to read the LAPS LSO surface data file and return precipitation
             data.   The data is passed back to the calling routine in 1-d arrays.
	subroutine read_surface_dataqc(i4time,btime,n_obs_g,n_obs_b,time,
             Routine to read the LAPS LSO_QC surface data file with the expanded 
             variable list. The data is passed back to the calling routine in 1-d 
             arrays.
 
read_surface_old.f
        subroutine read_surface_old(infile,maxsta,atime,n_meso_g,
             Routine to read surface data for LAPS that has been written into
             the LSO/LSOQC file by the 'write_surface_obs' routine. Return arguments
             are more in tune with an earlier lso variable list. Calls 
             'read_surface_data' and 'read_surface_dataqc'.
        subroutine left_justify(string)
        subroutine right_justify(string)
 
read_surface_sa.f
        subroutine read_surface_sa(i4time,maxsta,                     ! I
             This routine calls 'read_surface_data' and is used primarily to read
             This is called only from the cloud analysis at present.
        subroutine read_cloud_obs(i4time,maxsta,                      ! I
             This routine calls 'read_surface_data' and is used primarily to read
             in cloud info from the current LSO file and potentially SYNOP obs from
             a wider time window. The initial design is to call this from the
             'read_surface_sa' routine.
 
read_wrfsi_nl.f
      subroutine open_namelist (lun)
      subroutine read_wrfsi_project_id (istatus)
      subroutine read_wrfsi_filetimespec (lun,
      subroutine read_wrfsi_hgridspec (istatus)
      subroutine read_wrfsi_vgridspec (istatus)
      subroutine read_wrfsi_sfcfiles (istatus)
      subroutine read_wrfsi_rawdatapaths (istatus)
      subroutine get_stand_lon_wrf(std_lon,istatus)
      subroutine get_stand_lats_wrf(std_lat,std_lat2
      subroutine get_c6_maproj_wrf(c6_maproj
      subroutine get_grid_center_lon_wrf(grid_center_lon
      subroutine get_grid_spacing_wrf(grid_spacing_m,istatus)
 
readlaps.f
       subroutine read_laps(reftime,valtime,dir,ext,iimax,jjmax,
            Reads data requested by arrays VAR_REQ and LVL_REQ for the
            I4TIME, DIR and EXT specified.  Returns LVL_COORD-REQ,
            UNITS_REQ, COMMENT_REQ, DATA AND ISTATUS
            REFTIME is the time of the model run.
            VALTIME is the valid time of the data.
            For analysis, valtime = reftime.
 
readlapscompressed.f
       subroutine read_laps_compressed(i4time,dir,ext,
        subroutine runlength_decode(ngrids,n_cmprs,array1,array2        ! I
 
readlapsdata.f
       subroutine read_laps_data(i4time,dir,ext,iimax,jjmax,kkmax,kdim,
      subroutine cvt_fname_v3(dir,gtime,fhh,ext,ext_len,file_name,
      subroutine make_fcst_time(valtime,reftime,fcst_hh_mm,istatus)
 
readlapsheader.f
      SUBROUTINE READ_LAPS_HEADER(I4TIME,DIR,EXT,IMAX,JMAX,KMAX,
      subroutine setup_var_lvl(ext_in,num_levels,lvl_avail,
 
rfill.f
        subroutine ref_fill_vert(ref_3d_io,ni,nj,nk
 
rh2cld.f
        function rh_to_cldcv(rh)
 
rootfind.f
      FUNCTION ROOTFIND(FUNC,X1,X2,TOL)
 
sfc_routines.f
	subroutine write_surface_obs(btime,outfile,n_obs_g,
        subroutine get_sfc_badflag(badflag_out,istatus)
             Returns "badflag" used in surface code
        subroutine get_ibadflag(ibadflag,istatus)
             Returns "ibadflag" used in surface code
         subroutine get_filetime_range(
              Determine the range of needed filetimes, given observation time range
              and other info about the files.
      subroutine ck_array_real(var, recNum, filval, badflag)
      subroutine ck_array_dble(var, recNum, filval, badflag)
        subroutine get_sfc_obtime(int_obtime,i4time_lso ! I
 
smf_wisp91.f
      subroutine get_smf_1d(nk,cbase_m,ctop_m,itype_in
      SUBROUTINE RAOB(NXFLAG,NVFLAG,MAXOBSR)
      SUBROUTINE INTERP_smf(NDECKS)
      SUBROUTINE AL(LVLCT,LAYR,TI,N1,N2,CALW)
      SUBROUTINE TZ(P,T,DTZ,ES)
      SUBROUTINE MVD(NDECKS,ICTP,XMVD)
      SUBROUTINE IINDEX(XMVD,WATR,NDECKS,AINDEX,HINDEX)
      SUBROUTINE CLTYPE(ICTP,NDECKS,CLDTYP)
      SUBROUTINE OUTPUT(CLDTYP,WATR,XMVD,AINDEX,HINDEX,ICP,NDECKS,TITLE)
      SUBROUTINE OUT_LAPS
      SUBROUTINE LWC(NDECKS,ICP,ICTP,WATR,XMVD)
      SUBROUTINE LW(LAY,IRAIN,LVLCT,WATR,NEPH,RMVD)
      SUBROUTINE DSD
      SUBROUTINE NDROPS(LVLCT,LWC,DROPSZ,N,LAY,
CC   LATER I INTEND TO MAKE THIS A FUNCTION OF CLOUD BASE VERTICAL
 
smf_wisp92.f
      subroutine get_sfm_1d(nll,zcb,zctop,ityp,zlevel,
cc         currently, this subroutine will only use the Smith-
cc         linear function of in cloud temperature going from
 
smooth_cross_laps.f
        subroutine smooth_cross_laps(ni,nj,i_l,i_h,j_l,j_h,r4_img
 
snooze_gg.f
        subroutine snooze_gg(rseconds,istatus)
 
ssh2.f
        function ssh2 (p,t,td,t_ref)
        real esice !function type
        real eslo  !function type
        real es    !function type
 
subcon.f
        subroutine subcon(a,con,result,imax,jmax)
 
sunfuncs.f
        SUBROUTINE solar_position(rlat,rlon,i4time,alt,dec,hrangle)
        SUBROUTINE solalt(rlat,rlon,i4time,alt)
        FUNCTION RADNORM(JD)
        FUNCTION SOLDEC(JD)
        FUNCTION TIMEQ(JD)
 
time_conversions.f
        SUBROUTINE make_fnam_lp (I4TIME, FILE_NAME, ISTATUS)
             make_fnam_lp CONSTRUCTS THE FILE NAME STRING 'yyjjjhhmm' FOR
             THE TIME CORRESPONDING TO I4TIME.
        SUBROUTINE CV_I4TIM_INT_LP (I4TIME,NYEAR,NMONTH,NDAY,NHOUR,
             CV_I4TIM_INT_LP CONVERTS I4 TIME TO SIX INTEGERS
             Note that NYEAR is the number of years since 1900
      subroutine make_fnam13_lp(initial_i4time,forecast_time,filename,
           Converts initial time and forecast time to a 13 character filename
      subroutine c_time2fname(utime,a9time)
           Convert utime to a9time. Jacket routine that calls 'make_fnam_lp'.
      subroutine afwa_julhr_i4time(I_A1JUL,I_A1MIN,i4time)
           I_A1JUL is number of hours since Dec 31, 1967 at 00z
           This is converted to i4time, number of sec since Jan 1, 1960 at 00z
        subroutine cv_asc_i4time(ascii_time,I4time)
             Converts 9 character ascii time into i4time
        subroutine      cv_i4tim_asc_lp(i4time,atime,istatus)
           Takes in an i4time and returns the time as an ASCII string
           (e.g. 27-MAR-1990 12:30:00.00 ).  The i4time is assumed to
           be a 1960-relative time, although the starting year is easily
           changed in the code.
      subroutine jd_to_i4time(jd,i4time,istatus)
           Converts Julian Day (Number of days since Jan 1 4713BCE to i4time)
 
trig.f
        function sind(x)
        function cosd(x)
        function tand(x)
        function asind(x)
        function acosd(x)
        function atan2d(x,y)
 
trig_dum.f
        function atan2_deg(x,y)
 
upcase.f
        subroutine      upcase(input,output)
 
vectors.f
        subroutine midpoint(a1,a2,a3,b1,b2,b3,m1,m2,m3)
        subroutine anglevectors(a1,a2,a3,b1,b2,b3,angle)
        function dotproduct(a1,a2,a3,b1,b2,b3)
        function angle_vectors(a1,a2,a3,b1,b2,b3)
        subroutine normalize(a1,a2,a3,maga)
        function mag(a1,a2,a3)
        subroutine xyztolatlon(x,y,z,lat,lon)
        subroutine latlontoxyz(lat,lon,x,y,z)
        subroutine crossproduct(a1,a2,a3,b1,b2,b3,c1,c2,c3)
 
vis2albedo.f
        subroutine vis_to_albedo(i4time,csatid,
        function albedo_to_cloudfrac(albedo)
        function cloudfrac_to_albedo(cloud_frac_vis)
        Subroutine Stretch2(IL,IH,JL,JH,rArg)
 
vv.f
        Subroutine Cloud_bogus_w (dx, cloud_type, height, nk       ! I
!The following specifies the maximum vv in two cloud types as functions
        Real Function Parabolic_vv_profile (zbase, ztop, ratio, z)
        Real Function Parabolic_vv_profile1 (zbase, ztop, ratio, z)
 
wait_for_data.f
        subroutine wait_for_data(c_filespec,i4time_desired   !  Inputs
 
wfo_fname_conversions.f
      function wfo_fname13_to_fname9(wfo_fname13)
           Routine converts wfo filename 'yyyymmdd_hhmm' to 'yyjjjhhmm' filename.
      function fname9_to_wfo_fname13(a9_time_in)
           Routine to convert LAPS 'yyjjjhhmm' time to 'yyyymmdd_hhmm' time.
       function cvt_wfo_fname13_i4time(wfo_fname13)
            Convert wfo filename*13 to i4time
       function cvt_i4time_wfo_fname13(i4time)
            Convert i4time to wfo filename*13
      function cvt_fname13_to_wfo_fname13(fname13)
      function cvt_wfo_fname13_to_fname13(fname13)
 
windspeed.f
        subroutine windspeed(u,v,ff,ni,nj)
 
write_covar.f
      subroutine write_covar_nam(filename,x,iy,pr,
 
write_snd.f
      subroutine write_snd(lun_out                         ! I
 
writelaps.f
      subroutine write_laps(i4_reftime,i4_valtime,dir,ext,
 
writelapscompressed.f
      subroutine write_laps_compressed(i4time,dir,ext,imax,jmax,
        subroutine runlength_encode(ngrids,n_cmprs_max,data           ! I
 
writelapsdata.f
      subroutine write_laps_data(i4time,dir,ext,imax,jmax,
      subroutine write_laps_multi(i4time,dir,ext,imax,jmax,
 
writelapslfm.f
      subroutine write_laps_lfm(reftime,valtime,datadir,cdldir, 
 
writelapslvls.f
      subroutine write_laps_lvls(reftime,valtime,dir,ext,imax,jmax,
 
wrt_laps_static.f
      subroutine wrt_laps_static (dir, laps_dom_file, imax, jmax, 
 
zero.f
        subroutine zero(a,imax,jmax)
      subroutine zero3d(a,nx,ny,nz)
 
zr.f
        subroutine zr(z_2d_in
 
zs.f
        subroutine zs(precip_rate,temp_col_max,ni,nj,s_2d_out)
        function snow_to_rain_ratio(temp_col_max)
 
ztopsa.f
      Real Function ZtoPsa(Z)
 
machine_dependent.F
        function i4_to_byte(i4_in)
             Converts an integer to a byte (character) variable
        function byte_to_i4(b_in)
             Converts a byte (character) to an integer variable
            double precision function pi_180()
            end function pi_180
            real function rsind(val)
            end function rsind
            real function rasind(val)
            end function rasind
            real function rcosd(val)
            end function rcosd
            real function racosd(val)
            end function racosd
            real function rtand(val)
            end function rtand
            real function ratand(val)
            end function ratand
            real function ratan2d(val1,val2)
            end function ratan2d
            double precision function dsind(val)
            end function dsind
            double precision function dasind(val)
            end function dasind
            double precision function dcosd(val)
            end function dcosd
            double precision function dacosd(val)
            end function dacosd
            double precision function dtand(val)
            end function dtand
            double precision function datand(val)
            end function datand
            double precision function datan2d(val1,val2)
            end function datan2d
           The above functions operate with the USE_TRIGD compiler directive.
           This is normally set by configure via 'trigd.inc' and supplies degree 
           based trig functions if they are not intrinsic.
      subroutine open_append(lun,file,status,istat)
           Opens a file for appending
      real function transfer(in,out)
          Below are some Taiwan FGGE routines
           Below are dummy routines for other platforms
      subroutine read_fa(lun,filename                   ! I
      subroutine read_fa_nf ( lun, filename,                   ! I
 
util/bilinear_laps.f
        subroutine bilinear_laps(ri,rj,imax,jmax,array_2d,result)
             Interpolate 2-d array to find the field value at a fractional grid
             point.
        subroutine bilinear_interp_extrap(ri,rj,imax,jmax
             Interpolate 2-d array to find the field value at a fractional grid
             point. This one allows you to extrapolate very slightly outside the 
             grid.
 
util/cpt_liw.f
        subroutine cpt_liw(lifted,w_2d,imax,jmax,liw)
 
util/degfrom.f
        subroutine degfrom(xd,yd,deg_from)
 
util/filter_2dx.f
      subroutine filter_2dx(field,ix,iy,iz,smth)
 
util/get_static_field_interp.f
      SUBROUTINE get_static_field_interp(ctype,i4time,nx,ny,data
      END SUBROUTINE get_static_field_interp
 
util/helicity.f
        subroutine helicity_laps(uanl,vanl,ustorm,vstorm
             Calculate storm relative helicity over a 2-D grid    
 
util/interp2sfc.f
      subroutine interp_to_sfc(sfc_2d,field_3d,heights_3d,ni,nj,nk,
 
util/laps_slwc_revb.f
      Subroutine LAPS_SLWC_REVb(CB_PA,CB_K,GT_PA,GT_K,CT_K,
      FUNCTION VAPOR(TFP)
 
util/meanwind.f
        subroutine mean_wind_bunkers(uanl,vanl,topo,imax,jmax,kmax  ! I
        subroutine mean_wind(uanl,vanl,topo,imax,jmax,kmax
 
util/put_wind_2d.f
        subroutine put_wind_2d(i4time,DIRECTORY,EXT,var,units,
 
util/stats.f
      subroutine moment(data,n,
 
util/steer_grid.f
        subroutine steer_grid(i4time_latest,ni,nj,nk
        subroutine analyze_storm_motion(ni,nj,umean,vmean ! Input
      subroutine barnes_r5th(ni,nj,ncnt,max_obs
 
util/storm_cent_rt.f
        subroutine storm_cent_rt(ni,nj,nz,i4time_latest,
 
util/trilinear_laps.f
        subroutine trilinear_laps(ri,rj,rk,imax,jmax,kmax,array_3d
             Interpolate 3-d array to find the field value at a fractional grid
             point.
        subroutine trilinear_interp_extrap(ri,rj,rk,imax,jmax,kmax
             Interpolate 3-d array to find the field value at a fractional grid
             point. This one allows you to extrapolate very slightly outside the 
             grid.
 
util/windcnvrt.f
        subroutine windcnvrt(uwind,vwind,direction,speed)
 
util/windfields.f
        subroutine get_grid_spacing_array(lat,lon,imax,jmax,dx,dy)
c=====  Here are John's subroutines...(abandon hope, ye who enter)
	subroutine vortdiv(u,v,vort,div,imax,jmax,dx,dy)
	subroutine bounds(x,imax,jmax)
 
util/xytomet.f
        SUBROUTINE   XY_TO_MET_XM( X,
 
mthermo/alcl.f
	function alcl(t,td,p)
 
mthermo/ct.f
	function ct(wbar,pc,ps)
 
mthermo/dewpt.f
	function dewpt(ew)
 
mthermo/dpt.f
	function dpt(ew)
 
mthermo/dwpt.f
	function dwpt(t,rh)
 
mthermo/ept.f
	function ept(t,td,p)
 
mthermo/es.f
	function es(t)
 
mthermo/esat.f
	function esat(t)
 
mthermo/esgg.f
	function esgg(t)
 
mthermo/esice.f
	function esice(t)
 
mthermo/esilo.f
	function esilo(t)
 
mthermo/eslo.f
      function eslo(t)
      real esice ! function
      if (t.gt.-46.) then ! Lowe's function
      elseif (t.gt.-132.) then ! Pielke's tuned function (liquid data unknown)
 
mthermo/esrw.f
	function esrw(t)
 
mthermo/esw.f
	function esw(t)
 
mthermo/heatl.f
	function heatl(key,t)
 
mthermo/hum.f
	function humidity(t,td)
 
mthermo/o.f
	function o(t,p)
 
mthermo/oe.f
	function oe(t,td,p)
 
mthermo/os.f
	function os(t,p)
 
mthermo/ow.f
	function ow(t,td,p)
 
mthermo/pccl.f
	function pccl(pm,p,t,td,wbar,n)
 
mthermo/pcon.f
	function pcon(p,t,tc)
 
mthermo/powt.f
	function powt(t,p,td)
 
mthermo/precpw.f
	function precpw(td,p,n)
 
mthermo/ptlcl.f
	subroutine ptlcl(p,t,td,pc,tc)
 
mthermo/satlft.f
	function satlft(thw,p)
 
mthermo/ssh.f
	function ssh(p,t)
 
mthermo/tcon.f
	function tcon(t,d)
 
mthermo/tda.f
	function tda(o,p)
 
mthermo/tdew.f
      function tdew(p,sh)
 
mthermo/te.f
	function te(t,td,p)
 
mthermo/thm.f
	function thm(t,p)
 
mthermo/tlcl.f
	function tlcl(t,td)
 
mthermo/tlcl1.f
	function tlcl1(t,td)
 
mthermo/tmlaps.f
	function tmlaps(thetae,p)
 
mthermo/tmr.f
	function tmr(w,p)
 
mthermo/tsa.f
	function tsa(os,p)
 
mthermo/tv.f
	function tv(t,td,p)
 
mthermo/tw.f
	function tw(t,td,p)
 
mthermo/w.f
	function w(t,p)
 
mthermo/wmr.f
	function wmr(p,t)
 
mthermo/wobf.f
	function wobf(t)
 
mthermo/z.f
	function z(pt,p,t,td,n)
 
bgdata/bkgd_stn_interp.f
      subroutine bkgd_stn_interp(nstns,slat,slon,selev,stime
      subroutine bkgd_stn_interp_sub(
       subroutine read_bgdata(nx_bg,ny_bg
       end subroutine
       subroutine vinterp(nz_laps,nx,ny,
       end subroutine
       subroutine get_bkgd_mdl_info(bgmodel
       end subroutine
       subroutine init_hinterp(nx_bg,ny_bg,nx_laps,ny_laps,gproj,
       end subroutine
       subroutine hinterp_field(nx_bg,ny_bg,nx_laps,ny_laps,nz
       end subroutine
      subroutine tdcheck(nx_laps,ny_laps,sh_sfc,tp_sfc,
 
bgdata/bkgd_util.f
      subroutine rotate_lga_winds(ldir,bgmodel,cmodel,fullname
      subroutine rotate_background_uv(nx,ny,nz,lon,bgmodel,cmodel
      subroutine print_rotproj(gproj,c6_maproj,lon0,lat1,lat2
      subroutine thvpc2tq(thv,pc,p,t,q)
      subroutine tv2tq(tv,rh,p,t,q)
      subroutine reset_lapsparms_common(ldir,bgmodel,cmodel
 
bgdata/es_table.f
      subroutine es_ini
 
bgdata/get_acceptable_files.f
      subroutine get_acceptable_files(i4time_anal,bgpath,bgmodel,names
 
bgdata/get_attr_sbn.f
      subroutine get_attribute_sbn(cdfname,centralLat,centralLon,
 
bgdata/get_bkgd_files.f
      subroutine get_bkgd_files(i4time_now,bgpath,bgmodel,names
 
bgdata/get_bkgd_mdl_info-get_fua_center.f
      subroutine get_bkgd_mdl_info(bgmodel,cmodel,fullname
        subroutine get_eta48_dims(filename,NX,NY,NZ
        end subroutine
        subroutine get_ruc2_dims(filename,cmodel,NX,NY,NZ
        end subroutine
        subroutine get_attribute_sbn(cdfname,centralLat,centralLon,
        end subroutine
        subroutine get_sbn_dims(cdfname,cmodel
        end subroutine
        subroutine readavnpublicdims(fname,x,y,numIsoLevel,record,
        end subroutine
        subroutine read_lapsprd_attr(fullname,
        end subroutine
      subroutine get_fua_center(path,lat,lon,istat)
 
bgdata/get_bkgd_mdl_info.f
      subroutine get_bkgd_mdl_info(bgmodel,cmodel,fullname
        subroutine get_eta48_dims(filename,NX,NY,NZ
        end subroutine
        subroutine get_ruc2_dims(filename,cmodel,NX,NY,NZ
        end subroutine
        subroutine get_attribute_sbn(cdfname,centralLat,centralLon,
        end subroutine
        subroutine get_sbn_dims(cdfname,cmodel
        end subroutine
        subroutine readavnpublicdims(fname,x,y,numIsoLevel,record,
        end subroutine
        subroutine read_lapsprd_attr(fullname,
        end subroutine
 
bgdata/getdims_lapsprd.f
      subroutine getdims_lapsprd(fullname,x,y,z,istatus)
      subroutine read_lapsprd_attr(fullname,
 
bgdata/lapsio.f
      subroutine get_laps_lat_lon(dir,ext,nx,ny,lat,lon,istatus)
      subroutine get_laps_wind(dir,i4time,ext,nx,ny,nz,uw,vw,istatus)
      subroutine get_laps_2d_sfc(dir,i4time,ext,nx,ny,nfld,fldid
      subroutine get_laps_sfc_elev(dir,ext,nx,ny,sht,istatus)
      subroutine get_laps_3d_analysis_data(i4time,nx,ny,nz
 
bgdata/lga_driver.f
      subroutine lga_driver(nx_laps,ny_laps,nz_laps,luse_sfc_bkgd
      real      ssh2,                        !Function name
       subroutine read_bgdata(nx_bg,ny_bg
       end subroutine
       subroutine vinterp(nz_laps,nx,ny,
       end subroutine
       subroutine get_bkgd_mdl_info(bgmodel
       end subroutine
       subroutine init_hinterp(nx_bg,ny_bg,nx_laps,ny_laps,gproj,
       end subroutine
       subroutine hinterp_field(nx_bg,ny_bg,nx_laps,ny_laps,nz
       end subroutine
       subroutine filter_2dx(field,ix,iy,iz,smth)
       end subroutine
c... of subroutine sfcbkgd_sfc. This routine uses the 2m Td and sfc_press
      subroutine get_lga_source(nx,ny,nz,fname,af,source)
 
bgdata/lga_interp_subs.f
      subroutine vinterp(nz_laps,nx,ny,
         subroutine vinterp_sub(msngflag
         end subroutine
      subroutine vinterp_sub(msngflag,nx,ny,nz,nzbg
      subroutine time_interp(dir,ext,nx,ny,nz,ngrids,pr,
 
bgdata/lprep_eta_conusc.f
      subroutine lprep_eta_conusc(nx,ny,nz,pr,tp,rh
 
bgdata/lprep_ruc2_hold.f
      subroutine lprep_ruc2_hybrid(nx,ny,nz,ht,pr,sh,uw,vw,th
         print*,'This is where we have a subroutine to
 
bgdata/lprep_ruc2_pub.f
      subroutine lprep_ruc2_hybrid(nx,ny,nz,ht,pr,sh,uw,vw,th
 
bgdata/rdmodelindex.f
      subroutine readindexfile(cfname,nfldsmax,nlevsmax
 
bgdata/readFMIcdf.f
      subroutine get_bgdata_data
      subroutine read_FMI_netcdf(filename, numIsoLevel, record, x, y, 
 
bgdata/read_fuafsf.f
      subroutine read_fuafsf_cdf(fullname, x, y, z, 
      subroutine swap_array_k(a1,nx,ny,nz)
 
bgdata/read_mm5_grids.f
      subroutine read_mm5_grids_v2(cfilename,i4time_init,laps_cycle_time
      print*,'*** Subroutine Background '
      print*,'*** Subroutine Background '
      print*,'*** Subroutine Background '
      print*,'*** Subroutine Background '
      print*,'*** Subroutine Background '
 
bgdata/read_netcdf_field.f
      subroutine read_netcdf_real(nf_fid,fname,n1,f,start,count,istatus)
 
bgdata/read_ramsDUMP.f
       subroutine read_ramsDUMP(fname,nx,ny,nz,ht,uw,vw,ww,temp
 
bgdata/read_sbn_grids.f
      subroutine get_sbn_model_id(filename,cmodel,ivaltimes,ntbg
      subroutine get_sbn_dims(cdfname,cmodel
      subroutine get_nvaltimes(cdfname,nvaltimes,ivaltimes,istatus)
      subroutine read_sbn_grids(cdfname,af,cmodel,
        subroutine get_prbg(nf_fid,nlvls,cvar,cmodel
        end subroutine
        subroutine read_netcdf_real(nf_fid,fname,n1,f
        end subroutine
      subroutine get_prbg(nf_fid,nlvls,cvar,cmodel
 
bgdata/read_unidata_grids.f
      subroutine get_unidata_model_id(filename,cmodel,ivaltimes,ntbg
      subroutine get_unidata_dims(cdfname,cmodel
      subroutine get_nvaltimes_unidata(cdfname,nvaltimes,ivaltimes,
      subroutine read_unidata_iso(cdfname,af,cmodel,
        subroutine read_netcdf_real(nf_fid,fname,n1,f
        end subroutine
      subroutine get_unidata_grid(filename,cmodel,NX,NY
      subroutine read_unidata_ruc_hyb(cdfname,af,cmodel,
        subroutine read_netcdf_real(nf_fid,fname,n1,f
        end subroutine
 
bgdata/readavnpublic.f
      subroutine readavnpublicdims(fname,x,y,numIsoLevel,record,
      subroutine read_avn_netcdf(fname, numIsoLevel, record, x, y, 
 
bgdata/readbgdata.f
      subroutine read_bgdata(nx_bg,ny_bg,
         subroutine read_sbn_grids(cdfname,af,cmodel,
         end subroutine
         subroutine read_dgprep(bgmodel,cmodel,path,fname,af
         end subroutine
 
bgdata/readconusnws.f
      subroutine get_conus_dims(fname,nx,ny,nz)
      subroutine read_conus_nws(path,fname,af,nx,ny,nz
 
bgdata/readdgprep.f
      subroutine read_dgprep(bgmodel,cmodel,path,fname,af,nx,ny,nz
      subroutine read_avn(lun,nx,ny,nz,tp,uw,vw,ht,sh
      subroutine read_eta(lun,nx,ny,nz,tp,uw,vw,ht,sh
      subroutine qcmodel_sh(nx,ny,nz,sh)
      subroutine read_nf15km(mx,my,nz,full_name
 
bgdata/readeta48_pub.f
      subroutine get_eta48_dims(filename,NX,NY,NZ
      subroutine read_eta_conusc(fname, NX,NY,NZ, ht,p,t,uw,vw,
      subroutine swap_array(n1,n2,a1)
 
bgdata/readmm5.f
      SUBROUTINE READMM5(CDATE, SIGMA, SIGFULL, USIG, VSIG, TSIG, 
        SUBROUTINE SWAP2D (FLDIN, FLDOUT, IMAX, JMAX)
        END SUBROUTINE SWAP2D
        SUBROUTINE SWAP3D (FLDIN, FLDOUT, IMAX, JMAX, KDIM)
        END SUBROUTINE SWAP3D
      PRINT*,'*** SUBROUTINE: READMM5'
      PRINT*,'*** SUBROUTINE: READMM5'
      END SUBROUTINE READMM5
 
bgdata/readnamnh221_pub.f
      subroutine get_namnh221_dims(filename,NX,NY,NZ
      subroutine read_nam_nh221(fname, NX,NY,NZ, ht,p,t,uw,vw,
      subroutine swap_array(n1,n2,a1)
 
bgdata/readnogaps.f
      subroutine read_nogaps(lun,nx,ny,nz
 
bgdata/readruc2_pub.f
      subroutine get_ruc2_dims(filename,cmodel,NX,NY,NZ
      subroutine read_ruc2_hybb(filename, NX, NY, NZ, mmsp
 
bgdata/readruc60native.f
      subroutine read_ruc60_native(path,fname,af,nx,ny,nz,
 
bgdata/sfcbkgd.f
      SUBROUTINE SFCBKGD(bgmodel,t,q,height,tsfc,tdsfc,ter,p,
      subroutine compute_sfc_bgfields(bgm,nx,ny,nz,i,j,k,ter,height
 
bgdata/sfcbkgd_sfc.f
      SUBROUTINE SFCBKGD_SFC(bgmodel,t,q,height,heightsfc
      subroutine compute_sfc_bgfields_sfc(bgm,nx,ny,nz,i,j,k,ter,height
 
bgdata/tcbogus-28-Oct-04.f
      subroutine tcbogus(jx,ix,nz,ht,tp,rh_c,uw,vw,
      subroutine lc_param11(s,cone,xmin,ymin,dx,dy,
      subroutine hourcalc(year,month,day,hour,tothours)
      subroutine cen_posi(lat,lon,glon,glat,cen_I,cen_J,JX,IX)
      subroutine vor(u,v,dmf,xmf,ix,jx,kx,ds,vort)
      subroutine relax(chi,ff,rd,ix,jx,ds,level,istatus)
      subroutine fillit(f,ix,jx,kx,imx,jmx,ifirst,ilast,jfirst,jlast)
      subroutine balance(f,psi,ix,jx,ds,out)
      subroutine delta(psi,ix,jx,ds,out)
      subroutine crs2dot(crs,dot,ix,jx,iend,jend)
 
bgdata/tcbogus.f
      subroutine tcbogus(jx,ix,nz,ht,tp,rh_c,uw,vw,
      subroutine lc_param11(s,cone,xmin,ymin,dx,dy,
      subroutine hourcalc(year,month,day,hour,tothours)
      subroutine cen_posi(lat,lon,glon,glat,cen_I,cen_J,JX,IX)
      subroutine vor(u,v,dmf,xmf,ix,jx,kx,ds,vort)
      subroutine relax(chi,ff,rd,ix,jx,ds,level,istatus)
      subroutine fillit(f,ix,jx,kx,imx,jmx,ifirst,ilast,jfirst,jlast)
      subroutine balance(f,psi,ix,jx,ds,out)
      subroutine delta(psi,ix,jx,ds,out)
      subroutine crs2dot(crs,dot,ix,jx,iend,jend)
 
bgdata/writelgalgb.f
      subroutine write_lga(nx_laps,ny_laps,nz_laps,bgtime,bgvalid,
      subroutine write_lgb(nx_laps,ny_laps,bgtime,bgvalid,cmodel
 
temp/adjust_heights.f
      subroutine adjust_heights(temp_3d,heights_3d,ht_500_fg
 
temp/compare_temp.f
        subroutine compare_temp (
        subroutine comp_grid_tempobs(t_3d,ni,nj,nk
        subroutine get_temp_obstypes(obs_barnes,max_obs,ncnt_total
 
temp/insert_tobs.f
        subroutine insert_tobs(i4time               ! Input
        subroutine analyze_tobs(n_tsnd,ni,nj,nk                   ! I     
        subroutine barnes_univariate_shell(ni,nj,nk              ! Inputs
      subroutine get_temp_obstype(c_obstype,i_obstype,mode)
 
temp/interp_rass.f
        subroutine interp_laps_to_rass(ob_pr_ht_obs,ob_pr_t_obs,
 
temp/interp_tobs.f
        subroutine interp_tobs_to_laps(ob_pr_ht_obs,ob_pr_t_obs,        ! I
 
temp/puttmpanal.f
        subroutine put_temp_anal(i4time_needed
        subroutine write_temp_anal(i4time,imax,jmax,kmax,temp_3d
       subroutine get_temp_parms(l_read_raob_t,l_use_raob_t
 
temp/read_acars_t.f
        subroutine rd_acars_t(i4time,heights_3d,temp_bkg_3d         ! I
 
temp/read_sfc_t.f
        subroutine rd_sfc_t(i4time,heights_3d,temp_bkg_3d           ! I
 
temp/read_tsnd.f
        subroutine read_tsnd(i4time_sys,heights_3d,temp_bkg_3d,   ! Input
 
wind/get_fg_wind.f
        subroutine get_fg_wind_new(
        subroutine get_fg_var(
 
wind/get_wind_obs.f
        subroutine get_wind_3d_obs(
        subroutine remap_profiles(
 
wind/interp_prof.f
        subroutine interp_prof(ob_pr_ht_obs,ob_pr_u_obs,ob_pr_v_obs, ! I
 
wind/rdpoint.f
        subroutine rdpoint(i4time,heights_3d                           ! I
        subroutine read_laps_cdw_wind(lun,xlat,xlon,pres,dd,ff
       subroutine get_time_term(field_4d,NX_L,NY_L,NZ_L,NTMIN,NTMAX
 
wind/rdsfc.f
        subroutine rdsfc(i4time,heights_3d                              ! I
!				sfc_k function and add ri rj values.
 
wind/read_profiles.f
        subroutine read_profiles(i4time_sys,heights_3d,             ! I
 
wind/vertwind.f
        subroutine vert_wind(uanl,vanl                              ! I ! /O
 
wind/wind_post_process.f
        subroutine wind_post_process(i4time_sys
        subroutine write_wind_output(i4time_sys,EXT,var_3d
        subroutine put_laps_multi_3d_jacket(i4time_sys,EXT,var_3d
 
alloca.c
 
cio.c
 
fort2c_str.c
 
fsystem.c
 
getfile_linda.c
 
getfilenames_c.c
 
i4time_now_gg.c
 
nan.c
 
regex.c
 
rwl_v3.c
 
rwl_v3_exp.c
 
static_routines.c
 
time_now.c
 
unpkfgge_a.c
 
waiting_c.c
 
xmalloc.c