[5725] | 1 | !**************************************************************************************** |
---|
| 2 | SUBROUTINE read_grid_mask (nlon,nlat,corners_ij_lus, & |
---|
| 3 | data_filename, w_unit, grid_name, & |
---|
| 4 | gridlon,gridlat, & |
---|
| 5 | gridclo,gridcla, & |
---|
| 6 | indice_mask) |
---|
| 7 | !************************************************************************************** |
---|
| 8 | ! |
---|
| 9 | USE netcdf |
---|
| 10 | IMPLICIT NONE |
---|
| 11 | ! |
---|
| 12 | INTEGER :: i,j,k,w_unit |
---|
| 13 | ! |
---|
| 14 | INTEGER :: il_file_id,il_grid_id,il_lon_id, & |
---|
| 15 | il_lat_id,il_clo_id,il_cla_id,il_srf_id,il_indice_id, & |
---|
| 16 | lon_dims,lat_dims,clo_dims,cla_dims,& |
---|
| 17 | imask_dims |
---|
| 18 | ! |
---|
| 19 | INTEGER, DIMENSION(NF90_MAX_VAR_DIMS) :: lon_dims_ids,lat_dims_ids,clo_dims_ids,& |
---|
| 20 | cla_dims_ids,imask_dims_ids,lon_dims_len,& |
---|
| 21 | lat_dims_len,clo_dims_len,cla_dims_len,& |
---|
| 22 | imask_dims_len |
---|
| 23 | ! |
---|
| 24 | INTEGER, INTENT(in) :: nlon,nlat,corners_ij_lus |
---|
| 25 | ! |
---|
| 26 | CHARACTER(len=30) :: data_filename |
---|
| 27 | CHARACTER(len=4) :: grid_name |
---|
| 28 | CHARACTER(len=8) :: cl_nam_lon, cl_nam_lat, cl_nam_msk, cl_nam_clo, cl_nam_cla |
---|
| 29 | ! |
---|
| 30 | INTEGER, DIMENSION(3) :: ila_dim |
---|
| 31 | INTEGER, DIMENSION(3) :: ila_corners,ila_what |
---|
| 32 | ! |
---|
| 33 | DOUBLE PRECISION, DIMENSION(nlon,nlat) :: gridlon,gridlat,gridsrf |
---|
| 34 | DOUBLE PRECISION, DIMENSION(nlon,nlat,corners_ij_lus) :: gridclo,gridcla |
---|
| 35 | INTEGER, DIMENSION(nlon,nlat) :: indice_mask |
---|
| 36 | ! |
---|
| 37 | ! |
---|
| 38 | ! Dimensions |
---|
| 39 | ! |
---|
| 40 | cl_nam_lon=grid_name//".lon" |
---|
| 41 | cl_nam_clo=grid_name//".clo" |
---|
| 42 | cl_nam_lat=grid_name//".lat" |
---|
| 43 | cl_nam_cla=grid_name//".cla" |
---|
| 44 | cl_nam_msk=grid_name//".msk" |
---|
| 45 | ! |
---|
| 46 | CALL hdlerr(NF90_OPEN(data_filename, NF90_NOWRITE, il_file_id), __LINE__ ) |
---|
| 47 | ! |
---|
| 48 | ! |
---|
| 49 | CALL hdlerr( NF90_INQ_VARID(il_file_id, cl_nam_lon, il_lon_id), __LINE__ ) |
---|
| 50 | CALL hdlerr( NF90_INQ_VARID(il_file_id, cl_nam_lat, il_lat_id), __LINE__ ) |
---|
| 51 | CALL hdlerr( NF90_INQ_VARID(il_file_id, cl_nam_clo, il_clo_id), __LINE__ ) |
---|
| 52 | CALL hdlerr( NF90_INQ_VARID(il_file_id, cl_nam_cla, il_cla_id), __LINE__ ) |
---|
| 53 | CALL hdlerr( NF90_INQ_VARID(il_file_id, cl_nam_msk, il_indice_id), __LINE__ ) |
---|
| 54 | ! |
---|
| 55 | ila_what(:)=1 |
---|
| 56 | ! |
---|
| 57 | ila_dim(1)=nlon |
---|
| 58 | ila_dim(2)=nlat |
---|
| 59 | ila_dim(3)=1 |
---|
| 60 | ! |
---|
| 61 | ila_corners(1)=nlon |
---|
| 62 | ila_corners(2)=nlat |
---|
| 63 | ila_corners(3)=corners_ij_lus |
---|
| 64 | ! |
---|
| 65 | ! Data |
---|
| 66 | ! |
---|
| 67 | CALL hdlerr( NF90_OPEN(data_filename, NF90_NOWRITE, il_file_id), __LINE__ ) |
---|
| 68 | ! |
---|
| 69 | CALL hdlerr( NF90_GET_VAR (il_file_id, il_lon_id, gridlon, & |
---|
| 70 | ila_what(1:2), ila_dim(1:2)), __LINE__ ) |
---|
| 71 | WRITE(w_unit,*) 'Global grid longitudes reading done' |
---|
| 72 | CALL FLUSH(w_unit) |
---|
| 73 | ! |
---|
| 74 | CALL hdlerr( NF90_GET_VAR (il_file_id, il_lat_id, gridlat, & |
---|
| 75 | ila_what(1:2), ila_dim(1:2)), __LINE__ ) |
---|
| 76 | WRITE(w_unit,*) 'Global grid latitudes reading done' |
---|
| 77 | CALL FLUSH(w_unit) |
---|
| 78 | ! |
---|
| 79 | CALL hdlerr( NF90_GET_VAR(il_file_id, il_clo_id, gridclo, & |
---|
| 80 | ila_what, ila_corners), __LINE__ ) |
---|
| 81 | WRITE(w_unit,*) 'Global grid longitude corners reading done' |
---|
| 82 | CALL FLUSH(w_unit) |
---|
| 83 | ! |
---|
| 84 | CALL hdlerr( NF90_GET_VAR (il_file_id, il_cla_id, gridcla, & |
---|
| 85 | ila_what, ila_corners), __LINE__ ) |
---|
| 86 | WRITE(w_unit,*) 'Global grid latitude corners reading done' |
---|
| 87 | CALL FLUSH(w_unit) |
---|
| 88 | ! |
---|
| 89 | CALL hdlerr( NF90_GET_VAR (il_file_id, il_indice_id, indice_mask, & |
---|
| 90 | ila_what, ila_dim), __LINE__ ) |
---|
| 91 | WRITE(w_unit,*) 'Global grid mask reading done' |
---|
| 92 | CALL FLUSH(w_unit) |
---|
| 93 | ! |
---|
| 94 | CALL hdlerr( NF90_CLOSE(il_file_id), __LINE__ ) |
---|
| 95 | ! |
---|
| 96 | WRITE(w_unit,*) 'End of routine read_grid' |
---|
| 97 | CALL FLUSH(w_unit) |
---|
| 98 | ! |
---|
| 99 | END SUBROUTINE read_grid_mask |
---|