Changeset 786 for branches/dev_001_GM/NEMO/OPA_SRC/TRA/trazdf.F90
- Timestamp:
- 2008-01-10T18:11:23+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/OPA_SRC/TRA/trazdf.F90
r719 r786 14 14 USE dom_oce ! ocean space and time domain variables 15 15 USE zdf_oce ! ocean vertical physics variables 16 USE zdfddm ! vertical mixing: double diffusion 16 17 17 18 USE trazdf_exp ! vertical diffusion: explicit (tra_zdf_exp routine) 18 19 USE trazdf_imp ! vertical diffusion: implicit (tra_zdf_imp routine) 19 USE trazdf_imp_jki ! vertical diffusion implicit (tra_zdf_imp_jki routine)20 20 21 21 USE ldftra_oce ! ocean active tracers: lateral physics … … 47 47 # include "vectopt_loop_substitute.h90" 48 48 !!---------------------------------------------------------------------- 49 !! OPA 9.0 , LOCEAN-IPSL (2005)50 !! $ Header$49 !! NEMO/OPA 2.4 , LOCEAN-IPSL (2008) 50 !! $Id:$ 51 51 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 52 52 !!---------------------------------------------------------------------- … … 84 84 SELECT CASE ( nzdf ) ! compute lateral mixing trend and add it to the general trend 85 85 CASE ( -1 ) ! esopa: test all possibility with control print 86 CALL tra_zdf_exp ( kt, r2dt ) 86 CALL tra_zdf_exp ( kt, r2dt, avt , tb, ta ) ! temperature 87 CALL tra_zdf_exp ( kt, r2dt, fsavs(:,:,:), tb, ta ) ! salinity 87 88 CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf0 - Ta: ', mask1=tmask, & 88 89 & tab3d_2=sa, clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 89 CALL tra_zdf_imp ( kt, r2dt ) 90 CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf1 - Ta: ', mask1=tmask, & 91 & tab3d_2=sa, clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 92 CALL tra_zdf_imp_jki( kt, r2dt ) 93 CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf2 - Ta: ', mask1=tmask, & 94 & tab3d_2=sa, clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 90 CALL tra_zdf_imp( kt, r2dt, 'TRA' ) ! T & S zdf trends 95 91 96 92 CASE ( 0 ) ! explicit scheme 97 CALL tra_zdf_exp ( kt, r2dt ) 98 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 93 CALL tra_zdf_exp ( kt, r2dt, avt , tb, ta ) ! temperature 94 CALL tra_zdf_exp ( kt, r2dt, fsavs(:,:,:), tb, ta ) ! salinity 95 IF( l_trdtra ) THEN ! zdf trends diagnostics 99 96 ztrdt(:,:,:) = ta(:,:,:) - ztrdt(:,:,:) 100 97 ztrds(:,:,:) = sa(:,:,:) - ztrds(:,:,:) 101 CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 98 CALL trd_tra( kt, jp_tem, jpt_trd_ldf, 'TRA', ptrd3d=ztrdt) 99 CALL trd_tra( kt, jp_sal, jpt_trd_ldf, 'TRA', ptrd3d=ztrds) 102 100 ENDIF 103 101 104 CASE ( 1 ) ! implicit scheme (k-j-i loop)105 CALL tra_zdf_imp ( kt, r2dt )106 IF( l_trdtra ) THEN ! save the vertical diffusive trends for furtherdiagnostics102 CASE ( 1 ) ! implicit scheme 103 CALL tra_zdf_imp( kt, r2dt, 'TRA' ) ! T & S zdf trends 104 IF( l_trdtra ) THEN ! zdf trends diagnostics 107 105 DO jk = 1, jpkm1 108 106 ztrdt(:,:,jk) = ( ( ta(:,:,jk) - tb(:,:,jk) ) / r2dt(jk) ) - ztrdt(:,:,jk) 109 107 ztrds(:,:,jk) = ( ( sa(:,:,jk) - sb(:,:,jk) ) / r2dt(jk) ) - ztrds(:,:,jk) 110 108 END DO 111 CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 112 ENDIF 113 114 CASE ( 2 ) ! implicit scheme (j-k-i loop) 115 CALL tra_zdf_imp_jki( kt, r2dt ) 116 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 117 DO jk = 1, jpkm1 118 ztrdt(:,:,jk) = ( ( ta(:,:,jk) - tb(:,:,jk) ) / r2dt(jk) ) - ztrdt(:,:,jk) 119 ztrds(:,:,jk) = ( ( sa(:,:,jk) - sb(:,:,jk) ) / r2dt(jk) ) - ztrds(:,:,jk) 120 END DO 121 CALL trd_mod( ztrdt, ztrds, jptra_trd_zdf, 'TRA', kt ) 109 CALL trd_tra( kt, jp_tem, jpt_trd_zdf, 'TRA', ptrd3d=ztrdt) 110 CALL trd_tra( kt, jp_sal, jpt_trd_zdf, 'TRA', ptrd3d=ztrds) 122 111 ENDIF 123 112 … … 127 116 IF(ln_ctl) CALL prt_ctl( tab3d_1=ta, clinfo1=' zdf - Ta: ', mask1=tmask, & 128 117 & tab3d_2=sa, clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 129 118 ! 130 119 END SUBROUTINE tra_zdf 131 120 … … 153 142 154 143 ! Choice from ln_zdfexp already read in namelist in zdfini module 155 IF( ln_zdfexp ) THEN ! use explicit scheme 156 nzdf = 0 157 ELSE ! use implicit scheme 158 nzdf = 1 144 IF( ln_zdfexp ) THEN ; nzdf = 0 ! use explicit scheme 145 ELSE ; nzdf = 1 ! use implicit scheme 159 146 ENDIF 160 147 … … 169 156 ENDIF 170 157 171 ! NEC autotasking / OpenMP172 #if defined key_mpp_omp173 IF( nzdf == 1 ) nzdf = 2 ! j-k-i loop174 #endif175 176 158 ! Test: esopa 177 159 IF( lk_esopa ) nzdf = -1 ! All schemes used … … 184 166 IF( nzdf == 0 ) WRITE(numout,*) ' Explicit time-splitting scheme' 185 167 IF( nzdf == 1 ) WRITE(numout,*) ' Implicit (euler backward) scheme' 186 IF( nzdf == 2 ) WRITE(numout,*) ' Implicit (euler backward) scheme with j-k-i loops'187 168 ENDIF 188 169
Note: See TracChangeset
for help on using the changeset viewer.