示例#1
0
static real wSsolid(real nu, real beta)
{
    real bhn = beta*PLANCK*nu;

    if (bhn == 0)
    {
        return 1;
    }
    else
    {
        return bhn/gmx_expm1(bhn) - gmx_log1p(-exp(-bhn));
    }
}
示例#2
0
static real wEsolid(real nu, real beta)
{
    real bhn = beta*PLANCK*nu;

    if (bhn == 0)
    {
        return 1;
    }
    else
    {
        return bhn/2 + bhn/gmx_expm1(bhn)-1;
    }
}
示例#3
0
/*! \brief Exponent minus 1 function that prevents overflow */
static double safe_expm1(double x)
{
    double exp_max = 200;
    double exp_min = -exp_max;
    if (x <= exp_min)
    {
        return -1;
    }
    else if (x >= exp_max)
    {
        return exp(exp_max);
    }
    else
    {
        return gmx_expm1(x);
    }
}