- Timestamp:
- 2010-07-29T17:05:35+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traadv.F90
r2024 r2034 46 46 # include "vectopt_loop_substitute.h90" 47 47 !!---------------------------------------------------------------------- 48 !! NEMO/OPA 3. 2 , LOCEAN-IPSL (2009)48 !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 49 49 !! $Id$ 50 50 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) … … 66 66 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zun, zvn, zwn ! effective transport 67 67 !!---------------------------------------------------------------------- 68 69 ! ! effective transport 68 ! !== effective transport ==! 70 69 DO jk = 1, jpkm1 71 ! ! eulerian transport only 72 zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) 70 zun(:,:,jk) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk) ! eulerian transport only 73 71 zvn(:,:,jk) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk) 74 72 zwn(:,:,jk) = e1t(:,:) * e2t(:,:) * wn(:,:,jk) 75 !76 73 END DO 77 zwn(:,:,jpk) = 0.e0 ! no transport trough the bottom 78 79 ! ! add the eiv transport (if necessary) 80 IF( lk_traldf_eiv ) CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRA' ) 74 zwn(:,:,jpk) = 0.e0 ! no transport trough the bottom 75 ! 76 IF( lk_traldf_eiv ) CALL tra_adv_eiv( kt, zun, zvn, zwn, 'TRA' ) ! add the eiv transport (if necessary) 77 ! 78 CALL iom_put( "uoce_eff", zun ) ! output effective transport 79 CALL iom_put( "voce_eff", zvn ) 80 CALL iom_put( "woce_eff", zwn ) 81 81 82 82 83 SELECT CASE ( nadv ) ! compute advection trend and add it to general trend 84 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt , 'TRA', zun, zvn, zwn, & 85 & tsb, tsn , tsa, jpts ) ! 2nd order centered scheme 86 CASE ( 2 ) ; CALL tra_adv_tvd ( kt , 'TRA', zun, zvn, zwn, & 87 & tsb, tsn , tsa, jpts ) ! TVD scheme 88 CASE ( 3 ) ; CALL tra_adv_muscl ( kt , 'TRA', zun, zvn, zwn, & 89 & tsb, tsa , jpts ) ! MUSCL scheme 90 CASE ( 4 ) ; CALL tra_adv_muscl2( kt , 'TRA', zun, zvn, zwn, & 91 & tsb, tsn , tsa, jpts ) ! MUSCL2 scheme 92 CASE ( 5 ) ; CALL tra_adv_ubs ( kt , 'TRA', zun, zvn, zwn, & 93 & tsb, tsn , tsa, jpts ) ! UBS scheme 94 CASE ( 6 ) ; CALL tra_adv_qck ( kt , 'TRA', zun, zvn, zwn, & 95 & tsb, tsn , tsa, jpts ) ! QUICKEST scheme 83 SELECT CASE ( nadv ) !== compute advection trend and add it to general trend ==! 84 CASE ( 1 ) ; CALL tra_adv_cen2 ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! 2nd order centered 85 CASE ( 2 ) ; CALL tra_adv_tvd ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! TVD 86 CASE ( 3 ) ; CALL tra_adv_muscl ( kt, 'TRA', zun, zvn, zwn, tsb, tsa, jpts ) ! MUSCL 87 CASE ( 4 ) ; CALL tra_adv_muscl2( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! MUSCL2 88 CASE ( 5 ) ; CALL tra_adv_ubs ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! UBS 89 CASE ( 6 ) ; CALL tra_adv_qck ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) ! QUICKEST 96 90 ! 97 CASE (-1 ) ! esopa: test all possibility with control pr 98 CALL tra_adv_cen2 ( kt , 'TRA', zun, zvn, zwn, & 99 & tsb, tsn , tsa, jpts ) 100 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv0 - Ta: ', mask1=tmask, & 101 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 102 CALL tra_adv_tvd ( kt , 'TRA', zun, zvn, zwn, & 103 & tsb, tsn , tsa, jpts ) 104 CALL tra_adv_tvd ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 105 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask, & 106 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 107 CALL tra_adv_muscl ( kt , 'TRA', zun, zvn, zwn, & 108 & tsb, tsa , jpts ) 109 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask, & 110 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 111 CALL tra_adv_muscl2( kt , 'TRA', zun, zvn, zwn, & 112 & tsb, tsn , tsa, jpts ) 113 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv4 - Ta: ', mask1=tmask, & 114 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 115 CALL tra_adv_ubs ( kt , 'TRA', zun, zvn, zwn, & 116 & tsb, tsn , tsa, jpts ) 117 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv5 - Ta: ', mask1=tmask, & 118 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 119 CALL tra_adv_qck ( kt , 'TRA', zun, zvn, zwn, & 120 & tsb, tsn , tsa, jpts ) 121 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv6 - Ta: ', mask1=tmask, & 122 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 91 CASE (-1 ) !== esopa: test all possibility with control print ==! 92 CALL tra_adv_cen2 ( kt , 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 93 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv0 - Ta: ', mask1=tmask, & 94 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 95 CALL tra_adv_tvd ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 96 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask, & 97 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 98 CALL tra_adv_muscl ( kt, 'TRA', zun, zvn, zwn, tsb, tsa, jpts ) 99 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask, & 100 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 101 CALL tra_adv_muscl2( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 102 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv4 - Ta: ', mask1=tmask, & 103 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 104 CALL tra_adv_ubs ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 105 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv5 - Ta: ', mask1=tmask, & 106 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 107 CALL tra_adv_qck ( kt, 'TRA', zun, zvn, zwn, tsb, tsn, tsa, jpts ) 108 CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv6 - Ta: ', mask1=tmask, & 109 & tab3d_2=tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 123 110 ! 124 111 END SELECT 125 126 CALL iom_put( "uoce_eff", zun ) ! effective i-current127 CALL iom_put( "voce_eff", zvn ) ! effective j-current128 CALL iom_put( "woce_eff", zwn ) ! effective vert. current129 112 130 113 ! ! print mean trends (used for debugging)
Note: See TracChangeset
for help on using the changeset viewer.