Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
subroutine ABI_XY_2_lonlat(x,y,lambda0,lon,lat,mask)implicit nonereal(REAL64),intent(in)::x,yreal(REAL64),intent(in)::lambda0real(REAL64),intent(out)::lon,latinteger,optional,intent(out)::maskreal(REAL64)::a0,b0,c0,rs,Sx,Sy,Sz,treal(REAL64)::a,b,Hreal(REAL64)::deltaa=r_eq;b=r_pol;H=H_satif(present(mask))mask=0a0=sin(x)*sin(x)+cos(x)*cos(x)*(cos(y)*cos(y)+(a/b)*(a/b)*sin(y)*sin(y))b0=-2.d0*H*cos(x)*cos(y)c0=H*H-a*adelta=b0*b0-4.d0*a0*c0if(delta<0.d0)thenlon=MAPL_UNDEFlat=MAPL_UNDEFif(present(mask))mask=0return end ifrs=(-b0-sqrt(b0*b0-4.d0*a0*c0))/(2.d0*a0)Sx=rs*cos(x)*cos(y)Sy=-rs*sin(x)Sz=rs*cos(x)*sin(y)lon=lambda0-atan(Sy/(H-Sx))lat=atan((a/b)**2.d0*Sz/sqrt((H-Sx)**2.d0+Sy*Sy))t=H*(H-Sx)-(Sy*Sy+(a/b)**2.d0*Sz*Sz)if(t<0)thenlon=MAPL_UNDEFlat=MAPL_UNDEFif(present(mask))mask=0else if(present(mask))mask=1end if end subroutine ABI_XY_2_lonlat