File indexing completed on 2026-03-25 05:08:29 UTC
view on githubraw file Latest commit 6fc9daf8 on 2026-03-24 23:05:07 UTC
7bd66d7dc3 Patr*0001 #include "CTRL_OPTIONS.h"
0002
0003
0004
6fc9daf8e1 Jean*0005 SUBROUTINE CTRL_INIT_REC(
7bd66d7dc3 Patr*0006 I fldname,
0007 I fldstartdate1, fldstartdate2, fldperiod, nfac,
0008 O fldstartdate, diffrec, startrec, endrec,
6fc9daf8e1 Jean*0009 I myThid )
7bd66d7dc3 Patr*0010
6fc9daf8e1 Jean*0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
7bd66d7dc3 Patr*0023
6fc9daf8e1 Jean*0024 IMPLICIT NONE
7bd66d7dc3 Patr*0025
6fc9daf8e1 Jean*0026
7bd66d7dc3 Patr*0027 #include "SIZE.h"
0028 #include "EEPARAMS.h"
0029 #include "PARAMS.h"
0030 #ifdef ALLOW_CAL
0031 # include "cal.h"
0032 #endif
0033
6fc9daf8e1 Jean*0034
0035
0036
0037
0038
0039
0040 CHARACTER*(*) fldname
0041 INTEGER fldstartdate1
0042 INTEGER fldstartdate2
7bd66d7dc3 Patr*0043 _RL fldperiod
6fc9daf8e1 Jean*0044 INTEGER nfac
0045 INTEGER myThid
7bd66d7dc3 Patr*0046
6fc9daf8e1 Jean*0047
0048
0049
0050
0051
0052 INTEGER fldstartdate(4)
0053 INTEGER startrec
0054 INTEGER endrec
0055 INTEGER diffrec
7bd66d7dc3 Patr*0056
6fc9daf8e1 Jean*0057
0058 INTEGER ILNBLNK
0059 EXTERNAL ILNBLNK
0060
0061
0062 INTEGER i
7bd66d7dc3 Patr*0063 #ifdef ALLOW_CAL
6fc9daf8e1 Jean*0064 INTEGER difftime(4)
b938a3c63b antn*0065 INTEGER modelBaseDate(4)
7bd66d7dc3 Patr*0066 _RL diffsecs
0067 #endif /* ALLOW_CAL */
6fc9daf8e1 Jean*0068 CHARACTER*(MAX_LEN_MBUF) msgBuf
0069 INTEGER il
7bd66d7dc3 Patr*0070
6fc9daf8e1 Jean*0071 IF ( debugLevel .GE. debLevB ) THEN
0072 il = ILNBLNK(fldname)
7bd66d7dc3 Patr*0073 WRITE( msgBuf,'(A,A)')
0074 & 'CTRL_INIT_REC: Getting record indices for ',fldname(1:il)
0075 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
6fc9daf8e1 Jean*0076 & SQUEEZE_RIGHT, myThid )
0077 ENDIF
7bd66d7dc3 Patr*0078
6fc9daf8e1 Jean*0079
0080 DO i = 1,4
7bd66d7dc3 Patr*0081 fldstartdate(i) = 0
6fc9daf8e1 Jean*0082 ENDDO
7bd66d7dc3 Patr*0083 startrec = 0
0084 endrec = 0
0085 diffrec = 0
6fc9daf8e1 Jean*0086 IF ( fldperiod .EQ. -12. ) THEN
7bd66d7dc3 Patr*0087 startrec = 1
0088 endrec = 12*nfac
6fc9daf8e1 Jean*0089 ELSEIF ( fldperiod .EQ. 0. ) THEN
7bd66d7dc3 Patr*0090 startrec = 1
0091 endrec = 1*nfac
0092 # ifdef ALLOW_CAL
6fc9daf8e1 Jean*0093 ELSEIF ( useCAL ) THEN
0094 CALL cal_FullDate( startdate_1, startdate_2,
0095 & modelBaseDate , myThid )
0096 CALL cal_FullDate( fldstartdate1, fldstartdate2,
0097 & fldstartdate , myThid )
0098 CALL cal_TimePassed( modelBaseDate, fldstartdate,
0099 & difftime, myThid )
0100 CALL cal_ToSeconds ( difftime, diffsecs, myThid )
b938a3c63b antn*0101 startrec = int((modelstart - diffsecs)/fldperiod) + 1
0102 endrec = int((modelend - diffsecs + modelstep/2)
0103 & /fldperiod) + 2
6fc9daf8e1 Jean*0104 IF ( nfac .NE. 1 ) THEN
0105
7bd66d7dc3 Patr*0106 startrec = (startrec - 1)*nfac + 1
0107 endrec = endrec*nfac
6fc9daf8e1 Jean*0108 ENDIF
0109 #endif /* ALLOW_CAL */
0110 ELSE
7bd66d7dc3 Patr*0111 startrec = 1
0112 endrec = (int((endTime - startTime)/fldperiod) + 1)*nfac
6fc9daf8e1 Jean*0113 ENDIF
7bd66d7dc3 Patr*0114 diffrec = endrec - startrec + 1
0115
6fc9daf8e1 Jean*0116 IF ( debugLevel .GE. debLevB ) THEN
7bd66d7dc3 Patr*0117 WRITE( msgBuf,'(A,A,A)')
0118 & 'CTRL_INIT_REC: Record indices for ',fldname(1:il),':'
0119 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
6fc9daf8e1 Jean*0120 & SQUEEZE_RIGHT, myThid )
7bd66d7dc3 Patr*0121 WRITE( msgBuf,'(A,I10,A,I10)')
0122 & 'CTRL_INIT_REC: startrec = ',startrec,', endrec = ',endrec
0123 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
6fc9daf8e1 Jean*0124 & SQUEEZE_RIGHT, myThid )
0125 ENDIF
7bd66d7dc3 Patr*0126
6fc9daf8e1 Jean*0127 RETURN
0128 END