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.
trcsms_age.F90 in NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/TOP/AGE – NEMO

source: NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/TOP/AGE/trcsms_age.F90 @ 12808

Last change on this file since 12808 was 12377, checked in by acc, 4 years ago

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

  • Property svn:keywords set to Id
File size: 3.2 KB
Line 
1MODULE trcsms_age
2   !!======================================================================
3   !!                         ***  MODULE trcsms_age  ***
4   !! TOP :   Main module of the AGE tracers
5   !!======================================================================
6   !! History :   2.0  !  2007-12  (C. Ethe, G. Madec) Original code
7   !!----------------------------------------------------------------------
8   !! trc_sms_age       : AGE model main routine
9   !!----------------------------------------------------------------------
10   USE oce_trc         ! Ocean variables
11   USE trc             ! TOP variables
12   USE trd_oce
13   USE trdtrc
14
15   IMPLICIT NONE
16   PRIVATE
17
18   PUBLIC   trc_sms_age       ! called by trcsms.F90 module
19
20   INTEGER , PUBLIC :: nl_age             ! T level surrounding age_depth
21   INTEGER , PUBLIC :: nla_age            ! T level wholly above age_depth
22   INTEGER , PUBLIC :: nlb_age            ! T level wholly below age_depth
23
24   REAL(wp), PUBLIC :: rn_age_depth       ! = 10       depth over which age tracer reset to zero
25   REAL(wp), PUBLIC :: rn_age_kill_rate   ! = -1./7200  recip of relaxation timescale (s) for  age tracer shallower than age_depth
26   
27   REAL(wp), PUBLIC :: rryear          !: recip number of seconds in one year
28   REAL(wp), PUBLIC :: frac_kill_age   !: fraction of level nl_age above age_depth where it is relaxed towards zero
29   REAL(wp), PUBLIC :: frac_add_age    !: fraction of level nl_age below age_depth where it is incremented
30
31
32   !!----------------------------------------------------------------------
33   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
34   !! $Id$
35   !! Software governed by the CeCILL license (see ./LICENSE)
36   !!----------------------------------------------------------------------
37CONTAINS
38
39   SUBROUTINE trc_sms_age( kt, Kbb, Kmm, Krhs )
40      !!----------------------------------------------------------------------
41      !!                     ***  trc_sms_age  ***
42      !!
43      !! ** Purpose :   main routine of AGE model
44      !!
45      !! ** Method  : -
46      !!----------------------------------------------------------------------
47      INTEGER, INTENT(in) ::   kt              ! ocean time-step index
48      INTEGER, INTENT(in) ::   Kbb, Kmm, Krhs  ! ocean time level
49      INTEGER ::   jn, jk   ! dummy loop index
50      !!----------------------------------------------------------------------
51      !
52      IF( ln_timing )   CALL timing_start('trc_sms_age')
53      !
54      IF(lwp) WRITE(numout,*)
55      IF(lwp) WRITE(numout,*) ' trc_sms_age:  AGE model'
56      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
57
58
59      DO jk = 1, nla_age
60         tr(:,:,jk,jp_age,Krhs) = rn_age_kill_rate * tr(:,:,jk,jp_age,Kbb)
61      END DO
62      !
63      tr(:,:,nl_age,jp_age,Krhs) = frac_kill_age * rn_age_kill_rate * tr(:,:,nl_age,jp_age,Kbb)  &
64          &                   + frac_add_age  * rryear * tmask(:,:,nl_age)
65      !
66      DO jk = nlb_age, jpk
67         tr(:,:,jk,jp_age,Krhs) = tmask(:,:,jk) * rryear
68      END DO
69      !
70      IF( l_trdtrc ) CALL trd_trc( tr(:,:,:,jp_age,Krhs), jn, jptra_sms, kt, Kmm )   ! save trends
71      !
72      IF( ln_timing )   CALL timing_stop('trc_sms_age')
73      !
74   END SUBROUTINE trc_sms_age
75
76   !!======================================================================
77END MODULE trcsms_age
Note: See TracBrowser for help on using the repository browser.