Changeset 2082 for branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP
- Timestamp:
- 2010-09-10T12:32:58+02:00 (14 years ago)
- Location:
- branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcadv.F90
r2034 r2082 33 33 34 34 PUBLIC trc_adv ! routine called by step module 35 35 36 INTEGER :: nadv ! choice of the type of advection scheme 37 REAL(wp), DIMENSION(jpk) :: r2dt ! vertical profile time-step, = 2 rdttra 38 ! ! except at nit000 (=rdttra) if neuler=0 36 39 37 40 !! * Substitutions … … 64 67 IF( kt == nittrc000 ) CALL trc_adv_ctl ! initialisation & control of options 65 68 69 IF( neuler == 0 .AND. kt == nittrc000 ) THEN ! at nit000 70 r2dt(:) = rdttra(:) * FLOAT(nn_dttrc) ! = rdtra (restarting with Euler time stepping) 71 ELSEIF( kt <= nittrc000 + nn_dttrc ) THEN ! at nit000 or nit000+1 72 r2dt(:) = 2. * rdttra(:) * FLOAT(nn_dttrc) ! = 2 rdttra (leapfrog) 73 ENDIF 74 66 75 ! ! effective transport 67 76 DO jk = 1, jpkm1 … … 78 87 ! 79 88 SELECT CASE ( nadv ) !== compute advection trend and add it to general trend ==! 80 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! 2nd order centered81 CASE ( 2 ) ; CALL tra_adv_tvd ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! TVD82 CASE ( 3 ) ; CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb, tra, jptra ) ! MUSCL83 CASE ( 4 ) ; CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! MUSCL284 CASE ( 5 ) ; CALL tra_adv_ubs ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! UBS85 CASE ( 6 ) ; CALL tra_adv_qck ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! QUICKEST89 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) ! 2nd order centered 90 CASE ( 2 ) ; CALL tra_adv_tvd ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! TVD 91 CASE ( 3 ) ; CALL tra_adv_muscl ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, tra, jptra ) ! MUSCL 92 CASE ( 4 ) ; CALL tra_adv_muscl2( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! MUSCL2 93 CASE ( 5 ) ; CALL tra_adv_ubs ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! UBS 94 CASE ( 6 ) ; CALL tra_adv_qck ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) ! QUICKEST 86 95 ! 87 96 CASE (-1 ) !== esopa: test all possibility with control print ==! 88 CALL tra_adv_cen2 ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )97 CALL tra_adv_cen2 ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra ) 89 98 WRITE(charout, FMT="('adv1')") ; CALL prt_ctl_trc_info(charout) 90 99 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 91 CALL tra_adv_tvd ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )100 CALL tra_adv_tvd ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) 92 101 WRITE(charout, FMT="('adv2')") ; CALL prt_ctl_trc_info(charout) 93 102 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 94 CALL tra_adv_muscl ( kt, 'TRC', zun, zvn, zwn, trb, tra, jptra )103 CALL tra_adv_muscl ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, tra, jptra ) 95 104 WRITE(charout, FMT="('adv3')") ; CALL prt_ctl_trc_info(charout) 96 105 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 97 CALL tra_adv_muscl2( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )106 CALL tra_adv_muscl2( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) 98 107 WRITE(charout, FMT="('adv4')") ; CALL prt_ctl_trc_info(charout) 99 108 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 100 CALL tra_adv_ubs ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )109 CALL tra_adv_ubs ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) 101 110 WRITE(charout, FMT="('adv5')") ; CALL prt_ctl_trc_info(charout) 102 111 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') 103 CALL tra_adv_qck ( kt, 'TRC', zun, zvn, zwn, trb, trn, tra, jptra )112 CALL tra_adv_qck ( kt, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra ) 104 113 WRITE(charout, FMT="('adv6')") ; CALL prt_ctl_trc_info(charout) 105 114 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd') -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcldf.F90
r2034 r2082 70 70 71 71 SELECT CASE ( nldf ) ! compute lateral mixing trend and add it to the general trend 72 CASE ( 0 ) ; CALL tra_ldf_lap ( kt 73 CASE ( 1 ) ; CALL tra_ldf_iso ( kt 74 CASE ( 2 ) ; CALL tra_ldf_bilap ( kt 75 CASE ( 3 ) ; CALL tra_ldf_bilapg( kt 72 CASE ( 0 ) ; CALL tra_ldf_lap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra ) ! iso-level laplacian 73 CASE ( 1 ) ; CALL tra_ldf_iso ( kt, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) ! rotated laplacian 74 CASE ( 2 ) ; CALL tra_ldf_bilap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra ) ! iso-level bilaplacian 75 CASE ( 3 ) ; CALL tra_ldf_bilapg( kt, 'TRC', trb, tra, jptra ) ! s-coord. horizontal bilaplacian 76 76 ! 77 77 CASE ( -1 ) ! esopa: test all possibility with control print 78 CALL tra_ldf_lap ( kt 78 CALL tra_ldf_lap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra ) 79 79 WRITE(charout, FMT="('ldf0 ')") ; CALL prt_ctl_trc_info(charout) 80 80 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 81 CALL tra_ldf_iso ( kt 81 CALL tra_ldf_iso ( kt, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 82 82 WRITE(charout, FMT="('ldf1 ')") ; CALL prt_ctl_trc_info(charout) 83 83 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 84 CALL tra_ldf_bilap ( kt 84 CALL tra_ldf_bilap ( kt, 'TRC', gtru, gtrv, trb, tra, jptra ) 85 85 WRITE(charout, FMT="('ldf2 ')") ; CALL prt_ctl_trc_info(charout) 86 86 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 87 CALL tra_ldf_bilapg( kt 87 CALL tra_ldf_bilapg( kt, 'TRC', trb, tra, jptra ) 88 88 WRITE(charout, FMT="('ldf3 ')") ; CALL prt_ctl_trc_info(charout) 89 89 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trcnxt.F90
r2034 r2082 44 44 PUBLIC trc_nxt ! routine called by step.F90 45 45 46 REAL(wp), DIMENSION(jpk) :: r2dt _t46 REAL(wp), DIMENSION(jpk) :: r2dt 47 47 !!---------------------------------------------------------------------- 48 48 !! TOP 1.0 , LOCEAN-IPSL (2005) … … 109 109 110 110 ! set time step size (Euler/Leapfrog) 111 IF( neuler == 0 .AND. kt == nittrc000) THEN ; r2dt _t(:) = rdttra(:) * FLOAT( nn_dttrc ) ! at nit000 (Euler)112 ELSEIF( kt <= nittrc000 + 1 ) THEN ; r2dt _t(:) = 2.* rdttra(:) * FLOAT( nn_dttrc ) ! at nit000 or nit000+1 (Leapfrog)111 IF( neuler == 0 .AND. kt == nittrc000) THEN ; r2dt(:) = rdttra(:) * FLOAT( nn_dttrc ) ! at nit000 (Euler) 112 ELSEIF( kt <= nittrc000 + 1 ) THEN ; r2dt(:) = 2.* rdttra(:) * FLOAT( nn_dttrc ) ! at nit000 or nit000+1 (Leapfrog) 113 113 ENDIF 114 114 … … 133 133 DO jn = 1, jptra 134 134 DO jk = 1, jpkm1 135 zfact = 1.e0 / r2dt _t(jk)135 zfact = 1.e0 / r2dt(jk) 136 136 ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact 137 137 CALL trd_tra( kt, 'TRC', jn, jptra_trd_atf, ztrdt ) -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trctrp.F90
r2052 r2082 28 28 USE trcrad ! positivity (trc_rad routine) 29 29 USE trcsbc ! surface boundary condition (trc_sbc routine) 30 USE zpshde ! partial step: hor. derivative (zps_hde_trcroutine)30 USE zpshde ! partial step: hor. derivative (zps_hde routine) 31 31 32 32 #if defined key_agrif … … 74 74 #endif 75 75 CALL trc_zdf( kstp ) ! vertical mixing and after tracer fields 76 IF( ln_zps ) CALL zps_hde _trc( kstp, jptra, trn, gtru, gtrv ) ! Partial steps: now horizontal gradient of passive76 IF( ln_zps ) CALL zps_hde( kstp, jptra, trn, gtru, gtrv ) ! Partial steps: now horizontal gradient of passive 77 77 ! tracers at the bottom ocean level 78 78 CALL trc_nxt( kstp ) ! tracer fields at next time step -
branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/TRP/trczdf.F90
r2052 r2082 80 80 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 81 81 CASE ( -1 ) ! esopa: test all possibility with control print 82 CALL tra_zdf_exp( kt 82 CALL tra_zdf_exp( kt, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra ) 83 83 WRITE(charout, FMT="('zdf1 ')") ; CALL prt_ctl_trc_info(charout) 84 84 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 85 CALL tra_zdf_imp( kt 85 CALL tra_zdf_imp( kt, 'TRC', r2dt, trb, tra, jptra ) 86 86 WRITE(charout, FMT="('zdf2 ')") ; CALL prt_ctl_trc_info(charout) 87 87 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 88 CASE ( 0 ) ; CALL tra_zdf_exp( kt 89 CASE ( 1 ) ; CALL tra_zdf_imp( kt 88 CASE ( 0 ) ; CALL tra_zdf_exp( kt, 'TRC', r2dt, nn_trczdf_exp, trb, tra, jptra ) ! explicit scheme 89 CASE ( 1 ) ; CALL tra_zdf_imp( kt, 'TRC', r2dt, trb, tra, jptra ) ! implicit scheme 90 90 91 91 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.