10 real(sp),
dimension(3,3):: rotm
20 real(dp),
dimension(3,3):: rotm
28 use pkind, only: spi,sp,dp
63 subroutine sininmap(alon0,alat0,rot3)! [ininmap]
66 real(sp),
intent(IN ):: alon0,alat0
67 real(sp),
dimension(3,3),
intent(OUT):: rot3
68 real(sp) :: blon0,blat0,clon0,clat0,slon0,slat0
69 blon0=dtor*alon0; clon0=cos(blon0); slon0=sin(blon0)
70 blat0=dtor*alat0; clat0=cos(blat0); slat0=sin(blat0)
71 rot3(1,1)=slat0*clon0; rot3(1,2)=slat0*slon0; rot3(1,3)=-clat0
72 rot3(2,1)=-slon0; rot3(2,2)=clon0; rot3(2,3)=u0
73 rot3(3,1)=clat0*clon0; rot3(3,2)=clat0*slon0; rot3(3,3)=slat0
85 subroutine dininmap(alon0,alat0,rot3)! [ininmap]
86 use pietc, only: u0,dtor
88 real(dp),
intent(IN ):: alon0,alat0
89 real(dp),
dimension(3,3),
intent(OUT):: rot3
90 real(dp) :: blon0,blat0,clon0,clat0,slon0,slat0
91 blon0=dtor*alon0; clon0=cos(blon0); slon0=sin(blon0)
92 blat0=dtor*alat0; clat0=cos(blat0); slat0=sin(blat0)
93 rot3(1,1)=slat0*clon0; rot3(1,2)=slat0*slon0; rot3(1,3)=-clat0
94 rot3(2,1)=-slon0; rot3(2,2)=clon0; rot3(2,3)=u0
95 rot3(3,1)=clat0*clon0; rot3(3,2)=clat0*slon0; rot3(3,3)=slat0
110 real(sp),
intent(IN ):: alon0,alat0
111 real(sp),
dimension(3,3),
intent(OUT):: rot3
112 real(sp) :: blon0,blat0,clon0,clat0,slon0,slat0
122 rot3(2,1)=-slat0*clon0
123 rot3(2,2)=-slat0*slon0
125 rot3(3,1)=clat0*clon0
126 rot3(3,2)=clat0*slon0
140 use pietc, only: u0,dtor
142 real(dp),
intent(IN ):: alon0,alat0
143 real(dp),
dimension(3,3),
intent(OUT):: rot3
144 real(dp) :: blon0,blat0,clon0,clat0,slon0,slat0
154 rot3(2,1)=-slat0*clon0
155 rot3(2,2)=-slat0*slon0
157 rot3(3,1)=clat0*clon0
158 rot3(3,2)=clat0*slon0
175 real(sp),
dimension(3),
intent(IN ):: xe
176 real(sp),
intent(OUT):: rlat,rlon
178 r=sqrt(xe(1)**2+xe(2)**2)
183 rlon=atan2(xe(2),xe(1))
200 real(dp),
dimension(3),
intent(IN ):: xe
201 real(dp),
intent(OUT):: rlat,rlon
203 r=sqrt(xe(1)**2+xe(2)**2)
208 rlon=atan2(xe(2),xe(1))
221 real(sp),
intent(IN ):: rlat,rlon
222 real(sp),
dimension(3),
intent(OUT):: xe
223 real(sp) :: sla,cla,slo,clo
224 sla=sin(rlat); cla=cos(rlat)
225 slo=sin(rlon); clo=cos(rlon)
226 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
238 real(dp),
intent(IN ):: rlat,rlon
239 real(dp),
dimension(3),
intent(OUT):: xe
240 real(dp) :: sla,cla,slo,clo
241 sla=sin(rlat); cla=cos(rlat)
242 slo=sin(rlon); clo=cos(rlon)
243 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
256 subroutine sgrtocd(rlat,rlon,xe,dxedlat,dxedlon)! [grtoc]
258 real(sp),
intent(IN ):: rlat,rlon
259 real(sp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon
260 real(dp) :: rlat_d,rlon_d
261 real(dp),
dimension(3):: xe_d,dxedlat_d,dxedlon_d
262 rlat_d=rlat; rlon_d=rlon
263 call
dgrtocd(rlat_d,rlon_d,xe_d,dxedlat_d,dxedlon_d)
279 subroutine dgrtocd(rlat,rlon,xe,dxedlat,dxedlon)! [grtoc]
282 real(dp),
intent(IN ):: rlat,rlon
283 real(dp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon
284 real(dp) :: sla,cla,slo,clo
285 sla=sin(rlat); cla=cos(rlat)
286 slo=sin(rlon); clo=cos(rlon)
287 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
288 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla
289 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0
305 subroutine sgrtocdd(rlat,rlon,xe,dxedlat,dxedlon, &! [grtoc]
306 ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
308 real(sp),
intent(IN ):: rlat,rlon
309 real(sp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon, &
310 ddxedlatdlat,ddxedlatdlon,ddxedlondlon
311 real(dp) :: rlat_d,rlon_d
312 real(dp),
dimension(3):: xe_d,dxedlat_d,dxedlon_d, &
313 ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d
314 rlat_d=rlat; rlon_d=rlon
315 call
dgtocdd(rlat_d,rlon_d,xe_d,dxedlat_d,dxedlon_d, &
316 ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d)
320 ddxedlatdlat=ddxedlatdlat_d
321 ddxedlatdlon=ddxedlatdlon_d
322 ddxedlondlon=ddxedlondlon_d
338 subroutine dgrtocdd(rlat,rlon,xe,dxedlat,dxedlon, &! [grtoc]
339 ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
342 real(dp),
intent(IN ):: rlat,rlon
343 real(dp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon, &
344 ddxedlatdlat,ddxedlatdlon,ddxedlondlon
345 real(dp) :: sla,cla,slo,clo
346 sla=sin(rlat); cla=cos(rlat)
347 slo=sin(rlon); clo=cos(rlon)
348 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
349 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla
350 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0
351 ddxedlatdlat(1)=-cla*clo
352 ddxedlatdlat(2)=-cla*slo
354 ddxedlatdlon(1)= sla*slo
355 ddxedlatdlon(2)=-sla*clo
357 ddxedlondlon(1)=-cla*clo
358 ddxedlondlon(2)=-cla*slo
372 subroutine sctog(xe,dlat,dlon)! [ctog]
375 real(sp),
dimension(3),
intent(IN ):: xe
376 real(sp),
intent(OUT):: dlat,dlon
378 r=sqrt(xe(1)**2+xe(2)**2)
379 dlat=atan2(xe(3),r)*rtod
383 dlon=atan2(xe(2),xe(1))*rtod
397 subroutine dctog(xe,dlat,dlon)! [ctog]
398 use pietc, only: u0,rtod
400 real(dp),
dimension(3),
intent(IN ):: xe
401 real(dp),
intent(OUT):: dlat,dlon
403 r=sqrt(xe(1)**2+xe(2)**2)
404 dlat=atan2(xe(3),r)*rtod
408 dlon=atan2(xe(2),xe(1))*rtod
422 subroutine sgtoc(dlat,dlon,xe)! [gtoc]
425 real(sp),
intent(IN ):: dlat,dlon
426 real(sp),
dimension(3),
intent(OUT):: xe
427 real(sp) :: rlat,rlon,sla,cla,slo,clo
428 rlat=dtor*dlat; rlon=dtor*dlon
429 sla=sin(rlat); cla=cos(rlat)
430 slo=sin(rlon); clo=cos(rlon)
431 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
444 subroutine dgtoc(dlat,dlon,xe)! [gtoc]
445 use pietc, only: dtor
447 real(dp),
intent(IN ):: dlat,dlon
448 real(dp),
dimension(3),
intent(OUT):: xe
449 real(dp) :: rlat,rlon,sla,cla,slo,clo
450 rlat=dtor*dlat; rlon=dtor*dlon
451 sla=sin(rlat); cla=cos(rlat)
452 slo=sin(rlon); clo=cos(rlon)
453 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
469 subroutine sgtocd(dlat,dlon,xe,dxedlat,dxedlon)! [gtoc]
471 real(sp),
intent(IN ):: dlat,dlon
472 real(sp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon
473 real(dp) :: dlat_d,dlon_d
474 real(dp),
dimension(3):: xe_d,dxedlat_d,dxedlon_d
475 dlat_d=dlat; dlon_d=dlon
476 call
dgtocd(dlat_d,dlon_d,xe_d,dxedlat_d,dxedlon_d)
495 subroutine dgtocd(dlat,dlon,xe,dxedlat,dxedlon)! [gtoc]
496 use pietc, only: u0,dtor
498 real(dp),
intent(IN ):: dlat,dlon
499 real(dp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon
500 real(dp) :: rlat,rlon,sla,cla,slo,clo
501 rlat=dtor*dlat; rlon=dtor*dlon
502 sla=sin(rlat); cla=cos(rlat)
503 slo=sin(rlon); clo=cos(rlon)
504 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
505 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla; dxedlat=dxedlat*dtor
506 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0 ; dxedlon=dxedlon*dtor
526 subroutine sgtocdd(dlat,dlon,xe,dxedlat,dxedlon, &
527 ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
529 real(sp),
intent(IN ):: dlat,dlon
530 real(sp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon, &
531 ddxedlatdlat,ddxedlatdlon,ddxedlondlon
532 real(dp) :: dlat_d,dlon_d
533 real(dp),
dimension(3):: xe_d,dxedlat_d,dxedlon_d, &
534 ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d
535 dlat_d=dlat; dlon_d=dlon
536 call
dgtocdd(dlat_d,dlon_d,xe_d,dxedlat_d,dxedlon_d, &
537 ddxedlatdlat_d,ddxedlatdlon_d,ddxedlondlon_d)
541 ddxedlatdlat=ddxedlatdlat_d
542 ddxedlatdlon=ddxedlatdlon_d
543 ddxedlondlon=ddxedlondlon_d
563 subroutine dgtocdd(dlat,dlon,xe,dxedlat,dxedlon, &
564 ddxedlatdlat,ddxedlatdlon,ddxedlondlon)
565 use pietc, only: u0,dtor
567 real(dp),
intent(IN ):: dlat,dlon
568 real(dp),
dimension(3),
intent(OUT):: xe,dxedlat,dxedlon, &
569 ddxedlatdlat,ddxedlatdlon,ddxedlondlon
570 real(dp) :: rlat,rlon,sla,cla,slo,clo
571 rlat=dtor*dlat; rlon=dtor*dlon
572 sla=sin(rlat); cla=cos(rlat)
573 slo=sin(rlon); clo=cos(rlon)
574 xe(1)=cla*clo; xe(2)=cla*slo; xe(3)=sla
575 dxedlat(1)=-sla*clo; dxedlat(2)=-sla*slo; dxedlat(3)=cla; dxedlat=dxedlat*dtor
576 dxedlon(1)=-cla*slo; dxedlon(2)= cla*clo; dxedlon(3)=u0 ; dxedlon=dxedlon*dtor
577 ddxedlatdlat(1)=-cla*clo
578 ddxedlatdlat(2)=-cla*slo
580 ddxedlatdlon(1)= sla*slo
581 ddxedlatdlon(2)=-sla*clo
583 ddxedlondlon(1)=-cla*clo
584 ddxedlondlon(2)=-cla*slo
586 ddxedlatdlat=ddxedlatdlat*dtor**2
587 ddxedlatdlon=ddxedlatdlon*dtor**2
588 ddxedlondlon=ddxedlondlon*dtor**2
601 real(sp),
intent(in ):: splat,splon
602 real(sp),
dimension(3,3),
intent(out):: sorth
604 real(dp),
dimension(3,3):: orth
605 plat=splat; plon=splon; call
gtoframem(plat,plon,orth); sorth=orth
618 real(dp),
intent(in ):: plat,plon
619 real(dp),
dimension(3,3),
intent(out):: orth
620 real(dp),
dimension(3):: xp,yp,zp
622 orth(:,1)=xp; orth(:,2)=yp; orth(:,3)=zp
639 real(sp),
intent(in ):: splat,splon
640 real(sp),
dimension(3),
intent(out):: sxp,syp,szp
642 real(dp) :: plat,plon
643 real(dp),
dimension(3):: xp,yp,zp
645 plat=splat; plon=splon
647 sxp=xp; syp=yp; szp=zp
662 use pietc, only: u0,u1
664 real(dp),
intent(in ):: plat,plon
665 real(dp),
dimension(3),
intent(out):: xp,yp,zp
666 real(dp),
dimension(3):: dzpdlat,dzpdlon
671 elseif(plat==-90)
then
676 call
gtoc(plat,plon,zp,dzpdlat,dzpdlon)
677 xp=dzpdlon/sqrt(dot_product(dzpdlon,dzpdlon))
678 yp=dzpdlat/sqrt(dot_product(dzpdlat,dzpdlat))
697 real(sp),
dimension(3),
intent(in ):: sxp,syp,szp, szv
698 real(sp),
dimension(3),
intent(out):: sxv,syv
699 real(dp),
dimension(3):: xp,yp,zp, xv,yv,zv
700 xp=sxp; yp=syp; zp=szp
721 real(dp),
dimension(3),
intent(in ):: xp,yp,zp, zv
722 real(dp),
dimension(3),
intent(out):: xv,yv
723 real(dp) :: xpofv,ypofv,theta,ctheta,stheta
724 real(dp),
dimension(3):: xq,yq
725 xpofv=dot_product(xp,zv)
726 ypofv=dot_product(yp,zv)
727 theta=atan2(ypofv,xpofv); ctheta=cos(theta); stheta=sin(theta)
728 xq=zv-zp; xq=xq-zv*dot_product(xq,zv); xq=
normalized(xq)
730 xv=xq*ctheta-yq*stheta
731 yv=xq*stheta+yq*ctheta
750 subroutine sframetwist(sxp,syp,szp, sxv,syv,szv, stwist)! [frametwist]
752 real(sp),
dimension(3),
intent(in ):: sxp,syp,szp, sxv,syv,szv
753 real(sp),
intent(out):: stwist
754 real(dp),
dimension(3):: xp,yp,zp, xv,yv,zv
756 xp=sxp;yp=syp; zp=szp; xv=sxv; yv=syv; zv=szv
777 subroutine frametwist(xp,yp,zp, xv,yv,zv, twist)! [frametwist]
779 real(dp),
dimension(3),
intent(in ):: xp,yp,zp, xv,yv,zv
780 real(dp),
intent(out):: twist
781 real(dp),
dimension(3):: xxv,yyv
784 c=dot_product(xv,xxv); s=dot_product(xv,yyv)
794 subroutine sctoc(s,xc1,xc2)! [ctoc_schm]
797 real(sp),
intent(IN ):: s
798 real(sp),
dimension(3),
intent(INOUT):: xc1,xc2
799 real(sp) :: x,y,z,a,b,d,e,ab2,aa,bb,di,aapbb,aambb
800 x=xc1(1); y=xc1(2); z=xc1(3)
824 subroutine sctocd(s,xc1,xc2,dxc2)! [ctoc_schm]
827 real(sp),
intent(IN) :: s
828 real(sp),
dimension(3),
intent(INOUT):: xc1,xc2
829 real(sp),
dimension(3,3),
intent( OUT):: dxc2
830 real(sp) :: x,y,z,a,b,d,e, &
831 ab2,aa,bb,di,ddi,aapbb,aambb
832 x=xc1(1); y=xc1(2); z=xc1(3)
850 dxc2(1,3)=ab2*aambb*x*ddi
852 dxc2(2,3)=ab2*aambb*y*ddi
853 dxc2(3,3)=aapbb*di +ab2*e*ddi
865 subroutine sctocdd(s,xc1,xc2,dxc2,ddxc2)! [ctoc_schm]
868 real(sp),
intent(IN ):: s
869 real(sp),
dimension(3),
intent(INOUT):: xc1,xc2
870 real(sp),
dimension(3,3),
intent( OUT):: dxc2
871 real(sp),
dimension(3,3,3),
intent( OUT):: ddxc2
872 real(sp) :: x,y,z,a,b,d,e, &
873 ab2,aa,bb,di,ddi,dddi, &
875 x=xc1(1); y=xc1(2); z=xc1(3)
894 dxc2(1,3)=ab2*aambb*x*ddi
896 dxc2(2,3)=ab2*aambb*y*ddi
897 dxc2(3,3)=aapbb*di +ab2*e*ddi
900 ddxc2(1,1,3)=ab2*aambb*ddi
901 ddxc2(1,3,1)=ddxc2(1,1,3)
902 ddxc2(1,3,3)=u2*ab2**2*aambb*x*dddi
903 ddxc2(2,2,3)=ab2*aambb*ddi
904 ddxc2(2,3,2)=ddxc2(2,2,3)
905 ddxc2(2,3,3)=u2*ab2**2*aambb*y*dddi
906 ddxc2(3,3,3)=u2*ab2*(aapbb*ddi+ab2*e*dddi)
915 subroutine dctoc(s,xc1,xc2)! [ctoc_schm]
916 use pietc, only: u1,u2
918 real(dp),
intent(IN ):: s
919 real(dp),
dimension(3),
intent(INOUT):: xc1,xc2
920 real(dp) :: x,y,z,a,b,d,e, &
921 ab2,aa,bb,di,aapbb,aambb
922 x=xc1(1); y=xc1(2); z=xc1(3)
946 subroutine dctocd(s,xc1,xc2,dxc2)! [ctoc_schm]
947 use pietc, only: u0,u1,u2
949 real(dp),
intent(IN ):: s
950 real(dp),
dimension(3),
intent(INOUT):: xc1,xc2
951 real(dp),
dimension(3,3),
intent( OUT):: dxc2
952 real(dp) :: x,y,z,a,b,d,e, &
953 ab2,aa,bb,di,ddi,aapbb,aambb
954 x=xc1(1); y=xc1(2); z=xc1(3)
972 dxc2(1,3)=ab2*aambb*x*ddi
974 dxc2(2,3)=ab2*aambb*y*ddi
975 dxc2(3,3)=aapbb*di +ab2*e*ddi
987 subroutine dctocdd(s,xc1,xc2,dxc2,ddxc2)! [ctoc_schm]
988 use pietc, only: u0,u1,u2
990 real(dp),
intent(IN) :: s
991 real(dp),
dimension(3),
intent(INOUT):: xc1,xc2
992 real(dp),
dimension(3,3),
intent(OUT ):: dxc2
993 real(dp),
dimension(3,3,3),
intent(OUT ):: ddxc2
994 real(dp) :: x,y,z,a,b,d,e, &
995 ab2,aa,bb,di,ddi,dddi, &
997 x=xc1(1); y=xc1(2); z=xc1(3)
1016 dxc2(1,3)=ab2*aambb*x*ddi
1018 dxc2(2,3)=ab2*aambb*y*ddi
1019 dxc2(3,3)=aapbb*di +ab2*e*ddi
1022 ddxc2(1,1,3)=ab2*aambb*ddi
1023 ddxc2(1,3,1)=ddxc2(1,1,3)
1024 ddxc2(1,3,3)=u2*ab2**2*aambb*x*dddi
1025 ddxc2(2,2,3)=ab2*aambb*ddi
1026 ddxc2(2,3,2)=ddxc2(2,2,3)
1027 ddxc2(2,3,3)=u2*ab2**2*aambb*y*dddi
1028 ddxc2(3,3,3)=u2*ab2*(aapbb*ddi+ab2*e*dddi)
1041 integer,
intent(IN ):: n
1042 real(sp),
dimension(3,3),
intent(IN ):: rot3
1043 real(sp),
dimension(n),
intent(INOUT):: x,y,z
1044 real(sp),
dimension(3) :: t
1047 t(1)=x(k); t(2)=y(k); t(3)=z(k)
1049 x(k)=t(1); y(k)=t(2); z(k)=t(3)
1051 end subroutine plrot
1063 integer,
intent(IN ):: n
1064 real(sp),
dimension(3,3),
intent(IN ):: rot3
1065 real(sp),
dimension(n),
intent(INOUT):: x,y,z
1066 real(sp),
dimension(3) :: t
1069 t(1)=x(k); t(2)=y(k); t(3)=z(k)
1071 x(k)=t(1); y(k)=t(2); z(k)=t(3)
1085 integer,
intent(IN ):: n
1086 real(dP),
dimension(3,3),
intent(IN ):: rot3
1087 real(dP),
dimension(n),
intent(INOUT):: x,y,z
1088 real(dP),
dimension(3) :: t
1091 t(1)=x(k); t(2)=y(k); t(3)=z(k)
1093 x(k)=t(1); y(k)=t(2); z(k)=t(3)
1107 integer,
intent(IN ):: n
1108 real(dP),
dimension(3,3),
intent(IN ):: rot3
1109 real(dP),
dimension(n),
intent(INOUT):: x,y,z
1110 real(dP),
dimension(3) :: t
1113 t(1)=x(k); t(2)=y(k); t(3)=z(k)
1115 x(k)=t(1); y(k)=t(2); z(k)=t(3)
1130 integer,
intent(IN ):: n
1131 real(sp),
intent(IN ):: s
1132 real(sp),
dimension(n),
intent(INOUT):: x,y,z
1133 real(sp) :: a,b,d,e,ab2,aa,bb,di,aapbb,aambb
1146 x(i)=(aambb*x(i))*di
1147 y(i)=(aambb*y(i))*di
subroutine sgtocdd(dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
Constants for orientation and stretching of map.
subroutine dgtoc(dlat, dlon, xe)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
subroutine sctocd(s, xc1, xc2, dxc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
subroutine sctocdd(s, xc1, xc2, dxc2, ddxc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
subroutine gtoframev(plat, plon, xp, yp, zp)
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal ...
subroutine sgrtoc(rlat, rlon, xe)
Transform "Geographical" to "Cartesian" coordinates.
Utility routines for orienting the globe and basic geographical mappings.
subroutine dinivmap(alon0, alat0, rot3)
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
subroutine dininmap(alon0, alat0, rot3)
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
subroutine dgrtocdd(rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivative...
subroutine gtoframem(plat, plon, orth)
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location ...
subroutine sgrtocdd(rlat, rlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
Transform "Geographical" to "Cartesian" coordinates, together with the 1st and 2nd partial derivative...
subroutine sinivmap(alon0, alat0, rot3)
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
subroutine sctog(xe, dlat, dlon)
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
subroutine dplroti(rot3, n, x, y, z)
Invert the rotation of a three-dimensional polyline.
subroutine dgrtocd(rlat, rlon, xe, dxedlat, dxedlon)
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesi...
subroutine sctogr(xe, rlat, rlon)
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
subroutine dctocdd(s, xc1, xc2, dxc2, ddxc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, its jacobian, dxc2, and its 2nd derivative, ddxc2.
subroutine dctogr(xe, rlat, rlon)
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
Module for handy vector and matrix operations in Euclidean geometry.
subroutine dgtocd(dlat, dlon, xe, dxedlat, dxedlon)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
subroutine dplrot(rot3, n, x, y, z)
Apply a constant rotation to a three dimensional polyline.
subroutine dgrtoc(rlat, rlon, xe)
Transform "Geographical" to "Cartesian" coordinates.
subroutine dctocd(s, xc1, xc2, dxc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s, and its jacobian, dxc2.
Standard integer, real, and complex single and double precision kinds.
subroutine sgtoframev(splat, splon, sxp, syp, szp)
Given a geographical point by its degrees lat and lon, plat and plon, return its standard orthogonal ...
Constants for orientation and stretching of map.
subroutine dctog(xe, dlat, dlon)
Transform "Cartesian" to "Geographical" coordinates, where the geographical coordinates refer to lati...
Some of the commonly used constants (pi etc) mainly for double-precision subroutines.
subroutine sctoc(s, xc1, xc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.
subroutine sgtoc(dlat, dlon, xe)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
subroutine sframetwist(sxp, syp, szp, sxv, syv, szv, stwist)
Given a principal cartesian orthonormal frame, {xp,yp,zp} (i.e., at P with Earth-centered cartesians...
subroutine sininmap(alon0, alat0, rot3)
Initialize the rotation matrix ROT3 needed to transform standard earth-centered cartesian components ...
subroutine sparaframe(sxp, syp, szp, sxv, syv, szv)
Take a principal reference orthonormal frame, {xp,yp,zp} and a dependent point defined by unit vector...
subroutine sgrtocd(rlat, rlon, xe, dxedlat, dxedlon)
Transform "Geographical" to "Cartesian" coordinates, together with the partial derivatives of cartesi...
subroutine sgtoframem(splat, splon, sorth)
From the degree lat and lon (plat and plon) return the standard orthogonal 3D frame at this location ...
subroutine sgtocd(dlat, dlon, xe, dxedlat, dxedlon)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
subroutine dgtocdd(dlat, dlon, xe, dxedlat, dxedlon, ddxedlatdlat, ddxedlatdlon, ddxedlondlon)
Transform "Geographical" to "Cartesian" coordinates, where the geographical coordinates refer to lati...
subroutine dctoc(s, xc1, xc2)
Evaluate Schmidt transformation, xc1 –> xc2, with scaling parameter s.