G+Smo  24.08.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gsMaterialMatrixBase.h
Go to the documentation of this file.
1 
16 #pragma once
17 
18 #include <gsCore/gsFunctionSet.h>
20 
21 namespace gismo
22 {
23 
31 template <class T>
33 {
34 public:
35 
36  typedef typename gsFunctionSet<T>::Ptr function_ptr;
37 
38  enum {Linear=0};
39 
41  typedef memory::shared_ptr< gsMaterialMatrixBase > Ptr;
42 
44  typedef memory::unique_ptr< gsMaterialMatrixBase > uPtr;
45 
47  :
48  m_patches(nullptr),
49  m_defpatches(nullptr),
50  m_thickness(nullptr),
51  m_density(nullptr)
52  {
53  }
54 
56  const gsFunctionSet<T> & mp_def,
57  const gsFunctionSet<T> & thickness,
58  const gsFunctionSet<T> & Density)
59  :
60  m_patches(memory::make_shared(mp.clone().release())),
61  m_defpatches(memory::make_shared(mp_def.clone().release())),
62  m_thickness(memory::make_shared(thickness.clone().release())),
63  m_density(memory::make_shared(Density.clone().release()))
64  {
65  }
66 
67  gsMaterialMatrixBase( const gsFunctionSet<T> * mp,
68  const gsFunctionSet<T> * mp_def,
69  const gsFunctionSet<T> * thickness,
70  const gsFunctionSet<T> * Density)
71  :
72  m_patches(memory::make_shared_not_owned(mp)),
73  m_defpatches(memory::make_shared_not_owned(mp_def)),
74  m_thickness(memory::make_shared_not_owned(thickness)),
75  m_density(memory::make_shared_not_owned(Density))
76  {
77  }
78 
79  gsMaterialMatrixBase( const function_ptr & mp,
80  const function_ptr & mp_def,
81  const function_ptr & thickness,
82  const function_ptr & Density)
83  :
84  m_patches(mp),
85  m_defpatches(mp_def),
86  m_thickness(thickness),
87  m_density(Density)
88  {
89  }
90 
91  GISMO_UPTR_FUNCTION_NO_IMPLEMENTATION(gsMaterialMatrixBase, clone)
92 
93 
94  virtual ~gsMaterialMatrixBase() {};
95 
98  {
99  operator=(other);
100  }
101 
104  {
105  operator=(give(other));
106  }
107 
108  gsMaterialMatrixBase<T> & operator= ( const gsMaterialMatrixBase<T> & other )
109  {
110  if (this!=&other)
111  {
112  m_patches = other.m_patches;
113  m_defpatches = other.m_defpatches;
114  m_options = other.m_options;
115 
116  m_pars = other.m_pars;
117  m_thickness = other.m_thickness;
118  m_density = other.m_density;
119  }
120  return *this;
121  }
122 
123  gsMaterialMatrixBase<T> & operator= ( gsMaterialMatrixBase<T> && other )
124  {
125  m_patches = give(other.m_patches);
126  m_defpatches = give(other.m_defpatches);
127  m_options = give(other.m_options);
128 
129 
130  m_pars = give(other.m_pars);
131  m_thickness = give(other.m_thickness);
132  m_density = give(other.m_density);
133  return *this;
134  }
135 
147  virtual inline enum MatIntegration isMatIntegrated() const {return MatIntegration::NotIntegrated; }
148 
160  virtual inline enum MatIntegration isVecIntegrated() const {return MatIntegration::NotIntegrated; }
161 
167  virtual inline void defaultOptions()
169 
175  virtual inline gsOptionList & options() { return m_options; }
181  virtual inline void setOptions(gsOptionList opt) {m_options.update(opt,gsOptionList::addIfUnknown); }
182 
190  virtual inline void density_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
199  virtual inline void pstretch_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
208  virtual inline void pstretchDir_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
217  virtual inline void pstress_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
226  virtual inline void pstressDir_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
235  virtual inline void thickness_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
237 
245  virtual inline void parameters_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
247 
255  virtual inline void transform_into(const index_t patch, const gsMatrix<T>& u, gsMatrix<T>& result) const
257 
270  virtual inline gsMatrix<T> eval3D_spec2cov(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
272 
284  virtual inline gsMatrix<T> eval3D_spec2con(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
286 
299  virtual inline gsMatrix<T> eval3D_cov2cart(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
301 
313  virtual inline gsMatrix<T> eval3D_con2cart(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
315 
326  virtual inline gsMatrix<T> eval3D_pstretchTransform(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
327  { return eval3D_spec2con(patch,u,z); }
328 
339  virtual inline gsMatrix<T> eval3D_pstressTransform(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
340  { return eval3D_spec2cov(patch,u,z); }
341 
353  virtual inline gsMatrix<T> eval3D_deformation(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z) const
355 
367  virtual inline gsMatrix<T> eval3D_matrix(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
369 
370  virtual inline gsMatrix<T> eval3D_matrix(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
371  {
372  gsMatrix<T> zmat(1,1);
373  zmat<<z;
374  return eval3D_matrix(patch,u,zmat,out);
375  }
376 
377  virtual inline gsMatrix<T> eval3D_matrix_C(const gsMatrix<T> & Cmat, const index_t patch, const gsVector<T>& u, const T z, enum MaterialOutput out) const
379 
398  virtual inline gsMatrix<T> eval3D_dmatrix(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
399  {
401  // return gsMatrix<T>::Zero(27,u.cols()*z.rows());
402  }
403 
404  virtual inline gsMatrix<T> eval3D_dmatrix(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
405  {
406  gsMatrix<T> zmat(1,1);
407  zmat<<z;
408  return eval3D_dmatrix(patch,u,zmat,out);
409  }
410 
422  virtual inline gsMatrix<T> eval3D_vector(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
424  virtual inline gsMatrix<T> eval3D_vector(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
425  {
426  gsMatrix<T> zmat(1,1);
427  zmat<<z;
428  return eval3D_vector(patch,u,zmat,out);
429  }
430  virtual inline gsMatrix<T> eval3D_vector_C(const gsMatrix<T> & C, const index_t patch, const gsVector<T>& u, const T z, enum MaterialOutput out) const
445  virtual inline gsMatrix<T> eval3D_CauchyVector(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
446  {
448  }
460  virtual inline gsMatrix<T> eval3D_pstress(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
462  virtual inline gsMatrix<T> eval3D_CauchyPStress(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
475  virtual inline gsMatrix<T> eval3D_pstressDir(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
477 
489  virtual inline gsMatrix<T> eval3D_pstretch(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z) const
502  virtual inline gsMatrix<T> eval3D_pstretchDir(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z) const
504 
505 
517  virtual inline gsMatrix<T> eval3D_pstrain(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z) const
519 
530  virtual inline gsMatrix<T> eval3D_strain(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z) const
532  virtual inline gsMatrix<T> eval3D_strain(const index_t patch, const gsVector<T>& u, const T & z) const
533  {
534  gsMatrix<T> zmat(1,1);
535  zmat<<z;
536  return eval3D_strain(patch,u,zmat);
537  }
538 
549  virtual inline gsMatrix<T> eval3D_stress(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z, enum MaterialOutput out) const
551  virtual inline gsMatrix<T> eval3D_stress(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
552  {
553  gsMatrix<T> zmat(1,1);
554  zmat<<z;
555  return eval3D_stress(patch,u,zmat,out);
556  }
557 
568  virtual inline gsMatrix<T> eval3D_detF(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z, enum MaterialOutput out) const
570 
581  virtual inline gsMatrix<T> eval3D_CauchyStress(const index_t patch, const gsMatrix<T> & u, const gsMatrix<T> & z, enum MaterialOutput out) const
583  virtual inline gsMatrix<T> eval3D_CauchyStress(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
584  {
585  gsMatrix<T> zmat(1,1);
586  zmat<<z;
587  return eval3D_CauchyStress(patch,u,zmat,out);
588  }
589 
601  virtual inline gsMatrix<T> eval3D_tensionfield(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
603  virtual inline gsMatrix<T> eval3D_tensionfield(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
604  {
605  gsMatrix<T> zmat(1,1);
606  zmat<<z;
607  return eval3D_tensionfield(patch,u,zmat,out);
608  }
609 
610  virtual inline gsMatrix<T> eval3D_theta(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
612  virtual inline gsMatrix<T> eval3D_theta(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
613  {
614  gsMatrix<T> zmat(1,1);
615  zmat<<z;
616  return eval3D_theta(patch,u,zmat,out);
617  }
618 
619  virtual inline gsMatrix<T> eval3D_gamma(const index_t patch, const gsMatrix<T>& u, const gsMatrix<T>& z, enum MaterialOutput out) const
621  virtual inline gsMatrix<T> eval3D_gamma(const index_t patch, const gsVector<T>& u, const T & z, enum MaterialOutput out) const
622  {
623  gsMatrix<T> zmat(1,1);
624  zmat<<z;
625  return eval3D_gamma(patch,u,zmat,out);
626  }
627 
628  virtual void setYoungsModulus(const gsFunctionSet<T> & YoungsModulus)
630  virtual const function_ptr getYoungsModulus() const
632  virtual void setPoissonsRatio(const gsFunctionSet<T> & PoissonsRatio)
634  virtual const function_ptr getPoissonsRatio() const
636  virtual void setRatio(const gsFunctionSet<T> & Ratio)
638  virtual const function_ptr getRatio() const
640  virtual void setMu(const index_t & i, const gsFunctionSet<T> & Mu_i)
642  virtual const function_ptr getMu(const index_t & i) const
644  virtual void setAlpha(const index_t & i, const gsFunctionSet<T> & Alpha_i)
646  virtual const function_ptr getAlpha(const index_t & i) const
648 
650  virtual inline void setThickness(const function_ptr & thickness) { m_thickness = thickness; }
651 
653  virtual void setThickness(const gsFunctionSet<T> & thickness)
654  {
655  function_ptr fun = memory::make_shared(thickness.clone().release());
656  m_thickness = fun;
657  }
658 
660  virtual inline bool hasThickness() const { return m_thickness!=nullptr; }
661 
663  virtual const function_ptr getThickness() const {return m_thickness;}
664 
666  virtual inline void setDensity(function_ptr Density) { m_density = Density; }
668  virtual void setDensity(const gsFunctionSet<T> & Density)
669  {
670  function_ptr fun = memory::make_shared(Density.clone().release());
671  m_density = fun;
672  }
674  virtual inline bool hasDensity() const { return m_density!=nullptr; }
675 
677  virtual const function_ptr getDensity() const {return m_density;}
678 
684  virtual inline void setParameters(const std::vector<function_ptr> &pars)
685  {
686  m_pars = pars;
687  }
688 
694  virtual inline void setParameter(const index_t i, const function_ptr &par)
695  {
696  m_pars[i] = par;
697  }
698 
704  virtual inline void setParameters(const std::vector<gsFunctionSet<T> *> &pars)
705  {
706  m_pars.resize(pars.size());
707  for (size_t k = 0; k!=pars.size(); k++)
708  m_pars[k] = memory::make_shared_not_owned(pars[k]);
709  }
710 
716  virtual inline void setParameter(const index_t i, const gsFunctionSet<T> &par)
717  {
718  if ((index_t)m_pars.size() < i+1)
719  m_pars.resize(i+1);
720  m_pars[i] = memory::make_shared(par.clone().release());
721  }
722 
730  virtual inline const function_ptr getParameter(const index_t i) const
731  {
732  GISMO_ASSERT(i < (index_t)m_pars.size(),"Parameter "<<i<<" is unavailable");
733  return m_pars[i] ;
734  }
735 
740  virtual inline index_t numParameters() const { return m_pars.size(); }
741 
743  virtual inline void resetParameters()
744  {
745  m_pars.clear();
746  m_pars.resize(0);
747  }
748 
752  virtual inline void info() const
754 
756  virtual std::ostream &print(std::ostream &os) const
757  {
758  os<<"gsMaterialMatrixBase (type not understood).\n";
759  return os;
760  }
761 
763  virtual inline const gsMaterialMatrixBase<T> * material() const { return this; }
765  virtual inline gsMaterialMatrixBase<T> * material() { return this; }
766 
767  virtual inline gsMatrix<T> S(const gsMatrix<T> & strain) const
769 
770  virtual inline gsMatrix<T> C(const gsMatrix<T> & strain) const
772 
773  virtual void setUndeformed(const gsFunctionSet<T> * undeformed)
774  {
775  function_ptr f_ptr = memory::make_shared_not_owned(undeformed);
776  m_patches = f_ptr;
777  }
778  virtual void setDeformed(const gsFunctionSet<T> * deformed)
779  {
780  function_ptr f_ptr = memory::make_shared_not_owned(deformed);
781  m_defpatches = f_ptr;
782  }
783 
784  virtual void setUndeformed(const function_ptr undeformed) {m_patches = undeformed; }
785  virtual void setDeformed(const function_ptr deformed) {m_defpatches = deformed; }
786 
787  const function_ptr getUndeformed() const { return m_patches; }
788  const function_ptr getDeformed() const { return m_defpatches; }
789 
790  virtual bool hasUndeformed() const
791  { return m_defpatches!=nullptr; }
792  virtual bool hasDeformed() const { return m_defpatches!=nullptr; }
793 
794  virtual bool initialized() const
796 
797 protected:
798  function_ptr m_patches;
799  function_ptr m_defpatches;
800  gsOptionList m_options;
801 
802  std::vector< function_ptr > m_pars;
803  function_ptr m_thickness;
804  function_ptr m_density;
805 };
806 
807 template<class T>
808 std::ostream& operator<<(std::ostream& os, const gsMaterialMatrixBase<T>& mm)
809 {
810  return mm.print(os);
811 }
812 
813 #ifdef GISMO_WITH_PYBIND11
814 
818  void pybind11_init_gsMaterialMatrixBase(pybind11::module &m);
819 
820 #endif // GISMO_WITH_PYBIND11
821 
822 } // namespace
823 
824 #ifndef GISMO_BUILD_LIB
825 #include GISMO_HPP_HEADER(gsMaterialMatrixBase.hpp)
826 #endif
virtual gsMatrix< T > eval3D_matrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the matrix on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:367
MaterialOutput
This class describes the output type.
Definition: gsMaterialMatrixUtils.h:98
virtual gsMatrix< T > eval3D_spec2con(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation from the spectral basis to the contravariant basis.
Definition: gsMaterialMatrixBase.h:284
virtual void pstress_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the priciple stresses in the shell (3x1 vector)
Definition: gsMaterialMatrixBase.h:217
virtual void defaultOptions()
Returns the options.
Definition: gsMaterialMatrixBase.h:167
virtual void setParameters(const std::vector< function_ptr > &pars)
Sets the material parameters.
Definition: gsMaterialMatrixBase.h:684
shared_ptr< T > make_shared_not_owned(const T *x)
Creates a shared pointer which does not eventually delete the underlying raw pointer. Usefull to refer to objects which should not be destroyed.
Definition: gsMemory.h:189
std::vector< T * > release(std::vector< unique_ptr< T > > &cont)
Takes a vector of smart pointers, releases them and returns the corresponding raw pointers...
Definition: gsMemory.h:228
#define GISMO_NO_IMPLEMENTATION
Definition: gsDebug.h:129
virtual const function_ptr getThickness() const
Gets the Density.
Definition: gsMaterialMatrixBase.h:663
virtual void thickness_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the thickness of the shell (scalar)
Definition: gsMaterialMatrixBase.h:235
virtual gsOptionList & options()
Returns the options.
Definition: gsMaterialMatrixBase.h:175
virtual gsMatrix< T > eval3D_tensionfield(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
to do
Definition: gsMaterialMatrixBase.h:601
virtual void setDensity(function_ptr Density)
Sets the density.
Definition: gsMaterialMatrixBase.h:666
virtual gsMatrix< T > eval3D_detF(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
{ function_description }
Definition: gsMaterialMatrixBase.h:568
S give(S &x)
Definition: gsMemory.h:266
virtual void pstressDir_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the directions of the priciple stresses in the shell (3x1 vector per direction) ...
Definition: gsMaterialMatrixBase.h:226
#define index_t
Definition: gsConfig.h:32
virtual gsMatrix< T > eval3D_CauchyStress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
{ function_description }
Definition: gsMaterialMatrixBase.h:581
#define GISMO_ASSERT(cond, message)
Definition: gsDebug.h:89
virtual gsMaterialMatrixBase< T > * material()
Returns this.
Definition: gsMaterialMatrixBase.h:765
virtual gsMatrix< T > eval3D_spec2cov(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation from the spectral basis to the covariant basis.
Definition: gsMaterialMatrixBase.h:270
virtual enum MatIntegration isVecIntegrated() const
Specifies how the vector is integrated.
Definition: gsMaterialMatrixBase.h:160
This class defines the base class for material matrices.
Definition: gsMaterialMatrixBase.h:32
virtual gsMatrix< T > eval3D_pstretch(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the principal stretch on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:489
memory::shared_ptr< gsFunctionSet > Ptr
Shared pointer for gsFunctionSet.
Definition: gsFunctionSet.h:223
virtual void pstretchDir_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the directions of the stretches in the shell (3x1 vector per direction) ...
Definition: gsMaterialMatrixBase.h:208
virtual const function_ptr getDensity() const
Gets the Density.
Definition: gsMaterialMatrixBase.h:677
virtual void transform_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Constructs a transformation matrix that transforms a quantity (IN VOIGHT NOTATION) in the spectral ba...
Definition: gsMaterialMatrixBase.h:255
virtual index_t numParameters() const
Gets the number of parameters.
Definition: gsMaterialMatrixBase.h:740
virtual gsMatrix< T > eval3D_stress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
{ function_description }
Definition: gsMaterialMatrixBase.h:549
virtual void density_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the density multiplied by the thickness of the shell (scalar)
Definition: gsMaterialMatrixBase.h:190
virtual gsMatrix< T > eval3D_dmatrix(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the derivative of the matrix on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:398
virtual void setParameter(const index_t i, const function_ptr &par)
Sets the material parameters.
Definition: gsMaterialMatrixBase.h:694
virtual gsMatrix< T > eval3D_pstressDir(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the principal stress directions on patch on in-plane points u with height z...
Definition: gsMaterialMatrixBase.h:475
virtual gsMatrix< T > eval3D_deformation(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates deformation tensor on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:353
virtual enum MatIntegration isMatIntegrated() const
Specifies how the matrix is integrated.
Definition: gsMaterialMatrixBase.h:147
Interface for the set of functions defined on a domain (the total number of functions in the set equa...
Definition: gsFuncData.h:23
virtual void parameters_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the parameters of the shell.
Definition: gsMaterialMatrixBase.h:245
virtual void resetParameters()
See gsMaterialMatrixBase for details.
Definition: gsMaterialMatrixBase.h:743
virtual gsMatrix< T > eval3D_vector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the vector on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:422
Provides material matrix utilities.
virtual gsMatrix< T > eval3D_strain(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
{ function_description }
Definition: gsMaterialMatrixBase.h:530
void update(const gsOptionList &other, updateType type=ignoreIfUnknown)
Updates the object using the data from other.
Definition: gsOptionList.cpp:253
uPtr clone()
Clone methode. Produceds a deep copy inside a uPtr.
virtual void setDensity(const gsFunctionSet< T > &Density)
Sets the density.
Definition: gsMaterialMatrixBase.h:668
virtual const gsMaterialMatrixBase< T > * material() const
Returns this.
Definition: gsMaterialMatrixBase.h:763
virtual void setThickness(const gsFunctionSet< T > &thickness)
Sets the thickness.
Definition: gsMaterialMatrixBase.h:653
gsMaterialMatrixBase(gsMaterialMatrixBase< T > &&other)
Move constructor.
Definition: gsMaterialMatrixBase.h:103
virtual gsMatrix< T > eval3D_con2cart(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation from the contravariant basis to the local cartesian basis.
Definition: gsMaterialMatrixBase.h:313
virtual gsMatrix< T > eval3D_pstress(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the principal stress on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:460
virtual gsMatrix< T > eval3D_CauchyVector(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z, enum MaterialOutput out) const
Evaluates the Cauchy Stress vector on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:445
virtual const function_ptr getParameter(const index_t i) const
Gets parameter i.
Definition: gsMaterialMatrixBase.h:730
virtual void setParameter(const index_t i, const gsFunctionSet< T > &par)
Sets the material parameters.
Definition: gsMaterialMatrixBase.h:716
virtual gsMatrix< T > eval3D_pstressTransform(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation of the principle stresses.
Definition: gsMaterialMatrixBase.h:339
memory::shared_ptr< gsMaterialMatrixBase > Ptr
Shared pointer for gsGeometry.
Definition: gsMaterialMatrixBase.h:41
Class which holds a list of parameters/options, and provides easy access to them. ...
Definition: gsOptionList.h:32
virtual void setOptions(gsOptionList opt)
Sets the options.
Definition: gsMaterialMatrixBase.h:181
virtual std::ostream & print(std::ostream &os) const
Prints the object as a string.
Definition: gsMaterialMatrixBase.h:756
This is the interface of all objects that computes functions on points like gsBasis, gsGeometry and gsFunctions.
memory::unique_ptr< gsMaterialMatrixBase > uPtr
Unique pointer for gsGeometry.
Definition: gsMaterialMatrixBase.h:44
virtual void setParameters(const std::vector< gsFunctionSet< T > * > &pars)
Sets the material parameters.
Definition: gsMaterialMatrixBase.h:704
virtual bool hasThickness() const
Returns true if a thickness is assigned.
Definition: gsMaterialMatrixBase.h:660
MatIntegration
This class describes if an object is integrated through-thickness or not.
Definition: gsMaterialMatrixUtils.h:35
virtual gsMatrix< T > eval3D_pstrain(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the principal strain on patch on in-plane points u with height z.
Definition: gsMaterialMatrixBase.h:517
virtual gsMatrix< T > eval3D_cov2cart(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation from the covariant basis to the local cartesian basis.
Definition: gsMaterialMatrixBase.h:299
virtual void pstretch_into(const index_t patch, const gsMatrix< T > &u, gsMatrix< T > &result) const
Evaluates the stretches in the shell (3x1 vector)
Definition: gsMaterialMatrixBase.h:199
virtual void info() const
Prints info.
Definition: gsMaterialMatrixBase.h:752
virtual gsMatrix< T > eval3D_pstretchTransform(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Provides the transformation of the principle stretches.
Definition: gsMaterialMatrixBase.h:326
virtual gsMatrix< T > eval3D_pstretchDir(const index_t patch, const gsMatrix< T > &u, const gsMatrix< T > &z) const
Evaluates the principal stretch directions on patch on in-plane points u with height z...
Definition: gsMaterialMatrixBase.h:502
virtual bool hasDensity() const
Returns true if a density is assigned.
Definition: gsMaterialMatrixBase.h:674
virtual void setThickness(const function_ptr &thickness)
Sets the thickness.
Definition: gsMaterialMatrixBase.h:650
gsMaterialMatrixBase(const gsMaterialMatrixBase< T > &other)
Copy constructor (makes deep copy)
Definition: gsMaterialMatrixBase.h:97
shared_ptr< T > make_shared(T *x)
Definition: gsMemory.h:181