Skip to content
Snippets Groups Projects
Select Git revision
  • 3b86cf6119b6abf3ae983fa9569d6a0e65815a35
  • master default protected
  • revert-ef4a3a4f
  • patch_releases_4_14
  • overlaps_tags_and_distributed_export
  • overlaps_tags_and_distributed_export_rebased
  • relaying
  • alphashapes
  • steplayer
  • bl
  • pluginMeshQuality
  • fixBugsAmaury
  • hierarchical-basis
  • new_export_boris
  • oras_vs_osm
  • reassign_partitions
  • distributed_fwi
  • rename-classes
  • fix/fortran-api-example-t4
  • robust_partitions
  • reducing_files
  • gmsh_4_14_0
  • gmsh_4_13_1
  • gmsh_4_13_0
  • gmsh_4_12_2
  • gmsh_4_12_1
  • gmsh_4_12_0
  • gmsh_4_11_1
  • gmsh_4_11_0
  • gmsh_4_10_5
  • gmsh_4_10_4
  • gmsh_4_10_3
  • gmsh_4_10_2
  • gmsh_4_10_1
  • gmsh_4_10_0
  • gmsh_4_9_5
  • gmsh_4_9_4
  • gmsh_4_9_3
  • gmsh_4_9_2
  • gmsh_4_9_1
  • gmsh_4_9_0
41 results

meshGRegionMMG3D.cpp

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_