1 /*!
2  * \file   ViscoplasticFlowBase.hxx
3  * \brief
4  * \author Thomas Helfer
5  * \date   28/03/2018
6  * \copyright Copyright (C) 2006-2018 CEA/DEN, EDF R&D. All rights
7  * reserved.
8  * This project is publicly released under either the GNU GPL Licence
9  * or the CECILL-A licence. A copy of thoses licences are delivered
10  * with the sources of TFEL. CEA or EDF may also distribute this
11  * project under specific licensing conditions.
12  */
13 
14 #ifndef LIB_MFRONT_BEHAVIOURBRICK_VISCOPLASTICFLOWBASE_HXX
15 #define LIB_MFRONT_BEHAVIOURBRICK_VISCOPLASTICFLOWBASE_HXX
16 
17 #include "MFront/BehaviourBrick/InelasticFlowBase.hxx"
18 
19 namespace mfront {
20 
21   namespace bbrick {
22 
23     /*!
24      * \brief describe an general viscoplastic flow.
25      * \f[
26      * \underline{\dot{\varepsilon}}^{\mathrm{vp}}=
27      * f\left(\phi\left(\underline{\sigma}-\displaystyle\sum_{i}\underline{X}_{i}\right)-R\left(p\right)\right)^{n}
28      * \frac{\partial \phi_{f}}{\partial \underline{\sigma}}
29      * \f]
30      * where:
31      * - \f$f\f$ is a function describing the flow intensity
32      * - \f$<.>\f$ are the Macaulay brackets
33      * - \f$\phi\f$ is the stress criterion
34      * - \f$\phi_{f}\f$ is the flow criterion
35      * - \f$\underline{X}_{i}\f$ is the \f$i^{\mathrm{th}}\f$ back stress
36      * - \f$R\left(p\right)\f$ is the isotropic hardening rule
37      */
38     struct ViscoplasticFlowBase : InelasticFlowBase {
39       void initialize(BehaviourDescription&,
40                       AbstractBehaviourDSL&,
41                       const std::string&,
42                       const DataMap&) override;
43       //! destructor
44       ~ViscoplasticFlowBase() override;
45 
46      protected:
47       std::string buildFlowImplicitEquations(const BehaviourDescription&,
48                                              const StressPotential&,
49                                              const std::string&,
50                                              const bool) const override;
51       /*!
52        * \brief compute the flow rate "vp"+id
53        * \param[in] id: flow id
54        */
55       virtual std::string computeFlowRate(const std::string&) const = 0;
56       /*!
57        * \brief compute the flow rate "vp"+id and its derivative "dvp_dseqe"
58        * with respect to the effective equivalent stress defined by:
59        * \f[
60        * \phi\left(\underline{\sigma}-\displaystyle\sum_{i}\underline{X}_{i}\right)-R\left(p\right)
61        * \f]
62        * \param[in] id: flow id
63        */
64       virtual std::string computeFlowRateAndDerivative(
65           const std::string&) const = 0;
66     };  // end of struct ViscoplasticFlowBase
67 
68   }  // end of namespace bbrick
69 
70 }  // end of namespace mfront
71 
72 #endif /* LIB_MFRONT_BEHAVIOURBRICK_VISCOPLASTICFLOWBASE_HXX */
73