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