Skip to content
Snippets Groups Projects
Select Git revision
  • 18893c8cdabd6bb83c2be85721c0ded6111da416
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

drawContextFltk.h

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    ipHardening.h 6.25 KiB
    //
    // C++ Interface: ipHardening
    //
    // Description: Base class for ipHardening
    //
    //
    // Author:  <L. Noels>, (C) 2013
    //
    // Copyright: See COPYING file that comes with this distribution
    //
    //
    // class with the variables of IP (stress, deformation and localBasis)
    #ifndef IPHARDENING_H_
    #define IPHARDENING_H_
    #include <stdlib.h>
    #include <stdio.h>
    #include "GmshConfig.h"
    #include "ipvariable.h"
    
    class IPHardening : public IPVariable{
     public:
      IPHardening();
      IPHardening(const IPHardening &source);
      virtual IPHardening &operator=(const IPVariable &source);
      virtual ~IPHardening(){}
      virtual void restart(){IPVariable::restart();}
    
      // saturated point-> stop hardening as R = const dR = 0, ... for all values of p
      //
      virtual void saturate(const double p, const IPHardening* ipv) = 0;
      virtual IPVariable * clone() const=0;
      virtual bool isSaturated() const {return false;};
    };
    
    class IPJ2IsotropicHardening : public IPHardening{
    
      protected:
    
        double R;
        double dR;
        double ddR;
        double integR;
    
        bool _isSaturated;
        double _Rs; // value of R at saturation
    
     public:
      IPJ2IsotropicHardening();
      IPJ2IsotropicHardening(const IPJ2IsotropicHardening &source);
      virtual IPJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const=0;
    
      virtual double getR() const {return R;}
      virtual double getDR() const {return dR;}
      virtual double getDDR() const {return ddR;}
      virtual double getIntegR() const {return integR;}
    
      virtual void saturate(const double p, const IPHardening* ipv) {
        _isSaturated = true;
        const IPJ2IsotropicHardening* isoH = dynamic_cast<const IPJ2IsotropicHardening*>(ipv);
        if (isoH == NULL){
          Msg::Error("IPJ2IsotropicHardening should be used IPJ2IsotropicHardening::saturate");
        }
        else{
          _Rs = isoH->getR();
        }
    
      };
      virtual bool isSaturated() const {return _isSaturated;};
    
      virtual void set(const double &_r, const double &_dr, const double &_ddr, const double &_integR)
      {
        if (isSaturated()){
          R = _Rs;
          dR = 0;
          ddR = 0.;
          integR = _integR; // need to correct
        }
        else{
          R=_r;
          dR=_dr;
          ddR=_ddr;
          integR=_integR;
        }
      }
    };
    
    class IPPerfectlyPlasticJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
    
     protected:
    
     public:
      IPPerfectlyPlasticJ2IsotropicHardening();
      IPPerfectlyPlasticJ2IsotropicHardening(const IPPerfectlyPlasticJ2IsotropicHardening &source);
      virtual IPPerfectlyPlasticJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPPerfectlyPlasticJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const;
    };
    
    class IPPowerLawJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
    
     protected:
     public:
      IPPowerLawJ2IsotropicHardening();
      IPPowerLawJ2IsotropicHardening(const IPPowerLawJ2IsotropicHardening &source);
      virtual IPPowerLawJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPPowerLawJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable *clone() const;
    
    };
    
    class IPExponentialJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
    
     protected:
    
     public:
      IPExponentialJ2IsotropicHardening();
      IPExponentialJ2IsotropicHardening(const IPExponentialJ2IsotropicHardening &source);
      virtual IPExponentialJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPExponentialJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const;
    
    };
    
    class IPSwiftJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
    
     protected:
    
     public:
      IPSwiftJ2IsotropicHardening();
      IPSwiftJ2IsotropicHardening(const IPSwiftJ2IsotropicHardening &source);
      virtual IPSwiftJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPSwiftJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const;
    
    };
    
    class IPLinearExponentialJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
     protected:
    
     public:
      IPLinearExponentialJ2IsotropicHardening();
      IPLinearExponentialJ2IsotropicHardening(const IPLinearExponentialJ2IsotropicHardening &source);
      virtual IPLinearExponentialJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPLinearExponentialJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const;
    
    };
    
    
    
    /* IPLinearFollowedByExponentialJ2IsotropicHardening */
    class IPLinearFollowedByExponentialJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
     protected:
      // nothing to add to IPJ2IsotropicHardening basis
     public:
      IPLinearFollowedByExponentialJ2IsotropicHardening();
      IPLinearFollowedByExponentialJ2IsotropicHardening(const IPLinearFollowedByExponentialJ2IsotropicHardening &source);
      virtual IPLinearFollowedByExponentialJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPLinearFollowedByExponentialJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable * clone() const;
    
    };
    
    
    
    /* IPLinearFollowedByPowerLawJ2IsotropicHardening */
    class IPLinearFollowedByPowerLawJ2IsotropicHardening : public IPJ2IsotropicHardening
    {
    
     protected:
     public:
      IPLinearFollowedByPowerLawJ2IsotropicHardening();
      IPLinearFollowedByPowerLawJ2IsotropicHardening(const IPLinearFollowedByPowerLawJ2IsotropicHardening &source);
      virtual IPLinearFollowedByPowerLawJ2IsotropicHardening &operator=(const IPVariable &source);
      virtual ~IPLinearFollowedByPowerLawJ2IsotropicHardening(){}
      virtual void restart();
      virtual IPVariable *clone() const;
    
    };
    
    
    
    class IPPolynomialJ2IsotropicHardening : public IPJ2IsotropicHardening{
      public:
        IPPolynomialJ2IsotropicHardening();
        IPPolynomialJ2IsotropicHardening(const IPPolynomialJ2IsotropicHardening &source);
        virtual IPPolynomialJ2IsotropicHardening &operator=(const IPVariable &source);
        virtual ~IPPolynomialJ2IsotropicHardening(){}
        virtual void restart();
        virtual IPVariable * clone() const;
    };
    
    class IPTwoExpJ2IsotropicHaderning: public IPJ2IsotropicHardening{
      public:
        IPTwoExpJ2IsotropicHaderning();
        IPTwoExpJ2IsotropicHaderning(const IPTwoExpJ2IsotropicHaderning &source);
        virtual IPTwoExpJ2IsotropicHaderning &operator=(const IPVariable &source);
        virtual ~IPTwoExpJ2IsotropicHaderning(){}
        virtual void restart();
        virtual IPVariable * clone() const;
    };
    #endif //IPHardening_H_