本文整理汇总了C++中CPUTimer::diff方法的典型用法代码示例。如果您正苦于以下问题:C++ CPUTimer::diff方法的具体用法?C++ CPUTimer::diff怎么用?C++ CPUTimer::diff使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CPUTimer
的用法示例。
在下文中一共展示了CPUTimer::diff方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
float vx,vy,vxy,vz,vxyz;
float vgx,vgy;
float verror;
px = (particles.px[j] + particles.ix[j])*pdata.dxdi + pdata.xmin;
py = (particles.py[j] + particles.iy[j])*pdata.dydi + pdata.ymin;
vx = particles.vx[j];
vy = particles.vy[j];
vz = particles.vz[j];
vxy = sqrt(vx*vx+vy*vy);
vxyz = sqrt(vxy*vxy + vz*vz);
rl = vxy/Bz;
gx = vy*Bz/sqrt(vx*Bz*vx*Bz + vy*Bz*vy*Bz)*rl + px;
gy = -vx*Bz/sqrt(vx*Bz*vx*Bz + vy*Bz*vy*Bz)*rl + py;
x_plot[j][i] = px;
y_plot[j][i] = py;
gx_plot[j][i] = gx;
gy_plot[j][i] = gy;
if(i >= 1)
{
vgx = (gx_plot[j][i] - gx_plot[j][0])/(dt*(i));
vgy = (gy_plot[j][i] - gy_plot[j][0])/(dt*(i));
verror = fabs(Ey/Bz - vgx)/(Ey/Bz);
error_array[j] = fmax(error_array[j],verror);
avg_error += verror;
n_error ++;
// printf("true[%i] v = %e, %e actual v = %e, %e, error = %e\n",
// j,Ey/Bz,0.0f,vgx,vgy,verror);
}
}
//if((i+1)%64 == 0)
//gnuplot_resetplot(plot_anim);
/*
float diff_avg = 0.0;
for(int j=0;j<nptcls;j++)
{
x_plot[j][i] = (particles.px[j] + particles.ix[j])*pdata.dxdi + pdata.xmin;
y_plot[j][i] = (particles.py[j] + particles.iy[j])*pdata.dydi + pdata.ymin;
//printf("particle %i with position %f, %f\n",j,x_plot[j][i],y_plot[j][i]);
// x_plot_a[j] = x_plot[j][i];
// y_plot_a[j] = y_plot[j][i];
}
*/
//avg_error += diff_avg / steps;
//gnuplot_plot_xy(plot_anim,x_plot_a,y_plot_a,nptcls,NULL);
}
timer.stop();
printf("average error = %e \n",avg_error/((float)n_error));
printf("Run did %f particles per second\n",nptcls*steps/(timer.diff()*1.0e-3));
for(int j=0;j<nptcls;j++)
{
if(error_array[j] >= 1.0e-2)
gnuplot_plot_xy(plot,x_plot[j],y_plot[j],steps,NULL);
}
//moments->plot(nz/2,0,HOMoments_currentx);
printf("Press 'Enter' to continue\n");
getchar();
moments->close_plot();
gnuplot_close(plot);
gnuplot_close(plot_anim);
}
示例2: main
//.........这里部分代码省略.........
printf("Data Structure Values Different for particle %i!!!\n",i);
printf("%f, %f, %f, %f, %f, %f\n",px1,py1,pz1,vx1,vy1,vz1);
printf("%f, %f, %f, %f, %f, %f\n",px2,py2,pz2,vx2,vy2,vz2);
}
}
// Setup E-field
for(int i=0;i<nx;i++)
{
for(int j=0;j<ny;j++)
{
for(int k=0;k<nz;k++)
{
float x = i*pdata.dxdi+pdata.xmin;
float y = j*pdata.dydi+pdata.ymin;
float z = k*pdata.dzdi+pdata.zmin;
float Ex = -1.0*x;
fields.getE(i,j,k,0) = 0;
fields.getE(i,j,k,1) = Ey;
fields.getE(i,j,k,2) = 0.0;
fields.getB(i,j,k,0) = 0;
fields.getB(i,j,k,1) = 0;
fields.getB(i,j,k,2) = Bz;
// printf("fields(%i,%i,%i) = %f, %f, %f\n",i,j,k,
// fields.getE(i,j,k,0),fields.getE(i,j,k,1),fields.getE(i,j,k,2));
}
}
}
fields.q2m[0] = 1.0;
printf("Efield setup complete\n");
float time;
double avg_error = 0.0;
int n_error = 0;
CPUTimer timer;
CPUTimer timer2;
moments->init_plot();
int nsteps1 = 0;
int nsteps2 = 0;
timer.start();
for(int i=0;i<steps;i++)
{
//time = dtau0*(i);
//moments.set_vals(0);
nsteps1 += particles.push(&pdata,&fields,moments);
printf("finished step %i\n",i);
}
timer.stop();
timer2.start();
for(int i=0;i<steps;i++)
{
//time = dtau0*(i);
//moments.set_vals(0);
nsteps2 += particles2.push(&pdata,&fields,moments);
printf("finished step %i\n",i);
}
timer2.stop();
printf("SoA Run did %f particle-steps per second with %i steps\n",nsteps1/(timer.diff()*1.0e-3),nsteps1);
printf("AoS Run did %f particle-steps per second with %i steps\n",nsteps2/(timer2.diff()*1.0e-3),nsteps2);
//moments->plot(nz/2,0,HOMoments_currentx);
printf("Press 'Enter' to continue\n");
getchar();
//moments->close_plot();
//particles2.CPUfree();
}