VisIt简单的数据编写.docx
- 文档编号:11881101
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:17
- 大小:308.47KB
VisIt简单的数据编写.docx
《VisIt简单的数据编写.docx》由会员分享,可在线阅读,更多相关《VisIt简单的数据编写.docx(17页珍藏版)》请在冰豆网上搜索。
VisIt简单的数据编写
VisIt学习笔记
●规则网格数据
#include
#include
intmain(intargc,char*argv[])
{
#defineNX10
#defineNY20
#defineNZ30
inti,j,k,index=0;
intdims[]={NX,NY,NZ};
intnvars=2;
intvardims[]={1,1};
intcentering[]={0,1};
constchar*varnames[]={"zonal","nodal"};
floatzonal[NZ-1][NY-1][NX-1],nodal[NZ][NY][NX];
float*vars[]={(float*)zonal,(float*)nodal};
/*Createzonalvariable*/
for(k=0;k for(j=0;j for(i=0;i zonal[k][j][i]=(float)index; /*Createnodalvariable.*/ for(k=0;k for(j=0;j for(i=0;i nodal[k][j][i]=sqrt(i*i+j*j+k*k); /*Usevisit_writertowritearegularmeshwithdata.*/ write_regular_mesh("vwregmesh.vtk",0,dims,nvars,vardims, centering,varnames,vars); return0; } 函数: write_regular_mesh("vwregmesh.vtk",0,dims,nvars,vardims,centering,varnames,vars); 参数说明: "vwregmesh.vtk": vtk文件名(constchar*); 0: useBinary,0为ASCII,非0为二进制(int); dims: {nI,nJ,nK},各方向的结点数(三维int数组); nvars: 变量数目(int); vardims: 每个变量的维数,标量1维,矢量3维(nars维int数组); centering: 每个变量的定心,0表示基于单元,非0表示基于结点(nars维int数组); varnames: 变量名字(nars维constchar*) vars: 变量数组,大小为结点/单元*vardims[i](float二维数组) VTK文件格式(ASCII): #vtkDataFileVersion2.0 WrittenusingVisItwriter ASCII DATASETRECTILINEAR_GRID DIMENSIONS102030 X_COORDINATES10float 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+006.000000000000e+007.000000000000e+008.000000000000e+009.000000000000e+00 Y_COORDINATES20float 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+006.000000000000e+007.000000000000e+008.000000000000e+009.000000000000e+001.000000000000e+011.100000000000e+011.200000000000e+011.300000000000e+011.400000000000e+011.500000000000e+011.600000000000e+011.700000000000e+011.800000000000e+011.900000000000e+01 Z_COORDINATES30float 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+006.000000000000e+007.000000000000e+008.000000000000e+009.000000000000e+001.000000000000e+011.100000000000e+011.200000000000e+011.300000000000e+011.400000000000e+011.500000000000e+011.600000000000e+011.700000000000e+011.800000000000e+011.900000000000e+012.000000000000e+012.100000000000e+012.200000000000e+012.300000000000e+012.400000000000e+012.500000000000e+012.600000000000e+012.700000000000e+012.800000000000e+012.900000000000e+01 CELL_DATA4959 SCALARSzonalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+00 省略 4.955000000000e+034.956000000000e+034.957000000000e+034.958000000000e+03 POINT_DATA6000 SCALARSnodalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+00 省略 3.518522262573e+013.536948013306e+013.558089447021e+013.581898880005e+01 绘图结果(mesh+nodal): ●直线网格数据 #include intmain(intargc,char*argv[]) { #defineNX4 #defineNY5 /*Rectilinearmeshcoordinates.*/ floatx[]={0.,1.,2.5,5.}; floaty[]={0.,2.,2.25f,2.55f,5.}; floatz[]={0.}; intdims[]={NX,NY,1}; intndims=2; /*ZonalandNodalvariabledata.*/ floatzonal[NY-1][NX-1],nodal[NY][NX]; /*Infoaboutthevariablestopasstovisit_writer.*/ intnvars=2; intvardims[]={1,1}; intcentering[]={0,1}; constchar*varnames[]={"zonal","nodal"}; float*vars[]={(float*)zonal,(float*)nodal}; /*Createazonalvariable.*/ inti,j,index=0; for(j=0;j for(i=0;i zonal[j][i]=(float)index; /*Createanodalvariable.*/ index=0; for(j=0;j for(i=0;i nodal[j][i]=(float)index; /*Passthedatatovisit_writertowriteaVTKfile.*/ write_rectilinear_mesh("vwrect2d.vtk",0,dims,x,y,z,nvars, vardims,centering,varnames,vars); return0; } 函数: write_rectilinear_mesh("vwrect2d.vtk",0,dims,x,y,z,nvars,vardims,centering,varnames,vars); 参数说明: "vwrect2d.vtk": vtk文件名(constchar*); 0: useBinary,0为ASCII,非0为二进制(int); dims: {nI,nJ,nK},各方向的结点数(三维int数组); x,y,z: 各方向的结点坐标数组(长度为dims[i]); nvars: 变量数目(int); vardims: 每个变量的维数,标量1维,矢量3维(nars维int数组); centering: 每个变量的定心,0表示基于单元,非0表示基于结点(nars维int数组); varnames: 变量名字(nars维constchar*) vars: 变量数组,大小为结点/单元*vardims[i](float二维数组) VTK文件格式(ASCII): #vtkDataFileVersion2.0 WrittenusingVisItwriter ASCII DATASETRECTILINEAR_GRID DIMENSIONS451 X_COORDINATES4float 0.000000000000e+001.000000000000e+002.500000000000e+005.000000000000e+00 Y_COORDINATES5float 0.000000000000e+002.000000000000e+002.250000000000e+002.549999952316e+005.000000000000e+00 Z_COORDINATES1float 0.000000000000e+00 CELL_DATA12 SCALARSzonalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+006.000000000000e+007.000000000000e+008.000000000000e+009.000000000000e+001.000000000000e+011.100000000000e+01 POINT_DATA20 SCALARSnodalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+006.000000000000e+007.000000000000e+008.000000000000e+009.000000000000e+001.000000000000e+011.100000000000e+011.200000000000e+011.300000000000e+011.400000000000e+011.500000000000e+011.600000000000e+011.700000000000e+011.800000000000e+011.900000000000e+01 绘图结果(mesh+nodal): ●曲线网格数据(必须提供每个点的X、Y、Z坐标) #include #defineNX4 #defineNY3 #defineNZ2 intmain(intargc,char*argv[]) { /*Curvilinearmeshpointsstoredx0,y0,z0,x1,y1,z1,...*/ floatpts[]={0,0.5,0,1,0,0,2,0,0, 3,0.5,0,0,1,0,1,1,0, 2,1,0,3,1,0,0,1.5,0, 1,2,0,2,2,0,3,1.5,0, 0,0.5,1,1,0,1,2,0,1, 3,0.5,1,0,1,1,1,1,1, 2,1,1,3,1,1,0,1.5,1, 1,2,1,2,2,1,3,1.5,1 }; intdims[]={NX,NY,NZ}; /*Zonalandnodalvariabledata.*/ floatzonal[NZ-1][NY-1][NX-1],nodal[NZ][NY][NX]; /*Infoaboutthevariablestopasstovisit_writer.*/ intnvars=2; intvardims[]={1,1}; intcentering[]={0,1}; constchar*varnames[]={"zonal","nodal"}; float*vars[]={(float*)zonal,(float*)nodal}; inti,j,k,index=0; /*Createzonalvariable*/ for(k=0;k for(j=0;j for(i=0;i zonal[k][j][i]=(float)index; /*Createnodalvariable.*/ index=0; for(k=0;k for(j=0;j for(i=0;i nodal[k][j][i]=index; /*Passthedatatovisit_writertowriteabinaryVTKfile.*/ write_curvilinear_mesh("vwcurv3d.vtk",0,dims,pts,nvars, vardims,centering,varnames,vars); return0; } 函数: write_curvilinear_mesh("vwcurv3d.vtk",0,dims,pts,nvars,vardims,centering,varnames,vars); 参数说明: "vwcurv3d.vtk": vtk文件名(constchar*); 0: useBinary,0为ASCII,非0为二进制(int); dims: {nI,nJ,nK},各方向的结点数(三维int数组); pts: nI*nJ*nK*3的数组,结点坐标(x0,y0,z0,x1,y1,z1……) nvars: 变量数目(int); vardims: 每个变量的维数,标量1维,矢量3维(nars维int数组); centering: 每个变量的定心,0表示基于单元,非0表示基于结点(nars维int数组); varnames: 变量名字(nars维constchar*) vars: 变量数组,大小为结点/单元*vardims[i](float二维数组) VTK文件格式(ASCII): #vtkDataFileVersion2.0 WrittenusingVisItwriter ASCII DATASETSTRUCTURED_GRID DIMENSIONS432 POINTS24float 0.000000000000e+005.000000000000e-010.000000000000e+001.000000000000e+00 省略 1.000000000000e+003.000000000000e+001.500000000000e+001.000000000000e+00 CELL_DATA6 SCALARSzonalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+004.000000000000e+005.000000000000e+00 POINT_DATA24 SCALARSnodalfloat LOOKUP_TABLEdefault 0.000000000000e+001.000000000000e+002.000000000000e+003.000000000000e+00 省略 2.000000000000e+012.100000000000e+012.200000000000e+012.300000000000e+01 绘图结果(mesh+nodal): ●点网格数据 #include #include #defineNPTS100 intmain(intargc,char*argv[]) { /*Createsomepointsanddatatosave.*/ inti; floatpts[NPTS][3],data[NPTS]; intnvars=2; intvardims[]={1,3}; constchar*varnames[]={"data","ptsvec"}; float*vars[]={(float*)pts,data}; for(i=0;i { /*Makeapoint.*/ floatt=((float)i)/((float)(NPTS-1)); floatangle=3.14159*10.*t; pts[i][0]=t*cos(angle); pts[i][1]=t*sin(angle); pts[i][2]=t; /*Makeascalar*/ data[i]=t*cos(angle); } /*Passthemeshanddatatovisit_writer.*/ write_point_mesh("vwpoint3d.vtk",1,NPTS,(float*)pts,nvars, vardims,varnames,vars); return0; } 函数: write_point_mesh("vwpoint3d.vtk",1,NPTS,(float*)pts,nvars,vardims,varnames,vars);参数说明: "vwpoint3d.vtk": vtk文件名(constchar*); 0: useBinary,0为ASCII,非0为二进制(int); NPTS: 网格点的数目; pts: 结点的位置信息(x1,y1,z1,x2,y2,z2……); nvars: 变量数目(int); vardims: 每个变量的维数,标量1维,矢量3维(nars维int数组); varnames: 变量名字(nars维constchar*) vars: 变量数组,大小为结点/单元数*vardims[i](float二维数组) VTK文件格式(ASCII): #vtkDataFileVersion2.0 WrittenusingVisItwriter ASCII DATASETUNSTRUCTURED_GRID POINTS100float 0.000000000000e+000.000000000000e+000.000000000000e+009.596678428352e-03 省略 9.898989796638e-011.000000000000e+00-2.725916419877e-051.000000000000e+00 CELLS100200 10 省略 199 CELL_TYPES100 1 省略 1 CELL_DATA100 POINT_DATA100 SCALARSdatafloat LOOKUP_TABLEdefault 0.000000000000e+000.000000000000e+000.000000000000e+009.59667842835
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisIt 简单 数据 编写