anchor.diff:              if(j.ne.nsidl) sidelt => sidelt%next
            enddo
         else
  -	allocate( sidmapl(1)) ! some compilers/MPI don't like to send unallocated arrays
  +         allocate( sidmapl(1)) ! some compilers/MPI don't like to send unallocated arrays
         endif
  +!     Deallocate the link list 
  +!     http://stackoverflow.com/questions/9184675/how-does-fortran-deallocate-linked-lists
  +      sidelt => sidlist
  +      nextelt => sidelt % next
  +      do 
  +        deallocate(sidelt)
  +        if( .not. associated(nextelt) ) exit
  +        sidelt => nextelt
  +        nextelt => sidelt % next
  +      enddo
  +
   c Gather the number of surface ID's on each processor
         if (numpe.gt.1) then      ! multiple processors
   c write the number of surfID's on the jth processor to slot j of nsid
  
positive.code:                          ! linked list and point sidlist to it
        nsidl=0            ! initialize # of sids on this processor
        nsidg=0
        do iblk=1, nelblb  ! loop over boundary element blocks
           npro = lcblkb(1,iblk+1)-lcblkb(1,iblk)
           do i = 1, npro         ! loop over boundary elements (belts)
  
negative.code:       end type llnod
        type (llnod), pointer :: sidlist ! points to first elt of linked list
        type (llnod), pointer :: sidelt  ! points to generic elt of linked list
        type (llnod), pointer :: nextelt ! points to generic elt of linked list
        integer, allocatable :: sidmapl(:) ! list of surfID's on-proc
        integer, allocatable :: temp(:)    ! temp space
  c      integer iBCB(numelb,ndiBCB) ! column 1: naturalBC switches
  