19 #include <gsUnstructuredSplines/src/gsApproxC1GluingData.h>
27 template<
short_t d,
class T>
32 typedef gsContainerBasis<d, T> Basis;
33 typedef typename std::vector<Basis> BasisContainer;
34 typedef typename std::vector<gsPatchReparameterized<d,T>> C1AuxPatchContainer;
37 typedef memory::shared_ptr<gsApproxC1Edge> Ptr;
40 typedef memory::unique_ptr<gsApproxC1Edge> uPtr;
49 BasisContainer & bases,
53 : m_mp(mp), m_bases(bases), m_optionList(optionList)
56 m_auxPatches.push_back(gsPatchReparameterized<d,T>(m_mp.patch(item.
first().
patch), m_bases[item.
first().
patch]));
57 m_auxPatches.push_back(gsPatchReparameterized<d,T>(m_mp.patch(item.
second().
patch), m_bases[item.
second().
patch]));
59 std::vector<patchSide> sidesContainer(2);
60 sidesContainer[0] = item.
first();
61 sidesContainer[1] = item.
second();
63 reparametrizeInterfacePatches(sidesContainer);
65 compute(sidesContainer);
94 BasisContainer & bases,
98 : m_mp(mp), m_bases(bases), m_optionList(optionList)
100 m_auxPatches.clear();
101 m_auxPatches.push_back(gsPatchReparameterized<d,T>(m_mp.patch(item.
patch), m_bases[item.
patch]));
103 std::vector<patchSide> sidesContainer(1);
104 sidesContainer[0] = item;
106 reparametrizeSinglePatch(item.side().
index());
108 compute(sidesContainer);
127 std::vector<gsMultiPatch<T>> getEdgeBasis() {
return basisEdgeResult; };
133 BasisContainer & m_bases;
138 C1AuxPatchContainer m_auxPatches;
141 std::vector<gsMultiPatch<T>> basisEdgeResult;
149 void computeAuxTopology();
151 void reparametrizeInterfacePatches(std::vector<patchSide> & sidesContainer);
153 void reparametrizeSinglePatch(
index_t side);
155 void compute(std::vector<patchSide> & sidesContainer);
161 #ifndef GISMO_BUILD_LIB
162 #include GISMO_HPP_HEADER(gsApproxC1Edge.hpp)
Struct which represents a certain side of a patch.
Definition: gsBoundary.h:231
Provides declaration of Basis abstract interface.
#define index_t
Definition: gsConfig.h:32
Provides declaration of Basis abstract interface. Similar to gsMultiBasis, but without topology...
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
short_t index() const
Returns the index (as specified in boundary::side) of the box side.
Definition: gsBoundary.h:140
Class which holds a list of parameters/options, and provides easy access to them. ...
Definition: gsOptionList.h:32
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