*IF DEF,CONTROL GET_NAM2.2
C ******************************COPYRIGHT****************************** GTS2F400.3367
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.3368
C GTS2F400.3369
C Use, duplication or disclosure of this code is subject to the GTS2F400.3370
C restrictions as set forth in the contract. GTS2F400.3371
C GTS2F400.3372
C Meteorological Office GTS2F400.3373
C London Road GTS2F400.3374
C BRACKNELL GTS2F400.3375
C Berkshire UK GTS2F400.3376
C RG12 2SZ GTS2F400.3377
C GTS2F400.3378
C If no contract has been raised with this copy of the code, the use, GTS2F400.3379
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.3380
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.3381
C Modelling at the above address. GTS2F400.3382
C ******************************COPYRIGHT****************************** GTS2F400.3383
C GTS2F400.3384
CLL Routine: GET_NAME ------------------------------------------------- GET_NAM2.3
CLL GET_NAM2.4
CLL Purpose: Generates an output file name of up to 14 characters using GET_NAM2.5
CLL the defined file naming convention, taking account of GET_NAM2.6
CLL file type, validity time, etc. GET_NAM2.7
CLL Obeys new filenaming convention introduced at version 2.7. GET_NAM2.8
CLL GET_NAM2.9
CLL Tested under compiler: cft77 GET_NAM2.10
CLL Tested under OS version: UNICOS 6.1.5A GET_NAM2.11
CLL GET_NAM2.12
CLL Author: R A Stratton GET_NAM2.13
CLL GET_NAM2.14
CLL Model Modification history from model version 3.0: GET_NAM2.15
CLL version Date GET_NAM2.16
CLL 3.1 27/01/93 : correct error in 2 character months - change jan RS270193.1
CLL from jn to ja so that no clash with june. RS270193.2
CLL 3.1 2/02/93 : added comdeck CHSUNITS to define NUNITS for i/o RS030293.99
CLL GET_NAM2.17
CLL 3.1 22/02/93 : Cater for filename changes for boundary datasets. DR240293.588
CLL FILETYPE=u-z for LAM areas 1-6. D. Robinson DR240293.589
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.60
CLL portability. Author Tracey Smith. TS150793.61
CLL 3.2 15/04/93 Correct Y_HUNDS in Absolute_long convention (TCJ). TJ150493.1
CLL 3.2 08/07/93 Correct 1 T/S offset in reinit'ed pp names (TCJ). TJ150493.2
CLL 3.3 08/02/94 Modify calls to TIME2SEC/SEC2TIME to output/input TJ080294.477
CLL elapsed times in days & secs, for portability. TCJ TJ080294.478
CLL 3.4 17/06/94 Argument LCAL360 added and passed to SEC2TIME GSS1F304.332
CLL S.J.Swarbrick GSS1F304.333
CLL 4.1 30/07/96 Introduce Wave sub-model. M Holt WRB1F401.1174
!LL 4.4 11/07/97 Allow character filenames for PP files GMG1F404.111
!LL reinitialised on real month boundaries. M Gallani GMG1F404.112
!LL 4.5 29/07/98 New naming convention for reinitialised boundary GDR2F405.158
!LL files. D. Robinson. GDR2F405.159
CLL TJ080294.479
CLL Programming standard: UM Doc Paper 3, version 1 (15/1/90) GET_NAM2.18
CLL GET_NAM2.19
CLL Logical components covered: S51 GET_NAM2.20
CLL GET_NAM2.21
CLL Project task: S51 GET_NAM2.22
CLL GET_NAM2.23
CLL External documentation: UM documentation paper 7 - Filenaming GET_NAM2.24
CLL conventions for the Unified Model GET_NAM2.25
CLL GET_NAM2.26
CLL ------------------------------------------------------------------- GET_NAM2.27
C*L Interface and arguments: ------------------------------------------ GET_NAM2.28
C GET_NAM2.29
SUBROUTINE GET_NAME(EXPT_ID,JOB_ID,ISUBMODEL,MEANLEV,TOGGLE, 13,6GET_NAM2.30
* REINIT_STEPS,FILETYPE,LETTER_3, MODEL_STATUS, GET_NAM2.31
* TIME_CONVENTION,ANALYSIS_HRS,FILENAME,ICODE,CMESSAGE, GSS1F304.334
* LCAL360) GSS1F304.335
C GET_NAM2.33
IMPLICIT NONE GET_NAM2.34
LOGICAL LCAL360 GSS1F304.336
C GET_NAM2.35
CHARACTER*4 EXPT_ID ! IN - Experiment ident or alias GET_NAM2.36
CHARACTER*1 JOB_ID ! IN - Job ident within experiment GET_NAM2.37
INTEGER ISUBMODEL ! IN - Submodel indicator GET_NAM2.38
INTEGER MEANLEV ! IN - Mean level indicator GET_NAM2.39
INTEGER TOGGLE ! IN - Alternately 1/2 for partial sums GET_NAM2.40
INTEGER ANALYSIS_HRS! IN - Hrs from basis time to analysis GET_NAM2.41
INTEGER REINIT_STEPS! IN - timesteps between file reinit- GMG1F404.113
! ialisation for non-mean pp files GMG1F404.114
! or -ve for Gregorian reinit. GMG1F404.115
GET_NAM2.44
CHARACTER*1 FILETYPE ! IN - Code for file type GET_NAM2.45
CHARACTER*1 LETTER_3 ! IN - character for use in position 9 GET_NAM2.46
C of non-mean pp files. GET_NAM2.47
CHARACTER*14 MODEL_STATUS! IN - Operational/NonOperational GET_NAM2.48
C GET_NAM2.49
CHARACTER*17 TIME_CONVENTION ! IN - Relative/Timestep/ GET_NAM2.50
C Absolute_standard/Absolute_long/ GET_NAM2.51
C Absolute_short GET_NAM2.52
CHARACTER*14 FILENAME ! OUT - Generated file name GET_NAM2.53
INTEGER ICODE ! OUT - Error return code GET_NAM2.54
CHARACTER*80 CMESSAGE TS150793.62
C GET_NAM2.56
C*---------------------------------------------------------------------- GET_NAM2.57
C Common blocks GET_NAM2.58
C GET_NAM2.59
*CALL CMAXSIZE
GDR3F305.205
*CALL CSUBMODL
GDR3F305.206
*CALL CNTLGEN
GDR3F305.207
*CALL CTIME
GDR3F305.208
C GET_NAM2.63
C External subroutines called GET_NAM2.64
C GET_NAM2.65
EXTERNAL SEC2TIME,DAY2CHAR,STP2TIME TJ080294.480
C GET_NAM2.67
C Local variables GET_NAM2.68
C GET_NAM2.69
INTEGER GET_NAM2.70
& YYYY,MM,DD,HH,IMIN,ISEC ! Current time values for filename GET_NAM2.71
INTEGER COUNT, ! Counter for steps or hours GET_NAM2.72
& DAYNO, ! day number GET_NAM2.73
& DAYS, ! Number of days for period GET_NAM2.74
& HOURS, ! Number of hours for period GET_NAM2.75
& I, ! loop counter GET_NAM2.76
& STEPS ! number of steps GET_NAM2.77
INTEGER END_DAYS ! number of whole days from run start TJ080294.481
INTEGER END_SECONDS ! number of extra secs from run start TJ080294.482
INTEGER MON ! month for mean period GET_NAM2.79
INTEGER A_STEPS_PER_HR ! steps per hour for atmos sub-model GDR3F305.209
C GET_NAM2.80
CHARACTER*2 QW ! Operational file prefix GET_NAM2.81
C GET_NAM2.82
CHARACTER*1 SUBMODEL_ID ! character for model a or o GET_NAM2.83
CHARACTER*1 FILETYPE_2 ! letter after FILETYPE in name GET_NAM2.84
CHARACTER*1 MEAN_PERIOD(4) ! default letter for mean period GET_NAM2.85
C GET_NAM2.86
CHARACTER*1 Y_HUNDS ! Character year identifier (hundreds) GET_NAM2.87
CHARACTER*1 Y_TENS ! Character year identifier (tens) GET_NAM2.88
CHARACTER*1 Y_UNITS ! Character year identifier (units) GET_NAM2.89
CHARACTER*1 M ! Character month identifier GET_NAM2.90
CHARACTER*1 D ! Character day-of-month identifier GET_NAM2.91
CHARACTER*1 H ! Character hour identifier GET_NAM2.92
CHARACTER*1 HUNDREDS ! Character for hundreds counter GET_NAM2.93
CHARACTER*1 TENS ! Character for tens counter GET_NAM2.94
CHARACTER*1 UNITS ! Character for units counter GET_NAM2.95
CHARACTER*1 CHAR_ID(36) ! Valid characters for above (lookup) GET_NAM2.96
CHARACTER*1 SEPARATOR ! character used as separator in name GET_NAM2.97
CHARACTER*1 STYLE ! style of date in filename GET_NAM2.98
CHARACTER*3 CDAYNO ! character day number GET_NAM2.99
CHARACTER*3 MONTH_3CHAR(12)! 3 character month identifier GET_NAM2.100
CHARACTER*2 MONTH_2CHAR(12)! 2 character month identifier GET_NAM2.101
CHARACTER*3 SEASON_3CHAR(12)! 3 character season identifier GET_NAM2.102
CHARACTER*2 SEASON_2CHAR(12)! 2 character season identifier GET_NAM2.103
C GET_NAM2.104
DATA QW / 'qw'/ GET_NAM2.105
DATA MEAN_PERIOD / '1', '2', '3', '4' / GET_NAM2.106
DATA CHAR_ID/ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', GET_NAM2.107
1 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', GET_NAM2.108
2 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', GET_NAM2.109
3 'u', 'v', 'w', 'x', 'y', 'z' / GET_NAM2.110
DATA MONTH_3CHAR/ 'jan', 'feb', 'mar', 'apr', 'may', 'jun', GET_NAM2.111
& 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'/ GET_NAM2.112
DATA MONTH_2CHAR/ 'ja', 'fb', 'mr', 'ar', 'my', 'jn', RS270193.3
& 'jl', 'ag', 'sp', 'ot', 'nv', 'dc'/ GET_NAM2.114
DATA SEASON_3CHAR/ 'ndj', 'djf', 'jfm', 'fma', 'mam', 'amj', GET_NAM2.115
& 'mjj', 'jja', 'jas', 'aso', 'son', 'ond'/ GET_NAM2.116
DATA SEASON_2CHAR/ 'nj', 'df', 'jm', 'fa', 'mm', 'aj', GET_NAM2.117
& 'mj', 'ja', 'js', 'ao', 'sn', 'od'/ GET_NAM2.118
CL GET_NAM2.119
CL---------------------------------------------------------------------- GET_NAM2.120
CL 1. Determine submodel id - (used in filechar 6 or 7 if operational) GET_NAM2.121
CL GET_NAM2.122
IF (ISUBMODEL.EQ.ATMOS_SM) THEN GET_NAM2.123
SUBMODEL_ID= 'a' GET_NAM2.124
ELSE IF (ISUBMODEL.EQ.OCEAN_SM) THEN GET_NAM2.125
SUBMODEL_ID= 'o' GET_NAM2.126
ELSE IF (ISUBMODEL.EQ.WAVE_SM) THEN WRB1F401.1175
SUBMODEL_ID= 'w' WRB1F401.1176
ELSE GET_NAM2.127
ICODE=2 GET_NAM2.128
CMESSAGE='GET_NAME: Illegal sub-model specified' GET_NAM2.129
GOTO 999 GET_NAM2.130
ENDIF GET_NAM2.131
IF (ISUBMODEL.EQ.ATMOS_SM) THEN GDR3F305.210
! 1.1 Compute steps per hour for atmosphere sub_model GDR3F305.211
A_STEPS_PER_HR = 3600*STEPS_PER_PERIODim(a_im)/ GDR3F305.212
& SECS_PER_PERIODim(a_im) GDR3F305.213
ENDIF GDR3F305.214
C GET_NAM2.132
CL---------------------------------------------------------------------- GET_NAM2.133
CL 2. Determine style filename and separator GET_NAM2.134
CL GET_NAM2.135
IF (FILETYPE.NE.'s') THEN GET_NAM2.136
CL GET_NAM2.137
CL 2.1 Relative time convention GET_NAM2.138
CL GET_NAM2.139
IF (TIME_CONVENTION.eq.'Relative ') THEN GET_NAM2.140
SEPARATOR='_' GET_NAM2.141
STYLE='A' GET_NAM2.142
IF (ISUBMODEL.EQ.atmos_sm) THEN ! atmosphere GET_NAM2.143
COUNT = STEPim(a_im) / A_STEPS_PER_HR - ANALYSIS_HRS GDR5F305.24
ELSE IF (ISUBMODEL.eq.ocean_sm) THEN ! ocean GET_NAM2.145
COUNT = STEPim(o_im) * SECS_PER_PERIODim(o_im) / GDR3F305.215
& STEPS_PER_PERIODim(o_im) / 3600 GDR3F305.216
* -ANALYSIS_HRS GET_NAM2.147
ELSE IF (ISUBMODEL.eq.wave_sm) THEN ! WAVE WRB1F401.1177
COUNT = STEPim(w_im) * SECS_PER_PERIODim(w_im) / WRB1F401.1178
& STEPS_PER_PERIODim(w_im) / 3600 WRB1F401.1179
* -ANALYSIS_HRS WRB1F401.1180
ENDIF GET_NAM2.148
CL GET_NAM2.149
CL 2.2 Step time convention GET_NAM2.150
CL GET_NAM2.151
ELSE IF (TIME_CONVENTION.EQ.'Timestep ') THEN GET_NAM2.152
GET_NAM2.153
SEPARATOR='_' GET_NAM2.154
STYLE='A' GET_NAM2.155
IF (ISUBMODEL.EQ.atmos_sm) THEN ! Atmosphere GET_NAM2.156
COUNT = STEPim(a_im) GDR5F305.25
ELSE if (ISUBMODEL.eq.ocean_sm) then ! Ocean GET_NAM2.158
COUNT = STEPim(o_im) GDR5F305.26
ELSE if (ISUBMODEL.eq.wave_sm) then ! WAVE WRB1F401.1181
COUNT = STEPim(w_im) WRB1F401.1182
ENDIF GET_NAM2.160
CL GET_NAM2.161
CL 2.3 Absolute time convention -standard version GET_NAM2.162
CL GET_NAM2.163
ELSE IF (TIME_CONVENTION.EQ.'Absolute_standard') THEN GET_NAM2.164
SEPARATOR='.' GET_NAM2.165
STYLE='B' GET_NAM2.166
CL GET_NAM2.167
CL 2.4 Absolute time convention - short GET_NAM2.168
CL GET_NAM2.169
ELSE IF (TIME_CONVENTION.EQ.'Absolute_short ') THEN GET_NAM2.170
SEPARATOR='-' GET_NAM2.171
STYLE='B' GET_NAM2.172
CL GET_NAM2.173
CL 2.5 Absolute time convention - long GET_NAM2.174
CL GET_NAM2.175
ELSE IF (TIME_CONVENTION.EQ.'Absolute_long ') THEN GET_NAM2.176
SEPARATOR='@' GET_NAM2.177
STYLE='B' GET_NAM2.178
ELSE GET_NAM2.179
C GET_NAM2.180
ICODE=1 GET_NAM2.181
CMESSAGE='GET_NAME: Illegal TIME_CONVENTION specified' GET_NAM2.182
GOTO 999 GET_NAM2.183
ENDIF GET_NAM2.184
CL---------------------------------------------------------------------- GET_NAM2.185
CL GET_NAM2.186
CL 3.0 work out encoding of date time and filetype_2 GET_NAM2.187
CL GET_NAM2.188
IF (STYLE.eq.'A') THEN GET_NAM2.189
IF (COUNT.LT.0) THEN GET_NAM2.190
COUNT=-COUNT GET_NAM2.191
FILETYPE_2='z' GET_NAM2.192
HUNDREDS = CHAR_ID(MOD(COUNT/100,36)+1) GET_NAM2.193
TENS = CHAR_ID(MOD(COUNT/10 ,10)+1) GET_NAM2.194
UNITS = CHAR_ID(MOD(COUNT, 10)+1) GET_NAM2.195
ELSE GET_NAM2.196
IF (FILETYPE.eq.'p') THEN GET_NAM2.197
FILETYPE_2=LETTER_3 GET_NAM2.198
ELSE IF (FILETYPE.eq.'b') THEN ! Boundary File GDR2F405.160
FILETYPE_2=LETTER_3 GDR2F405.161
ELSE GET_NAM2.199
FILETYPE_2='a' GET_NAM2.200
ENDIF GET_NAM2.201
HUNDREDS = CHAR_ID(MOD(COUNT/100,36)+1) GET_NAM2.202
TENS = CHAR_ID(MOD(COUNT/10 ,10)+1) GET_NAM2.203
UNITS = CHAR_ID(MOD(COUNT, 10)+1) GET_NAM2.204
ENDIF GET_NAM2.205
ELSE IF (STYLE.EQ.'B') THEN ! some sort of absolute time GET_NAM2.206
C GET_NAM2.207
C Current date time is GET_NAM2.208
C GET_NAM2.209
YYYY=I_YEAR GET_NAM2.210
MM =I_MONTH GET_NAM2.211
DD =I_DAY GET_NAM2.212
HH =I_HOUR GET_NAM2.213
DAYNO = I_DAY_NUMBER GET_NAM2.214
C GET_NAM2.215
C Instantaneous files GET_NAM2.216
C GET_NAM2.217
IF (MEANLEV.EQ.0) THEN GET_NAM2.218
C dumps GET_NAM2.219
IF (FILETYPE.EQ.'d') THEN GET_NAM2.220
FILETYPE_2 = 'a' GET_NAM2.221
ENDIF GET_NAM2.222
C GET_NAM2.223
C Work out reintialisation period for pp and boundary files. GET_NAM2.224
C Note assumes reinitialisation period is whole number of hours. This GET_NAM2.225
C is not strictly true but is probably ok for this purpose. GET_NAM2.226
C GET_NAM2.227
IF ( FILETYPE.EQ.'p' ! PP File GDR2F405.162
& .or. FILETYPE.EQ.'b' ! Boundary File GDR2F405.163
& ) THEN GDR2F405.164
IF (ISUBMODEL.eq.atmos_sm) then GET_NAM2.229
HOURS = REINIT_STEPS/A_STEPS_PER_HR GET_NAM2.230
ELSE IF (ISUBMODEL.eq.ocean_sm) THEN GET_NAM2.231
HOURS = REINIT_STEPS*SECS_PER_PERIODim(o_im) GDR3F305.217
& /(STEPS_PER_PERIODim(o_im)*3600) GDR3F305.218
ELSE IF (ISUBMODEL.eq.wave_sm) THEN WRB1F401.1183
HOURS = REINIT_STEPS*SECS_PER_PERIODim(w_im) WRB1F401.1184
& /(STEPS_PER_PERIODim(w_im)*3600) WRB1F401.1185
ENDIF GET_NAM2.234
if (REINIT_STEPS.lt.0) then ! Gregorian reinitialisation GMG1F404.116
HOURS=720 ! dummy: could be anything divisible by 24 GMG1F404.117
endif GMG1F404.118
C do further checks if multiple of 1 day GET_NAM2.235
IF (MOD(HOURS,24).eq.0) THEN ! whole days in period, or GMG1F404.119
DAYS=HOURS/24 ! Gregorian reinit. GMG1F404.120
IF (FILETYPE.EQ.'b' ) THEN ! Boundary File GDR2F405.165
C boundary file test for filetype_2 - assumes 360 calendar DR240293.600
IF (DAYS.LT.10) THEN GET_NAM2.240
FILETYPE_2 = CHAR_ID(DAYS+1) GET_NAM2.241
ELSE GET_NAM2.242
CALL DAY2CHAR
(DAYS,FILETYPE_2) GET_NAM2.243
IF (FILETYPE_2.EQ.'0') THEN GET_NAM2.244
FILETYPE_2 = 'b' GET_NAM2.245
ENDIF GET_NAM2.246
ENDIF GET_NAM2.247
ENDIF GET_NAM2.248
IF (DD.eq.1 .and. TIME_CONVENTION.ne.'Absolute_short ' GMG1F404.121
& .and. (DAYS.EQ.30 .or. REINIT_STEPS.lt.0)) then GMG1F404.122
! Original code didn't allow style=C for 3-month reinit files but new GMG1F404.123
! code (Gregorian reinit) does, at least in section 3.0. GMG1F404.124
STYLE='C' ! month in characters GET_NAM2.251
ENDIF GET_NAM2.252
ELSE GET_NAM2.253
IF (FILETYPE.EQ.'b' ) THEN ! Boundary File GDR2F405.166
FILETYPE_2='b' GET_NAM2.255
ENDIF GET_NAM2.256
ENDIF GET_NAM2.257
C GET_NAM2.258
C For instantaneous pp file need to work out end of period as call to GET_NAM2.259
C this routine occurrs on the first output timestep. GET_NAM2.260
C GET_NAM2.261
IF (FILETYPE.EQ.'p') THEN GET_NAM2.262
FILETYPE_2 = LETTER_3 GET_NAM2.263
IF (STYLE.NE.'C') THEN GET_NAM2.264
IF (ISUBMODEL.eq.atmos_sm) THEN GET_NAM2.265
IF (STEPim(a_im).EQ.0) THEN GDR5F305.27
STEPS = REINIT_STEPS TJ150493.4
ELSE TJ150493.5
STEPS = STEPim(a_im) + REINIT_STEPS - 1 GDR5F305.28
ENDIF TJ150493.7
CALL STP2TIME
(STEPS, TJ080294.483
& A_STEPS_PER_HR*24,86400, TJ080294.484
& END_DAYS,END_SECONDS) TJ080294.485
ELSE IF (ISUBMODEL.eq.ocean_sm) THEN GET_NAM2.268
IF (STEPim(o_im).EQ.0) THEN GDR5F305.29
STEPS = REINIT_STEPS TJ150493.9
ELSE TJ150493.10
STEPS = STEPim(o_im) + REINIT_STEPS - 1 GDR5F305.30
ENDIF TJ150493.12
CALL STP2TIME
(STEPS, TJ080294.486
& STEPS_PER_PERIODim(o_im),SECS_PER_PERIODim(o_im), GDR3F305.219
& END_DAYS,END_SECONDS) TJ080294.488
ELSE IF (ISUBMODEL.eq.wave_sm) THEN WRB1F401.1186
IF (STEPim(w_im).EQ.0) THEN WRB1F401.1187
STEPS = REINIT_STEPS WRB1F401.1188
ELSE WRB1F401.1189
STEPS = STEPim(w_im) + REINIT_STEPS - 1 WRB1F401.1190
ENDIF WRB1F401.1191
CALL STP2TIME
(STEPS, WRB1F401.1192
& STEPS_PER_PERIODim(w_im),SECS_PER_PERIODim(w_im), WRB1F401.1193
& END_DAYS,END_SECONDS) WRB1F401.1194
ENDIF GET_NAM2.272
CALL SEC2TIME
(END_DAYS,END_SECONDS, TJ080294.489
& BASIS_TIME_DAYS,BASIS_TIME_SECS, TJ080294.490
& YYYY,MM,DD,HH,IMIN,ISEC,DAYNO,LCAL360) GSS1F304.337
ENDIF GET_NAM2.275
ENDIF GET_NAM2.276
ENDIF GET_NAM2.277
GET_NAM2.278
ELSE ! MEANS GET_NAM2.279
C GET_NAM2.280
CL determine if special mean period GET_NAM2.281
IF (ISUBMODEL.EQ.ATMOS_SM) THEN GET_NAM2.282
HOURS=DUMPFREQim(a_im)/A_STEPS_PER_HR GDR3F305.220
DO I=1,MEANLEV GET_NAM2.284
HOURS=HOURS*MEANFREQim(I,a_im) !hours per meaning period GDR3F305.221
ENDDO GET_NAM2.286
ELSE IF (ISUBMODEL.EQ.OCEAN_SM) THEN GET_NAM2.287
HOURS=DUMPFREQim(o_im)*SECS_PER_PERIODim(o_im) GDR3F305.222
& /(3600*STEPS_PER_PERIODim(o_im)) GDR3F305.223
DO I=1,MEANLEV GET_NAM2.290
HOURS=HOURS*MEANFREQim(I,o_im) !hours per meaning period GDR3F305.224
ENDDO GET_NAM2.292
ELSE IF (ISUBMODEL.EQ.WAVE_SM) THEN WRB1F401.1195
HOURS=DUMPFREQim(w_im)*SECS_PER_PERIODim(w_im) WRB1F401.1196
& /(3600*STEPS_PER_PERIODim(w_im)) WRB1F401.1197
DO I=1,MEANLEV WRB1F401.1198
HOURS=HOURS*MEANFREQim(I,w_im) !hours per meaning period WRB1F401.1199
ENDDO WRB1F401.1200
ENDIF GET_NAM2.293
IF (MOD(HOURS,24).EQ.0) THEN GET_NAM2.294
DAYS=HOURS/24 GET_NAM2.295
CALL DAY2CHAR
(DAYS,FILETYPE_2) GET_NAM2.296
IF (FILETYPE_2.eq.'0') THEN GET_NAM2.297
FILETYPE_2=MEAN_PERIOD(MEANLEV) GET_NAM2.298
ELSE if (FILETYPE_2.eq.'m'.and.DD.eq.1 GET_NAM2.299
& .AND.TIME_CONVENTION.ne.'Absolute_short ') THEN GET_NAM2.300
STYLE='C' ! period starts at beginning of a month GET_NAM2.301
IF (MM.EQ.1) THEN ! correct year if month december GET_NAM2.302
YYYY=YYYY-1 GET_NAM2.303
ENDIF GET_NAM2.304
ELSE if (FILETYPE_2.eq.'s'.and.DD.eq.1 GET_NAM2.305
& .AND.TIME_CONVENTION.ne.'Absolute_short ') THEN GET_NAM2.306
STYLE='C' ! period starts at beginning of aseason GET_NAM2.307
ENDIF GET_NAM2.308
ELSE GET_NAM2.309
FILETYPE_2=MEAN_PERIOD(MEANLEV) GET_NAM2.310
ENDIF GET_NAM2.311
ENDIF GET_NAM2.312
C GET_NAM2.313
Y_UNITS = CHAR_ID(MOD(YYYY,10)+1) GET_NAM2.314
M = CHAR_ID(MM+1) GET_NAM2.315
D = CHAR_ID(DD+1) GET_NAM2.316
H = CHAR_ID(HH+1) GET_NAM2.317
C GET_NAM2.318
ENDIF GET_NAM2.319
C GET_NAM2.320
ELSE GET_NAM2.321
C partial sum files - no date time information required GET_NAM2.322
SEPARATOR='_' GET_NAM2.323
FILETYPE_2 = MEAN_PERIOD(MEANLEV) GET_NAM2.324
ENDIF GET_NAM2.325
C GET_NAM2.326
CL---------------------------------------------------------------------- GET_NAM2.327
!L 3.1 Construct filename from the various components GMG1F404.125
CL GET_NAM2.329
FILENAME=" " GET_NAM2.330
IF (MODEL_STATUS.EQ.'Operational') THEN GET_NAM2.331
FILENAME(1:2) =QW GET_NAM2.332
FILENAME(3:6) =EXPT_ID GET_NAM2.333
FILENAME(7:7) =SUBMODEL_ID GET_NAM2.334
FILENAME(8:8) =SEPARATOR GET_NAM2.335
FILENAME(9:9) =FILETYPE GET_NAM2.336
FILENAME(10:10)=FILETYPE_2 GET_NAM2.337
FILENAME(11:11)=HUNDREDS GET_NAM2.338
FILENAME(12:12)=TENS GET_NAM2.339
FILENAME(13:13)=UNITS GET_NAM2.340
ELSE GET_NAM2.341
FILENAME(1:4) =EXPT_ID GET_NAM2.342
FILENAME(5:5) =JOB_ID GET_NAM2.343
FILENAME(6:6) =SUBMODEL_ID GET_NAM2.344
FILENAME(7:7) =SEPARATOR GET_NAM2.345
FILENAME(8:8) =FILETYPE GET_NAM2.346
FILENAME(9:9) =FILETYPE_2 GET_NAM2.347
IF (FILETYPE.EQ.'s') THEN GET_NAM2.348
IF (TOGGLE.EQ.1) THEN GET_NAM2.349
FILENAME(10:10)='a' GET_NAM2.350
ELSE GET_NAM2.351
FILENAME(10:10)='b' GET_NAM2.352
ENDIF GET_NAM2.353
ELSE IF (STYLE.EQ.'A') THEN GET_NAM2.354
FILENAME(10:10)=HUNDREDS GET_NAM2.355
FILENAME(11:11)=TENS GET_NAM2.356
FILENAME(12:12)=UNITS GET_NAM2.357
ELSE IF (STYLE.EQ.'B') THEN GET_NAM2.358
IF (TIME_CONVENTION.EQ.'Absolute_standard') THEN GET_NAM2.359
C GET_NAM2.360
C decades meansured relative to 1800 GET_NAM2.361
Y_TENS = CHAR_ID(MOD(YYYY/10,36)+1) GET_NAM2.362
FILENAME(10:10)=Y_TENS GET_NAM2.363
FILENAME(11:11)=Y_UNITS GET_NAM2.364
FILENAME(12:12)=M GET_NAM2.365
FILENAME(13:13)=D GET_NAM2.366
FILENAME(14:14)=H GET_NAM2.367
ELSE IF (TIME_CONVENTION.EQ.'Absolute_long ') THEN GET_NAM2.368
GET_NAM2.369
C centuries measured from 0 ie 1992 as j92, with wraparound at 3600 TJ150493.13
Y_HUNDS = CHAR_ID(MOD(YYYY/100,36)+1) TJ150493.14
Y_TENS = CHAR_ID((YYYY-(YYYY/100)*100)/10+1) GET_NAM2.372
FILENAME(10:10)=Y_HUNDS GET_NAM2.373
FILENAME(11:11)=Y_TENS GET_NAM2.374
FILENAME(12:12)=Y_UNITS GET_NAM2.375
FILENAME(13:13)=M GET_NAM2.376
FILENAME(14:14)=D GET_NAM2.377
ELSE IF (TIME_CONVENTION.EQ.'Absolute_short ') THEN GET_NAM2.378
FILENAME(10:10)=Y_UNITS GET_NAM2.379
1 FORMAT (I3) GET_NAM2.380
2 FORMAT ('0',I2) GET_NAM2.381
3 FORMAT ('00',I1) GET_NAM2.382
IF (DAYNO.LT.100) THEN GET_NAM2.383
IF (DAYNO.LT.10) THEN GET_NAM2.384
WRITE(CDAYNO,3) DAYNO GET_NAM2.385
ELSE GET_NAM2.386
WRITE(CDAYNO,2) DAYNO GET_NAM2.387
ENDIF GET_NAM2.388
ELSE GET_NAM2.389
WRITE(CDAYNO,1) DAYNO GET_NAM2.390
ENDIF GET_NAM2.391
FILENAME(11:13)= CDAYNO GET_NAM2.392
FILENAME(14:14)=H GET_NAM2.393
ENDIF GET_NAM2.394
ELSE ! style C - Character date GET_NAM2.395
IF (TIME_CONVENTION.EQ.'Absolute_standard') THEN GET_NAM2.396
C GET_NAM2.397
C decades meansured relative to 1800 GET_NAM2.398
Y_TENS = CHAR_ID(MOD(YYYY/10,36)+1) GET_NAM2.399
FILENAME(10:10)=Y_TENS GET_NAM2.400
FILENAME(11:11)=Y_UNITS GET_NAM2.401
IF (MEANLEV.eq.0) THEN GET_NAM2.402
FILENAME(12:14) = MONTH_3CHAR(MM) GET_NAM2.403
ELSE ! means date routine called is at beginning of next GET_NAM2.404
C period GET_NAM2.405
MON=MM-1 GET_NAM2.406
IF (MON.EQ.0) THEN GET_NAM2.407
MON = 12 GET_NAM2.408
ENDIF GET_NAM2.409
IF (FILETYPE_2.eq.'m') THEN GET_NAM2.410
FILENAME(12:14) = MONTH_3CHAR(MON) GET_NAM2.411
ELSE GET_NAM2.412
FILENAME(12:14) = SEASON_3CHAR(MON) GET_NAM2.413
ENDIF GET_NAM2.414
ENDIF GET_NAM2.415
ELSE IF (TIME_CONVENTION.EQ.'Absolute_long ') THEN GET_NAM2.416
GET_NAM2.417
C centuries measured from 0 ie 1992 as j92, with wraparound at 3600 TJ150493.15
Y_HUNDS = CHAR_ID(MOD(YYYY/100,36)+1) TJ150493.16
Y_TENS = CHAR_ID((YYYY-(YYYY/100)*100)/10+1) GET_NAM2.420
FILENAME(10:10)=Y_HUNDS GET_NAM2.421
FILENAME(11:11)=Y_TENS GET_NAM2.422
FILENAME(12:12)=Y_UNITS GET_NAM2.423
IF (MEANLEV.eq.0) THEN GET_NAM2.424
FILENAME(13:14) = MONTH_2CHAR(MM) GET_NAM2.425
ELSE ! means date routine called is at beginning of next GET_NAM2.426
C period GET_NAM2.427
MON=MM-1 GET_NAM2.428
IF (MON.EQ.0) THEN GET_NAM2.429
MON = 12 GET_NAM2.430
ENDIF GET_NAM2.431
IF (FILETYPE_2.eq.'m') THEN GET_NAM2.432
FILENAME(13:14) = MONTH_2CHAR(MON) GET_NAM2.433
ELSE GET_NAM2.434
FILENAME(13:14) = SEASON_2CHAR(MON) GET_NAM2.435
ENDIF GET_NAM2.436
ENDIF GET_NAM2.437
ENDIF GET_NAM2.438
ENDIF GET_NAM2.439
ENDIF GET_NAM2.440
C GET_NAM2.441
999 CONTINUE GET_NAM2.442
RETURN GET_NAM2.443
CL---------------------------------------------------------------------- GET_NAM2.444
END GET_NAM2.445
*ENDIF GET_NAM2.446