Skip to content
Snippets Groups Projects
Select Git revision
  • 79c7f46b0f7b87e6b6e6e59c650b285b0a9e5218
  • master default protected
  • dev_mm_pf
  • ujwal_05_08_2025
  • complexpetsc
  • ujwal_21_08_2024
  • cyrielle
  • vinayak
  • dev_mm_torchSCRU
  • debug_mm_pf
  • newStructureNonLocal
  • Mohamed_stochasticDMN
  • dev_mm_bench
  • stochdmn
  • revert-351ff7aa
  • ujwal_29April2024
  • dev_mm_ann
  • mohamed_vevp
  • ujwal_debug
  • ujwal_2ndApril2024
  • ujwal_October_2023
  • v4.0
  • v3.2.3_multiplePhase
  • v3.5
  • v3.3.2
  • v3.4
  • v3.3
  • ver3.2
  • verJulienWork
  • ver3.1
  • ver2
  • ver1.1.2
  • ver1.1.1
  • ver1.1
34 results

ipHardening.h

Blame
  • 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_