32 template<
short_t d,
class T>
37 typedef typename std::vector<std::tuple<index_t,index_t,T>> sparseEntry_t;
45 typedef memory::shared_ptr< gsAlmostC1 >
Ptr;
48 typedef memory::unique_ptr< gsAlmostC1 >
uPtr;
73 using Base::exportToPatches;
152 gsMatrix<T> _getNormals(
const std::vector<patchCorner> & corners)
const;
167 using Base::_getInterfaceIndices;
168 using Base::_getAllInterfaceIndices;
204 void _refBoxes(std::vector<std::vector<index_t>> & patchBoxes);
222 std::vector<std::vector<patchCorner> > _getSpecialCornerLists(
const gsMultiPatch<T> & patches);
225 using Base::_pushAndCheck;
230 using Base::_computeInterfaceMapper;
233 using Base::_computeBoundaryMapper;
243 using Base::_computeMapperRegularCorner_v1;
249 using Base::_computeMapperRegularBoundaryVertexSmooth_v2;
254 void _computeMapperRegularBoundaryVertexNonSmooth_v2(
patchCorner pcorner,
index_t valence);
259 void _computeMapperIrregularBoundaryVertexSmooth_v(
patchCorner pcorner,
index_t valence);
265 using Base::_computeMapperIrregularBoundaryVertexNonSmooth_v;
373 using Base::m_patches;
376 using Base::m_topology;
378 using Base::m_Bbases;
379 using Base::m_tMatrix;
380 using Base::m_sideCheck;
381 using Base::m_vertCheck;
382 using Base::m_basisCheck;
385 using Base::m_mapModified;
386 using Base::m_mapOriginal;
388 using Base::m_matrix;
390 using Base::m_options;
396 using Base::m_nSides;
397 using Base::m_nVerts;
404 #ifndef GISMO_BUILD_LIB
405 #include GISMO_HPP_HEADER(gsAlmostC1.hpp)
Constructs the D-Patch, from which the transformation matrix can be called.
Definition: gsAlmostC1.h:33
Creates the D-Patch smoothing matrix.
virtual void _computeMapper()
Calculates the mapper.
Definition: gsDPatchBase.hpp:1209
virtual gsGeometry< T > * exportPatch(index_t patch, bool computeCoefs=true)
Exports a single modified patch with index patch.
Definition: gsDPatchBase.hpp:186
Provides declaration of the BoxTopology class.
void _countDoFs()
Initializes the matrix, the basis and the mappers.
Definition: gsAlmostC1.hpp:685
virtual std::vector< bool > getSharpCorners(T tol=1e-2) const
Checks if corners are sharp or not.
Definition: gsDPatchBase.hpp:47
memory::unique_ptr< gsAlmostC1 > uPtr
Unique pointer for gsAlmostC1.
Definition: gsAlmostC1.h:48
#define index_t
Definition: gsConfig.h:32
virtual void _computeSmoothMatrix()
Calculates the smooth matrix.
Definition: gsDPatchBase.hpp:1177
Struct which represents a certain corner of a patch.
Definition: gsBoundary.h:392
virtual const index_t _sideIndex(index_t patch, boxSide bside) const
Computes global index of the side.
Definition: gsDPatchBase.h:557
memory::shared_ptr< gsAlmostC1 > Ptr
Shared pointer for gsAlmostC1.
Definition: gsAlmostC1.h:45
void _handleInteriorVertex(patchCorner pcorner, index_t valence)
Handles a vertex in the global matrix.
Definition: gsAlmostC1.hpp:1031
Provides a list of labeled parameters/options that can be set and accessed easily.
virtual void _removeLowestCorners(std::vector< patchCorner > &pcorners, index_t n=3) const
From a list of patchCorners pcorners, remove all but the lowest n corners.
Definition: gsDPatchBase.hpp:448
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition: gsVector.h:35
virtual void _whichHandled()
Prints which DoFs have been handled and which have been eliminated.
Definition: gsDPatchBase.hpp:857
Provides declaration of the MultiPatch class.
void setCoefficients(const gsMatrix< T > &coefs, gsMultiPatch< T > &mp) const
Set the coefficients of mp to coefs.
Definition: gsAlmostC1.hpp:374
void _initTHB()
Initializes the matrix, the basis and the mappers.
Definition: gsAlmostC1.hpp:406
gsMatrix< T > _preCoefficients(const gsMultiPatch< T > &patches)
Computes the C1 coefficients for pre-multiplication to make the multipatch.
Definition: gsAlmostC1.h:83
gsMatrix< T > freeCoefficients()
Computes the C1 coefficients for pre-multiplication to make the multipatch.
Definition: gsAlmostC1.hpp:261
Constructs the D-Patch, from which the transformation matrix can be called.
Definition: gsDPatchBase.h:36
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition: gsMultiPatch.h:33
virtual void _getLowestCorners(std::vector< patchCorner > &pcorners, index_t n=3) const
From a list of patchCorners pcorners, get the lowest n corners.
Definition: gsDPatchBase.hpp:435
virtual const index_t _vertIndex(index_t patch, boxCorner corner) const
Computes global index of the corner.
Definition: gsDPatchBase.h:577
gsAlmostC1()
Empty constructor.
Definition: gsAlmostC1.h:51
void _computeEVs()
Computes D-Patch smoothing.
Definition: gsAlmostC1.hpp:592
virtual void _getLowestIndices(std::vector< std::pair< index_t, index_t >> &indices, index_t n=3) const
From a list of tuples (patch,index), get the lowest n tuples.
Definition: gsDPatchBase.hpp:463
#define GISMO_UNUSED(x)
Definition: gsDebug.h:112
virtual const index_t _indexFromSides(index_t index1, const patchSide side1, index_t index2, const patchSide side2)
Computes the index of a basis function using sides as reference.
Definition: gsDPatchBase.hpp:227
gsMatrix< T > _preCoefficients()
Computes the C1 coefficients for pre-multiplication to make the multipatch.
Definition: gsAlmostC1.hpp:282
virtual void defaultOptions()
Sets the default options.
Definition: gsDPatchBase.hpp:39
virtual void _removeLowestIndices(std::vector< std::pair< index_t, index_t >> &indices, index_t n=3) const
From a list of tuples (patch,index), remove all but the lowest n tuples.
Definition: gsDPatchBase.hpp:484
void _initBasis()
Initializes the basis.
Definition: gsAlmostC1.hpp:400
virtual const std::pair< index_t, bool > _vertexData(const patchCorner corner) const
Returns the valence and whether a corner is interior or boundary.
Definition: gsDPatchBase.hpp:425
void _makeTHB()
Prepares the THB basis if needed.
Definition: gsAlmostC1.hpp:504
virtual const index_t _indexFromVert(const index_t index, const patchCorner corner, const patchSide side, const index_t offsets=0) const
Computes the index of a basis function taking one corner and one side as reference.
Definition: gsDPatchBase.hpp:269
void _handleRegularBoundaryVertexNonSmooth(patchCorner pcorner, index_t valence)
Handles an interface in the global matrix.
Definition: gsAlmostC1.hpp:899