source: trunk/NEMO/TOP_SRC/PISCES/p4zday.F90 @ 935

Last change on this file since 935 was 935, checked in by cetlod, 13 years ago

adding modules for PISCES SMS model, see ticket 141

  • Property svn:executable set to *
File size: 3.5 KB
Line 
1MODULE p4zday
2   !!======================================================================
3   !!                         ***  MODULE p4zday  ***
4   !! TOP :   PISCES compute the day length depending on latitude and the day
5   !!======================================================================
6   !! History :    -   !  1993     (E. Maier-Reimer) Original code GBC 1993
7   !!              -   !  1999     (C. Le Quere)
8   !!             1.0  !  2004     (O. Aumont) Original code
9   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
10   !!----------------------------------------------------------------------
11#if defined key_pisces
12   !!----------------------------------------------------------------------
13   !!   'key_pisces'                                       PISCES bio-model
14   !!----------------------------------------------------------------------
15   !!   p4z_day       :   compute the day length depending on latitude and the day
16   !!----------------------------------------------------------------------
17   USE oce_trc         !
18   USE trp_trc         !
19   USE sms             !
20
21   IMPLICIT NONE
22   PRIVATE
23
24   PUBLIC   p4z_day    ! called in p4zprod.F90
25
26   !! * Shared module variables
27   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::  &  !:
28      strn              !:  Day length in hours
29
30   !!* Substitution
31#  include "domzgr_substitute.h90"
32   !!----------------------------------------------------------------------
33   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
34   !! $Header:$
35   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
36   !!----------------------------------------------------------------------
37
38CONTAINS
39
40   SUBROUTINE p4z_day
41      !!---------------------------------------------------------------------
42      !!                     ***  ROUTINE p4z_day  ***
43      !!
44      !! ** Purpose :   compute the day length depending on latitude and the day
45      !!
46      !! ** Method  : - ???
47      !!---------------------------------------------------------------------
48      INTEGER  ::   ji, jj
49      INTEGER  ::   iyy
50      REAL(wp) ::   zrum, zdelta, zcodel, zphi, zargu
51      !!---------------------------------------------------------------------
52
53      ! Get year
54      ! --------
55
56      iyy = ndastp / 10000
57
58      IF(lwp) write(numout,*)
59      IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year
60      IF(lwp) write(numout,*) '~~~~~~'
61
62
63      IF( nleapy == 1 .AND. MOD( iyy, 4 ) == 0 ) THEN
64         zrum = FLOAT( nday_year - 80 ) / 366.
65      ELSE
66         zrum = FLOAT( nday_year - 80 ) / 365.
67      ENDIF
68
69      zdelta = SIN( zrum * rpi * 2. ) * sin( rpi * 23.5 / 180. )
70      zcodel = ASIN( zdelta )
71
72      DO jj = 1, jpj
73         DO ji = 1, jpi
74            zphi = gphit(ji,jj) * rpi / 180.
75            zargu = TAN( zcodel ) * TAN( zphi )
76            strn(ji,jj) = 0.e0
77            zargu = MIN(  1., zargu )
78            zargu = MAX( -1., zargu )
79            strn(ji,jj) = 24.- 2.* ACOS( zargu ) * 180./ rpi / 15.
80            strn(ji,jj) = MAX( strn(ji,jj), 0.e0 )
81         END DO
82      END DO
83      !
84   END SUBROUTINE p4z_day
85
86#else
87   !!======================================================================
88   !!  Dummy module :                                   No PISCES bio-model
89   !!======================================================================
90CONTAINS
91   SUBROUTINE p4z_day                    ! Empty routine
92   END SUBROUTINE p4z_day
93#endif 
94
95   !!======================================================================
96END MODULE  p4zday
Note: See TracBrowser for help on using the repository browser.