Beispiel #1
0
void cells_on_max_cut_change(int shrink)
{
  double old_max_range = max_range;

  calc_maximal_cutoff();

  if (max_cut > 0.0) {
    if (skin >= 0.0)
      max_range = max_cut + skin;
    else
      /* if the skin is not yet set, assume zero. */
      max_range = max_cut;
  }
  else
    /* if no interactions yet, we also don't need a skin */
    max_range = 0.0;

  /* no need to do something if
     1. the range didn't change numerically (<= necessary for the start case,
     when max_range and old_max_range == 0.0)
     2. it shrank, and we shouldn't shrink (NpT) */
  if ((fabs(max_range - old_max_range) <= ROUND_ERROR_PREC * max_range) ||
      (!shrink && (max_range < old_max_range)))
    return;
  
  cells_re_init(CELL_STRUCTURE_CURRENT);

  for (int i = 0; i < 3; i++)
    if (local_box_l[i] < max_range) {
      char *errtext = runtime_error(128 + TCL_INTEGER_SPACE);
      ERROR_SPRINTF(errtext,"{013 box_l in direction %d is still too small} ", i);
    }
}
Beispiel #2
0
void integrate_vv_recalc_maxrange()
{
  INTEG_TRACE(fprintf(stderr,"%d: integrate_vv_recalc_maxrange:\n",this_node));

  /* maximal interaction cutoff */
  calc_maximal_cutoff();
  if (max_cut <= 0.0) {
    max_range  = -1.0;
    max_range2 = -1.0;
    return;
  }
  max_range            = max_cut;
  max_range_non_bonded = max_cut_non_bonded;
  /* at beginning be nice */
  if (skin > 0.0) {
    max_range            += skin;
    max_range_non_bonded += skin;
  }
  max_range2            = SQR(max_range);
  max_range_non_bonded2 = SQR(max_range_non_bonded);
}