- Timestamp:
- 2015-08-10T17:39:59+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5656_Met_Office_3_diurnalSST/NEMOGCM/NEMO/OPA_SRC/step.F90
r5656 r5676 37 37 PRIVATE 38 38 39 PUBLIC stp ! called by opa.F9039 PUBLIC stp, stp_diurnal ! called by opa.F90 40 40 41 41 !! * Substitutions … … 227 227 228 228 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 229 ! cool skin 230 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 231 IF ( ln_diurnal ) THEN 232 IF ( .NOT. ln_blk_core ) THEN 233 CALL ctl_stop("step.f90: diurnal flux processing not implemented"//& 234 & " for direct forcing") 235 ENDIF 236 CALL diurnal_sst_coolskin_step( & 237 qns, taum, rhop(:,:,1), rdt) 238 ENDIF 239 240 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 229 241 ! diagnostics and outputs (ua, va, tsa used as workspace) 230 242 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 238 250 ! 239 251 IF( ln_crs ) CALL crs_fld( kstp ) ! ocean model: online field coarsening & output 240 252 253 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 254 ! diurnal warm layer 255 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 256 IF ( ln_diurnal ) THEN 257 IF( kstp == nit000 )THEN 258 CALL diurnal_sst_takaya_step( & 259 & qsr, qns, taum, rhop(:,:,1), & 260 & rdt, ld_calcfrac = .TRUE.) 261 ELSE 262 CALL diurnal_sst_takaya_step( & 263 & qsr, qns, taum, rhop(:,:,1), rdt ) 264 ENDIF 265 ENDIF 266 267 241 268 #if defined key_top 242 269 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 386 413 ! 387 414 END SUBROUTINE stp 388 415 416 SUBROUTINE stp_diurnal( kstp ) 417 INTEGER, INTENT(in) :: kstp ! ocean time-step index 418 !!---------------------------------------------------------------------- 419 !! *** ROUTINE stp *** 420 !! 421 !! ** Purpose : - Time stepping of diurnal SST model only 422 !! 423 !! ** Method : -1- Update forcings and data 424 !! -2- Update ocean physics 425 !! -3- Compute the t and s trends 426 !! -4- Update t and s 427 !! -5- Compute the momentum trends 428 !! -6- Update the horizontal velocity 429 !! -7- Compute the diagnostics variables (rd,N2, div,cur,w) 430 !! -8- Outputs and diagnostics 431 !!---------------------------------------------------------------------- 432 INTEGER :: jk ! dummy loop indices 433 INTEGER :: indic ! error indicator if < 0 434 REAL(wp), DIMENSION(jpi,jpj) :: z_fvel_bkginc, z_hflux_bkginc 435 !! --------------------------------------------------------------------- 436 437 indic = 1 ! reset to no error condition 438 439 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 440 441 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell iom we are at time step kstp 442 IF( ln_crs ) THEN 443 CALL iom_setkt( kstp - nit000 + 1, TRIM(cxios_context)//"_crs" ) ! tell iom we are at time step kstp 444 ENDIF 445 446 CALL sbc ( kstp ) ! Sea Boundary Conditions 447 448 ! Cool skin 449 IF ( .NOT.ln_diurnal ) CALL ctl_stop( "stp_diurnal: ln_diurnal not set" ) 450 451 IF ( .NOT. ln_blk_core ) THEN 452 CALL ctl_stop("step.f90: diurnal flux processing not implemented"//& 453 & " for direct forcing") 454 ENDIF 455 456 CALL diurnal_sst_coolskin_step( qns, taum, rhop(:,:,1), rdt) 457 458 CALL dia_wri( kstp ) ! ocean model: outputs 459 460 ! Diurnal warm layer model 461 462 IF( kstp == nit000 )THEN 463 CALL diurnal_sst_takaya_step( & 464 & qsr, qns, taum, rhop(:,:,1), & 465 & rdt, ld_calcfrac = .TRUE.) 466 ELSE 467 CALL diurnal_sst_takaya_step( & 468 & qsr, qns, taum, rhop(:,:,1), rdt ) 469 ENDIF 470 471 IF( lk_diaobs ) CALL dia_obs( kstp ) ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 472 473 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 474 ! Control and restarts 475 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 476 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 477 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 478 479 IF( nn_timing == 1 .AND. kstp == nit000 ) CALL timing_reset 480 481 END SUBROUTINE stp_diurnal 482 389 483 !!====================================================================== 390 484 END MODULE step
Note: See TracChangeset
for help on using the changeset viewer.