*IF DEF,C70_1A GLW1F404.40 C ******************************COPYRIGHT****************************** GTS2F400.5923 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.5924 C GTS2F400.5925 C Use, duplication or disclosure of this code is subject to the GTS2F400.5926 C restrictions as set forth in the contract. GTS2F400.5927 C GTS2F400.5928 C Meteorological Office GTS2F400.5929 C London Road GTS2F400.5930 C BRACKNELL GTS2F400.5931 C Berkshire UK GTS2F400.5932 C RG12 2SZ GTS2F400.5933 C GTS2F400.5934 C If no contract has been raised with this copy of the code, the use, GTS2F400.5935 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.5936 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.5937 C Modelling at the above address. GTS2F400.5938 C ******************************COPYRIGHT****************************** GTS2F400.5939 C GTS2F400.5940 CLL -------------- SUBROUTINE MERGEFLD --------------------------------- MERGFLD1.3 CLL MERGFLD1.4 CLL Purpose: To merge an array held for points in boundary zone of a MERGFLD1.5 CLL rectangular area with an array covering the full area. MERGFLD1.6 CLL Not suitable for single column use MERGFLD1.7 CLL MERGFLD1.8 CLL Model Modification history from model version 3.0: MERGFLD1.9 CLL version date MERGFLD1.10 CLL 3.1 30/03/93 Correct rimweights at corners when J<I et sim. RTHB RB300393.1 CLL MERGFLD1.12 CLL Programing standard: UM Documentation paper No4, MERGFLD1.13 CLL Version No 2, dated 18/01/90 MERGFLD1.14 CLL MERGFLD1.15 CLL System components covered: C72 (part) MERGFLD1.16 CLL MERGFLD1.17 CLL System task: C7 MERGFLD1.18 CLL MERGFLD1.19 CLL Documentation: UM Documentation paper No C7, MERGFLD1.20 CLL draft version No 6, Dated 22/01/90 MERGFLD1.21 CLL UM Documentation paper No 10, MERGFLD1.22 CLL draft version No 7, Dated 05/02/90 MERGFLD1.23 CLL MERGFLD1.24 CLLEND MERGFLD1.25 MERGFLD1.26 C*L Arguments MERGFLD1.27 MERGFLD1.28SUBROUTINE MERGEFLD (ROW_LENGTH,ROW_SIZE,ROWS,RIMWIDTH, 8MERGFLD1.29 & RIMWEIGHTS,RIM,FIELD) MERGFLD1.30 C* MERGFLD1.31 IMPLICIT NONE MERGFLD1.32 MERGFLD1.33 C*L MERGFLD1.34 INTEGER MERGFLD1.35 & ROW_LENGTH, ! In Row length of input boundary data MERGFLD1.36 & ROW_SIZE, ! In Row length of data field MERGFLD1.37 & ROWS, ! In MERGFLD1.38 & RIMWIDTH ! In Width of boundary zone MERGFLD1.39 MERGFLD1.40 REAL MERGFLD1.41 & RIMWEIGHTS(RIMWIDTH), ! In Weights to be given to RB300393.2 C ! boundary zone values. RB300393.3 & RIM((ROW_LENGTH+ROWS-2)*RIMWIDTH*2), MERGFLD1.44 C ! In Input boundary data. MERGFLD1.45 & FIELD(ROWS*ROW_SIZE) ! In/Out Output field MERGFLD1.46 MERGFLD1.47 C* MERGFLD1.48 C Local variables RB300393.4 MERGFLD1.50 INTEGER MERGFLD1.51 & I, ! Loop over rim gridpoints. RB300393.5 & J, ! Loop over N & S rows or E & W columns. RB300393.6 & IRIM ! Position in RIM data array. RB300393.7 RB300393.8 REAL RB300393.9 & RWT ! Modified rimweight for N & S rows. RB300393.10 MERGFLD1.55 CL Internal Structure MERGFLD1.56 MERGFLD1.57 CL 1.0 Copy N rows into final positions MERGFLD1.58 MERGFLD1.59 IRIM = 1 MERGFLD1.60 DO 10 I=1,RIMWIDTH MERGFLD1.61 DO 11 J=1,ROW_LENGTH MERGFLD1.62 IF (J .LT. I) THEN RB300393.11 RWT = RIMWEIGHTS(J) RB300393.12 ELSE IF (J .GT. ROW_LENGTH+1-I) THEN RB300393.13 RWT = RIMWEIGHTS(ROW_LENGTH+1-J) RB300393.14 ELSE RB300393.15 RWT = RIMWEIGHTS(I) RB300393.16 END IF RB300393.17 FIELD(J+(I-1)*ROW_SIZE) = RIM(IRIM)*RWT RB300393.18 & +FIELD(J+(I-1)*ROW_SIZE)*(1.0-RWT) RB300393.19 IRIM=IRIM+1 MERGFLD1.66 11 CONTINUE MERGFLD1.67 10 CONTINUE MERGFLD1.68 MERGFLD1.69 CL 2.0 Copy E rows into final positions MERGFLD1.70 MERGFLD1.71 DO 20 I=RIMWIDTH+1,ROWS-RIMWIDTH MERGFLD1.72 DO 21 J=ROW_LENGTH-RIMWIDTH+1,ROW_LENGTH MERGFLD1.73 FIELD(J+(I-1)*ROW_SIZE)=RIM(IRIM)*RIMWEIGHTS(ROW_LENGTH+1-J) RB300393.20 & +FIELD(J+(I-1)*ROW_SIZE)*(1.0- RB300393.21 & RIMWEIGHTS(ROW_LENGTH+1-J)) RB300393.22 IRIM=IRIM+1 MERGFLD1.77 21 CONTINUE MERGFLD1.78 20 CONTINUE MERGFLD1.79 MERGFLD1.80 CL 3.0 Copy S rows into final positions MERGFLD1.81 MERGFLD1.82 DO 30 I=ROWS-RIMWIDTH+1,ROWS MERGFLD1.83 DO 31 J=1,ROW_LENGTH MERGFLD1.84 IF (J .LT. ROWS+1-I) THEN RB300393.23 RWT = RIMWEIGHTS(J) RB300393.24 ELSE IF (J .GT. ROW_LENGTH-ROWS+I) THEN RB300393.25 RWT = RIMWEIGHTS(ROW_LENGTH+1-J) RB300393.26 ELSE RB300393.27 RWT = RIMWEIGHTS(ROWS+1-I) RB300393.28 END IF RB300393.29 FIELD(J+(I-1)*ROW_SIZE) = RIM(IRIM)*RWT RB300393.30 & +FIELD(J+(I-1)*ROW_SIZE)*(1.0-RWT) RB300393.31 IRIM=IRIM+1 MERGFLD1.88 31 CONTINUE MERGFLD1.89 30 CONTINUE MERGFLD1.90 MERGFLD1.91 CL 4.0 Copy W rows into final positions MERGFLD1.92 MERGFLD1.93 DO 40 I=RIMWIDTH+1,ROWS-RIMWIDTH MERGFLD1.94 DO 41 J=1,RIMWIDTH MERGFLD1.95 FIELD(J+(I-1)*ROW_SIZE)=RIM(IRIM)*RIMWEIGHTS(J) MERGFLD1.96 & +FIELD(J+(I-1)*ROW_SIZE)*(1.0- RB300393.32 & RIMWEIGHTS(J)) MERGFLD1.98 IRIM=IRIM+1 MERGFLD1.99 41 CONTINUE MERGFLD1.100 40 CONTINUE MERGFLD1.101 MERGFLD1.102 RETURN MERGFLD1.103 END MERGFLD1.104 MERGFLD1.105 MERGFLD1.106 *ENDIF MERGFLD1.107