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 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90 – NEMO

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r6945 r7646  
    1111   !!                  !  2011-02  (J. Simeon, J. Orr)  Calcon salinity dependence 
    1212   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Improvment of calcite dissolution 
    13    !!---------------------------------------------------------------------- 
    14 #if defined key_pisces 
    15    !!---------------------------------------------------------------------- 
    16    !!   'key_pisces'                                       PISCES bio-model 
     13   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    1714   !!---------------------------------------------------------------------- 
    1815   !!   p4z_lys        :   Compute the CaCO3 dissolution  
     
    2219   USE trc             !  passive tracers common variables  
    2320   USE sms_pisces      !  PISCES Source Minus Sink variables 
     21   USE p4zche          !  Chemical model 
    2422   USE prtctl_trc      !  print control for debugging 
    2523   USE iom             !  I/O manager 
     
    6159      INTEGER, INTENT(in) ::   kt, knt ! ocean time step 
    6260      INTEGER  ::   ji, jj, jk, jn 
    63       REAL(wp) ::   zalk, zdic, zph, zah2 
    64       REAL(wp) ::   zdispot, zfact, zcalcon, zalka, zaldi 
     61      REAL(wp) ::   zdispot, zfact, zcalcon 
    6562      REAL(wp) ::   zomegaca, zexcess, zexcess0 
    6663      CHARACTER (len=25) :: charout 
    67       REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zco3sat, zcaldiss    
     64      REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat 
    6865      !!--------------------------------------------------------------------- 
    6966      ! 
    7067      IF( nn_timing == 1 )  CALL timing_start('p4z_lys') 
    7168      ! 
    72       CALL wrk_alloc( jpi, jpj, jpk, zco3, zco3sat, zcaldiss ) 
     69      CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 
    7370      ! 
    7471      zco3    (:,:,:) = 0. 
    7572      zcaldiss(:,:,:) = 0. 
     73      zhinit(:,:,:)   = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 
    7674      !     ------------------------------------------- 
    7775      !     COMPUTE [CO3--] and [H+] CONCENTRATIONS 
    7876      !     ------------------------------------------- 
    79        
    80       DO jn = 1, 5                               !  BEGIN OF ITERATION 
    81          ! 
    82          DO jk = 1, jpkm1 
    83             DO jj = 1, jpj 
    84                DO ji = 1, jpi 
    85                   zfact = rhop(ji,jj,jk) / 1000. + rtrn 
    86                   zph  = hi(ji,jj,jk) * tmask(ji,jj,jk) / zfact + ( 1.-tmask(ji,jj,jk) ) * 1.e-9 ! [H+] 
    87                   zdic  = trb(ji,jj,jk,jpdic) / zfact 
    88                   zalka = trb(ji,jj,jk,jptal) / zfact 
    89                   ! CALCULATE [ALK]([CO3--], [HCO3-]) 
    90                   zalk  = zalka - ( akw3(ji,jj,jk) / zph - zph / ( aphscale(ji,jj,jk) + rtrn )  & 
    91                   &       + borat(ji,jj,jk) / ( 1. + zph / akb3(ji,jj,jk) ) ) 
    92                   ! CALCULATE [H+] and [CO3--] 
    93                   zaldi = zdic - zalk 
    94                   zah2  = SQRT( zaldi * zaldi + 4.* ( zalk * ak23(ji,jj,jk) / ak13(ji,jj,jk) ) * ( zdic + zaldi ) ) 
    95                   zah2  = 0.5 * ak13(ji,jj,jk) / zalk * ( zaldi + zah2 ) 
    96                   ! 
    97                   zco3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zfact 
    98                   hi(ji,jj,jk)   = zah2 * zfact 
    99                END DO 
     77 
     78      CALL solve_at_general(zhinit, zhi) 
     79 
     80      DO jk = 1, jpkm1 
     81         DO jj = 1, jpj 
     82            DO ji = 1, jpi 
     83               zco3(ji,jj,jk) = trb(ji,jj,jk,jpdic) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2   & 
     84               &                + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 
     85               hi(ji,jj,jk)   = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 
    10086            END DO 
    10187         END DO 
    102          ! 
    103       END DO  
     88      END DO 
    10489 
    10590      !     --------------------------------------------------------- 
     
    115100               ! DEVIATION OF [CO3--] FROM SATURATION VALUE 
    116101               ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 
    117                zcalcon  = calcon * ( tsn(ji,jj,jk,jp_sal) / 35._wp ) 
     102               zcalcon  = calcon * ( salinprac(ji,jj,jk) / 35._wp ) 
    118103               zfact    = rhop(ji,jj,jk) / 1000._wp 
    119104               zomegaca = ( zcalcon * zco3(ji,jj,jk) ) / ( aksp(ji,jj,jk) * zfact + rtrn ) 
     
    129114               !       CACO3 GETS DISSOLVED EVEN IN THE CASE OF OVERSATURATION) 
    130115               zdispot = kdca * zexcess * trb(ji,jj,jk,jpcal) 
    131 # if defined key_degrad 
    132                zdispot = zdispot * facvol(ji,jj,jk) 
    133 # endif 
    134116              !  CHANGE OF [CO3--] , [ALK], PARTICULATE [CACO3], 
    135117              !       AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 
    136118              zcaldiss(ji,jj,jk)  = zdispot * rfact2 / rmtss ! calcite dissolution 
    137               zco3(ji,jj,jk)      = zco3(ji,jj,jk) + zcaldiss(ji,jj,jk) 
    138119              ! 
    139120              tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * zcaldiss(ji,jj,jk) 
     
    150131         IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3            * tmask(:,:,:) ) 
    151132         IF( iom_use( "DCAL"   ) ) CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    152       ELSE 
    153          IF( ln_diatrc ) THEN 
    154             trc3d(:,:,:,jp_pcs0_3d    ) = -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:) 
    155             trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:)              * tmask(:,:,:) 
    156             trc3d(:,:,:,jp_pcs0_3d + 2) = zco3sat(:,:,:)           * tmask(:,:,:) 
    157          ENDIF 
    158133      ENDIF 
    159134      ! 
     
    164139      ENDIF 
    165140      ! 
    166       CALL wrk_dealloc( jpi, jpj, jpk, zco3, zco3sat, zcaldiss ) 
     141      CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 
    167142      ! 
    168143      IF( nn_timing == 1 )  CALL timing_stop('p4z_lys') 
     
    183158      !! 
    184159      !!---------------------------------------------------------------------- 
    185       INTEGER  ::  ji, jj, jk 
    186160      INTEGER  ::  ios                 ! Local integer output status for namelist read 
    187       REAL(wp) ::  zcaralk, zbicarb, zco3 
    188       REAL(wp) ::  ztmas, ztmas1 
    189161 
    190162      NAMELIST/nampiscal/ kdca, nca 
     
    212184      ! 
    213185   END SUBROUTINE p4z_lys_init 
    214  
    215 #else 
    216    !!====================================================================== 
    217    !!  Dummy module :                                   No PISCES bio-model 
    218    !!====================================================================== 
    219 CONTAINS 
    220    SUBROUTINE p4z_lys( kt )                   ! Empty routine 
    221       INTEGER, INTENT( in ) ::   kt 
    222       WRITE(*,*) 'p4z_lys: You should not have seen this print! error?', kt 
    223    END SUBROUTINE p4z_lys 
    224 #endif  
    225186   !!====================================================================== 
    226187END MODULE p4zlys 
Note: See TracChangeset for help on using the changeset viewer.