[932] | 1 | MODULE trcsms_my_trc |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE trcsms_my_trc *** |
---|
| 4 | !! TOP : Main module of the MY_TRC tracers |
---|
| 5 | !!====================================================================== |
---|
[7646] | 6 | !! History : ! 2007 (C. Ethe, G. Madec) Original code |
---|
| 7 | !! ! 2016 (C. Ethe, T. Lovato) Revised architecture |
---|
[932] | 8 | !!---------------------------------------------------------------------- |
---|
[3294] | 9 | !! trc_sms_my_trc : MY_TRC model main routine |
---|
[2715] | 10 | !! trc_sms_my_trc_alloc : allocate arrays specific to MY_TRC sms |
---|
[932] | 11 | !!---------------------------------------------------------------------- |
---|
| 12 | USE par_trc ! TOP parameters |
---|
[1255] | 13 | USE oce_trc ! Ocean variables |
---|
| 14 | USE trc ! TOP variables |
---|
[4990] | 15 | USE trd_oce |
---|
| 16 | USE trdtrc |
---|
[932] | 17 | |
---|
| 18 | IMPLICIT NONE |
---|
| 19 | PRIVATE |
---|
| 20 | |
---|
[2715] | 21 | PUBLIC trc_sms_my_trc ! called by trcsms.F90 module |
---|
| 22 | PUBLIC trc_sms_my_trc_alloc ! called by trcini_my_trc.F90 module |
---|
[932] | 23 | |
---|
[2715] | 24 | ! Defined HERE the arrays specific to MY_TRC sms and ALLOCATE them in trc_sms_my_trc_alloc |
---|
[3294] | 25 | |
---|
[932] | 26 | !!---------------------------------------------------------------------- |
---|
[9598] | 27 | !! NEMO/TOP 4.0 , NEMO Consortium (2018) |
---|
[3294] | 28 | !! $Id$ |
---|
[10068] | 29 | !! Software governed by the CeCILL license (see ./LICENSE) |
---|
[932] | 30 | !!---------------------------------------------------------------------- |
---|
| 31 | CONTAINS |
---|
| 32 | |
---|
[12377] | 33 | SUBROUTINE trc_sms_my_trc( kt, Kbb, Kmm, Krhs ) |
---|
[932] | 34 | !!---------------------------------------------------------------------- |
---|
[3294] | 35 | !! *** trc_sms_my_trc *** |
---|
[932] | 36 | !! |
---|
| 37 | !! ** Purpose : main routine of MY_TRC model |
---|
| 38 | !! |
---|
[3294] | 39 | !! ** Method : - |
---|
[932] | 40 | !!---------------------------------------------------------------------- |
---|
[2715] | 41 | ! |
---|
| 42 | INTEGER, INTENT(in) :: kt ! ocean time-step index |
---|
[12377] | 43 | INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices |
---|
[2715] | 44 | INTEGER :: jn ! dummy loop index |
---|
[9125] | 45 | REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrmyt |
---|
[5385] | 46 | !!---------------------------------------------------------------------- |
---|
[3294] | 47 | ! |
---|
[9124] | 48 | IF( ln_timing ) CALL timing_start('trc_sms_my_trc') |
---|
[3294] | 49 | ! |
---|
[932] | 50 | IF(lwp) WRITE(numout,*) |
---|
| 51 | IF(lwp) WRITE(numout,*) ' trc_sms_my_trc: MY_TRC model' |
---|
| 52 | IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' |
---|
[1162] | 53 | |
---|
[9125] | 54 | IF( l_trdtrc ) ALLOCATE( ztrmyt(jpi,jpj,jpk) ) |
---|
[3294] | 55 | |
---|
[6140] | 56 | ! add here the call to BGC model |
---|
| 57 | |
---|
| 58 | ! Save the trends in the mixed layer |
---|
| 59 | IF( l_trdtrc ) THEN |
---|
[1255] | 60 | DO jn = jp_myt0, jp_myt1 |
---|
[12377] | 61 | ztrmyt(:,:,:) = tr(:,:,:,jn,Krhs) |
---|
| 62 | CALL trd_trc( ztrmyt, jn, jptra_sms, kt, Kmm ) ! save trends |
---|
[1255] | 63 | END DO |
---|
[9125] | 64 | DEALLOCATE( ztrmyt ) |
---|
[1255] | 65 | END IF |
---|
[932] | 66 | ! |
---|
[9124] | 67 | IF( ln_timing ) CALL timing_stop('trc_sms_my_trc') |
---|
[3294] | 68 | ! |
---|
[932] | 69 | END SUBROUTINE trc_sms_my_trc |
---|
[2715] | 70 | |
---|
[9124] | 71 | |
---|
[2715] | 72 | INTEGER FUNCTION trc_sms_my_trc_alloc() |
---|
| 73 | !!---------------------------------------------------------------------- |
---|
| 74 | !! *** ROUTINE trc_sms_my_trc_alloc *** |
---|
| 75 | !!---------------------------------------------------------------------- |
---|
| 76 | ! |
---|
| 77 | ! ALLOCATE here the arrays specific to MY_TRC |
---|
| 78 | ! ALLOCATE( tab(...) , STAT=trc_sms_my_trc_alloc ) |
---|
| 79 | trc_sms_my_trc_alloc = 0 ! set to zero if no array to be allocated |
---|
| 80 | ! |
---|
[10425] | 81 | IF( trc_sms_my_trc_alloc /= 0 ) CALL ctl_stop( 'STOP', 'trc_sms_my_trc_alloc : failed to allocate arrays' ) |
---|
[2715] | 82 | ! |
---|
| 83 | END FUNCTION trc_sms_my_trc_alloc |
---|
| 84 | |
---|
[932] | 85 | !!====================================================================== |
---|
| 86 | END MODULE trcsms_my_trc |
---|