source: CONFIG_DEVT/IPSLCM6.5_work_ENSEMBLES/oasis3-mct/examples/test_interpolation/create_grids_masks_with_F90/read_grid_mask.F90 @ 5725

Last change on this file since 5725 was 5725, checked in by aclsce, 3 years ago

Added new oasis3-MCT version to be used to handle ensembles simulations with XIOS.

File size: 3.6 KB
Line 
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  !
99END SUBROUTINE read_grid_mask
Note: See TracBrowser for help on using the repository browser.