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.
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.
Source Code
SUBROUTINE GetTopSeg(r,t)! Get the Top segment info (index and range interval) for range, r! LP: t: range component of ray tangent. Endpoints of segments are handled! so that if the ray moves slightly along its current direction, it will! remain in the same segment.INTEGER,PARAMETER::PRTFile=6INTEGER::IsegTopT(1)REAL(KIND=8),INTENT(IN)::r,tIF(t>0.0)THENIsegTopT=MAXLOC(Top(:)%x(1),Top(:)%x(1)<=r)ELSEIsegTopT=MAXLOC(Top(:)%x(1),Top(:)%x(1)<r)ENDIF IF(IsegTopT(1)>0.AND.IsegTopT(1)<NatiPts)THEN! IsegTop MUST LIE IN [ 1, NatiPts-1 ]IsegTop=IsegTopT(1)rTopSeg=[Top(IsegTop)%x(1),Top(IsegTop+1)%x(1)]! segment limits in rangeELSE WRITE(PRTFile,*)'r = ',rWRITE(PRTFile,*)'rLeft = ',Top(1)%x(1)WRITE(PRTFile,*)'rRight = ',Top(NatiPts)%x(1)CALL ERROUT('GetTopSeg','Top altimetry undefined above the ray')ENDIF END SUBROUTINE GetTopSeg