MODULE seddiff !!====================================================================== !! *** MODULE seddsr *** !! Sediment : dissolution and reaction in pore water related !! related to organic matter !!===================================================================== !! * Modules used USE sed ! sediment global variable USE sed_oce USE sedmat ! linear system of equations USE sedini USE lib_mpp ! distribued memory computing library USE lib_fortran IMPLICIT NONE PRIVATE PUBLIC sed_diff !! * Module variables !! $Id: seddsr.F90 5215 2015-04-15 16:11:56Z nicolasmartin $ CONTAINS SUBROUTINE sed_diff( kt, knt ) !!---------------------------------------------------------------------- !! *** ROUTINE sed_diff *** !! !! ** Purpose : computes pore water diffusion !! !! ** Methode : implicit computation of undersaturation !! resulting from diffusive pore water transport. !! !! ** Remarks : !! - undersaturation : deviation from saturation concentration !! History : !! ! 98-08 (E. Maier-Reimer, Christoph Heinze ) Original code !! ! 04-10 (N. Emprin, M. Gehlen ) f90 !! ! 06-04 (C. Ethe) Re-organization !! ! 19-08 (O. Aumont) Debugging and improvement of the model !!---------------------------------------------------------------------- !! Arguments INTEGER, INTENT(in) :: kt, knt ! number of iteration ! --- local variables INTEGER :: ji, jk, jw ! dummy looop indices REAL(wp), DIMENSION(jpoce,jpksed) :: zrearat1, zrearat2 ! reaction rate in pore water !! !!---------------------------------------------------------------------- IF( ln_timing ) CALL timing_start('sed_diff') ! IF( kt == nitsed000 .AND. knt == 1 ) THEN IF (lwp) THEN WRITE(numsed,*) ' sed_diff : pore-water diffusion ' WRITE(numsed,*) ' ' ENDIF ENDIF ! Initializations !---------------------- zrearat1(:,:) = 0. zrearat2(:,:) = 0. ! -------------------------------------- ! Solves solute diffusion in pore waters ! -------------------------------------- ! Solves tridiagonal system DO jw = 1, jpwat CALL sed_mat( jw, jpoce, jpksed, zrearat1, zrearat2, pwcp(:,:,jw), dtsed2 / 2.0 ) END DO CALL sed_mat( jwdic, jpoce, jpksed, zrearat1, zrearat2, sedligand(:,:), dtsed2 / 2.0 ) IF( ln_timing ) CALL timing_stop('sed_diff') ! END SUBROUTINE sed_diff END MODULE seddiff