C $Header: /u/gcmpack/MITgcm/pkg/cal/cal_intmonths.F,v 1.2 2003/10/09 04:19:19 edhill Exp $
C $Name:  $

#include "CAL_OPTIONS.h"

      integer function cal_IntMonths(
     I                                mythid
     &                              )

c     ==================================================================
c     FUNCTION cal_IntMonths
c     ==================================================================
c
c     o Return the number of calendar months that are affected by the 
c       current model integration.
c
c              
c     started: Christian Eckert eckert@mit.edu  30-Jun-1999
c
c     changed: Christian Eckert eckert@mit.edu  29-Dec-1999
c
c              - restructured the original version in order to have a
c                better interface to the MITgcmUV.
c
c              Christian Eckert eckert@mit.edu  03-Feb-2000
c
c              - Introduced new routine and function names, cal_,
c                for verion 0.1.3.
c
c     ==================================================================
c     FUNCTION cal_IntMonths
c     ==================================================================

      implicit none

c     == global variables ==

#include "cal.h"

c     == routine arguments ==

      integer mythid

c     == local variables ==

      integer endmonth
      integer startmonth
      integer endyear
      integer startyear

c     == end of interface ==

      startmonth = mod(modelstartdate(1)/100,100)
      endmonth   = mod(  modelenddate(1)/100,100)
      startyear  = modelstartdate(1)/10000
      endyear    = modelenddate(1)/10000

ce    --> allow for previous iterations: niter0 !
ce        in this case one would need some more information about the 
ce        integration of the model, e.g. the global start and end dates.

      if ( startyear .ne. endyear ) then
        cal_IntMonths = (nmonthyear - startmonth + 1) +
     &               nmonthyear*(endyear - startyear - 1) +
     &               endmonth
      else
        cal_IntMonths = endmonth - startmonth + 1
      endif

      if ( ( modelenddate(2) .eq. 0) .and.
     &     ( mod(modelenddate(1),100) .eq. 1) ) then
        cal_IntMonths = cal_IntMonths - 1
      endif

      return
      end