C SccsID = "@(#)akspec.f 1.1 07/23/03" SUBROUTINE AKSPEC (ICODE,NZN,FLAT,FLON,X,Y,CC,S) IMPLICIT REAL*8 (A-H,O-Z) CHARACTER*4 IGP,IPC,ICODE DIMENSION C29(9),CM(9) DATA C29/6*5.0D5,7.0D5,5.0D5,6.0D5/,CM/2*5.112D5,5.256D5,5.4D5, * 5.544D5,5.688D5,5.832D5,5.976D5,6.12D5/ DATA B/1.00029977273D0/,C/4.47599131D-3/,D/6.38635267013D6/, * F/0.327015517176D0/,G/0.945018968871D0/,H/0.3460412203D0/, * T/6.8147849D-3/,E/8.2271854223003D-2/,EE/2.718281828459045D0/, * PI/3.14159265358979D0/,RHOSEC/2.06264806247D5/ DATA IPC/'PCGP'/ IF (ICODE.EQ.IPC) GO TO 20 COSP=DCOS(FLAT) SINP=DSIN(FLAT) IF (NZN.GT.1) GO TO 10 C ALASKA, ZONE 1 C2=DSQRT(1.D0-E*E*SINP*SINP) BDL=B*(FLON-1.7717540856301D0) SNBDL=DSIN(BDL) CSBDL=DCOS(BDL) BUC=B*(DLOG(DTAN(PI/4.D0+FLAT/2.D0)) * -E/2.D0*DLOG((1.D0+E*SINP)/(1.D0-E*SINP)))+ C EP=EE**BUC EN=EE**(-BUC) P=0.5D0*(EP-EN) Q=0.5D0*(EP+EN) U=D*DATAN((G*P+F*SNBDL)/CSBDL) V=D/2.D0*DLOG((Q+F*P-G*SNBDL)/(Q-F*P+G*SNBDL)) X=3.28083333333D0*(5.D6-0.6D0*U+0.8D0*V) Y=3.28083333333D0*(0.6D0*V+0.8D0*U-5.D6) CC=DATAN((3.D0*Q*CSBDL-4.D0*P*SNBDL-4.D0*H)/ * (4.D0*Q*CSBDL+3.D0*P*SNBDL+3.D0*H)) S=1.0015773595D0*C2*DCOS(U/D)/COSP/CSBDL RETURN C ALASKA, ZONE 2-9 10 CONTINUE DLON=(CM(NZN)-FLON*RHOSEC)/1.D4 DLON2=DLON*DLON DLON4=DLON2*DLON2 COSP2=COSP*COSP COSP4=COSP2*COSP2 COSP6=COSP4*COSP2 S2=DSQRT(1.D0+T*COSP2) S3=DSQRT(1.D0-COSP2)*COSP X=C29(NZN)+1.01786215D6*COSP/S2*DLON*(1.D0-3.91740509D-4*DLON2* * (1.D0-2.D0*COSP2-T*COSP4)+4.60382D-8*DLON4*(1.D0-20.D0*COSP2+ * 23.6047D0*COSP4+0.4907D0*COSP6)) Y=101.269278503D0*(FLAT*RHOSEC-1.9390005442D5-(1.052893943D3- * 4.483386D0*COSP2+2.3599D-2*COSP4)*S3)+2.46736748D4*S3/S2*DLON2 * *(1.D0+1.958703D-4*DLON2*(-1.D0+6.D0*COSP2+6.133306D-2*COSP4+ * 1.8577D-4*COSP6)+1.5346D-8*DLON4*(1.D0-60.D0*COSP2+ * 117.75D0*COSP4+4.089D0*COSP6)) CC=S3/COSP*DLON*(1.D4+7.83481D0*DLON2*(COSP2+2.044D-2*COSP4 * +0.9D-4*COSP6)+0.3683D-2*DLON4*(3.D0*COSP4-COSP2))/RHOSEC S=0.9999D0*(1.D0+S2**4/8.81572821D2*((X-C29(NZN))/1.D6)**2) RETURN 20 CONTINUE IF (NZN.GT.1) GO TO 30 C ALASKA, ZONE 1 U=-0.182880365761D00*X+0.243840487681D00*Y +7.D06 V=0.243840487681D00*X +0.182880365761D0*Y -1.D06 FAR=V/D EP=EE**FAR EM=EE**(-FAR) R=(EP-EM)/2.D0 S=(EP+EM)/2.D0 SINUD=DSIN(U/D) COSUD=DCOS(U/D) GSUD=G*SINUD EM=EE**(DLOG((S+F*R+GSUD)/(S-F*R-GSUD))/(2.D0*B)-C/B) XR=2.D0*DATAN(EM)-PI/2.D0 SINXR=DSIN(XR) COSXR=DCOS(XR) COSXR2=COSXR*COSXR FLAT=XR+SINXR*COSXR*(6.761032571D-3 +COSXR2*(5.3172205D-5 + 1 COSXR2*(5.73027D-7 +COSXR2*7.128D-9))) FLON=1.7717540856301D0+DATAN((F*SINUD-G*R)/COSUD)/B RETURN C ALASKA, ZONE 2-9 30 CONTINUE O1SEC=1.93900054420D05 +9.87466302498D-3*Y COSO1=DCOS(O1SEC/RHOSEC) COSO12=COSO1*COSO1 SINO1=DSIN(O1SEC/RHOSEC) P1SEC=O1SEC+SINO1*COSO1*(1.047546691D3+COSO12*(6.193011D0 + * 5.0699D-2*COSO12)) COSP1=DCOS(P1SEC/RHOSEC) COSP12=COSP1*COSP1 COSP14=COSP12*COSP12 TANP1=DTAN(P1SEC/RHOSEC) TANP12=TANP1*TANP1 W=1.D0+T*COSP12 W2=W*W FAR=(X-C29(NZN))*1.D-6 FAR2=FAR*FAR FAR4=FAR2*FAR2 PSEC=P1SEC-2.33973645D2*FAR2*W2*TANP1*(1.D0-1.8905604D-4*FAR2* * (1.9591113D0+3.D0/COSP12+8.1359D-2*COSP12+2.79D-4*COSP14)+ * 1.42969D-8*FAR4*W*(15.5D0+45.D0/COSP14-0.307D0/COSP12+ * 1.53D0*COSP12)) ESEC=CM(NZN)-9.824513072D3*DSQRT(W)/COSP1*FAR*(1.D0-3.7811208D-4*W * *FAR2*(2.D0*TANP12+W)+4.2890624D-8*W2*FAR4*(1.054D0+24.D0/COSP14 * -20.D0/COSP12-1.36D-2*COSP12)) FLAT=PSEC/RHOSEC FLON=ESEC/RHOSEC RETURN END