45template<
short_t d, 
class T>
 
   54    typedef std::vector<std::pair<index_t,index_t> >::iterator step_iter;
 
   56    typedef typename std::vector<BasisType *>::const_iterator ConstBasisIter;
 
   57    typedef typename std::vector<BasisType *>::iterator BasisIter;
 
   58    typedef typename std::vector<gsMatrix<T> *>::const_iterator ConstMatrixPtrIter;
 
   60    typedef typename std::vector<indexType> IndexContainer;
 
   61    typedef typename std::vector<indexType>::const_iterator ConstIndexIter;
 
   62    typedef typename std::vector<weightType> WeightContainer;
 
   63    typedef typename std::vector<weightType>::const_iterator ConstWeightIter;
 
   65    typedef memory::unique_ptr< gsDomainIterator<T> > domainIter;
 
   68    using gsMappedBasis<d,T>::m_mapper;
 
   69    using gsMappedBasis<d,T>::m_topol;
 
   70    using gsMappedBasis<d,T>::m_bases;
 
   73    typedef memory::shared_ptr< gsMPBESBasis > 
Ptr;
 
   76    typedef memory::unique_ptr< gsMPBESBasis > 
uPtr;
 
   78    using gsMappedBasis<d,T>::size;
 
   79    using gsMappedBasis<d,T>::degree;
 
   80    using gsMappedBasis<d,T>::nPatches;
 
  111    { 
return m_bases[i]; }
 
 
  143        std::ostringstream os;
 
 
  149    std::ostream & 
print(std::ostream & os)
 const 
  150    { os << m_mapper->asMatrix().toDense() <<
"\n"; 
return os; }
 
 
  158    bool isConnected(indexType i,indexType j) 
const;
 
  160    virtual bool isLocallyConnected(indexType i,indexType j) 
const = 0;
 
  171    unsigned getMinDist()
 const 
  197                                 bool updateBasis = 
true);
 
  229                                  bool updateBasis = 
true) = 0;
 
  241                                  bool updateBasis = 
true) = 0;
 
  264                               index_t startFromPatch = -1) = 0;
 
  345        T parametricDistance1;
 
  347        T parametricDistance2;
 
  357            return (interface==bi) || (interface.getInverse()==bi);
 
 
 
 
  392#ifndef GISMO_BUILD_LIB 
  393#include GISMO_HPP_HEADER(gsMPBESBasis.hpp) 
A basis represents a family of scalar basis functions defined over a common parameter domain.
Definition gsBasis.h:79
 
uPtr clone()
Clone methode. Produceds a deep copy inside a uPtr.
 
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
 
Purely abstract class gsMappedBasis, which gives means of combining basis functions to new,...
Definition gsMPBESBasis.h:47
 
index_t getIncrSmoothnessDegree() const
getter for m_incrSmoothnessDegree
Definition gsMPBESBasis.h:168
 
gsMPBESBasis()
Default empty constructor.
Definition gsMPBESBasis.h:84
 
memory::shared_ptr< gsMPBESBasis > Ptr
Shared pointer for gsMPBESBasis.
Definition gsMPBESBasis.h:73
 
void updateTopol()
updates the mapping of this basis (f.e. after a knot insertion)
Definition gsMPBESBasis.h:101
 
bool setWeight(const patchSide &ps, const T weight)
Definition gsMPBESBasis.hpp:279
 
unsigned m_minDist
minimal C^0 distance from special (extraordinary) vertices, specified in basisfunctions
Definition gsMPBESBasis.h:377
 
memory::unique_ptr< gsMPBESBasis > uPtr
Unique pointer for gsMPBESBasis.
Definition gsMPBESBasis.h:76
 
void degreeIncrease(index_t amount=1, index_t dir=-1, bool updateBasis=true)
Definition gsMPBESBasis.hpp:189
 
virtual void _setMapping()=0
create a new mapping of the local basisfunctions
 
BasisType * getBasePointer(index_t i)
getter for m_bases[i]
Definition gsMPBESBasis.h:110
 
void setC0(patchCorner pc)
Definition gsMPBESBasis.hpp:333
 
T getWeight(const patchSide &ps) const
Definition gsMPBESBasis.hpp:269
 
void uniformRefine_withCoefs(gsMatrix< T > &localCoefs, index_t numKnots=1, index_t mul=1, bool updateBasis=true)
Definition gsMPBESBasis.hpp:151
 
short_t dim() const
Returns the dimension d of the parameter space.
Definition gsMPBESBasis.h:134
 
virtual void repairPatches(std::vector< gsMatrix< T > * > &coefs, index_t startFromPatch=-1)=0
 
void _setDistanceOfAllVertices()
initializes the m_distances field
Definition gsMPBESBasis.hpp:313
 
