Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

app-cwinkelm/equivalentStress.hh
Go to the documentation of this file.
00001 #ifndef equivalentStress_hh
00002 #define equivalentStress_hh
00003 
00004 #include "basics/typedefs.hh"
00005 #include "function/vector.hh"
00006 #include "elasticityTensor.hh"
00007 #include "vectorial.hh"
00008 #include "linDG2D/space.hh"
00009 #include "operator/compositions.hh"
00010 
00011 using concepts::Real;
00012 
00013 // ********************************************** EquivalentStressHypothesis **
00014 
00018 template<int dim>
00019 class EquivalentStressHypothesis {
00020  public:
00022   virtual Real operator() (concepts::Mapping<Real, dim>& sigma) const = 0;
00024   virtual concepts::Point<Real, dim>
00025   principalStresses(concepts::Mapping<Real, dim>& sigma) const;
00026 };
00027 
00028 // **************************************** MaximumPrincipalStressHypothesis **
00029 
00033 template<int dim>
00034 class MaximumPrincipalStressHypothesis : 
00035   public EquivalentStressHypothesis<dim> {
00036  public:
00038   virtual Real operator() (concepts::Mapping<Real, dim>& sigma) const;
00039 };
00040 
00041 // ******************************************** MaximumShearStressHypothesis **
00042 
00046 template<int dim>
00047 class MaximumShearStressHypothesis : 
00048   public EquivalentStressHypothesis<dim> {
00049  public:
00051   virtual Real operator() (concepts::Mapping<Real, dim>& sigma) const;
00052 };
00053 
00054 // ************************************** MaximumShearStrainEnergyHypothesis **
00055 
00059 template<int dim>
00060 class MaximumShearStrainEnergyHypothesis : 
00061   public EquivalentStressHypothesis<dim> {
00062  public:
00064   virtual Real operator() (concepts::Mapping<Real, dim>& sigma) const;
00065 };
00066 
00067 // ****************************************************** EquivalentStress2d **
00068 
00074 class EquivalentStress2d : public concepts::Operator<Real> {
00075  public:
00080   EquivalentStress2d(const EquivalentStressHypothesis<2>& esh,
00081                      const ElasticityTensor<2>& et,
00082                      const vectorial::Space<Real>& spc)
00083     : concepts::Operator<Real>(spc.get(0)->dim(), spc.dim())
00084     , esh_(esh), et_(et), spc_(spc) {
00085       conceptsAssert(spc.vdim() == 2, concepts::Assertion());
00086     }
00093   void operator()
00094     (const concepts::Function<Real>& fncY, concepts::Function<Real>& fncX);
00096   const concepts::Space<Real>& spaceX() const { return *spc_.get(0); }
00098   const concepts::Space<Real>& spaceY() const { return spc_; }
00099 protected:
00100   virtual std::ostream& info (std::ostream &os) const;
00101 private:
00102   const EquivalentStressHypothesis<2>& esh_;
00103   const ElasticityTensor<2>& et_;
00104   const vectorial::Space<Real>& spc_;
00105 };
00106 
00107 #endif // equivalentStress_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)