Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "sigmoid.H"
00027 #include <OpenFOAM/addToRunTimeSelectionTable.H>
00028
00029
00030
00031 namespace Foam
00032 {
00033 namespace energyScalingFunctions
00034 {
00035
00036
00037
00038 defineTypeNameAndDebug(sigmoid, 0);
00039
00040 addToRunTimeSelectionTable
00041 (
00042 energyScalingFunction,
00043 sigmoid,
00044 dictionary
00045 );
00046
00047
00048
00049
00050 scalar sigmoid::sigmoidScale
00051 (
00052 const scalar r,
00053 const scalar shift,
00054 const scalar scale
00055 ) const
00056 {
00057 return 1.0 / (1.0 + exp( scale * (r - shift)));
00058 }
00059
00060
00061
00062
00063 sigmoid::sigmoid
00064 (
00065 const word& name,
00066 const dictionary& energyScalingFunctionProperties,
00067 const pairPotential& pairPot
00068 )
00069 :
00070 energyScalingFunction(name, energyScalingFunctionProperties, pairPot),
00071 sigmoidCoeffs_
00072 (
00073 energyScalingFunctionProperties.subDict(typeName + "Coeffs")
00074 ),
00075 shift_(readScalar(sigmoidCoeffs_.lookup("shift"))),
00076 scale_(readScalar(sigmoidCoeffs_.lookup("scale")))
00077 {}
00078
00079
00080
00081
00082 void sigmoid::scaleEnergy(scalar& e, const scalar r) const
00083 {
00084 e *= sigmoidScale(r, shift_, scale_);
00085 }
00086
00087
00088 bool sigmoid::read(const dictionary& energyScalingFunctionProperties)
00089 {
00090 energyScalingFunction::read(energyScalingFunctionProperties);
00091
00092 sigmoidCoeffs_ =
00093 energyScalingFunctionProperties.subDict(typeName + "Coeffs");
00094
00095 sigmoidCoeffs_.lookup("shift") >> shift_;
00096 sigmoidCoeffs_.lookup("scale") >> shift_;
00097
00098 return true;
00099 }
00100
00101
00102
00103
00104 }
00105 }
00106
00107