<p><b>ringler@lanl.gov</b> 2012-05-02 11:04:59 -0600 (Wed, 02 May 2012)</p><p><br>
added new module that reads monthly forcing<br>
</p><hr noshade><pre><font color="gray">Added: branches/ocean_projects/basin/src/module_read_monthly.F
===================================================================
--- branches/ocean_projects/basin/src/module_read_monthly.F                                (rev 0)
+++ branches/ocean_projects/basin/src/module_read_monthly.F        2012-05-02 17:04:59 UTC (rev 1858)
@@ -0,0 +1,154 @@
+module read_MONTHLY

+   private
+
+   public :: read_MONTHLY_init, read_MONTHLY_fields, read_MONTHLY_finalize
+
+   integer :: rd_ncid, rd_ncids, rd_ncidu
+   integer :: rdDimIDt_lon
+   integer :: rdDimIDt_lat
+   integer :: rdDimIDdepth_t
+   integer :: rdVarIDt_lon
+   integer :: rdVarIDt_lat
+   integer :: rdVarIDdepth_t
+   integer :: rdVarIDTEMP
+   integer :: rdVarIDSALT
+   integer :: rdVarIDTAUX
+   integer :: rdVarIDTAUY

+   integer :: rdLocalt_lon
+   integer :: rdLocalt_lat
+   integer :: rdLocaldepth_t

+   contains

+   subroutine read_MONTHLY_init(nx, ny, nz, fileNameT, fileNameS, fileNameU)

+      implicit none

+      include 'netcdf.inc'

+      character(len=80), intent(in) :: fileNameT, fileNameS, fileNameU
+      integer, intent(out) :: nx, ny, nz

+      integer :: nferr, nferrs, nferru

+      nferr = nf_open(fileNameT, NF_SHARE, rd_ncid)
+      write(6,*) ' nferr ', nferr, rd_ncid

+      write(6,*) fileNameT
+      write(6,*) fileNameS
+      write(6,*) fileNameU
+
+      !
+      ! Get IDs for variable dimensions
+      !
+      nferr = nf_inq_dimid(rd_ncid, 't_lon', rdDimIDt_lon)
+      write(6,*) ' nferr ', nferr, rdDimIDt_lon
+      nferr = nf_inq_dimlen(rd_ncid, rdDimIDt_lon, rdLocalt_lon)
+      write(6,*) ' nferr ', nferr, rdLocalt_lon
+      nferr = nf_inq_dimid(rd_ncid, 't_lat', rdDimIDt_lat)
+      write(6,*) ' nferr ', nferr, rdDimIDt_lat
+      nferr = nf_inq_dimlen(rd_ncid, rdDimIDt_lat, rdLocalt_lat)
+      write(6,*) ' nferr ', nferr, rdLocalt_lat
+      nferr = nf_inq_dimid(rd_ncid, 'depth_t', rdDimIDdepth_t)
+      write(6,*) ' nferr ', nferr, rdDimIDdepth_t
+      nferr = nf_inq_dimlen(rd_ncid, rdDimIDdepth_t, rdLocaldepth_t)
+      write(6,*) ' nferr ', nferr, rdLocaldepth_t
+
+      nx = rdLocalt_lon
+      ny = rdLocalt_lat
+      nz = rdLocaldepth_t
+
+      write(6,*) nx, ny, nz

+      !
+      ! Get IDs for variables
+      !
+      nferr = nf_inq_varid(rd_ncid, 't_lon', rdVarIDt_lon)
+      write(6,*) ' nferr long ', nferr, rdVarIDt_lon
+      nferr = nf_inq_varid(rd_ncid, 't_lat', rdVarIDt_lat)
+      write(6,*) ' nferr lat ', nferr, rdVarIDt_lat
+      nferr = nf_inq_varid(rd_ncid, 'depth_t', rdVarIDdepth_t)
+      write(6,*) ' nferr depth ', nferr, rdVarIDdepth_t
+      nferr = nf_inq_varid(rd_ncid, 'TEMP', rdVarIDTEMP)
+      write(6,*) ' nferr TEMP ', nferr, rdVarIDTEMP
+
+      nferrs = nf_open(fileNameS, NF_SHARE, rd_ncids)
+      nferrs = nf_inq_varid(rd_ncids, 'SALT', rdVarIDSALT)
+      write(6,*) ' nferrs SALT ', nferrs, rdVarIDSALT
+
+      nferru = nf_open(fileNameU, NF_SHARE, rd_ncidu)
+      nferru = nf_inq_varid(rd_ncidu, 'TAUX', rdVarIDTAUX)
+      nferru = nf_inq_varid(rd_ncidu, 'TAUY', rdVarIDTAUY)
+      write(6,*) ' nferru ', nferru, rdVarIDTAUX, rdVarIDTAUY

+   end subroutine read_MONTHLY_init

+   subroutine read_MONTHLY_fields(TEMP, SALT, TAUX, TAUY)

+      implicit none

+      include 'netcdf.inc'

+      real (kind=4), dimension(:,:), intent(out) :: TEMP, SALT
+      real (kind=4), dimension(:,:), intent(out) :: TAUX, TAUY
+
+      integer, dimension(1) :: start1, count1
+      integer, dimension(2) :: start2, count2
+      integer, dimension(3) :: start3, count3
+      integer, dimension(4) :: start4, count4
+
+      integer :: nferr, nferrs, nferru
+
+      start2(1) = 1
+      start2(2) = 1
+      count2(1) = rdLocalt_lon
+      count2(2) = rdLocalt_lat
+      nferr = nf_get_vara_real(rd_ncid, rdVarIDTEMP, start2, count2, TEMP)
+      write(6,*) ' nferr ', nferr, rd_ncid, rdVarIDTEMP
+      write(6,*) ' temperature' , minval(TEMP), maxval(TEMP)
+
+      start2(1) = 1
+      start2(2) = 1
+      count2(1) = rdLocalt_lon
+      count2(2) = rdLocalt_lat
+      nferrs = nf_get_vara_real(rd_ncids, rdVarIDSALT, start2, count2, SALT)
+      write(6,*) ' nferrs ', nferrs, rd_ncids, rdVarIDSALT
+      write(6,*) ' salinity' , minval(SALT), maxval(SALT)
+
+      start2(1) = 1
+      start2(2) = 1
+      count2(1) = rdLocalt_lon
+      count2(2) = rdLocalt_lat
+      nferru = nf_get_vara_real(rd_ncidu, rdVarIDTAUX, start2, count2, TAUX)
+      nferru = nf_get_vara_real(rd_ncidu, rdVarIDTAUY, start2, count2, TAUY)
+      write(6,*) ' nferru ', nferru, rd_ncidu, rdVarIDTAUX, rdVarIDTAUY
+      write(6,*) ' TAUX' , minval(TAUX), maxval(TAUX)
+      write(6,*) ' TAUY' , minval(TAUY), maxval(TAUY)
+
+
+   end subroutine read_MONTHLY_fields


+   subroutine read_MONTHLY_finalize()

+      implicit none

+      include 'netcdf.inc'

+      integer :: nferr, nferrs, nferru

+      nferr = nf_close(rd_ncid)
+      write(6,*) ' nferr ', nferr
+
+      nferrs = nf_close(rd_ncids)
+      write(6,*) ' nferrs ', nferrs
+
+      nferru = nf_close(rd_ncidu)
+      write(6,*) ' nferru ', nferru
+
+
+   end subroutine read_MONTHLY_finalize

+end module read_MONTHLY

</font>
</pre>