*IF DEF,C80_1A,OR,DEF,UTILIO,OR,DEF,RECON,OR,DEF,FLDOP UIE3F404.47 C ******************************COPYRIGHT****************************** GTS2F400.7687 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.7688 C GTS2F400.7689 C Use, duplication or disclosure of this code is subject to the GTS2F400.7690 C restrictions as set forth in the contract. GTS2F400.7691 C GTS2F400.7692 C Meteorological Office GTS2F400.7693 C London Road GTS2F400.7694 C BRACKNELL GTS2F400.7695 C Berkshire UK GTS2F400.7696 C RG12 2SZ GTS2F400.7697 C GTS2F400.7698 C If no contract has been raised with this copy of the code, the use, GTS2F400.7699 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.7700 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.7701 C Modelling at the above address. GTS2F400.7702 C ******************************COPYRIGHT****************************** GTS2F400.7703 C GTS2F400.7704 CLL SUBROUTINE PR_RFLD---------------------------------------- PRRFLD1A.3 CLL PRRFLD1A.4 CLL Written by A. Dickinson PRRFLD1A.5 CLL PRRFLD1A.6 CLL Model Modification history from model version 3.0: PRRFLD1A.7 CLL version date PRRFLD1A.8 CLL 3.2 19/04/93 Code for new real missing data indicator. TJ050593.112 CLL Author: T.Johns Reviewer: A.Dickinson TJ050593.113 CLL 3.2 28/07/93 STOP WRITING OF FIELDS WHEN HEADERS ARE NOT SET. @DYALLOC.2959 CLL PRRFLD1A.9 CLL Programming standard: PRRFLD1A.10 CLL Unified Model Documentation Paper No 3 PRRFLD1A.11 CLL Version No 1 15/1/90 PRRFLD1A.12 CLL PRRFLD1A.13 CLL System component: R30/W30 PRRFLD1A.14 CLL PRRFLD1A.15 CLL System task: F3 PRRFLD1A.16 CLL PRRFLD1A.17 CLL Purpose: PRRFLD1A.18 CLL Prints out selected values from real data PRRFLD1A.19 CLL using information from associated PP header. PRRFLD1A.20 CLL PRRFLD1A.21 CLL Documentation: PRRFLD1A.22 CLL Unified Model Documentation Paper No F3 PRRFLD1A.23 CLL Version No 5 9/2/90 PRRFLD1A.24 CLL PRRFLD1A.25 CLL------------------------------------------------------------ PRRFLD1A.26 C*L Arguments:------------------------------------------------- PRRFLD1A.27SUBROUTINE PR_RFLD(LOOKUP,RLOOKUP,D1,K) 7PRRFLD1A.28 PRRFLD1A.29 IMPLICIT NONE PRRFLD1A.30 PRRFLD1A.31 INTEGER PRRFLD1A.32 * K !IN Field number ie position in 2nd dim PRRFLD1A.33 * ! of LOOKUP PRRFLD1A.34 *,LOOKUP(64,*) !IN Integer equivalence of PP LOOKUP PRRFLD1A.35 PRRFLD1A.36 REAL PRRFLD1A.37 * RLOOKUP(64,*) !IN Real equivalence of PP LOOKUP PRRFLD1A.38 *,D1(*) !IN Kth field in real equiv of data array PRRFLD1A.39 PRRFLD1A.40 C ------------------------------------------------------------- PRRFLD1A.41 C*L External subroutines called:------------------------------- PRRFLD1A.42 C None PRRFLD1A.43 C-------------------------------------------------------------- PRRFLD1A.44 C*L Local control constants:----------------------------------- PRRFLD1A.45 INTEGER PRRFLD1A.46 * NS_PTS !PARAM No of points down to print PRRFLD1A.47 *,EW_PTS !PARAM No of points across to print PRRFLD1A.48 PARAMETER(NS_PTS=6,EW_PTS=5) PRRFLD1A.49 C ------------------------------------------------------------- PRRFLD1A.50 C Workspace usage:--------------------------------------------- PRRFLD1A.51 REAL LON(EW_PTS) ! Longitudes printed out PRRFLD1A.52 INTEGER I(EW_PTS) ! Index of values printed out PRRFLD1A.53 CHARACTER*12 DASH(EW_PTS) !Stores dashed lines PRRFLD1A.54 C*------------------------------------------------------------- PRRFLD1A.55 C Local variables:--------------------------------------------- PRRFLD1A.56 INTEGER PRRFLD1A.57 * N_ROWS ! No of rows in field PRRFLD1A.58 *,N_COLS ! No of colums in field PRRFLD1A.59 *,ROW ! Row number PRRFLD1A.60 *,R_INC,F_INC ! No of rows/points between printed lines PRRFLD1A.61 *,J,L ! Loop counts PRRFLD1A.62 *,EW_PRINT ! No of E-W values printed out PRRFLD1A.63 *,POS_MIN ! Position of Minimum value of field PRRFLD1A.64 *,POS_MAX ! Position of Maximum value of field PRRFLD1A.65 PRRFLD1A.66 REAL PRRFLD1A.67 * LAT ! Latitude PRRFLD1A.68 *,F_MIN ! Minimum value of field PRRFLD1A.69 *,F_MAX ! Maximum value of field PRRFLD1A.70 C-------------------------------------------------------------- PRRFLD1A.71 PRRFLD1A.72 *CALL CLOOKADD
PRRFLD1A.73 *CALL C_MDI
@DYALLOC.2960 PRRFLD1A.74 CL Internal structure: None PRRFLD1A.75 PRRFLD1A.76 C Initialise string used to create table boundaries PRRFLD1A.77 DO 50 J=1,EW_PTS PRRFLD1A.78 50 DASH(J)='------------' PRRFLD1A.79 @DYALLOC.2961 IF(LOOKUP(LBCODE,K).EQ.IMDI) THEN @DYALLOC.2962 C IF LBCODE IS MISSING DATA, ASSUME THAT THE FIELD IN DUMP @DYALLOC.2963 C HAS NOT BEEN WRITTEN TO BY STASH. @DYALLOC.2964 C THIS SHOULD ONLY OCCUR TO DIAGNOSTIC PARTS OF THE DUMP BEFORE @DYALLOC.2965 C FIRST WRITE BY STASH TO THAT AREA/HEADER. @DYALLOC.2966 WRITE(6,*) 'MESSAGE FROM PR_IFLD' @DYALLOC.2967 WRITE(6,*) 'LBCODE NOT SET; ASSUME DATA NOT SET. NO PRINT' @DYALLOC.2968 RETURN @DYALLOC.2969 END IF @DYALLOC.2970 PRRFLD1A.80 C No of rows and columns in field PRRFLD1A.81 N_ROWS=LOOKUP(LBROW,K) PRRFLD1A.82 N_COLS=LOOKUP(LBNPT,K) PRRFLD1A.83 PRRFLD1A.84 IF(N_COLS.NE.0.AND.N_COLS.NE.IMDI)THEN TJ050593.114 C No of E-W values to be printed PRRFLD1A.86 EW_PRINT=MIN(N_COLS,EW_PTS) PRRFLD1A.87 PRRFLD1A.88 C Calculate longitudes and addresses of values to be printed from 1st ro PRRFLD1A.89 I(1)=1 PRRFLD1A.90 LON(1)=RLOOKUP(BZX,K)+RLOOKUP(BDX,K) PRRFLD1A.91 DO 100 J=1,EW_PTS-2 PRRFLD1A.92 I(J+1)=I(J)+N_COLS/(EW_PTS-1) PRRFLD1A.93 LON(J+1)=LON(J)+RLOOKUP(BDX,K)*(N_COLS/(EW_PTS-1)) PRRFLD1A.94 100 CONTINUE PRRFLD1A.95 I(EW_PTS)=N_COLS PRRFLD1A.96 LON(EW_PTS)=RLOOKUP(BZX,K)+RLOOKUP(BDX,K)*N_COLS PRRFLD1A.97 PRRFLD1A.98 C Initialise row and field pointers PRRFLD1A.99 ROW=1 PRRFLD1A.100 LAT=RLOOKUP(BZY,K)+RLOOKUP(BDY,K) PRRFLD1A.101 R_INC=N_ROWS/(NS_PTS-1) PRRFLD1A.102 F_INC=R_INC*N_COLS PRRFLD1A.103 PRRFLD1A.104 C Print 1st row PRRFLD1A.105 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.106 WRITE(6,'('' FIELD NO'',I4,'':''9(F10.3,2X))') PRRFLD1A.107 *K,(LON(J),J=1,EW_PRINT) PRRFLD1A.108 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.109 PRRFLD1A.110 C Print remaining rows except last PRRFLD1A.111 DO 200 L=1,NS_PTS-1 PRRFLD1A.112 WRITE(6,'(1X,I3,'':'',F8.3,'':'',3X,9G12.5)')ROW,LAT, PRRFLD1A.113 *(D1(I(J)),J=1,EW_PRINT) PRRFLD1A.114 DO 300 J=1,EW_PTS PRRFLD1A.115 I(J)=I(J)+F_INC PRRFLD1A.116 300 CONTINUE PRRFLD1A.117 ROW=ROW+R_INC PRRFLD1A.118 LAT=LAT+R_INC*RLOOKUP(BDY,K) PRRFLD1A.119 200 CONTINUE PRRFLD1A.120 PRRFLD1A.121 C Calculate addresses used to print values for last row PRRFLD1A.122 I(1)=1+(N_ROWS-1)*N_COLS PRRFLD1A.123 DO 400 J=1,EW_PTS-2 PRRFLD1A.124 I(J+1)=I(J)+N_COLS/(EW_PTS-1) PRRFLD1A.125 400 CONTINUE PRRFLD1A.126 I(EW_PTS)=N_ROWS*N_COLS PRRFLD1A.127 PRRFLD1A.128 C Set row pointers to last row PRRFLD1A.129 LAT=RLOOKUP(BZY,K)+RLOOKUP(BDY,K)*N_ROWS PRRFLD1A.130 ROW=N_ROWS PRRFLD1A.131 PRRFLD1A.132 C Print last row PRRFLD1A.133 WRITE(6,'(1X,I3,'':'',F8.3,'':'',3X,9G12.5)')ROW,LAT, PRRFLD1A.134 *(D1(I(J)),J=1,EW_PRINT) PRRFLD1A.135 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.136 PRRFLD1A.137 ELSE PRRFLD1A.138 PRRFLD1A.139 C Print out summary of non standard fields PRRFLD1A.140 PRRFLD1A.141 EW_PRINT=MIN(EW_PTS,LOOKUP(LBLREC,K)) PRRFLD1A.142 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.143 WRITE(6,'('' FIELD NO'',I4,'': DATA NOT ON MODEL GRID'' PRRFLD1A.144 *,'' SO FIRST FEW VALUES PRINTED'')')K PRRFLD1A.145 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.146 WRITE(6,'(1X,3X,'':'',8X,'':'',3X,9G12.5)') PRRFLD1A.147 *(D1(J),J=1,EW_PRINT) PRRFLD1A.148 WRITE(6,'(14X,9A12)')(DASH(J),J=1,EW_PRINT) PRRFLD1A.149 PRRFLD1A.150 ENDIF PRRFLD1A.151 PRRFLD1A.152 C Print out max and min values of field PRRFLD1A.153 F_MIN=D1(1) PRRFLD1A.154 F_MAX=D1(1) PRRFLD1A.155 POS_MAX=1 PRRFLD1A.156 POS_MIN=1 PRRFLD1A.157 DO 500 J=1,LOOKUP(LBLREC,K) PRRFLD1A.158 IF(D1(J).GT.F_MAX)THEN PRRFLD1A.159 F_MAX=D1(J) PRRFLD1A.160 POS_MAX=J PRRFLD1A.161 ENDIF PRRFLD1A.162 IF(D1(J).LT.F_MIN)THEN PRRFLD1A.163 F_MIN=D1(J) PRRFLD1A.164 POS_MIN=J PRRFLD1A.165 ENDIF PRRFLD1A.166 500 CONTINUE PRRFLD1A.167 PRRFLD1A.168 WRITE(6,'('' MINIMUM='',E12.5,'' POSITION='',I8, PRRFLD1A.169 *'' MAXIMUM='',E12.5,'' POSITION='',I8)') PRRFLD1A.170 *F_MIN,POS_MIN,F_MAX,POS_MAX PRRFLD1A.171 PRRFLD1A.172 WRITE(6,'('' '')') PRRFLD1A.173 PRRFLD1A.174 RETURN PRRFLD1A.175 END PRRFLD1A.176 *ENDIF PRRFLD1A.177