*IF DEF,C92_1A,OR,DEF,RECON,OR,DEF,CAMDUMP,OR,DEF,MAKEBC,OR,DEF,FLDOP GAV0F405.92 C ******************************COPYRIGHT****************************** GTS2F400.5293 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.5294 C GTS2F400.5295 C Use, duplication or disclosure of this code is subject to the GTS2F400.5296 C restrictions as set forth in the contract. GTS2F400.5297 C GTS2F400.5298 C Meteorological Office GTS2F400.5299 C London Road GTS2F400.5300 C BRACKNELL GTS2F400.5301 C Berkshire UK GTS2F400.5302 C RG12 2SZ GTS2F400.5303 C GTS2F400.5304 C If no contract has been raised with this copy of the code, the use, GTS2F400.5305 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.5306 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.5307 C Modelling at the above address. GTS2F400.5308 C ******************************COPYRIGHT****************************** GTS2F400.5309 C GTS2F400.5310 CLL Subroutine LLTOEQ------------------------------------------------- LLTOEQ1A.3 CLL LLTOEQ1A.4 CLL Purpose: Calculates latitude and longitude on equatorial LLTOEQ1A.5 CLL latitude-longitude (eq) grid used in regional LLTOEQ1A.6 CLL models from input arrays of latitude and LLTOEQ1A.7 CLL longitude on standard grid. Both input and output LLTOEQ1A.8 CLL latitudes and longitudes are in degrees. LLTOEQ1A.9 CLL LLTOEQ1A.10 CLL Written by A. Dickinson LLTOEQ1A.11 CLL LLTOEQ1A.12 CLL Model Modification history from model version 3.0: LLTOEQ1A.13 CLL version date LLTOEQ1A.14 CLL 4.5 18/08/98 Added DEF,FLDOP (A Van der Wal) GAV0F405.93 CLL LLTOEQ1A.15 CLL Programming standard : LLTOEQ1A.16 CLL LLTOEQ1A.17 CLL Logical components covered : S132 LLTOEQ1A.18 CLL LLTOEQ1A.19 CLL Project task : LLTOEQ1A.20 CLL LLTOEQ1A.21 CLL Documentation: The transformation formulae are described in LLTOEQ1A.22 CLL unified model on-line documentation paper S1. LLTOEQ1A.23 CLLEND ----------------------------------------------------------------- LLTOEQ1A.24 C LLTOEQ1A.25 C*L Arguments:-------------------------------------------------------- LLTOEQ1A.26SUBROUTINE LLTOEQ 13LLTOEQ1A.27 *(PHI,LAMBDA,PHI_EQ,LAMBDA_EQ,PHI_POLE,LAMBDA_POLE,POINTS) LLTOEQ1A.28 LLTOEQ1A.29 IMPLICIT NONE LLTOEQ1A.30 LLTOEQ1A.31 INTEGER LLTOEQ1A.32 * POINTS !IN Number of points to be processed LLTOEQ1A.33 LLTOEQ1A.34 REAL LLTOEQ1A.35 * PHI(POINTS) !IN Latitude LLTOEQ1A.36 *,LAMBDA(POINTS) !IN Longitude LLTOEQ1A.37 *,LAMBDA_EQ(POINTS) !OUT Longitude in equatorial lat-lon coords LLTOEQ1A.38 *,PHI_EQ(POINTS) !OUT Latitude in equatorial lat-lon coords LLTOEQ1A.39 *,PHI_POLE !IN Latitude of equatorial lat-lon pole LLTOEQ1A.40 *,LAMBDA_POLE !IN Longitude of equatorial lat-lon pole LLTOEQ1A.41 C Workspace usage:----------------------------------------------------- LLTOEQ1A.42 C None LLTOEQ1A.43 C --------------------------------------------------------------------- LLTOEQ1A.44 C External subroutines called:----------------------------------------- LLTOEQ1A.45 C None LLTOEQ1A.46 C*--------------------------------------------------------------------- LLTOEQ1A.47 C Define local varables:----------------------------------------------- LLTOEQ1A.48 REAL A_LAMBDA,A_PHI,E_LAMBDA,ARG,E_PHI,SIN_PHI_POLE,COS_PHI_POLE LLTOEQ1A.49 REAL TERM1,TERM2,SMALL,LAMBDA_ZERO LLTOEQ1A.50 INTEGER I LLTOEQ1A.51 PARAMETER(SMALL=1.0E-6) LLTOEQ1A.52 C --------------------------------------------------------------------- LLTOEQ1A.53 C Constants from comdecks:--------------------------------------------- LLTOEQ1A.54 *CALL C_PI
LLTOEQ1A.55 C --------------------------------------------------------------------- LLTOEQ1A.56 LLTOEQ1A.57 CL 1. Initialise local constants LLTOEQ1A.58 C LLTOEQ1A.59 C Latitude of zeroth meridian LLTOEQ1A.60 LAMBDA_ZERO=LAMBDA_POLE+180. LLTOEQ1A.61 C Sine and cosine of latitude of eq pole LLTOEQ1A.62 SIN_PHI_POLE=SIN(PI_OVER_180*PHI_POLE) LLTOEQ1A.63 COS_PHI_POLE=COS(PI_OVER_180*PHI_POLE) LLTOEQ1A.64 LLTOEQ1A.65 CL 2. Transform from standard to equatorial latitude-longitude LLTOEQ1A.66 LLTOEQ1A.67 DO 200 I= 1,POINTS LLTOEQ1A.68 LLTOEQ1A.69 C Scale longitude to range -180 to +180 degs LLTOEQ1A.70 LLTOEQ1A.71 A_LAMBDA=LAMBDA(I)-LAMBDA_ZERO LLTOEQ1A.72 IF(A_LAMBDA.GT. 180.0)A_LAMBDA=A_LAMBDA-360. LLTOEQ1A.73 IF(A_LAMBDA.LE.-180.0)A_LAMBDA=A_LAMBDA+360. LLTOEQ1A.74 LLTOEQ1A.75 C Convert latitude & longitude to radians LLTOEQ1A.76 LLTOEQ1A.77 A_LAMBDA=PI_OVER_180*A_LAMBDA LLTOEQ1A.78 A_PHI=PI_OVER_180*PHI(I) LLTOEQ1A.79 LLTOEQ1A.80 C Compute eq latitude using equation (4.4) LLTOEQ1A.81 LLTOEQ1A.82 ARG=-COS_PHI_POLE*COS(A_LAMBDA)*COS(A_PHI) LLTOEQ1A.83 * +SIN(A_PHI)*SIN_PHI_POLE LLTOEQ1A.84 ARG=MIN(ARG, 1.0) LLTOEQ1A.85 ARG=MAX(ARG,-1.0) LLTOEQ1A.86 E_PHI=ASIN(ARG) LLTOEQ1A.87 PHI_EQ(I)=RECIP_PI_OVER_180*E_PHI LLTOEQ1A.88 LLTOEQ1A.89 C Compute eq longitude using equation (4.6) LLTOEQ1A.90 LLTOEQ1A.91 TERM1 =(COS(A_PHI)*COS(A_LAMBDA)*SIN_PHI_POLE LLTOEQ1A.92 * +SIN(A_PHI)*COS_PHI_POLE) LLTOEQ1A.93 TERM2=COS(E_PHI) LLTOEQ1A.94 IF(TERM2.LT.SMALL) THEN LLTOEQ1A.95 E_LAMBDA=0.0 LLTOEQ1A.96 ELSE LLTOEQ1A.97 ARG=TERM1/TERM2 LLTOEQ1A.98 ARG=MIN(ARG, 1.0) LLTOEQ1A.99 ARG=MAX(ARG,-1.0) LLTOEQ1A.100 E_LAMBDA=RECIP_PI_OVER_180*ACOS(ARG) LLTOEQ1A.101 E_LAMBDA=SIGN(E_LAMBDA,A_LAMBDA) LLTOEQ1A.102 ENDIF LLTOEQ1A.103 LLTOEQ1A.104 C Scale longitude to range 0 to 360 degs LLTOEQ1A.105 LLTOEQ1A.106 IF(E_LAMBDA.GE.360.0) E_LAMBDA=E_LAMBDA-360.0 LLTOEQ1A.107 IF(E_LAMBDA.LT.0.0) E_LAMBDA=E_LAMBDA+360.0 LLTOEQ1A.108 LAMBDA_EQ(I)=E_LAMBDA LLTOEQ1A.109 LLTOEQ1A.110 200 CONTINUE LLTOEQ1A.111 LLTOEQ1A.112 RETURN LLTOEQ1A.113 END LLTOEQ1A.114 *ENDIF LLTOEQ1A.115