void _initVertices()
initializes the m_vertices field
Definition gsMPBESBasis.hpp:298
 
virtual void refineElements_withCoefs(gsMatrix< T > &localCoefs, const index_t patch, std::vector< index_t > const &boxes, bool updateBasis=true)=0
 
std::string detail() const
Clone function. Used to make a copy of a derived basis.
Definition gsMPBESBasis.h:140
 
virtual ~gsMPBESBasis()
constructor, deletes all the bases and the mapper
Definition gsMPBESBasis.h:90
 
virtual unsigned basisFunctionsOnSide(const patchSide &ps) const =0
Returns the amount of basis functions on a given side of a given patch.
 
virtual void refineElements(const index_t patch, std::vector< index_t > const &boxes, bool updateBasis=true)=0
 
static const short_t Dim
Dimension of the parameter domains.
Definition gsMPBESBasis.h:50
 
void uniformRefine(index_t numKnots=1, index_t mul=1, bool updateBasis=true)
Definition gsMPBESBasis.hpp:137
 
virtual T findParameter(patchSide const &ps, patchCorner const &pc, unsigned nrBasisFuncs) const =0
 
virtual void refine_withCoefs(gsMatrix< T > &localCoefs, const index_t patch, gsMatrix< T > const &boxes, bool updateBasis=true)=0
 
void smoothEverything()
Definition gsMPBESBasis.hpp:222
 
bool isSpecialVertex(const patchCorner &pc) const
gives back true, if the given patchCorner is a special vertex
Definition gsMPBESBasis.hpp:362
 
std::vector< distances > m_distances
vector of distances objects, that store C^0 distances from special vertices on the edges
Definition gsMPBESBasis.h:383
 
std::vector< std::pair< patchSide, T > > m_patchSideWeights
vector storing the weights for interfaces
Definition gsMPBESBasis.h:379
 
void smoothCornerEdge(const patchCorner &pc, const patchSide &ps, bool updateBasis=true)
Definition gsMPBESBasis.hpp:207
 
bool _check() const
Checks the gsMappedBasis for consistency.
Definition gsMPBESBasis.hpp:31
 
std::vector< std::pair< patchCorner, bool > > m_vertices
vector storing all the inner vertices, with a flag if it is an Extraordinary vertex or an ordinary ve...
Definition gsMPBESBasis.h:381
 
std::ostream & print(std::ostream &os) const
Prints the object to the stream.
Definition gsMPBESBasis.h:149
 
virtual void refine(const index_t patch, gsMatrix< T > const &boxes, bool updateBasis=true)=0
 
short_t m_incrSmoothnessDegree
smoothness degree that is tried to achive over patch interfaces
Definition gsMPBESBasis.h:375
 
virtual bool _checkTopologyWithBases() const =0
Checks the gsMappedBasis for consistency.
 
T getParametricDistanceOfVertex(const patchCorner &pc, const patchSide &ps) const
gives back the parametric c^0 distance of the edge ps starting from corner pc
Definition gsMPBESBasis.hpp:372
 
void degreeElevate(index_t amount=1, bool updateBasis=true)
Definition gsMPBESBasis.hpp:180
 
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
 
Class Representing a triangle mesh with 3D vertices.
Definition gsMesh.h:32
 
Sparse matrix class, based on gsEigen::SparseMatrix.
Definition gsSparseMatrix.h:139
 
#define short_t
Definition gsConfig.h:35
 
#define index_t
Definition gsConfig.h:32
 
Provides declaration of Basis abstract interface.
 
Provides declaration of the Mesh class.
 
The G+Smo namespace, containing all definitions for the library.
 
Struct which represents an interface between two patches.
Definition gsBoundary.h:650
 
Private stract that has the purpose of storing distance information of c^0 parts around special verti...
Definition gsMPBESBasis.h:342
 
void _determineValues(patchSide side, patchSide ls, patchSide rs, index_t dist, unsigned degree, unsigned max, unsigned &left, unsigned &right, const gsMPBESBasis< d, T > &basis) const
determines the right values for the two distances, only used in the constructer
Definition gsMPBESBasis.hpp:472
 
T getParamDist(const patchCorner &pc, const gsMPBESBasis< d, T > &basis) const
gets the parametric distance from the corner pc
Definition gsMPBESBasis.hpp:455
 
void setParamDist(unsigned absoluteVal, const patchCorner &pc, const gsMPBESBasis< d, T > &basis)
Definition gsMPBESBasis.hpp:426
 
bool isDistancesOfInterface(const boundaryInterface &bi) const
checks if this distances struct ressembles the interface given
Definition gsMPBESBasis.h:355
 
Struct which represents a certain corner of a patch.
Definition gsBoundary.h:393
 
Struct which represents a certain side of a patch.
Definition gsBoundary.h:232