Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / solidModels / constitutiveModel / cohesiveLaws / linearCohesiveLaw / linearCohesiveLaw.H
blob4b45d54a126124ae9b4253080603445803ba22b6
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     linearCohesiveLaw
27 Description
28     Linear shaped cohesive law
29     The stress descreases linearly with displacement (for pure mode I/II).
31 SourceFiles
32     linearCohesiveLaw.C
34 Author
35     Philip Cardiff UCD
37 \*---------------------------------------------------------------------------*/
39 #ifndef linearCohesiveLaw_H
40 #define linearCohesiveLaw_H
42 #include "cohesiveLaw.H"
43 #include "volFields.H"
44 #include "surfaceFields.H"
45 #include "PtrDictionary.H"
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 namespace Foam
52 /*---------------------------------------------------------------------------*\
53                          Class linearCohesiveLaw Declaration
54 \*---------------------------------------------------------------------------*/
56 class linearCohesiveLaw
58     public cohesiveLaw
61   private:
63     // Private data
65         //- Criticial fracture energy mode I
66         dimensionedScalar GIc_;
68         //- Critical fracture energy mode II
69         dimensionedScalar GIIc_;
71         //- Maximum opening cohesive strength
72         dimensionedScalar sigmaMax_;
74         //- Maximum shearing cohesive strength
75         dimensionedScalar tauMax_;
78     // Private Member Functions
80         //- Disallow default bitwise copy construct
81         linearCohesiveLaw(const linearCohesiveLaw&);
83         //- Disallow default bitwise assignment
84         void operator=(const linearCohesiveLaw&);
86 public:
88     //- Runtime type information
89     TypeName("linear");
91     // Static data members
94     // Constructors
96         //- Construct from dictionary
97         linearCohesiveLaw
98         (
99             const word& name,
100             const volSymmTensorField& sigma,
101             const dictionary& dict
102         );
105     // Destructor
107         virtual ~linearCohesiveLaw();
110     // Member Functions
112         //- return materials;
113     virtual tmp<volScalarField> materials() const;
115         //- Return opening cohesive strength - surface field
116         virtual scalar sigmaMaxValue() const
117         {
118       return sigmaMax_.value();
119     };
120         virtual tmp<surfaceScalarField> sigmaMax() const;
122         //- Return shearing cohesive strength - surface field
123         virtual scalar tauMaxValue() const
124         {
125       return tauMax_.value();
126     };
127         virtual tmp<surfaceScalarField> tauMax() const;
129         //-  Return Mode I fracture energy
130         virtual scalar GIcValue() const
131         {
132       return GIc_.value();
133     };
134         virtual tmp<surfaceScalarField> GIc() const;
136         //-  Return Mode II fracture energy
137         virtual scalar GIIcValue() const
138         {
139       return GIIc_.value();
140     };
141         virtual tmp<surfaceScalarField> GIIc() const;
143         //- Return normal traction (during damage) given current deltas
144         //virtual scalar normalTraction(scalar deltaN, scalar deltaS) const;
146         //- Return shear traction (during damage) given current deltas
147         //virtual scalar shearTraction(scalar deltaN, scalar deltaS) const;
149         //- Return tractions during damage given current deltas and Gs
150         virtual void damageTractions
151     (
152      scalar& tN, // current normal traction
153      scalar& tS, // current shear traction
154      const scalar deltaN, // current deltaN
155      const scalar deltaS, // current deltaS
156      const scalar GI, // current dissipated GI
157      const scalar GII, // current dissipated GII
158      const label faceID, // needed for multi-mat
159      const scalarField& globalPatchMaterials
160      ) const;
162     //- Calculate tractions
163     virtual tmp<surfaceVectorField> interfaceTraction
164     (
165      surfaceVectorField n,
166      volVectorField U,
167      volTensorField gradU,
168      volScalarField mu,
169      volScalarField lambda
170      ) const;
172         //- Correct the rheological model
173         virtual void correct()
174         {}
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 } // End namespace Foam
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 #endif
186 // ************************************************************************* //