New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
tau_forced_daily.h90 in trunk/NEMO/OPA_SRC/SBC – NEMO

source: trunk/NEMO/OPA_SRC/SBC/tau_forced_daily.h90 @ 60

Last change on this file since 60 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 7.1 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                   ***  tau_forced_daily.h90  ***
3   !!----------------------------------------------------------------------
4
5   !!----------------------------------------------------------------------
6   !!   tau     :   update the surface stress - daily fields in NetCDF file
7   !!----------------------------------------------------------------------
8   !! * local modules variables
9   INTEGER ::   &
10      numtau,         &  ! logical unit for the i-component of the wind data
11      numtav,         &  ! logical unit for the j-component of the wind data
12      ntau1, ntau2 ,  &  ! index of the first and second record used
13      ndaytau            ! new day for ers/ncep tau forcing
14
15   CHARACTER (len=34) ::   &      !!! * monthly climatology/interanual fields
16      cl_taux = 'taux.nc',  & ! generic name of the i-component monthly NetCDF file
17      cl_tauy = 'tauy.nc'     ! generic name of the j-component monthly NetCDF file
18   !!----------------------------------------------------------------------
19   !!   OPA 9.0 , LODYC-IPSL  (2003)
20   !!----------------------------------------------------------------------
21
22CONTAINS
23
24   SUBROUTINE tau( kt )
25      !!---------------------------------------------------------------------
26      !!                    ***  ROUTINE tau  ***
27      !!     
28      !! ** Purpose :   provide to the ocean the stress at each time step
29      !!
30      !! ** Method  :   Read the daily surface stress components in NetCDF
31      !!      file. They are given in the (i,j) referential
32      !!        The i-component is given at U-point (INTERP package)
33      !!        The j-component is given at V-point (INTERP package)
34      !!
35      !!    CAUTION: never mask the surface stress field !
36      !!
37      !! ** Action  :   update at each time-step the two components of the
38      !!      surface stress in both (i,j) and geographical referencial
39      !!
40      !! History :
41      !!   4.0  !  91-03  (G. Madec)  Original code
42      !!   6.0  !  92-07  (M. Imbard)
43      !!   8.1  !  00-08  (D. Ludicone) adapted to ERS-NCEP
44      !!   8.5  !  02-11  (G. Madec)  F90: Free form and module
45      !!        !  03-07  (C. Ethe, G. Madec)  daily generic forcing
46      !!----------------------------------------------------------------------
47      !! * Modules used
48      USE ioipsl       ! NetCDF library
49
50      !! * Arguments
51      INTEGER, INTENT( in  ) ::   kt   ! ocean time step
52
53      !! * Local declarations
54      INTEGER, PARAMETER ::   jpday = 365
55      INTEGER ::   &
56         itime,   &
57         iday, idy,   &
58         ipi, ipj, ipk
59      INTEGER  , DIMENSION(jpday)  ::   istep
60      REAL(wp) , DIMENSION(jpi,jpj)::  &
61         zlon  , &
62         zlat
63      REAL(wp) , DIMENSION(jpk)::  &
64         zlev
65      REAL(wp) ::   zsecond, zdate0
66      !!---------------------------------------------------------------------
67
68      ! -------------- !
69      ! Initialization !
70      ! -------------- !
71
72      itime = jpday
73      ipi   = jpiglo
74      ipj   = jpjglo
75      ipk   = jpk
76      idy   = 365
77      IF ( nleapy == 1 ) idy = 366
78
79
80      ! -------------------- !
81      ! First call kt=nit000 !
82      ! -------------------- !
83
84      IF( kt == nit000 ) THEN
85         IF(lwp) THEN
86            WRITE(numout,*) ' '
87            WRITE(numout,*) ' tau    : DAILY wind stress in NetCDF files'
88            WRITE(numout,*) ' ~~~~~~~'
89         ENDIF
90         ! title, dimensions and tests
91         
92         CALL flinopen( cl_taux, mig(1), nlci, mjg(1), nlcj,   &   ! taux on U-grid
93                        .FALSE., ipi   , ipj, ipk   ,        &
94                        zlon , zlat  , zlev   , itime,       &
95                        istep, zdate0, zsecond, numtau )
96         
97         IF( itime /= jpday .AND. itime /= jpday+1 ) THEN
98            IF(lwp) WRITE(numout,cform_err)
99            IF(lwp) WRITE(numout,*) '   problem with time coordinates in file ', cl_taux
100            IF(lwp) WRITE(numout,*) '   itime = ', itime,' jpday = ',jpday
101            nstop = nstop + 1
102         ENDIF
103         IF( ipi /= jpidta .AND. ipj /= jpjdta .AND. ipk /= 1 ) THEN
104            IF(lwp) WRITE(numout,cform_err)
105            IF(lwp) WRITE(numout,*) '   problem with size read in file ', cl_taux
106            IF(lwp) WRITE(numout,*) '   ipi = ',ipi,' jpidta = ',jpidta
107            IF(lwp) WRITE(numout,*) '   ipj = ',ipj,' jpjdta = ',jpjdta
108            IF(lwp) WRITE(numout,*) '   ipk = ',ipk,' must be 1'
109            nstop = nstop + 1
110         ENDIF
111
112         CALL flinopen( cl_tauy, mig(1), nlci, mjg(1), nlcj,   &   ! tauy on V-grid
113                        .FALSE., ipi   , ipj, ipk   ,        &
114                        zlon , zlat  , zlev   , itime,       &
115                        istep, zdate0, zsecond, numtav )
116         
117         IF( itime /= jpday .AND. itime /= jpday+1 ) THEN
118            IF(lwp) WRITE(numout,cform_err)
119            IF(lwp) WRITE(numout,*) '   problem with time coordinates in file ', cl_tauy
120            IF(lwp) WRITE(numout,*) '   itime = ', itime,' jpday = ',jpday
121            nstop = nstop + 1
122         ENDIF
123         IF( ipi /= jpidta .AND. ipj /= jpjdta .AND. ipk /= 1 ) THEN
124            IF(lwp) WRITE(numout,cform_err)
125            IF(lwp) WRITE(numout,*) '   problem with size read in file ', cl_tauy
126            IF(lwp) WRITE(numout,*) '   ipi = ',ipi,' jpidta = ',jpidta
127            IF(lwp) WRITE(numout,*) '   ipj = ',ipj,' jpjdta = ',jpjdta
128            IF(lwp) WRITE(numout,*) '   ipk = ',ipk,' must be 1'
129            nstop = nstop + 1
130         ENDIF
131      ENDIF
132
133      ! ----------------- !
134      ! Read daily file   !
135      ! ----------------- !
136
137      IF ( ndaytau /= nday ) THEN
138           
139         ndaytau = nday
140         iday  = nday_year
141           
142         ! Read daily wind stress data
143         CALL flinget( numtau,'taux',                 &   ! taux: i-component at U-pt
144                       jpidta,jpjdta,1,jpday,iday,    &
145                       iday,mig(1),nlci,mjg(1),nlcj,taux(1:nlci,1:nlcj) )
146         CALL flinget( numtav,'tauy',                 &   ! tauy: j-component at V-pt
147                       jpidta,jpjdta,1,jpday,iday,    &
148                       iday,mig(1),nlci,mjg(1),nlcj,tauy(1:nlci,1:nlcj) )
149           
150         IF (lwp .AND. nitend-nit000 <= 100 ) THEN
151            WRITE(numout,*)
152            WRITE(numout,*) ' read daily wind stress ok'
153            WRITE(numout,*)
154            WRITE(numout,*) ' day: ', ndastp , '  taux: 1 multiply by ', 1.
155            CALL prihre( taux, jpi, jpj, 1, jpi, 20, 1, jpj, 10, 1., numout )
156            WRITE(numout,*)
157            WRITE(numout,*) ' day: ', ndastp , '  tauy: 1 multiply by ', 1.
158            CALL prihre( tauy, jpi, jpj, 1, jpi, 20, 1, jpj, 10, 1., numout )
159            WRITE(numout,*) ' '
160         ENDIF
161           
162         CALL FLUSH(numout)
163      ENDIF
164         
165      ! Save components in geographical ref on U grid
166      tauxg(:,:) = taux(:,:)
167      tauyg(:,:) = tauy(:,:)
168         
169      ! ------------------- !
170      ! Last call kt=nitend !
171      ! ------------------- !
172
173      ! Closing of the 2 files
174      IF( kt == nitend ) THEN
175          CALL flinclo( numtau )
176          CALL flinclo( numtav )
177      ENDIF
178         
179   END SUBROUTINE tau
Note: See TracBrowser for help on using the repository browser.