New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10368 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsed.F90 – NEMO

Ignore:
Timestamp:
2018-12-03T12:45:01+01:00 (5 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10365, see #2133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsed.F90

    r10345 r10368  
    6464      CHARACTER (len=25) :: charout 
    6565      REAL(wp), DIMENSION(jpi,jpj    ) :: zdenit2d, zbureff, zwork 
    66       REAL(wp), DIMENSION(jpi,jpj    ) :: zwsbio3, zwsbio4, zwscal 
     66      REAL(wp), DIMENSION(jpi,jpj    ) :: zwsbio3, zwsbio4 
    6767      REAL(wp), DIMENSION(jpi,jpj    ) :: zsedcal, zsedsi, zsedc 
    6868      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsoufer, zlight 
     
    8585      ! 
    8686      ! Allocate temporary workspace 
    87       IF( ln_p5z )    ALLOCATE( ztrpo4(jpi,jpj,jpk), ztrdop(jpi,jpj,jpk) ) 
     87      ALLOCATE( ztrpo4(jpi,jpj,jpk) ) 
     88      IF( ln_p5z )    ALLOCATE( ztrdop(jpi,jpj,jpk) ) 
    8889      IF( ln_ligand ) ALLOCATE( zwsfep(jpi,jpj) ) 
    89  
    9090 
    9191      zdenit2d(:,:) = 0.e0 
     
    9595      zsedcal (:,:) = 0.e0 
    9696      zsedc   (:,:) = 0.e0 
    97  
    9897 
    9998      ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 
     
    132131         ELSE 
    133132            zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss  
     133         ENDIF 
     134         IF ( ln_ligand ) THEN 
     135            IF( ln_solub ) THEN 
     136               tra(:,:,1,jpfep) = tra(:,:,1,jpfep) + rdustfep * (1.0 - solub(:,:)) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 
     137            ELSE 
     138               tra(:,:,1,jpfep) = tra(:,:,1,jpfep) + rdustfep * (1.0 - dustsolub) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 
     139            ENDIF 
    134140         ENDIF 
    135141         zsidep(:,:)   = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1  
     
    173179                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) +  rivdic(ji,jj) * rfact2 
    174180                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) +  ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 
     181                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) +  rivdoc(ji,jj) * rfact2 
    175182               ENDDO 
    176183            ENDDO 
    177184         ENDDO 
     185         IF (ln_ligand) THEN 
     186            DO jj = 1, jpj 
     187               DO ji = 1, jpi 
     188                  DO jk = 1, nk_rnf(ji,jj) 
     189                     tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) +  rivdic(ji,jj) * 5.e-5 * rfact2 
     190                  ENDDO 
     191               ENDDO 
     192            ENDDO 
     193         ENDIF 
    178194         IF( ln_p5z ) THEN 
    179195            DO jj = 1, jpj 
     
    182198                     tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + rivdop(ji,jj) * rfact2 
    183199                     tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + rivdon(ji,jj) * rfact2 
    184                      tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + rivdoc(ji,jj) * rfact2 
    185200                  ENDDO 
    186201               ENDDO 
     
    216231            zdep = e3t_n(ji,jj,ikt) / xstep 
    217232            zwsbio4(ji,jj) = MIN( 0.99 * zdep, wsbio4(ji,jj,ikt) ) 
    218             zwscal (ji,jj) = MIN( 0.99 * zdep, wscal (ji,jj,ikt) ) 
    219233            zwsbio3(ji,jj) = MIN( 0.99 * zdep, wsbio3(ji,jj,ikt) ) 
    220234         END DO 
     
    278292            ikt  = mbkt(ji,jj) 
    279293            zdep = xstep / e3t_n(ji,jj,ikt)  
    280             zwsc = zwscal (ji,jj) * zdep 
     294            zwsc = zwsbio4(ji,jj) * zdep 
    281295            zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc 
    282296            zcaloss = trb(ji,jj,ikt,jpcal) * zwsc 
     
    292306               ikt  = mbkt(ji,jj) 
    293307               zdep = xstep / e3t_n(ji,jj,ikt)  
    294                zwsc = zwscal (ji,jj) * zdep 
     308               zwsc = zwsbio4(ji,jj) * zdep 
    295309               zsiloss = trb(ji,jj,ikt,jpgsi) * zwsc 
    296310               zcaloss = trb(ji,jj,ikt,jpcal) * zwsc 
     
    393407               DO ji = 1, jpi 
    394408                  !                      ! Potential nitrogen fixation dependant on temperature and iron 
    395                   zlim = ( 1.- xnanono3(ji,jj,jk) - xnanonh4(ji,jj,jk) ) 
    396                   IF( zlim <= 0.2 )   zlim = 0.01 
     409                  ztemp = tsn(ji,jj,jk,jp_tem) 
     410                  zmudia = MAX( 0.,-0.001096*ztemp**2 + 0.057*ztemp -0.637 ) * 7.625 
     411                  !       Potential nitrogen fixation dependant on temperature and iron 
     412                  xdianh4 = trb(ji,jj,jk,jpnh4) / ( concnnh4 + trb(ji,jj,jk,jpnh4) ) 
     413                  xdiano3 = trb(ji,jj,jk,jpno3) / ( concnno3 + trb(ji,jj,jk,jpno3) ) * (1. - xdianh4) 
     414                  zlim = ( 1.- xdiano3 - xdianh4 ) 
     415                  IF( zlim <= 0.1 )   zlim = 0.01 
    397416                  zfact = zlim * rfact2 
    398  
    399                   ztrfer  = biron(ji,jj,jk)       / ( concfediaz + biron(ji,jj,jk)       ) 
    400                   ztrpo4s = trb  (ji,jj,jk,jppo4) / ( concnnh4   + trb  (ji,jj,jk,jppo4) )  
    401                   nitrpot(ji,jj,jk) =  MAX( 0.e0, ( 0.6 * tgfunc(ji,jj,jk) - 2.15 ) * r1_rday ) & 
    402                     &                *  zfact * MIN( ztrfer, ztrpo4s ) * zlight(ji,jj,jk) 
     417                  ztrfer = biron(ji,jj,jk) / ( concfediaz + biron(ji,jj,jk) ) 
     418                  ztrpo4(ji,jj,jk) = trb(ji,jj,jk,jppo4) / ( 1E-6 + trb(ji,jj,jk,jppo4) ) 
     419                  ztrdp = ztrpo4(ji,jj,jk) 
     420                  nitrpot(ji,jj,jk) =  zmudia * r1_rday * zfact * MIN( ztrfer, ztrdp ) * zlight(ji,jj,jk) 
    403421               END DO 
    404422            END DO 
     
    434452               DO ji = 1, jpi 
    435453                  zfact = nitrpot(ji,jj,jk) * nitrfix 
    436                   tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) +             zfact 
    437                   tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3      * zfact 
    438                   tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2nit     * zfact  
     454                  tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zfact / 3.0 
     455                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zfact / 3.0 
     456                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zfact * 2.0 / 3.0 
     457                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zfact * 1.0 / 3.0 
     458                  tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zfact * 1.0 / 3.0 * 2.0 / 3.0 
     459                  tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfact * 1.0 / 3.0 * 1.0 / 3.0 
     460                  tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + ( o2ut + o2nit ) * zfact * 2.0 / 3.0 + o2nit * zfact / 3.0 
     461                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - 30E-6 * zfact * 1.0 / 3.0 
     462                  tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 30E-6 * zfact * 1.0 / 3.0 * 2.0 / 3.0 
     463                  tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + 30E-6 * zfact * 1.0 / 3.0 * 1.0 / 3.0 
     464                  tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * rfact2 / rday 
    439465                  tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + concdnh4 / ( concdnh4 + trb(ji,jj,jk,jppo4) ) & 
    440                   &                     * 0.002 * trb(ji,jj,jk,jpdoc) * xstep 
    441                   tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * xstep 
     466                  &                     * 0.001 * trb(ji,jj,jk,jpdoc) * xstep 
    442467              END DO 
    443468            END DO  
Note: See TracChangeset for help on using the changeset viewer.