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

source: trunk/NEMO/OPA_SRC/DTA/dtasss.F90 @ 440

Last change on this file since 440 was 434, checked in by opalod, 18 years ago

nemo_v1_update_044 : CT : update the passive tracers TOP component and the standard GYRE configuration

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.6 KB
Line 
1MODULE dtasss
2   !!======================================================================
3   !!                       ***  MODULE  dtasss  ***
4   !! Data : Sea Surface Salinity (SSS)
5   !!======================================================================
6   
7   !!----------------------------------------------------------------------
8   !!   dta_sss      : sss data
9   !!----------------------------------------------------------------------
10   !! * Modules used
11   USE oce             ! ocean dynamics and tracers
12   USE dom_oce         ! ocean space and time domain
13   USE in_out_manager  ! I/O manager
14   USE ocfzpt          ! ???
15   USE daymod          ! calendar
16
17   IMPLICIT NONE
18   PRIVATE
19
20   !! * Shared routine
21   PUBLIC dta_sss
22
23   !! * Shared module variables
24#if defined key_dtasss
25   LOGICAL , PUBLIC, PARAMETER ::   lk_dtasss = .TRUE.   !: sss data flag
26#else
27   LOGICAL , PUBLIC, PARAMETER ::   lk_dtasss = .FALSE.  !: sss data flag
28#endif
29   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !:
30      sss             !: surface salinity
31
32   !!----------------------------------------------------------------------
33   !!   OPA 9.0 , IPSL-LODYC  (2005)
34   !!----------------------------------------------------------------------
35
36CONTAINS
37
38#if defined key_dtasss
39   !!----------------------------------------------------------------------
40   !!   'key_dtasss'                                               SSS data
41   !!----------------------------------------------------------------------
42
43   SUBROUTINE dta_sss( kt )
44      !!---------------------------------------------------------------------
45      !!                  ***  ROUTINE dta_sss  ***
46      !!                   
47      !! ** Purpose :   Read surface salinity data
48      !!
49      !! ** Method  : - Read a specific sss.
50      !!
51      !! ** Action  : - sss
52      !!
53      !! History :
54      !!        !  90-03  (O. Marti and Ph Dandin)  Original code
55      !!        !  92-07  (M. Imbard)
56      !!        !  96-11  (E. Guilyardi)  Daily AGCM input files
57      !!        !  00-04  (M. Imbard)  NetCDF FORMAT
58      !!        !  00-10  (J.-P. Boulanger)  passage ORCA a TDH
59      !!        !  01-10  (A. Lazar)  Reynolds default
60      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module
61      !!        !  02-11  (C. Levy)  MPP/MPI NetCDF read
62      !!        !  05-03  (M. Levy) adapt SST to SSS
63      !!----------------------------------------------------------------------
64      !! * Modules used
65      USE ioipsl
66     
67      !! * Arguments
68      INTEGER ::   kt
69
70      !! * Local declarations
71      INTEGER ::   idy
72      INTEGER ::   istep(1)
73      INTEGER ::   ipi, ipj, ipk
74
75      REAL(wp) ::   zdate0, zdt
76      REAL(wp) ::   zlon(jpi,jpj), zlat(jpi,jpj), zlev(jpk)
77      CHARACTER (len=45) ::   &
78         clname = "sss.nc"      ! filename for SSS
79      !!----------------------------------------------------------------------
80
81      IF( kt == nit000 ) THEN
82         IF(lwp) WRITE(numout,*)
83         IF(lwp) WRITE(numout,*) 'dta_sss : sea surface salinity data'
84         IF(lwp) WRITE(numout,*) '~~~~~~~   read in file: ', clname
85         sss(:,:) = 0.e0   ! required for extra halos in mpp
86
87         ipi = jpiglo
88         ipj = jpjglo
89         ipk = 0
90
91         zdate0 = 0.e0
92         zdt = 0.e0
93         IF(lwp) WRITE (numout,*) 'open sss file = ', clname
94
95         CALL flinopen( TRIM(clname), mig(1), nlci, mjg(1), nlcj, .FALSE., ipi, ipj,  &
96            &           ipk, zlon, zlat, zlev, idy, istep, zdate0, zdt, numsss )
97
98
99         IF( ipi /= jpidta .OR. ipj /= jpjdta ) THEN
100            IF(lwp) WRITE(numout,*)
101            IF(lwp) WRITE(numout,*) 'problem with dimensions'
102            IF(lwp) WRITE(numout,*) ' ipi ', ipi, ' jpidta ', jpidta
103            IF(lwp) WRITE(numout,*) ' ipj ', ipj, ' jpjdta ', jpjdta
104            nstop = nstop + 1
105         ENDIF
106         IF(lwp) WRITE(numout,*) idy, istep, zdate0, zdt 
107
108         CALL flinget( numsss, 'sss', jpidta, jpjdta, 1, idy, 1,   &
109            &          1, mig(1), nlci, mjg(1), nlcj, sss(1:nlci,1:nlcj) )
110         
111         sss(:,:) = sss(:,:)*tmask(:,:,1)
112
113         IF( kt == nit000 .AND. lwp ) THEN
114            WRITE(numout,*) ' '
115            WRITE(numout,*) ' read  sea surface salinity ok'
116            WRITE(numout,*) ' '
117            CALL prihre(sss(1,1),jpi,jpj,1,jpi,20,1,jpj,10,1.,numout)
118         ENDIF
119         CALL flinclo(numsss)
120
121      ENDIF
122
123   END SUBROUTINE dta_sss
124
125#else
126   !!----------------------------------------------------------------------
127   !!   Default option :                                        NO SSS data
128   !!----------------------------------------------------------------------
129
130   SUBROUTINE dta_sss( kt )
131      !!---------------------------------------------------------------------
132      !!                  ***  ROUTINE dta_sss  ***
133      !!                   
134      !! ** Purpose :   sea surface salinity data and update it
135      !!     at each time step.   ???
136      !!
137      !! ** Method  : - sss 
138      !!
139      !! History :
140      !!        !  91-03  ()  Original code
141      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module
142      !!----------------------------------------------------------------------
143      !! * Arguments
144      INTEGER, INTENT( in ) ::   kt      ! ocean timestep
145      !!---------------------------------------------------------------------
146     
147      IF( kt == nit000 ) THEN
148         IF(lwp) WRITE(numout,*)
149         IF(lwp) WRITE(numout,*) 'dta_sss : No SSS data'
150         IF(lwp) WRITE(numout,*) '~~~~~~~'
151      ENDIF
152
153     
154   END SUBROUTINE dta_sss
155#endif
156
157   !!======================================================================
158END MODULE dtasss
Note: See TracBrowser for help on using the repository browser.