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.
sedwri.F90 in NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED – NEMO

source: NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/SED/sedwri.F90 @ 14323

Last change on this file since 14323 was 14323, checked in by aumont, 3 years ago

major update of the sediment model

  • Property svn:keywords set to Id
File size: 4.9 KB
Line 
1MODULE sedwri
2   !!======================================================================
3   !!                     ***  MODULE  sedwri  ***
4   !!         Sediment diagnostics :  write sediment output files
5   !!======================================================================
6   USE sed
7   USE sedarr
8   USE lib_mpp         ! distribued memory computing library
9   USE iom
10
11   IMPLICIT NONE
12   PRIVATE
13
14   !! * Accessibility
15   PUBLIC sed_wri 
16
17   !! $Id$
18CONTAINS
19
20   !!----------------------------------------------------------------------
21   !!                                                   NetCDF output file
22   !!----------------------------------------------------------------------
23   SUBROUTINE sed_wri( kt )
24      !!----------------------------------------------------------------------
25      !!                   ***  ROUTINE sed_wri  ***
26      !!
27      !! ** Purpose :  output of sediment passive tracer
28      !!
29      !!   History :
30      !!        !  06-07  (C. Ethe)  original
31      !!----------------------------------------------------------------------
32
33      INTEGER, INTENT(in) :: kt
34
35      INTEGER  :: ji, jj, jk, js, jw, jn
36      INTEGER  :: it
37      CHARACTER(len = 20)  ::  cltra 
38      REAL(wp)  :: zrate
39      REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zdta, zflx
40
41      !!-------------------------------------------------------------------
42
43
44      ! Initialisation
45      ! -----------------
46
47      ! 1.  Initilisations
48      ! -----------------------------------------------------------------
49      IF( ln_timing )  CALL timing_start('sed_wri')
50!
51      IF (lwp) WRITE(numsed,*) ' '
52      IF (lwp) WRITE(numsed,*) 'sed_wri kt = ', kt
53      IF (lwp) WRITE(numsed,*) ' '
54     
55      ALLOCATE( zdta(jpoce,jpksed) )    ;   ALLOCATE( zflx(jpoce,jptrased+1) )
56
57      ! Initialize variables
58      ! --------------------
59
60      trcsedi(:,:,:,:)   = 0.0
61      flxsedi3d(:,:,:,:) = 0.0
62      flxsedi2d(:,:,:)   = 0.0
63
64      ! 2.  Back to 2D geometry
65      ! -----------------------------------------------------------------
66      DO jn = 1, jpsol
67         CALL unpack_arr( jpoce, trcsedi(1:jpi,1:jpj,1:jpksed,jn) , iarroce(1:jpoce), &
68         &                       solcp(1:jpoce,1:jpksed,jn ) )
69      END DO
70     
71      DO jn = 1, jpwat
72         CALL unpack_arr( jpoce, trcsedi(1:jpi,1:jpj,1:jpksed,jpsol + jn) , iarroce(1:jpoce), &
73         &                       pwcp(1:jpoce,1:jpksed,jn  )  )
74      END DO     
75
76      ! porosity
77      zdta(:,:) = 0.
78      DO jk = 1, jpksed
79         DO ji = 1, jpoce
80            zdta(ji,jk) = -LOG10( hipor(ji,jk) / ( densSW(ji) + rtrn ) + rtrn )
81         ENDDO
82      ENDDO
83
84      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,1)  , iarroce(1:jpoce), &
85         &                   zdta(1:jpoce,1:jpksed)  )
86     
87      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,2)  , iarroce(1:jpoce), &
88         &                   co3por(1:jpoce,1:jpksed)  )
89
90      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,3)  , iarroce(1:jpoce), &
91         &                   sedligand(1:jpoce,1:jpksed)  )
92
93      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,4)  , iarroce(1:jpoce), &
94         &                   saturco3(1:jpoce,1:jpksed)  )
95
96     
97!      flxsedi3d = 0.
98      zflx(:,:) = 0.   
99      ! Calculation of fluxes mol/cm2/s
100      DO jw = 1, jpwat
101         DO ji = 1, jpoce
102            zflx(ji,jw) = ( pwcp(ji,1,jw) - pwcp_dta(ji,jw) ) &
103               &         * 1.e3 * ( 1.e-2 * dzkbot(ji) ) / 1.E4 / r2dttrc
104         ENDDO
105      ENDDO
106
107      ! Calculation of fluxes g/cm2/s
108      DO js = 1, jpsol
109         zrate =  1.0 / r2dttrc
110         DO ji = 1, jpoce
111            zflx(ji,jpwat+js) = zflx(ji,jpwat+js) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate
112         ENDDO
113      ENDDO
114
115      ! Calculation of accumulation rate per dt
116      DO js = 1, jpsol
117         zrate =  1.0 / r2dttrc
118         DO ji = 1, jpoce
119            zflx(ji,jptrased+1) = zflx(ji,jptrased+1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate
120         ENDDO
121      ENDDO
122
123      DO jn = 1, jpdia2dsed - 1 
124         CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jn), iarroce(1:jpoce), zflx(1:jpoce,jn)  )
125      END DO
126
127      zflx(:,1) = dzdep(:) / dtsed
128      CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed), iarroce(1:jpoce), zflx(1:jpoce,1) )
129
130      ! Start writing data
131      ! ---------------------
132      DO jn = 1, jptrased
133         cltra = sedtrcd(jn) ! short title for 3D diagnostic
134         CALL iom_put( cltra, trcsedi(:,:,:,jn) )
135      END DO
136
137      DO jn = 1, jpdia3dsed
138         cltra = seddia3d(jn) ! short title for 3D diagnostic
139         CALL iom_put( cltra, flxsedi3d(:,:,:,jn) )
140      END DO
141
142      DO jn = 1, jpdia2dsed
143         cltra = seddia2d(jn) ! short title for 2D diagnostic
144         CALL iom_put( cltra, flxsedi2d(:,:,jn) )
145      END DO
146
147
148      DEALLOCATE( zdta )    ;   DEALLOCATE( zflx )
149
150      IF( ln_timing )  CALL timing_stop('sed_wri')
151
152   END SUBROUTINE sed_wri
153
154END MODULE sedwri
Note: See TracBrowser for help on using the repository browser.