19#define GISMO_MAKE_GEOMETRY_NEW \
20virtual memory::unique_ptr<gsGeometry<T> > makeGeometry( gsMatrix<T>coefs ) const \
21 { return memory::unique_ptr<gsGeometry<T> >(new GeometryType(*this, give(coefs))); }
86 typedef memory::shared_ptr< gsBasis >
Ptr;
89 typedef memory::unique_ptr< gsBasis >
uPtr;
93 static const bool IsRational =
false;
95 typedef memory::unique_ptr< gsDomainIterator<T> > domainIter;
108 GISMO_ENSURE(0==k,
"Single basis is defined on single subdomain, received: "<<k );
385 bool sameElement =
false)
const;
472 virtual void connectivity(
const gsMatrix<T> & nodes, gsMesh<T> & mesh)
const;
486 virtual void active_into(
const gsMatrix<T> & u, gsMatrix<index_t>& result)
const;
489 virtual void numActive_into(
const gsMatrix<T> & u, gsVector<index_t>& result)
const;
505 virtual void activeCoefs_into(
const gsVector<T> & u,
const gsMatrix<T> & coefs,
506 gsMatrix<T>& result)
const;
730 virtual std::ostream &
print(std::ostream &os)
const = 0;
736 std::ostringstream os;
784 virtual void unrefine(
gsMatrix<T> const & boxes,
int refExt = 0);
786 virtual std::vector<index_t> asElements(
gsMatrix<T> const & boxes,
int refExt = 0)
const;
787 virtual std::vector<index_t> asElementsUnrefine(
gsMatrix<T> const & boxes,
int refExt = 0)
const;
797 virtual void unrefineElements(std::vector<index_t>
const & boxes);
805 virtual void unrefineElements_withCoefs(
gsMatrix<T> & coefs,std::vector<index_t>
const & boxes);
834 int numKnots = 1,
int mul = 1);
950 std::vector<gsSparseMatrix<T> > collocationMatrixWithDeriv(
const gsMatrix<T> & u)
const;
951 static std::vector<gsSparseMatrix<T> > collocationMatrixWithDeriv(
const gsBasis<T> & b,
const gsMatrix<T> & u);
983#ifdef GISMO_WITH_PYBIND11
988 void pybind11_init_gsBasis(pybind11::module &m);
995#ifndef GISMO_BUILD_LIB
996#include GISMO_HPP_HEADER(gsBasis.hpp)
Struct which represents a certain side of a box.
Definition gsBoundary.h:85
Represents an individual function in a function set, or a certain component of a vector-valued functi...
Definition gsBasisFun.h:37
A basis represents a family of scalar basis functions defined over a common parameter domain.
Definition gsBasis.h:79
virtual void activeCoefs_into(const gsVector< T > &u, const gsMatrix< T > &coefs, gsMatrix< T > &result) const
Returns the matrix result of active coefficients at points u, each row being one coefficient....
Definition gsBasis.hpp:328
virtual void deriv2_into(const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluate the second derivatives of all active basis function at points u.
Definition gsBasis.hpp:484
virtual gsMatrix< T > laplacian(const gsMatrix< T > &u) const
Compute the Laplacian of all nonzero basis functions at points u.
Definition gsBasis.hpp:183
virtual void uniformRefine(int numKnots=1, int mul=1, short_t dir=-1)
Refine the basis uniformly by inserting numKnots new knots with multiplicity mul on each knot span.
Definition gsBasis.hpp:603
virtual gsBasis::uPtr tensorize(const gsBasis &other) const
Return a tensor basis of this and other.
Definition gsBasis.hpp:537
virtual void uniformCoarsen_withTransfer(gsSparseMatrix< T, RowMajor > &transfer, int numKnots=1)
Coarsen the basis uniformly and produce a sparse matrix which maps coarse coefficient vectors to refi...
Definition gsBasis.hpp:624
virtual void anchors_into(gsMatrix< T > &result) const
Returns the anchor points that represent the members of the basis in result. There is exactly one anc...
Definition gsBasis.hpp:295
virtual const gsMatrix< T > & weights() const
Only for compatibility reasons, with gsRationalBasis. It returns an empty matrix.
Definition gsBasis.h:411
virtual void evalFunc_into(const gsMatrix< T > &u, const gsMatrix< T > &coefs, gsMatrix< T > &result) const
Evaluate the function described by coefs at points u, i.e., evaluates a linear combination of coefs x...
Definition gsBasis.hpp:37
virtual T getMaxCellLength() const
Get the maximum mesh size, as expected for approximation error estimates.
Definition gsBasis.hpp:725
virtual short_t maxDegree() const
If the basis is of polynomial or piecewise polynomial type, then this function returns the maximum po...
Definition gsBasis.hpp:687
virtual void uniformCoarsen(int numKnots=1)
Coarsen the basis uniformly by removing groups of numKnots consecutive knots, each knot removed mul t...
Definition gsBasis.hpp:616
gsSparseMatrix< T > collocationMatrix(gsMatrix< T > const &u) const
Computes the collocation matrix w.r.t. points u.
Definition gsBasis.hpp:191
virtual gsMatrix< T > & weights()
Only for compatibility reasons, with gsRationalBasis. It returns an empty matrix.
Definition gsBasis.h:418
gsMatrix< T > derivSingle(index_t i, const gsMatrix< T > &u) const
Evaluate a single basis function i derivative at points u.
Definition gsBasis.h:130
virtual void numActive_into(const gsMatrix< T > &u, gsVector< index_t > &result) const
Returns the number of active (nonzero) basis functions at points u in result.
Definition gsBasis.hpp:324
virtual void reduceContinuity(int const &i=1)
Reduces the continuity of the basis along element boundaries.
Definition gsBasis.hpp:679
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 void reverse()
Reverse the basis.
Definition gsBasis.hpp:703
virtual void uniformRefine_withTransfer(gsSparseMatrix< T, RowMajor > &transfer, int numKnots=1, int mul=1)
Refine the basis uniformly.
Definition gsBasis.hpp:611
virtual gsMatrix< index_t > allBoundary() const
Returns the indices of the basis functions that are nonzero at the domain boundary.
Definition gsBasis.hpp:334
gsMatrix< T > deriv2Func(const gsMatrix< T > &u, const gsMatrix< T > &coefs) const
Evaluates the second derivatives of the function described by coefs at points u.
Definition gsBasis.h:307
gsBasis< T >::uPtr boundaryBasis(boxSide const &s)
Returns the boundary basis for side s.
virtual void evalAllDersSingle_into(index_t i, const gsMatrix< T > &u, int n, std::vector< gsMatrix< T > > &result) const
Evaluate the basis function i and its derivatives up to order n at points u into result.
Definition gsBasis.hpp:494
static void linearCombination_into(const gsMatrix< T > &coefs, const gsMatrix< index_t > &actives, const gsMatrix< T > &values, gsMatrix< T > &result, bool sameElement=false)
Computes the linear combination coefs * values( actives )
Definition gsBasis.hpp:150
virtual void evalSingle_into(index_t i, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluate the i-th basis function at points u into result.
Definition gsBasis.hpp:470
virtual void matchWith(const boundaryInterface &bi, const gsBasis< T > &other, gsMatrix< index_t > &bndThis, gsMatrix< index_t > &bndOther, index_t offset=0) const
Computes the indices of DoFs that match on the interface bi. The interface is assumed to be a common ...
Definition gsBasis.hpp:707
virtual void elevateContinuity(int const &i=1)
Elevates the continuity of the basis along element boundaries.
Definition gsBasis.hpp:675
gsBasisFun< T > function(index_t i) const
Returns the i-th basis function as a gsFunction.
Definition gsBasis.hpp:29
virtual void connectivity(const gsMatrix< T > &nodes, gsMesh< T > &mesh) const
Definition gsBasis.hpp:312
virtual gsBasis::uPtr create() const
Create an empty basis of the derived type and return a pointer to it.
Definition gsBasis.hpp:532
virtual void degreeDecrease(short_t const &i=1, short_t const dir=-1)
Lower the degree of the basis by the given amount, preserving knots multiplicity.
Definition gsBasis.hpp:641
virtual domainIter makeDomainIterator() const
Create a domain iterator for the computational mesh of this basis, that points to the first element o...
Definition gsBasis.hpp:542
memory::unique_ptr< gsGeometry< T > > interpolateData(gsMatrix< T > const &vals, gsMatrix< T > const &pts) const
Applies interpolation given the parameter values pts and values vals.
Definition gsBasis.hpp:240
virtual uPtr componentBasis_withIndices(boxComponent b, gsMatrix< index_t > &indices, bool noBoundary=true) const
Returns the basis that corresponds to the component.
Definition gsBasis.hpp:383
virtual short_t totalDegree() const
If the basis is of polynomial or piecewise polynomial type, then this function returns the total poly...
Definition gsBasis.hpp:695
virtual void uniformRefine_withCoefs(gsMatrix< T > &coefs, int numKnots=1, int mul=1, short_t const dir=-1)
Refine the basis uniformly.
Definition gsBasis.hpp:607
gsMatrix< T > evalSingle(index_t i, const gsMatrix< T > &u) const
Evaluate a single basis function i at points u.
Definition gsBasis.h:122
virtual void degreeReduce(short_t const &i=1, short_t const dir=-1)
Reduce the degree of the basis by the given amount, preserve smoothness.
Definition gsBasis.hpp:633
virtual std::ostream & print(std::ostream &os) const =0
Prints the object as a string.
virtual short_t degree(short_t i) const
Degree with respect to the i-th variable. If the basis is a tensor product of (piecewise) polynomial ...
Definition gsBasis.hpp:699
virtual void degreeIncrease(short_t const &i=1, short_t const dir=-1)
Elevate the degree of the basis by the given amount, preserve knots multiplicity.
Definition gsBasis.hpp:637
virtual void eval_into(const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates nonzero basis functions at point u into result.
Definition gsBasis.hpp:466
gsMatrix< T > derivFunc(const gsMatrix< T > &u, const gsMatrix< T > &coefs) const
Evaluate the derivatives of the function described by coefs at points u.
Definition gsBasis.h:215
virtual void active_into(const gsMatrix< T > &u, gsMatrix< index_t > &result) const
Returns the indices of active basis functions at points u, as a list of indices, in result....
Definition gsBasis.hpp:316
virtual memory::unique_ptr< gsBasis< T > > makeNonRational() const
Definition gsBasis.h:718
virtual void derivFunc_into(const gsMatrix< T > &u, const gsMatrix< T > &coefs, gsMatrix< T > &result) const
Evaluate the derivatives of the function described by coefs at points u.
Definition gsBasis.hpp:84
virtual void deriv2Func_into(const gsMatrix< T > &u, const gsMatrix< T > &coefs, gsMatrix< T > &result) const
Evaluates the second derivatives of the function described by coefs at points u.
Definition gsBasis.hpp:101
const gsBasis< T > & piece(const index_t k) const
Returns the piece(s) of the function(s) at subdomain k.
Definition gsBasis.h:106
virtual void jacobianFunc_into(const gsMatrix< T > &u, const gsMatrix< T > &coefs, gsMatrix< T > &result) const
Evaluate the Jacobian of the function described by coefs at points u. Jacobian matrices are stacked i...
Definition gsBasis.hpp:58
void setDegree(short_t const &i)
Set the degree of the basis (either elevate or reduce) in order to have degree equal to i wrt to each...
Definition gsBasis.hpp:645
memory::unique_ptr< gsBasis > uPtr
Unique pointer for gsBasis.
Definition gsBasis.h:89
gsMatrix< T > evalFunc(const gsMatrix< T > &u, const gsMatrix< T > &coefs) const
Evaluate the function described by coefs at points u.
Definition gsBasis.h:184
gsMatrix< T > anchors() const
Returns the anchor points that represent the members of the basis. There is exactly one anchor point ...
Definition gsBasis.h:437
virtual memory::unique_ptr< gsGeometry< T > > interpolateAtAnchors(gsMatrix< T > const &vals) const
Applies interpolation of values pts using the anchors as parameter points. May be reimplemented in de...
Definition gsBasis.hpp:267
virtual gsMatrix< index_t > boundaryOffset(boxSide const &s, index_t offset) const
Definition gsBasis.hpp:339
memory::shared_ptr< gsBasis > Ptr
Shared pointer for gsBasis.
Definition gsBasis.h:86
virtual void uniformCoarsen_withCoefs(gsMatrix< T > &coefs, int numKnots=1)
Coarsen the basis uniformly.
Definition gsBasis.hpp:620
virtual void anchor_into(index_t i, gsMatrix< T > &result) const
Returns the anchor point for member i of the basis.
Definition gsBasis.hpp:299
virtual bool isActive(const index_t i, const gsVector< T > &u) const
Returns true if there the point u with non-zero value or derivatives when evaluated at the basis func...
Definition gsBasis.hpp:320
virtual memory::unique_ptr< gsGeometry< T > > makeGeometry(gsMatrix< T > coefs) const =0
Create a gsGeometry of proper type for this basis with the given coefficient matrix.
virtual void evalAllDersFunc_into(const gsMatrix< T > &u, const gsMatrix< T > &coefs, const unsigned n, std::vector< gsMatrix< T > > &result, bool sameElement=false) const
Evaluates all derivatives up to order n of the function described by coefs at points u.
Definition gsBasis.hpp:119
virtual void degreeElevate(short_t const &i=1, short_t const dir=-1)
Elevate the degree of the basis by the given amount, preserve smoothness.
Definition gsBasis.hpp:629
virtual void deriv_into(const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the first partial derivatives of the nonzero basis function.
Definition gsBasis.hpp:474
gsMatrix< T > deriv2Single(index_t i, const gsMatrix< T > &u) const
Evaluate the second derivative of a single basis function i at points u.
Definition gsBasis.h:138
virtual T getMinCellLength() const
Get the minimum mesh size, as expected for inverse inequalities.
Definition gsBasis.hpp:712
gsMatrix< T > supportInterval(index_t dir) const
Returns an interval that contains the parameter values in direction dir.
Definition gsBasis.hpp:462
virtual gsMatrix< T > support() const
Returns (a bounding box for) the domain of the whole basis.
Definition gsBasis.hpp:454
virtual const gsBasis & source() const
Definition gsBasis.h:710
virtual void refineElements_withCoefs(gsMatrix< T > &coefs, std::vector< index_t > const &boxes)
Refine basis and geometry coefficients to levels.
Definition gsBasis.hpp:595
virtual gsDomain< T > * domain() const
Definition gsBasis.hpp:683
virtual size_t numElements(boxSide const &s=0) const
The number of elements on side s.
Definition gsBasis.hpp:551
virtual const gsBasis< T > & component(short_t i) const
For a tensor product basis, return the (const) 1-d basis for the i-th parameter component.
Definition gsBasis.hpp:563
virtual short_t minDegree() const
If the basis is of polynomial or piecewise polynomial type, then this function returns the minimum po...
Definition gsBasis.hpp:691
void setDegreePreservingMultiplicity(short_t const &i)
Set the degree of the basis (either increase or decrecee) in order to have degree equal to i.
Definition gsBasis.hpp:663
virtual gsBasis & source()
Definition gsBasis.h:714
virtual gsMatrix< T > elementInSupportOf(index_t j) const
Returns (the coordinates of) an element in the support of basis function j.
Definition gsBasis.hpp:559
gsVector< index_t > numActive(const gsMatrix< T > &u) const
Number of active basis functions at an arbitrary parameter value.
Definition gsBasis.h:151
virtual void deriv2Single_into(index_t i, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluate the (partial) derivatives of the i-th basis function at points u into result.
Definition gsBasis.hpp:488
virtual void refine(gsMatrix< T > const &boxes, int refExt=0)
Refine the basis on the area defined by the matrix boxes.
Definition gsBasis.hpp:579
virtual void refineElements(std::vector< index_t > const &boxes)
Refinement function, with different sytax for different basis.
Definition gsBasis.hpp:587
virtual size_t elementIndex(const gsVector< T > &u) const
Returns an index for the element which contains point u.
Definition gsBasis.hpp:555
virtual bool isRational() const
Returns false, since all bases that inherit from gsBasis are not rational.
Definition gsBasis.h:425
virtual uPtr componentBasis(boxComponent b) const
Returns the basis that corresponds to the component.
Definition gsBasis.hpp:354
virtual void connectivityAtAnchors(gsMesh< T > &mesh) const
Definition gsBasis.hpp:304
virtual void evalDerSingle_into(index_t i, const gsMatrix< T > &u, int n, gsMatrix< T > &result) const
Evaluate the (partial) derivative(s) of order n the i-th basis function at points u into result.
Definition gsBasis.hpp:525
virtual std::string detail() const
Prints the object as a string with extended details.
Definition gsBasis.h:733
virtual void derivSingle_into(index_t i, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the (partial) derivatives of the i-th basis function at points u into result.
Definition gsBasis.hpp:478
Class representing a domain. i.e. a collection of elements (triangles, rectangles,...
Definition gsDomain.h:32
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition gsFunctionSet.h:219
virtual short_t domainDim() const =0
Dimension of the (source) domain.
uPtr clone()
Clone methode. Produceds a deep copy inside a uPtr.
Abstract base class representing a geometry map.
Definition gsGeometry.h:93
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
Sparse matrix class, based on gsEigen::SparseMatrix.
Definition gsSparseMatrix.h:139
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition gsVector.h:37
Provides structs and classes related to interfaces and boundaries.
#define short_t
Definition gsConfig.h:35
#define index_t
Definition gsConfig.h:32
#define GISMO_ENSURE(cond, message)
Definition gsDebug.h:102
This is the interface of all objects that computes functions on points like gsBasis,...
The G+Smo namespace, containing all definitions for the library.
Struct which represents an interface between two patches.
Definition gsBoundary.h:650
Struct which represents a certain component (interior, face, egde, corner).
Definition gsBoundary.h:445
Struct which represents a certain corner of a hyper-cube.
Definition gsBoundary.h:292