anchor.diff:      if ( ierr /= 0) stop " Allocation error, hecMAT%itemL-hecMAT%itemU "
       hecMAT%itemL = 0 ; hecMAT%itemU = 0
   
  -    if(associated(fstrMAT%indexL_lagrange).and.associated(fstrMAT%indexU_lagrange)) &
  -      deallocate(fstrMAT%indexL_lagrange,fstrMAT%indexU_lagrange)
  -    if(associated(fstrMAT%itemL_lagrange).and.associated(fstrMAT%itemU_lagrange)) &
  -      deallocate(fstrMAT%itemL_lagrange,fstrMAT%itemU_lagrange)
  -    if( is_contact_active ) then
  -      allocate(fstrMAT%indexL_lagrange(0:fstrMAT%num_lagrange), fstrMAT%indexU_lagrange(0:hecMAT%NP), stat=ierr)
  -      if ( ierr /= 0) stop " Allocation error, fstrMAT%indexL_lagrange-fstrMAT%indexU_lagrange "
  -      fstrMAT%indexL_lagrange = 0 ; fstrMAT%indexU_lagrange = 0
  -      allocate(fstrMAT%itemL_lagrange(numNon0_lagrange), fstrMAT%itemU_lagrange(numNon0_lagrange), stat=ierr)
  -      if ( ierr /= 0) stop " Allocation error, fstrMAT%itemL_lagrange-fstrMAT%itemU_lagrange "
  -      fstrMAT%itemL_lagrange = 0 ; fstrMAT%itemU_lagrange = 0
  -    endif
  +    call construct_fstrMAT(hecMAT%NP,ndof,num_lagrange,numNon0_lagrange,is_contact_active,list_nodeRelated,fstrMAT)
   
       hecMAT%NPL = numNon0_node
       hecMAT%NPU = numNon0_node
   
  -    fstrMAT%numL_lagrange = numNon0_lagrange
  -    fstrMAT%numU_lagrange = numNon0_lagrange
   
       countNon0L_node = 0
       countNon0U_node = 0
  -    countNon0U_lagrange = 0
       do i = 1, hecMAT%NP
  -
         list_nodeRelated(i)%num_node = count(list_nodeRelated(i)%id_node /= 0)
         numI_node = list_nodeRelated(i)%num_node
  -      if( is_contact_active ) &
  -        numI_lagrange = list_nodeRelated(i)%num_lagrange
   
         do j = 1, numI_node
           if( list_nodeRelated(i)%id_node(j) < i ) then
  
positive.code:       enddo
        hecMAT%indexL(i) = countNon0L_node
        hecMAT%indexU(i) = countNon0U_node
  
      end do
  
      if( is_contact_active ) then
        do i = 1, hecMAT%NP
          do j = 1, numI_lagrange
            countNon0U_lagrange = countNon0U_lagrange + 1
            fstrMAT%itemU_lagrange(countNon0U_lagrange) = list_nodeRelated(i)%id_lagrange(j)
          enddo
          fstrMAT%indexU_lagrange(i) = countNon0U_lagrange
        end do
      endif
  
      !< finalize list_nodeRelated
      do i = 1, hecMAT%NP
        deallocate(list_nodeRelated(i)%id_node)
        if(associated(list_nodeRelated(i)%id_lagrange)) deallocate(list_nodeRelated(i)%id_lagrange)
  
negative.code:     allocate(hecMAT%AU(nn*hecMAT%NPU), stat=ierr)
      if ( ierr /= 0 ) stop " Allocation error, hecMAT%AU "
      hecMAT%AU = 0.0D0
  
      if(associated(hecMAT%B)) deallocate(hecMAT%B)
      allocate(hecMAT%B(hecMAT%NP*ndof+fstrMAT%num_lagrange))
  