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;
 
 
Struct which represents a certain side of a box.
Definition gsBoundary.h:85
A basis represents a family of scalar basis functions defined over a common parameter domain.
Definition gsBasis.h:79
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
virtual gsMatrix< index_t > boundaryOffset(boxSide const &s, index_t offset) const
Definition gsBasis.hpp:339
Constructs the D-Patch, from which the transformation matrix can be called.
Definition gsDPatchBase.h:37
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
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition gsMultiPatch.h:100
bool empty() const
Returns true if gsMultiPatch is empty.
Definition gsMultiPatch.h:268
short_t geoDim() const
Dimension of the geometry (must match for all patches).
Definition gsMultiPatch.hpp:150
gsGeometry< T > & patch(size_t i) const
Return the i-th patch.
Definition gsMultiPatch.h:292
Constructs the D-Patch, from which the transformation matrix can be called.
Definition gsSmoothInterfaces.h:29
void _makeTHB() override
Prints which DoFs have been handled and which have been eliminated.
Definition gsSmoothInterfaces.hpp:94
gsSmoothInterfaces()
Empty constructor.
Definition gsSmoothInterfaces.h:41
virtual void defaultOptions()
Sets the default options.
Definition gsDPatchBase.hpp:39
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
void _initTHB() override
Initializes the matrix, the basis and the mappers.
Definition gsSmoothInterfaces.hpp:99
void _initBasis() override
Initializes the basis.
Definition gsSmoothInterfaces.hpp:88
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition gsVector.h:37
#define index_t
Definition gsConfig.h:32
#define GISMO_ASSERT(cond, message)
Definition gsDebug.h:89
Provides declaration of THBSplineBasis class.
The G+Smo namespace, containing all definitions for the library.
Struct which represents a certain corner of a patch.
Definition gsBoundary.h:393