21 template<
short_t d,
class T>
32 template<
short_t d,
class T>
35 GISMO_ASSERT(m_mapModified.isFinalized(),
"Mapper is not finalized, run XXXX first");
41 for (
size_t p=0; p!=m_bases.nBases(); p++)
43 size = m_mapModified.patchSize(p);
46 if (m_mapModified.is_free(k,p))
47 coefs.row(m_mapModified.index(k,p,0)) = patches.
patch(p).coefs().row(k);
87 template<
short_t d,
class T>
93 template<
short_t d,
class T>
98 template<
short_t d,
class T>
104 template<
short_t d,
class T>
107 m_matrix.makeCompressed();
110 template<
short_t d,
class T>
116 for (
size_t p=0; p!=m_bases.nBases(); p++)
118 tmp += m_bases.basis(p).size();
121 tmp -= m_bases.basis(p).boundaryOffset(
boxSide(1),k).size();
122 tmp -= m_bases.basis(p).boundaryOffset(
boxSide(2),k).size();
123 tmp -= m_bases.basis(p).boundaryOffset(
boxSide(3),k).size()-4;
124 tmp -= m_bases.basis(p).boundaryOffset(
boxSide(4),k).size()-4;
136 for(gsBoxTopology::const_iiterator iit = m_topology.iBegin(); iit!= m_topology.iEnd(); iit++)
138 basis1 = &m_bases.
basis(iit->first().patch);
139 basis2 = &m_bases.
basis(iit->second().patch);
140 tmp += basis1->
boundary(iit->first().side()).size() - 4;
141 tmp += basis2->
boundary(iit->second().side()).size() - 4;
148 for(gsBoxTopology::const_biterator bit = m_topology.bBegin(); bit!= m_topology.bEnd(); bit++)
150 basis1 = &m_bases.
basis(bit->patch);
159 std::vector<bool> passed(m_bases.nBases()*4);
160 std::fill(passed.begin(), passed.end(),
false);
162 std::vector<patchCorner> corners;
164 for (
size_t p=0; p!=m_bases.nBases(); p++)
167 index_t idx = this->_vertIndex(p,c);
170 m_topology.getCornerList(
patchCorner(p,c),corners);
172 for (
size_t k=0; k!=corners.size(); k++)
173 passed.at(this->_vertIndex(corners[k].patch,corners[k])) =
true;
175 std::pair<index_t,bool> vdata = this->_vertexData(
patchCorner(p,c));
176 bool C0 = m_C0s[idx];
177 if ((!vdata.second) && vdata.first==1)
179 else if ((!vdata.second) && vdata.first==2 && !C0)
181 else if ((!vdata.second) && vdata.first>2 && !C0)
182 tmp += 2*vdata.first+2;
183 else if ((!vdata.second) && vdata.first==2 && C0)
185 else if ((!vdata.second) && vdata.first>2 && C0)
186 tmp += 2*vdata.first+2;
void _makeTHB() override
Prints which DoFs have been handled and which have been eliminated.
Definition: gsSmoothInterfaces.hpp:94
short_t geoDim() const
Dimension of the geometry (must match for all patches).
Definition: gsMultiPatch.hpp:149
Provides declaration of THBSplineBasis class.
Constructs the D-Patch, from which the transformation matrix can be called.
Definition: gsSmoothInterfaces.h:28
#define index_t
Definition: gsConfig.h:32
void _initTHB() override
Initializes the matrix, the basis and the mappers.
Definition: gsSmoothInterfaces.hpp:99
Struct which represents a certain corner of a patch.
Definition: gsBoundary.h:392
#define GISMO_ASSERT(cond, message)
Definition: gsDebug.h:89
gsGeometry< T > & patch(size_t i) const
Return the i-th patch.
Definition: gsMultiPatch.h:226
const gsBasis< T > & basis(const index_t k) const
Helper which casts and returns the k-th piece of this function set as a gsBasis.
Definition: gsFunctionSet.hpp:33
Constructs the D-Patch, from which the transformation matrix can be called.
Definition: gsDPatchBase.h:36
void _initBasis() override
Initializes the basis.
Definition: gsSmoothInterfaces.hpp:88
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition: gsMultiPatch.h:33
Struct which represents a certain side of a box.
Definition: gsBoundary.h:84
gsSmoothInterfaces()
Empty constructor.
Definition: gsSmoothInterfaces.h:41
virtual gsMatrix< index_t > boundaryOffset(boxSide const &s, index_t offset) const
Definition: gsBasis.hpp:316
void _countDoFs() override
Initializes the matrix, the basis and the mappers.
Definition: gsSmoothInterfaces.hpp:111
void _computeEVs() override
Corrects the EVs.
Definition: gsSmoothInterfaces.hpp:105
virtual void defaultOptions()
Sets the default options.
Definition: gsDPatchBase.hpp:39
bool empty() const
Returns true if gsMultiPatch is empty.
Definition: gsMultiPatch.h:202
gsMatrix< index_t > boundary(boxSide const &s) const
Returns the indices of the basis functions that are nonzero at the domain boundary as single-column-m...
Definition: gsBasis.h:520
A basis represents a family of scalar basis functions defined over a common parameter domain...
Definition: gsBasis.h:78