The slab buffer size is difference in slabs between the reference and
the current positions of the rotation group. This was originally
calculated once in the init_rot_group() routine. However, it needs
to be calculated at every step since it changes when the rotation group
expands or contracts along the rotation vector.
Change-Id: I3b1fac41f88744e14e712454ae546c94f9b26750
erg->slab_first = get_first_slab(rotg, erg->max_beta, firstatom);
erg->slab_last = get_last_slab(rotg, erg->max_beta, lastatom);
erg->slab_first = get_first_slab(rotg, erg->max_beta, firstatom);
erg->slab_last = get_last_slab(rotg, erg->max_beta, lastatom);
+ /* Calculate the slab buffer size, which changes when slab_first changes */
+ erg->slab_buffer = erg->slab_first - erg->slab_first_ref;
+
/* Check whether we have reference data to compare against */
if (erg->slab_first < erg->slab_first_ref)
{
/* Check whether we have reference data to compare against */
if (erg->slab_first < erg->slab_first_ref)
{
static void get_firstlast_slab_ref(t_rotgrp *rotg, real mc[], int ref_firstindex, int ref_lastindex)
{
gmx_enfrotgrp_t erg; /* Pointer to enforced rotation group data */
static void get_firstlast_slab_ref(t_rotgrp *rotg, real mc[], int ref_firstindex, int ref_lastindex)
{
gmx_enfrotgrp_t erg; /* Pointer to enforced rotation group data */
- int first, last, firststart;
rvec dummy;
erg = rotg->enfrotgrp;
first = get_first_slab(rotg, erg->max_beta, rotg->x_ref[ref_firstindex]);
last = get_last_slab( rotg, erg->max_beta, rotg->x_ref[ref_lastindex ]);
rvec dummy;
erg = rotg->enfrotgrp;
first = get_first_slab(rotg, erg->max_beta, rotg->x_ref[ref_firstindex]);
last = get_last_slab( rotg, erg->max_beta, rotg->x_ref[ref_lastindex ]);
while (get_slab_weight(first, rotg, rotg->x_ref, mc, &dummy) > WEIGHT_MIN)
{
while (get_slab_weight(first, rotg, rotg->x_ref, mc, &dummy) > WEIGHT_MIN)
{
last++;
}
erg->slab_last_ref = last-1;
last++;
}
erg->slab_last_ref = last-1;
-
- erg->slab_buffer = firststart - erg->slab_first_ref;