Changeset 6005 for branches/2015/dev_MetOffice_merge_2015/NEMOGCM
- Timestamp:
- 2015-12-04T17:22:59+01:00 (9 years ago)
- Location:
- branches/2015/dev_MetOffice_merge_2015/NEMOGCM
- Files:
-
- 8 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/CONFIG/SHARED/field_def.xml
r5930 r6005 40 40 <field id="sstgrad2" long_name="square of module of sst gradient" unit="degC2/m2" /> 41 41 <field id="sbt" long_name="sea bottom temperature" unit="degC" /> 42 42 <field id="sst_wl" long_name="Delta SST of warm layer" unit="degC" /> 43 <field id="sst_cs" long_name="Delta SST of cool skin" unit="degC" /> 44 <field id="temp_3m" long_name="temperature at 3m" unit="degC" /> 45 43 46 <field id="sss" long_name="sea surface salinity" standard_name="sea_surface_salinity" unit="1e-3" /> 44 47 <field id="sss2" long_name="square of sea surface salinity" unit="1e-6" > sss * sss </field > -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/CONFIG/SHARED/namelist_ref
r5998 r6005 1241 1241 rn_htrmax = 200.0 ! max. depth of transition range 1242 1242 / 1243 !----------------------------------------------------------------------- 1244 &namdiu ! Cool skin and warm layer modesl 1245 !----------------------------------------------------------------------- 1246 ln_diurnal = .false. 1247 ln_diurnal_only = .false. 1248 / -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r5930 r6005 53 53 USE lib_mpp ! MPP library 54 54 USE timing ! preformance summary 55 USE diurnal_bulk ! diurnal warm layer 56 USE cool_skin ! Cool skin 55 57 USE wrk_nemo ! working array 56 58 … … 143 145 ENDIF 144 146 147 IF(ln_diurnal) THEN 148 CALL iom_put( "sst_wl" , x_dsst ) ! warm layer 149 CALL iom_put( "sst_cs" , x_csdsst ) ! cool skin 150 ENDIF 151 152 IF( ln_diurnal_only ) RETURN 153 145 154 IF( .NOT.lk_vvl ) THEN 146 155 CALL iom_put( "e3t" , fse3t_n(:,:,:) ) -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90
r5836 r6005 27 27 USE in_out_manager ! I/O manager 28 28 USE iom ! I/O module 29 29 USE diurnal_bulk 30 30 31 IMPLICIT NONE 31 32 PRIVATE … … 128 129 CALL iom_rstput( kt, nitrst, numrow, 'rdt' , rdt ) ! dynamics time step 129 130 CALL iom_rstput( kt, nitrst, numrow, 'rdttra1', rdttra(1) ) ! surface tracer time step 130 131 IF ( .NOT. ln_diurnal_only ) THEN 131 132 CALL iom_rstput( kt, nitrst, numrow, 'ub' , ub ) ! before fields 132 133 CALL iom_rstput( kt, nitrst, numrow, 'vb' , vb ) … … 141 142 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn ) 142 143 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop ) 144 ENDIF 145 146 IF (ln_diurnal) CALL iom_rstput( kt, nitrst, numrow, 'Dsst', x_dsst ) 147 143 148 IF( kt == nitrst ) THEN 144 149 CALL iom_close( numrow ) ! close the restart file (only at last time step) … … 218 223 IF( zrdttra1 /= rdttra(1) ) neuler = 0 219 224 ENDIF 220 ! 225 226 227 ! Diurnal DSST 228 IF( ln_diurnal ) CALL iom_get( numror, jpdom_autoglo, 'Dsst' , x_dsst ) 229 IF ( ln_diurnal_only ) THEN 230 IF(lwp) WRITE( numout, * ) & 231 & "rst_read:- ln_diurnal_only set, setting rhop=rau0" 232 rhop = rau0 233 CALL iom_get( numror, jpdom_autoglo, 'tn' , tsn(:,:,1,jp_tem) ) 234 RETURN 235 ENDIF 236 221 237 IF( iom_varid( numror, 'ub', ldstop = .FALSE. ) > 0 ) THEN 222 238 CALL iom_get( numror, jpdom_autoglo, 'ub' , ub ) ! before fields -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r5836 r6005 54 54 USE bdy_par ! Require lk_bdy 55 55 56 USE diurnal_bulk, ONLY: & 57 & ln_diurnal_only 58 56 59 IMPLICIT NONE 57 60 PRIVATE … … 383 386 IF( nn_fwb /= 0 ) CALL sbc_fwb( kt, nn_fwb, nn_fsbc ) ! control the freshwater budget 384 387 385 IF( nn_closea == 1 ) CALL sbc_clo( kt ) ! treatment of closed sea in the model domain 386 ! ! (update freshwater fluxes) 388 ! treatment of closed sea in the model domain 389 ! (update freshwater fluxes) 390 ! Should not be ran if ln_diurnal_only 391 IF( .NOT.(ln_diurnal_only) .AND. (nn_closea == 1) ) CALL sbc_clo( kt ) 392 387 393 !RBbug do not understand why see ticket 667 388 394 !clem: it looks like it is necessary for the north fold (in certain circumstances). Don't know why. -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r5998 r6005 79 79 #endif 80 80 USE lib_mpp ! distributed memory computing 81 USE diurnal_bulk ! diurnal bulk SST 81 82 #if defined key_iomput 82 83 USE xios ! xIOserver … … 172 173 CALL stp ! AGRIF: time stepping 173 174 #else 174 CALL stp( istp ) ! standard time stepping 175 IF ( .NOT. ln_diurnal_only ) THEN 176 CALL stp( istp ) ! standard time stepping 177 ELSE 178 CALL stp_diurnal( istp ) ! time step only the diurnal SST 179 ENDIF 175 180 #endif 176 181 istp = istp + 1 … … 399 404 IF( ln_nnogather ) CALL nemo_northcomms! northfold neighbour lists (must be done after the masks are defined) 400 405 IF( ln_ctl ) CALL prt_ctl_init ! Print control 406 407 CALL diurnal_sst_bulk_init ! diurnal sst 408 IF ( ln_diurnal ) CALL diurnal_sst_coolskin_init ! cool skin 409 410 ! IF ln_diurnal_only, then we only want a subset of the initialisation routines 411 IF ( ln_diurnal_only ) THEN 412 CALL istate_init ! ocean initial state (Dynamics and tracers) 413 CALL sbc_init ! Forcings : surface module 414 CALL tra_qsr_init ! penetrative solar radiation qsr 415 IF( lk_diaobs ) THEN ! Observation & model comparison 416 CALL dia_obs_init ! Initialize observational data 417 CALL dia_obs( nit000 - 1 ) ! Observation operator for restart 418 ENDIF 419 ! ! Assimilation increments 420 IF( lk_asminc ) CALL asm_inc_init ! Initialize assimilation increments 421 422 IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler 423 RETURN 424 ENDIF 425 401 426 CALL istate_init ! ocean initial state (Dynamics and tracers) 402 427 -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/step.F90
r5998 r6005 40 40 PRIVATE 41 41 42 PUBLIC stp ! called by nemogcm.F9042 PUBLIC stp, stp_diurnal ! called by nemogcm.F90 43 43 44 44 !! * Substitutions … … 232 232 233 233 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 234 ! diagnostics and outputs 234 ! cool skin 235 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 236 IF ( ln_diurnal ) THEN 237 IF ( .NOT. ln_blk_core ) THEN 238 CALL ctl_stop("step.f90: diurnal flux processing not implemented"//& 239 & " for direct forcing") 240 ENDIF 241 CALL diurnal_sst_coolskin_step( & 242 qns, taum, rhop(:,:,1), rdt) 243 ENDIF 244 245 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 246 ! diagnostics and outputs (ua, va, tsa used as workspace) 235 247 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 236 248 IF( lk_floats ) CALL flo_stp( kstp ) ! drifting Floats … … 244 256 ! 245 257 IF( ln_crs ) CALL crs_fld ( kstp ) ! ocean model: online field coarsening & output 246 258 259 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 260 ! diurnal warm layer 261 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 262 IF ( ln_diurnal ) THEN 263 IF( kstp == nit000 )THEN 264 CALL diurnal_sst_takaya_step( & 265 & qsr, qns, taum, rhop(:,:,1), & 266 & rdt, ld_calcfrac = .TRUE.) 267 ELSE 268 CALL diurnal_sst_takaya_step( & 269 & qsr, qns, taum, rhop(:,:,1), rdt ) 270 ENDIF 271 ENDIF 272 273 247 274 #if defined key_top 248 275 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 354 381 ! 355 382 END SUBROUTINE stp 356 383 384 SUBROUTINE stp_diurnal( kstp ) 385 INTEGER, INTENT(in) :: kstp ! ocean time-step index 386 !!---------------------------------------------------------------------- 387 !! *** ROUTINE stp *** 388 !! 389 !! ** Purpose : - Time stepping of diurnal SST model only 390 !! 391 !! ** Method : -1- Update forcings and data 392 !! -2- Update ocean physics 393 !! -3- Compute the t and s trends 394 !! -4- Update t and s 395 !! -5- Compute the momentum trends 396 !! -6- Update the horizontal velocity 397 !! -7- Compute the diagnostics variables (rd,N2, div,cur,w) 398 !! -8- Outputs and diagnostics 399 !!---------------------------------------------------------------------- 400 INTEGER :: jk ! dummy loop indices 401 INTEGER :: indic ! error indicator if < 0 402 REAL(wp), DIMENSION(jpi,jpj) :: z_fvel_bkginc, z_hflux_bkginc 403 !! --------------------------------------------------------------------- 404 405 indic = 1 ! reset to no error condition 406 407 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 408 409 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell iom we are at time step kstp 410 IF( ln_crs ) THEN 411 CALL iom_setkt( kstp - nit000 + 1, TRIM(cxios_context)//"_crs" ) ! tell iom we are at time step kstp 412 ENDIF 413 414 CALL sbc ( kstp ) ! Sea Boundary Conditions 415 416 ! Cool skin 417 IF ( .NOT.ln_diurnal ) CALL ctl_stop( "stp_diurnal: ln_diurnal not set" ) 418 419 IF ( .NOT. ln_blk_core ) THEN 420 CALL ctl_stop("step.f90: diurnal flux processing not implemented"//& 421 & " for direct forcing") 422 ENDIF 423 424 CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 425 426 CALL dia_wri( kstp ) ! ocean model: outputs 427 428 ! Diurnal warm layer model 429 430 IF( kstp == nit000 )THEN 431 CALL diurnal_sst_takaya_step( & 432 & qsr, qns, taum, rhop(:,:,1), & 433 & rdt, ld_calcfrac = .TRUE.) 434 ELSE 435 CALL diurnal_sst_takaya_step( & 436 & qsr, qns, taum, rhop(:,:,1), rdt ) 437 ENDIF 438 439 IF( lk_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 440 441 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 442 ! Control and restarts 443 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 444 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 445 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 446 447 IF( nn_timing == 1 .AND. kstp == nit000 ) CALL timing_reset 448 449 END SUBROUTINE stp_diurnal 450 357 451 !!====================================================================== 358 452 END MODULE step -
branches/2015/dev_MetOffice_merge_2015/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r5960 r6005 72 72 USE zdfmxl ! Mixed-layer depth (zdf_mxl routine) 73 73 74 USE diurnal_bulk ! diurnal SST bulk routines (diurnal_sst_takaya routine) 75 USE cool_skin ! diurnal cool skin correction (diurnal_sst_coolskin routine) 76 USE sbc_oce ! surface fluxes 77 74 78 USE zpshde ! partial step: hor. derivative (zps_hde routine) 75 79
Note: See TracChangeset
for help on using the changeset viewer.