Skip to content
Snippets Groups Projects
rivers.f90 638 B
Newer Older
  • Learn to ignore specific revisions
  • subroutine rivers (icon,nelem,x,y,z,nnode,node,links)
    
    integer icon(3,nelem),node(nnode),links(nnode)
    double precision x(nnode),y(nnode),z(nnode)
    
    double precision,dimension(:),pointer::slopemax
    
    allocate (slopemax(nnode))
    
    slopemax=0.d0
    node=0
    
    do ie=1,nelem
      do k=1,3
      kp=mod(k,3)+1
      ic=icon(k,ie)
      icp=icon(kp,ie)
      slope=(z(ic)-z(icp))/sqrt((x(ic)-x(icp))**2+(y(ic)-y(icp))**2)
        if (slope.gt.slopemax(ic)) then
        slopemax(ic)=slope
        node(ic)=icp
        endif
      enddo
    enddo
    
    links=0
    
    do i=1,nnode
    n=i
    l=O
    1 n=node(n)
    if (n.eq.0) goto 2
    l=l+1
    links(n)=max(links(n),l)
    goto 1
    2 continue
    enddo
    
    deallocate (slopemax)
    
    return
    end