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 @ 313

Last change on this file since 313 was 247, checked in by opalod, 19 years ago

CL : Add CVS Header and CeCILL licence information

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 7.0 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 , LOCEAN-IPSL (2005)
20   !! $Header$
21   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
22   !!----------------------------------------------------------------------
23
24CONTAINS
25
26   SUBROUTINE tau( kt )
27      !!---------------------------------------------------------------------
28      !!                    ***  ROUTINE tau  ***
29      !!     
30      !! ** Purpose :   provide to the ocean the stress at each time step
31      !!
32      !! ** Method  :   Read the daily surface stress components in NetCDF
33      !!      file. They are given in the (i,j) referential
34      !!        The i-component is given at U-point (INTERP package)
35      !!        The j-component is given at V-point (INTERP package)
36      !!
37      !!    CAUTION: never mask the surface stress field !
38      !!
39      !! ** Action  :   update at each time-step the two components of the
40      !!      surface stress in both (i,j) and geographical referencial
41      !!
42      !! History :
43      !!   4.0  !  91-03  (G. Madec)  Original code
44      !!   6.0  !  92-07  (M. Imbard)
45      !!   8.1  !  00-08  (D. Ludicone) adapted to ERS-NCEP
46      !!   8.5  !  02-11  (G. Madec)  F90: Free form and module
47      !!        !  03-07  (C. Ethe, G. Madec)  daily generic forcing
48      !!----------------------------------------------------------------------
49      !! * Modules used
50      USE ioipsl       ! NetCDF library
51
52      !! * Arguments
53      INTEGER, INTENT( in  ) ::   kt   ! ocean time step
54
55      !! * Local declarations
56      INTEGER, PARAMETER ::   jpday = 365
57      INTEGER ::   &
58         itime,   &
59         iday, idy,   &
60         ipi, ipj, ipk
61      INTEGER  , DIMENSION(jpday)  ::   istep
62      REAL(wp) , DIMENSION(jpi,jpj)::  &
63         zlon  , &
64         zlat
65      REAL(wp) , DIMENSION(jpk)::  &
66         zlev
67      REAL(wp) ::   zsecond, zdate0
68      !!---------------------------------------------------------------------
69
70      ! -------------- !
71      ! Initialization !
72      ! -------------- !
73
74      itime = jpday
75      ipi   = jpiglo
76      ipj   = jpjglo
77      ipk   = jpk
78      idy   = 365
79      IF ( nleapy == 1 ) idy = 366
80
81
82      ! -------------------- !
83      ! First call kt=nit000 !
84      ! -------------------- !
85
86      IF( kt == nit000 ) THEN
87         IF(lwp) THEN
88            WRITE(numout,*) ' '
89            WRITE(numout,*) ' tau    : DAILY wind stress in NetCDF files'
90            WRITE(numout,*) ' ~~~~~~~'
91         ENDIF
92         ! title, dimensions and tests
93         
94         CALL flinopen( cl_taux, mig(1), nlci, mjg(1), nlcj,   &   ! taux on U-grid
95                        .FALSE., ipi   , ipj, ipk   ,        &
96                        zlon , zlat  , zlev   , itime,       &
97                        istep, zdate0, zsecond, numtau )
98         
99         IF( itime /= jpday .AND. itime /= jpday+1 ) THEN
100            IF(lwp) WRITE(numout,cform_err)
101            IF(lwp) WRITE(numout,*) '   problem with time coordinates in file ', cl_taux
102            IF(lwp) WRITE(numout,*) '   itime = ', itime,' jpday = ',jpday
103            nstop = nstop + 1
104         ENDIF
105         IF( ipi /= jpidta .OR. ipj /= jpjdta  ) THEN
106            IF(lwp) WRITE(numout,cform_err)
107            IF(lwp) WRITE(numout,*) '   problem with size read in file ', cl_taux
108            IF(lwp) WRITE(numout,*) '   ipi = ',ipi,' jpidta = ',jpidta
109            IF(lwp) WRITE(numout,*) '   ipj = ',ipj,' jpjdta = ',jpjdta
110            nstop = nstop + 1
111         ENDIF
112
113         CALL flinopen( cl_tauy, mig(1), nlci, mjg(1), nlcj,   &   ! tauy on V-grid
114                        .FALSE., ipi   , ipj, ipk   ,        &
115                        zlon , zlat  , zlev   , itime,       &
116                        istep, zdate0, zsecond, numtav )
117         
118         IF( itime /= jpday .AND. itime /= jpday+1 ) THEN
119            IF(lwp) WRITE(numout,cform_err)
120            IF(lwp) WRITE(numout,*) '   problem with time coordinates in file ', cl_tauy
121            IF(lwp) WRITE(numout,*) '   itime = ', itime,' jpday = ',jpday
122            nstop = nstop + 1
123         ENDIF
124         IF( ipi /= jpidta .OR. ipj /= jpjdta ) THEN
125            IF(lwp) WRITE(numout,cform_err)
126            IF(lwp) WRITE(numout,*) '   problem with size read in file ', cl_tauy
127            IF(lwp) WRITE(numout,*) '   ipi = ',ipi,' jpidta = ',jpidta
128            IF(lwp) WRITE(numout,*) '   ipj = ',ipj,' jpjdta = ',jpjdta
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.