void setprof(void) { int j; real r, msphr; rdtab[0] = mdtab[0] = vctab[0] = 0.0; for (j = 1; j < NTAB; j++) { r = rcut * rpow(((real) j) / (NTAB - 1), 2.0); rdtab[j] = r; mdtab[j] = 1 - rexp(- alpha1 * r) - alpha1 * r * rexp(- alpha1 * r); msphr = (sphr != NULL ? mass_gsp(sphr, r) : 0.0); vctab[j] = rsqrt(msphr / r - gdisk(r) * r); } eprintf("[%s: rcut = %8.4f/alpha M(rcut) = %8.6f mdisk]\n", getargv0(), rdtab[NTAB-1] * alpha1, mdtab[NTAB-1]); if ((mdtab[0] == mdtab[1]) || (mdtab[NTAB-2] == mdtab[NTAB-1])) error("%s: disk mass table is degenerate\n", getargv0()); spline(&rdtab[NTAB], &mdtab[0], &rdtab[0], NTAB); /* for r_d = r_d(m) */ spline(&vctab[NTAB], &rdtab[0], &vctab[0], NTAB); /* for v_c = v_c(r) */ }
local void inittables() { int i; real z; real zmax= 10.0; rcir[0] = vcir[0] = 0.0; for (i = 1; i < NTAB; i++) { rcir[i] = rcut * ((real) i) / (NTAB - 1); vcir[i] = sqrt(- gdisk(rcir[i]) * rcir[i]); } spline(&vcir[NTAB], &rcir[0], &vcir[0], NTAB); for (i = 0; i < NTAB; i++) { rdsk[i] = rcut * pow(((real) i) / (NTAB - 1), 1.5); mdsk[i] = 1 - (1 + alpha * rdsk[i]) * exp(- alpha * rdsk[i]); } spline(&rdsk[NTAB], &mdsk[0], &rdsk[0], NTAB); }