!!----------------------------------------------------------------- !! !! ROUTINE trcini.pisces.h90 !! ************************ !! !! PURPOSE : !! --------- !! Initialisation of PISCES biological and chemical variables !! !! INPUT : !! ----- !! common !! all the common defined in opa !! !! !! OUTPUT : : no !! ------ !! !! EXTERNAL : !! ---------- !! p4zche !! !! MODIFICATIONS: !! -------------- !! original : 1988-07 E. MAIER-REIMER MPI HAMBURG !! additions : 1999-10 O. Aumont and C. Le Quere !! additions : 2002 O. Aumont (PISCES) !! 03-2005 O. Aumont and A. El Moussaoui F90 !!--------------------------------------------------------------------- !! TOP 1.0, LOCEAN-IPSL (2005) !! $Header$ !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt !!---------------------------------------------------------------------- !! local declarations !! ================== INTEGER :: ichl,iband,mo INTEGER , PARAMETER :: jpmois = 12, & jpan = 1 REAL(wp) :: xtoto,expide,denitide,ztra REAL(wp) , DIMENSION (jpi,jpj) :: riverdoc,river,ndepo CHARACTER (len=34) :: clname INTEGER :: ipi,ipj,ipk,itime INTEGER , DIMENSION (jpmois) :: istep INTEGER , DIMENSION (jpan) :: istep0 REAL(wp) :: zsecond, zdate0 REAL(wp) , DIMENSION (jpi,jpj) :: zlon,zlat REAL(wp), DIMENSION (jpk) :: zlev INTEGER :: numriv,numdust,numbath,numdep !! 1. initialization !! ----------------- !! computation of the record length for direct access FILE !! this length depend of 512 for the t3d machine !! rfact = rdttra(1) * float(ndttrc) rfactr = 1./rfact IF(lwp) WRITE(numout,*) ' Tracer time step=',rfact,' rdt=',rdt rfact2= rfact / float(nrdttrc) rfact2r = 1./rfact2 IF(lwp) write(numout,*) ' Biology time step=',rfact2 !! INITIALISE DUST INPUT FROM ATMOSPHERE !! ------------------------------------- IF (bdustfer) THEN clname='dust.orca.nc' CALL flinopen(clname,mig(1),nlci,mjg(1),nlcj,.false.,ipi,ipj,0 & & ,zlon,zlat,zlev,itime,istep,zdate0,zsecond,numdust) CALL flinget(numdust,'dust',jpidta,jpjdta,0,jpmois,1, & & 12,mig(1),nlci,mjg(1),nlcj,dustmo(1:nlci,1:nlcj,:) ) CALL flinclo(numdust) ! Extra-halo initialization in MPP IF( lk_mpp ) THEN DO ji = nlci+1, jpi dustmo(ji,:,:) = dustmo(1,:,:) ENDDO DO jj = nlcj+1, jpj dustmo(:,jj,:)=dustmo(:,1,:) ENDDO ENDIF ELSE dustmo(:,:,:)=0. ENDIF !! INITIALISE THE NUTRIENT INPUT BY RIVERS !! --------------------------------------- IF (briver) THEN clname='river.orca.nc' CALL flinopen(clname,mig(1),nlci,mjg(1),nlcj,.false.,ipi,ipj,0 & & ,zlon,zlat,zlev,itime,istep0,zdate0,zsecond,numriv) CALL flinget(numriv,'riverdic',jpidta,jpjdta,0,jpan,1, & & 1,mig(1),nlci,mjg(1),nlcj,river(1:nlci,1:nlcj) ) CALL flinget(numriv,'riverdoc',jpidta,jpjdta,0,jpan,1, & & 1,mig(1),nlci,mjg(1),nlcj,riverdoc(1:nlci,1:nlcj) ) CALL flinclo(numriv) ! Extra-halo initialization in MPP IF( lk_mpp ) THEN DO ji = nlci+1, jpi river(ji,:) = river(1,:) riverdoc(ji,:) = riverdoc(1,:) ENDDO DO jj = nlcj+1, jpj river(:,jj)=river(:,1) riverdoc(:,jj) = riverdoc(:,1) ENDDO ENDIF ELSE river(:,:)=0. riverdoc(:,:)=0. endif !! INITIALISE THE N INPUT BY DUST !! --------------------------------------- IF (bndepo) THEN clname='ndeposition.orca.nc' CALL flinopen(clname,mig(1),nlci,mjg(1),nlcj,.false.,ipi,ipj,0 & & ,zlon,zlat,zlev,itime,istep0,zdate0,zsecond,numdep) CALL flinget(numdep,'ndep',jpidta,jpjdta,0,jpan,1, & & 1,mig(1),nlci,mjg(1),nlcj,ndepo(1:nlci,1:nlcj) ) CALL flinclo(numdep) ! Extra-halo initialization in MPP IF( lk_mpp ) THEN DO ji = nlci+1, jpi ndepo(ji,:) = ndepo(1,:) ENDDO DO jj = nlcj+1, jpj ndepo(:,jj)=ndepo(:,1) ENDDO ENDIF ELSE ndepo(:,:)=0. ENDIF !! Computation of the coastal mask. !! Computation of an island mask to enhance coastal supply !! of iron !! ------------------------------------------------------- IF (bsedinput) THEN clname='bathy.orca.nc' CALL flinopen(clname,mig(1),nlci,mjg(1),nlcj,.false.,ipi,ipj,ipk & & ,zlon,zlat,zlev,itime,istep0,zdate0,zsecond,numbath) CALL flinget(numbath,'bathy',jpidta,jpjdta,jpk,jpan,1, & & 1,mig(1),nlci,mjg(1),nlcj,cmask(1:nlci,1:nlcj,1:jpk) ) CALL flinclo(numbath) ! Extra-halo initialization in MPP IF( lk_mpp ) THEN DO ji = nlci+1, jpi cmask(ji,:,:) = cmask(1,:,:) ENDDO DO jj = nlcj+1, jpj cmask(:,jj,:)=cmask(:,1,:) ENDDO ENDIF DO jk = 1, jpk DO jj = 1, jpj DO ji = 1, jpi expide=min(8.,(fsdept(ji,jj,jk)/500.)**(-1.5)) denitide=-0.9543+0.7662*log(expide)-0.235*log(expide)**2 cmask(ji,jj,jk)=cmask(ji,jj,jk)*exp(denitide)/0.6858 END DO END DO END DO ELSE cmask(:,:,:)=0. ENDIF !! Computation of the total atmospheric supply of Si !! ------------------------------------------------- sumdepsi=0. DO mo=1,12 DO jj=2,jpjm1 DO ji=2,jpim1 sumdepsi=sumdepsi+dustmo(ji,jj,mo)/(12.*rmoss)*8.8 & *0.075/28.1*e1t(ji,jj)*e2t(ji,jj)*tmask(ji,jj,1) END DO END DO END DO IF( lk_mpp ) CALL mpp_sum( sumdepsi ) ! sum over the global domain !! COMPUTATION OF THE N/P RELEASE DUE TO COASTAL RIVERS !! COMPUTATION OF THE Si RELEASE DUE TO COASTAL RIVERS !! --------------------------------------------------- DO jj=1,jpj DO ji=1,jpi cotdep(ji,jj,1)=river(ji,jj)*1E9/(12.*raass & *e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,1)+rtrn)*tmask(ji,jj,1) po4dep(ji,jj,1)=(river(ji,jj)+riverdoc(ji,jj))*1E9 & /(31.6*raass*e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,1)+rtrn) & *tmask(ji,jj,1) nitdep(ji,jj,1)=7.6*ndepo(ji,jj)*tmask(ji,jj,1)/(14E6*raass & *fse3t(ji,jj,1)+rtrn) END DO END DO rivpo4input=0. rivalkinput=0. rivnitinput=0. DO jj=2,jpjm1 DO ji=2,jpim1 rivpo4input=rivpo4input+po4dep(ji,jj,1)*(e1t(ji,jj)*e2t(ji,jj) & *fse3t(ji,jj,1))*tmask(ji,jj,1)*raass rivalkinput=rivalkinput+cotdep(ji,jj,1)*(e1t(ji,jj)*e2t(ji,jj) & *fse3t(ji,jj,1))*tmask(ji,jj,1)*raass rivnitinput=rivnitinput+nitdep(ji,jj,1)*(e1t(ji,jj)*e2t(ji,jj) & *fse3t(ji,jj,1))*tmask(ji,jj,1)*raass END DO END DO IF( lk_mpp ) THEN CALL mpp_sum( rivpo4input ) ! sum over the global domain CALL mpp_sum( rivalkinput ) ! sum over the global domain CALL mpp_sum( rivnitinput ) ! sum over the global domain ENDIF !! Coastal supply of iron !! ---------------------- DO jk=1,jpkm1 ironsed(:,:,jk)=sedfeinput*cmask(:,:,jk) & /(fse3t(:,:,jk)*rjjss) END DO !!---------------------------------------------------------------------- !! !! Initialize biological variables !! !!---------------------------------------------------------------------- spocri = 0.003 jkopt = 14 !! Set biological ratios !! --------------------- rno3 = (16.+2.)/122. po4r = 1./122. o2ut = 172./122. o2nit = 32./122. rdenit = 97.6/16. o2ut = 140./122. !!---------------------------------------------------------------------- !! !! Initialize chemical variables !! !!---------------------------------------------------------------------- !! set pre-industrial atmospheric [co2] (ppm) and o2/n2 ratio !! ---------------------------------------------------------- atcox = 0.20946 !! Set lower/upper limits for temperature and salinity !! --------------------------------------------------- salchl = 1./1.80655 calcon = 1.03E-2 !! Set coefficients for apparent solubility equilibrium !! of calcite (Ingle, 1800, eq. 6) !! ---------------------------------------------------- akcc1 = -34.452 akcc2 = -39.866 akcc3 = 110.21 akcc4 = -7.5752E-6 !! Set coefficients for seawater pressure correction !! ------------------------------------------------- devk1 = 24.2 devk2 = 16.4 devkb = 27.5 devk1t = 0.085 devk2t = 0.04 devkbt = 0.095 devkst = 0.23 devks = 35.4 !! Set universal gas constants !! --------------------------- rgas = 83.143 oxyco = 1./22.4144 !! Set boron constants !! ------------------- bor1 = 0.00023 bor2 = 1./10.82 !! Set volumetric solubility constants for co2 in ml/l (Weiss, 1974) !! ----------------------------------------------------------------- c00 = -58.0931 c01 = 90.5069 c02 = 22.2940 c03 = 0.027766 c04 = -0.025888 c05 = 0.0050578 !! Set coeff. for 1. dissoc. of carbonic acid (Edmond and Gieskes, 1970) !! --------------------------------------------------------------------- c10 = -2307.1266 c11 = 2.83655 c12 = -1.5529413 c13 = -4.0484 c14 = -0.20760841 c15 = 0.08468345 c16 = -0.00654208 c17 = -0.001005 !! Set coeff. for 2. dissoc. of carbonic acid (Edmond and Gieskes, 1970) !! --------------------------------------------------------------------- c20 = -3351.6106 c21 = -9.226508 c22 = -0.2005743 c23 = -23.9722 c24 = -0.106901773 c25 = 0.1130822 c26 = -0.00846934 c27 = -0.001005 !! Set coeff. for 1. dissoc. of boric acid (Edmond and Gieskes, 1970) !! ------------------------------------------------------------------ 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 !! Set coeff. for dissoc. of water (Dickson and Riley, 1979, !! eq. 7, coefficient cw2 corrected from 0.9415 to 0.09415 !! after pers. commun. to B. Bacastow, 1988) !! --------------------------------------------------------- cw0 = -13847.26 cw1 = 148.9652 cw2 = -23.6521 cw3 = 118.67 cw4 = -5.977 cw5 = 1.0495 cw6 = -0.01615 !! Set volumetric solubility constants for o2 in ml/l (Weiss, 1970) !! ---------------------------------------------------------------- ox0 = -58.3877 ox1 = 85.8079 ox2 = 23.8439 ox3 = -0.034892 ox4 = 0.015568 ox5 = -0.0019387 !! FROM THE NEW BIOOPTIC MODEL PROPOSED JM ANDRE, WE READ HERE !! A PRECOMPUTED ARRAY CORRESPONDING TO THE ATTENUATION COEFFICIENT open(49,file='kRGB61.txt',form='formatted') do ichl=1,61 READ(49,*) xtoto,(xkrgb(iband,ichl),iband = 1,3) end do close(49) #if defined key_off_degrad !! Read volume for degraded regions (DEGINIT) !! ------------------------------------------ # if defined key_vpp CALL READ3S(902,facvol,jpi,jpj,jpk) # else READ (902) facvol # endif #endif !! Call p4zche to initialize the chemical constants !! ------------------------------------------------ CALL p4zche IF(lwp) WRITE(numout,*) ' Initialisation of PISCES done'