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.
Changeset 3897 for branches/2013/dev_r3411_CNRS4_IOCRS – NEMO

Ignore:
Timestamp:
2013-05-02T16:29:49+02:00 (11 years ago)
Author:
cetlod
Message:

2013/dev_r3411_CNRS4_IOCRS: 2nd step create a new configuration with age tracer ; starting point for TOP coarsening

Location:
branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM
Files:
35 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/CONFIG/cfg.txt

    r3622 r3897  
    88ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
    99ORCA2_LIM_CRS OPA_SRC LIM_SRC_2 NST_SRC 
     10ORCA2_LIM_CRS_AGE OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90

    r2528 r3897  
    4242   !!--------------------------------------------------------------------- 
    4343   LOGICAL, PUBLIC, PARAMETER ::   lk_my_trc     = .TRUE.   !: PTS flag  
    44    INTEGER, PUBLIC, PARAMETER ::   jp_my_trc     =  2       !: number of PTS tracers 
     44   INTEGER, PUBLIC, PARAMETER ::   jp_my_trc     =  1       !: number of PTS tracers 
    4545   INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_2d  =  0       !: additional 2d output arrays ('key_trc_diaadd') 
    4646   INTEGER, PUBLIC, PARAMETER ::   jp_my_trc_3d  =  0       !: additional 3d output arrays ('key_trc_diaadd') 
     
    4949   ! assign an index in trc arrays for each PTS prognostic variables 
    5050   INTEGER, PUBLIC, PARAMETER ::   jpmyt1 = jp_lm + 1     !: 1st MY_TRC tracer 
    51    INTEGER, PUBLIC, PARAMETER ::   jpmyt2 = jp_lm + 2     !: 2nd MY_TRC tracer 
    52  
    5351#else 
    5452   !!--------------------------------------------------------------------- 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcini_my_trc.F90

    r2787 r3897  
    4444      IF(lwp) WRITE(numout,*) ' trc_ini_my_trc: initialisation of MY_TRC model' 
    4545      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 
     46 
     47!! BUG in s-coordinate this does not work! 
     48      ! deepest/shallowest W level Above/Below age_depth 
     49      nlb_age = MINLOC( gdepw_0, mask = gdepw_0 > age_depth, dim = 1 )   ! shallowest W level Below age_depth 
     50                                                                         !  = shallowest T level wholly below age_depth 
     51      nl_age = nlb_age - 1                                               ! deepest    W level Above age_depth 
     52                                                                         !  = T level surrounding age_depth 
     53      nla_age = nl_age - 1                                               ! deepest    T level wholly above age_depth 
     54      frac_kill_age = (age_depth - gdepw_0(nl_age))/e3t_0(nl_age)         ! fraction of level nl_age above age_depth 
     55      frac_add_age = 1._wp -  frac_kill_age                              ! fraction of level nl_age below age_depth 
     56!! end bug 
     57 
     58      rryear = 1._wp / ( nyear_len(1) * rday ) 
    4659       
    4760      IF( .NOT. ln_rsttr ) trn(:,:,:,jp_myt0:jp_myt1) = 0. 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcnam_my_trc.F90

    r2528 r3897  
    1212   !! trc_nam_my_trc      : MY_TRC model initialisation 
    1313   !!---------------------------------------------------------------------- 
     14   USE par_trc         ! TOP parameters 
    1415   USE oce_trc         ! Ocean variables 
    15    USE par_trc         ! TOP parameters 
    1616   USE trc             ! TOP variables 
    1717 
  • branches/2013/dev_r3411_CNRS4_IOCRS/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcsms_my_trc.F90

    r3294 r3897  
    2020 
    2121   IMPLICIT NONE 
    22    PRIVATE 
     22 
     23   INTEGER   :: nl_age                         ! T level surrounding age_depth 
     24   INTEGER   :: nla_age                        ! T level wholly above age_depth 
     25   INTEGER   :: nlb_age                        ! T level wholly below age_depth 
     26 
     27 
     28   REAL(wp)  ::   rryear                    !: recip number of seconds in one year 
     29   REAL(wp)  ::   age_depth = 10.           !: depth over which age tracer reset to zero 
     30   REAL(wp)  ::   age_kill_rate = -1./7200. !: recip of relaxation timescale (s) for  age tracer shallower than age_depth 
     31   REAL(wp)  ::   frac_kill_age             !: fraction of level nl_age above age_depth where it is relaxed towards zero 
     32   REAL(wp)  ::   frac_add_age              !: fraction of level nl_age below age_depth where it is incremented 
    2333 
    2434   PUBLIC   trc_sms_my_trc       ! called by trcsms.F90 module 
     
    4454      ! 
    4555      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    46       INTEGER ::   jn   ! dummy loop index 
     56      INTEGER :: jk, jn   ! dummy loop index 
    4757      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrmyt 
    48 !!---------------------------------------------------------------------- 
     58      !!---------------------------------------------------------------------- 
    4959      ! 
    5060      IF( nn_timing == 1 )  CALL timing_start('trc_sms_my_trc') 
     
    5666      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrmyt ) 
    5767 
    58       WHERE( (glamt <= 170) .AND. (glamt >= 160) .AND. (gphit <= -74) .AND. (gphit >=-75.6) ) 
    59         trn(:,:,1,jpmyt1) = 1._wp 
    60         trb(:,:,1,jpmyt1) = 1._wp 
    61         tra(:,:,1,jpmyt1) = 0._wp 
    62       END WHERE 
    63  
    64       WHERE( ((glamt <= -165) .OR. (glamt >= 160)) .AND. (gphit <= -76) .AND. (gphit >=-80)) 
    65         trn(:,:,1,jpmyt2) = 1._wp 
    66         trb(:,:,1,jpmyt2) = 1._wp 
    67         tra(:,:,1,jpmyt2) = 0._wp 
    68       END WHERE 
     68      DO jk = 1, nla_age 
     69         tra(:,:,jk,jpmyt1) = age_kill_rate * trb(:,:,jk,jpmyt1) 
     70      ENDDO 
     71      ! 
     72      tra(:,:,nl_age,jpmyt1) = frac_kill_age * age_kill_rate * trb(:,:,nl_age,jpmyt1)  & 
     73          &                  + frac_add_age  * rryear * tmask(:,:,nl_age) 
     74      ! 
     75      DO jk = nlb_age, jpk 
     76         tra(:,:,jk,jpmyt1) = tmask(:,:,jk) * rryear 
     77      ENDDO 
    6978 
    7079      IF( l_trdtrc ) THEN      ! Save the trends in the ixed layer 
Note: See TracChangeset for help on using the changeset viewer.