[7041] | 1 | MODULE 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 | !!---------------------------------------------------------------------- |
---|
[10067] | 33 | !! NEMO/TOP 4.0 , NEMO Consortium (2018) |
---|
[7041] | 34 | !! $Id$ |
---|
[10068] | 35 | !! Software governed by the CeCILL license (see ./LICENSE) |
---|
[7041] | 36 | !!---------------------------------------------------------------------- |
---|
| 37 | CONTAINS |
---|
| 38 | |
---|
[12377] | 39 | SUBROUTINE trc_sms_age( kt, Kbb, Kmm, Krhs ) |
---|
[7041] | 40 | !!---------------------------------------------------------------------- |
---|
| 41 | !! *** trc_sms_age *** |
---|
| 42 | !! |
---|
| 43 | !! ** Purpose : main routine of AGE model |
---|
| 44 | !! |
---|
| 45 | !! ** Method : - |
---|
| 46 | !!---------------------------------------------------------------------- |
---|
[12377] | 47 | INTEGER, INTENT(in) :: kt ! ocean time-step index |
---|
| 48 | INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! ocean time level |
---|
[7041] | 49 | INTEGER :: jn, jk ! dummy loop index |
---|
| 50 | !!---------------------------------------------------------------------- |
---|
| 51 | ! |
---|
[9124] | 52 | IF( ln_timing ) CALL timing_start('trc_sms_age') |
---|
[7041] | 53 | ! |
---|
| 54 | IF(lwp) WRITE(numout,*) |
---|
| 55 | IF(lwp) WRITE(numout,*) ' trc_sms_age: AGE model' |
---|
| 56 | IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' |
---|
| 57 | |
---|
[14173] | 58 | IF( l_1st_euler .OR. ln_top_euler ) THEN |
---|
| 59 | tr(:,:,:,jp_age,Kbb) = tr(:,:,:,jp_age,Kmm) |
---|
| 60 | ENDIF |
---|
[7041] | 61 | |
---|
[14173] | 62 | |
---|
[7041] | 63 | DO jk = 1, nla_age |
---|
[12377] | 64 | tr(:,:,jk,jp_age,Krhs) = rn_age_kill_rate * tr(:,:,jk,jp_age,Kbb) |
---|
[9124] | 65 | END DO |
---|
[7041] | 66 | ! |
---|
[12377] | 67 | tr(:,:,nl_age,jp_age,Krhs) = frac_kill_age * rn_age_kill_rate * tr(:,:,nl_age,jp_age,Kbb) & |
---|
[7041] | 68 | & + frac_add_age * rryear * tmask(:,:,nl_age) |
---|
| 69 | ! |
---|
| 70 | DO jk = nlb_age, jpk |
---|
[12377] | 71 | tr(:,:,jk,jp_age,Krhs) = tmask(:,:,jk) * rryear |
---|
[9124] | 72 | END DO |
---|
[7041] | 73 | ! |
---|
[12377] | 74 | IF( l_trdtrc ) CALL trd_trc( tr(:,:,:,jp_age,Krhs), jn, jptra_sms, kt, Kmm ) ! save trends |
---|
[7041] | 75 | ! |
---|
[9124] | 76 | IF( ln_timing ) CALL timing_stop('trc_sms_age') |
---|
[7041] | 77 | ! |
---|
| 78 | END SUBROUTINE trc_sms_age |
---|
| 79 | |
---|
| 80 | !!====================================================================== |
---|
| 81 | END MODULE trcsms_age |
---|