- Timestamp:
- 2015-05-18T17:19:50+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5056_CMCC4_simplification/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r4990 r5282 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) :: r2dtrc ! vertical profile time-step, = 2 rdt 33 ! ! except at nittrc000 (=rdt) if neuler=0 35 34 36 35 !! * Substitutions … … 44 43 !!---------------------------------------------------------------------- 45 44 CONTAINS 46 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 45 58 46 SUBROUTINE trc_zdf( kt ) … … 74 62 75 63 IF( ln_top_euler) THEN 76 r2dt (:) = rdttrc(:)! = rdttrc (use Euler time stepping)64 r2dtrc = rdttrc ! = rdttrc (use Euler time stepping) 77 65 ELSE 78 66 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nittrc000 79 r2dt (:) = rdttrc(:)! = rdttrc (restarting with Euler time stepping)67 r2dtrc = rdttrc ! = rdttrc (restarting with Euler time stepping) 80 68 ELSEIF( kt <= nittrc000 + 1 ) THEN ! at nittrc000 or nittrc000+1 81 r2dt (:) = 2. * rdttrc(:)! = 2 rdttrc (leapfrog)69 r2dtrc = 2. * rdttrc ! = 2 rdttrc (leapfrog) 82 70 ENDIF 83 71 ENDIF … … 90 78 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 91 79 CASE ( -1 ) ! esopa: test all possibility with control print 92 CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt , nn_trczdf_exp, trb, tra, jptra )80 CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dtrc, nn_trczdf_exp, trb, tra, jptra ) 93 81 WRITE(charout, FMT="('zdf1 ')") ; CALL prt_ctl_trc_info(charout) 94 82 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 95 CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt , trb, tra, jptra )83 CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dtrc, trb, tra, jptra ) 96 84 WRITE(charout, FMT="('zdf2 ')") ; CALL prt_ctl_trc_info(charout) 97 85 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 98 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dt , nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme99 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dt , trb, tra, jptra ) ! implicit scheme86 CASE ( 0 ) ; CALL tra_zdf_exp( kt, nittrc000, 'TRC', r2dtrc, nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme 87 CASE ( 1 ) ; CALL tra_zdf_imp( kt, nittrc000, 'TRC', r2dtrc, trb, tra, jptra ) ! implicit scheme 100 88 101 89 END SELECT … … 104 92 DO jn = 1, jptra 105 93 DO jk = 1, jpkm1 106 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt (jk)) - ztrtrd(:,:,jk,jn)94 ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dtrc ) - ztrtrd(:,:,jk,jn) 107 95 END DO 108 96 CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) )
Note: See TracChangeset
for help on using the changeset viewer.