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.
dtasst.F90 in trunk/NEMO/OPA_SRC/DTA – NEMO

source: trunk/NEMO/OPA_SRC/DTA/dtasst.F90 @ 719

Last change on this file since 719 was 719, checked in by ctlod, 17 years ago

get back to the nemo_v2_3 version for trunk

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.7 KB
Line 
1MODULE dtasst
2   !!======================================================================
3   !!                       ***  MODULE  dtasst  ***
4   !! Data : Sea Surface Temperature (SST)
5   
6   !!      BUG initialisation  nyearsst !!!!!!bug
7   
8   !!======================================================================
9   
10   !!----------------------------------------------------------------------
11   !!   dta_sst      : Reynolds sst data
12   !!----------------------------------------------------------------------
13   !! * Modules used
14   USE oce             ! ocean dynamics and tracers
15   USE dom_oce         ! ocean space and time domain
16   USE in_out_manager  ! I/O manager
17   USE ocfzpt          ! ???
18   USE daymod          ! calendar
19
20   IMPLICIT NONE
21   PRIVATE
22
23   !! * Shared routine
24   PUBLIC dta_sst
25
26   !! * Shared module variables
27#if defined key_dtasst
28   LOGICAL , PUBLIC, PARAMETER ::   lk_dtasst = .TRUE.   !: sst data flag
29   INTEGER ::   &
30        numsst ,      &              !: logical unit for surface temperature data
31        ndaysst                      !: new day for Reynolds sst
32   CHARACTER (len=34) :: clname      !: filename for daily SST
33#else
34   LOGICAL , PUBLIC, PARAMETER ::   lk_dtasst = .FALSE.  !: sst data flag
35#endif
36   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !:
37      sst             !: surface temperature
38   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,2) ::   &  !:
39      rclice          !: climatological ice index (0/1) (2 months)
40   !!----------------------------------------------------------------------
41   !!   OPA 9.0 , LOCEAN-IPSL (2005)
42   !! $Header$
43   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
44   !!----------------------------------------------------------------------
45
46CONTAINS
47
48#if defined key_dtasst
49   !!----------------------------------------------------------------------
50   !!   'key_dtasst'                                               SST data
51   !!----------------------------------------------------------------------
52
53   SUBROUTINE dta_sst( kt )
54      !!---------------------------------------------------------------------
55      !!                  ***  ROUTINE dta_sst  ***
56      !!                   
57      !! ** Purpose :   Read Reynolds weekly mean sea surface temperature
58      !!      data and update it at each time step.
59      !!
60      !! ** Method  : - Read a specific REYNOLDS daily sst in Celcius.
61      !!              -  Compute a climatological ice cover rclice (0 or 1)
62      !!
63      !! ** Action  : - sst (Celcius)
64      !!              - rclice, ice/ocean mask (0 or 1)
65      !!
66      !! History :
67      !!        !  90-03  (O. Marti and Ph Dandin)  Original code
68      !!        !  92-07  (M. Imbard)
69      !!        !  96-11  (E. Guilyardi)  Daily AGCM input files
70      !!        !  00-04  (M. Imbard)  NetCDF FORMAT
71      !!        !  00-10  (J.-P. Boulanger)  passage ORCA a TDH
72      !!        !  01-10  (A. Lazar)  Reynolds default
73      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module
74      !!        !  02-11  (C. Levy)  MPP/MPI NetCDF read
75      !!----------------------------------------------------------------------
76      !! * Modules used
77      USE iom
78     
79      !! * Arguments
80      INTEGER ::   kt
81
82      !! * Local save
83
84      !! * Local declarations
85      INTEGER ::   ji, jj
86      !!----------------------------------------------------------------------
87
88      ! -------------------- !
89      ! First call kt=nit000 !
90      ! -------------------- !
91
92      IF( kt == nit000 ) THEN
93
94         ndaysst = 0   ! initializations
95         IF(lwp) WRITE(numout,*) 'dta_sst : DAILY sea surface temperature data'
96         CALL iom_open ( 'sst_1d.nc', numsst ) 
97
98      ENDIF
99
100      ! ----------------- !
101      ! Read daily file   !
102      ! ----------------- !
103
104      ! Read daily SST
105
106      IF( ndaysst /= nday ) THEN
107         ndaysst = nday
108
109         CALL iom_get ( numsst, jpdom_data, 'sst', sst, nday_year )
110
111         IF ( kt == nit000 .AND. lwp ) THEN
112            WRITE(numout,*) ' '
113            WRITE(numout,*) ' read daily sea surface temperature ok'
114            WRITE(numout,*) ' '
115            WRITE(numout,*) ' Surface temp day: ', ndastp
116            CALL prihre(sst(:,:),jpi,jpj,1,jpi,20,1,jpj,10,1.,numout)
117         ENDIF
118         
119      ENDIF
120     
121      ! 2. At every time step compute temperature data
122      ! ----------------------------------------------
123     
124      DO jj = 1, jpj
125         DO ji = 1, jpi
126            ztgel = fzptn(ji,jj)
127            rclice(ji,jj,1) = tmask(ji,jj,1)
128            IF( sst(ji,jj) >= ztgel )   rclice(ji,jj,1) = 0.e0
129            rclice(ji,jj,2) = rclice(ji,jj,1)
130         END DO
131      END DO
132      IF( kt == nit000 .AND. lwp ) THEN
133         WRITE(numout,*)
134         WRITE(numout,*) 'Computed Ice cover rclice'
135         WRITE(numout,*)
136         WRITE(numout,*) 'Ice cover : '
137         CALL prihre( rclice(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 10, 1., numout )
138      ENDIF
139     
140      ! Close the file
141      ! --------------
142     
143      IF( kt == nitend )   CALL iom_close (numsst)
144     
145
146   END SUBROUTINE dta_sst
147
148#else
149   !!----------------------------------------------------------------------
150   !!   Default option :                                        NO SST data
151   !!----------------------------------------------------------------------
152
153   SUBROUTINE dta_sst( kt )
154      !!---------------------------------------------------------------------
155      !!                  ***  ROUTINE dta_sst  ***
156      !!                   
157      !! ** Purpose :   sea surface temperature data and update it
158      !!     at each time step.   ???
159      !!
160      !! ** Method  : - sst   = tn
161      !!              - rclice = 1. IF tn =< ztgel
162      !!
163      !! History :
164      !!        !  91-03  ()  Original code
165      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module
166      !!----------------------------------------------------------------------
167      !! * Arguments
168      INTEGER, INTENT( in ) ::   kt      ! ocean timestep
169     
170      !! * Local declarations
171      INTEGER :: ji, jj
172      !!---------------------------------------------------------------------
173     
174      IF( kt == nit000 ) THEN
175         IF(lwp) WRITE(numout,*)
176         IF(lwp) WRITE(numout,*) 'dta_sst : No SST data'
177         IF(lwp) WRITE(numout,*) '~~~~~~~'
178      ENDIF
179     
180      ! 1. Update at each time step
181      ! ---------------------------
182
183      sst   (:,:)   = tn   (:,:,1)
184      rclice(:,:,1) = tmask(:,:,1)
185      DO jj = 1, jpj
186         DO ji = 1, jpi
187            IF( tn(ji,jj,1) >= fzptn(ji,jj) ) rclice(ji,jj,1) = 0.e0
188         END DO
189      END DO
190      rclice(:,:,2) = rclice(:,:,1)
191     
192   END SUBROUTINE dta_sst
193#endif
194
195   !!======================================================================
196END MODULE dtasst
Note: See TracBrowser for help on using the repository browser.