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 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zfechem.F90 – NEMO

Ignore:
Timestamp:
2019-05-13T18:34:33+02:00 (5 years ago)
Author:
acc
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Finish converting all TOP routines and knock-on effects of these conversions. Fully SETTE tested (SETTE tests 1-6 and 9). This completes the first stage conversion of TRA and TOP but need to revisit and pass ts and tr arrays through the argument lists where appropriate.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zfechem.F90

    r10416 r10975  
    3838CONTAINS 
    3939 
    40    SUBROUTINE p4z_fechem( kt, knt ) 
     40   SUBROUTINE p4z_fechem( kt, knt, Kbb, Kmm, Krhs ) 
    4141      !!--------------------------------------------------------------------- 
    4242      !!                     ***  ROUTINE p4z_fechem  *** 
     
    4848      !!--------------------------------------------------------------------- 
    4949      INTEGER, INTENT(in) ::   kt, knt   ! ocean time step 
     50      INTEGER, INTENT(in) ::   Kbb, Kmm, Krhs  ! time level indices 
    5051      ! 
    5152      INTEGER  ::   ji, jj, jk, jic, jn 
     
    7980      ! ------------------------------------------------- 
    8081      IF( ln_ligvar ) THEN 
    81          ztotlig(:,:,:) =  0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9 
     82         ztotlig(:,:,:) =  0.09 * tr(:,:,:,jpdoc,Kbb) * 1E6 + ligand * 1E9 
    8283         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. ) 
    8384      ELSE 
    84         IF( ln_ligand ) THEN  ;   ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 
     85        IF( ln_ligand ) THEN  ;   ztotlig(:,:,:) = tr(:,:,:,jplgw,Kbb) * 1E9 
    8586        ELSE                  ;   ztotlig(:,:,:) = ligand * 1E9 
    8687        ENDIF 
     
    9899               zkeq            = fekeq(ji,jj,jk) 
    99100               zfesatur        = zTL1(ji,jj,jk) * 1E-9 
    100                ztfe            = trb(ji,jj,jk,jpfer)  
     101               ztfe            = tr(ji,jj,jk,jpfer,Kbb)  
    101102               ! Fe' is the root of a 2nd order polynom 
    102103               zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe )               & 
     
    104105                  &              + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 
    105106               zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9 
    106                zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) ) 
     107               zFeL1(ji,jj,jk) = MAX( 0., tr(ji,jj,jk,jpfer,Kbb) * 1E9 - zFe3(ji,jj,jk) ) 
    107108           END DO 
    108109         END DO 
     
    132133               precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * 1E-9 - fe3sol ) ) * kfep * xstep 
    133134               ! 
    134                ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
     135               ztrc   = ( tr(ji,jj,jk,jppoc,Kbb) + tr(ji,jj,jk,jpgoc,Kbb) + tr(ji,jj,jk,jpcal,Kbb) + tr(ji,jj,jk,jpgsi,Kbb) ) * 1.e6  
    135136               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) & 
    136                &  * EXP( -gdept_n(ji,jj,jk) / 540. ) 
     137               &  * EXP( -gdept(ji,jj,jk,Kmm) / 540. ) 
    137138               IF (ln_ligand) THEN 
    138                   zxlam  = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * trb(ji,jj,jk,jpoxy) / 100.E-6 ) )) 
     139                  zxlam  = xlam1 * MAX( 1.E-3, EXP(-2 * etot(ji,jj,jk) / 10. ) * (1. - EXP(-2 * tr(ji,jj,jk,jpoxy,Kbb) / 100.E-6 ) )) 
    139140               ELSE 
    140141                  zxlam  = xlam1 * 1.0 
     
    146147               ! to later allocate scavenged iron to the different organic pools 
    147148               ! --------------------------------------------------------- 
    148                zdenom1 = zxlam * trb(ji,jj,jk,jppoc) / zlam1b 
    149                zdenom2 = zxlam * trb(ji,jj,jk,jpgoc) / zlam1b 
     149               zdenom1 = zxlam * tr(ji,jj,jk,jppoc,Kbb) / zlam1b 
     150               zdenom2 = zxlam * tr(ji,jj,jk,jpgoc,Kbb) / zlam1b 
    150151 
    151152               !  Increased scavenging for very high iron concentrations found near the coasts  
     
    154155               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 
    155156               zlamfac = MIN( 1.  , zlamfac ) 
    156                zdep    = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 
    157                zcoag   = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 
     157               zdep    = MIN( 1., 1000. / gdept(ji,jj,jk,Kmm) ) 
     158               zcoag   = 1E-4 * ( 1. - zlamfac ) * zdep * xstep * tr(ji,jj,jk,jpfer,Kbb) 
    158159 
    159160               !  Compute the coagulation of colloidal iron. This parameterization  
     
    161162               !  It requires certainly some more work as it is very poorly constrained. 
    162163               !  ---------------------------------------------------------------- 
    163                zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    164                    &      + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     164               zlam1a   = ( 0.369  * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4  * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk)    & 
     165                   &      + ( 114.   * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) 
    165166               zaggdfea = zlam1a * xstep * zfecoll 
    166167               ! 
    167                zlam1b   = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
     168               zlam1b   = 3.53E3 * tr(ji,jj,jk,jpgoc,Kbb) * xdiss(ji,jj,jk) 
    168169               zaggdfeb = zlam1b * xstep * zfecoll 
    169170               ! 
    170                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 
     171               tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zscave - zaggdfea - zaggdfeb & 
    171172               &                     - zcoag - precip(ji,jj,jk) 
    172                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 
    173                tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 
     173               tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zscave * zdenom1 + zaggdfea 
     174               tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zscave * zdenom2 + zaggdfeb 
    174175               zscav3d(ji,jj,jk)   = zscave 
    175176               zcoll3d(ji,jj,jk)   = zaggdfea + zaggdfeb 
     
    181182      !  Define the bioavailable fraction of iron 
    182183      !  ---------------------------------------- 
    183       biron(:,:,:) = trb(:,:,:,jpfer)  
     184      biron(:,:,:) = tr(:,:,:,jpfer,Kbb)  
    184185      ! 
    185186      IF( ln_ligand ) THEN 
     
    188189            DO jj = 1, jpj 
    189190               DO ji = 1, jpi 
    190                   zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    191                       &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     191                  zlam1a   = ( 0.369  * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4  * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk)    & 
     192                      &    + ( 114.   * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) 
    192193                  ! 
    193                   zlam1b   = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
    194                   zligco   = 0.5 * trn(ji,jj,jk,jplgw) 
     194                  zlam1b   = 3.53E3 *   tr(ji,jj,jk,jpgoc,Kbb) * xdiss(ji,jj,jk) 
     195                  zligco   = 0.5 * tr(ji,jj,jk,jplgw,Kmm) 
    195196                  zaggliga = zlam1a * xstep * zligco 
    196197                  zaggligb = zlam1b * xstep * zligco 
    197                   tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 
     198                  tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) - zaggliga - zaggligb 
    198199                  zlcoll3d(ji,jj,jk)  = zaggliga + zaggligb 
    199200               END DO 
     
    201202         END DO 
    202203         ! 
    203          plig(:,:,:) =  MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 
     204         plig(:,:,:) =  MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( tr(:,:,:,jpfer,Kbb) +rtrn ) ) ) 
    204205         ! 
    205206      ENDIF 
     
    223224         WRITE(charout, FMT="('fechem')") 
    224225         CALL prt_ctl_trc_info(charout) 
    225          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     226         CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 
    226227      ENDIF 
    227228      ! 
Note: See TracChangeset for help on using the changeset viewer.