Changeset 7158 for branches/2016/dev_v3_6_STABLE_r6506_AGRIF_LIM3/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
- Timestamp:
- 2016-10-29T01:21:05+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_v3_6_STABLE_r6506_AGRIF_LIM3/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r5385 r7158 27 27 28 28 PUBLIC trc_zdf ! called by step.F90 29 PUBLIC trc_zdf_alloc ! called by nemogcm.F9030 29 31 30 INTEGER :: nzdf = 0 ! type vertical diffusion algorithm used 32 31 ! ! defined from ln_zdf... namlist logicals) 33 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt ! vertical profile time-step, = 2 rdttra34 ! ! except at nittrc000 (=rdttra) if neuler=032 REAL(wp) :: r2dttrc ! vertical profile time-step, = 2 rdt 33 ! ! except at nittrc000 (=rdt) if neuler=0 35 34 36 35 !! * Substitutions … … 45 44 CONTAINS 46 45 47 INTEGER FUNCTION trc_zdf_alloc()48 !!----------------------------------------------------------------------49 !! *** ROUTINE trc_zdf_alloc ***50 !!----------------------------------------------------------------------51 ALLOCATE( r2dt(jpk) , STAT=trc_zdf_alloc )52 !53 IF( trc_zdf_alloc /= 0 ) CALL ctl_warn('trc_zdf_alloc : failed to allocate array.')54 !55 END FUNCTION trc_zdf_alloc56 57 46 58 47 SUBROUTINE trc_zdf( kt ) … … 74 63 75 64 IF( ( neuler == 0 .AND. kt == nittrc000 ) .OR. ln_top_euler ) THEN ! at nittrc000 76 r2dt (:) = rdttrc(:)! = rdttrc (use or restarting with Euler time stepping)65 r2dttrc = rdttrc ! = rdttrc (use or restarting with Euler time stepping) 77 66 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ! at nittrc000 or nittrc000+1 78 r2dt (:) = 2. * rdttrc(:)! = 2 rdttrc (leapfrog)67 r2dttrc = 2. * rdttrc ! = 2 rdttrc (leapfrog) 79 68 ENDIF 80 69 … … 86 75 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 87 76 CASE ( -1 ) ! esopa: test all possibility with control print 88 CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt , nn_trczdf_exp, trb, tra, jptra )77 CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dttrc, nn_trczdf_exp, trb, tra, jptra ) 89 78 WRITE(charout, FMT="('zdf1 ')") ; CALL prt_ctl_trc_info(charout) 90 79 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 91 CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt , trb, tra, jptra )80 CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, trb, tra, jptra ) 92 81 WRITE(charout, FMT="('zdf2 ')") ; CALL prt_ctl_trc_info(charout) 93 82 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 94 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt , nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme95 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt , trb, tra, jptra ) ! implicit scheme83 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dttrc, nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme 84 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dttrc, trb, tra, jptra ) ! implicit scheme 96 85 97 86 END SELECT … … 100 89 DO jn = 1, jptra 101 90 DO jk = 1, jpkm1 102 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt (jk)) - ztrtrd(:,:,jk,jn)91 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dttrc ) - ztrtrd(:,:,jk,jn) 103 92 END DO 104 93 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) )
Note: See TracChangeset
for help on using the changeset viewer.