- Timestamp:
- 2015-10-26T10:08:06+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO12_CFL_diags_take2/NEMOGCM/NEMO/OPA_SRC/step.F90
r4714 r5832 24 24 !! - ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase + merge TRC-TRA 25 25 !! 3.4 ! 2011-04 (G. Madec, C. Ethe) Merge of dtatem and dtasal 26 !! ! 2012-07 (J. Simeon, G. Madec. C. Ethe) Online coarsening of outputs 26 !! ! 2012-07 (J. Simeon, G. Madec, C. Ethe) Online coarsening of outputs 27 !! 3.7 ! 2014-04 (F. Roquet, G. Madec) New equations of state 27 28 !!---------------------------------------------------------------------- 28 29 … … 31 32 !!---------------------------------------------------------------------- 32 33 USE step_oce ! time stepping definition modules 34 USE iom 33 35 34 36 IMPLICIT NONE … … 39 41 !! * Substitutions 40 42 # include "domzgr_substitute.h90" 41 # include "zdfddm_substitute.h90"42 !!---------------------------------------------------------------------- 43 !! NEMO/OPA 3. 3 , NEMO Consortium (2010)43 !!gm # include "zdfddm_substitute.h90" 44 !!---------------------------------------------------------------------- 45 !! NEMO/OPA 3.7 , NEMO Consortium (2014) 44 46 !! $Id$ 45 47 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 81 83 IF ( kstp == (nit000 + 1) ) lk_agrif_fstep = .FALSE. 82 84 # if defined key_iomput 83 IF( Agrif_Nbstepint() == 0 ) CALL iom_swap( "nemo")85 IF( Agrif_Nbstepint() == 0 ) CALL iom_swap( cxios_context ) 84 86 # endif 85 87 #endif 86 88 indic = 0 ! reset to no error condition 87 89 IF( kstp == nit000 ) THEN 88 CALL iom_init( "nemo" ) ! iom_put initialization (must be done after nemo_init for AGRIF+XIOS+OASIS) 89 IF( ln_crs ) CALL iom_init( "nemo_crs" ) ! initialize context for coarse grid 90 ! must be done after nemo_init for AGRIF+XIOS+OASIS 91 CALL iom_init( cxios_context ) ! iom_put initialization 92 IF( ln_crs ) CALL iom_init( TRIM(cxios_context)//"_crs" ) ! initialize context for coarse grid 90 93 ENDIF 91 94 92 95 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 93 CALL iom_setkt( kstp - nit000 + 1, "nemo" ) ! say to iom thatwe are at time step kstp94 IF( ln_crs ) CALL iom_setkt( kstp - nit000 + 1, "nemo_crs" ) ! say to iom thatwe are at time step kstp96 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell iom we are at time step kstp 97 IF( ln_crs ) CALL iom_setkt( kstp - nit000 + 1, TRIM(cxios_context)//"_crs" ) ! tell iom we are at time step kstp 95 98 96 99 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 98 101 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 99 102 IF( lk_tide ) CALL sbc_tide( kstp ) 100 IF( lk_bdy ) CALL bdy_dta ( kstp, time_offset=+1 ) ! update dynamic & tracer data at open boundaries 101 103 IF( lk_bdy ) THEN 104 IF( ln_apr_dyn) CALL sbc_apr( kstp ) ! bdy_dta needs ssh_ib 105 CALL bdy_dta ( kstp, time_offset=+1 ) ! update dynamic & tracer data at open boundaries 106 ENDIF 102 107 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 103 108 ! clem: moved here for bdy ice purpose 109 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 110 ! Update stochastic parameters and random T/S fluctuations 111 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 112 CALL sto_par( kstp ) ! Stochastic parameters 104 113 105 114 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 106 115 ! Ocean physics update (ua, va, tsa used as workspace) 107 116 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 108 CALL bn2( tsb, rn2b ) ! before Brunt-Vaisala frequency 109 CALL bn2( tsn, rn2 ) ! now Brunt-Vaisala frequency 117 ! THERMODYNAMICS 118 CALL eos_rab( tsb, rab_b ) ! before local thermal/haline expension ratio at T-points 119 CALL eos_rab( tsn, rab_n ) ! now local thermal/haline expension ratio at T-points 120 CALL bn2 ( tsb, rab_b, rn2b ) ! before Brunt-Vaisala frequency 121 CALL bn2 ( tsn, rab_n, rn2 ) ! now Brunt-Vaisala frequency 110 122 ! 111 123 ! VERTICAL PHYSICS … … 117 129 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 118 130 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm[uv] to the background value) 119 avt (:,:,:) = rn_avt0 * tmask(:,:,:)120 avmu(:,:,:) = rn_avm0 * umask(:,:,:)121 avmv(:,:,:) = rn_avm0 * vmask(:,:,:)131 avt (:,:,:) = rn_avt0 * wmask (:,:,:) 132 avmu(:,:,:) = rn_avm0 * wumask(:,:,:) 133 avmv(:,:,:) = rn_avm0 * wvmask(:,:,:) 122 134 ENDIF 123 135 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths … … 140 152 ! 141 153 IF( lk_ldfslp ) THEN ! slope of lateral mixing 142 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 143 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient 144 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 154 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 155 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 156 IF( ln_zps .AND. .NOT. ln_isfcav) & 157 & CALL zps_hde ( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient 158 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 159 IF( ln_zps .AND. ln_isfcav) & 160 & CALL zps_hde_isf( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps for top cell (ISF) 161 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 162 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the first ocean level 145 163 IF( ln_traldf_grif ) THEN ! before slope for Griffies operator 146 164 CALL ldf_slp_grif( kstp ) … … 152 170 IF( lk_traldf_eiv ) CALL ldf_eiv( kstp ) ! eddy induced velocity coefficient 153 171 #endif 154 #if defined key_traldf_c3d && key_traldf_smag172 #if defined key_traldf_c3d && defined key_traldf_smag 155 173 CALL ldf_tra_smag( kstp ) ! eddy induced velocity coefficient 156 174 # endif 157 #if defined key_dynldf_c3d && key_dynldf_smag175 #if defined key_dynldf_c3d && defined key_dynldf_smag 158 176 CALL ldf_dyn_smag( kstp ) ! eddy induced velocity coefficient 159 177 # endif … … 170 188 ! Note that the computation of vertical velocity above, hence "after" sea level 171 189 ! is necessary to compute momentum advection for the rhs of barotropic loop: 172 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 173 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! zps: now hor. derivative 174 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 190 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 191 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 192 IF( ln_zps .AND. .NOT. ln_isfcav) & 193 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient 194 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 195 IF( ln_zps .AND. ln_isfcav) & 196 & CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps for top cell (ISF) 197 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 198 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 175 199 176 200 ua(:,:,:) = 0.e0 ! set dynamics trends to zero … … 201 225 ! diagnostics and outputs (ua, va, tsa used as workspace) 202 226 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 227 <<<<<<< .working 203 228 IF( lk_floats ) CALL flo_stp( kstp ) ! drifting Floats 204 229 IF( nn_diacfl == 1 ) CALL dia_cfl( kstp ) ! Courant number diagnostics … … 210 235 IF( lk_diaharm ) CALL dia_harm( kstp ) ! Tidal harmonic analysis 211 236 CALL dia_wri( kstp ) ! ocean model: outputs 212 ! 213 IF( ln_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 214 237 ======= 238 IF( lk_floats ) CALL flo_stp( kstp ) ! drifting Floats 239 IF( lk_diahth ) CALL dia_hth( kstp ) ! Thermocline depth (20 degres isotherm depth) 240 IF( .NOT. ln_cpl ) CALL dia_fwb( kstp ) ! Fresh water budget diagnostics 241 IF( lk_diadct ) CALL dia_dct( kstp ) ! Transports 242 IF( lk_diaar5 ) CALL dia_ar5( kstp ) ! ar5 diag 243 IF( lk_diaharm ) CALL dia_harm( kstp ) ! Tidal harmonic analysis 244 CALL dia_wri( kstp ) ! ocean model: outputs 245 >>>>>>> .merge-right.r5518 246 ! 247 IF( ln_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 215 248 216 249 #if defined key_top … … 220 253 CALL trc_stp( kstp ) ! time-stepping 221 254 #endif 255 222 256 223 257 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 237 271 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 238 272 CALL tra_ldf ( kstp ) ! lateral mixing 273 274 IF( ln_diaptr ) CALL dia_ptr ! Poleward adv/ldf TRansports diagnostics 275 239 276 #if defined key_agrif 240 277 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ! tracers sponge … … 245 282 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 246 283 CALL tra_nxt( kstp ) ! tracer fields at next time step 284 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 247 285 CALL eos ( tsa, rhd, rhop, fsdept_n(:,:,:) ) ! Time-filtered in situ density for hpg computation 248 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsa, gtsu, gtsv, & ! zps: time filtered hor. derivative 249 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 250 286 IF( ln_zps .AND. .NOT. ln_isfcav) & 287 & CALL zps_hde ( kstp, jpts, tsa, gtsu, gtsv, & ! Partial steps: before horizontal gradient 288 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 289 IF( ln_zps .AND. ln_isfcav) & 290 & CALL zps_hde_isf( kstp, jpts, tsa, gtsu, gtsv, & ! Partial steps for top cell (ISF) 291 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 292 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 251 293 ELSE ! centered hpg (eos then time stepping) 252 294 IF ( .NOT. lk_dynspg_ts ) THEN ! eos already called in time-split case 253 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 254 IF( ln_zps ) CALL zps_hde( kstp, jpts, tsn, gtsu, gtsv, & ! zps: now hor. derivative 255 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 295 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 296 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 297 IF( ln_zps .AND. .NOT. ln_isfcav) & 298 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient 299 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 300 IF( ln_zps .AND. ln_isfcav) & 301 & CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps for top cell (ISF) 302 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 303 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 256 304 ENDIF 257 305 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection … … 303 351 IF( lk_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 304 352 305 IF( lrst_oce .AND. ln_diahsb ) CALL dia_hsb_rst( kstp, 'WRITE' )306 353 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 307 354 ! Control and restarts … … 315 362 CALL iom_close( numror ) ! close input ocean restart file 316 363 IF(lwm) CALL FLUSH ( numond ) ! flush output namelist oce 317 IF( lwm) CALL FLUSH ( numoni ) ! flush output namelist ice364 IF( lwm.AND.numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice 318 365 ENDIF 319 366 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 320 367 321 368 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 322 ! Trends (ua, va, tsa used as workspace)323 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<324 IF( nstop == 0 ) THEN325 IF( lk_trddyn ) CALL trd_dwr( kstp ) ! trends: dynamics326 IF( lk_trdtra ) CALL trd_twr( kstp ) ! trends: active tracers327 IF( lk_trdmld ) CALL trd_mld( kstp ) ! trends: Mixed-layer328 IF( lk_trdvor ) CALL trd_vor( kstp ) ! trends: vorticity budget329 ENDIF330 331 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>332 369 ! Coupled mode 333 370 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 334 IF( lk_ cpl) CALL sbc_cpl_snd( kstp ) ! coupled mode : field exchanges371 IF( lk_oasis ) CALL sbc_cpl_snd( kstp ) ! coupled mode : field exchanges 335 372 ! 336 373 #if defined key_iomput 337 374 IF( kstp == nitend .OR. indic < 0 ) THEN 338 CALL iom_context_finalize( "nemo") ! needed for XIOS+AGRIF339 IF( ln_crs ) CALL iom_context_finalize( "nemo_crs" ) !375 CALL iom_context_finalize( cxios_context ) ! needed for XIOS+AGRIF 376 IF( ln_crs ) CALL iom_context_finalize( trim(cxios_context)//"_crs" ) ! 340 377 ENDIF 341 378 #endif
Note: See TracChangeset
for help on using the changeset viewer.