Changeset 503 for trunk/NEMO/OPA_SRC/TRA/traqsr.F90
- Timestamp:
- 2006-09-27T10:52:29+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/TRA/traqsr.F90
r474 r503 4 4 !! Ocean physics: solar radiation penetration in the top ocean levels 5 5 !!====================================================================== 6 !! History : 7 !! 6.0 ! 90-10 (B. Blanke) Original code8 !! 7.0 ! 91-11 (G. Madec)9 !! ! 96-01 (G. Madec) s-coordinates10 !! 8.5 ! 02-06 (G. Madec) F90: Free form and module11 !! 9.0 ! 04-08 (C. Talandier) New trends organization12 !! 9.0 ! 05-11 (G. Madec) zco, zps, sco coordinate 6 !! History : 6.0 ! 90-10 (B. Blanke) Original code 7 !! 7.0 ! 91-11 (G. Madec) 8 !! ! 96-01 (G. Madec) s-coordinates 9 !! 8.5 ! 02-06 (G. Madec) F90: Free form and module 10 !! 9.0 ! 05-11 (G. Madec) zco, zps, sco coordinate 11 !!---------------------------------------------------------------------- 12 13 13 !!---------------------------------------------------------------------- 14 14 !! tra_qsr : trend due to the solar radiation penetration 15 15 !! tra_qsr_init : solar radiation penetration initialization 16 16 !!---------------------------------------------------------------------- 17 !! * Modules used18 17 USE oce ! ocean dynamics and active tracers 19 18 USE dom_oce ! ocean space and time domain … … 29 28 PRIVATE 30 29 31 !! * Routine accessibility 32 PUBLIC tra_qsr ! routine called by step.F90 (ln_traqsr=T) 33 PUBLIC tra_qsr_init ! routine called by opa.F90 34 35 !! * Shared module variables 36 LOGICAL, PUBLIC :: ln_traqsr = .TRUE. !: qsr flag (Default=T) 37 38 !! * Module variables 39 REAL(wp), PUBLIC :: & !!! * penetrative solar radiation namelist * 40 rabs = 0.58_wp, & ! fraction associated with xsi1 41 xsi1 = 0.35_wp, & ! first depth of extinction 42 xsi2 = 23.0_wp ! second depth of extinction 43 ! ! (default values: water type Ib) 44 LOGICAL :: & 45 ln_qsr_sms = .false. ! flag to use or not the biological 46 ! ! fluxes for light 30 PUBLIC tra_qsr ! routine called by step.F90 (ln_traqsr=T) 31 PUBLIC tra_qsr_init ! routine called by opa.F90 32 33 !!* Namelist namqsr: penetrative solar radiation 34 LOGICAL , PUBLIC :: ln_traqsr = .TRUE. !: qsr flag (Default=T) 35 REAL(wp), PUBLIC :: rabs = 0.58_wp ! fraction associated with xsi1 36 REAL(wp), PUBLIC :: xsi1 = 0.35_wp ! first depth of extinction 37 REAL(wp), PUBLIC :: xsi2 = 23.0_wp ! second depth of extinction (default values: water type Ib) 38 LOGICAL , PUBLIC :: ln_qsr_sms = .false. ! flag to use or not the biological fluxes for light 39 NAMELIST/namqsr/ ln_traqsr, rabs, xsi1, xsi2, ln_qsr_sms 47 40 48 INTEGER :: & 49 nksr ! number of levels 50 REAL(wp), DIMENSION(jpk) :: & 51 gdsr ! profile of the solar flux penetration 41 INTEGER :: nksr ! number of levels 42 REAL(wp), DIMENSION(jpk) :: gdsr ! profile of the solar flux penetration 52 43 53 44 !! * Substitutions … … 57 48 !! OPA 9.0 , LOCEAN-IPSL (2005) 58 49 !! $Header$ 59 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt50 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 60 51 !!---------------------------------------------------------------------- 61 52 … … 86 77 !! ** Action : - update ta with the penetrative solar radiation trend 87 78 !! - save the trend in ttrd ('key_trdtra') 88 !! 89 !!---------------------------------------------------------------------- 90 !! * Modules used 91 USE oce, ONLY : ztrdt => ua, & ! use ua as 3D workspace 92 ztrds => va ! use va as 3D workspace 93 94 !! * Arguments 95 INTEGER, INTENT( in ) :: kt ! ocean time-step 96 97 !! * Local declarations 98 INTEGER :: ji, jj, jk ! dummy loop indexes 99 REAL(wp) :: zc0 , zta ! temporary scalars 79 !!---------------------------------------------------------------------- 80 USE oce, ONLY : ztrdt => ua ! use ua as 3D workspace 81 USE oce, ONLY : ztrds => va ! use va as 3D workspace 82 !! 83 INTEGER, INTENT(in) :: kt ! ocean time-step 84 !! 85 INTEGER :: ji, jj, jk ! dummy loop indexes 86 REAL(wp) :: zc0 , zta ! temporary scalars 100 87 !!---------------------------------------------------------------------- 101 88 102 89 IF( kt == nit000 ) THEN 103 IF ( lwp )WRITE(numout,*)104 IF ( lwp )WRITE(numout,*) 'tra_qsr : penetration of the surface solar radiation'105 IF ( lwp )WRITE(numout,*) '~~~~~~~'90 IF(lwp) WRITE(numout,*) 91 IF(lwp) WRITE(numout,*) 'tra_qsr : penetration of the surface solar radiation' 92 IF(lwp) WRITE(numout,*) '~~~~~~~' 106 93 CALL tra_qsr_init 107 94 ENDIF 108 95 109 ! Save ta and sa trends 110 IF( l_trdtra ) THEN 96 IF( l_trdtra ) THEN ! Save ta and sa trends 111 97 ztrdt(:,:,:) = ta(:,:,:) 112 98 ztrds(:,:,:) = 0.e0 … … 122 108 DO jj = 2, jpjm1 123 109 DO ji = fs_2, fs_jpim1 ! vector opt. 124 125 110 zc0 = ro0cpr / fse3t(ji,jj,jk) ! compute the qsr trend 126 111 zta = zc0 * ( etot3(ji,jj,jk ) * tmask(ji,jj,jk) & 127 112 & - etot3(ji,jj,jk+1) * tmask(ji,jj,jk+1) ) 128 129 113 ta(ji,jj,jk) = ta(ji,jj,jk) + zta ! add qsr trend to the temperature trend 130 131 114 END DO 132 115 END DO … … 179 162 ENDIF 180 163 181 ! qsr tracers trends saved the trends for diagnostics 182 IF( l_trdtra ) THEN 164 IF( l_trdtra ) THEN ! qsr tracers trends saved for diagnostics 183 165 ztrdt(:,:,:) = ta(:,:,:) - ztrdt(:,:,:) 184 CALL trd_mod( ztrdt, ztrds, jpttdqsr, 'TRA', kt ) 185 ENDIF 186 166 CALL trd_mod( ztrdt, ztrds, jptra_trd_qsr, 'TRA', kt ) 167 ENDIF 187 168 ! ! print mean trends (used for debugging) 188 169 IF(ln_ctl) CALL prt_ctl( tab3d_1=ta, clinfo1=' qsr - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 189 170 ! 190 171 END SUBROUTINE tra_qsr 191 172 … … 206 187 !! ** Action : - initialize xsr1, xsr2 and rabs 207 188 !! 208 !! Reference : 209 !! Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 210 !!---------------------------------------------------------------------- 211 INTEGER :: ji,jj,jk, & ! dummy loop index 212 indic ! temporary integer 213 REAL(wp) :: zc0 , zc1 , zc2 , & ! temporary scalars 214 & zcst, zdp1, zdp2 ! " " 215 216 NAMELIST/namqsr/ ln_traqsr, rabs, xsi1, xsi2, ln_qsr_sms 217 !!---------------------------------------------------------------------- 218 219 ! Read Namelist namqsr : ratio and length of penetration 220 ! -------------------- 221 REWIND ( numnam ) 189 !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 190 !!---------------------------------------------------------------------- 191 INTEGER :: ji, jj, jk ! dummy loop index 192 INTEGER :: indic ! temporary integer 193 REAL(wp) :: zc0 , zc1 , zc2 ! temporary scalars 194 REAL(wp) :: zcst, zdp1, zdp2 ! " " 195 !!---------------------------------------------------------------------- 196 197 REWIND ( numnam ) ! Read Namelist namqsr : ratio and length of penetration 222 198 READ ( numnam, namqsr ) 223 199 224 ! Parameter control and print 225 ! --------------------------- 226 IF( ln_traqsr ) THEN 200 IF( ln_traqsr ) THEN ! Parameter control and print 227 201 IF(lwp) THEN 228 202 WRITE(numout,*) … … 248 222 CALL ctl_stop( ' 0<rabs<1, 0<xsi1, or 0<xsi2 not satisfied' ) 249 223 250 ! Initialization of gdsr 251 ! ---------------------- 224 ! ! Initialization of gdsr 252 225 IF( ln_zco .OR. ln_zps ) THEN 253 226 ! 254 227 ! z-coordinate with or without partial step : same w-level everywhere inside the ocean 255 228 gdsr(:) = 0.e0 … … 283 256 END DO 284 257 ENDIF 285 258 ! 286 259 ENDIF 287 260 … … 302 275 END DO 303 276 END DO 304 305 277 ENDIF 278 ! 306 279 END SUBROUTINE tra_qsr_init 307 280
Note: See TracChangeset
for help on using the changeset viewer.