*IF DEF,RECON SETFHEA1.2
C ******************************COPYRIGHT****************************** GTS2F400.8551
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.8552
C GTS2F400.8553
C Use, duplication or disclosure of this code is subject to the GTS2F400.8554
C restrictions as set forth in the contract. GTS2F400.8555
C GTS2F400.8556
C Meteorological Office GTS2F400.8557
C London Road GTS2F400.8558
C BRACKNELL GTS2F400.8559
C Berkshire UK GTS2F400.8560
C RG12 2SZ GTS2F400.8561
C GTS2F400.8562
C If no contract has been raised with this copy of the code, the use, GTS2F400.8563
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.8564
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.8565
C Modelling at the above address. GTS2F400.8566
C ******************************COPYRIGHT****************************** GTS2F400.8567
C GTS2F400.8568
CLL SUBROUTINE SETFHEAD---------------------------------------- SETFHEA1.3
CLL SETFHEA1.4
CLL Purpose: Initialises fixed length header. SETFHEA1.5
CLL SETFHEA1.6
CLL Written by A. Dickinson SETFHEA1.7
CLL SETFHEA1.8
CLL Model Modification history from model version 3.0: SETFHEA1.9
CLL version date SETFHEA1.10
CLL SETFHEA1.11
CLL 3.1 10/02/93 Date and time calls made portable AD100293.1
CLL Author: A. Dickinson Reviewer: F. Rawlins AD100293.2
CLL 3.4 05/10/94 Add no of prognostic fields to FIXHD(153) GDR2F304.77
CLL for dumps. D.Robinson Reviewer: D. Goddard GDR2F304.78
! 4.4 25/04/97 Changes to read well-formed records if the GBC5F404.436
! input dumpfile is in that format (almost PP file GBC5F404.437
! format) GBC5F404.438
! Author: Bob Carruthers, Cray Research GBC5F404.439
CLL AD100293.3
CLL Logical components covered: S1 SETFHEA1.12
CLL SETFHEA1.13
CLL Documentation: UM Documentation Paper F3 SETFHEA1.14
CLL------------------------------------------------------------ SETFHEA1.15
C*L Arguments:------------------------------------------------- SETFHEA1.16
SUBROUTINE SETFHEAD(FIXHD 2,1SETFHEA1.17
*,LEN_FIXHD SETFHEA1.18
*,LEN_INTHD SETFHEA1.19
*,LEN_REALHD SETFHEA1.20
*,LEN1_LEVDEPC,LEN2_LEVDEPC SETFHEA1.21
*,LEN1_ROWDEPC,LEN2_ROWDEPC SETFHEA1.22
*,LEN1_COLDEPC,LEN2_COLDEPC SETFHEA1.23
*,LEN1_FLDDEPC,LEN2_FLDDEPC SETFHEA1.24
*,LEN_EXTCNST SETFHEA1.25
*,LEN_DUMPHIST SETFHEA1.26
*,LEN_CFI1,LEN_CFI2,LEN_CFI3 SETFHEA1.27
*,LEN1_LOOKUP,LEN2_LOOKUP SETFHEA1.28
*,LEN_DATA SETFHEA1.29
*,VDAYNUM SETFHEA1.30
*,VYEAR,VMONTH,VDAY,VHOUR,VMINUTE SETFHEA1.31
*,IDAYNUM SETFHEA1.32
*,IYEAR,IMONTH,IDAY,IHOUR,IMINUTE SETFHEA1.33
*,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11 SETFHEA1.34
*,IPOS) SETFHEA1.35
SETFHEA1.36
IMPLICIT NONE SETFHEA1.37
SETFHEA1.38
INTEGER SETFHEA1.39
* LEN_FIXHD SETFHEA1.40
*,LEN_INTHD SETFHEA1.41
*,LEN_REALHD SETFHEA1.42
*,LEN1_LEVDEPC,LEN2_LEVDEPC SETFHEA1.43
*,LEN1_ROWDEPC,LEN2_ROWDEPC SETFHEA1.44
*,LEN1_COLDEPC,LEN2_COLDEPC SETFHEA1.45
*,LEN1_FLDDEPC,LEN2_FLDDEPC SETFHEA1.46
*,LEN_EXTCNST SETFHEA1.47
*,LEN_DUMPHIST SETFHEA1.48
*,LEN_CFI1 SETFHEA1.49
*,LEN_CFI2 SETFHEA1.50
*,LEN_CFI3 SETFHEA1.51
*,LEN1_LOOKUP,LEN2_LOOKUP SETFHEA1.52
*,LEN_DATA SETFHEA1.53
*,VDAYNUM SETFHEA1.54
*,VYEAR ! SETFHEA1.55
*,VMONTH ! SETFHEA1.56
*,VDAY !>IN Verification date & time SETFHEA1.57
*,VHOUR ! SETFHEA1.58
*,VMINUTE ! SETFHEA1.59
*,IDAYNUM SETFHEA1.60
*,IYEAR ! SETFHEA1.61
*,IMONTH ! SETFHEA1.62
*,IDAY !>IN Initial date & time SETFHEA1.63
*,IHOUR ! SETFHEA1.64
*,IMINUTE ! SETFHEA1.65
*,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11 SETFHEA1.66
*,IPOS !OUT Start address of data in UM dump SETFHEA1.67
SETFHEA1.68
INTEGER SETFHEA1.69
* FIXHD(LEN_FIXHD) SETFHEA1.70
C*------------------------------------------------------------- SETFHEA1.71
SETFHEA1.72
INTEGER I,LLLL SETFHEA1.73
SETFHEA1.81
*CALL C_MDI
SETFHEA1.82
*CALL CNTL_IO
GBC5F404.440
SETFHEA1.83
C-------------------------------------------------------------- SETFHEA1.84
C Initialise fixed length header SETFHEA1.85
C-------------------------------------------------------------- SETFHEA1.86
SETFHEA1.87
DO I=1,LEN_FIXHD SETFHEA1.88
FIXHD(I)=IMDI SETFHEA1.89
ENDDO SETFHEA1.90
SETFHEA1.91
CALL DATE_TIME
(FIXHD(35),FIXHD(36),FIXHD(37) AD100293.4
*,FIXHD(38),FIXHD(39),FIXHD(40)) AD100293.5
SETFHEA1.107
C Initial time SETFHEA1.108
FIXHD(21)=IYEAR SETFHEA1.109
FIXHD(22)=IMONTH SETFHEA1.110
FIXHD(23)=IDAY SETFHEA1.111
FIXHD(24)=IHOUR SETFHEA1.112
FIXHD(25)=IMINUTE SETFHEA1.113
FIXHD(26)=0 SETFHEA1.114
FIXHD(27)=IDAYNUM SETFHEA1.115
SETFHEA1.116
C Validity time SETFHEA1.117
FIXHD(28)=VYEAR SETFHEA1.118
FIXHD(29)=VMONTH SETFHEA1.119
FIXHD(30)=VDAY SETFHEA1.120
FIXHD(31)=VHOUR SETFHEA1.121
FIXHD(32)=VMINUTE SETFHEA1.122
FIXHD(33)=0 SETFHEA1.123
FIXHD(34)=VDAYNUM SETFHEA1.124
SETFHEA1.125
C Dump version number SETFHEA1.126
FIXHD(1)=F1 SETFHEA1.127
c--if the version is less than 16, change it GBC5F404.441
c if(fixhd(1).le.15) fixhd(1)=16 GBC5F404.442
C Atmosphere or Ocean SETFHEA1.128
FIXHD(2)=F2 SETFHEA1.129
C Vertical coord type SETFHEA1.130
FIXHD(3)=F3 SETFHEA1.131
C Horizontal grid type SETFHEA1.132
FIXHD(4)=F4 SETFHEA1.133
C Instantaneous data SETFHEA1.134
FIXHD(5)=F5 SETFHEA1.135
C SETFHEA1.136
FIXHD(6)=F6 SETFHEA1.137
C SETFHEA1.138
FIXHD(7)=F7 SETFHEA1.139
C Gregorian calendar SETFHEA1.140
FIXHD(8)=F8 SETFHEA1.141
C Grid SETFHEA1.142
FIXHD(9)=F9 SETFHEA1.143
C SETFHEA1.144
FIXHD(10)=F10 SETFHEA1.145
C Projection number SETFHEA1.146
FIXHD(11)=F11 SETFHEA1.147
SETFHEA1.148
C Integer constants SETFHEA1.149
IPOS=LEN_FIXHD+1 SETFHEA1.150
FIXHD(100)=IPOS SETFHEA1.151
FIXHD(101)=LEN_INTHD SETFHEA1.152
SETFHEA1.153
C Real constants SETFHEA1.154
IPOS=IPOS+FIXHD(101) SETFHEA1.155
FIXHD(105)=IPOS SETFHEA1.156
FIXHD(106)=LEN_REALHD SETFHEA1.157
SETFHEA1.158
C Level dependent constants SETFHEA1.159
IPOS=IPOS+FIXHD(106) SETFHEA1.160
LLLL=LEN1_LEVDEPC*LEN2_LEVDEPC SETFHEA1.161
IF(LLLL.EQ.0)THEN SETFHEA1.162
FIXHD(110)=IMDI SETFHEA1.163
FIXHD(111)=IMDI SETFHEA1.164
FIXHD(112)=IMDI SETFHEA1.165
ELSE SETFHEA1.166
FIXHD(110)=IPOS SETFHEA1.167
FIXHD(111)=LEN1_LEVDEPC SETFHEA1.168
FIXHD(112)=LEN2_LEVDEPC SETFHEA1.169
ENDIF SETFHEA1.170
SETFHEA1.171
C Row dependent constants SETFHEA1.172
IPOS=IPOS+LLLL SETFHEA1.173
LLLL=LEN2_ROWDEPC*LEN1_ROWDEPC SETFHEA1.174
IF(LLLL.EQ.0)THEN SETFHEA1.175
FIXHD(115)=IMDI SETFHEA1.176
FIXHD(116)=IMDI SETFHEA1.177
FIXHD(117)=IMDI SETFHEA1.178
ELSE SETFHEA1.179
FIXHD(115)=IPOS SETFHEA1.180
FIXHD(116)=LEN1_ROWDEPC SETFHEA1.181
FIXHD(117)=LEN2_ROWDEPC SETFHEA1.182
ENDIF SETFHEA1.183
SETFHEA1.184
C Column dependent constants SETFHEA1.185
IPOS=IPOS+LLLL SETFHEA1.186
LLLL=LEN1_COLDEPC*LEN2_COLDEPC SETFHEA1.187
IF(LLLL.EQ.0)THEN SETFHEA1.188
FIXHD(120)=IMDI SETFHEA1.189
FIXHD(121)=IMDI SETFHEA1.190
FIXHD(122)=IMDI SETFHEA1.191
ELSE SETFHEA1.192
FIXHD(120)=IPOS SETFHEA1.193
FIXHD(121)=LEN1_COLDEPC SETFHEA1.194
FIXHD(122)=LEN2_COLDEPC SETFHEA1.195
ENDIF SETFHEA1.196
SETFHEA1.197
C Fields of constants SETFHEA1.198
IPOS=IPOS+LLLL SETFHEA1.199
LLLL=LEN1_FLDDEPC*LEN2_FLDDEPC SETFHEA1.200
IF(LLLL.EQ.0)THEN SETFHEA1.201
FIXHD(125)=IMDI SETFHEA1.202
FIXHD(126)=IMDI SETFHEA1.203
FIXHD(127)=IMDI SETFHEA1.204
ELSE SETFHEA1.205
FIXHD(125)=IPOS SETFHEA1.206
FIXHD(126)=LEN1_FLDDEPC SETFHEA1.207
FIXHD(127)=LEN2_FLDDEPC SETFHEA1.208
ENDIF SETFHEA1.209
FIXHD(128)=IMDI SETFHEA1.210
FIXHD(129)=IMDI SETFHEA1.211
SETFHEA1.212
C Extra constants SETFHEA1.213
IPOS=IPOS+LLLL SETFHEA1.214
LLLL=LEN_EXTCNST SETFHEA1.215
IF(LLLL.EQ.0)THEN SETFHEA1.216
FIXHD(130)=IMDI SETFHEA1.217
FIXHD(131)=IMDI SETFHEA1.218
ELSE SETFHEA1.219
FIXHD(130)=IPOS SETFHEA1.220
FIXHD(131)=LEN_EXTCNST SETFHEA1.221
ENDIF SETFHEA1.222
SETFHEA1.223
C Temp history record SETFHEA1.224
IPOS=IPOS+LLLL SETFHEA1.225
LLLL=LEN_DUMPHIST SETFHEA1.226
IF(LLLL.EQ.0)THEN SETFHEA1.227
FIXHD(135)=IMDI SETFHEA1.228
FIXHD(136)=IMDI SETFHEA1.229
ELSE SETFHEA1.230
FIXHD(135)=IPOS SETFHEA1.231
FIXHD(136)=LEN_DUMPHIST SETFHEA1.232
ENDIF SETFHEA1.233
SETFHEA1.234
C Compress index 1 SETFHEA1.235
IPOS=IPOS+LLLL SETFHEA1.236
LLLL=LEN_CFI1 SETFHEA1.237
IF(LLLL.EQ.0)THEN SETFHEA1.238
FIXHD(140)=IMDI SETFHEA1.239
FIXHD(141)=IMDI SETFHEA1.240
ELSE SETFHEA1.241
FIXHD(140)=IPOS SETFHEA1.242
FIXHD(141)=LEN_CFI1 SETFHEA1.243
ENDIF SETFHEA1.244
C Compress index 2 SETFHEA1.245
IPOS=IPOS+LLLL SETFHEA1.246
LLLL=LEN_CFI2 SETFHEA1.247
IF(LLLL.EQ.0)THEN SETFHEA1.248
FIXHD(142)=IMDI SETFHEA1.249
FIXHD(143)=IMDI SETFHEA1.250
ELSE SETFHEA1.251
FIXHD(142)=IPOS SETFHEA1.252
FIXHD(143)=LEN_CFI2 SETFHEA1.253
ENDIF SETFHEA1.254
C Compress index 3 SETFHEA1.255
IPOS=IPOS+LLLL SETFHEA1.256
LLLL=LEN_CFI3 SETFHEA1.257
IF(LLLL.EQ.0)THEN SETFHEA1.258
FIXHD(144)=IMDI SETFHEA1.259
FIXHD(145)=IMDI SETFHEA1.260
ELSE SETFHEA1.261
FIXHD(144)=IPOS SETFHEA1.262
FIXHD(145)=LEN_CFI3 SETFHEA1.263
ENDIF SETFHEA1.264
SETFHEA1.265
C LOOKUP SETFHEA1.266
IPOS=IPOS+LLLL SETFHEA1.267
LLLL=LEN1_LOOKUP*LEN2_LOOKUP SETFHEA1.268
IF(LLLL.EQ.0)THEN SETFHEA1.269
FIXHD(150)=IMDI SETFHEA1.270
FIXHD(151)=IMDI SETFHEA1.271
FIXHD(152)=IMDI SETFHEA1.272
ELSE SETFHEA1.273
FIXHD(150)=IPOS SETFHEA1.274
FIXHD(151)=LEN1_LOOKUP SETFHEA1.275
FIXHD(152)=LEN2_LOOKUP SETFHEA1.276
C For dumps, add no of prognostic fields to FIXHD GDR2F304.79
C In Reconfiguration LEN2_LOOKUP = No of prognostic fields GDR2F304.80
IF (FIXHD(5).EQ.1) THEN GDR2F304.81
FIXHD(153) = LEN2_LOOKUP GDR2F304.82
ENDIF GDR2F304.83
ENDIF SETFHEA1.277
SETFHEA1.278
C Model data SETFHEA1.279
IPOS=IPOS+LLLL SETFHEA1.280
LLLL=LEN_DATA SETFHEA1.281
IF(LLLL.EQ.0)THEN SETFHEA1.282
FIXHD(160)=IMDI SETFHEA1.283
FIXHD(161)=IMDI SETFHEA1.284
ELSE SETFHEA1.285
fixhd(160)= ! make sure the data starts on a sector bndry GBC5F404.443
2 ((ipos+um_sector_size-1)/um_sector_size)*um_sector_size+1 GBC5F404.444
FIXHD(161)=LEN_DATA SETFHEA1.287
ENDIF SETFHEA1.288
SETFHEA1.289
RETURN SETFHEA1.290
END SETFHEA1.291
SETFHEA1.292
*ENDIF SETFHEA1.293