p4zbio.F90 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. MODULE p4zbio
  2. !!======================================================================
  3. !! *** MODULE p4zbio ***
  4. !! TOP : PISCES bio-model
  5. !!======================================================================
  6. !! History : 1.0 ! 2004 (O. Aumont) Original code
  7. !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90
  8. !!----------------------------------------------------------------------
  9. #if defined key_pisces
  10. !!----------------------------------------------------------------------
  11. !! 'key_pisces' PISCES bio-model
  12. !!----------------------------------------------------------------------
  13. !! p4z_bio : computes the interactions between the different
  14. !! compartments of PISCES
  15. !!----------------------------------------------------------------------
  16. USE oce_trc ! shared variables between ocean and passive tracers
  17. USE trc ! passive tracers common variables
  18. USE sms_pisces ! PISCES Source Minus Sink variables
  19. USE p4zsink ! vertical flux of particulate matter due to sinking
  20. USE p4zopt ! optical model
  21. USE p4zlim ! Co-limitations of differents nutrients
  22. USE p4zprod ! Growth rate of the 2 phyto groups
  23. USE p4zmort ! Mortality terms for phytoplankton
  24. USE p4zmicro ! Sources and sinks of microzooplankton
  25. USE p4zmeso ! Sources and sinks of mesozooplankton
  26. USE p4zrem ! Remineralisation of organic matter
  27. USE p4zfechem
  28. USE prtctl_trc ! print control for debugging
  29. USE iom ! I/O manager
  30. IMPLICIT NONE
  31. PRIVATE
  32. PUBLIC p4z_bio
  33. !!* Substitution
  34. # include "top_substitute.h90"
  35. !!----------------------------------------------------------------------
  36. !! NEMO/TOP 3.3 , NEMO Consortium (2010)
  37. !! $Id: p4zbio.F90 3160 2011-11-20 14:27:18Z cetlod $
  38. !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
  39. !!----------------------------------------------------------------------
  40. CONTAINS
  41. SUBROUTINE p4z_bio ( kt, knt )
  42. !!---------------------------------------------------------------------
  43. !! *** ROUTINE p4z_bio ***
  44. !!
  45. !! ** Purpose : Ecosystem model in the whole ocean: computes the
  46. !! different interactions between the different compartments
  47. !! of PISCES
  48. !!
  49. !! ** Method : - ???
  50. !!---------------------------------------------------------------------
  51. INTEGER, INTENT(in) :: kt, knt
  52. INTEGER :: ji, jj, jk, jn
  53. CHARACTER (len=25) :: charout
  54. !!---------------------------------------------------------------------
  55. !
  56. IF( nn_timing == 1 ) CALL timing_start('p4z_bio')
  57. !
  58. ! ASSIGN THE SHEAR RATE THAT IS USED FOR AGGREGATION
  59. ! OF PHYTOPLANKTON AND DETRITUS
  60. xdiss(:,:,:) = 1.
  61. !!gm the use of nmld should be better here?
  62. DO jk = 2, jpkm1
  63. DO jj = 1, jpj
  64. DO ji = 1, jpi
  65. IF( fsdepw(ji,jj,jk+1) > hmld(ji,jj) ) xdiss(ji,jj,jk) = 0.01
  66. END DO
  67. END DO
  68. END DO
  69. CALL p4z_opt ( kt, knt ) ! Optic: PAR in the water column
  70. CALL p4z_sink ( kt, knt ) ! vertical flux of particulate organic matter
  71. CALL p4z_fechem(kt, knt ) ! Iron chemistry/scavenging
  72. CALL p4z_lim ( kt, knt ) ! co-limitations by the various nutrients
  73. CALL p4z_prod ( kt, knt ) ! phytoplankton growth rate over the global ocean.
  74. ! ! (for each element : C, Si, Fe, Chl )
  75. CALL p4z_mort ( kt ) ! phytoplankton mortality
  76. ! ! zooplankton sources/sinks routines
  77. CALL p4z_micro( kt, knt ) ! microzooplankton
  78. CALL p4z_meso ( kt, knt ) ! mesozooplankton
  79. CALL p4z_rem ( kt, knt ) ! remineralization terms of organic matter+scavenging of Fe
  80. ! ! test if tracers concentrations fall below 0.
  81. ! !
  82. IF(ln_ctl) THEN ! print mean trends (used for debugging)
  83. WRITE(charout, FMT="('bio ')")
  84. CALL prt_ctl_trc_info(charout)
  85. CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
  86. ENDIF
  87. !
  88. IF( nn_timing == 1 ) CALL timing_stop('p4z_bio')
  89. !
  90. END SUBROUTINE p4z_bio
  91. #else
  92. !!======================================================================
  93. !! Dummy module : No PISCES bio-model
  94. !!======================================================================
  95. CONTAINS
  96. SUBROUTINE p4z_bio ! Empty routine
  97. END SUBROUTINE p4z_bio
  98. #endif
  99. !!======================================================================
  100. END MODULE p4zbio