Back to home page

MITgcm

 
 

    


File indexing completed on 2024-05-11 05:10:13 UTC

view on githubraw file Latest commit 41c4545f on 2024-05-10 15:00:41 UTC
50f1081522 Jean*0001 #include "AUTODIFF_OPTIONS.h"
57c22ecc45 Jean*0002 #include "AD_CONFIG.h"
620589f74d Patr*0003 
                0004 CBOP
                0005 C     !ROUTINE: AUTODIFF_CHECK
                0006 C     !INTERFACE:
                0007       SUBROUTINE AUTODIFF_CHECK( myThid )
                0008 
                0009 C     !DESCRIPTION: \bv
                0010 C     \ev
                0011 
                0012       IMPLICIT NONE
                0013 #include "SIZE.h"
                0014 #include "GRID.h"
                0015 #include "EEPARAMS.h"
                0016 #include "PARAMS.h"
a5ec81ed49 Timo*0017 #ifdef ALLOW_AUTODIFF_TAMC
                0018 # include "tamc.h"
                0019 #endif
                0020 #ifdef ALLOW_DIAGNOSTICS
41c4545f8f Jean*0021 # include "DIAGNOSTICS_P2SHARE.h"
620589f74d Patr*0022 #endif
                0023 
                0024 C     !INPUT/OUTPUT PARAMETERS:
                0025 C     myThid -  Number of this instances
                0026       INTEGER myThid
49339e03c7 Patr*0027 C     msgBuf :: Informational/error message buffer
                0028       CHARACTER*(MAX_LEN_MBUF) msgBuf
620589f74d Patr*0029 CEOP
                0030 
41c4545f8f Jean*0031 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0032 
a5ec81ed49 Timo*0033 #ifdef ALLOW_AUTODIFF_TAMC
620589f74d Patr*0034 
e1de04fee5 Patr*0035 #ifdef ALLOW_TAMC_CHECKPOINTING
                0036 # if (defined (AUTODIFF_2_LEVEL_CHECKPOINT))
a5ec81ed49 Timo*0037       IF (nchklev_1*nchklev_2 .lt. nTimeSteps) THEN
3196a0e207 Jean*0038         WRITE(msgBuf,'(A)')
ccb200eb52 Patr*0039      &       'THE_MAIN_LOOP: TAMC checkpointing parameters'
                0040         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0041         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0042      &       'nchklev_1*nchklev_2 = ',
620589f74d Patr*0043      &       nchklev_1*nchklev_2
ccb200eb52 Patr*0044         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0045         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0046      &       'are not consistent with nTimeSteps = ',
620589f74d Patr*0047      &       nTimeSteps
ccb200eb52 Patr*0048         CALL PRINT_ERROR( msgBuf , myThid )
                0049         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
a5ec81ed49 Timo*0050       ENDIF
e1de04fee5 Patr*0051 # elif (defined (AUTODIFF_4_LEVEL_CHECKPOINT))
a5ec81ed49 Timo*0052       IF (nchklev_1*nchklev_2*nchklev_3*nchklev_4 .lt. nTimeSteps) THEN
3196a0e207 Jean*0053         WRITE(msgBuf,'(A)')
ccb200eb52 Patr*0054      &       'THE_MAIN_LOOP: TAMC checkpointing parameters'
                0055         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0056         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0057      &       'nchklev_1*nchklev_2*nchklev_3*nchklev_4 = ',
0785f33837 Patr*0058      &       nchklev_1*nchklev_2*nchklev_3*nchklev_4
ccb200eb52 Patr*0059         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0060         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0061      &       'are not consistent with nTimeSteps = ',
0785f33837 Patr*0062      &       nTimeSteps
ccb200eb52 Patr*0063         CALL PRINT_ERROR( msgBuf , myThid )
                0064         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
a5ec81ed49 Timo*0065       ENDIF
e1de04fee5 Patr*0066 # else
620589f74d Patr*0067 c--   Check the choice of the checkpointing parameters in relation
                0068 c--   to nTimeSteps: (nchklev_1*nchklev_2*nchklev_3 .ge. nTimeSteps)
a5ec81ed49 Timo*0069       IF (nchklev_1*nchklev_2*nchklev_3 .lt. nTimeSteps) THEN
3196a0e207 Jean*0070         WRITE(msgBuf,'(A)')
ccb200eb52 Patr*0071      &       'THE_MAIN_LOOP: TAMC checkpointing parameters'
                0072         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0073         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0074      &       'nchklev_1*nchklev_2*nchklev_3 = ',
