ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / lagrangian / molecularDynamics / potential / energyScalingFunction / derived / sigmoid / sigmoid.C
blob49dcac1c63a2ce154e29385c5727b5596ac4bcbc
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "sigmoid.H"
27 #include "addToRunTimeSelectionTable.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 namespace Foam
33 namespace energyScalingFunctions
36 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
38 defineTypeNameAndDebug(sigmoid, 0);
40 addToRunTimeSelectionTable
42     energyScalingFunction,
43     sigmoid,
44     dictionary
48 // * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
50 scalar sigmoid::sigmoidScale
51     (
52         const scalar r,
53         const scalar shift,
54         const scalar scale
55     ) const
57     return 1.0 / (1.0 + exp( scale * (r - shift)));
61 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
63 sigmoid::sigmoid
65     const word& name,
66     const dictionary& energyScalingFunctionProperties,
67     const pairPotential& pairPot
70     energyScalingFunction(name, energyScalingFunctionProperties, pairPot),
71     sigmoidCoeffs_
72     (
73         energyScalingFunctionProperties.subDict(typeName + "Coeffs")
74     ),
75     shift_(readScalar(sigmoidCoeffs_.lookup("shift"))),
76     scale_(readScalar(sigmoidCoeffs_.lookup("scale")))
80 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
82 void sigmoid::scaleEnergy(scalar& e, const scalar r) const
84     e *= sigmoidScale(r, shift_, scale_);
88 bool sigmoid::read(const dictionary& energyScalingFunctionProperties)
90     energyScalingFunction::read(energyScalingFunctionProperties);
92     sigmoidCoeffs_ =
93         energyScalingFunctionProperties.subDict(typeName + "Coeffs");
95     sigmoidCoeffs_.lookup("shift") >> shift_;
96     sigmoidCoeffs_.lookup("scale") >> shift_;
98     return true;
102 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
104 } // End namespace energyScalingFunctions
105 } // End namespace Foam
107 // ************************************************************************* //