MODULE p4zday !!====================================================================== !! *** MODULE p4zday *** !! TOP : PISCES compute the day length depending on latitude and the day !!====================================================================== !! History : - ! 1993 (E. Maier-Reimer) Original code GBC 1993 !! - ! 1999 (C. Le Quere) !! 1.0 ! 2004 (O. Aumont) Original code !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 !!---------------------------------------------------------------------- #if defined key_pisces !!---------------------------------------------------------------------- !! 'key_pisces' PISCES bio-model !!---------------------------------------------------------------------- !! p4z_day : compute the day length depending on latitude and the day !!---------------------------------------------------------------------- USE oce_trc ! USE trp_trc ! USE sms ! IMPLICIT NONE PRIVATE PUBLIC p4z_day ! called in p4zprod.F90 !!* Substitution # include "domzgr_substitute.h90" !!---------------------------------------------------------------------- !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) !! $Header:$ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE p4z_day !!--------------------------------------------------------------------- !! *** ROUTINE p4z_day *** !! !! ** Purpose : compute the day length depending on latitude and the day !! !! ** Method : - ??? !!--------------------------------------------------------------------- INTEGER :: ji, jj INTEGER :: iyy REAL(wp) :: zrum, zdelta, zcodel, zphi, zargu !!--------------------------------------------------------------------- ! Get year ! -------- iyy = ndastp / 10000 IF(lwp) write(numout,*) IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year IF(lwp) write(numout,*) '~~~~~~' IF( nleapy == 1 .AND. MOD( iyy, 4 ) == 0 ) THEN zrum = FLOAT( nday_year - 80 ) / 366. ELSE zrum = FLOAT( nday_year - 80 ) / 365. ENDIF zdelta = SIN( zrum * rpi * 2. ) * sin( rpi * 23.5 / 180. ) zcodel = ASIN( zdelta ) DO jj = 1, jpj DO ji = 1, jpi zphi = gphit(ji,jj) * rpi / 180. zargu = TAN( zcodel ) * TAN( zphi ) strn(ji,jj) = 0.e0 zargu = MIN( 1., zargu ) zargu = MAX( -1., zargu ) strn(ji,jj) = 24.- 2.* ACOS( zargu ) * 180./ rpi / 15. strn(ji,jj) = MAX( strn(ji,jj), 0.e0 ) END DO END DO ! END SUBROUTINE p4z_day #else !!====================================================================== !! Dummy module : No PISCES bio-model !!====================================================================== CONTAINS SUBROUTINE p4z_day ! Empty routine END SUBROUTINE p4z_day #endif !!====================================================================== END MODULE p4zday