1616
1717#include " ASMs2D.h"
1818#include " ASMmxBase.h"
19- #include < memory>
2019
2120
2221/* !
@@ -35,7 +34,7 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
3534 // ! \brief The constructor initializes the dimension of each basis.
3635 ASMs2Dmx (unsigned char n_s, const CharVec& n_f);
3736 // ! \brief Copy constructor.
38- ASMs2Dmx (const ASMs2Dmx& patch, const CharVec& n_f = CharVec( 2 , 0 ) );
37+ ASMs2Dmx (const ASMs2Dmx& patch, const CharVec& n_f);
3938 // ! \brief Destructor.
4039 virtual ~ASMs2Dmx ();
4140
@@ -87,17 +86,25 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
8786 // ! \brief Returns the classification of a node.
8887 // ! \param[in] inod 1-based node index local to current patch
8988 virtual char getNodeType (size_t inod) const ;
90- // ! \brief Returns the area in the parameter space for an element.
91- // ! \param[in] iel Element index
92- virtual double getParametricArea (int iel) const ;
93- // ! \brief Returns boundary edge length in the parameter space for an element.
94- // ! \param[in] iel Element index
95- // ! \param[in] dir Local index of the boundary edge
96- double getParametricLength (int iel, int dir) const ;
9789
9890 // ! \brief Initializes the patch level MADOF array for mixed problems.
9991 virtual void initMADOF (const int * sysMadof);
10092
93+ // ! \brief Constrains all DOFs on a given boundary edge.
94+ // ! \param[in] dir Parameter direction defining the edge to constrain
95+ // ! \param[in] open If \e true, exclude the end points of the edge
96+ // ! \param[in] dof Which DOFs to constrain at each node along the edge
97+ // ! \param[in] code Inhomogeneous dirichlet condition code
98+ // ! \param[in] basis Which basis to constrain edge for (0 means check all)
99+ virtual void constrainEdge (int dir, bool open, int dof, int code, char basis);
100+ // ! \brief Constrains a corner node identified by the two parameter indices.
101+ // ! \param[in] I Parameter index in u-direction
102+ // ! \param[in] J Parameter index in v-direction
103+ // ! \param[in] dof Which DOFs to constrain at the node
104+ // ! \param[in] code Inhomogeneous dirichlet condition code
105+ // ! \param[in] basis Which basis to constrain node for (0 means check all)
106+ virtual void constrainCorner (int I, int J, int dof, int code, char basis);
107+
101108 // ! \brief Connects all matching nodes on two adjacent boundary edges.
102109 // ! \param[in] edge Local edge index of this patch, in range [1,4]
103110 // ! \param neighbor The neighbor patch
@@ -139,7 +146,8 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
139146 // ! \param[in] time Parameters for nonlinear/time-dependent simulations
140147 // ! \param[in] iChk Object checking if an element interface has contributions
141148 virtual bool integrate (Integrand& integrand, GlobalIntegral& glbInt,
142- const TimeDomain& time, const ASM ::InterfaceChecker& iChk);
149+ const TimeDomain& time,
150+ const ASM ::InterfaceChecker& iChk);
143151
144152
145153 // Post-processing methods
@@ -204,7 +212,7 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
204212 virtual void extractNodeVec (const RealArray& globVec, RealArray& nodeVec,
205213 unsigned char , int basis) const ;
206214
207- // ! \brief Inject nodal results for this patch into a global vector.
215+ // ! \brief Injects nodal results for this patch into a global vector.
208216 // ! \param[in] nodeVec Nodal result vector for this patch
209217 // ! \param[out] globVec Global solution vector in DOF-order
210218 // ! \param[in] basis Which basis (or 0 for both) to extract nodal values for
@@ -215,7 +223,7 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
215223 // ! \brief Generates element groups for multi-threading of interior integrals.
216224 // ! \param[in] integrand Object with problem-specific data and methods
217225 // ! \param[in] silence If \e true, suppress threading group outprint
218- // ! \param[in] ignoreGlobalLM If \e true, ignore global multipliers in sanity check
226+ // ! \param[in] ignoreGlobalLM Sanity check option
219227 virtual void generateThreadGroups (const Integrand& integrand, bool silence,
220228 bool ignoreGlobalLM);
221229
@@ -226,6 +234,15 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
226234 // ! \param[in] basis Which basis to return size parameters for
227235 virtual bool getSize (int & n1, int & n2, int basis) const ;
228236
237+ protected:
238+ // ! \brief Returns the area in the parameter space for an element.
239+ // ! \param[in] iel Element index
240+ double getParametricArea (int iel) const ;
241+ // ! \brief Returns boundary edge length in the parameter space for an element.
242+ // ! \param[in] iel Element index
243+ // ! \param[in] dir Local index of the boundary edge
244+ double getParametricLength (int iel, int dir) const ;
245+
229246 // ! \brief Finds the global (or patch-local) node numbers on a patch boundary.
230247 // ! \param[in] lIndex Local index of the boundary edge
231248 // ! \param nodes Array of node numbers
@@ -235,7 +252,7 @@ class ASMs2Dmx : public ASMs2D, private ASMmxBase
235252 virtual void getBoundaryNodes (int lIndex, IntVec& nodes, int basis,
236253 int thick, int , bool local) const ;
237254
238- protected :
255+ private :
239256 std::vector<std::shared_ptr<Go::SplineSurface>> m_basis; // !< Vector of bases
240257 Go::SplineSurface* altProjBasis = nullptr ; // !< Alternative projection basis
241258};
0 commit comments