123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573 |
- MODULE sedchem
- #if defined key_sed
- !!======================================================================
- !! *** Module sedchem ***
- !! sediment : Variable for chemistry of the CO2 cycle
- !!======================================================================
- !! modules used
- USE sed ! sediment global variable
- USE sedarr
- !! * Accessibility
- PUBLIC sed_chem
- !! * Module variables
- REAL(wp) :: &
- salchl = 1./1.80655 , & ! conversion factor for salinity --> chlorinity (Wooster et al. 1969)
- calcon = 1.03E-2 ! mean calcite concentration [Ca2+] in sea water [mole/kg solution]
- REAL(wp) :: & ! coeff. for 1. dissoc. of carbonic acid (Millero, 1995)
- c10 = 3670.7 , &
- c11 = 62.008 , &
- c12 = 9.7944 , &
- c13 = 0.0118 , &
- c14 = 0.000116
- REAL(wp) :: & ! coeff. for 2. dissoc. of carbonic acid (Millero, 1995)
- c20 = 1394.7 , &
- c21 = 4.777 , &
- c22 = 0. , &
- c23 = 0.0184 , &
- c24 = 0.000118
- REAL(wp) :: & ! coeff. for 1. dissoc. of boric acid (Dickson and Goyet, 1994)
- cb0 = -8966.90, &
- cb1 = -2890.53, &
- cb2 = -77.942 , &
- cb3 = 1.728 , &
- cb4 = -0.0996 , &
- cb5 = 148.0248, &
- cb6 = 137.1942, &
- cb7 = 1.62142 , &
- cb8 = -24.4344, &
- cb9 = -25.085 , &
- cb10 = -0.2474 , &
- cb11 = 0.053105
- REAL(wp) :: & ! borat constants
- bor1 = 0.000232, &
- bor2 = 1./10.811
- REAL(wp) :: & ! constants for calculate concentrations
- st1 = 0.14 , & ! for sulfate (Morris & Riley 1966)
- st2 = 1./96.062, &
- ks0 = 141.328 , &
- ks1 = -4276.1 , &
- ks2 = -23.093 , &
- ks3 = -13856. , &
- ks4 = 324.57 , &
- ks5 = -47.986 , &
- ks6 = 35474. , &
- ks7 = -771.54 , &
- ks8 = 114.723 , &
- ks9 = -2698. , &
- ks10 = 1776. , &
- ks11 = 1. , &
- ks12 = -0.001005
- REAL(wp) :: & ! constants for calculate concentrations
- ft1 = 0.000067 , & ! fluorides (Dickson & Riley 1979 )
- ft2 = 1./18.9984 , &
- kf0 = -12.641 , &
- kf1 = 1590.2 , &
- kf2 = 1.525 , &
- kf3 = 1.0 , &
- kf4 =-0.001005
- REAL(wp) :: & ! coeff. for dissoc. of water (Dickson and Riley, 1979 )
- cw0 = -13847.26 , &
- cw1 = 148.9802 , &
- cw2 = -23.6521 , &
- cw3 = 118.67 , &
- cw4 = -5.977 , &
- cw5 = 1.0495 , &
- cw6 = -0.01615
-
- REAL(wp) :: & ! coeff. for dissoc. of phosphate (Millero (1974)
- cp10 = 115.54 , &
- cp11 = -4576.752 , &
- cp12 = -18.453 , &
- cp13 = -106.736 , &
- cp14 = 0.69171 , &
- cp15 = -0.65643 , &
- cp16 = -0.01844 , &
- cp20 = 172.1033 , &
- cp21 = -8814.715 , &
- cp22 = -27.927 , &
- cp23 = -160.340 , &
- cp24 = 1.3566 , &
- cp25 = 0.37335 , &
- cp26 = -0.05778 , &
- cp30 = -18.126 , &
- cp31 = -3070.75 , &
- cp32 = 17.27039 , &
- cp33 = 2.81197 , &
- cp34 = -44.99486 , &
- cp35 = -0.09984
- REAL(wp) :: & ! coeff. for dissoc. of silicates (Millero (1974)
- cs10 = 117.40 , &
- cs11 = -8904.2 , &
- cs12 = -19.334 , &
- cs13 = -458.79 , &
- cs14 = 3.5913 , &
- cs15 = 188.74 , &
- cs16 = -1.5998 , &
- cs17 = -12.1652 , &
- cs18 = 0.07871 , &
- cs19 = 0. , &
- cs20 = 1. , &
- cs21 = -0.001005
- REAL(wp) :: & ! coeff. for apparent solubility equilibrium
- ! akcc1 = -34.452 , & ! of calcite (Ingle,1975, 1800, eq. 6)
- ! akcc2 = -39.866 , &
- ! akcc3 = 110.21 , &
- ! akcc4 = -7.5752E-6
- akcc1 = -171.9065 , & ! Millero et al. 1995 from Mucci 1983
- akcc2 = -0.077993 , &
- akcc3 = 2839.319 , &
- akcc4 = 71.595 , &
- akcc5 = -0.77712 , &
- akcc6 = 0.0028426 , &
- akcc7 = 178.34 , &
- akcc8 = -0.07711 , &
- akcc9 = 0.0041249
- REAL(wp) :: & ! universal gas constant
- rgas = 83.145 ! bar.cm3/(mol.K) or R=8.31451 J/(g.mol.K)
- ! coeff. for seawater pressure correction (millero 95)
- REAL(wp), DIMENSION(8) :: &
- devk1, devk2, devk3, devk4, devk5
- DATA devk1/ -25.5 , -15.82 , -29.48 , -25.60 , -48.76 , -14.51 , -23.12 , -26.57 /
- DATA devk2/ 0.1271 , -0.0219 , 0.1622 , 0.2324 , -0.5304 , 0.1211 , 0.1758 , 0.2020 /
- DATA devk3/ 0. , 0. , 2.608E-3, -3.6246E-3, 0. , -0.321E-3, -2.647E-3, -3.042E-3/
- DATA devk4/-3.08E-3 , 1.13E-3 , -2.84E-3, -5.13E-3 , -11.76E-3 , -2.67E-3 , -5.15E-3 , -4.08E-3 /
- DATA devk5/0.0877E-3, -0.1475E-3, 0. , 0.0794E-3 , -0.3692E-3, 0.0427E-3, 0.09E-3 , 0.0714E-3/
- ! coeff. for density of sea water (Millero & Poisson 1981)
- REAL(wp), DIMENSION(5) :: Adsw
- DATA Adsw/8.24493E-1, -4.0899E-3, 7.6438E-5 , -8.246E-7, 5.3875E-9 /
- REAL(wp), DIMENSION(3) :: Bdsw
- DATA Bdsw / -5.72466E-3, 1.0227E-4, -1.6546E-6 /
- REAL(wp) :: Cdsw = 4.8314E-4
- REAL(wp), DIMENSION(6) :: Ddsw
- DATA Ddsw / 999.842594 , 6.793952E-2 , -9.095290E-3, 1.001685E-4, -1.120083E-6, 6.536332E-9/
- !! $Id: sedchem.F90 2355 2015-05-20 07:11:50Z ufla $
- CONTAINS
- SUBROUTINE sed_chem( kt )
- !!----------------------------------------------------------------------
- !! *** ROUTINE sed_chem ***
- !!
- !! ** Purpose : set chemical constants
- !!
- !! History :
- !! ! 04-10 (N. Emprin, M. Gehlen ) Original code
- !! ! 06-04 (C. Ethe) Re-organization
- !!----------------------------------------------------------------------
- !!* Arguments
- INTEGER, INTENT(in) :: kt ! time step
- #if ! defined key_sed_off
- INTEGER :: ji, jj, ikt
- REAL(wp) :: ztkel, ztc, ztc2, zpres, ztr
- REAL(wp) :: zsal, zsal2, zsqrt, zsal15
- REAL(wp) :: zis, zis2, zisqrt
- REAL(wp) :: zdens0, zaw, zbw, zcw
- REAL(wp) :: zbuf1, zbuf2
- REAL(wp) :: zcpexp, zcpexp2
- REAL(wp) :: zck1p, zck2p, zck3p, zcksi
- REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zchem_data
- #endif
- !!----------------------------------------------------------------------
- IF( MOD( kt - 1, nfreq ) /= 0 ) RETURN
- WRITE(numsed,*) ' Getting Chemical constants from tracer model at time kt = ', kt
- WRITE(numsed,*) ' '
- #if defined key_sed_off
- CALL sed_chem_off
- #else
- ! reading variables
- ALLOCATE( zchem_data(jpi,jpj,6) ) ; zchem_data(:,:,:) = 0.
- DO jj = 1,jpj
- DO ji = 1, jpi
- ikt = mbkt(ji,jj)
- IF ( tmask(ji,jj,ikt) == 1 ) THEN
- zchem_data(ji,jj,1) = ak13 (ji,jj,ikt)
- zchem_data(ji,jj,2) = ak23 (ji,jj,ikt)
- zchem_data(ji,jj,3) = akb3 (ji,jj,ikt)
- zchem_data(ji,jj,4) = akw3 (ji,jj,ikt)
- zchem_data(ji,jj,5) = aksp (ji,jj,ikt)
- zchem_data(ji,jj,6) = borat(ji,jj,ikt)
- ENDIF
- ENDDO
- ENDDO
- CALL pack_arr ( jpoce, ak1s (1:jpoce), zchem_data(1:jpi,1:jpj,1), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, ak2s (1:jpoce), zchem_data(1:jpi,1:jpj,2), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, akbs (1:jpoce), zchem_data(1:jpi,1:jpj,3), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, akws (1:jpoce), zchem_data(1:jpi,1:jpj,4), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, aksps (1:jpoce), zchem_data(1:jpi,1:jpj,5), iarroce(1:jpoce) )
- CALL pack_arr ( jpoce, borats(1:jpoce), zchem_data(1:jpi,1:jpj,6), iarroce(1:jpoce) )
- DEALLOCATE( zchem_data )
- DO ji = 1, jpoce
- ztkel = temp(ji) + 273.16
- ztc = temp(ji)
- ztc2 = ztc * ztc
- zpres = press(ji)
- ! zqtt = ztkel * 0.01
- zsal = salt(ji)
- zsal2 = zsal * zsal
- zsqrt = SQRT( zsal )
- zsal15 = zsqrt * zsal
- zlogt = LOG( ztkel )
- ztr = 1./ ztkel
- ! zis=ionic strength (ORNL/CDIAC-74, DOE 94,Dickson and Goyet)
- zis = 19.924 * zsal / ( 1000. - 1.005 * zsal )
- zis2 = zis * zis
- zisqrt = SQRT( zis )
- ! Density of Sea Water - F(temp,sal) [kg/m3]
- zdens0 = Ddsw(1) + Ddsw(2) * ztc + Ddsw(3) * ztc2 &
- + Ddsw(4) * ztc * ztc2 + Ddsw(5) * ztc2 * ztc2 &
- + Ddsw(6) * ztc * ztc2 * ztc2
- zaw = Adsw(1) + Adsw(2) * ztc + Adsw(3)* ztc2 + Adsw(4) * ztc * ztc2 &
- + Adsw(5) * ztc2 * ztc2
- zbw = Bdsw(1) + Bdsw(2) * ztc + Bdsw(3) * ztc2
- zcw = Cdsw
- densSW(ji) = zdens0 + zaw * zsal + zbw * zsal15 + zcw * zsal * zsal
- densSW(ji) = densSW(ji) * 1E-3 ! to get dens in [kg/l]
- ! FORMULA FOR CPEXP AFTER EDMOND AND GIESKES (1970)
- ! (REFERENCE TO CULBERSON AND PYTKOQICZ (1968) AS MADE IN BROECKER ET AL. (1982)
- ! IS INCORRECT; HERE RGAS IS TAKEN TENFOLD TO CORRECT FOR THE NOTATION OF pres IN
- ! DBAR INSTEAD OF BAR AND THE EXPRESSION FOR CPEXP IS MULTIPLIED BY LN(10.)
- ! TO ALLOW USE OF EXP-FUNCTION WITH BASIS E IN THE FORMULA FOR AKSPP
- ! (CF. EDMOND AND GIESKES (1970), P. 1285 AND P. 1286 (THE SMALL FORMULA ON P. 1286
- ! IS RIGHT AND CONSISTENT WITH THE SIGN IN PARTIAL MOLAR VOLUME CHANGE AS SHOWN ON P. 1285)
- !-----------------------------------------------------------------------------------------
- zcpexp = zpres / ( rgas*ztkel )
- zcpexp2 = zpres * zcpexp
- ! For Phodphates (phosphoric acid) (DOE 1994)
- !----------------------------------------------
- zck1p = cp10 + cp11*ztr + cp12*zlogt + ( cp13*ztr + cp14 ) * zsqrt &
- & + ( cp15*ztr + cp16 ) * zsal
- zck2p = cp20 + cp21*ztr + cp22*zlogt + ( cp23*ztr + cp24 ) * zsqrt &
- & + ( cp25*ztr + cp26 ) * zsal
- zck3p = cp30 + cp31*ztr + ( cp32*ztr + cp33 ) * zsqrt &
- & + ( cp34*ztr + cp35 ) * zsal
- ! For silicates (DOE 1994) change to mol/kg soln) (OCMIP)
- !--------------------------------------------------------
- zcksi = cs10 + cs11*ztr + cs12*zlogt + ( cs13*ztr + cs14) * zisqrt &
- & + ( cs15*ztr + cs16 ) * zis &
- & + ( cs17*ztr + cs18 ) * zis2 &
- & + LOG( 1. + cs19*zsal ) + LOG( cs20 + cs21*zsal )
- !K1, K2 of carbonic acid, KB of boric acid, KW (H2O)
- !---------------------------------------------------
- zak1p = EXP ( zck1p )
- zak2p = EXP ( zck2p )
- zak3p = EXP ( zck3p )
- zaksil = EXP ( zcksi )
- zbuf1 = - ( devk1(3) + devk2(3)*ztc + devk3(3)*ztc2 )
- zbuf2 = 0.5 * ( devk4(3) + devk5(3)*ztc )
- aksis(ji) = zaksil * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(6) + devk2(6)*ztc + devk3(6)*ztc2 )
- zbuf2 = 0.5 * ( devk4(6) + devk5(6)*ztc )
- ak1ps(ji) = zak1p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
-
- zbuf1 = - ( devk1(7) + devk2(7)*ztc + devk3(7)*ztc2 )
- zbuf2 = 0.5 * ( devk4(7) + devk5(7)*ztc )
- ak2ps(ji) = zak2p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(8) + devk2(8)*ztc + devk3(8)*ztc2 )
- zbuf2 = 0.5 * ( devk4(8) + devk5(8)*ztc )
- ak3ps(ji) = zak3p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- ak12s (ji) = ak1s (ji) * ak2s (ji)
- ak12ps (ji) = ak1ps(ji) * ak2ps(ji)
- ak123ps(ji) = ak1ps(ji) * ak2ps(ji) * ak3ps(ji)
- calcon2(ji) = 0.01028 * ( salt(ji) / 35. ) * densSW(ji)
- ENDDO
-
- #endif
- END SUBROUTINE sed_chem
- #if defined key_sed_off
- SUBROUTINE sed_chem_off
- !!----------------------------------------------------------------------
- !! *** ROUTINE sed_chem_off ***
- !!
- !! ** Purpose : compute chemical constants
- !!
- !! History :
- !! ! 04-10 (N. Emprin, M. Gehlen ) Original code
- !! ! 06-04 (C. Ethe) Re-organization
- !!----------------------------------------------------------------------
- !! * Local declarations
- INTEGER :: ji
- REAL(wp) :: ztkel, ztc, ztc2, zpres, ztr
- REAL(wp) :: zsal, zsal2, zsqrt, zsal15
- REAL(wp) :: zis, zis2, zisqrt
- REAL(wp) :: zdens0, zaw, zbw, zcw
- REAL(wp) :: zchl, zst, zft, zbuf1, zbuf2
- REAL(wp) :: zcpexp, zcpexp2
- REAL(wp) :: zckb, zck1, zck2, zckw
- REAL(wp) :: zck1p, zck2p, zck3p, zcksi
- REAL(wp) :: zak1, zak2, zakb, zakw
- REAL(wp) :: zaksp0, zksp, zks, zkf
- ! CHEMICAL CONSTANTS - DEEP OCEAN
- !-------------------------------------
- ! [chem constants]=mol/kg solution (or (mol/kg sol)2 for akws and aksp)
- DO ji = 1, jpoce
- ztkel = temp(ji) + 273.16
- ztc = temp(ji)
- ztc2 = ztc * ztc
- zpres = press(ji)
- ! zqtt = ztkel * 0.01
- zsal = salt(ji)
- zsal2 = zsal * zsal
- zsqrt = SQRT( zsal )
- zsal15 = zsqrt * zsal
- zlogt = LOG( ztkel )
- ztr = 1./ ztkel
- ! zis=ionic strength (ORNL/CDIAC-74, DOE 94,Dickson and Goyet)
- zis = 19.924 * zsal / ( 1000. - 1.005 * zsal )
- zis2 = zis * zis
- zisqrt = SQRT( zis )
- ! Density of Sea Water - F(temp,sal) [kg/m3]
- zdens0 = Ddsw(1) + Ddsw(2) * ztc + Ddsw(3) * ztc2 &
- + Ddsw(4) * ztc * ztc2 + Ddsw(5) * ztc2 * ztc2 &
- + Ddsw(6) * ztc * ztc2 * ztc2
- zaw = Adsw(1) + Adsw(2) * ztc + Adsw(3)* ztc2 + Adsw(4) * ztc * ztc2 &
- + Adsw(5) * ztc2 * ztc2
- zbw = Bdsw(1) + Bdsw(2) * ztc + Bdsw(3) * ztc2
- zcw = Cdsw
- densSW(ji) = zdens0 + zaw * zsal + zbw * zsal15 + zcw * zsal * zsal
- densSW(ji) = densSW(ji) * 1E-3 ! to get dens in [kg/l]
- ! FORMULA FOR CPEXP AFTER EDMOND AND GIESKES (1970)
- ! (REFERENCE TO CULBERSON AND PYTKOQICZ (1968) AS MADE IN BROECKER ET AL. (1982)
- ! IS INCORRECT; HERE RGAS IS TAKEN TENFOLD TO CORRECT FOR THE NOTATION OF pres IN
- ! DBAR INSTEAD OF BAR AND THE EXPRESSION FOR CPEXP IS MULTIPLIED BY LN(10.)
- ! TO ALLOW USE OF EXP-FUNCTION WITH BASIS E IN THE FORMULA FOR AKSPP
- ! (CF. EDMOND AND GIESKES (1970), P. 1285 AND P. 1286 (THE SMALL FORMULA ON P. 1286
- ! IS RIGHT AND CONSISTENT WITH THE SIGN IN PARTIAL MOLAR VOLUME CHANGE AS SHOWN ON P. 1285)
- !-----------------------------------------------------------------------------------------
- zcpexp = zpres / ( rgas*ztkel )
- zcpexp2 = zpres * zcpexp
- ! chlorinity (WOOSTER ET AL., 1969)
- !---------------------------------------
- zchl = zsal * salchl
- ! total sulfate concentration [mol/kg soln]
- ! --------------------------------------
- zst = st1 * zchl * st2
- ! total fluoride concentration [mol/kg soln]
- ! --------------------------------------
- zft = ft1 * zchl * ft2
- ! dissociation constant for carbonate (Mehrback 74 - Dickson & Millero 87)
- !---------------------------------------------------------------------------
- zck1 = c10*ztr - c11 + c12*zlogt - c13*zsal + c14*zsal2
- zck2 = c20*ztr + c21 - c22*zlogt - c23*zsal + c24*zsal2
- ! dissociation constant for sulfates (Dickson 1990)
- !--------------------------------------------------
- zks = EXP( ks0 + ks1*ztr + ks2*zlogt &
- & + ( ks3*ztr + ks4 + ks5*zlogt ) * zisqrt &
- & + ( ks6*ztr + ks7 + ks8*zlogt ) * zis &
- & + ks9*ztr*zis*zisqrt + ks10*ztr*zis2 &
- & + LOG( ks11 + ks12*zsal ) )
- ! dissociation constant for fluorides (Dickson and Riley 79)
- !--------------------------------------------------
- zkf = EXP( kf0 + kf1*ztr + kf2*zisqrt + LOG( kf3 + kf4*zsal ) )
- ! dissociation constant for borates (Doe 94)
- !--------------------------------------------------
- zckb = ( cb0 + cb1*zsqrt + cb2*zsal + cb3*zsal15 + cb4*zsal2) * ztr &
- & + ( cb5 + cb6*zsqrt + cb7*zsal) &
- & + ( cb8 + cb9*zsqrt + cb10*zsal) * zlogt &
- & + cb11*zsqrt*ztkel + LOG( ( 1. + zst/zks + zft/zkf ) / ( 1. + zst/zks ) )
- ! PKW (H2O) (DICKSON AND RILEY, 1979)
- !--------------------------------------
- zckw = cw0*ztr + cw1 + cw2*zlogt &
- & +( cw3*ztr + cw4 + cw5*zlogt )* zsqrt + cw6*zsal
-
- ! For Phodphates (phosphoric acid) (DOE 1994)
- !----------------------------------------------
- zck1p = cp10 + cp11*ztr + cp12*zlogt + ( cp13*ztr + cp14 ) * zsqrt &
- & + ( cp15*ztr + cp16 ) * zsal
- zck2p = cp20 + cp21*ztr + cp22*zlogt + ( cp23*ztr + cp24 ) * zsqrt &
- & + ( cp25*ztr + cp26 ) * zsal
- zck3p = cp30 + cp31*ztr + ( cp32*ztr + cp33 ) * zsqrt &
- & + ( cp34*ztr + cp35 ) * zsal
- ! For silicates (DOE 1994) change to mol/kg soln) (OCMIP)
- !--------------------------------------------------------
- zcksi = cs10 + cs11*ztr + cs12*zlogt + ( cs13*ztr + cs14) * zisqrt &
- & + ( cs15*ztr + cs16 ) * zis &
- & + ( cs17*ztr + cs18 ) * zis2 &
- & + LOG( 1. + cs19*zsal ) + LOG( cs20 + cs21*zsal )
- ! apparent solublity product K'SP of calcite in seawater
- ! (S=27-43, T=2-25 DEG C) AT pres =0 (INGLE, 1975, EQ. 6)
- ! prob: olivier a log = ln et C. Heize a LOG10(sal)
- ! aksp0 = 1.E-7*(akcc1+akcc2*sal**(1./3.)+akcc3*log(sal)+akcc4*tkel*tkel)
- ! aksp0 = 1.E-7*(akcc1+akcc2*sal**(1./3.)+akcc3*log10(sal)+akcc4*tkel*tkel)
- !--------------------------------------------------------------------
- zaksp0 = akcc1 + akcc2*ztkel + akcc3*ztr + akcc4 * LOG10(ztkel) &
- & + ( akcc5 + akcc6*ztkel+ akcc7*ztr ) * zsqrt &
- & + akcc8*zsal + akcc9*zsal15
- !K1, K2 of carbonic acid, KB of boric acid, KW (H2O)
- !---------------------------------------------------
- zak1 = 10**( -zck1 )
- zak2 = 10**( -zck2 )
- zakb = EXP ( zckb )
- zakw = EXP ( zckw )
- zksp = 10**( zaksp0 )
- ! KB of boric acid, K1,K2 of carbonic acid pressure correction
- ! after Culberson and AND Pytkowicz (1968) (CF. BROECKER ET AL., 1982) Millero 95
- !--------------------------------------------------------------------------------
- zbuf1 = - ( devk1(1) + devk2(1)*ztc + devk3(1)*ztc2 )
- zbuf2 = 0.5 * ( devk4(1) + devk5(1)*ztc )
- ak1s(ji) = zak1 * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = -( devk1(2) + devk2(2)*ztc + devk3(2)*ztc2 )
- zbuf2 = 0.5 * ( devk4(2) + devk5(2)*ztc )
- ak2s(ji) = zak2 * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(3) + devk2(3)*ztc + devk3(3)*ztc2 )
- zbuf2 = 0.5 * ( devk4(3) + devk5(3) * ztc )
- akbs(ji) = zakb * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(4) + devk2(4)*ztc + devk3(4)*ztc2 )
- zbuf2 = 0.5 * ( devk4(4) + devk5(4)*ztc )
- akws(ji) = zakw * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- ! APPARENT SOLUBILITY PRODUCT K''SP OF CALCITE (OR ARAGONITE)
- ! AS FUNCTION OF PRESSURE FOLLWING EDMOND AND GIESKES (1970)
- ! (P. 1285) AND BERNER (1976)
- !-----------------------------------------------------------------
- ! aksp(ji) = aksp0*exp(zcpexp*(devks-devkst*tc))
- ! or following Mucci
- zbuf1 = - ( devk1(5) + devk2(5)*ztc + devk3(5)*ztc2 )
- zbuf2 = 0.5 *( devk4(5) + devk5(5)*ztc )
- aksps(ji) = zksp * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- ! For Phodphates (phosphoric acid) (DOE 1994)
- !----------------------------------------------
- zck1p = cp10 + cp11*ztr + cp12*zlogt + ( cp13*ztr + cp14 ) * zsqrt &
- & + ( cp15*ztr + cp16 ) * zsal
- zck2p = cp20 + cp21*ztr + cp22*zlogt + ( cp23*ztr + cp24 ) * zsqrt &
- & + ( cp25*ztr + cp26 ) * zsal
- zck3p = cp30 + cp31*ztr + ( cp32*ztr + cp33 ) * zsqrt &
- & + ( cp34*ztr + cp35 ) * zsal
- ! For silicates (DOE 1994) change to mol/kg soln) (OCMIP)
- !--------------------------------------------------------
- zcksi = cs10 + cs11*ztr + cs12*zlogt + ( cs13*ztr + cs14) * zisqrt &
- & + ( cs15*ztr + cs16 ) * zis &
- & + ( cs17*ztr + cs18 ) * zis2 &
- & + LOG( 1. + cs19*zsal ) + LOG( cs20 + cs21*zsal )
- !K1, K2 of carbonic acid, KB of boric acid, KW (H2O)
- !---------------------------------------------------
- zak1p = EXP ( zck1p )
- zak2p = EXP ( zck2p )
- zak3p = EXP ( zck3p )
- zaksil = EXP ( zcksi )
- zbuf1 = - ( devk1(3) + devk2(3)*ztc + devk3(3)*ztc2 )
- zbuf2 = 0.5 * ( devk4(3) + devk5(3)*ztc )
- aksis(ji) = zaksil * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(6) + devk2(6)*ztc + devk3(6)*ztc2 )
- zbuf2 = 0.5 * ( devk4(6) + devk5(6)*ztc )
- ak1ps(ji) = zak1p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
-
- zbuf1 = - ( devk1(7) + devk2(7)*ztc + devk3(7)*ztc2 )
- zbuf2 = 0.5 * ( devk4(7) + devk5(7)*ztc )
- ak2ps(ji) = zak2p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- zbuf1 = - ( devk1(8) + devk2(8)*ztc + devk3(8)*ztc2 )
- zbuf2 = 0.5 * ( devk4(8) + devk5(8)*ztc )
- ak3ps(ji) = zak3p * EXP( zbuf1*zcpexp + zbuf2*zcpexp2 )
- ! total borat concentration. [mol/l]
- ! or from Millero 1995 [mol/l] : borat(l) = 0.000416_8*(sal/35._8)*densSW(l)
- ! --------------------------------------------------------------------------
- borats(ji) = bor1 * zchl * bor2 * densSW(ji)
- ak12s (ji) = ak1s (ji) * ak2s (ji)
- ak12ps (ji) = ak1ps(ji) * ak2ps(ji)
- ak123ps(ji) = ak1ps(ji) * ak2ps(ji) * ak3ps(ji)
- calcon2(ji) = 0.01028 * ( zsal / 35. ) * densSW(ji)
- ENDDO
- END SUBROUTINE sed_chem_off
- #endif
- #else
- !!======================================================================
- !! MODULE sedchem : Dummy module
- !!======================================================================
- !! $Id: sedchem.F90 2355 2015-05-20 07:11:50Z ufla $
- CONTAINS
- SUBROUTINE sed_chem( kt ) ! Empty routine
- INTEGER, INTENT(in) :: kt
- WRITE(*,*) 'trc_stp: You should not have seen this print! error?', kt
- END SUBROUTINE sed_chem
- !!======================================================================
- #endif
- END MODULE sedchem
|