You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -1054,11 +1055,11 @@ If both the <b>--keep</b> flag and the <b>--fraction</b> flag are set, the <b>--
1054
1055
In addition to executables, the reconstruction code can be interfaced into through the functionality implemented in <CODE>Reconstructors.h</CODE> and <CODE>Extrapolator.h</CODE>
1055
1056
Using the functionality requires requires choosing a finite element type and defining input oriented-point stream and output vertex and face streams. In the descriptions below, the template parameter <CODE>Real</CODE> is the floating point type used to represent data (typically <code>float</code>) and <CODE>Dim</CODE> is the integer dimension of the space (fixed at <CODE>Dim</CODE>=3).
1056
1057
<UL>
1057
-
<LI>The template parameter <CODE>FEMSig</CODE> describes the 1D finite element type, which is a composite of the degree of the finite element and the boundary conditions it satisfies. Given an integer valued <CODE>Degree</CODE> and boundary type <CODE>BType</CODE> (one of <CODE>BOUNDARY_FREE</CODE>, <CODE>BOUNDARY_DIRICHLET</CODE>, and <CODE>BOUNDARY_NEUMANN</CODE> defined in <CODE>BSplineData.h</CODE>), the signature is defined as (<CODE>Reconstruction.example.cppy</CODE> line 308):
1058
+
<LI>The template parameter <CODE>FEMSig</CODE> describes the 1D finite element type, which is a composite of the degree of the finite element and the boundary conditions it satisfies. Given an integer valued <CODE>Degree</CODE> and boundary type <CODE>BType</CODE> (one of <CODE>BOUNDARY_FREE</CODE>, <CODE>BOUNDARY_DIRICHLET</CODE>, and <CODE>BOUNDARY_NEUMANN</CODE> defined in <CODE>BSplineData.h</CODE>), the signature is defined as:
<LI>The template parameter <CODE>FEMSIgs</CODE> describes the tensor-product finite element type, typically defined as an "isotropic" element with the same 1D finite element type across all <CODE>Dim</CODE> dimensions. It is defined as (<CODE>Reconstruction.example.cppy</CODE> line 314):
1062
+
<LI>The template parameter <CODE>FEMSIgs</CODE> describes the tensor-product finite element type, typically defined as an "isotropic" element with the same 1D finite element type across all <CODE>Dim</CODE> dimensions. It is defined as:
1062
1063
<PRE>
1063
1064
<CODE>using FEMSigs = IsotropicUIntPack< Dim , FEMSig >;</CODE>
1064
1065
</PRE>
@@ -1117,22 +1118,22 @@ This method returns the extrapolated value at the prescribed position.
1117
1118
<UL>
1118
1119
These steps can be found in the <code>Reconstruction.example.cpp</code> code.
1119
1120
<UL>
1120
-
<LI>The finite-elements signature is created in line 308.
1121
-
<LI>An input sample stream generating a specified number of random points on the surface of the sphere is defined in lines 85-122 and constructed in line 374.
1122
-
<LI>An output polygon stream that pushes the polygon to an <code>std::vector</code> of <code>std::vector< int ></code>s is defined in lines 213-230 and constructed in line 384.
1123
-
<LI>An output vertex stream that pushes just the position information to an <code>std::vector</code> of <code>Real</code>s is desfined in lines 223-244 and constructed in line 385.
1124
-
<LI>The reconstructor is constructed in line 377.
1125
-
<LI>The level-set extraction is performed on line 388.
1126
-
<LI>The evaluator is created on line 334.
1127
-
<LI>The evaluator is used to query the values and gradients of the implicit function in line 327.
1128
-
<LI>The extrapolator is constructed on line 406.
1129
-
<LI>The extrapolator is evaluated at the vertex positions at line 416.
1121
+
<LI>The finite-elements signatures are created in lines 308 and 311.
1122
+
<LI>An input sample stream generating a specified number of random points on the surface of the sphere is defined in lines 85-122 and constructed in line 379.
1123
+
<LI>An output polygon stream that pushes the polygon to an <code>std::vector</code> of <code>std::vector< int ></code>s is defined in lines 213-230 and constructed in line 389.
1124
+
<LI>An output vertex stream that pushes just the position information to an <code>std::vector</code> of <code>Real</code>s is desfined in lines 223-244 and constructed in line 390.
1125
+
<LI>The implicit representation is computed in line 382.
1126
+
<LI>The level-set extraction is performed on line 393.
1127
+
<LI>The evaluator is created on line 340.
1128
+
<LI>The evaluator is used to query the values and gradients of the implicit function in line 333.
1129
+
<LI>The extrapolator is constructed on line 411.
1130
+
<LI>The extrapolator is evaluated at the vertex positions at line 421.
1130
1131
</UL>
1131
-
Note that a similar approach can be used to perform the <AHREF="http://mesh.brown.edu/ssd/">Smoothed Signed Distance</A> reconstruction (lines 452 and 453).<BR>
1132
+
Note that a similar approach can be used to perform the <AHREF="http://mesh.brown.edu/ssd/">Smoothed Signed Distance</A> reconstruction (lines 459 and 460).<BR>
1132
1133
The approach also supports reconstruction of meshes with auxiliary information like color, with the only constraint that the auxiliary data type supports the computation affine combinations (e.g. the <CODE>RGBColor</CODE> type defined in lines 67-82). The auxiliary inform is derived in one of two ways:
1133
1134
<OL>
1134
-
<LI> As part of the reconstruction process, so that the level-set extraction phase also sets the auxiliary information. (Lines 343-470)
1135
-
<LI> Independently by constructing the extrapolation field from the samples and then evaluating at the positions of the level-set vertices. (Lines 397-418)
1135
+
<LI> As part of the reconstruction process, so that the level-set extraction phase also sets the auxiliary information. (Lines 349-375)
1136
+
<LI> Independently by constructing the extrapolation field from the samples and then evaluating at the positions of the level-set vertices. (Lines 400-427)
1136
1137
</OL>
1137
1138
</UL>
1138
1139
</DL>
@@ -1712,6 +1713,11 @@ Similarly, to reduce compilation times, support for specific degrees can be remo
Copy file name to clipboardExpand all lines: Src/FEMTree.Evaluation.inl
+30-2Lines changed: 30 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -550,15 +550,43 @@ void FEMTree< Dim , Real >::MultiThreadedSparseEvaluator< UIntPack< FEMSigs ...
550
550
_tree->template_addEvaluation< T , SparseNodeData< T , FEMSignatures > , 0 >( _coefficients , p , _tree->_globalToLocal( node->depth() ) , *_pointEvaluator , nKey , t );
551
551
}
552
552
553
+
template< unsignedint Dim , classReal >
554
+
template< unsignedint ... FEMSigs , typename T >
555
+
template< typename AccumulationFunctor/*=std::function< void ( const T & , Real s ) > */ >
556
+
void FEMTree< Dim , Real >::MultiThreadedSparseEvaluator< UIntPack< FEMSigs ... > , T >::accumulate( Point< Real , Dim > p , AccumulationFunctor &Accumulate , int thread , const FEMTreeNode *node )
0 commit comments