Exemplo n.º 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));
    }
}
Exemplo n.º 2
0
static void power_fit(int n, int nset, real **val, real *t)
{
    real *x, *y, quality, a, b, r;
    int   s, i;

    snew(x, n);
    snew(y, n);

    if (t[0] > 0)
    {
        for (i = 0; i < n; i++)
        {
            if (t[0] > 0)
            {
                x[i] = log(t[i]);
            }
        }
    }
    else
    {
        fprintf(stdout, "First time is not larger than 0, using index number as time for power fit\n");
        for (i = 0; i < n; i++)
        {
            x[i] = gmx_log1p(i);
        }
    }

    for (s = 0; s < nset; s++)
    {
        i = 0;
        for (i = 0; i < n && val[s][i] >= 0; i++)
        {
            y[i] = log(val[s][i]);
        }
        if (i < n)
        {
            fprintf(stdout, "Will power fit up to point %d, since it is not larger than 0\n", i);
        }
        lsq_y_ax_b(i, x, y, &a, &b, &r, &quality);
        fprintf(stdout, "Power fit set %3d:  error %.3f  a %g  b %g\n",
                s+1, quality, a, exp(b));
    }

    sfree(y);
    sfree(x);
}