Changeset 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
- Property svn:eol-style deleted
- Property svn:executable deleted
r1152 r2528 8 8 9 9 !!---------------------------------------------------------------------- 10 !! dyn_ldf : update the dynamics trend with the lateral diffusion11 !! dyn_ldf_ ctl: initialization, namelist read, and parameters control10 !! dyn_ldf : update the dynamics trend with the lateral diffusion 11 !! dyn_ldf_init : initialization, namelist read, and parameters control 12 12 !!---------------------------------------------------------------------- 13 13 USE oce ! ocean dynamics and tracers … … 30 30 PRIVATE 31 31 32 PUBLIC dyn_ldf ! called by step module 33 34 INTEGER :: nldf = 0 ! type of lateral diffusion used defined from ln_dynldf_... namlist logicals) 32 PUBLIC dyn_ldf ! called by step module 33 PUBLIC dyn_ldf_init ! called by opa module 34 35 INTEGER :: nldf = -2 ! type of lateral diffusion used defined from ln_dynldf_... namlist logicals) 35 36 36 37 !! * Substitutions 37 38 # include "domzgr_substitute.h90" 38 39 # include "vectopt_loop_substitute.h90" 39 !!---------------------------------------------------------------------- -----------40 !! OPA 9.0 , LOCEAN-IPSL (2005)40 !!---------------------------------------------------------------------- 41 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 41 42 !! $Id$ 42 !! Software governed by the CeCILL licence ( modipsl/doc/NEMO_CeCILL.txt)43 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 43 44 !!---------------------------------------------------------------------- 44 45 … … 55 56 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztrdu, ztrdv ! 3D workspace 56 57 !!---------------------------------------------------------------------- 57 58 IF( kt == nit000 ) CALL dyn_ldf_ctl ! initialisation & control of options59 58 60 59 IF( l_trddyn ) THEN ! temporary save of ta and sa trends … … 69 68 CASE ( 2 ) ; CALL dyn_ldf_bilap ( kt ) ! iso-level bilaplacian 70 69 CASE ( 3 ) ; CALL dyn_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 70 CASE ( 4 ) ! iso-level laplacian + bilaplacian 71 CALL dyn_ldf_lap ( kt ) 72 CALL dyn_ldf_bilap ( kt ) 73 CASE ( 5 ) ! rotated laplacian + bilaplacian (s-coord) 74 CALL dyn_ldf_iso ( kt ) 75 CALL dyn_ldf_bilapg ( kt ) 71 76 ! 72 77 CASE ( -1 ) ! esopa: test all possibility with control print … … 83 88 CALL prt_ctl( tab3d_1=ua, clinfo1=' ldf3 - Ua: ', mask1=umask, & 84 89 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 90 ! 91 CASE ( -2 ) ! neither laplacian nor bilaplacian schemes used 92 IF( kt == nit000 ) THEN 93 IF(lwp) WRITE(numout,*) 94 IF(lwp) WRITE(numout,*) 'dyn_ldf : no lateral diffusion on momentum setup' 95 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 96 ENDIF 85 97 END SELECT 86 98 … … 97 109 98 110 99 SUBROUTINE dyn_ldf_ ctl100 !!---------------------------------------------------------------------- 101 !! *** ROUTINE dyn_ldf_ ctl***111 SUBROUTINE dyn_ldf_init 112 !!---------------------------------------------------------------------- 113 !! *** ROUTINE dyn_ldf_init *** 102 114 !! 103 115 !! ** Purpose : initializations of the horizontal ocean dynamics physics … … 110 122 IF(lwp) THEN ! Namelist print 111 123 WRITE(numout,*) 112 WRITE(numout,*) 'dyn_ldf_ ctl: Choice of the lateral diffusive operator on dynamics'124 WRITE(numout,*) 'dyn_ldf_init : Choice of the lateral diffusive operator on dynamics' 113 125 WRITE(numout,*) '~~~~~~~~~~~' 114 126 WRITE(numout,*) ' Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' … … 124 136 IF( ln_dynldf_lap ) ioptio = ioptio + 1 125 137 IF( ln_dynldf_bilap ) ioptio = ioptio + 1 126 IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE of the 2 lap/bilap operator type ondynamics' )138 IF( ioptio < 1 ) CALL ctl_warn( ' neither laplacian nor bilaplacian operator set for dynamics' ) 127 139 ioptio = 0 128 140 IF( ln_dynldf_level ) ioptio = ioptio + 1 … … 144 156 IF ( ln_dynldf_iso ) nldf = 1 ! isoneutral ( rotation) 145 157 ENDIF 146 IF ( ln_sco ) THEN ! z-coordinate158 IF ( ln_sco ) THEN ! s-coordinate 147 159 IF ( ln_dynldf_level ) nldf = 0 ! iso-level (no rotation) 148 160 IF ( ln_dynldf_hor ) nldf = 1 ! horizontal ( rotation) … … 162 174 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 163 175 ENDIF 164 IF ( ln_sco ) THEN ! z-coordinate176 IF ( ln_sco ) THEN ! s-coordinate 165 177 IF ( ln_dynldf_level ) nldf = 2 ! iso-level (no rotation) 166 178 IF ( ln_dynldf_hor ) nldf = 3 ! horizontal ( rotation) … … 169 181 ENDIF 170 182 183 IF( ln_dynldf_lap .AND. ln_dynldf_bilap ) THEN ! mixed laplacian and bilaplacian operators 184 IF ( ln_zco ) THEN ! z-coordinate 185 IF ( ln_dynldf_level ) nldf = 4 ! iso-level (no rotation) 186 IF ( ln_dynldf_hor ) nldf = 4 ! horizontal (no rotation) 187 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 188 ENDIF 189 IF ( ln_zps ) THEN ! z-coordinate 190 IF ( ln_dynldf_level ) ierr = 1 ! iso-level not allowed 191 IF ( ln_dynldf_hor ) nldf = 4 ! horizontal (no rotation) 192 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 193 ENDIF 194 IF ( ln_sco ) THEN ! s-coordinate 195 IF ( ln_dynldf_level ) nldf = 4 ! iso-level (no rotation) 196 IF ( ln_dynldf_hor ) nldf = 5 ! horizontal ( rotation) 197 IF ( ln_dynldf_iso ) ierr = 2 ! isoneutral ( rotation) 198 ENDIF 199 ENDIF 200 171 201 IF( lk_esopa ) nldf = -1 ! esopa test 172 202 … … 179 209 IF(lwp) THEN 180 210 WRITE(numout,*) 211 IF( nldf == -2 ) WRITE(numout,*) ' neither laplacian nor bilaplacian schemes used' 181 212 IF( nldf == -1 ) WRITE(numout,*) ' ESOPA test All scheme used' 182 213 IF( nldf == 0 ) WRITE(numout,*) ' laplacian operator' 183 IF( nldf == 1 ) WRITE(numout,*) ' Rotated laplacian operator'214 IF( nldf == 1 ) WRITE(numout,*) ' rotated laplacian operator' 184 215 IF( nldf == 2 ) WRITE(numout,*) ' bilaplacian operator' 185 IF( nldf == 3 ) WRITE(numout,*) ' Rotated bilaplacian' 186 ENDIF 187 ! 188 END SUBROUTINE dyn_ldf_ctl 216 IF( nldf == 3 ) WRITE(numout,*) ' rotated bilaplacian' 217 IF( nldf == 4 ) WRITE(numout,*) ' laplacian and bilaplacian operators' 218 IF( nldf == 5 ) WRITE(numout,*) ' rotated laplacian and bilaplacian operators' 219 ENDIF 220 ! 221 END SUBROUTINE dyn_ldf_init 189 222 190 223 !!======================================================================
Note: See TracChangeset
for help on using the changeset viewer.