New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5676 for branches/2015/dev_r5656_Met_Office_3_diurnalSST/NEMOGCM/NEMO/OPA_SRC/step.F90 – NEMO

Ignore:
Timestamp:
2015-08-10T17:39:59+02:00 (9 years ago)
Author:
jwhile
Message:

Adding cool skin and warm layer + associated modifications

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5656_Met_Office_3_diurnalSST/NEMOGCM/NEMO/OPA_SRC/step.F90

    r5656 r5676  
    3737   PRIVATE 
    3838 
    39    PUBLIC   stp   ! called by opa.F90 
     39   PUBLIC   stp, stp_diurnal   ! called by opa.F90 
    4040 
    4141   !! * Substitutions 
     
    227227 
    228228      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     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      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    229241      ! diagnostics and outputs             (ua, va, tsa used as workspace) 
    230242      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     
    238250      ! 
    239251      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       
    241268#if defined key_top 
    242269      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    386413      ! 
    387414   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    
    389483   !!====================================================================== 
    390484END MODULE step 
Note: See TracChangeset for help on using the changeset viewer.