17 #include <gsUnstructuredSplines/src/gsC1SurfBasisEdge.h>
19 #include <gsUnstructuredSplines/src/gsC1SurfGluingData.h>
23 template<
short_t d,
class T>
30 typedef memory::shared_ptr<gsC1SurfEdge> Ptr;
33 typedef memory::unique_ptr<gsC1SurfEdge> uPtr;
47 auxGeom.push_back(gsG1AuxiliaryPatch<d,T>(sp.
patch(item.
patch), item.
patch));
50 void computeG1InterfaceBasis()
52 basisEdgeResult.clear();
55 mp_init.
addPatch(auxGeom[0].getPatch());
56 mp_init.
addPatch(auxGeom[1].getPatch());
58 reparametrizeInterface(m_item);
60 test_mp.
addPatch(auxGeom[0].getPatch());
61 test_mp.
addPatch(auxGeom[1].getPatch());
65 gsC1SurfGluingData<T> g1BasisEdge(test_mp, test_mb);
66 gsC1SurfBasisEdge<T> g1BasisEdge_0(test_mp.
patch(0), test_mb.basis(0), 1,
false, g1BasisEdge);
67 gsC1SurfBasisEdge<T> g1BasisEdge_1(test_mp.
patch(1), test_mb.basis(1), 0,
false, g1BasisEdge);
68 g1BasisEdge_0.setG1BasisEdge(g1Basis_0);
69 g1BasisEdge_1.setG1BasisEdge(g1Basis_1);
72 points << 0.0, 0.25, 0.5, 0.75, 1.0;
73 gsMatrix<T> alphaL = g1BasisEdge.evalAlpha_L(points);
74 gsMatrix<T> alphaR = g1BasisEdge.evalAlpha_R(points);
80 auxGeom[0].parametrizeBasisBack(g1Basis_0);
82 auxGeom[1].parametrizeBasisBack(g1Basis_1);
84 basisEdgeResult.push_back(auxGeom[0].getG1Basis());
85 basisEdgeResult.push_back(auxGeom[1].getG1Basis());
88 void computeG1BoundaryBasis(
const index_t boundaryInd)
90 basisEdgeResult.clear();
92 reparametrizeBoundary(boundaryInd);
97 gsC1SurfGluingData<T> bdyGD;
98 gsC1SurfBasisEdge<T> g1BasisEdge(test_mp, test_mb, 1,
true, bdyGD);
99 g1BasisEdge.setG1BasisEdge(g1Basis_edge);
101 auxGeom[0].parametrizeBasisBack(g1Basis_edge);
103 basisEdgeResult.push_back(auxGeom[0].getG1Basis());
106 gsG1AuxiliaryPatch<d,T> & getSinglePatch(
const index_t i)
111 std::vector<gsMultiPatch<T>> getBasis(){
return basisEdgeResult;}
116 std::vector<gsMultiPatch<T>> basisEdgeResult;
118 std::vector<gsG1AuxiliaryPatch<d,T>> auxGeom;
129 void computeAuxTopology();
133 void reparametrizeBoundary(
index_t side);
140 #ifndef GISMO_BUILD_LIB
141 #include GISMO_HPP_HEADER(gsC1SurfEdge.hpp)
index_t addPatch(typename gsGeometry< T >::uPtr g)
Add a patch from a gsGeometry<T>::uPtr.
Definition: gsMultiPatch.hpp:210
Struct which represents a certain side of a patch.
Definition: gsBoundary.h:231
#define index_t
Definition: gsConfig.h:32
Holds a set of patch-wise bases and their topology information.
Definition: gsMultiBasis.h:36
gsGeometry< T > & patch(size_t i) const
Return the i-th patch.
Definition: gsMultiPatch.h:226
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition: gsMultiPatch.h:33
patchSide & second()
second, returns the second patchSide of this interface
Definition: gsBoundary.h:782
Struct which represents an interface between two patches.
Definition: gsBoundary.h:649
index_t patch
The index of the patch.
Definition: gsBoundary.h:234
patchSide & first()
first, returns the first patchSide of this interface
Definition: gsBoundary.h:776