C $Header: /u/gcmpack/MITgcm/pkg/mnc/mnc_cw_citer.F,v 1.3 2008/05/22 12:21:19 mlosch Exp $
C $Name:  $
      
#include "MNC_OPTIONS.h"
      
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

CBOP 0
C     !ROUTINE: MNC_CW_CITER_SETG
      
C     !INTERFACE:
      SUBROUTINE MNC_CW_CITER_SETG( 
     I     igroup,
     I     iflag, ival_curr, ival_next,
     I     myThid ) 

C     !DESCRIPTION:
C     Set CITER information for group "igroup"

C     !USES:
      implicit none
#include "MNC_COMMON.h"

C     !INPUT PARAMETERS:
      integer igroup, iflag, ival_curr, ival_next, myThid
CEOP

C     !LOCAL VARIABLES:
      integer i

      mnc_cw_cit(1,igroup) = iflag
      IF ( ival_curr .GT. 0 ) THEN

        IF ( mnc_cw_cit(2,igroup) .NE. ival_curr ) THEN

C         The current iteration number has changed so we need to reset
C         the unlimited dimension for all the files in this citer group
          DO i = 1,MNC_MAX_ID
            IF ( mnc_cw_fgci(i) .eq. igroup ) THEN
              mnc_cw_fgud(i) = 0
            ENDIF
          ENDDO

          mnc_cw_cit(2,igroup) = ival_curr

        ENDIF
        
      ENDIF
      IF ( ival_next .GT. 0 ) THEN
        mnc_cw_cit(3,igroup) = ival_next
      ENDIF

      RETURN
      END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: MNC_CW_CITER_GETG C !INTERFACE: SUBROUTINE MNC_CW_CITER_GETG( I igroup, O iflag, ival_curr, ival_next, I myThid ) C !DESCRIPTION: C Get the current CITER information for group "igroup" C !USES: implicit none #include "MNC_COMMON.h" C !INPUT PARAMETERS: integer igroup, iflag, ival_curr, ival_next, myThid CEOP iflag = mnc_cw_cit(1,igroup) ival_curr = mnc_cw_cit(2,igroup) ival_next = mnc_cw_cit(3,igroup) RETURN END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: MNC_CW_SET_CITER C !INTERFACE: SUBROUTINE MNC_CW_SET_CITER( I fgname, I igroup, I iflag, ival_curr, ival_next, I myThid ) C !DESCRIPTION: C Set the flag and/or current iteration value C !USES: implicit none #include "MNC_COMMON.h" #include "EEPARAMS.h" C !INPUT PARAMETERS: integer igroup, iflag, ival_curr, ival_next, myThid character*(*) fgname CEOP C !LOCAL VARIABLES: integer fgf,fgl, indfg character*(MAX_LEN_MBUF) msgbuf C Functions integer IFNBLNK, ILNBLNK C Check that this name is not already defined fgf = IFNBLNK(fgname) fgl = ILNBLNK(fgname) CALL MNC_GET_IND(MNC_MAX_ID, fgname, mnc_cw_fgnm, indfg, myThid) IF (indfg .LT. 1) THEN C Error if this file group name is not set write(msgbuf,'(3a)') & 'MNC_CW_SET_CITER ERROR: the file group name ''', & fgname(fgf:fgl), ''' does not exist' CALL PRINT_ERROR(msgbuf, mythid) STOP 'ABNORMAL END: S/R MNC_CW_SET_CITER' ENDIF IF (igroup .LT. 1) THEN igroup = mnc_cw_fgci(indfg) ELSE mnc_cw_fgci(indfg) = igroup ENDIF IF ((igroup .LT. 1) .OR. (igroup .GT. MNC_MAX_INFO)) THEN write(msgbuf,'(4a)') & 'MNC_CW_SET_CITER ERROR: invalid igroup index for ', & 'file group name ''', fgname(fgf:fgl), '''' CALL PRINT_ERROR(msgbuf, mythid) STOP 'ABNORMAL END: S/R MNC_CW_SET_CITER' ENDIF CALL MNC_CW_CITER_SETG( igroup, & iflag, ival_curr, ival_next, myThid ) RETURN END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: MNC_CW_GET_CITER C !INTERFACE: SUBROUTINE MNC_CW_GET_CITER( I fgname, O igroup, O iflag, ival_curr, ival_next, I myThid ) C !DESCRIPTION: C Set the flag and/or current iteration value C !USES: implicit none #include "MNC_COMMON.h" #include "EEPARAMS.h" C !INPUT PARAMETERS: integer igroup, iflag, ival_curr, ival_next, myThid character*(*) fgname CEOP C !LOCAL VARIABLES: integer fgf,fgl, indfg character*(MAX_LEN_MBUF) msgbuf C Functions integer IFNBLNK, ILNBLNK C Check that this name is not already defined fgf = IFNBLNK(fgname) fgl = ILNBLNK(fgname) CALL MNC_GET_IND(MNC_MAX_ID, fgname, mnc_cw_fgnm, indfg, myThid) IF (indfg .LT. 1) THEN C Error if this file group name is not set write(msgbuf,'(3a)') & 'MNC_CW_SET_CITER ERROR: the file group name ''', & fgname(fgf:fgl), ''' does not exist' CALL PRINT_ERROR(msgbuf, mythid) STOP 'ABNORMAL END: S/R MNC_CW_SET_CITER' ENDIF igroup = mnc_cw_fgci(indfg) IF ((igroup .LT. 1) .OR. (igroup .GT. MNC_MAX_INFO)) THEN igroup = -1 iflag = -1 ival_curr = -1 ival_next = -1 ELSE CALL MNC_CW_CITER_GETG( igroup, & iflag, ival_curr, ival_next, myThid ) ENDIF RETURN END


C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|