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 10966 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcldf.F90 – NEMO

Ignore:
Timestamp:
2019-05-10T18:43:09+02:00 (5 years ago)
Author:
acc
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Convert TOP routines in TOP/TRP directory and all knock on effects of these conversions. SETTE tested (GYRE_PISCES only)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/TRP/trcldf.F90

    r10954 r10966  
    5151CONTAINS 
    5252 
    53    SUBROUTINE trc_ldf( kt, Kmm, Krhs ) 
     53   SUBROUTINE trc_ldf( kt, Kbb, Kmm, Krhs ) 
    5454      !!---------------------------------------------------------------------- 
    5555      !!                  ***  ROUTINE tra_ldf  *** 
     
    5858      !! 
    5959      !!---------------------------------------------------------------------- 
    60       INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    61       INTEGER, INTENT( in ) ::   Kmm, Krhs  ! ocean time-level index 
     60      INTEGER, INTENT( in ) ::   kt              ! ocean time-step index 
     61      INTEGER, INTENT( in ) ::   Kbb, Kmm, Krhs  ! ocean time-level index 
    6262      ! 
    6363      INTEGER            :: ji, jj, jk, jn 
     
    7474      IF( l_trdtrc )  THEN 
    7575         ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) 
    76          ztrtrd(:,:,:,:)  = tra(:,:,:,:) 
     76         ztrtrd(:,:,:,:)  = tr(:,:,:,:,Krhs) 
    7777      ENDIF 
    7878      !                                  !* set the lateral diffusivity coef. for passive tracer       
     
    8383         DO jj = 1, jpj 
    8484            DO ji = 1, jpi 
    85                IF( gdept_n(ji,jj,jk) > 200. .AND. gphit(ji,jj) < 5. .AND. gphit(ji,jj) > -5. ) THEN 
    86                   zdep = MAX( gdept_n(ji,jj,jk) - 1000., 0. ) / 1000. 
     85               IF( gdept(ji,jj,jk,Kmm) > 200. .AND. gphit(ji,jj) < 5. .AND. gphit(ji,jj) > -5. ) THEN 
     86                  zdep = MAX( gdept(ji,jj,jk,Kmm) - 1000., 0. ) / 1000. 
    8787                  zahu(ji,jj,jk) = zahu(ji,jj,jk) * MAX( 1., rn_fact_lap * EXP( -zdep ) ) 
    8888               ENDIF 
     
    9393      SELECT CASE ( nldf_trc )                 !* compute lateral mixing trend and add it to the general trend 
    9494      ! 
    95       CASE ( np_lap   )                               ! iso-level laplacian 
    96          CALL tra_ldf_lap  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb,      tra, jptra,    1    , Kmm ) 
    97       CASE ( np_lap_i )                               ! laplacian : standard iso-neutral operator (Madec) 
    98          CALL tra_ldf_iso  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb, trb, tra, jptra,    1    , Kmm ) 
    99       CASE ( np_lap_it )                              ! laplacian : triad iso-neutral operator (griffies) 
    100          CALL tra_ldf_triad( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb, trb, tra, jptra,    1    , Kmm ) 
    101       CASE ( np_blp , np_blp_i , np_blp_it )          ! bilaplacian: all operator (iso-level, -neutral) 
    102          CALL tra_ldf_blp  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi, trb     , tra, jptra, nldf_trc, Kmm ) 
     95      CASE ( np_lap   )                                                                                    ! iso-level laplacian 
     96         CALL tra_ldf_lap  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi,               & 
     97           &                     tr(:,:,:,:,Kbb), tr(:,:,:,:,Krhs),                 jptra, 1 , Kmm ) 
     98      CASE ( np_lap_i )                                                                                    ! laplacian : standard iso-neutral operator (Madec) 
     99         CALL tra_ldf_iso  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi,               & 
     100           &                     tr(:,:,:,:,Kbb), tr(:,:,:,:,Kbb), tr(:,:,:,:,Krhs), jptra, 1 , Kmm ) 
     101      CASE ( np_lap_it )                                                                                   ! laplacian : triad iso-neutral operator (griffies) 
     102         CALL tra_ldf_triad( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi,               & 
     103           &                     tr(:,:,:,:,Kbb), tr(:,:,:,:,Kbb), tr(:,:,:,:,Krhs), jptra, 1 , Kmm ) 
     104      CASE ( np_blp , np_blp_i , np_blp_it )                                                               ! bilaplacian: all operator (iso-level, -neutral) 
     105         CALL tra_ldf_blp  ( kt, nittrc000,'TRC', zahu, zahv, gtru, gtrv, gtrui, gtrvi,               & 
     106           &                     tr(:,:,:,:,Kbb) , tr(:,:,:,:,Krhs),                 jptra, nldf_trc, Kmm ) 
    103107      END SELECT 
    104108      ! 
    105109      IF( l_trdtrc )   THEN                    ! send the trends for further diagnostics 
    106110        DO jn = 1, jptra 
    107            ztrtrd(:,:,:,jn) = tra(:,:,:,jn) - ztrtrd(:,:,:,jn) 
     111           ztrtrd(:,:,:,jn) = tr(:,:,:,jn,Krhs) - ztrtrd(:,:,:,jn) 
    108112           CALL trd_tra( kt, Kmm, Krhs, 'TRC', jn, jptra_ldf, ztrtrd(:,:,:,jn) ) 
    109113        END DO 
     
    114118         WRITE(charout, FMT="('ldf ')") 
    115119         CALL prt_ctl_trc_info(charout) 
    116          CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     120         CALL prt_ctl_trc( tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    117121      ENDIF 
    118122      ! 
     
    168172      IF( ln_trcldf_OFF  ) THEN   ;   nldf_trc = np_no_ldf   ;   ioptio = ioptio + 1   ;   ENDIF 
    169173      IF( ln_trcldf_tra  ) THEN   ;   nldf_trc = nldf_tra    ;   ioptio = ioptio + 1   ;   ENDIF 
    170       IF( ioptio /=  1   )   CALL ctl_stop( 'trc_ldf_ini: use ONE of the 2 operator options (NONE/tra)' ) 
     174      IF( ioptio /=  1   )   CALL ctl_stop( 'trc_ldf_ini: use ONE of the 2 operator options (OFF/tra)' ) 
    171175       
    172176      !                                ! multiplier : passive/active tracers ration 
Note: See TracChangeset for help on using the changeset viewer.