- Timestamp:
- 2011-11-14T18:39:45+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NOC_UKMO_MERGE/NEMOGCM/NEMO/TOP_SRC/TRP/trcldf.F90
r3094 r3101 2 2 !!====================================================================== 3 3 !! *** MODULE trcldf *** 4 !! Ocean Passive tracers : lateral diffusive trends 4 !! Ocean Passive tracers : lateral diffusive trends 5 5 !!===================================================================== 6 6 !! History : 9.0 ! 2005-11 (G. Madec) Original code 7 !! NEMO 3.0 ! 2008-01 (C. Ethe, G. Madec) merge TRC-TRA 7 !! NEMO 3.0 ! 2008-01 (C. Ethe, G. Madec) merge TRC-TRA 8 8 !!---------------------------------------------------------------------- 9 9 #if defined key_top … … 23 23 USE traldf_bilap ! lateral mixing (tra_ldf_bilap routine) 24 24 USE traldf_iso ! lateral mixing (tra_ldf_iso routine) 25 USE traldf_iso_grif ! lateral mixing (tra_ldf_iso_grif routine) 25 26 USE traldf_lap ! lateral mixing (tra_ldf_lap routine) 26 27 USE trdmod_oce … … 31 32 PRIVATE 32 33 33 PUBLIC trc_ldf ! called by step.F90 34 PUBLIC trc_ldf ! called by step.F90 34 35 ! !!: ** lateral mixing namelist (nam_trcldf) ** 35 36 INTEGER :: nldf = 0 ! type of lateral diffusion used defined from ln_trcldf_... namlist logicals) … … 39 40 !!---------------------------------------------------------------------- 40 41 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 41 !! $Id$ 42 !! $Id$ 42 43 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 43 44 !!---------------------------------------------------------------------- … … 48 49 !!---------------------------------------------------------------------- 49 50 !! *** ROUTINE tra_ldf *** 50 !! 51 !! 51 52 !! ** Purpose : compute the lateral ocean tracer physics. 52 53 !! … … 61 62 IF( kt == nittrc000 ) CALL ldf_ctl ! initialisation & control of options 62 63 63 IF( l_trdtrc ) THEN 64 IF( l_trdtrc ) THEN 64 65 ALLOCATE( ztrtrd(jpi,jpj,jpk,jptra) ) ! temporary save of trends 65 66 ztrtrd(:,:,:,:) = tra(:,:,:,:) … … 68 69 SELECT CASE ( nldf ) ! compute lateral mixing trend and add it to the general trend 69 70 CASE ( 0 ) ; CALL tra_ldf_lap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra ) ! iso-level laplacian 70 CASE ( 1 ) ; CALL tra_ldf_iso ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) ! rotated laplacian 71 CASE ( 1 ) ! rotated laplacian 72 IF( ln_traldf_grif ) THEN 73 CALL tra_ldf_iso_grif( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 74 ELSE 75 CALL tra_ldf_iso ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 76 ENDIF 71 77 CASE ( 2 ) ; CALL tra_ldf_bilap ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra ) ! iso-level bilaplacian 72 78 CASE ( 3 ) ; CALL tra_ldf_bilapg( kt, nittrc000, 'TRC', trb, tra, jptra ) ! s-coord. horizontal bilaplacian … … 76 82 WRITE(charout, FMT="('ldf0 ')") ; CALL prt_ctl_trc_info(charout) 77 83 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 78 CALL tra_ldf_iso ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 84 IF( ln_traldf_grif ) THEN 85 CALL tra_ldf_iso_grif( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 86 ELSE 87 CALL tra_ldf_iso ( kt, nittrc000, 'TRC', gtru, gtrv, trb, tra, jptra, rn_ahtb_0 ) 88 ENDIF 79 89 WRITE(charout, FMT="('ldf1 ')") ; CALL prt_ctl_trc_info(charout) 80 90 CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) … … 92 102 CALL trd_tra( kt, 'TRC', jn, jptra_trd_ldf, ztrtrd(:,:,:,jn) ) 93 103 END DO 94 DEALLOCATE( ztrtrd ) 104 DEALLOCATE( ztrtrd ) 95 105 ENDIF 96 106 ! ! print mean trends (used for debugging) … … 106 116 !!---------------------------------------------------------------------- 107 117 !! *** ROUTINE ldf_ctl *** 108 !! 118 !! 109 119 !! ** Purpose : Choice of the operator for the lateral tracer diffusion 110 120 !! 111 121 !! ** Method : set nldf from the namtra_ldf logicals 112 !! nldf == -2 No lateral diffusion 122 !! nldf == -2 No lateral diffusion 113 123 !! nldf == -1 ESOPA test: ALL operators are used 114 124 !! nldf == 0 laplacian operator … … 117 127 !! nldf == 3 Rotated bilaplacian 118 128 !!---------------------------------------------------------------------- 119 INTEGER :: ioptio, ierr ! temporary integers 129 INTEGER :: ioptio, ierr ! temporary integers 120 130 !!---------------------------------------------------------------------- 121 131 122 132 ! Define the lateral mixing oparator for tracers 123 133 ! =============================================== 124 134 125 135 ! ! control the input 126 136 ioptio = 0 … … 163 173 ENDIF 164 174 IF ( ln_zps ) THEN ! z-coordinate 165 IF ( ln_trcldf_level ) ierr = 1 ! iso-level not allowed 175 IF ( ln_trcldf_level ) ierr = 1 ! iso-level not allowed 166 176 IF ( ln_trcldf_hor ) nldf = 2 ! horizontal (no rotation) 167 177 IF ( ln_trcldf_iso ) ierr = 2 ! isoneutral ( rotation)
Note: See TracChangeset
for help on using the changeset viewer.