28 cout.sync_with_stdio(
true);
34 std::vector<double> x(Nx);
35 std::vector<double> y(Ny);
36 std::vector<double> u(Nx*Ny);
37 std::vector<double> v(Nx*Ny);
39 std::vector<double> fx(Nx);
40 std::vector<double> fy(Ny);
42 const double x_low = -2.5;
43 const double x_upp = 1.5;
44 const double y_low = -2.5;
45 const double y_upp = 4;
46 const double dx = (x_upp-x_low)/(Nx-1);
47 const double dy = (y_upp-y_low)/(Ny-1);
56 for (
int i=0; i<Nx; i++)
59 for (
int i=0; i<Ny; i++)
65 auto t0=std::chrono::system_clock::now();
70 frame->SetLayout(2,2);
71 frame->LinkCamera(1,frame,0);
73 frame->SetSize(800,400);
74 frame->SetWindowTitle(
"vtkfig");
75 frame->SetFrameTitle(
"Multiple figures in one frame");
78 griddata->SetRectilinearGrid(x,y);
79 griddata->SetPointScalar(u ,
"u");
80 griddata->SetPointScalar(v ,
"v");
85 contour_u->SetData(griddata,
"u");
86 contour_u->SetSurfaceRGBTable(colors,255);
87 frame->AddFigure(contour_u,0);
90 contour_v->SetData(griddata,
"v");
91 contour_v->SetSurfaceRGBTable(colors,255);
92 frame->AddFigure(contour_v,1);
95 xyplot->SetYRange(-0.5,0.5);
96 frame->AddFigure(xyplot,2);
100 for (
int i=0; i<Nx; i++)
101 for (
int j=0; j<Ny; j++)
103 double f=
GU(x[i],y[j],t);
105 if (i==Nx/2) fy[j]=f;
106 if (j==Ny/2) fx[i]=f;
112 griddata->SetPointScalar(u ,
"u");
113 griddata->SetPointScalar(v ,
"v");
116 xyplot->SetPlotColor(0,0,1);
117 xyplot->SetPlotLineType(
"-");
118 xyplot->SetPlotLegend(
"y=0.5");
119 xyplot->AddPlot(x, fx);
120 xyplot->SetPlotColor(1,0,0);
121 xyplot->SetPlotLineType(
"-");
122 xyplot->SetPlotLegend(
"x=0.5");
123 xyplot->AddPlot(y, fy);
127 frame->WritePNG(
"example-multifig.png");
130 auto t1=std::chrono::system_clock::now();
131 double dt=std::chrono::duration_cast<std::chrono::duration<double>>(t1-t0).count();
135 printf(
"Frame rate: %.2f fps\n",(
double)(i1-i0)/4.0);
136 t0=std::chrono::system_clock::now();
double GU(double x, double y, double t)
static std::shared_ptr< Frame > New()
Create frame with multiple subframes.
static std::shared_ptr< ScalarView > New()
static std::shared_ptr< XYPlot > New()
static std::shared_ptr< DataSet > New()
Static constructor of an empty instance.
double GV(double x, double y, double t)
std::vector< RGBPoint > RGBTable