20#define M_PI 3.14159265358979323846
43 return 0.836 * pow(A, 1.0 / 3.0) + 0.570;
56 return 0.77 * pow(A, 1.0 / 3.0) + 0.98;
68 *a = t / (4 * log(3));
71 5.0 / 3.0 * R_rms * R_rms - 7.0 / 3.0 *
M_PI *
M_PI * (*a) * (*a);
94 const double R0 = sqrt(5.0 / 3.0) * R_rms;
97 return 3.0 * Z / (4.0 *
M_PI * R0 * R0 * R0);
112 const double R0 = sqrt(5.0 / 3.0) * R_rms;
115 return -Z / (2.0 * R0) * (3.0 - r * r / (R0 * R0));
125 const double xi = 3.0 / (2.0 * R_rms * R_rms);
126 const double rho0 = Z * pow(xi /
M_PI, 1.5);
128 return rho0 * exp(-xi * r * r);
140 const double xi = 3.0 / (2.0 * R_rms * R_rms);
142 return -Z / r * erf(sqrt(xi) * r);
150 const double c3 = c * c * c;
151 const double rho0 = 3.0 * Z / (4 *
M_PI * c3 * N);
153 return rho0 / (1.0 + exp((r - c) / a));
161 const double c3 = c * c * c;
162 const double rho0 = 3.0 * Z / (4 *
M_PI * c3 * N);
165 4 *
M_PI * rho0 / Z * pow(c, 5) / 5.0 *
166 (1.0 + 10.0 / 3.0 * a * a *
M_PI *
M_PI / (c * c) +
167 7.0 / 3.0 * pow(
M_PI, 4) * pow(a, 4) / pow(c, 4) -
183 const double a2 = a * a;
184 const double a3 = a * a * a;
185 const double c3 = c * c * c;
192 return -Z / (N * r) * (N + 3 * a2 * r / c3 * S2 + 6 * a3 / c3 * S3);
197 const double r3 = r * r * r;
199 return -Z / (N * r) *
200 (1.5 * r / c - r3 / (2 * c3) +
M_PI *
M_PI * a2 * r / (2 * c3) -
201 3 * a2 * r / c3 * P2 + 6 * a3 / c3 * (P3 - S3));
209 const double a2 = a * a;
210 const double a3 = a * a * a;
211 const double c2 = c * c;
212 const double c3 = c * c * c;
214 return 1.0 +
M_PI *
M_PI * a2 / c2 -
222 double a,
double k) {
224 const double c3 = c * c * c;
225 const double rho0 = 3.0 * Z / (4 *
M_PI * c3 * Nk);
227 return rho0 * (1 + k * pow(r / c, 2)) / (1.0 + exp((r - c) / a));
235 const double c3 = c * c * c;
236 const double rho0 = 3.0 * Z / (4 *
M_PI * c3 * Nk);
238 const double part_r4 =
240 (1.0 + 10.0 / 3.0 * a * a *
M_PI *
M_PI / (c * c) +
241 7.0 / 3.0 * pow(
M_PI, 4) * pow(a, 4) / pow(c, 4) -
244 const double part_r6 =
246 (1.0 + 7.0 * a * a *
M_PI *
M_PI / (c * c) +
247 49.0 / 3.0 * pow(
M_PI, 4) * pow(a, 4) / pow(c, 4) +
248 31.0 / 3.0 * pow(
M_PI, 6) * pow(a, 6) / pow(c, 6) -
251 const double r2 = 4 *
M_PI * rho0 / Z * (part_r4 + k / (c * c) * part_r6);
268 double a,
double k) {
287 F0 = -pow(r, 3) / 6.0 - r * a * a * S2 + 2.0 * pow(a, 3) * S3 +
288 r * c * c / 2.0 +
M_PI *
M_PI / 6.0 * r * a * a -
292 F2 = -pow(r, 5) / 20.0 - pow(r, 3) * pow(a, 2) * S2 +
293 6.0 * pow(r, 2) * pow(a, 3) * S3 - 18.0 * r * pow(a, 4) * S4 +
294 24.0 * pow(a, 5) * S5 + r * pow(c, 4) / 4.0 +
295 r *
M_PI *
M_PI * c * c * a * a / 2.0 +
296 r * pow(a, 4) * pow(
M_PI, 4) * 7.0 / 60.0 -
305 F0 = pow(c, 3) / 3.0 +
M_PI *
M_PI / 3.0 * c * a * a -
307 r * a * a * S2 + 2.0 * pow(a, 3) * S3;
310 F2 = pow(c, 5) / 5.0 + 2.0 * pow(c, 3) * a * a *
M_PI *
M_PI / 3.0 +
311 7.0 * pow(a, 4) * c * pow(
M_PI, 4) / 15.0 -
313 pow(a, 2) * pow(r, 3) * S2 + 6.0 * pow(a, 3) * pow(r, 2) * S3 +
314 18.0 * r * pow(a, 4) * S4 + 24.0 * pow(a, 5) * S5;
317 return -Z / (Nk * r) * 3.0 / pow(c, 3) * (F0 + k / (c * c) * F2);
324 const double a2 = a * a;
325 const double a3 = a * a2;
326 const double a4 = a * a3;
327 const double a5 = a * a4;
328 const double c2 = c * c;
329 const double c3 = c * c2;
330 const double c4 = c * c3;
331 const double c5 = c * c4;
double libgrpp_fermi_model_norm_factor(double c, double a)
double libgrpp_coulomb_potential_ball(double r, double Z, double R_rms)
double libgrpp_charge_density_fermi_bubble(double r, double Z, double c, double a, double k)
int libgrpp_estimate_fermi_model_parameters(double R_rms, double *c, double *a)
double libgrpp_coulomb_potential_gaussian(double r, double Z, double R_rms)
double libgrpp_rms_radius_fermi_bubble(int Z, double c, double a, double k)
double libgrpp_estimate_nuclear_rms_radius_golovko_2008(int A)
double libgrpp_coulomb_potential_point(double r, double Z)
double libgrpp_coulomb_potential_fermi_bubble(double r, double Z, double c, double a, double k)
double libgrpp_estimate_nuclear_rms_radius_johnson_1985(int A)
double libgrpp_charge_density_fermi(double r, double Z, double c, double a)
double libgrpp_coulomb_potential_fermi(double r, double Z, double c, double a)
double libgrpp_fermi_model_Sk(int k, double x)
double libgrpp_fermi_bubble_model_norm_factor(double c, double a, double k)
double libgrpp_rms_radius_fermi(int Z, double c, double a)
double libgrpp_charge_density_gaussian(double r, double Z, double R_rms)
double libgrpp_charge_density_ball(double r, double Z, double R_rms)
double libgrpp_specfunc_fermi_sk(int k, double x)