25 enum class GoalFunction :
short_t
41 #ifdef GISMO_WITH_PYBIND11
46 void pybind11_enum_GoalFunction(pybind11::module &m);
48 #endif // GISMO_WITH_PYBIND11
53 template <
short_t d,
class T,
bool bending>
60 typedef typename gsThinShellAssemblerDWRBase<T>::bContainer bContainer;
62 virtual ~gsThinShellAssemblerDWR()
69 gsThinShellAssemblerDWR() {};
72 gsThinShellAssemblerDWR(
73 const gsMultiPatch<T> & patches,
74 const gsMultiBasis<T> & basisL,
75 const gsMultiBasis<T> & basisH,
76 const gsBoundaryConditions<T> & bconditions,
77 const gsFunction<T> & surface_force,
78 gsMaterialMatrixBase<T> * materialmatrix
82 gsOptionList & optionsL() {
return m_assemblerL->options();}
84 gsOptionList & optionsH() {
return m_assemblerH->options();}
87 gsExprAssembler<T> assemblerL() {
return m_assemblerL->assembler(); }
89 gsExprAssembler<T> assemblerH() {
return m_assemblerH->assembler(); }
92 void setOptions(gsOptionList & options) { m_assemblerL->setOptions(options); m_assemblerH->setOptions(options); }
95 void setPointLoads(
const gsPointLoads<T> & pLoads) { m_pLoads = pLoads; m_assemblerL->setPointLoads(pLoads); m_assemblerH->setPointLoads(pLoads); }
98 void setFoundation(
const gsFunction<T> & foundation) { m_assemblerL->setFoundation(foundation); m_assemblerH->setFoundation(foundation); }
101 void setPressure(
const gsFunction<T> & pressure) { m_assemblerL->setPressure(pressure); m_assemblerH->setPressure(pressure); }
104 void updateBCs(
const gsBoundaryConditions<T> & bconditions) { m_assemblerL->updateBCs(bconditions); m_assemblerH->updateBCs(bconditions); }
107 void setBasisL(
const gsMultiBasis<T> & basis) { m_assemblerL->setBasis(basis); }
108 void setBasisH(
const gsMultiBasis<T> & basis) { m_assemblerH->setBasis(basis); }
111 void setUndeformed(
const gsMultiPatch<T> & patches) { m_patches = patches; m_assemblerL->setUndeformed(patches); m_assemblerH->setUndeformed(patches); }
114 void homogenizeDirichlet() { m_assemblerL->homogenizeDirichlet(); m_assemblerH->homogenizeDirichlet(); }
117 index_t numDofsL()
const {
return m_assemblerL->numDofs(); }
118 index_t numDofsH()
const {
return m_assemblerH->numDofs(); }
120 void setSpaceBasisL(
const gsMultiPatch<T> & spaceBasis) { m_assemblerL->setSpaceBasis(spaceBasis); }
121 void setSpaceBasisH(
const gsMultiPatch<T> & spaceBasis) { m_assemblerH->setSpaceBasis(spaceBasis); }
131 {
return _assembleMass(m_assemblerL, m_massL, lumped); }
133 {
return _assembleMass(m_assemblerH, m_massH, lumped); }
135 {
return _assembleMatrix(m_assemblerL, m_matrixL); }
137 {
return _assembleMatrix(m_assemblerH, m_matrixH); }
139 {
return _assembleMatrix(m_assemblerL,deformed, m_matrixL); }
141 {
return _assembleMatrix(m_assemblerH,deformed, m_matrixH); }
144 {
return _assemblePrimal(m_assemblerL, m_pL); }
146 {
return _assemblePrimal(m_assemblerH, m_pH); }
148 {
return _assemblePrimal(m_assemblerL,deformed, m_pL); }
150 {
return _assemblePrimal(m_assemblerH,deformed, m_pH); }
153 {
return _assembleDual(m_assemblerL,primal, m_dL); }
155 {
return _assembleDual(m_assemblerH,primal, m_dH); }
158 {
return _assembleDual(bnds,m_assemblerL,primal, m_dL); }
160 {
return _assembleDual(bnds,m_assemblerH,primal, m_dH); }
163 {
return _assembleDual(points,m_assemblerL,primal, m_dL); }
165 {
return _assembleDual(points,m_assemblerH,primal, m_dH); }
168 {
return _assembleDual(m_assemblerL,primal,deformed, m_dL); }
170 {
return _assembleDual(m_assemblerH,primal,deformed, m_dH); }
172 ThinShellAssemblerStatus assembleDualL(
const bContainer & bnds,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed)
173 {
return _assembleDual(bnds,m_assemblerL,primal,deformed, m_dL); }
174 ThinShellAssemblerStatus assembleDualH(
const bContainer & bnds,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed)
175 {
return _assembleDual(bnds,m_assemblerH,primal,deformed, m_dH); }
177 ThinShellAssemblerStatus assembleDualL(
const gsMatrix<T> & points,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed)
178 {
return _assembleDual(points,m_assemblerL,primal,deformed, m_dL); }
179 ThinShellAssemblerStatus assembleDualH(
const gsMatrix<T> & points,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed)
180 {
return _assembleDual(points,m_assemblerH,primal,deformed, m_dH); }
182 const gsSparseMatrix<T> & matrixL()
const {
return m_matrixL; }
183 const gsSparseMatrix<T> & matrixH()
const {
return m_matrixH; }
185 const gsSparseMatrix<T> & massL()
const {
return m_massL; }
186 const gsSparseMatrix<T> & massH()
const {
return m_massH; }
188 const gsMatrix<T> primalL()
const {
return m_pL; }
189 const gsMatrix<T> primalH()
const {
return m_pH; }
191 const gsMatrix<T> dualL()
const {
return m_dL; }
192 const gsMatrix<T> dualH()
const {
return m_dH; }
194 void updateMultiPatchL(
const gsMatrix<T> & solVector, gsMultiPatch<T> & result);
195 void updateMultiPatchH(
const gsMatrix<T> & solVector, gsMultiPatch<T> & result);
197 void constructMultiPatchL(
const gsMatrix<T> & solVector, gsMultiPatch<T> & result);
198 void constructMultiPatchH(
const gsMatrix<T> & solVector, gsMultiPatch<T> & result);
200 void constructSolutionL(
const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed);
201 void constructSolutionH(
const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed);
202 gsMultiPatch<T> constructSolutionL(
const gsMatrix<T> & solVector);
203 gsMultiPatch<T> constructSolutionH(
const gsMatrix<T> & solVector);
204 gsMultiPatch<T> constructDisplacementL(
const gsMatrix<T> & solVector);
205 gsMultiPatch<T> constructDisplacementH(
const gsMatrix<T> & solVector);
206 gsVector<T> constructSolutionVectorL(
const gsMultiPatch<T> & deformed);
207 gsVector<T> constructSolutionVectorH(
const gsMultiPatch<T> & deformed);
209 gsMatrix<T> projectL2_L(
const gsFunction<T> &fun);
210 gsMatrix<T> projectL2_H(
const gsFunction<T> &fun);
212 T deformationNorm(
const gsMultiPatch<T> & deformed,
const gsMultiPatch<T> & original)
213 {
return m_assemblerL->deformationNorm(deformed,original); }
216 T computeError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
217 std::vector<T> computeErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
218 std::vector<T> computeErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
221 T computeError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
222 std::vector<T> computeErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
223 std::vector<T> computeErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
226 T computeSquaredError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
227 std::vector<T> computeSquaredErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
228 std::vector<T> computeSquaredErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
231 T computeSquaredError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
232 std::vector<T> computeSquaredErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
233 std::vector<T> computeSquaredErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
237 T computeErrorEig(
const T evPrimalL,
const T evDualL,
const T evDualH,
238 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
239 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
240 std::vector<T> computeErrorEigElements(
const T evPrimalL,
const T evDualL,
const T evDualH,
241 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
242 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
243 std::vector<T> computeErrorEigDofs(
const T evPrimalL,
const T evDualL,
const T evDualH,
244 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
245 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
247 T computeErrorEig(
const T evPrimalL,
const T evDualL,
const T evDualH,
248 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
249 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
250 std::vector<T> computeErrorEigElements(
const T evPrimalL,
const T evDualL,
const T evDualH,
251 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
252 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
253 std::vector<T> computeErrorEigDofs(
const T evPrimalL,
const T evDualL,
const T evDualH,
254 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
255 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
257 T computeGoal(
const gsMultiPatch<T> & deformed);
258 T computeGoal(
const bContainer & bnds,
const gsMultiPatch<T> & deformed);
259 T computeGoal(
const gsMatrix<T> & points,
const gsMultiPatch<T> & deformed);
261 T matrixNorm(
const gsMultiPatch<T> &dualL,
const gsMultiPatch<T> &dualH)
const;
262 T matrixNorm(
const gsMultiPatch<T> &dualL,
const gsMultiPatch<T> &dualH,
const gsMultiPatch<T> &deformed)
const;
264 void setGoal(
enum GoalFunction GF,
short_t component = 9) { m_goalFunction = GF; m_component = component; }
269 m_assemblerL->constructStress(deformed,result,type);
272 T error()
const {
return m_error; }
273 std::vector<T> errors()
const {
return m_errors; }
274 std::vector<T> absErrors()
const
276 std::vector<T> result = m_errors;
277 for (
typename std::vector<T>::iterator it = result.begin(); it!=result.end(); it++)
282 gsDofMapper getMapperL() {
return m_assemblerL->getMapper(); };
283 gsDofMapper getMapperH() {
return m_assemblerH->getMapper(); };
287 ThinShellAssemblerStatus _assembleMass(gsThinShellAssemblerBase<T> * assembler, gsSparseMatrix<T> & result,
bool lumped =
false);
289 ThinShellAssemblerStatus _assemble(gsThinShellAssemblerBase<T> * assembler, std::pair<gsSparseMatrix<T>,gsVector<T>> & result);
292 ThinShellAssemblerStatus _assembleMatrix(gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & deformed, gsSparseMatrix<T> & result);
294 ThinShellAssemblerStatus _assemblePrimal(gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & deformed, gsVector<T> & result);
306 ThinShellAssemblerStatus _assembleDual(gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal, gsVector<T> & result)
308 gsMultiPatch<T> deformed = m_patches;
309 for (
size_t k =0; k!=primal.nPatches(); ++k)
310 deformed.patch(k).coefs() += primal.patch(k).coefs();
312 return _assembleDual(assembler,primal,deformed,result);
314 ThinShellAssemblerStatus _assembleDual(gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed, gsVector<T> & result);
327 ThinShellAssemblerStatus _assembleDual(
const bContainer & bnds, gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal, gsVector<T> & result)
329 gsMultiPatch<T> deformed = m_patches;
330 for (
size_t k =0; k!=primal.nPatches(); ++k)
331 deformed.patch(k).coefs() += primal.patch(k).coefs();
333 return _assembleDual(bnds,assembler,primal,deformed,result);
335 ThinShellAssemblerStatus _assembleDual(
const bContainer & bnds, gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed, gsVector<T> & result);
348 ThinShellAssemblerStatus _assembleDual(
const gsMatrix<T> & points, gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal, gsVector<T> & result)
350 gsMultiPatch<T> deformed = m_patches;
351 for (
size_t k =0; k!=primal.nPatches(); ++k)
352 deformed.patch(k).coefs() += primal.patch(k).coefs();
354 return _assembleDual(points,assembler,primal,deformed,result);
356 ThinShellAssemblerStatus _assembleDual(
const gsMatrix<T> & points, gsThinShellAssemblerBase<T> * assembler,
const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed, gsVector<T> & result);
358 template<
int _elWise>
359 void computeError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads,
360 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
362 template<
int _d,
bool _bending,
int _elWise>
363 typename std::enable_if<(_d==3) && _bending, void>::type
364 computeError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads,
365 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
367 template<
int _d,
bool _bending,
int _elWise>
368 typename std::enable_if<!(_d==3 && _bending), void>::type
369 computeError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads,
370 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
372 template<
int _elWise>
373 void computeSquaredError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads,
374 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
376 template<
int _d,
bool _bending,
int _elWise>
377 typename std::enable_if<(_d==3) && _bending, void>::type
378 computeSquaredError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads,
379 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
381 template<
int _d,
bool _bending,
int _elWise>
382 typename std::enable_if<!(_d==3 && _bending), void>::type
383 computeSquaredError_impl(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads,
384 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
387 template<
int _elWise>
388 void computeErrorEig_impl(
const T evPrimalL,
const T evDualL,
const T evDualH,
389 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
390 const gsMultiPatch<T> & primal,
391 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
393 template<
int _elWise>
394 void computeErrorEig_impl(
const T evPrimalL,
const T evDualL,
const T evDualH,
395 const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
396 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,
397 std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false);
399 void _applyLoadsToElWiseError(
const gsMultiPatch<T> &dualL,
const gsMultiPatch<T> &dualH, std::vector<T> & errors)
const;
400 void _applyLoadsToError(
const gsMultiPatch<T> &dualL,
const gsMultiPatch<T> &dualH, T & error)
const;
404 mutable gsThinShellAssemblerBase<T> * m_assemblerL;
405 mutable gsThinShellAssemblerBase<T> * m_assemblerH;
407 gsVector<T> m_pL, m_pH, m_dL, m_dH;
408 gsSparseMatrix<T> m_matrixL;
409 gsSparseMatrix<T> m_matrixH;
410 gsSparseMatrix<T> m_massL;
411 gsSparseMatrix<T> m_massH;
413 gsPointLoads<T> m_pLoads;
416 std::vector<T> m_errors;
418 typedef gsExprAssembler<>::geometryMap geometryMap;
419 typedef gsExprAssembler<>::space space;
420 typedef gsExprAssembler<>::solution solution;
422 gsBoundaryConditions<T> m_bcs;
426 using Base::m_patches;
428 using Base::m_materialMatrices;
429 using Base::m_forceFun;
430 using Base::m_options;
431 using Base::m_foundFun;
432 using Base::m_foundInd;
433 using Base::m_pressFun;
434 using Base::m_pressInd;
436 enum GoalFunction m_goalFunction;
440 #ifdef GISMO_WITH_PYBIND11
445 void pybind11_init_gsThinShellAssemblerDWR2(pybind11::module &m);
446 void pybind11_init_gsThinShellAssemblerDWR3(pybind11::module &m);
447 void pybind11_init_gsThinShellAssemblerDWR3nb(pybind11::module &m);
449 #endif // GISMO_WITH_PYBIND11
459 class gsThinShellAssemblerDWRBase
462 typedef gsBoxTopology::bContainer bContainer;
476 virtual void setFoundation(
const gsFunction<T> & foundation) =0;
486 virtual void homogenizeDirichlet() =0;
488 virtual index_t numDofsL()
const =0;
489 virtual index_t numDofsH()
const =0;
561 virtual T computeError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
562 virtual std::vector<T> computeErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
563 virtual std::vector<T> computeErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
566 virtual T computeError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
567 virtual std::vector<T> computeErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
568 virtual std::vector<T> computeErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
571 virtual T computeSquaredError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
572 virtual std::vector<T> computeSquaredErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
573 virtual std::vector<T> computeSquaredErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
576 virtual T computeSquaredError(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
577 virtual std::vector<T> computeSquaredErrorElements(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
578 virtual std::vector<T> computeSquaredErrorDofs(
const gsMultiPatch<T> & dualL,
const gsMultiPatch<T> & dualH,
const gsMultiPatch<T> & deformed,
bool withLoads=
false, std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
582 virtual T computeErrorEig(
const T evPrimalL,
const T evDualL,
const T evDualH,
584 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
585 virtual std::vector<T> computeErrorEigElements(
const T evPrimalL,
const T evDualL,
const T evDualH,
587 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
588 virtual std::vector<T> computeErrorEigDofs(
const T evPrimalL,
const T evDualL,
const T evDualH,
590 const gsMultiPatch<T> & primal,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
592 virtual T computeErrorEig(
const T evPrimalL,
const T evDualL,
const T evDualH,
594 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
595 virtual std::vector<T> computeErrorEigElements(
const T evPrimalL,
const T evDualL,
const T evDualH,
597 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
598 virtual std::vector<T> computeErrorEigDofs(
const T evPrimalL,
const T evDualL,
const T evDualH,
600 const gsMultiPatch<T> & primal,
const gsMultiPatch<T> & deformed,std::string filename = std::string(),
unsigned np=1000,
bool parametric=
false,
bool mesh=
false) = 0;
603 virtual T computeGoal(
const bContainer & bnds,
const gsMultiPatch<T> & deformed) =0;
609 virtual void setGoal(
enum GoalFunction GF,
short_t component = 9) = 0;
616 virtual T error()
const =0;
617 virtual std::vector<T> errors()
const =0;
618 virtual std::vector<T> absErrors()
const =0;
626 #ifdef GISMO_WITH_PYBIND11
631 void pybind11_init_gsThinShellAssemblerDWRBase(pybind11::module &m);
633 #endif // GISMO_WITH_PYBIND11
643 #ifndef GISMO_BUILD_LIB
644 #include GISMO_HPP_HEADER(gsThinShellAssemblerDWR.hpp)
Definition: gsExprAssembler.h:30
ThinShellAssemblerStatus
Definition: gsThinShellAssembler.h:53
#define short_t
Definition: gsConfig.h:35
virtual ~gsThinShellAssemblerDWRBase()
Default empty constructor.
Definition: gsThinShellAssemblerDWR.h:465
virtual void constructStress(const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)=0
See gsThinShellAssemblerBase for details.
#define index_t
Definition: gsConfig.h:32
A function from a n-dimensional domain to an m-dimensional image.
Definition: gsFunction.h:59
Maintains a mapping from patch-local dofs to global dof indices and allows the elimination of individ...
Definition: gsDofMapper.h:68
Holds a set of patch-wise bases and their topology information.
Definition: gsMultiBasis.h:36
Assembles the system matrix and vectors for 2D and 3D shell problems, including geometric nonlinearit...
Definition: gsThinShellAssembler.h:76
Class containing a set of points on a multi-patch isogeometric domain, together with boundary conditi...
Definition: gsPointLoads.h:64
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition: gsFuncData.h:23
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition: gsMultiPatch.h:33
type
Definition: gsThinShellFunctions.h:40
Class containing a set of boundary conditions.
Definition: gsBoundaryConditions.h:341
void constructStress(const gsFunctionSet< T > &original, const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)
See gsThinShellAssemblerBase for details.
Definition: gsThinShellAssembler.hpp:2760
Provides a base class for material matrices.
EIGEN_STRONG_INLINE abs_expr< E > abs(const E &u)
Absolute value.
Definition: gsExpressions.h:4486
Class which holds a list of parameters/options, and provides easy access to them. ...
Definition: gsOptionList.h:32
A function depending on an index i, typically referring to a patch/sub-domain. On each patch a differ...
Definition: gsPiecewiseFunction.h:28
Provides linear and nonlinear assemblers for thin shells.
Provides evaluation function for stresses.
Base class for the gsThinShellAssembler.
Definition: gsThinShellAssemblerDWR.h:51