Go to the documentation of this file.
68 integer (SCRIP_i4),
save ::
74 integer (SCRIP_i4),
dimension(:),
allocatable,
save ::
77 character(SCRIP_charLength),
save ::
80 character (SCRIP_charLength),
save ::
93 logical (SCRIP_logical),
dimension(:),
allocatable,
target,
save ::
99 integer (SCRIP_i4),
dimension(:),
allocatable,
target,
save ::
103 real (
scrip_r8),
dimension(:),
allocatable,
target,
save ::
120 real (
scrip_r8),
dimension(:,:),
allocatable,
target,
save ::
126 logical (SCRIP_logical),
save ::
131 real (
scrip_r8),
dimension(:,:),
allocatable,
target,
save ::
135 integer (SCRIP_i4),
save ::
149 character (SCRIP_charLength),
save ::
152 integer (SCRIP_i4),
save ::
155 integer (SCRIP_i4),
dimension(:,:),
allocatable,
save ::
159 real(
scrip_r8),
dimension(:,:),
allocatable,
save ::
178 integer (SCRIP_i4),
save ::
187 subroutine grid_init(errorCode,l_master,l_test)
202 logical(SCRIP_Logical),
intent(in) :: l_master
204 logical(SCRIP_Logical),
intent(in) :: l_test
213 integer (SCRIP_i4),
intent(out) ::
222 integer (SCRIP_i4) ::
227 & n_add, e_add, ne_add,
228 & nx, ny, ncorners_at_pole
230 integer (SCRIP_i4) ::
231 & zero_crossing, pi_crossing,
232 & grid1_add, grid2_add,
236 & beglon, beglat, endlon, endlat
238 logical (SCRIP_logical) ::
247 real (SCRIP_r8),
dimension(4) ::
250 character (9),
parameter ::
251 & rtnName =
'grid_init'
253 if(l_master.and.l_test)
write(
scrip_stdout,*)
'subroutine grid_init'
323 print *,
'unknown units supplied for grid1 center lat/lon: '
324 print *,
'proceeding assuming radians'
340 print *,
'unknown units supplied for grid1 corner lat/lon: '
341 print *,
'proceeding assuming radians'
383 print *,
'unknown units supplied for grid2 center lat/lon: '
384 print *,
'proceeding assuming radians'
400 print *,
'no units supplied for grid2 corner lat/lon: '
401 print *,
'proceeding assuming radians'
502 e_add = (j - 1)*nx + ip1
515 n_add = (jp1 - 1)*nx + i
522 n_add = (jp1 - 1)*nx + i
523 e_add = (j - 1)*nx + ip1
524 ne_add = (jp1 - 1)*nx + ip1
560 e_add = (j - 1)*nx + ip1
573 n_add = (jp1 - 1)*nx + i
580 n_add = (jp1 - 1)*nx + i
581 e_add = (j - 1)*nx + ip1
582 ne_add = (jp1 - 1)*nx + ip1
640 if (abs(abs(endlat)-
pih) .lt. 1e-5)
then
658 if (abs(beglon-endlon) .gt.
pi)
then
661 if ((beglon .lt.
pi .and. endlon .ge.
pi) .or.
662 & (endlon .lt.
pi .and. beglon .ge.
pi))
then
670 if (zero_crossing .eq. 1 .and. pi_crossing .eq. 1)
then
701 if (abs(abs(endlat)-
pih) .lt. 1e-5)
then
718 if (abs(beglon-endlon) >
pi)
then
721 if ((beglon .lt.
pi .and. endlon .ge.
pi) .or.
722 & (endlon .lt.
pi .and. beglon .ge.
pi))
then
730 if (zero_crossing .eq. 1 .and. pi_crossing .eq. 1)
then
758 if (abs(abs(beglat)-
pih) .le. 1.e-5)
759 & ncorners_at_pole = ncorners_at_pole + 1
762 if (ncorners_at_pole .eq. 1)
773 if (abs(abs(beglat)-
pih) .le. 1.e-5)
774 & ncorners_at_pole = ncorners_at_pole + 1
777 if (ncorners_at_pole .eq. 1)
782 if(l_master)print *,
' '
783 if(l_master)print *,
'Grid 1 size',
grid1_size
784 if(l_master)print *,
'Grid 2 size',
grid2_size
829 &
'Using latitude bins to restrict search.'
871 &
'Using lat/lon boxes to restrict search.'
924 stop
'unknown search restriction method'
938 &
'error computing grid1 area'))
return
946 &
'error computing grid2 area'))
return
971 real (SCRIP_r8),
dimension(:),
intent(out) ::
974 integer (SCRIP_i4),
intent(out) ::
979 real (SCRIP_r8),
dimension(:,:),
intent(in) ::
991 integer (SCRIP_i4) ::
1009 numcells =
size(cornerlat, dim=2)
1010 numcorners =
size(cornerlat, dim=1)
1020 area(ncell) = 0.0_scrip_r8
1022 do ncorner=1,numcorners
1023 nextcorner = mod(ncorner,numcorners) + 1
1026 dphi = cornerlon( ncorner,ncell) -
1027 & cornerlon(nextcorner,ncell)
1030 else if (dphi < -
pi)
then
1033 dphi = 0.5_scrip_r8*dphi
1035 area(ncell) = area(ncell) +
1036 & dphi*(sin(cornerlat( ncorner,ncell)) +
1037 & sin(cornerlat(nextcorner,ncell)))
real(scrip_r8), dimension(:), allocatable, target, save grid2_centroid_lat
integer(scrip_i4), save grid1_corners
logical(scrip_logical), dimension(:), allocatable, target, save grid1_mask
real(scrip_r8), dimension(:), allocatable, target, save grid1_centroid_lat
integer(scrip_i4), save grid1_spole_cell
character(scrip_charlength), save grid2_units
logical(scrip_logical), save luse_grid2_area
real(scrip_r8), dimension(:), allocatable, target, save grid2_centroid_lon
integer(scrip_i4), save num_srch_bins
integer(scrip_i4), save grid2_rank
logical(scrip_logical), dimension(:), allocatable, target, save grid2_mask
real(scrip_r8), dimension(:), allocatable, target, save grid2_center_lat
real(kind=scrip_r8), parameter pi2
real(scrip_r8), dimension(:,:), allocatable, save bin_lats
real(scrip_r8), parameter deg2rad
integer(scrip_i4), save grid1_rank
real(scrip_r8), dimension(:), allocatable, target, save grid1_area
real(scrip_r8), save north_thresh
integer(scrip_i4), save grid1_npole_cell
logical(scrip_logical), save luse_grid_centers
subroutine scrip_gridcomputearea(area, cornerLat, cornerLon, errorCode)
logical(scrip_logical), dimension(:), allocatable, target, save special_polar_cell2
character(scrip_charlength), save restrict_type
integer(scrip_i4), save grid2_corners
real(scrip_r8), dimension(:), allocatable, target, save grid1_area_in
real(kind=scrip_r8), parameter zero
integer, parameter, public scrip_r8
integer(scrip_i4), dimension(:), allocatable, target, save grid2_imask
real(scrip_r8), dimension(:), allocatable, target, save grid1_centroid_lon
real(scrip_r8), dimension(:,:), allocatable, target, save grid1_bound_box
real(scrip_r8), dimension(:,:), allocatable, save bin_lons
real(scrip_r8), dimension(:,:), allocatable, target, save grid2_corner_lat
integer(scrip_i4), dimension(:), allocatable, save grid1_dims
logical(scrip_logical), save luse_grid1_area
real(kind=scrip_r8), parameter pih
real(scrip_r8), dimension(:), allocatable, target, save grid1_center_lon
integer(scrip_i4), save grid2_npole_cell
real(scrip_r8), dimension(:), allocatable, target, save grid2_area
integer(scrip_i4), parameter, public scrip_success
real(scrip_r8), dimension(:,:), allocatable, target, save grid1_corner_lat
integer(scrip_i4), save grid2_size
character(scrip_charlength), save grid1_name
integer(scrip_i4), dimension(:,:), allocatable, save bin_addr2
character(scrip_charlength), save grid2_name
subroutine grid_init(errorCode, l_master, l_test)
real(scrip_r8), dimension(:), allocatable, target, save grid2_area_in
integer(scrip_i4), dimension(:), allocatable, save grid2_dims
real(scrip_r8), dimension(:), allocatable, target, save grid1_center_lat
real(scrip_r8), dimension(:,:), allocatable, target, save grid1_corner_lon
integer(scrip_i4), save npseg
real(scrip_r8), save south_thresh
integer(scrip_i4), save grid1_size
real(scrip_r8), dimension(:,:), allocatable, target, save grid2_bound_box
real(scrip_r8), dimension(:,:), allocatable, target, save grid2_corner_lon
real(scrip_r8), dimension(:), allocatable, target, save grid1_frac
integer(scrip_i4), dimension(:), allocatable, target, save grid1_imask
character(scrip_charlength), save grid1_units
integer(scrip_i4), save grid2_spole_cell
real(kind=scrip_r8), parameter pi
integer(scrip_i4), parameter, public scrip_stdout
logical(scrip_logical), dimension(:), allocatable, target, save special_polar_cell1
real(scrip_r8), dimension(:), allocatable, target, save grid2_frac
logical(scrip_logical) function, public scrip_errorcheck(errorCode, rtnName, errorMsg)
integer(scrip_i4), dimension(:,:), allocatable, save bin_addr1
real(scrip_r8), dimension(:), allocatable, target, save grid2_center_lon