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.
p4zint.F90 in NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z – NEMO

source: NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zint.F90 @ 14276

Last change on this file since 14276 was 14276, checked in by aumont, 3 years ago

numerous updates to PISCES, PISCES-QUOTA and the sediment module

  • Property svn:keywords set to Id
File size: 3.9 KB
Line 
1MODULE p4zint
2   !!=========================================================================
3   !!                         ***  MODULE p4zint  ***
4   !! TOP :   PISCES interpolation and computation of various accessory fields
5   !!=========================================================================
6   !! History :   1.0  !  2004-03 (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!----------------------------------------------------------------------
9   !!   p4z_int        :  interpolation and computation of various accessory fields
10   !!----------------------------------------------------------------------
11   USE oce_trc         !  shared variables between ocean and passive tracers
12   USE trc             !  passive tracers common variables
13   USE sms_pisces      !  PISCES Source Minus Sink variables
14
15   IMPLICIT NONE
16   PRIVATE
17
18   PUBLIC   p4z_int 
19   REAL(wp) ::   xksilim = 16.5e-6_wp   ! Half-saturation constant for the Si half-saturation constant computation
20
21   !!----------------------------------------------------------------------
22   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
23   !! $Id$
24   !! Software governed by the CeCILL license (see ./LICENSE)
25   !!----------------------------------------------------------------------
26CONTAINS
27
28   SUBROUTINE p4z_int( kt )
29      !!---------------------------------------------------------------------
30      !!                     ***  ROUTINE p4z_int  ***
31      !!
32      !! ** Purpose :   interpolation and computation of various accessory fields
33      !!
34      !!---------------------------------------------------------------------
35      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index
36      !
37      INTEGER  :: ji, jj                 ! dummy loop indices
38      REAL(wp) :: zrum, zcodel, zargu, zvar
39      !!---------------------------------------------------------------------
40      !
41      IF( ln_timing )   CALL timing_start('p4z_int')
42      !
43      ! Computation of phyto and zoo metabolic rate
44      ! -------------------------------------------
45      ! Generic temperature dependence (Eppley, 1972)
46      tgfunc (:,:,:) = EXP( 0.0631 * tsn(:,:,:,jp_tem) )
47      ! Temperature dependence of mesozooplankton (Buitenhuis et al. (2005))
48      tgfunc2(:,:,:) = EXP( 0.0761  * tsn(:,:,:,jp_tem) )
49
50      ! Computation of the silicon dependant half saturation  constant for silica uptake
51      ! This is based on an old study by Pondaven et al. (1998)
52      ! --------------------------------------------------------------------------------
53      DO ji = 1, jpi
54         DO jj = 1, jpj
55            zvar = trb(ji,jj,1,jpsil) * trb(ji,jj,1,jpsil)
56            xksimax(ji,jj) = MAX( xksimax(ji,jj), ( 1.+ 7.* zvar / ( xksilim * xksilim + zvar ) ) * 1e-6 )
57         END DO
58      END DO
59      !
60      ! At the end of each year, the half saturation constant for silica is
61      ! updated as this is based on the highest concentration reached over
62      ! the year
63      ! -------------------------------------------------------------------
64      IF( nday_year == nyear_len(1) ) THEN
65         xksi   (:,:) = xksimax(:,:)
66         xksimax(:,:) = 0._wp
67      ENDIF
68      !
69      ! compute the day length depending on latitude and the day
70      ! Astronomical parameterization taken from HAMOCC3
71      zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp )
72      zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  )
73
74      ! day length in hours
75      strn(:,:) = 0.
76      DO jj = 1, jpj
77         DO ji = 1, jpi
78            zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )
79            zargu = MAX( -1., MIN(  1., zargu ) )
80            strn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )
81         END DO
82      END DO
83      !
84      IF( ln_timing )   CALL timing_stop('p4z_int')
85      !
86   END SUBROUTINE p4z_int
87
88   !!======================================================================
89END MODULE p4zint
Note: See TracBrowser for help on using the repository browser.