Changeset 763 for branches/dev_001_GM/NEMO/TOP_SRC/trclec.F90
- Timestamp:
- 2007-12-13T14:52:50+01:00 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_001_GM/NEMO/TOP_SRC/trclec.F90
r719 r763 1 1 MODULE trclec 2 !!========================================================================== 3 !! 4 !! *** MODULE trclec *** 5 !! Read and print options for the passive tracer run (namelist) 6 !! O.Aumont and A.El Moussaoui 03/05 F90 7 !!========================================================================= 8 !! TOP 1.0, LOCEAN-IPSL (2005) 9 !! $Header$ 10 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 2 !!====================================================================== 3 !! *** MODULE trclec *** 4 !! TOP : Read and print options for the passive tracer run (namelist) 5 !!====================================================================== 6 !! History : - ! 1996-11 (M.A. Foujols, M. Levy) original code 7 !! - ! 1998-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal mixing 8 !! - ! 1999-10 (M.A. Foujols, M. Levy) separation of sms 9 !! - ! 2000-07 (A. Estublier) add TVD and MUSCL : Tests on ndttrc 10 !! - ! 2000-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 11 !! - ! 2001-01 (E Kestenare) suppress ndttrc=1 for CEN2 and TVD schemes 12 !! 1.0 ! 2005-03 (O. Aumont, A. El Moussaoui) F90 11 13 !!---------------------------------------------------------------------- 12 14 #if defined key_passivetrc 13 !! * Modules used 14 !! ============== 15 !!---------------------------------------------------------------------- 16 !! 'key_passivetrc' Passive tracers 17 !!---------------------------------------------------------------------- 18 !! trc_lec : Read and print options for the passive tracer run (namelist) 19 !!---------------------------------------------------------------------- 15 20 USE oce_trc 16 21 USE trc … … 21 26 PRIVATE 22 27 23 !! * Accessibility 24 PUBLIC trc_lec 25 26 #include "passivetrc_substitute.h90" 28 PUBLIC trc_lec ! called in ??? 29 30 !! * Substitutions 31 # include "passivetrc_substitute.h90" 32 !!---------------------------------------------------------------------- 33 !! NEMO/TOP 1.0 , LOCEAN-IPSL (2005) 34 !! $Header:$ 35 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 36 !!---------------------------------------------------------------------- 27 37 28 38 CONTAINS … … 30 40 SUBROUTINE trc_lec 31 41 !!--------------------------------------------------------------------- 32 !! ROUTINE trclec 33 !! ****************** 34 !! PURPOSE : 35 !! --------- 36 !! READ and PRINT options for the passive tracer run (namelist) 42 !! *** ROUTINE trc_lec *** 37 43 !! 38 !! History: 39 !! -------- 40 !! original : 96-11 (M.A. Foujols, M. Levy) passive tracer 41 !! modification : 98-04 (M.A Foujols, L. Bopp) ahtrb0 for isopycnal 42 !! diffusion 43 !! modification : 99-10(M.A. Foujols, M. Levy) separation of sms 44 !! additions : 00-05(A. Estublier) TVD Limiter Scheme : Tests 45 !! on ndttrc 46 !! additions : 00-06(A. Estublier) MUSCL Scheme : Tests 47 !! on ndttrc 48 !! additions : 00-07(A. Estublier) PPM Scheme : Tests on ndttrc 49 !! modification : 00-11 (M.A Foujols, E Kestenare) trcrat, ahtrc0 and aeivtr0 50 !! modification : 01-01 (E Kestenare) suppress ndttrc=1 51 !! for Arakawa and TVD schemes 52 !! O.Aumont and A.El Moussaoui 03/05 F90 53 !!---------------------------------------------------------------------- 54 55 !! local declarations 56 !! ================== 57 44 !! ** Purpose : READ and PRINT options for the passive tracer run (namelist) 45 !! 46 !! ** Method : - read namelist 47 !!--------------------------------------------------------------------- 58 48 INTEGER :: ji 59 49 CHARACTER (len=32) :: clname 60 50 !! 51 NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, ctrcnm, ctrcnl, ctrcun, lutini ! general 52 NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster 53 #if defined key_trc_diatrd 54 NAMELIST/natrtd/ luttrd, nwritetrd ! dynamical trends 55 #endif 56 #if defined key_trc_diaadd 57 NAMELIST/natadd/ ctrc3d, ctrc3l, ctrc2d, ctrc2l, ctrc3u, ctrc2u, nwriteadd ! additional diagnostics 58 #endif 61 59 !!--------------------------------------------------------------------- 62 !! OPA.90 03/2005 63 !!--------------------------------------------------------------------- 64 65 !! 0. initializations 66 !! ------------------ 67 68 namelist/nattrc/nwritetrc,lrsttr,nrsttr, ctrcnm,ctrcnl,ctrcun,lutini !general 69 70 namelist/natnum/rsc,rtrn,ncortrc,ndttrc,crosster 71 72 #if defined key_trc_diatrd 73 namelist/natrtd/luttrd,nwritetrd ! dynamical trends 74 #endif 75 76 #if defined key_trc_diaadd 77 namelist/natadd/ctrc3d,ctrc3l,ctrc2d,ctrc2l, ctrc3u, ctrc2u, & 78 nwriteadd !additional diagnostics 79 #endif 80 81 IF(lwp) THEN 82 WRITE(numout,*) ' ' 83 WRITE(numout,*) ' ROUTINE trclec' 84 WRITE(numout,*) ' **************' 85 WRITE(numout,*) ' ' 86 WRITE(numout,*) ' namelist for passive tracer' 87 WRITE(numout,*) ' ***************************' 88 WRITE(numout,*) ' ' 89 ENDIF 90 91 clname='namelist.passivetrc' 60 61 IF(lwp) WRITE(numout,*) 62 IF(lwp) WRITE(numout,*) 'trc_lec : read the passive tracer namelists' 63 IF(lwp) WRITE(numout,*) '~~~~~~~' 64 65 clname = 'namelist.passivetrc' 92 66 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', & 93 67 & 1, numout, .FALSE., 1 ) 94 68 95 69 96 !! 1., 2. & 3. initialization with namelist files 97 !! ---------------------------------------------- 98 !! 1.0 namelist nattrc : 99 100 nwritetrc = 10 101 lrsttr=.FALSE. 102 nrsttr = 0 103 104 DO ji=1,jptra 105 WRITE (ctrcnm(ji),'("TR_",I1)') ji 106 WRITE (ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 107 ctrcun(ji)='mmole/m3' 108 lutini(ji)=.FALSE. 109 END DO 110 111 112 REWIND(numnat) 113 READ(numnat,nattrc) 114 115 IF(lwp) THEN 116 WRITE(numout,*) ' ' 117 WRITE(numout,*) 'nattrc' 118 WRITE(numout,*) ' ' 119 WRITE(numout,*) & 120 ' frequency of outputs for passive tracers nwritetrc = ' & 121 ,nwritetrc 122 WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ', & 123 & lrsttr 124 WRITE(numout,*) ' control of time step for p. tr. nrsttr = ', & 125 & nrsttr 126 DO ji=1,jptra 127 WRITE(numout,*) ' tracer nb: ',ji,' name = ',ctrcnm(ji) & 128 & ,ctrcnl(ji) 129 WRITE(numout,*) ' in unit = ',ctrcun(ji) 130 WRITE(numout,*) ' initial value in FILE : ',lutini(ji) 131 WRITE(numout,*) ' ' 132 END DO 133 WRITE(numout,*) ' ' 70 ! Namelist nattrc (files) 71 ! ---------------------------------------------- 72 nwritetrc = 10 ! default values 73 lrsttr = .FALSE. 74 nrsttr = 0 75 DO ji = 1, jptra 76 WRITE(ctrcnm(ji),'("TR_",I1)' ) ji 77 WRITE(ctrcnl(ji),'("TRACER NUMBER ",I1)') ji 78 ctrcun(ji) = 'mmole/m3' 79 lutini(ji) = .FALSE. 80 END DO 81 82 REWIND( numnat ) ! read nattrc 83 READ ( numnat, nattrc ) 84 85 IF(lwp) THEN ! control print 86 WRITE(numout,*) 87 WRITE(numout,*) ' Namelist : nattrc' 88 WRITE(numout,*) ' frequency of outputs for passive tracers nwritetrc = ', nwritetrc 89 WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ', lrsttr 90 WRITE(numout,*) ' control of time step for p. tr. nrsttr = ', nrsttr 91 DO ji = 1, jptra 92 WRITE(numout,*) ' tracer nb: ', ji, ' name = ', ctrcnm(ji), ctrcnl(ji), ' in unit = ',ctrcun(ji) 93 WRITE(numout,*) ' initial value in FILE : ',lutini(ji) 94 END DO 134 95 ENDIF 135 96 136 97 #if defined key_trc_diatrd 137 98 138 !! 1.2 namelist nattrd : passive tracers dynamical trends 139 140 nwritetrd=10 141 142 !! default : no dynamical trend recording 143 !! -------------------------------------- 144 DO ji=1,jptra 99 ! Namelist natrtd (transport trends) 100 ! ---------------------------------------------- 101 nwritetrd = 10 ! default values (no dynamical trend recording) 102 DO ji = 1, jptra 145 103 luttrd(ji) = .FALSE. 146 104 END DO 147 105 148 REWIND( numnat)149 READ (numnat,natrtd)106 REWIND( numnat ) ! read natrtd 107 READ ( numnat, natrtd ) 150 108 151 109 nkeep=0 152 110 ikeep(:)=0 153 DO ji =1,jptra154 IF (luttrd(ji)) THEN155 nkeep =nkeep+1111 DO ji = 1, jptra 112 IF( luttrd(ji) ) THEN 113 nkeep = nkeep + 1 156 114 ikeep(ji)=nkeep 157 115 END IF 158 116 END DO 159 IF (nkeep.GT.0) THEN160 IF (.NOT. ALLOCATED(trtrd)) ALLOCATE(trtrd(jpi,jpj,jpk,nkeep,jpdiatrc))161 trtrd(:,:,:,:,:) =0.0117 IF( nkeep > 0 ) THEN 118 IF(.NOT. ALLOCATED( trtrd ) ) ALLOCATE( trtrd(jpi,jpj,jpk,nkeep,jpdiatrc) ) 119 trtrd(:,:,:,:,:) = 0.e0 162 120 ENDIF 163 IF(lwp) THEN 164 WRITE(numout,*) 'natrtd' 165 WRITE(numout,*) ' ' 166 WRITE(numout,*) & 167 ' frequency of outputs for dynamical trends nwritetrd = ' & 168 ,nwritetrd 169 DO ji=1,jptra 170 WRITE(numout,*) & 171 ' keep dynamical trends for tracer number :',ji & 172 ,luttrd(ji), ikeep(ji) 173 END DO 174 WRITE(numout,*) 'total = ',nkeep,' tracers dyn trends saved' 175 WRITE(numout,*) 'size of trtrd = ',jpi*jpj*jpk*nkeep*jpdiatrc 176 ENDIF 177 #endif 178 179 !!1.3 namelist natadd : passive tracers diagnostics 180 !!------------------------------------------------- 121 122 IF(lwp) THEN ! control print 123 WRITE(numout,*) 124 WRITE(numout,*) ' Namelist : natrtd' 125 WRITE(numout,*) ' frequency of outputs for dynamical trends nwritetrd = ', nwritetrd 126 DO ji = 1, jptra 127 WRITE(numout,*) ' keep dynamical trends for tracer number :', ji, luttrd(ji), ikeep(ji) 128 END DO 129 WRITE(numout,*) ' total = ', nkeep, ' tracers dyn trends saved' 130 WRITE(numout,*) ' size of trtrd = ', jpi*jpj*jpk*nkeep*jpdiatrc 131 ENDIF 132 #endif 181 133 182 134 #if defined key_trc_diaadd 183 135 184 nwriteadd = 10 185 186 !! default value for 3D output arrays : short and long name, units 187 188 DO ji=1,jpdia3d 189 WRITE (ctrc3d(ji),'("3D_",I1)') ji 190 WRITE (ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji 191 ctrc3u(ji)=' ' 192 END DO 193 194 195 !! default value for 2D output arrays : short and long name, units 196 !! --------------------------------------------------------------- 197 DO ji=1,jpdia2d 198 WRITE (ctrc2d(ji),'("2D_",I1)') ji 199 WRITE (ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji 200 ctrc2u(ji)=' ' 201 END DO 202 203 REWIND(numnat) 204 READ(numnat,natadd) 205 206 IF(lwp) THEN 207 WRITE(numout,*) ' natadd' 208 WRITE(numout,*) ' ' 209 WRITE(numout,*) & 210 ' frequency of outputs for additional arrays nwriteadd = ' & 211 ,nwriteadd 212 DO ji=1,jpdia3d 213 WRITE(numout,*) & 214 'name of 3d output field number :',ji,' : ',ctrc3d(ji) 215 WRITE(numout,*) ctrc3l(ji) 216 WRITE(numout,*) ' in unit = ',ctrc3u(ji) 217 END DO 218 WRITE(numout,*) ' ' 219 DO ji=1,jpdia2d 220 WRITE(numout,*) & 221 'name of 2d output field number :',ji,' : ',ctrc2d(ji) 222 WRITE(numout,*) ctrc2l(ji) 223 WRITE(numout,*) ' in unit = ',ctrc2u(ji) 224 END DO 225 WRITE(numout,*) ' ' 226 ENDIF 227 #endif 228 229 !! 1.1 namelist natnum : 230 !! --------------------- 231 rsc=1. 232 rtrn=1.e-15 233 ncortrc=1 234 ndttrc=4 235 crosster=.FALSE. 236 237 REWIND(numnat) 238 READ(numnat,natnum) 239 240 !!Chris computes the first time step of tracer model 136 ! Namelist natrtd (transport trends) 137 ! ---------------------------------------------- 138 nwriteadd = 10 ! default values 139 ! ! 3D output arrays 140 DO ji = 1, jpdia3d 141 WRITE(ctrc3d(ji),'("3D_",I1)') ji ! short name 142 WRITE(ctrc3l(ji),'("3D DIAGNOSTIC NUMBER ",I2)') ji ! long name 143 ctrc3u(ji) = ' ' ! units 144 END DO 145 ! ! 2D output arrays 146 DO ji = 1, jpdia2d 147 WRITE(ctrc2d(ji),'("2D_",I1)') ji ! short name 148 WRITE(ctrc2l(ji),'("2D DIAGNOSTIC NUMBER ",I2)') ji ! long name 149 ctrc2u(ji) = ' ' ! units 150 END DO 151 152 REWIND( numnat ) ! read natrtd 153 READ ( numnat, natadd ) 154 155 IF(lwp) THEN ! control print 156 WRITE(numout,*) 157 WRITE(numout,*) ' Namelist : natadd' 158 WRITE(numout,*) ' frequency of outputs for additional arrays nwriteadd = ', nwriteadd 159 DO ji = 1, jpdia3d 160 WRITE(numout,*) ' 3d output field No :',ji,' names ',ctrc3d(ji), ctrc3l(ji), ' in ', ctrc3u(ji) 161 END DO 162 DO ji = 1, jpdia2d 163 WRITE(numout,*) ' 2d output field No :',ji,' names ',ctrc2d(ji), ctrc2l(ji), ' in ', ctrc2u(ji) 164 END DO 165 ENDIF 166 #endif 167 168 !! Namelist natnum : 169 !! ----------------- 170 rsc = 1. ! default values 171 rtrn = 1.e-15 172 ncortrc = 1 173 ndttrc = 4 174 crosster = .FALSE. 175 176 REWIND( numnat ) ! read natnum 177 READ ( numnat, natnum ) 178 179 !!Chris computes the first time step of tracer model 241 180 nittrc000 = nit000 + ndttrc - 1 242 181 243 IF(lwp) THEN 244 WRITE(numout,*) ' ' 245 WRITE(numout,*) 'natnum' 246 WRITE(numout,*) ' ' 247 WRITE(numout,*) ' tuning coefficient rsc = ', & 248 rsc 249 WRITE(numout,*) ' truncation value rtrn = ', & 250 rtrn 251 WRITE(numout,*) ' number of corrective phase ncortrc = ', & 252 ncortrc 253 WRITE(numout,*) ' time step freq. for pass. trac. ndttrc = ', & 254 ndttrc 255 WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', & 256 nittrc000 257 WRITE(numout,*) ' computes or not crossterms crosster = ', & 258 crosster 259 ENDIF 260 261 262 !! namelist of transport 263 !! --------------------- 182 IF(lwp) THEN ! control print 183 WRITE(numout,*) 184 WRITE(numout,*) ' Namelist : natnum' 185 WRITE(numout,*) 186 WRITE(numout,*) ' tuning coefficient rsc = ', rsc 187 WRITE(numout,*) ' truncation value rtrn = ', rtrn 188 WRITE(numout,*) ' number of corrective phase ncortrc = ', ncortrc 189 WRITE(numout,*) ' time step freq. for pass. trac. ndttrc = ', ndttrc 190 WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000 191 WRITE(numout,*) ' computes or not crossterms crosster = ', crosster 192 ENDIF 193 194 ! namelist of transport 195 ! --------------------- 264 196 CALL trc_trp_lec 265 197 266 ! !namelist of SMS267 ! !---------------198 ! namelist of SMS 199 ! --------------- 268 200 CALL trc_lsm 269 201 ! 270 202 END SUBROUTINE trc_lec 271 203 272 204 #else 205 !!---------------------------------------------------------------------- 206 !! Dummy module : No passive tracer 207 !!---------------------------------------------------------------------- 208 CONTAINS 209 SUBROUTINE trc_lec ! Empty routine 210 END SUBROUTINE trc_lec 211 #endif 212 273 213 !!====================================================================== 274 !! Empty module : No passive tracer275 !!======================================================================276 CONTAINS277 278 SUBROUTINE trc_lec279 280 END SUBROUTINE trc_lec281 282 #endif283 284 214 END MODULE trclec
Note: See TracChangeset
for help on using the changeset viewer.