620589f74d Patr*0075      &       nchklev_1*nchklev_2*nchklev_3
ccb200eb52 Patr*0076         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0077         WRITE(msgBuf,'(A,I10)')
1470a4ad8f Patr*0078      &       'are not consistent with nTimeSteps = ',
620589f74d Patr*0079      &       nTimeSteps
ccb200eb52 Patr*0080         CALL PRINT_ERROR( msgBuf , myThid )
                0081         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
a5ec81ed49 Timo*0082       ENDIF
e1de04fee5 Patr*0083 # endif
                0084 #else /* undef ALLOW_TAMC_CHECKPOINTING */
a5ec81ed49 Timo*0085       IF (nchklev_1 .lt. nTimeSteps) THEN
3196a0e207 Jean*0086         WRITE(msgBuf,'(A)')
e1de04fee5 Patr*0087      &       'THE_MAIN_LOOP: TAMC checkpointing parameters'
                0088         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0089         WRITE(msgBuf,'(A,I10)')
e1de04fee5 Patr*0090      &       'nchklev_1 = ', nchklev_1
                0091         CALL PRINT_ERROR( msgBuf , myThid )
3196a0e207 Jean*0092         WRITE(msgBuf,'(A,I10)')
e1de04fee5 Patr*0093      &       'are not consistent with nTimeSteps = ', nTimeSteps
                0094         CALL PRINT_ERROR( msgBuf , myThid )
                0095         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
a5ec81ed49 Timo*0096       ENDIF
e1de04fee5 Patr*0097 #endif /* ALLOW_TAMC_CHECKPOINTING */
620589f74d Patr*0098 
a5ec81ed49 Timo*0099 c#ifndef ALLOW_AUTODIFF_WHTAPEIO
                0100 c      IF ( useSingleCpuIO ) THEN
                0101 c       WRITE(msgBuf,'(3A)') '** WARNING ** AUTODIFF_CHECK: ',
                0102 c    &        'relying on mdsio_read/writevector.F to write ',
                0103 c    &        'tapes is unsafe when useSingleCpuIO is true.'
                0104 c       CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
                0105 c    &  SQUEEZE_RIGHT, myThid )
                0106 c      ENDIF
                0107 c#endif
                0108 
                0109 #endif /* ALLOW_AUTODIFF_TAMC */
                0110 
68ccb53055 Patr*0111 #ifndef ALLOW_AUTODIFF_MONITOR
                0112        IF ( adjDumpFreq .NE. 0. ) THEN
3196a0e207 Jean*0113         WRITE(msgBuf,'(A)')
ccb200eb52 Patr*0114      &         'adjDumpFreq <> 0, but undef ALLOW_AUTODIFF_MONITOR'
                0115         CALL PRINT_ERROR( msgBuf , myThid )
                0116         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
68ccb53055 Patr*0117        ENDIF
                0118        IF ( adjMonitorFreq .NE. 0. ) THEN
3196a0e207 Jean*0119         WRITE(msgBuf,'(A)')
ccb200eb52 Patr*0120      &         'adjMonitorFreq <> 0, but undef ALLOW_AUTODIFF_MONITOR'
                0121         CALL PRINT_ERROR( msgBuf , myThid )
                0122         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
68ccb53055 Patr*0123        ENDIF
a5ec81ed49 Timo*0124 # ifdef ALLOW_DIAGNOSTICS
                0125        IF ( useDiag4AdjOutp ) THEN
                0126         WRITE(msgBuf,'(A)')
                0127      &    'using Adj-Diagnostics, but undef ALLOW_AUTODIFF_MONITOR'
                0128         CALL PRINT_ERROR( msgBuf , myThid )
                0129         STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
                0130        ENDIF
                0131 # endif /*  ALLOW_DIAGNOSTICS */
                0132 #endif /* ndef ALLOW_AUTODIFF_MONITOR */
620589f74d Patr*0133 
3196a0e207 Jean*0134 #ifdef ALLOW_OPENAD
19e85cfa3f Patr*0135 # if (defined (ALLOW_ECCO) || defined (ALLOW_PROFILES))
3196a0e207 Jean*0136        WRITE(msgBuf,'(2A)')
19e85cfa3f Patr*0137      &  'AUTODIFF_CHECK: pkg ECCO or PROFILES not yet implemented ',
                0138      &  ' for ALLOW_AUTODIFF_OPENAD'
                0139        CALL PRINT_ERROR( msgBuf , myThid )
                0140        STOP 'ABNORMAL END: S/R AUTODIFF_CHECK'
                0141 # endif
3196a0e207 Jean*0142 #endif /* ALLOW_OPENAD */
19e85cfa3f Patr*0143 
620589f74d Patr*0144 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0145 
                0146       RETURN
                0147       END