You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.4 KiB
38 lines
1.4 KiB
2 years ago
|
/*
|
||
|
* Copyright(C) 1999-2020, 2023 National Technology & Engineering Solutions
|
||
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
* NTESS, the U.S. Government retains certain rights in this software.
|
||
|
*
|
||
|
* See packages/seacas/LICENSE for details
|
||
|
*/
|
||
|
|
||
|
#include "refine_map.h" // for refine_vdata, refine_edata
|
||
|
#include "structs.h"
|
||
|
|
||
|
double compute_cube_edata(struct refine_edata *edata, /* desire data for current edge */
|
||
|
struct refine_vdata *vdata, /* data for all vertices */
|
||
|
int nsets_tot, /* total number of processors */
|
||
|
struct vtx_data **comm_graph, /* communication graph */
|
||
|
int *node2vtx /* maps mesh nodes to graph vertices */
|
||
|
)
|
||
|
{
|
||
|
double desire; /* edge's interest in flipping */
|
||
|
float ewgt; /* edge weight */
|
||
|
int offset; /* offset into vdata array */
|
||
|
int vtx1, vtx2; /* vertices on either side of wire */
|
||
|
|
||
|
vtx1 = node2vtx[edata->node1];
|
||
|
vtx2 = node2vtx[edata->node2];
|
||
|
offset = nsets_tot * edata->dim;
|
||
|
|
||
|
desire = (vdata[offset + vtx1].above - vdata[offset + vtx1].same) +
|
||
|
(vdata[offset + vtx2].above - vdata[offset + vtx2].same);
|
||
|
|
||
|
/* Subtract off potential doubly counted edge. */
|
||
|
if (is_an_edge(comm_graph[vtx1], vtx2, &ewgt)) {
|
||
|
desire -= 2 * ewgt;
|
||
|
}
|
||
|
|
||
|
return (desire);
|
||
|
}
|