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 GetBotSeg(r,t)! Get the Bottom 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::IsegBotT(1)REAL(KIND=8),INTENT(IN)::r,tIF(t>0.0)THENIsegBotT=MAXLOC(Bot(:)%x(1),Bot(:)%x(1)<=r)ELSEIsegBotT=MAXLOC(Bot(:)%x(1),Bot(:)%x(1)<r)ENDIF IF(IsegBotT(1)>0.AND.IsegBotT(1)<NbtyPts)THEN! IsegBot MUST LIE IN [ 1, NbtyPts-1 ]IsegBot=IsegBotT(1)rBotSeg=[Bot(IsegBot)%x(1),Bot(IsegBot+1)%x(1)]! segment limits in rangeELSE WRITE(PRTFile,*)'r = ',rWRITE(PRTFile,*)'rLeft = ',Bot(1)%x(1)WRITE(PRTFile,*)'rRight = ',Bot(NbtyPts)%x(1)CALL ERROUT('GetBotSeg','Bottom bathymetry undefined below the source')ENDIF END SUBROUTINE GetBotSeg