- Timestamp:
- 2016-04-08T10:10:11+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r6204 r6453 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_pisces 8 #if defined key_pisces || defined key_pisces_quota 9 9 !!---------------------------------------------------------------------- 10 10 !! 'key_pisces' PISCES bio-model … … 42 42 REAL(wp), PUBLIC :: concfediaz !: Fe half-saturation Cste for diazotrophs 43 43 REAL(wp) :: hratio !: Fe:3He ratio assumed for vent iron supply 44 #if defined key_ligand 45 REAL(wp), PUBLIC :: fep_rats !: Fep/Fer ratio from sed sources 46 REAL(wp), PUBLIC :: fep_rath !: Fep/Fer ratio from hydro sources 47 #endif 44 48 45 49 LOGICAL , PUBLIC :: ll_sbc … … 72 76 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdic, rivalk !: river input fields 73 77 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdin, rivdip !: river input fields 78 #if defined key_pisces_quota 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdon, rivdop !: river input fields 80 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdoc !: river input fields 81 #endif 74 82 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdsi !: river input fields 75 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nitdep !: atmospheric N deposition … … 80 88 REAL(wp), PUBLIC :: rivdininput, rivdipinput, rivdsiinput 81 89 82 83 90 !!* Substitution 84 91 # include "top_substitute.h90" 85 92 !!---------------------------------------------------------------------- 86 93 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 87 !! $ Id$94 !! $Header:$ 88 95 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 89 96 !!---------------------------------------------------------------------- … … 140 147 DO jj = 1, jpj 141 148 DO ji = 1, jpi 142 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj)149 zcoef = ryyss * cvol(ji,jj,1) 143 150 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 144 & * 1.E3 / ( 12. * zcoef + rtrn ) 151 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 152 #if defined key_pisces_quota 153 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) ) & 154 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 155 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) ) & 156 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 157 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) ) & 158 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 159 rivdoc(ji,jj) = ( sf_river(jr_doc)%fnow(ji,jj,1) ) & 160 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 161 rivdon(ji,jj) = ( sf_river(jr_don)%fnow(ji,jj,1) ) & 162 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 163 rivdop(ji,jj) = ( sf_river(jr_dop)%fnow(ji,jj,1) ) & 164 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 165 #else 145 166 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) + sf_river(jr_doc)%fnow(ji,jj,1) ) & 146 & * 1.E3 / ( 12. * zcoef + rtrn)167 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 147 168 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) + sf_river(jr_don)%fnow(ji,jj,1) ) & 148 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) 169 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 149 170 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) + sf_river(jr_dop)%fnow(ji,jj,1) ) & 150 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) 171 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 172 #endif 151 173 rivdsi(ji,jj) = sf_river(jr_dsi)%fnow(ji,jj,1) & 152 & * 1.E3 / ( 28.1 * zcoef + rtrn)174 & * 1.E3 / ( 28.1 * zcoef + rtrn ) * tmask(ji,jj,1) 153 175 END DO 154 176 END DO … … 192 214 INTEGER :: ios ! Local integer output status for namelist read 193 215 INTEGER :: ik50 ! last level where depth less than 50 m 194 INTEGER :: isrow ! index for ORCA1 starting row195 216 REAL(wp) :: zexpide, zdenitide, zmaskt 196 217 REAL(wp) :: ztimes_dust, ztimes_riv, ztimes_ndep … … 208 229 & sn_riverdip, sn_riverdop, sn_riverdsi, sn_ndepo, sn_ironsed, sn_hydrofe, & 209 230 & ln_dust, ln_solub, ln_river, ln_ndepo, ln_ironsed, ln_ironice, ln_hydrofe, & 210 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, hratio 231 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, & 232 #if defined key_ligand 233 & fep_rats, fep_rath, & 234 #endif 235 & hratio 211 236 !!---------------------------------------------------------------------- 212 237 ! … … 222 247 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampissbc in configuration namelist', lwp ) 223 248 IF(lwm) WRITE ( numonp, nampissbc ) 224 225 IF ( ( nn_ice_tr >= 0 ) .AND. ln_ironice ) THEN226 IF(lwp) THEN227 WRITE(numout,*) ' ln_ironice incompatible with nn_ice_tr = ', nn_ice_tr228 WRITE(numout,*) ' Specify your sea ice iron concentration in nampisice instead '229 WRITE(numout,*) ' ln_ironice is forced to .FALSE. '230 ln_ironice = .FALSE.231 ENDIF232 ENDIF233 249 234 250 IF(lwp) THEN … … 252 268 WRITE(numout,*) ' fe half-saturation cste for diazotrophs concfediaz = ', concfediaz 253 269 WRITE(numout,*) ' Fe to 3He ratio assumed for vent iron supply hratio = ', hratio 270 #if defined key_ligand 271 WRITE(numout,*) ' Fep/Fer ratio from sed sources = ', fep_rats 272 WRITE(numout,*) ' Fep/Fer ratio from sed hydro sources = ', fep_rath 273 #endif 254 274 END IF 255 275 … … 337 357 ! 338 358 ALLOCATE( rivdic(jpi,jpj), rivalk(jpi,jpj), rivdin(jpi,jpj), rivdip(jpi,jpj), rivdsi(jpi,jpj) ) 359 #if defined key_pisces_quota 360 ALLOCATE( rivdon(jpi,jpj), rivdop(jpi,jpj), rivdoc(jpi,jpj) ) 361 #endif 339 362 ! 340 363 ALLOCATE( sf_river(jpriv), rivinput(jpriv), STAT=ierr1 ) !* allocate and fill sf_river (forcing structure) with sn_river_ … … 380 403 rivalkinput = 0._wp 381 404 END IF 405 382 406 ! nutrient input from dust 383 407 ! ------------------------ … … 449 473 END DO 450 474 END DO 451 ! 475 IF( cp_cfg == 'orca' .AND. jp_cfg == 2 ) THEN 476 ii0 = 176 ; ii1 = 176 ! Southern Island : Kerguelen 477 ij0 = 37 ; ij1 = 37 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 478 ! 479 ii0 = 119 ; ii1 = 119 ! South Georgia 480 ij0 = 29 ; ij1 = 29 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 481 ! 482 ii0 = 111 ; ii1 = 111 ! Falklands 483 ij0 = 35 ; ij1 = 35 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 484 ! 485 ii0 = 168 ; ii1 = 168 ! Crozet 486 ij0 = 40 ; ij1 = 40 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 487 ! 488 ii0 = 119 ; ii1 = 119 ! South Orkney 489 ij0 = 28 ; ij1 = 28 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 490 ! 491 ii0 = 140 ; ii1 = 140 ! Bouvet Island 492 ij0 = 33 ; ij1 = 33 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 493 ! 494 ii0 = 178 ; ii1 = 178 ! Prince edwards 495 ij0 = 34 ; ij1 = 34 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 496 ! 497 ii0 = 43 ; ii1 = 43 ! Balleny islands 498 ij0 = 21 ; ij1 = 21 ; zcmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1), 1:jpk ) = 0.3_wp 499 ENDIF 452 500 CALL lbc_lnk( zcmask , 'T', 1. ) ! lateral boundary conditions on cmask (sign unchanged) 453 !454 501 DO jk = 1, jpk 455 502 DO jj = 1, jpj … … 457 504 zexpide = MIN( 8.,( fsdept(ji,jj,jk) / 500. )**(-1.5) ) 458 505 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 459 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) 506 zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) * tmask(ji,jj,jk) 460 507 END DO 461 508 END DO … … 465 512 ironsed(:,:,jpk) = 0._wp 466 513 DO jk = 1, jpkm1 467 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 514 ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 468 515 END DO 469 516 DEALLOCATE( zcmask) … … 483 530 CALL iom_close( numhydro ) 484 531 ! 485 hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp 532 hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp * tmask(:,:,:) 486 533 ! 487 534 ENDIF … … 519 566 520 567 !!====================================================================== 521 END MODULE p4zsbc568 END MODULE p4zsbc
Note: See TracChangeset
for help on using the changeset viewer.