G+Smo  25.01.0
Geometry + Simulation Modules
 
Loading...
Searching...
No Matches
gsThinShellAssembler.h
Go to the documentation of this file.
1
16#pragma once
17
21
22#include <gsPde/gsPointLoads.h>
23
26
27namespace gismo
28{
29
34{
35 enum type
36 {
37 automatic = -1, // (applies weak_penalty when needed, strong_Dpatch elsewhere)
38 weak_penalty = 0,
39 weak_nitsche = 1,
40 strong_C0 = 2,
41 strong_Dpatch = 3,
42 strong_ASG1 = 4,
43 };
44
45 enum continuity
46 {
47 Cminus1 = -1,
48 C0 = 0,
49 C1 = 1,
50 };
51};
52
59
60
61template<class T> class gsThinShellAssemblerBase;
75template <short_t d, class T, bool bending>
77{
78public:
79 typedef gsBoxTopology::ifContainer ifContainer;
80
81public:
82
93 const gsMultiBasis<T> & basis,
94 const gsBoundaryConditions<T> & bconditions,
95 const gsFunctionSet<T> & surface_force,
96 const gsMaterialMatrixContainer<T> & materialmatrices);
97
108 const gsMultiBasis<T> & basis,
109 const gsBoundaryConditions<T> & bconditions,
110 const gsFunctionSet<T> & surface_force,
111 gsMaterialMatrixBase<T> * materialmatrix);
113 const gsMultiBasis<T> & basis,
114 const gsBoundaryConditions<T> & bconditions,
115 const gsFunctionSet<T> & surface_force,
116 typename gsMaterialMatrixBase<T>::uPtr & materialmatrix);
117
127 // gsThinShellAssembler(const gsMultiPatch<T> & patches,
128 // const gsMultiBasis<T> & basis,
129 // const gsBoundaryConditions<T> & bconditions,
130 // const gsFunction<T> & surface_force,
131 // const gsPiecewiseFunction<T> & materialmatrices);
132
135
138 {
139 operator=(other);
140 }
141
144 {
145 operator=(give(other));
146 }
147
150
153
155 gsOptionList & options() {return m_options;}
156
158 gsExprAssembler<T> assembler() {return m_assembler; }
159
162
163 //--------------------- PROBLEM FORMULATION-------------------------------//
165 void setPointLoads(const gsPointLoads<T> & pLoads){ m_pLoads = pLoads; }
166 const gsPointLoads<T> & getPointLoads(){ return m_pLoads; }
167 void setPointMass(const gsPointLoads<T> & pMass){ m_pMass = pMass; }
168 const gsPointLoads<T> & getPointMass(){ return m_pMass; }
169
171 void setFoundation(const gsFunction<T> & foundation) { m_foundFun = &foundation; m_foundInd = true; }
172
174 void setPressure(const gsFunction<T> & pressure) { m_pressFun = &pressure; m_pressInd = true; }
175
177 void updateBCs(const gsBoundaryConditions<T> & bconditions)
178 {
179 m_bcs = bconditions;
180 space m_space = m_assembler.trialSpace(0);
181 this->_assembleDirichlet();
182
183 m_ddofs = m_space.fixedPart();
184 m_mapper = m_space.mapper();
185 }
186
188 void homogenizeDirichlet();
189
191 index_t numDofs() const {return m_assembler.numDofs();}
192
194 ThinShellAssemblerStatus status() const { return m_status; }
195
197 //--------------------- SYSTEM ASSEMBLY ----------------------------------//
199
202
204 const gsFunctionSet<T> & getSpaceBasis() { return *m_spaceBasis; }
205
207 gsDofMapper getMapper() const { return m_mapper; } ;
208
209private:
211 template<short_t _d, bool _bending>
212 typename std::enable_if<(_d==3) && _bending, ThinShellAssemblerStatus>::type assemble_impl();
213
215 template<short_t _d, bool _bending>
216 typename std::enable_if<!(_d==3 && _bending), ThinShellAssemblerStatus>::type assemble_impl();
217
218public:
220 ThinShellAssemblerStatus assembleMass(const bool lumped = false);
221
224
226 ThinShellAssemblerStatus assemble(const gsFunctionSet<T> & deformed, const bool matrix = true, const bool homogenize = true);
227
229 ThinShellAssemblerStatus assemble(const gsMatrix<T> & solVector, const bool matrix = true, const bool homogenize = true);
230
233
236
238 ThinShellAssemblerStatus assembleMatrix(const gsFunctionSet<T> & deformed, const gsFunctionSet<T> & previous, gsMatrix<T> & update);
239
241 ThinShellAssemblerStatus assembleMatrix(const gsMatrix<T> & solVector, const gsMatrix<T> & prevVector);
242
245
248
251
253 ThinShellAssemblerStatus assemblePressureMatrix(const T pressure, const gsFunctionSet<T> & deformed);
254
255private:
257 template<short_t _d, bool _bending>
258 typename std::enable_if<(_d==3) && _bending, ThinShellAssemblerStatus>::type
259 assembleMatrix_impl(const gsFunctionSet<T> & deformed );
260
262 template<short_t _d, bool _bending>
263 typename std::enable_if<!(_d==3 && _bending), ThinShellAssemblerStatus>::type
265
267 template<short_t _d, bool _bending>
268 typename std::enable_if<(_d==3) && _bending, ThinShellAssemblerStatus>::type
269 assembleMatrix_impl(const gsFunctionSet<T> & deformed, const gsFunctionSet<T> & previous, gsMatrix<T> & update);
270
272 template<short_t _d, bool _bending>
273 typename std::enable_if<!(_d==3 && _bending), ThinShellAssemblerStatus>::type
274 assembleMatrix_impl(const gsFunctionSet<T> & /*deformed*/, const gsFunctionSet<T> & /*previous*/, gsMatrix<T> & /*update*/)
276
277public:
279 ThinShellAssemblerStatus assembleVector(const gsFunctionSet<T> & deformed, const bool homogenize = true);
280
282 ThinShellAssemblerStatus assembleVector(const gsMatrix<T> & solVector, const bool homogenize = true);
283
286
289
292
294 ThinShellAssemblerStatus assemblePressureVector(const T pressure, const gsFunctionSet<T> & deformed);
295
298
301
304
305private:
307 template<short_t _d, bool _bending>
308 typename std::enable_if<(_d==3) && _bending, ThinShellAssemblerStatus>::type
309 assembleVector_impl(const gsFunctionSet<T> & deformed, const bool homogenize);
310
312 template<short_t _d, bool _bending>
313 typename std::enable_if<!(_d==3 && _bending), ThinShellAssemblerStatus>::type
314 assembleVector_impl(const gsFunctionSet<T> & deformed, const bool homogenize);
315
316public:
318 gsMatrix<T> boundaryForce(const gsFunctionSet<T> & deformed, const std::vector<patchSide> & patchSides) const;
320 gsMatrix<T> boundaryForce(const gsFunctionSet<T> & deformed, const patchSide & ps) const
321 {
322 std::vector<patchSide> patchSides(1);
323 patchSides[0] = ps;
324 return boundaryForce(deformed,patchSides);
325 }
326
327
328private:
330 template<short_t _d, bool _bending>
331 typename std::enable_if<(_d==3) && _bending, gsMatrix<T> >::type
332 boundaryForce_impl(const gsFunctionSet<T> & deformed, const std::vector<patchSide> & patchSides) const;
333
335 template<short_t _d, bool _bending>
336 typename std::enable_if<!(_d==3 && _bending), gsMatrix<T> >::type
337 boundaryForce_impl(const gsFunctionSet<T> & deformed, const std::vector<patchSide> & patchSides) const;
338
339public:
340
341 //--------------------- GEOMETRY ACCESS --------------------------------//
343 const gsMultiPatch<T> & geometry() const {return m_patches;}
344 gsMultiPatch<T> & geometry() {return m_patches;}
345 void setGeometry(const gsMultiPatch<T> & patches)
346 {
347 this->_getOptions();
348 m_patches = patches;
349 this->_initialize();
350 }
351
353 void setUndeformed(const gsMultiPatch<T> & patches)
354 {
355 this->setGeometry(patches);
356 }
357
358 //--------------------- BASIS ACCESS --------------------------------//
360 const gsMultiBasis<T> & basis() const {return m_basis;}
361 const gsMultiBasis<T> & getBasis() const { return this->basis(); }
362
363 gsMultiBasis<T> & basis() {return m_basis;}
364 gsMultiBasis<T> & getBasis() { return this->basis(); }
365
367 {
368 m_basis = basis;
369 this->_getOptions();
370 this->_initialize();
371 }
372
374 void setSpaceBasis(const gsFunctionSet<T> & spaceBasis)
375 {
376 m_spaceBasis = &spaceBasis;
377 this->_getOptions();
378 this->_initialize();
379 }
380
381 // / See \ref gsThinShellAssemblerBase for details
382 // const gsFunctionSet<T> & defGeometry() const {return *m_defpatches;}
383
386
388 T getDisplacementNorm(const gsFunctionSet<T> & deformed);
389
391 T getElasticEnergy(const gsFunctionSet<T> & deformed);
392
393 //--------------------- MATERIAL ACCESS --------------------------------//
394 gsMaterialMatrixContainer<T> materials() const {return m_materialMatrices;}
395 gsMaterialMatrixBase<T> * material(const index_t p) const {return m_materialMatrices.piece(p);}
396
397 //--------------------- SYSTEM ACCESS ----------------------------------//
398 const gsSparseMatrix<T> & matrix() const {return m_assembler.matrix();}
399 gsSparseMatrix<T> & massMatrix() {return m_mass;}
400
401 const gsMatrix<T> & rhs() const {return m_rhs.size()==0 ? m_assembler.rhs() : m_rhs;}
402 // const gsMatrix<T> & rhs() const {return m_assembler.rhs();}
403
404 //--------------------- INTERFACE HANDLING -----------------------------//
405 void addStrongC0(const gsBoxTopology::ifContainer & interfaces);
406 void addStrongC1(const gsBoxTopology::ifContainer & interfaces);
407 void addWeakC0(const gsBoxTopology::ifContainer & interfaces);
408 void addWeakC1(const gsBoxTopology::ifContainer & interfaces);
409 void addUncoupled(const gsBoxTopology::ifContainer & interfaces);
410 void initInterfaces();
411
412 //--------------------- SOLUTION CONSTRUCTION --------------------------//
413 gsMultiPatch<T> constructMultiPatch(const gsMatrix<T> & solVector) const;
414 void updateMultiPatch(const gsMatrix<T> & solVector, gsMultiPatch<T> & mp) const;
415
417protected:
418 gsMultiPatch<T> _constructSolution(const gsMatrix<T> & solVector, const gsMultiPatch<T> & undeformed) const;
419public:
420 // gsMultiPatch<T> constructSolution(const gsMatrix<T> & solVector, const gsMultiPatch<T> & undeformed) const;
421 gsMultiPatch<T> constructSolution(const gsMatrix<T> & solVector) const;
422
424 void constructSolution(const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed) const;
425
427 gsMultiPatch<T> constructDisplacement(const gsMatrix<T> & solVector) const;
428
430 gsMatrix<T> fullSolutionVector(const gsMatrix<T> & vector) const;
431
433 void constructDisplacement(const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed) const;
434
437
438 //--------------------- SPECIALS ----------------------------------//
440 void constructStress( const gsFunctionSet<T> & deformed,
441 gsPiecewiseFunction<T> & result,
442 stress_type::type type);
443
445 void constructStress( const gsFunctionSet<T> & original,
446 const gsFunctionSet<T> & deformed,
447 gsPiecewiseFunction<T> & result,
448 stress_type::type type);
449
451 gsMatrix<T> computePrincipalStretches(const gsMatrix<T> & points, const gsFunctionSet<T> & deformed, const T z=0);
452
454 gsMatrix<T> computePrincipalStresses(const gsMatrix<T> & points, const gsFunctionSet<T> & deformed, const T z=0);
455
457 void projectL2_into(const gsFunction<T> &fun, gsMatrix<T> & result);
458
460 void projectL2_into(const gsFunction<T> &fun, gsMultiPatch<T> & result);
461
464
466 void plotSolution(std::string string, const gsMatrix<T> & solVector);
467
469 T deformationNorm(const gsMultiPatch<T> & deformed, const gsMultiPatch<T> & original);
470
472 gsDofMapper getMapper() { return m_mapper; };
473
476 { return interfaceErrorC0(deformed,m_patches.interfaces()); }
477 T interfaceErrorC0(const gsFunctionSet<T> & deformed, const ifContainer & iFaces);
478
481 { return interfaceErrorG1(deformed,m_patches.interfaces()); }
482 T interfaceErrorG1(const gsFunctionSet<T> & deformed, const ifContainer & iFaces);
483
486 { return interfaceErrorNormal(deformed,m_patches.interfaces()); }
487 T interfaceErrorNormal(const gsFunctionSet<T> & deformed, const ifContainer & iFaces);
488
491 { return interfaceErrorGaussCurvature(deformed,m_patches.interfaces()); }
492 T interfaceErrorGaussCurvature(const gsFunctionSet<T> & deformed, const ifContainer & iFaces);
493
496 { return interfaceErrorMeanCurvature(deformed,m_patches.interfaces()); }
497 T interfaceErrorMeanCurvature(const gsFunctionSet<T> & deformed, const ifContainer & iFaces);
498
499protected:
501 void _initialize();
502 void _defaultOptions();
503 void _getOptions();
504
505 void _assembleNeumann();
506
507 template <bool _matrix>
508 void _assemblePressure(const gsFunction<T> & pressFun);
509 template <bool _matrix>
510 void _assemblePressure(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed);
511
512 template <bool _matrix>
513 void _assembleFoundation(const gsFunction<T> & foundFun);
514 template <bool _matrix>
515 void _assembleFoundation(const gsFunction<T> & foundFun, const gsFunctionSet<T> & deformed);
516
517 template <bool _matrix>
518 void _assembleWeakBCs();
519 template <bool _matrix>
520 void _assembleWeakBCs(const gsFunctionSet<T> & deformed);
521
522 template <bool _matrix>
523 void _assembleWeakIfc();
524 template <bool _matrix>
525 void _assembleWeakIfc(const gsFunctionSet<T> & deformed);
526
527 void _assembleDirichlet();
528
529 void _applyLoads();
530 void _applyMass();
531
532 void _ifcTest(const T tol = 1e-2);
533 bool _isInPlane(const boundaryInterface & ifc, const T tol = 1e-2);
534
535private:
536 template<short_t _d>
537 typename std::enable_if<(_d==3), void>::type
538 _assembleNeumann_impl();
539
540 template<short_t _d>
541 typename std::enable_if<!(_d==3), void>::type
542 _assembleNeumann_impl();
543
544 template<short_t _d, bool _matrix>
545 typename std::enable_if<(_d==3) && _matrix, void>::type
546 _assemblePressure_impl(const gsFunction<T> & pressFun);
547
548 template<short_t _d, bool _matrix>
549 typename std::enable_if<(_d==3) && !_matrix, void>::type
550 _assemblePressure_impl(const gsFunction<T> & pressFun);
551
552 template<short_t _d, bool _matrix>
553 typename std::enable_if<!(_d==3), void>::type
554 _assemblePressure_impl(const gsFunction<T> & pressFun);
555
556 template<short_t _d, bool _matrix>
557 typename std::enable_if<(_d==3) && _matrix, void>::type
558 _assemblePressure_impl(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed);
559
560 template<short_t _d, bool _matrix>
561 typename std::enable_if<(_d==3) && !_matrix, void>::type
562 _assemblePressure_impl(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed);
563
564 template<short_t _d, bool _matrix>
565 typename std::enable_if<!(_d==3), void>::type
566 _assemblePressure_impl(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed);
567
568 template<short_t _d, bool _matrix>
569 typename std::enable_if<(_d==3) && _matrix, void>::type
570 _assembleFoundation_impl(const gsFunction<T> & foundFun);
571
572 template<short_t _d, bool _matrix>
573 typename std::enable_if<(_d==3) && !_matrix, void>::type
574 _assembleFoundation_impl(const gsFunction<T> & foundFun);
575
576 template<short_t _d, bool _matrix>
577 typename std::enable_if<!(_d==3), void>::type
578 _assembleFoundation_impl(const gsFunction<T> & foundFun);
579
580 template<short_t _d, bool _matrix>
581 typename std::enable_if<(_d==3) && _matrix, void>::type
582 _assembleFoundation_impl(const gsFunction<T> & foundFun, const gsFunctionSet<T> & deformed);
583
584 template<short_t _d, bool _matrix>
585 typename std::enable_if<(_d==3) && !_matrix, void>::type
586 _assembleFoundation_impl(const gsFunction<T> & foundFun, const gsFunctionSet<T> & deformed);
587
588 template<short_t _d, bool _matrix>
589 typename std::enable_if<!(_d==3), void>::type
590 _assembleFoundation_impl(const gsFunction<T> & foundFun, const gsFunctionSet<T> & deformed);
591
592 template<short_t _d, bool _matrix>
593 typename std::enable_if<(_d==3) && _matrix, void>::type
594 _assembleWeakBCs_impl();
595
596 template<short_t _d, bool _matrix>
597 typename std::enable_if<(_d==3) && !_matrix, void>::type
598 _assembleWeakBCs_impl();
599
600 template<short_t _d, bool _matrix>
601 typename std::enable_if<!(_d==3) && _matrix, void>::type
602 _assembleWeakBCs_impl();
603
604 template<short_t _d, bool _matrix>
605 typename std::enable_if<!(_d==3) && !_matrix, void>::type
606 _assembleWeakBCs_impl();
607
608 template<short_t _d, bool _matrix>
609 typename std::enable_if<(_d==3) && _matrix, void>::type
610 _assembleWeakBCs_impl(const gsFunctionSet<T> & deformed);
611
612 template<short_t _d, bool _matrix>
613 typename std::enable_if<(_d==3) && !_matrix, void>::type
614 _assembleWeakBCs_impl(const gsFunctionSet<T> & deformed);
615
616 template<short_t _d, bool _matrix>
617 typename std::enable_if<!(_d==3) && _matrix, void>::type
618 _assembleWeakBCs_impl(const gsFunctionSet<T> & deformed);
619
620 template<short_t _d, bool _matrix>
621 typename std::enable_if<!(_d==3) && !_matrix, void>::type
622 _assembleWeakBCs_impl(const gsFunctionSet<T> & deformed);
623
624 template<short_t _d, bool _matrix>
625 typename std::enable_if<(_d==3) && _matrix, void>::type
626 _assembleWeakIfc_impl();
627
628 template<short_t _d, bool _matrix>
629 typename std::enable_if<(_d==3) && !_matrix, void>::type
630 _assembleWeakIfc_impl();
631
632 template<short_t _d, bool _matrix>
633 typename std::enable_if<!(_d==3) && _matrix, void>::type
634 _assembleWeakIfc_impl();
635
636 template<short_t _d, bool _matrix>
637 typename std::enable_if<!(_d==3) && !_matrix, void>::type
638 _assembleWeakIfc_impl();
639
640 template<short_t _d, bool _matrix>
641 typename std::enable_if<(_d==3) && _matrix, void>::type
642 _assembleWeakIfc_impl(const gsFunctionSet<T> & deformed);
643
644 template<short_t _d, bool _matrix>
645 typename std::enable_if<(_d==3) && !_matrix, void>::type
646 _assembleWeakIfc_impl(const gsFunctionSet<T> & deformed);
647
648 template<short_t _d, bool _matrix>
649 typename std::enable_if<!(_d==3) && _matrix, void>::type
650 _assembleWeakIfc_impl(const gsFunctionSet<T> & deformed);
651
652 template<short_t _d, bool _matrix>
653 typename std::enable_if<!(_d==3) && !_matrix, void>::type
654 _assembleWeakIfc_impl(const gsFunctionSet<T> & deformed);
655
656protected:
657 typedef gsExprAssembler<>::geometryMap geometryMap;
658 typedef gsExprAssembler<>::space space;
659 typedef gsExprAssembler<>::solution solution;
660 typedef gsExprAssembler<>::element element;
661
662 gsDofMapper m_mapper;
663
664 gsExprAssembler<> m_assembler;
665 gsExprEvaluator<> m_evaluator;
666
667 gsMultiPatch<T> m_patches;
668 // const gsFunctionSet<T> * m_defpatches;
669 const gsFunctionSet<T> * m_itpatches;
670 mutable gsMultiBasis<T> m_basis;
671 const gsFunctionSet<T> * m_spaceBasis;
673
674 mutable gsMatrix<T> m_ddofs;
675
676 gsSparseMatrix<T> m_mass;
677
678 const gsFunctionSet<T> * m_forceFun;
679 bool m_parametricForce;
680 const gsFunction<T> * m_foundFun;
681 const gsFunction<T> * m_pressFun;
682
683 gsMaterialMatrixContainer<T> m_materialMatrices;
684
685 gsPointLoads<T> m_pLoads, m_pMass;
686
687 mutable gsMatrix<T> m_solvector;
688
689 gsMatrix<T> m_rhs;
690
691 mutable gsOptionList m_options;
692
693 mutable bool m_foundInd;
694 mutable bool m_pressInd;
695
696 mutable index_t m_continuity;
697
698 mutable T m_alpha_d_bc,m_alpha_r_bc,m_alpha_d_ifc,m_alpha_r_ifc;
699 mutable index_t m_IfcDefault;
700
701 mutable ifContainer m_inPlane, m_outPlane, m_uncoupled, m_strongC0, m_weakC0, m_strongC1, m_weakC1, m_unassigned;
702
703 mutable ThinShellAssemblerStatus m_status;
704};
705
706#ifdef GISMO_WITH_PYBIND11
707
711 void pybind11_init_gsThinShellAssembler2(pybind11::module &m);
712 void pybind11_init_gsThinShellAssembler3(pybind11::module &m);
713 void pybind11_init_gsThinShellAssembler3nb(pybind11::module &m);
714
715#endif // GISMO_WITH_PYBIND11
716
724template <class T>
726{
727public:
729 typedef gsBoxTopology::ifContainer ifContainer;
730
731public:
732
735
738
740 virtual gsOptionList & options() = 0;
741
744
746 virtual void setOptions(gsOptionList & options) = 0;
747
749 virtual void setPointLoads(const gsPointLoads<T> & pLoads) = 0;
751 virtual const gsPointLoads<T> & getPointLoads() = 0;
753 virtual void setPointMass(const gsPointLoads<T> & pLoads) = 0;
755 virtual const gsPointLoads<T> & getPointMass() = 0;
756
762 virtual void setFoundation(const gsFunction<T> & foundation) = 0;
763
771 virtual void setPressure(const gsFunction<T> & pressure) = 0;
772
778 virtual void updateBCs(const gsBoundaryConditions<T> & bconditions) = 0;
779
785 virtual void setBasis(const gsMultiBasis<T> & basis) = 0;
786
791 virtual const gsMultiBasis<T> & getBasis() = 0;
792
798 virtual void setUndeformed(const gsMultiPatch<T> & patches) = 0;
799
801 virtual void homogenizeDirichlet() = 0;
802
804 virtual index_t numDofs() const = 0;
805
807 virtual ThinShellAssemblerStatus status() const = 0;
808
811
813 virtual void setSpaceBasis(const gsFunctionSet<T> & spaceBasis) = 0;
814
816 virtual const gsFunctionSet<T> & getSpaceBasis() = 0;
817 // virtual const gsMultiBasis<T> & getSpaceBasis() = 0;
818
820 virtual ThinShellAssemblerStatus assembleMass(const bool lumped = false) = 0;
821
824
833 virtual ThinShellAssemblerStatus assemble(const gsFunctionSet<T> & deformed, const bool matrix = true, const bool homogenize = true) = 0;
834
843 virtual ThinShellAssemblerStatus assemble(const gsMatrix<T> & solVector, const bool matrix = true, const bool homogenize = true) = 0;
844
851
857 virtual ThinShellAssemblerStatus assembleMatrix(const gsMatrix<T> & solVector ) = 0;
858
872 virtual ThinShellAssemblerStatus assembleMatrix(const gsFunctionSet<T> & deformed, const gsFunctionSet<T> & previous, gsMatrix<T> & update) = 0;
873
886 virtual ThinShellAssemblerStatus assembleMatrix(const gsMatrix<T> & solVector, const gsMatrix<T> & prevVector) = 0;
887
893 virtual ThinShellAssemblerStatus assembleVector(const gsFunctionSet<T> & deformed, const bool homogenize = true) = 0;
894
900 virtual ThinShellAssemblerStatus assembleVector(const gsMatrix<T> & solVector, const bool homogenize = true) = 0;
901
908
915
922 virtual ThinShellAssemblerStatus assemblePressureMatrix(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed) = 0;
923
930 virtual ThinShellAssemblerStatus assemblePressureMatrix(const T pressure, const gsFunctionSet<T> & deformed) = 0;
931
938
945
952 virtual ThinShellAssemblerStatus assemblePressureVector(const gsFunction<T> & pressFun, const gsFunctionSet<T> & deformed) = 0;
953
960 virtual ThinShellAssemblerStatus assemblePressureVector(const T pressure, const gsFunctionSet<T> & deformed) = 0;
961
973 virtual gsMatrix<T> boundaryForce(const gsFunctionSet<T> & deformed , const std::vector<patchSide>& patchSides) const = 0;
974 virtual gsMatrix<T> boundaryForce(const gsFunctionSet<T> & deformed , const patchSide & ps) const = 0;
975
977 virtual const gsMultiPatch<T> & geometry() const = 0;
978 virtual gsMultiPatch<T> & geometry() = 0;
979
981 virtual const gsMultiBasis<T> & basis() const = 0;
982 virtual gsMultiBasis<T> & basis() = 0;
983
984 virtual void setGeometry(const gsMultiPatch<T> & patches) = 0;
985
986 // /// Returns the deformed geometry
987 // virtual const gsFunctionSet<T> & defGeometry() const = 0;
988
992 virtual gsMaterialMatrixBase<T> * material(const index_t p) const = 0;
993
995 virtual T getArea(const gsFunctionSet<T> & geometry) = 0;
996
998 virtual T getDisplacementNorm(const gsFunctionSet<T> & deformed) = 0;
999
1001 virtual T getElasticEnergy(const gsFunctionSet<T> & deformed) = 0;
1002
1004 virtual const gsSparseMatrix<T> & matrix() const = 0;
1005
1008
1010 virtual const gsMatrix<T> & rhs() const = 0;
1011
1012 //--------------------- INTERFACE HANDLING -----------------------------//
1013 virtual void addStrongC0(const gsBoxTopology::ifContainer & interfaces) = 0;
1014 virtual void addStrongC1(const gsBoxTopology::ifContainer & interfaces) = 0;
1015 virtual void addWeakC0(const gsBoxTopology::ifContainer & interfaces) = 0;
1016 virtual void addWeakC1(const gsBoxTopology::ifContainer & interfaces) = 0;
1017 virtual void addUncoupled(const gsBoxTopology::ifContainer & interfaces) = 0;
1018 virtual void initInterfaces() = 0;
1019
1021 virtual gsMultiPatch<T> constructMultiPatch(const gsMatrix<T> & solVector) const = 0;
1022 virtual void updateMultiPatch(const gsMatrix<T> & solVector, gsMultiPatch<T> & mp) const =0;
1023
1025 virtual gsMultiPatch<T> constructSolution(const gsMatrix<T> & solVector) const = 0;
1026
1028 virtual void constructSolution(const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed) const = 0;
1029
1031 virtual gsMultiPatch<T> constructDisplacement(const gsMatrix<T> & solVector) const = 0;
1032
1034 virtual void constructDisplacement(const gsMatrix<T> & solVector, gsMultiPatch<T> & deformed) const = 0;
1035
1037 virtual gsMatrix<T> fullSolutionVector(const gsMatrix<T> & vector) const = 0;
1038
1040 virtual gsVector<T> constructSolutionVector(const gsMultiPatch<T> & deformed) const = 0;
1041
1043 virtual void constructStress(const gsFunctionSet<T> & deformed,gsPiecewiseFunction<T> & result,stress_type::type type) = 0;
1044
1046 virtual gsMatrix<T> computePrincipalStretches(const gsMatrix<T> & points, const gsFunctionSet<T> & deformed, const T z=0) = 0;
1047
1049 virtual gsMatrix<T> computePrincipalStresses(const gsMatrix<T> & points, const gsFunctionSet<T> & deformed, const T z=0) = 0;
1050
1052 virtual gsDofMapper getMapper() = 0;
1053
1055 virtual T interfaceErrorC0(const gsFunctionSet<T> & deformed) = 0;
1056 virtual T interfaceErrorC0(const gsFunctionSet<T> & deformed, const ifContainer & iFaces) = 0;
1057
1059 virtual T interfaceErrorG1(const gsFunctionSet<T> & deformed) = 0;
1060 virtual T interfaceErrorG1(const gsFunctionSet<T> & deformed, const ifContainer & iFaces) = 0;
1061
1063 virtual T interfaceErrorNormal(const gsFunctionSet<T> & deformed) = 0;
1064 virtual T interfaceErrorNormal(const gsFunctionSet<T> & deformed, const ifContainer & iFaces) = 0;
1065
1067 virtual T interfaceErrorGaussCurvature(const gsFunctionSet<T> & deformed) = 0;
1068 virtual T interfaceErrorGaussCurvature(const gsFunctionSet<T> & deformed, const ifContainer & iFaces) = 0;
1069
1071 virtual T interfaceErrorMeanCurvature(const gsFunctionSet<T> & deformed) = 0;
1072 virtual T interfaceErrorMeanCurvature(const gsFunctionSet<T> & deformed, const ifContainer & iFaces) = 0;
1073
1075 virtual void projectL2_into(const gsFunction<T> &fun, gsMatrix<T> & result) = 0;
1076
1078 virtual void projectL2_into(const gsFunction<T> &fun, gsMultiPatch<T> & result) = 0;
1079
1081 virtual gsMatrix<T> projectL2(const gsFunction<T> &fun) = 0;
1082
1083 virtual void plotSolution(std::string string, const gsMatrix<T> & solVector) = 0;
1084
1085 virtual T deformationNorm(const gsMultiPatch<T> & deformed, const gsMultiPatch<T> & original) = 0;
1086
1087 virtual gsDofMapper getMapper() const = 0;
1088
1089
1090};
1091
1092#ifdef GISMO_WITH_PYBIND11
1093
1097 void pybind11_init_gsThinShellAssemblerBase(pybind11::module &m);
1098 void pybind11_enum_gsThinShellAssemblerStatus(pybind11::module &m);
1099
1100#endif // GISMO_WITH_PYBIND11
1101
1102} // namespace gismo
1103
1104
1107
1108
1109#ifndef GISMO_BUILD_LIB
1110#include GISMO_HPP_HEADER(gsThinShellAssembler.hpp)
1111#endif
Definition gsExpressions.h:973
Class containing a set of boundary conditions.
Definition gsBoundaryConditions.h:342
Maintains a mapping from patch-local dofs to global dof indices and allows the elimination of individ...
Definition gsDofMapper.h:69
Definition gsExprAssembler.h:33
space trialSpace(const index_t id) const
Definition gsExprAssembler.h:257
gsExprHelper< T >::geometryMap geometryMap
Geometry map type.
Definition gsExprAssembler.h:65
index_t numDofs() const
Returns the number of degrees of freedom (after initialization)
Definition gsExprAssembler.h:92
const gsMatrix< T > & rhs() const
Returns the right-hand side vector(s)
Definition gsExprAssembler.h:154
gsExprHelper< T >::element element
Current element.
Definition gsExprAssembler.h:64
expr::gsFeSolution< T > solution
Solution type.
Definition gsExprAssembler.h:68
const gsSparseMatrix< T > & matrix() const
Returns the left-hand global matrix.
Definition gsExprAssembler.h:127
Generic evaluator of isogeometric expressions.
Definition gsExprEvaluator.h:39
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition gsFunctionSet.h:219
A function from a n-dimensional domain to an m-dimensional image.
Definition gsFunction.h:60
This class defines the base class for material matrices.
Definition gsMaterialMatrixBase.h:33
memory::unique_ptr< gsMaterialMatrixBase > uPtr
Unique pointer for gsGeometry.
Definition gsMaterialMatrixBase.h:44
This class serves as the evaluator of material matrices, based on gsMaterialMatrixBase.
Definition gsMaterialMatrixContainer.h:34
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
Holds a set of patch-wise bases and their topology information.
Definition gsMultiBasis.h:37
Container class for a set of geometry patches and their topology, that is, the interface connections ...
Definition gsMultiPatch.h:100
Class which holds a list of parameters/options, and provides easy access to them.
Definition gsOptionList.h:33
A function depending on an index i, typically referring to a patch/sub-domain. On each patch a differ...
Definition gsPiecewiseFunction.h:29
Class containing a set of points on a multi-patch isogeometric domain, together with boundary conditi...
Definition gsPointLoads.h:65
Sparse matrix class, based on gsEigen::SparseMatrix.
Definition gsSparseMatrix.h:139
Base class for the gsThinShellAssembler.
Definition gsThinShellAssembler.h:726
virtual gsMultiPatch< T > constructDisplacement(const gsMatrix< T > &solVector) const =0
Construct displacement field from computed solution vector solVector and returns a multipatch.
virtual void projectL2_into(const gsFunction< T > &fun, gsMatrix< T > &result)=0
Projects function fun on the basis and geometry stored in the class and returns the coefficients in r...
gsThinShellAssemblerBase()
Default deconstructor.
Definition gsThinShellAssembler.h:734
virtual gsMatrix< T > fullSolutionVector(const gsMatrix< T > &vector) const =0
Reconstruct the solution vector based on the currently stored boundary conditions (thus the mapper).
virtual gsVector< T > constructSolutionVector(const gsMultiPatch< T > &deformed) const =0
Reconstruct the solution vector based on the currently stored boundary conditions (thus the mapper).
virtual ThinShellAssemblerStatus assemblePressureMatrix(const gsFunction< T > &pressFun, const gsFunctionSet< T > &deformed)=0
Assembles the pressure contribution in the system matrix (non-linear)
virtual gsMultiPatch< T > constructMultiPatch(const gsMatrix< T > &solVector) const =0
Construct solution field from computed solution vector solVector and returns a multipatch.
gsBoxTopology::ifContainer ifContainer
Default deconstructor.
Definition gsThinShellAssembler.h:729
virtual gsMaterialMatrixContainer< T > materials() const =0
Returns the material matrices used in the class.
virtual T getElasticEnergy(const gsFunctionSet< T > &deformed)=0
Returns the elastic energy norm, i.e. norm = 0.5 * u'*F_int.
virtual ThinShellAssemblerStatus assembleMatrix(const gsFunctionSet< T > &deformed)=0
Assembles the tangential stiffness matrix (nonlinear)
virtual T getDisplacementNorm(const gsFunctionSet< T > &deformed)=0
Returns the displacement norm, i.e. norm = sqrt(u'*u/area)
virtual void setSpaceBasis(const gsFunctionSet< T > &spaceBasis)=0
Set the basis that is used for assembly (but not for quadrature!)
virtual gsMatrix< T > computePrincipalStresses(const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)=0
Compute the principal stretches in points given a deformed geometry. Optionally, the stretches can be...
virtual ThinShellAssemblerStatus assemble()=0
Assembles the linear system and corresponding right-hand side.
virtual ThinShellAssemblerStatus status() const =0
Returns the assembler status.
virtual T getArea(const gsFunctionSet< T > &geometry)=0
Returns the area of geometry.
virtual ThinShellAssemblerStatus assemblePressureVector(const gsFunction< T > &pressFun)=0
Assembles the pressure contribution in the system vector (linear)
virtual void setPointLoads(const gsPointLoads< T > &pLoads)=0
Registers a gsPointLoads object for point loads acting on the shell.
virtual ThinShellAssemblerStatus assemblePressureVector(const T pressure, const gsFunctionSet< T > &deformed)=0
Assembles the pressure contribution in the system vector (non-linear)
virtual void projectL2_into(const gsFunction< T > &fun, gsMultiPatch< T > &result)=0
Projects function fun on the basis and geometry stored in the class and returns a multipatch in resul...
virtual ThinShellAssemblerStatus assemblePressureMatrix(const T pressure)=0
Assembles the pressure contribution in the system matrix (linear)
virtual void updateBCs(const gsBoundaryConditions< T > &bconditions)=0
Overwrites the boundary conditions.
virtual T interfaceErrorG1(const gsFunctionSet< T > &deformed)=0
Returns the G1 error over the interface.
virtual ThinShellAssemblerStatus assembleMatrix(const gsMatrix< T > &solVector)=0
Assembles the tangential stiffness matrix (nonlinear)
virtual const gsPointLoads< T > & getPointMass()=0
Gets the registered point masses.
virtual const gsMatrix< T > & rhs() const =0
Returns a reference to the right-hand side vector that is assembled.
virtual void constructDisplacement(const gsMatrix< T > &solVector, gsMultiPatch< T > &deformed) const =0
Construct displacement field from computed solution vector solVector and returns the result in deform...
virtual T interfaceErrorNormal(const gsFunctionSet< T > &deformed)=0
Returns the normal vector error over the interface.
virtual ThinShellAssemblerStatus assembleMass(const bool lumped=false)=0
Assembles the mass matrix (including density and thickness!); if lumped=true, a lumped mass matrix wi...
virtual const gsMultiBasis< T > & getBasis()=0
Gets the basis.
virtual const gsSparseMatrix< T > & matrix() const =0
Returns a reference to the system matrix that is assembled.
virtual gsSparseMatrix< T > & massMatrix()=0
Returns a reference to the mass matrix that is assembled.
virtual ThinShellAssemblerStatus assemblePressureVector(const T pressure)=0
Assembles the pressure contribution in the system vector (linear)
virtual ~gsThinShellAssemblerBase()
Default empty constructor.
Definition gsThinShellAssembler.h:737
virtual ThinShellAssemblerStatus assembleVector(const gsFunctionSet< T > &deformed, const bool homogenize=true)=0
Assembles the residual vector.
virtual const gsMultiPatch< T > & geometry() const =0
Returns the undeformed geometry.
virtual void setOptions(gsOptionList &options)=0
Sets the options of the assembler.
virtual const gsFunctionSet< T > & getSpaceBasis()=0
Get the basis that is used for assembly (but not for quadrature!)
virtual void setUndeformed(const gsMultiPatch< T > &patches)=0
Overwrites the undeformed geometry.
virtual void setBasis(const gsMultiBasis< T > &basis)=0
Overwrites the basis.
virtual gsExprAssembler< T > assembler()=0
Returns the internal expression assembler.
virtual gsMatrix< T > computePrincipalStretches(const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)=0
Compute the principal stretches in points given a deformed geometry. Optionally, the stretches can be...
virtual ThinShellAssemblerStatus assemble(const gsFunctionSet< T > &deformed, const bool matrix=true, const bool homogenize=true)=0
Assembles the tangential stiffness matrix and the residual for an iteration of Newton's method.
virtual T interfaceErrorMeanCurvature(const gsFunctionSet< T > &deformed)=0
Returns the mean curvature error over the interface.
virtual T interfaceErrorC0(const gsFunctionSet< T > &deformed)=0
Returns the C1 error over the interface.
virtual gsMatrix< T > boundaryForce(const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const =0
Computes the force on a set of boundaries.
virtual ThinShellAssemblerStatus assembleVector(const gsMatrix< T > &solVector, const bool homogenize=true)=0
Assembles the residual vector.
virtual ThinShellAssemblerStatus assembleMatrix(const gsMatrix< T > &solVector, const gsMatrix< T > &prevVector)=0
Assembles the tangential stiffness matrix (nonlinear) using the Mixed Integration Point (MIP) method.
virtual T interfaceErrorGaussCurvature(const gsFunctionSet< T > &deformed)=0
Returns the Gaussian curvature error over the interface.
virtual void setPointMass(const gsPointLoads< T > &pLoads)=0
Registers a gsPointLoads object for a point mass acting on the shell. The point masss must be 1-dimen...
virtual gsDofMapper getMapper()=0
Returns the gsDofMapper.
virtual gsMaterialMatrixBase< T > * material(const index_t p) const =0
Returns the material matrix on patch p used in the class.
virtual gsOptionList & options()=0
Returns the options of the assembler.
virtual void homogenizeDirichlet()=0
Sets the Dirichlet BCs to zero.
virtual ThinShellAssemblerStatus assembleMatrix(const gsFunctionSet< T > &deformed, const gsFunctionSet< T > &previous, gsMatrix< T > &update)=0
Assembles the tangential stiffness matrix (nonlinear) using the Mixed Integration Point (MIP) method.
virtual void constructSolution(const gsMatrix< T > &solVector, gsMultiPatch< T > &deformed) const =0
Construct deformed shell geometry from computed solution vector solVector and returns the result in d...
virtual void setPressure(const gsFunction< T > &pressure)=0
Registers a scalar function acting as pressure (in normal direction) in normal direction.
virtual ThinShellAssemblerStatus assemblePressureMatrix(const T pressure, const gsFunctionSet< T > &deformed)=0
Assembles the pressure contribution in the system matrix (non-linear)
virtual gsMatrix< T > projectL2(const gsFunction< T > &fun)=0
Projects function fun on the basis and geometry stored in the class and returns the coefficients as a...
virtual index_t numDofs() const =0
Returns the number of degrees of freedom in the assembler.
virtual ThinShellAssemblerStatus assemblePressureVector(const gsFunction< T > &pressFun, const gsFunctionSet< T > &deformed)=0
Assembles the pressure contribution in the system vector (non-linear)
virtual ThinShellAssemblerStatus assemble(const gsMatrix< T > &solVector, const bool matrix=true, const bool homogenize=true)=0
Assembles the tangential stiffness matrix and the residual for an iteration of Newton's method.
virtual gsMultiPatch< T > constructSolution(const gsMatrix< T > &solVector) const =0
Construct deformed shell geometry from computed solution vector solVector and returns a multipatch.
virtual ThinShellAssemblerStatus assemblePressureMatrix(const gsFunction< T > &pressFun)=0
Assembles the pressure contribution in the system matrix (linear)
virtual ThinShellAssemblerStatus assembleFoundation()=0
Assembles the elastic foundation matrix.
virtual void constructStress(const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)=0
Construct Cauchy stress tensor for visualization.
virtual void setFoundation(const gsFunction< T > &foundation)=0
Registers a stiffness function to be used for handling an elastic foundation, only relevant for 3D sh...
virtual const gsPointLoads< T > & getPointLoads()=0
Gets the registered point loads.
Assembles the system matrix and vectors for 2D and 3D shell problems, including geometric nonlinearit...
Definition gsThinShellAssembler.h:77
void setPointLoads(const gsPointLoads< T > &pLoads)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:165
gsMultiBasis< T > & getBasis()
Gets the basis.
Definition gsThinShellAssembler.h:364
gsExprAssembler< T > assembler()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:158
gsThinShellAssembler & operator=(const gsThinShellAssembler &other)
Assignment operator.
Definition gsThinShellAssembler.hpp:99
index_t numDofs() const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:191
gsMatrix< T > boundaryForce(const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2300
ThinShellAssemblerStatus assembleFoundationVector(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2270
void setOptions(gsOptionList &options)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:229
T getDisplacementNorm(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2520
const gsMatrix< T > & rhs() const
Returns a reference to the right-hand side vector that is assembled.
Definition gsThinShellAssembler.h:401
gsMaterialMatrixContainer< T > materials() const
Returns the material matrices used in the class.
Definition gsThinShellAssembler.h:394
gsMultiPatch< T > constructDisplacement(const gsMatrix< T > &solVector) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2679
std::enable_if<!(_d==3 &&_bending), ThinShellAssemblerStatus >::type assembleMatrix_impl(const gsFunctionSet< T > &, const gsFunctionSet< T > &, gsMatrix< T > &)
Implementation of assembleMatrix for planar geometries (2D)
Definition gsThinShellAssembler.h:274
gsSparseMatrix< T > & massMatrix()
Returns a reference to the mass matrix that is assembled.
Definition gsThinShellAssembler.h:399
void _initialize()
Initializes the method.
Definition gsThinShellAssembler.hpp:243
const gsMultiBasis< T > & basis() const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:360
T deformationNorm(const gsMultiPatch< T > &deformed, const gsMultiPatch< T > &original)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2895
gsThinShellAssembler()
Constructor for te shell assembler.
Definition gsThinShellAssembler.h:134
gsMatrix< T > computePrincipalStresses(const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2763
gsMatrix< T > boundaryForce(const gsFunctionSet< T > &deformed, const patchSide &ps) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:320
const gsPointLoads< T > & getPointMass()
Gets the registered point masses.
Definition gsThinShellAssembler.h:168
gsDofMapper getMapper() const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:207
std::enable_if<(_d==3)&&_bending, ThinShellAssemblerStatus >::type assemble_impl()
Specialisation of assemble() for surfaces (3D)
Definition gsThinShellAssembler.hpp:1540
ThinShellAssemblerStatus assembleVector(const gsFunctionSet< T > &deformed, const bool homogenize=true)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1980
void plotSolution(std::string string, const gsMatrix< T > &solVector)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2563
T interfaceErrorNormal(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:485
T getArea(const gsFunctionSet< T > &geometry)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2506
std::enable_if<(_d==3)&&_bending, ThinShellAssemblerStatus >::type assembleMatrix_impl(const gsFunctionSet< T > &deformed)
Implementation of assembleMatrix for surfaces (3D)
Definition gsThinShellAssembler.hpp:1711
T interfaceErrorG1(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:480
ThinShellAssemblerStatus assemblePressureVector(const gsFunction< T > &pressFun)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2193
T getElasticEnergy(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2539
gsThinShellAssembler(const gsThinShellAssembler &other)
Copy constructor (makes deep copy)
Definition gsThinShellAssembler.h:137
ThinShellAssemblerStatus assemble()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1525
std::enable_if<(_d==3)&&_bending, gsMatrix< T > >::type boundaryForce_impl(const gsFunctionSet< T > &deformed, const std::vector< patchSide > &patchSides) const
Implementation of the boundary force vector for surfaces (3D)
Definition gsThinShellAssembler.hpp:2308
ThinShellAssemblerStatus assembleMass(const bool lumped=false)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1436
void constructStress(const gsFunctionSet< T > &deformed, gsPiecewiseFunction< T > &result, stress_type::type type)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2795
std::enable_if<(_d==3)&&_bending, ThinShellAssemblerStatus >::type assembleVector_impl(const gsFunctionSet< T > &deformed, const bool homogenize)
Implementation of assembleVector for surfaces (3D)
Definition gsThinShellAssembler.hpp:1988
const gsMultiPatch< T > & geometry() const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:343
gsMatrix< T > fullSolutionVector(const gsMatrix< T > &vector) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2685
void updateBCs(const gsBoundaryConditions< T > &bconditions)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:177
void setUndeformed(const gsMultiPatch< T > &patches)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:353
void setFoundation(const gsFunction< T > &foundation)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:171
ThinShellAssemblerStatus assembleMatrix(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1703
void setPressure(const gsFunction< T > &pressure)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:174
gsOptionList & options()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:155
T interfaceErrorGaussCurvature(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:490
gsMultiPatch< T > constructSolution(const gsMatrix< T > &solVector) const
Construct deformed shell geometry from computed solution vector solVector and returns a multipatch.
Definition gsThinShellAssembler.hpp:2488
void projectL2_into(const gsFunction< T > &fun, gsMatrix< T > &result)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2832
ThinShellAssemblerStatus status() const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:194
void setPointMass(const gsPointLoads< T > &pMass)
Registers a gsPointLoads object for a point mass acting on the shell. The point masss must be 1-dimen...
Definition gsThinShellAssembler.h:167
const gsPointLoads< T > & getPointLoads()
Gets the registered point loads.
Definition gsThinShellAssembler.h:166
void setBasis(const gsMultiBasis< T > &basis)
Overwrites the basis.
Definition gsThinShellAssembler.h:366
gsMultiPatch< T > constructMultiPatch(const gsMatrix< T > &solVector) const
Construct solution field from computed solution vector solVector and returns a multipatch.
Definition gsThinShellAssembler.hpp:2623
ThinShellAssemblerStatus assembleFoundation()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1496
T interfaceErrorMeanCurvature(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:495
gsVector< T > constructSolutionVector(const gsMultiPatch< T > &deformed) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2697
T interfaceErrorC0(const gsFunctionSet< T > &deformed)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:475
void setSpaceBasis(const gsFunctionSet< T > &spaceBasis)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:374
gsMatrix< T > projectL2(const gsFunction< T > &fun)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2885
const gsFunctionSet< T > & getSpaceBasis()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:204
gsMultiPatch< T > _constructSolution(const gsMatrix< T > &solVector, const gsMultiPatch< T > &undeformed) const
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2477
gsMaterialMatrixBase< T > * material(const index_t p) const
Returns the material matrix on patch p used in the class.
Definition gsThinShellAssembler.h:395
void homogenizeDirichlet()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:1314
ThinShellAssemblerStatus assemblePressureMatrix(const gsFunction< T > &pressFun)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2131
const gsSparseMatrix< T > & matrix() const
Returns a reference to the system matrix that is assembled.
Definition gsThinShellAssembler.h:398
gsMatrix< T > computePrincipalStretches(const gsMatrix< T > &points, const gsFunctionSet< T > &deformed, const T z=0)
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.hpp:2733
gsDofMapper getMapper()
See gsThinShellAssemblerBase for details.
Definition gsThinShellAssembler.h:472
gsThinShellAssembler(gsThinShellAssembler &&other)
Move constructor.
Definition gsThinShellAssembler.h:143
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition gsVector.h:37
#define index_t
Definition gsConfig.h:32
#define GISMO_NO_IMPLEMENTATION
Definition gsDebug.h:129
Generic expressions matrix assembly.
Generic expressions evaluator.
Provides a base class for material matrices.
Provides a container for material matrices for thin shells.
Provides a simple container for point loads on multi-patch domains.
Provides evaluation function for stresses.
The G+Smo namespace, containing all definitions for the library.
ThinShellAssemblerStatus
Definition gsThinShellAssembler.h:54
@ DimensionError
Assembly failed due to a dimension error.
@ Success
Assembly is successful.
@ AssemblyError
Assembly failed due to an error in the expression (e.g. overflow)
S give(S &x)
Definition gsMemory.h:266
Struct which represents an interface between two patches.
Definition gsBoundary.h:650
Struct which represents a certain side of a patch.
Definition gsBoundary.h:232
Defines the coupling type over interfaces.
Definition gsThinShellAssembler.h:34
type
Definition gsThinShellFunctions.h:39