anchor.diff:    T = PTread_d(config, 'T', loc=params_group)
     link_d = PTread_dvec(config, 'link_d', 2, loc=params_group)
     link_angles = PTread_dvec(config, 'link_angles', 2, loc=params_group)
  -  link_angle = link_angles(1)
     elastic_k = PTread_d(config, 'elastic_k', loc=params_group)
     angle_k = PTread_d(config, 'angle_k', loc=params_group)
   
  
positive.code:     integer :: list_s(list_size), list_p(list_size)
      logical :: reaction_happens
  
      ! Do nothing if enzyme is already bound
      if (enzyme_bound) return
  
      n_s = 0
      n_p = 0
  
      x_enzyme = modulo(colloids%pos(:,2), solvent_cells%edges)
  
      !$omp parallel private(thread_id)
      thread_id = omp_get_thread_num() + 1
      !$omp do private(i, m, s_sp, dist)
      do i = 1, solvent_cells%N
         select_loop: do m = solvent_cells%cell_start(i), solvent_cells%cell_start(i) + solvent_cells%cell_count(i) - 1
            s_sp = solvent%species(m)
            if (s_sp == 3) cycle select_loop
            dist = norm2(rel_pos(x_enzyme, solvent%pos(:,m), solvent_cells%edges))
            if (.not. btest(solvent%flags(m), ENZYME_REGION_BIT)) then
               if ( (dist <= enzyme_capture_radius) .and. (dist > solvent_colloid_lj%cut(s_sp, colloids%species(2)) ) ) then
                  ! select for current round
                  solvent%flags(m) = ibset(solvent%flags(m), ENZYME_REGION_BIT)
                  if (s_sp==1) then
  
negative.code:         call varia%tic()
          do k=1, colloids% Nmax
             colloids% vel(:,k) = colloids% vel(:,k) + &
               dt * ( colloids% force(:,k) + colloids% force_old(:,k) ) / (2 * colloids%mass(k))
          end do
          call varia%tac()
  
  