谢谢sob老师的解答
我找到了需要更改的源程序函数,但是刚接触程序改了多次也没成功,老师和各位大佬能否指点一下,我想要的余弦函数是E = E0+E0cos(wt), 原函数如下。
static void calc_f_el(FILE *fp, int start, int homenr,
real charge[], rvec f[],
t_cosines Ex[], t_cosines Et[], double t)
{
rvec Ext;
real t0;
int i, m;
for (m = 0; (m < DIM); m++)
{
if (Et[m].n > 0)
{
if (Et[m].n == 3)
{
t0 = Et[m].a[1];
Ext[m] = cos(Et[m].a[0]*(t-t0))*exp(-sqr(t-t0)/(2.0*sqr(Et[m].a[2])));
}
else
{
Ext[m] = cos(Et[m].a[0]*t);
}
}
else
{
Ext[m] = 1.0;
}
if (Ex[m].n > 0)
{
/* Convert the field strength from V/nm to MD-units */
Ext[m] *= Ex[m].a[0]*FIELDFAC;
for (i = start; (i < start+homenr); i++)
{
f[m] += charge*Ext[m];
}
}
else
{
Ext[m] = 0;
}
}
if (fp != NULL)
{
fprintf(fp, "%10g %10g %10g %10g #FIELD\n", t,
Ext[XX]/FIELDFAC, Ext[YY]/FIELDFAC, Ext[ZZ]/FIELDFAC);
}
}
static void calc_virial(int start, int homenr, rvec x[], rvec f[],
tensor vir_part, t_graph *graph, matrix box,
t_nrnb *nrnb, const t_forcerec *fr, int ePBC)
{
int i;