Changeset 473 for trunk/NEMO/OPA_SRC/SBC/flxrnf.F90
- Timestamp:
- 2006-05-11T17:04:37+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SBC/flxrnf.F90
r389 r473 22 22 USE in_out_manager ! I/O manager 23 23 USE daymod ! calendar 24 USE io ipsl ! NetCDF IPSL library24 USE iom ! I/O module 25 25 26 26 IMPLICIT NONE … … 38 38 upsrnfz !: mixed adv scheme in runoffs vicinity (vert.) 39 39 INTEGER, PUBLIC :: & !: 40 nrunoff = 0 , & !: runoff option (namelist) 41 nrnf1, nrnf2 !: first and second record used 40 nrunoff = 0 !: runoff option (namelist) 42 41 43 42 !! * Module variable 44 43 REAL(wp), DIMENSION(jpi,jpj,2) :: & !: 45 44 rnfdta !: monthly runoff data array (kg/m2/s) 45 INTEGER :: & !: 46 numrnf, & !: logical unit for runoff data 47 nrnf1, nrnf2 !: first and second record used 46 48 !!---------------------------------------------------------------------- 47 49 !! OPA 9.0 , LOCEAN-IPSL (2005) … … 103 105 REAL(wp) :: zxy 104 106 # endif 105 CHARACTER (len=32) :: &106 clname ! monthly runoff filename107 INTEGER, PARAMETER :: jpmois = 12108 INTEGER :: ipi, ipj, ipk ! temporary integers109 107 INTEGER :: ii0, ii1, ij0, ij1 ! " " 110 INTEGER, DIMENSION(jpmois) :: &111 istep ! temporary workspace112 REAL(wp) :: zdate0, zdt ! temporary scalars113 REAL(wp), DIMENSION(jpk) :: &114 zlev ! temporary workspace115 REAL(wp), DIMENSION(jpi,jpj) :: &116 zlon, zlat, & ! temporary workspace117 zcoefr ! coeff of advection link to runoff118 108 !!---------------------------------------------------------------------- 119 clname = 'runoff_1m_nomask' ! monthly runoff filename120 109 121 110 IF( kt == nit000 ) THEN … … 139 128 140 129 CASE DEFAULT 141 IF(lwp) WRITE(numout,cform_err) 142 IF(lwp) WRITE(numout,*) ' Error nrunoff = ', nrunoff, ' /= 0, 1 or 2' 143 nstop = nstop + 1 130 WRITE(ctmp1,*) ' Error nrunoff = ', nrunoff, ' /= 0, 1 or 2' 131 CALL ctl_stop( ctmp1 ) 144 132 145 133 END SELECT 146 134 147 135 ! Set runoffs and upstream coeff to zero 148 runoff (:,:) = 0.e0149 upsrnfh(:,:) = 0.e0150 upsrnfz(:) = 0.e0151 136 upsadv (:,:) = 0.e0 152 137 … … 161 146 162 147 ! year, month, day 148 iman = INT( raamo ) 149 !!! better but change the results i15 = INT( 2*FLOAT( nday ) / ( FLOAT( nobis(nmonth) ) + 0.5 ) ) 163 150 i15 = nday / 16 164 151 imois = nmonth + i15 - 1 165 IF( imois == 0 ) imois = jpmois152 IF( imois == 0 ) imois = iman 166 153 ! Number of days in the month 167 154 IF( nleapy == 1 .AND. MOD( nyear, 4 ) == 0 ) THEN … … 175 162 idmeom = idbd - 15 176 163 # endif 177 ipi = jpiglo178 ipj = jpjglo179 ipk = jpk180 zdt = rdt181 164 182 165 ! Open file 183 166 184 167 IF( kt == nit000 ) THEN 185 iman = jpmois 186 CALL flinopen( clname, mig(1), nlci, mjg(1), nlcj, & 187 & .false., ipi, ipj, ipk, zlon, & 188 & zlat, zlev, iman, istep, zdate0, & 189 & zdt, numrnf ) 190 ! Title, dimensions and tests 191 # if ! defined key_coupled 192 IF( iman /= jpmois ) THEN 193 IF(lwp) WRITE(numout,*) 194 IF(lwp) WRITE(numout,*) 'problem with time coordinates' 195 IF(lwp) WRITE(numout,*) ' iman ', iman, ' jpmois ', jpmois 196 nstop = nstop + 1 197 ENDIF 198 IF(lwp) WRITE(numout,*) iman, istep, zdate0, rdt, numrnf 199 IF(lwp) WRITE(numout,*) 'numrnf=', numrnf 200 IF(lwp) WRITE(numout,*) 'jpmois=', jpmois 201 IF(lwp) WRITE(numout,*) 'zdt=', zdt 202 # endif 203 IF(ipi /= jpidta .AND. ipj /= jpjdta .AND. ipk /= 1) THEN 204 IF(lwp)WRITE(numout,*) ' ' 205 IF(lwp)WRITE(numout,*) 'problem with dimensions' 206 IF(lwp)WRITE(numout,*) ' ipi ', ipi, ' jpidta ', jpidta 207 IF(lwp)WRITE(numout,*) ' ipj ', ipj, ' jpjdta ', jpjdta 208 IF(lwp)WRITE(numout,*) ' ipk ', ipk, ' =? 1' 209 nstop = nstop + 1 210 ENDIF 211 IF(lwp)WRITE(numout,*) 'ipi=', ipi, ' ipj=', ipj, ' ipk=', ipk 168 169 nrnf1 = 0 ! initialization 170 IF (lwp) WRITE(numout,*) 'flx_rnf : Monthly runoff' 171 CALL iom_open ( 'runoff_1m_nomask.nc', numrnf ) 172 212 173 ENDIF 213 174 … … 223 184 ! nrnf2 number of the last array record 224 185 225 iman = jpmois226 186 nrnf1 = imois 227 187 nrnf2 = nrnf1 + 1 … … 237 197 WRITE(numout,*) ' NetCDF format' 238 198 WRITE(numout,*) 239 WRITE(numout,*) 'first array record used nrnf1 ', nrnf1240 WRITE(numout,*) 'last array record used nrnf2 ', nrnf2199 WRITE(numout,*) 'first array record used nrnf1 ', nrnf1 200 WRITE(numout,*) 'last array record used nrnf2 ', nrnf2 241 201 WRITE(numout,*) 242 202 ENDIF 243 203 244 204 ! Read monthly runoff data in kg/m2/s 245 !ibug 246 IF( kt == nit000 ) rnfdta(:,:,:) = 0.e0 247 !ibug 248 CALL flinget( numrnf, 'sorunoff', jpidta, jpjdta, 1, jpmois & 249 & , nrnf1, nrnf1, mig(1), nlci, mjg(1), nlcj, rnfdta(1:nlci,1:nlcj,1) ) 250 CALL flinget( numrnf, 'sorunoff', jpidta, jpjdta, 1, jpmois & 251 & , nrnf2, nrnf2, mig(1), nlci, mjg(1), nlcj, rnfdta(1:nlci,1:nlcj,2) ) 252 253 IF(lwp) WRITE(numout,*) 254 IF(lwp) WRITE(numout,*) ' read runoff field ok' 255 IF(lwp) WRITE(numout,*) 205 206 CALL iom_get ( numrnf, jpdom_data, 'sorunoff', rnfdta(:,:,1), nrnf1 ) 207 CALL iom_get ( numrnf, jpdom_data, 'sorunoff', rnfdta(:,:,2), nrnf2 ) 256 208 257 209 ENDIF … … 267 219 ! when reading the NetCDF file runoff_1m_nomask.nc 268 220 IF( cp_cfg == 'orca' .AND. jp_cfg == 2 ) THEN 269 DO jj = 1, jpj 270 DO ji = 1, jpi 271 IF( gphit(ji,jj) > 40 .AND. gphit(ji,jj) < 65 ) runoff(ji,jj) = 0.85 * runoff(ji,jj) 221 DO jj = 1, jpj 222 DO ji = 1, jpi 223 IF( gphit(ji,jj) > 40 .AND. gphit(ji,jj) < 65 ) runoff(ji,jj) = 0.85 * runoff(ji,jj) 224 END DO 272 225 END DO 273 END DO274 226 ENDIF 275 227 … … 290 242 ! coefr * upstream + (1- coefr) centered 291 243 ! coefr must be between 0 and 1. 292 !ibug 293 zcoefr(:,:) = 0.e0 294 !ibug 295 296 CALL flinget( numrnf, 'socoefr', jpidta, jpjdta, 1, jpmois, nrnf1, & 297 & nrnf1, mig(1), nlci, mjg(1), nlcj, zcoefr(1:nlci,1:nlcj) ) 298 299 IF(lwp) WRITE(numout,*) 300 IF(lwp) WRITE(numout,*) ' read coefr for advection ok' 301 IF(lwp) WRITE(numout,*) 302 303 upsrnfh(:,:) = zcoefr(:,:) 244 245 CALL iom_get ( numrnf, jpdom_data, 'socoefr', upsrnfh ) 246 304 247 upsrnfz(:) = 0.e0 305 248 upsrnfz(1) = 1.0 … … 371 314 ! -------------------- 372 315 373 IF( kt == nitend .AND. nrunoff >= 1 ) CALL flinclo( numrnf )316 IF( kt == nitend .AND. nrunoff >= 1 ) CALL iom_close( numrnf ) 374 317 375 318 END SUBROUTINE flx_rnf
Note: See TracChangeset
for help on using the changeset viewer.