1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- module m_read_CLS_SST_grid
- ! Reads the CLS SST NetCDF dimensions
- contains
- subroutine read_CLS_SST_grid(filename,gr)
- !use mod_dimensions
- use mod_grid
- use netcdf
- use m_nf90_err
- !use nfw_mod
- implicit none
- character(len=80), intent(in) :: filename
- type(grid), intent(out) :: gr
- !dimension ids
- integer :: NbLatitudes_ID, NbLongitudes_ID, LatLon_ID
- ! Array dimensions
- integer :: LatLon, NbLatitudes, NbLongitudes
- real, allocatable :: latlon0(:), dlatlon(:)
- !variables ids
- integer :: vLatLonMin_ID, vLatLonStep_ID
- integer :: ncid
- gr = default_grid
- ! Open file
- !filename='sst_topaz_19510.nc'
- call nf90_err(NF90_OPEN(trim(filename),NF90_NOCLOBBER,ncid))
- !call nfw_open(trim(filename), nf_nowrite, ncid)
- ! Get dimension id in netcdf file ...
- call nf90_err(nf90_Inq_Dimid(ncid,'LatLon',LatLon_ID))
- call nf90_err(nf90_Inq_Dimid(ncid,'NbLatitudes',NbLatitudes_ID))
- call nf90_err(nf90_Inq_Dimid(ncid,'NbLongitudes',NbLongitudes_ID))
- ! Get dimension length from id
- call nf90_err(nf90_Inquire_Dimension(ncid,LatLon_ID,len=LatLon))
- call nf90_err(nf90_Inquire_Dimension(ncid,NbLatitudes_ID,len=NbLatitudes))
- call nf90_err(nf90_Inquire_Dimension(ncid,NbLongitudes_ID,len=NbLongitudes))
- ! call nf90_err(nf90_Inquire_Dimension(ncid,GridDepth_ID,len=GridDepth))
- print*, 'Dimensions:', NbLatitudes, NbLongitudes, LatLon
- allocate(latlon0(LatLon)) ! Grid origin coordinates
- allocate(dlatlon(LatLon)) ! dx and dy
- ! Variable ids in netcdf file
- call nf90_err(nf90_inq_varid(ncid,'LatLonMin' ,vLatLonMin_ID),'LatLonMin')
- call nf90_err(nf90_inq_varid(ncid,'LatLonStep' ,vLatLonStep_ID),'LatLonStep')
- ! Variables in NetCDF file
- call nf90_err(nf90_get_var(ncid,vLatLonMin_ID ,latlon0))
- print *, 'Grid Origin ', latlon0
- call nf90_err(nf90_get_var(ncid,vLatLonStep_ID ,dlatlon))
- print *, 'Grid Size ', dlatlon
- gr%nx=NbLatitudes
- gr%ny=NbLongitudes
- gr%x0= latlon0(1)
- gr%y0= latlon0(2)
- ! gr%dx= 0.179
- gr%dx= dlatlon(1)
- gr%dy= dlatlon(2)
- gr%reg = .true.
- gr%order = 2
- gr%ux = 'deg'
- gr%uy = 'deg'
- gr%set = .true.
- deallocate(latlon0,dlatlon)
- end subroutine read_CLS_SST_grid
- end module m_read_CLS_SST_grid
|