- Timestamp:
- 2010-10-04T15:53:42+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/TRA/traqsr.F90
r2024 r2148 27 27 USE iom ! I/O manager 28 28 USE fldread ! read input fields 29 USE restart ! ocean restart 29 30 30 31 IMPLICIT NONE … … 47 48 ! Module variables 48 49 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 49 INTEGER :: nksr! levels below which the light cannot penetrate ( depth larger than 391 m)50 INTEGER, PUBLIC :: nksr ! levels below which the light cannot penetrate ( depth larger than 391 m) 50 51 REAL(wp), DIMENSION(3,61) :: rkrgb !: tabulated attenuation coefficients for RGB absorption 51 52 … … 95 96 REAL(wp) :: zchl, zcoef, zsi0r ! temporary scalars 96 97 REAL(wp) :: zc0, zc1, zc2, zc3 ! - - 98 REAL(wp) :: z1_e3t, zfact ! - - 97 99 REAL(wp), DIMENSION(jpi,jpj) :: zekb, zekg, zekr ! 2D workspace 98 100 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze0, ze1 , ze2, ze3, zea ! 3D workspace … … 111 113 ALLOCATE( ztrds(jpi,jpj,jpk) ) ; ztrds(:,:,:) = 0. 112 114 ENDIF 115 116 ! Set before qsr tracer content field 117 ! *********************************** 118 IF( kt == nit000 ) THEN ! Set the forcing field at nit000 - 1 119 ! ! ----------------------------------- 120 IF( ln_rstart .AND. & ! Restart: read in restart file 121 & iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0 ) THEN 122 IF(lwp) WRITE(numout,*) ' nit000-1 qsr tracer content forcing field red in the restart file' 123 zfact = 0.5e0 124 CALL iom_get( numror, jpdom_autoglo, 'qsr_hc_b', qsr_hc_b ) ! before heat content trend due to Qsr flux 125 ELSE ! No restart or restart not found: Euler forward time stepping 126 zfact = 1.e0 127 qsr_hc_b(:,:,:) = 0.e0 128 ENDIF 129 ELSE ! Swap of forcing field 130 ! ! --------------------- 131 zfact = 0.5e0 132 qsr_hc_b(:,:,:) = qsr_hc_n(:,:,:) 133 ENDIF 134 ! Compute now qsr tracer content field 135 ! ************************************ 113 136 114 137 ! ! ============================================== ! … … 118 141 DO jj = 2, jpjm1 119 142 DO ji = fs_2, fs_jpim1 ! vector opt. 120 ta(ji,jj,jk) = ta(ji,jj,jk) +ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) / fse3t(ji,jj,jk)143 qsr_hc_n(ji,jj,jk) = ro0cpr * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 121 144 END DO 122 145 END DO … … 175 198 ! 176 199 DO jk = 1, nksr ! compute and add qsr trend to ta 177 tsa(:,:,jk,jp_tem) = tsa(:,:,jk,jp_tem) + ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) / fse3t(:,:,jk)200 qsr_hc_n(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 178 201 END DO 179 202 zea(:,:,nksr+1:jpk) = 0.e0 ! below 400m set to zero … … 182 205 ELSE !* Constant Chlorophyll 183 206 DO jk = 1, nksr 184 tsa(:,:,jk,jp_tem) = tsa(:,:,jk,jp_tem) +etot3(:,:,jk) * qsr(:,:)207 qsr_hc_n(:,:,jk) = etot3(:,:,jk) * qsr(:,:) 185 208 END DO 186 209 ENDIF … … 194 217 DO jj = 2, jpjm1 195 218 DO ji = fs_2, fs_jpim1 ! vector opt. 196 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) +etot3(ji,jj,jk) * qsr(ji,jj)219 qsr_hc_n(ji,jj,jk) = etot3(ji,jj,jk) * qsr(ji,jj) 197 220 END DO 198 221 END DO … … 200 223 ! 201 224 ENDIF 225 ! 226 ENDIF 227 ! Add to the general trend 228 ! ************************ 229 DO jk = 1, nksr 230 DO jj = 2, jpjm1 231 DO ji = fs_2, fs_jpim1 ! vector opt. 232 z1_e3t = zfact / fse3t(ji,jj,jk) 233 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) + ( qsr_hc_b(ji,jj,jk) + qsr_hc_n(ji,jj,jk) ) * z1_e3t 234 END DO 235 END DO 236 END DO 237 ! 238 IF( lrst_oce ) THEN ! Write in the ocean restart file 239 ! ******************************* 240 IF(lwp) WRITE(numout,*) 241 IF(lwp) WRITE(numout,*) 'qsr tracer content forcing field written in ocean restart file ', & 242 & 'at it= ', kt,' date= ', ndastp 243 IF(lwp) WRITE(numout,*) '~~~~' 244 CALL iom_rstput( kt, nitrst, numrow, 'qsr_hc_b', qsr_hc_n ) 202 245 ! 203 246 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.