*IF DEF,CONTROL UPANCIL1.2
C ******************************COPYRIGHT****************************** GTS2F400.10837
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.10838
C GTS2F400.10839
C Use, duplication or disclosure of this code is subject to the GTS2F400.10840
C restrictions as set forth in the contract. GTS2F400.10841
C GTS2F400.10842
C Meteorological Office GTS2F400.10843
C London Road GTS2F400.10844
C BRACKNELL GTS2F400.10845
C Berkshire UK GTS2F400.10846
C RG12 2SZ GTS2F400.10847
C GTS2F400.10848
C If no contract has been raised with this copy of the code, the use, GTS2F400.10849
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.10850
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.10851
C Modelling at the above address. GTS2F400.10852
C ******************************COPYRIGHT****************************** GTS2F400.10853
C GTS2F400.10854
CLL Subroutine UP_ANCIL UPANCIL1.3
CLL UPANCIL1.4
CLL CW, SI <- programmer of some or all of previous code or changes UPANCIL1.5
CLL UPANCIL1.6
CLL Model Modification history from model version 3.0: UPANCIL1.7
CLL version Date UPANCIL1.8
CLL 3.1 3/02/93 : added comdeck CHSUNITS to define NUNITS for i/o RS030293.134
CLL 3.2 27/03/93 Dynamic allocation of main data arrays and correct @DYALLOC.3800
CLL uninitialised dimensioning of array D1 in call to @DYALLOC.3801
CLL REPLANCA,REPLANCO. R.Rawlins. @DYALLOC.3802
CLL 3.3 08/02/94 Add BASIS_TIME_DAYS to calls to REPLANCA,REPLANCO TJ080294.330
CLL as part of 32-bit portability change. TCJ TJ080294.331
CLL 3.4 13/06/94 Arguments LANCILA, LANCILO, LCAL360 added GSS1F304.732
CLL LCAL360 passed to REPLANCA/O GSS1F304.733
CLL DEFs ANCILA, ANCILO replaced by LOGICALS GSS1F304.734
CLL LANCILA, LANCILO GSS1F304.735
CLL CALLs to REPLANCA/O now controlled by DEFs ATMOS, GSS1F304.736
CLL OCEAN as well as logical switches LANCILA/O GSS1F304.737
CLL S.J.Swarbrick GSS1F304.738
CLL 3.4 20/07/94 Use ANCIL_REFTIME as reference time to improve GRB1F304.260
CLL time interpolation of ancillaries for both GRB1F304.261
CLL atmosphere and ocean sub-models. R.T.H.Barnes GRB1F304.262
CLL 4.1 17/04/96 Introduce wave sub-model. RTHBarnes. WRB1F401.1121
! 4.1 18/06/96 Changes to cope with changes in STASH addressing GDG0F401.1481
! Author D.M. Goddard. GDG0F401.1482
! 4.4 14/07/97 Pass grid information down to REPLANCA. R A Stratton GRS2F404.221
!LL 4.5 11/09/98 Put DEFs round routines in EXTERNAL. D. Robinson. GHM2F405.11
CLL UPANCIL1.9
CLL Programing standard : UM documentation paper no3, UPANCIL1.10
CLL version no1, dated 15/01/90 UPANCIL1.11
CLL UPANCIL1.12
CLL System components covered : C71 UPANCIL1.13
CLL UPANCIL1.14
CLL System task C7 UPANCIL1.15
CLL UPANCIL1.16
CLL Purpose: The routine is entered when any of the ancillary UPANCIL1.17
CLL fields have to be updated. The list of fields is UPANCIL1.18
CLL searched for update requirements. The position of UPANCIL1.19
CLL the data required is found from the header information UPANCIL1.20
CLL read in from subroutine IN_ANCIL. The data is read in UPANCIL1.21
CLL and updates the existing information. UPANCIL1.22
CLL UPANCIL1.23
CLL Documentation: Unified Model documentation paper no C7. UPANCIL1.24
CLL version no 4, dated 15/06/90 UPANCIL1.25
CLL UPANCIL1.26
CLLEND UPANCIL1.27
UPANCIL1.28
SUBROUTINE UP_ANCIL( 3,4@DYALLOC.3803
*CALL ARGSIZE
@DYALLOC.3804
*CALL ARGD1
@DYALLOC.3805
*CALL ARGDUMA
@DYALLOC.3806
*CALL ARGDUMO
@DYALLOC.3807
*CALL ARGDUMW
WRB1F401.1122
*CALL ARGPTRA
@DYALLOC.3808
*CALL ARGPTRO
@DYALLOC.3809
*CALL ARGPTRW
WRB1F401.1123
*CALL ARGANC
@DYALLOC.3810
& I_AO, GDG0F401.1483
*CALL ARGPPX
GDG0F401.1484
& ICODE,CMESSAGE) GDG0F401.1485
UPANCIL1.33
IMPLICIT NONE UPANCIL1.34
UPANCIL1.35
C*L Arguments @DYALLOC.3812
CL @DYALLOC.3813
*CALL TYPSIZE
@DYALLOC.3814
*CALL TYPD1
@DYALLOC.3815
*CALL TYPDUMA
@DYALLOC.3816
*CALL TYPDUMO
@DYALLOC.3817
*CALL TYPDUMW
WRB1F401.1124
*CALL TYPPTRA
@DYALLOC.3818
*CALL TYPPTRO
@DYALLOC.3819
*CALL TYPPTRW
WRB1F401.1125
*CALL TYPANC
@DYALLOC.3820
INTEGER UPANCIL1.36
& I_AO, ! Sub-model indicator = 1 Atmosphere WRB1F401.1126
C = 2 Ocean UPANCIL1.38
C = 4 Wave WRB1F401.1127
& ICODE ! Return code UPANCIL1.39
UPANCIL1.40
CHARACTER*80 UPANCIL1.41
& CMESSAGE ! Error message UPANCIL1.42
C Local Storage GRB1F304.263
INTEGER ANCIL_REF_DAYS,ANCIL_REF_SECS GRB1F304.264
INTEGER ANCIL_OFFSET_STEPS ! offset of ref. from basis time GRB1F304.265
C* UPANCIL1.43
C Include COMDECKS UPANCIL1.44
*CALL CHSUNITS
RS030293.135
*CALL CMAXSIZE
GDR3F305.314
*CALL CSUBMODL
GDR3F305.315
*CALL CPPXREF
GDG0F401.1486
*CALL PPXLOOK
GDG0F401.1487
*CALL CCONTROL
GDR3F305.316
*CALL CTIME
UPANCIL1.49
UPANCIL1.50
! Local Storage GDR3F305.317
INTEGER A_STEPS_PER_HR GDR3F305.318
C*L Subroutines called; UPANCIL1.51
UPANCIL1.52
EXTERNAL TIME2SEC, TIM2STEP GHM2F405.12
*IF DEF,ATMOS GHM2F405.13
& ,REPLANCA GHM2F405.14
*ENDIF GHM2F405.15
*IF DEF,OCEAN GHM2F405.16
& ,REPLANCO GHM2F405.17
*ENDIF GHM2F405.18
*IF DEF,WAVE GHM2F405.19
! & ,REPLANCW ! Yet to be written. GHM2F405.20
*ENDIF GHM2F405.21
UPANCIL1.56
C* UPANCIL1.57
@DYALLOC.3821
ICODE=0 UPANCIL1.61
CMESSAGE=' ' UPANCIL1.62
UPANCIL1.63
CL Convert ancillary reference time to days & secs GRB1F304.267
CALL TIME2SEC
(ANCIL_REFTIME(1),ANCIL_REFTIME(2), GRB1F304.268
& ANCIL_REFTIME(3),ANCIL_REFTIME(4), GRB1F304.269
& ANCIL_REFTIME(5),ANCIL_REFTIME(6), GRB1F304.270
& 0,0,ANCIL_REF_DAYS,ANCIL_REF_SECS,LCAL360) GRB1F304.271
GRB1F304.272
CL Compute offset in timesteps of basis time from ancillary ref.time GDR3F305.319
CALL TIM2STEP
(BASIS_TIME_DAYS-ANCIL_REF_DAYS, GDR3F305.320
& BASIS_TIME_SECS-ANCIL_REF_SECS, GDR3F305.321
& STEPS_PER_PERIODim(I_AO),SECS_PER_PERIODim(I_AO), GDR3F305.322
& ANCIL_OFFSET_STEPS) GDR3F305.323
GDR3F305.324
IF(I_AO.EQ.1) THEN UPANCIL1.64
! Compute A_STEPS_PER_HR for use in REPLANCA GDR3F305.326
A_STEPS_PER_HR = 3600*STEPS_PER_PERIODim(a_im)/ GDR3F305.327
& SECS_PER_PERIODim(a_im) GDR3F305.328
UPANCIL1.65
*IF DEF,ATMOS GSS1F304.742
!! IF (LANCILim(I_AO)) THEN GDR3F305.325
UPANCIL1.67
CALL REPLANCA
(I_YEAR,I_MONTH,I_DAY,I_HOUR,I_MINUTE,I_SECOND, GDG0F401.1488
& I_DAY_NUMBER,ANCIL_REFTIME,ANCIL_OFFSET_STEPS, GDG0F401.1489
& P_FIELD,P_ROWS,U_FIELD,D1,D1(JLAND), GDG0F401.1490
*IF -DEF,RECON GDG0F401.1491
& STEPim(I_AO),LAND_FIELD,A_STEPS_PER_HR, GDG0F401.1492
*ENDIF GDG0F401.1493
& D1(JICE_FRACTION),D1(JTSTAR), GDG0F401.1494
& D1(JTSTAR_ANOM), GDG0F401.1495
& A_REALHD(2),A_REALHD(3), GRS2F404.222
& LEN1_LOOKUP,LEN_FIXHD, GDG0F401.1496
& PP_LEN_INTHD,PP_LEN_REALHD,LEN_TOT, GDG0F401.1497
& FIXHD_ANCILA,INTHD_ANCILA,REALHD_ANCILA, GDG0F401.1498
& LOOKUP_ANCILA,LOOKUP_ANCILA, GDG0F401.1499
& FTNANCILA,LOOKUP_START_ANCILA, GDG0F401.1500
& NANCIL_DATASETSA,NANCIL_LOOKUPSA, GDG0F401.1501
*CALL ARGPPX
GDG0F401.1502
& ICODE,CMESSAGE,LCAL360) GDG0F401.1503
UPANCIL1.90
UPANCIL1.91
!! END IF GDR3F305.330
*ENDIF UPANCIL1.92
UPANCIL1.93
ELSE IF(I_AO.EQ.2) THEN UPANCIL1.94
UPANCIL1.95
*IF DEF,OCEAN GSS1F304.746
!! IF (LANCILim(I_AO)) THEN GDR3F305.331
UPANCIL1.97
CALL REPLANCO
(I_YEAR,I_MONTH,I_DAY,I_HOUR,I_MINUTE,I_SECOND, GDG0F401.1504
& I_DAY_NUMBER,ANCIL_REFTIME,ANCIL_OFFSET_STEPS, GDG0F401.1505
& IMT,JMT,D1, GDG0F401.1506
*IF -DEF,RECON GDG0F401.1507
& STEPim(I_AO),STEPS_PER_PERIODim(I_AO), GDG0F401.1508
& SECS_PER_PERIODim(I_AO), GDG0F401.1509
*ENDIF GDG0F401.1510
& LEN1_LOOKUP,LEN_FIXHD, GDG0F401.1511
& PP_LEN_INTHD,PP_LEN_REALHD,LEN_TOT, GDG0F401.1512
& FIXHD_ANCILO,INTHD_ANCILO,REALHD_ANCILO, GDG0F401.1513
& LOOKUP_ANCILO,LOOKUP_ANCILO, GDG0F401.1514
& FTNANCILO,LOOKUP_START_ANCILO, GDG0F401.1515
& NANCIL_DATASETSO,NANCIL_LOOKUPSO, GDG0F401.1516
*CALL ARGPPX
GDG0F401.1517
*IF DEF,RECON GDG0F401.1518
& IOUNIT, GDG0F401.1519
*ENDIF GDG0F401.1520
& ICODE,CMESSAGE,LCAL360) GDG0F401.1521
UPANCIL1.120
!! END IF GDR3F305.333
*ENDIF UPANCIL1.121
UPANCIL1.122
ELSE IF (I_AO .eq. 4) THEN WRB1F401.1129
*IF DEF,WAVE WRB1F401.1130
WRITE(6,*)' UP_ANCIL; wave sub-model code yet to be written' GIE0F403.665
*ENDIF WRB1F401.1132
END IF UPANCIL1.123
UPANCIL1.124
RETURN UPANCIL1.125
END UPANCIL1.126
UPANCIL1.127
*----------------------------------------------------------------------- UPANCIL1.128
UPANCIL1.129
*ENDIF UPANCIL1.130