本文整理汇总了C++中NodeSet::both_edge_nodes方法的典型用法代码示例。如果您正苦于以下问题:C++ NodeSet::both_edge_nodes方法的具体用法?C++ NodeSet::both_edge_nodes怎么用?C++ NodeSet::both_edge_nodes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NodeSet
的用法示例。
在下文中一共展示了NodeSet::both_edge_nodes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: derivatives_at_mid_elem
static void derivatives_at_mid_elem( NodeSet nodeset,
size_t* vertices,
MsqVector<2>* derivs,
size_t& num_vtx )
{
// fast linear case
// This is provided as an optimization for linear elements.
// If this block of code were removed, the general-case code
// below should produce the same result.
if (!nodeset.have_any_mid_node()) {
num_vtx = 4;
vertices[0] = 0; derivs[0][0] = -0.5; derivs[0][1] = -0.5;
vertices[1] = 1; derivs[1][0] = 0.5; derivs[1][1] = -0.5;
vertices[2] = 2; derivs[2][0] = 0.5; derivs[2][1] = 0.5;
vertices[3] = 3; derivs[3][0] = -0.5; derivs[3][1] = 0.5;
return;
}
num_vtx = 0;
// N_0
if (!nodeset.both_edge_nodes(0,3)) { // if eiter adjacent mid-edge node is missing
vertices[num_vtx] = 0;
derivs[num_vtx][0] = nodeset.mid_edge_node(3) ? 0.0 : -0.5;
derivs[num_vtx][1] = nodeset.mid_edge_node(0) ? 0.0 : -0.5;
++num_vtx;
}
// N_1
if (!nodeset.both_edge_nodes(0,1)) { // if eiter adjacent mid-edge node is missing
vertices[num_vtx] = 1;
derivs[num_vtx][0] = nodeset.mid_edge_node(1) ? 0.0 : 0.5;
derivs[num_vtx][1] = nodeset.mid_edge_node(0) ? 0.0 : -0.5;
++num_vtx;
}
// N_2
if (!nodeset.both_edge_nodes(1,2)) { // if eiter adjacent mid-edge node is missing
vertices[num_vtx] = 2;
derivs[num_vtx][0] = nodeset.mid_edge_node(1) ? 0.0 : 0.5;
derivs[num_vtx][1] = nodeset.mid_edge_node(2) ? 0.0 : 0.5;
++num_vtx;
}
// N_3
if (!nodeset.both_edge_nodes(2,3)) { // if eiter adjacent mid-edge node is missing
vertices[num_vtx] = 3;
derivs[num_vtx][0] = nodeset.mid_edge_node(3) ? 0.0 : -0.5;
derivs[num_vtx][1] = nodeset.mid_edge_node(2) ? 0.0 : 0.5;
++num_vtx;
}
// N_4
if (nodeset.mid_edge_node(0)) {
vertices[num_vtx] = 4;
derivs[num_vtx][0] = 0.0;
derivs[num_vtx][1] = -1.0;
++num_vtx;
}
// N_5
if (nodeset.mid_edge_node(1)) {
vertices[num_vtx] = 5;
derivs[num_vtx][0] = 1.0;
derivs[num_vtx][1] = 0.0;
++num_vtx;
}
// N_6
if (nodeset.mid_edge_node(2)) {
vertices[num_vtx] = 6;
derivs[num_vtx][0] = 0.0;
derivs[num_vtx][1] = 1.0;
++num_vtx;
}
// N_7
if (nodeset.mid_edge_node(3)) {
vertices[num_vtx] = 7;
derivs[num_vtx][0] = -1.0;
derivs[num_vtx][1] = 0.0;
++num_vtx;
}
// N_8 (mid-quad node) never contributes to Jacobian at element center!!!
}