*IF DEF,C92_1A,OR,DEF,MAKEBC UIE3F404.21 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.15269 C GTS2F400.15270 C Use, duplication or disclosure of this code is subject to the GTS2F400.15271 C restrictions as set forth in the contract. GTS2F400.15272 C GTS2F400.15273 C Meteorological Office GTS2F400.15274 C London Road GTS2F400.15275 C BRACKNELL GTS2F400.15276 C Berkshire UK GTS2F400.15277 C RG12 2SZ GTS2F400.15278 C GTS2F400.15279 C If no contract has been raised with this copy of the code, the use, GTS2F400.15280 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.15281 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.15282 C Modelling at the above address. GTS2F400.15283 C ******************************COPYRIGHT****************************** GTS2F400.15284 C GTS2F400.15285 !+ Performs Bi-linear horizitontal interpolation HINT_BL1.3 ! HINT_BL1.4 ! Subroutine Interface: HINT_BL1.5SUBROUTINE H_INT_BL(ROWS_IN,ROW_LENGTH_IN,LEN_FIELD_OUT 39HINT_BL1.6 &, INDEX_B_L,INDEX_B_R,DATA_IN HINT_BL1.7 &, WEIGHT_B_L,WEIGHT_B_R,WEIGHT_T_L,WEIGHT_T_R HINT_BL1.8 &, DATA_OUT) HINT_BL1.9 HINT_BL1.10 CLL System component: S121 HINT_BL1.11 CLL HINT_BL1.12 CLL System task: S1 HINT_BL1.13 CLL HINT_BL1.14 CLL Purpose: HINT_BL1.15 CLL HINT_BL1.16 CLL Documentation: HINT_BL1.17 CLL The interpolation formulae are described in HINT_BL1.18 CLL unified model on-line documentation paper S1. HINT_BL1.19 CLL HINT_BL1.20 IMPLICIT NONE HINT_BL1.21 ! HINT_BL1.22 ! Description: HINT_BL1.23 ! Carries out bi-linear horizontal interpolation using coefficients HINT_BL1.24 ! and gather indices calculated in subroutine H_INT_CO HINT_BL1.25 ! HINT_BL1.26 ! Method: HINT_BL1.27 ! See UMDP S1 for full desciption HINT_BL1.28 ! HINT_BL1.29 ! Current Code Owner: D.M. Goddard HINT_BL1.30 ! HINT_BL1.31 ! History: HINT_BL1.32 ! Version Date Comment HINT_BL1.33 ! ------- ---- ------- HINT_BL1.34 ! 3.0 ?????? Original code. A.Dickinson HINT_BL1.35 ! 4.0 160395 Renamed and brought up to new standard D.M. Goddard HINT_BL1.36 ! HINT_BL1.37 ! Code Description: HINT_BL1.38 ! Language: FORTRAN 77 + common extensions. HINT_BL1.39 ! This code is written to UMDP3 v6 programming standards. HINT_BL1.40 ! HINT_BL1.41 ! System component covered: S121 HINT_BL1.42 ! System Task: S1 HINT_BL1.43 ! HINT_BL1.44 ! Declarations: HINT_BL1.45 ! These are of the form:- HINT_BL1.46 ! INTEGER ExampleVariable !Description of variable HINT_BL1.47 ! HINT_BL1.48 ! Subroutine arguments HINT_BL1.49 ! Scalar arguments with intent(in): HINT_BL1.50 INTEGER ROWS_IN !No of P rows on source grid HINT_BL1.51 INTEGER ROW_LENGTH_IN !No of pts per row on source grid HINT_BL1.52 INTEGER LEN_FIELD_OUT !No of points on target grid HINT_BL1.53 HINT_BL1.54 ! Array arguments with intent(in): HINT_BL1.55 INTEGER INDEX_B_L(LEN_FIELD_OUT) HINT_BL1.56 !Index of bottom lefthand corner HINT_BL1.57 ! of source gridbox HINT_BL1.58 INTEGER INDEX_B_R(LEN_FIELD_OUT) HINT_BL1.59 !Index of bottom righthand corner HINT_BL1.60 ! of source gridbox HINT_BL1.61 REAL DATA_IN(ROWS_IN*ROW_LENGTH_IN) HINT_BL1.62 !Data before interpolation HINT_BL1.63 REAL WEIGHT_B_L(LEN_FIELD_OUT) HINT_BL1.64 !Weight applied to value at bottom HINT_BL1.65 !lefthand corner of source gridbox HINT_BL1.66 REAL WEIGHT_B_R(LEN_FIELD_OUT) HINT_BL1.67 !Weight applied to value at bottom HINT_BL1.68 !righthand corner of source gridbox HINT_BL1.69 REAL WEIGHT_T_L(LEN_FIELD_OUT) HINT_BL1.70 !Weight applied to value at top HINT_BL1.71 !lefthand corner of source gridbox HINT_BL1.72 REAL WEIGHT_T_R(LEN_FIELD_OUT) HINT_BL1.73 !Weight applied to value at top HINT_BL1.74 !righthand corner of source gridbox HINT_BL1.75 HINT_BL1.76 ! Array arguments with intent(out): HINT_BL1.77 REAL DATA_OUT(LEN_FIELD_OUT) !Data after interpolation HINT_BL1.78 HINT_BL1.79 ! Local scalars: HINT_BL1.80 INTEGER I HINT_BL1.81 HINT_BL1.82 ! Function & Subroutine calls: HINT_BL1.83 ! External None HINT_BL1.84 HINT_BL1.85 !- End of header HINT_BL1.86 HINT_BL1.87 ! 1. Carry out horizontal interpolation using equation (2.1) HINT_BL1.88 HINT_BL1.89 DO I=1,LEN_FIELD_OUT HINT_BL1.90 HINT_BL1.91 DATA_OUT(I)=WEIGHT_B_L(I)*DATA_IN(INDEX_B_L(I)) HINT_BL1.92 & +WEIGHT_B_R(I)*DATA_IN(INDEX_B_R(I)) HINT_BL1.93 & +WEIGHT_T_L(I)*DATA_IN(INDEX_B_L(I)-ROW_LENGTH_IN) HINT_BL1.94 & +WEIGHT_T_R(I)*DATA_IN(INDEX_B_R(I)-ROW_LENGTH_IN) HINT_BL1.95 HINT_BL1.96 END DO HINT_BL1.97 HINT_BL1.98 RETURN HINT_BL1.99 END HINT_BL1.100 HINT_BL1.101 *ENDIF HINT_BL1.102