*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013,2014,2015,2017,2018, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014,2015,2017,2018,2019, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/smalloc.h"
-typedef struct {
+typedef struct
+{
int atom, sid;
} t_sid;
-static bool sid_comp(const t_sid &sa, const t_sid &sb)
+static bool sid_comp(const t_sid& sa, const t_sid& sb)
{
if (sa.sid == sb.sid)
{
}
}
-static int mk_grey(egCol egc[], t_graph *g, int *AtomI,
- int maxsid, t_sid sid[])
+static int mk_grey(egCol egc[], t_graph* g, int* AtomI, int maxsid, t_sid sid[])
{
- int j, ng, ai, aj, g0;
+ int j, ng, ai, aj, g0;
ng = 0;
ai = *AtomI;
/* Loop over all the bonds */
for (j = 0; (j < g->nedge[ai]); j++)
{
- aj = g->edge[ai][j]-g0;
+ aj = g->edge[ai][j] - g0;
/* If there is a white one, make it gray and set pbc */
if (egc[aj] == egcolWhite)
{
egc[aj] = egcolGrey;
/* Check whether this one has been set before... */
- range_check(aj+g0, 0, maxsid);
- range_check(ai+g0, 0, maxsid);
- if (sid[aj+g0].sid != -1)
+ range_check(aj + g0, 0, maxsid);
+ range_check(ai + g0, 0, maxsid);
+ if (sid[aj + g0].sid != -1)
{
- gmx_fatal(FARGS, "sid[%d]=%d, sid[%d]=%d, file %s, line %d",
- ai, sid[ai+g0].sid, aj, sid[aj+g0].sid, __FILE__, __LINE__);
+ gmx_fatal(FARGS, "sid[%d]=%d, sid[%d]=%d, file %s, line %d", ai, sid[ai + g0].sid,
+ aj, sid[aj + g0].sid, __FILE__, __LINE__);
}
else
{
- sid[aj+g0].sid = sid[ai+g0].sid;
- sid[aj+g0].atom = aj+g0;
+ sid[aj + g0].sid = sid[ai + g0].sid;
+ sid[aj + g0].atom = aj + g0;
}
ng++;
}
return ng;
}
-static int first_colour(int fC, egCol Col, t_graph *g, const egCol egc[])
+static int first_colour(int fC, egCol Col, t_graph* g, const egCol egc[])
/* Return the first node with colour Col starting at fC.
* return -1 if none found.
*/
return -1;
}
-static int mk_sblocks(FILE *fp, t_graph *g, int maxsid, t_sid sid[])
+static int mk_sblocks(FILE* fp, t_graph* g, int maxsid, t_sid sid[])
{
- int ng, nnodes;
- int nW, nG, nB; /* Number of Grey, Black, White */
- int fW, fG; /* First of each category */
- egCol *egc = nullptr; /* The colour of each node */
- int g0, nblock;
+ int ng, nnodes;
+ int nW, nG, nB; /* Number of Grey, Black, White */
+ int fW, fG; /* First of each category */
+ egCol* egc = nullptr; /* The colour of each node */
+ int g0, nblock;
if (!g->nbound)
{
}
/* Make the first white node grey, and set the block number */
- egc[fW] = egcolGrey;
- range_check(fW+g0, 0, maxsid);
- sid[fW+g0].sid = nblock++;
+ egc[fW] = egcolGrey;
+ range_check(fW + g0, 0, maxsid);
+ sid[fW + g0].sid = nblock++;
nG++;
nW--;
if (debug)
{
- fprintf(debug, "Starting G loop (nW=%d, nG=%d, nB=%d, total %d)\n",
- nW, nG, nB, nW+nG+nB);
+ fprintf(debug, "Starting G loop (nW=%d, nG=%d, nB=%d, total %d)\n", nW, nG, nB, nW + nG + nB);
}
while (nG > 0)
}
-typedef struct {
+typedef struct
+{
int first, last, sid;
} t_merge_sid;
-static int ms_comp(const void *a, const void *b)
+static int ms_comp(const void* a, const void* b)
{
- const t_merge_sid *ma = reinterpret_cast<const t_merge_sid *>(a);
- const t_merge_sid *mb = reinterpret_cast<const t_merge_sid *>(b);
+ const t_merge_sid* ma = reinterpret_cast<const t_merge_sid*>(a);
+ const t_merge_sid* mb = reinterpret_cast<const t_merge_sid*>(b);
int d;
- d = ma->first-mb->first;
+ d = ma->first - mb->first;
if (d == 0)
{
- return ma->last-mb->last;
+ return ma->last - mb->last;
}
else
{
}
}
-static int merge_sid(int at_start, int at_end, int nsid, t_sid sid[],
- t_blocka *sblock)
+static int merge_sid(int at_start, int at_end, int nsid, t_sid sid[], t_blocka* sblock)
{
int i, j, k, n, isid, ndel;
- t_merge_sid *ms;
+ t_merge_sid* ms;
/* We try to remdy the following problem:
* Atom: 1 2 3 4 5 6 7 8 9 10
for (k = 0; (k < nsid); k++)
{
- ms[k].first = at_end+1;
+ ms[k].first = at_end + 1;
ms[k].last = -1;
ms[k].sid = k;
}
/* Now merge the overlapping ones */
ndel = 0;
- for (k = 0; (k < nsid); )
+ for (k = 0; (k < nsid);)
{
- for (j = k+1; (j < nsid); )
+ for (j = k + 1; (j < nsid);)
{
if (ms[j].first <= ms[k].last)
{
else
{
k = j;
- j = k+1;
+ j = k + 1;
}
}
if (j == nsid)
}
for (k = 0; (k < nsid); k++)
{
- while ((k < nsid-1) && (ms[k].sid == -1))
+ while ((k < nsid - 1) && (ms[k].sid == -1))
{
- for (j = k+1; (j < nsid); j++)
+ for (j = k + 1; (j < nsid); j++)
{
- std::memcpy(&(ms[j-1]), &(ms[j]), sizeof(ms[0]));
+ std::memcpy(&(ms[j - 1]), &(ms[j]), sizeof(ms[0]));
}
nsid--;
}
sid[k].sid = -1;
}
sblock->nr = nsid;
- sblock->nalloc_index = sblock->nr+1;
+ sblock->nalloc_index = sblock->nr + 1;
snew(sblock->index, sblock->nalloc_index);
sblock->nra = at_end - at_start;
sblock->nalloc_a = sblock->nra;
sblock->index[0] = 0;
for (k = n = 0; (k < nsid); k++)
{
- sblock->index[k+1] = sblock->index[k] + ms[k].last - ms[k].first+1;
+ sblock->index[k + 1] = sblock->index[k] + ms[k].last - ms[k].first + 1;
for (j = ms[k].first; (j <= ms[k].last); j++)
{
range_check(n, 0, sblock->nra);
return nsid;
}
-void gen_sblocks(FILE *fp, int at_start, int at_end,
- const t_idef *idef, t_blocka *sblock,
- gmx_bool bSettle)
+void gen_sblocks(FILE* fp, int at_start, int at_end, const t_idef* idef, t_blocka* sblock, gmx_bool bSettle)
{
- t_graph *g;
+ t_graph* g;
int i, i0;
- t_sid *sid;
+ t_sid* sid;
int nsid;
g = mk_graph(nullptr, idef, at_start, at_end, TRUE, bSettle);
snew(sid, at_end);
for (i = at_start; (i < at_end); i++)
{
- sid[i].atom = i;
+ sid[i].atom = i;
sid[i].sid = -1;
}
nsid = mk_sblocks(fp, g, at_end, sid);
}
/* Now sort the shake blocks... */
- std::sort(sid+at_start, sid+at_end, sid_comp);
+ std::sort(sid + at_start, sid + at_end, sid_comp);
if (debug)
{