Changeset 6225 for branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
- Timestamp:
- 2016-01-08T10:35:19+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4704_NOC5_MPP_BDY_UPDATE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
- Property svn:keywords set to Id
r4624 r6225 25 25 PUBLIC p4z_sbc_init 26 26 27 !! * Shared module variables28 27 LOGICAL , PUBLIC :: ln_dust !: boolean for dust input from the atmosphere 29 28 LOGICAL , PUBLIC :: ln_solub !: boolean for variable solubility of atmospheric iron … … 45 44 LOGICAL , PUBLIC :: ll_sbc 46 45 47 !! * Module variables48 46 LOGICAL :: ll_solub 49 47 … … 80 78 REAL(wp), PUBLIC :: rivdininput, rivdipinput, rivdsiinput 81 79 82 REAL(wp) :: ryyss !: number of seconds per year 83 84 !!* Substitution 85 # include "top_substitute.h90" 80 !! * Substitutions 81 # include "vectopt_loop_substitute.h90" 86 82 !!---------------------------------------------------------------------- 87 83 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 88 !! $ Header:$84 !! $Id$ 89 85 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 90 86 !!---------------------------------------------------------------------- 91 92 87 CONTAINS 93 88 … … 118 113 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_dust > 1 ) ) THEN 119 114 CALL fld_read( kt, 1, sf_dust ) 120 dust(:,:) = sf_dust(1)%fnow(:,:,1) 115 IF( nn_ice_tr == -1 .AND. .NOT. ln_ironice ) THEN 116 dust(:,:) = sf_dust(1)%fnow(:,:,1) 117 ELSE 118 dust(:,:) = sf_dust(1)%fnow(:,:,1) * ( 1.0 - fr_i(:,:) ) 119 ENDIF 121 120 ENDIF 122 121 ENDIF … … 137 136 DO jj = 1, jpj 138 137 DO ji = 1, jpi 139 zcoef = ryyss * cvol(ji,jj,1)138 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 140 139 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 141 140 & * 1.E3 / ( 12. * zcoef + rtrn ) … … 159 158 DO jj = 1, jpj 160 159 DO ji = 1, jpi 161 nitdep(ji,jj) = sf_ndepo(1)%fnow(ji,jj,1) / rno3 / ( 14E6 * ryyss * fse3t(ji,jj,1) + rtrn )160 nitdep(ji,jj) = sf_ndepo(1)%fnow(ji,jj,1) / rno3 / ( 14E6 * ryyss * e3t_n(ji,jj,1) + rtrn ) 162 161 END DO 163 162 END DO … … 188 187 INTEGER :: ierr, ierr1, ierr2, ierr3 189 188 INTEGER :: ios ! Local integer output status for namelist read 189 INTEGER :: ik50 ! last level where depth less than 50 m 190 INTEGER :: isrow ! index for ORCA1 starting row 190 191 REAL(wp) :: zexpide, zdenitide, zmaskt 191 192 REAL(wp) :: ztimes_dust, ztimes_riv, ztimes_ndep … … 208 209 IF( nn_timing == 1 ) CALL timing_start('p4z_sbc_init') 209 210 ! 210 ryyss = nyear_len(1) * rday ! number of seconds per year and per month211 !212 211 ! !* set file information 213 212 REWIND( numnatp_ref ) ! Namelist nampissbc in reference namelist : Pisces external sources of nutrients … … 219 218 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampissbc in configuration namelist', lwp ) 220 219 IF(lwm) WRITE ( numonp, nampissbc ) 220 221 IF ( ( nn_ice_tr >= 0 ) .AND. ln_ironice ) THEN 222 IF(lwp) THEN 223 WRITE(numout,*) ' ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr 224 WRITE(numout,*) ' Specify your sea ice iron concentration in nampisice instead ' 225 WRITE(numout,*) ' ln_ironice is forced to .FALSE. ' 226 ln_ironice = .FALSE. 227 ENDIF 228 ENDIF 221 229 222 230 IF(lwp) THEN … … 250 258 ENDIF 251 259 260 ! set the number of level over which river runoffs are applied 261 ! online configuration : computed in sbcrnf 262 IF( lk_offline ) THEN 263 nk_rnf(:,:) = 1 264 h_rnf (:,:) = gdept_n(:,:,1) 265 ENDIF 266 252 267 ! dust input from the atmosphere 253 268 ! ------------------------------ … … 361 376 rivalkinput = 0._wp 362 377 END IF 363 364 378 ! nutrient input from dust 365 379 ! ------------------------ … … 413 427 CALL iom_close( numiron ) 414 428 ! 415 DO jk = 1, 5 429 ik50 = 5 ! last level where depth less than 50 m 430 DO jk = jpkm1, 1, -1 431 IF( gdept_1d(jk) > 50. ) ik50 = jk - 1 432 END DO 433 IF (lwp) WRITE(numout,*) 434 IF (lwp) WRITE(numout,*) ' Level corresponding to 50m depth ', ik50,' ', gdept_1d(ik50+1) 435 IF (lwp) WRITE(numout,*) 436 DO jk = 1, ik50 416 437 DO jj = 2, jpjm1 417 438 DO ji = fs_2, fs_jpim1 … … 424 445 END DO 425 446 END DO 426 IF( cp_cfg == 'orca' .AND. jp_cfg == 2 ) THEN 427 ii0 = 176 ; ii1 = 176 ! Southern Island : Kerguelen 428 ij0 = 37 ; ij1 = 37 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 429 ! 430 ii0 = 119 ; ii1 = 119 ! South Georgia 431 ij0 = 29 ; ij1 = 29 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 432 ! 433 ii0 = 111 ; ii1 = 111 ! Falklands 434 ij0 = 35 ; ij1 = 35 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 435 ! 436 ii0 = 168 ; ii1 = 168 ! Crozet 437 ij0 = 40 ; ij1 = 40 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 438 ! 439 ii0 = 119 ; ii1 = 119 ! South Orkney 440 ij0 = 28 ; ij1 = 28 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 441 ! 442 ii0 = 140 ; ii1 = 140 ! Bouvet Island 443 ij0 = 33 ; ij1 = 33 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 444 ! 445 ii0 = 178 ; ii1 = 178 ! Prince edwards 446 ij0 = 34 ; ij1 = 34 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 447 ! 448 ii0 = 43 ; ii1 = 43 ! Balleny islands 449 ij0 = 21 ; ij1 = 21 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 450 ENDIF 447 ! 451 448 CALL lbc_lnk( zcmask , 'T', 1. ) ! lateral boundary conditions on cmask (sign unchanged) 449 ! 452 450 DO jk = 1, jpk 453 451 DO jj = 1, jpj 454 452 DO ji = 1, jpi 455 zexpide = MIN( 8.,( fsdept(ji,jj,jk) / 500. )**(-1.5) )453 zexpide = MIN( 8.,( gdept_n(ji,jj,jk) / 500. )**(-1.5) ) 456 454 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 457 455 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) … … 463 461 ironsed(:,:,jpk) = 0._wp 464 462 DO jk = 1, jpkm1 465 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday )463 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( e3t_n(:,:,jk) * rday ) 466 464 END DO 467 465 DEALLOCATE( zcmask) … … 517 515 518 516 !!====================================================================== 519 END MODULE 517 END MODULE p4zsbc
Note: See TracChangeset
for help on using the changeset viewer.