32 template<
short_t d,
class T>
36 typedef typename std::vector<std::tuple<index_t,index_t,T>> sparseEntry_t;
42 typedef memory::shared_ptr< gsDPatch >
Ptr;
45 typedef memory::unique_ptr< gsDPatch >
uPtr;
84 using Base::_preCoefficients;
129 void _refBoxes(std::vector<std::vector<index_t>> & patchBoxes);
160 using Base::_pushAndCheck;
166 using Base::_computeInterfaceMapper;
169 using Base::_computeBoundaryMapper;
171 void _computeVertexMapper(
patchCorner pcorner)
override;
181 using Base::_computeMapperRegularCorner_v1;
188 using Base::_computeMapperRegularBoundaryVertexSmooth_v2;
195 using Base::_computeMapperRegularBoundaryVertexNonSmooth_v2;
199 void _computeMapperIrregularBoundaryVertexSmooth_v3(
patchCorner pcorner,
index_t valence);
205 void _computeMapperIrregularBoundaryVertexNonSmooth_v3(
patchCorner pcorner,
index_t valence);
211 void _computeMapperIrregularBoundaryVertexSmooth_v(
patchCorner pcorner,
index_t valence)
override;
217 void _computeMapperIrregularBoundaryVertexNonSmooth_v(
patchCorner pcorner,
index_t valence)
override;
224 using Base::_computeMapperInteriorVertex_v;
317 void _handleIrregularBoundaryVertexNonSmooth(
patchCorner pcorner,
index_t valence)
override;
323 using Base::m_computed;
324 using Base::m_topology;
328 using Base::m_Bbases;
329 using Base::m_tMatrix;
330 std::vector<gsSparseMatrix<T>> m_tMatrices;
331 using Base::m_sideCheck;
332 using Base::m_vertCheck;
333 using Base::m_basisCheck;
336 using Base::m_mapModified;
337 using Base::m_mapOriginal;
339 using Base::m_matrix;
341 using Base::m_options;
347 using Base::m_nSides;
348 using Base::m_nVerts;
356 #ifndef GISMO_BUILD_LIB
357 #include GISMO_HPP_HEADER(gsDPatch.hpp)
void _handleIrregularBoundaryVertexSmooth(patchCorner pcorner, index_t valence) override
Handles a vertex in the global matrix.
Definition: gsDPatch.hpp:732
Creates the D-Patch smoothing matrix.
virtual void _computeMapper()
Calculates the mapper.
Definition: gsDPatchBase.hpp:1209
Provides declaration of the BoxTopology class.
memory::shared_ptr< gsDPatch > Ptr
Shared pointer for gsDPatch.
Definition: gsDPatch.h:42
virtual std::vector< bool > getSharpCorners(T tol=1e-2) const
Checks if corners are sharp or not.
Definition: gsDPatchBase.hpp:47
#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
gsDPatch()
Empty constructor.
Definition: gsDPatch.h:48
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
virtual void _whichHandled()
Prints which DoFs have been handled and which have been eliminated.
Definition: gsDPatchBase.hpp:857
Holds a set of patch-wise bases and their topology information.
Definition: gsMultiBasis.h:36
void _countDoFs() override
Initializes the matrix, the basis and the mappers.
Definition: gsDPatch.hpp:642
Provides declaration of the MultiPatch class.
void defaultOptions() override
Sets the default options.
Definition: gsDPatch.hpp:51
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 void _performChecks(bool basis)
Performs checks on sides, vertices and bases.
Definition: gsDPatchBase.hpp:875
virtual const index_t _vertIndex(index_t patch, boxCorner corner) const
Computes global index of the corner.
Definition: gsDPatchBase.h:577
Constructs the D-Patch, from which the transformation matrix can be called.
Definition: gsDPatch.h:33
memory::unique_ptr< gsDPatch > uPtr
Unique pointer for gsDPatch.
Definition: gsDPatch.h:45
void _computeEVs() override
Corrects the EVs.
Definition: gsDPatch.hpp:332
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
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
void _initTHB() override
Initializes the matrix, the basis and the mappers.
Definition: gsDPatch.hpp:144
void _initBasis() override
Initializes the basis.
Definition: gsDPatch.hpp:271
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 _makeTHB() override
Prints which DoFs have been handled and which have been eliminated.
Definition: gsDPatch.hpp:292
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
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
gsMatrix< T > _makePi(index_t valence)
Makes the Pi matrix.
Definition: gsDPatch.hpp:581
virtual void _resetChecks(bool basis)
Resets checks on sides, vertices and bases.
Definition: gsDPatchBase.hpp:890