📄 write_tecplot_field_file.cpp
字号:
#include "global.h"
#include "string.h" //字符串处理头文件
#include "stdlib.h" //分配内存头文件
void write_tecplot_field_file(int t)
{
register int x,y,yx,i;
char name[200],RE[10];
int Re;
double xc[max_x*max_y],yc[max_x*max_y],rho[max_x*max_y],u[max_x*max_y],v[max_x*max_y],psi[max_x*max_y]; //xc,yc为各个节点的坐标值
double max_xx=(double)max_x;
double delta_x;
char *s1,*s2,*s3,*s4;
FILE *fp;
//////////////filename文件名称////////////////////////////////////
Re=(int)((max_y-1)*u_0/nu);
strcpy(name,"dc."); //字符串拷贝
sprintf(RE,"%d",Re); //送格式化输出到字符串中
strcat(name,RE); //字符串连接
strcat(name,".");
sprintf(RE,"%06d",t);
strcat(name,RE);
strcat(name,".plt");
///////////////////////////////////////////////////////
//header of tecplot.dat
if(!(s1=(char *)calloc(100,sizeof(char)))) {
printf("OUT OF MEMORY\n");
exit(1);}
if(!(s2=(char *)calloc(10,sizeof(char)))) {
printf("OUT OF MEMORY\n");
exit(1);}
if(!(s3=(char *)calloc(10,sizeof(char)))) {
printf("OUT OF MEMORY\n");
exit(1);}
if(!(s4=(char *)calloc(10,sizeof(char)))) {
printf("OUT OF MEMORY\n");
exit(1);}
///////////////////////////////////////////////////////
//为xc,yc,rho,u,v,psi赋值
for(y=0;y<max_y;y++)
{
for(x=0;x<max_x;x++)
{
yx=x+y*max_x;
xc[yx] = (double)(x)/(max_x-1);
yc[yx] = (double)(y)/(max_y-1);
rho[yx]=(double)(f[0][y][x]+f[1][y][x]+f[2][y][x]+f[3][y][x]+f[4][y][x]+f[5][y][x]+f[6][y][x]+f[7][y][x]+f[8][y][x]); //密度
u[yx]=(double)((f[1][y][x]-f[3][y][x]+f[5][y][x]+f[8][y][x]-f[6][y][x]-f[7][y][x])/rho[yx]); //x方向速度
v[yx]=(double)((f[2][y][x]-f[4][y][x]+f[5][y][x]+f[6][y][x]-f[7][y][x]-f[8][y][x])/rho[yx]); //y方向速度
psi[yx]=0.0; //流函数
}
}
delta_x = 1.0/(max_xx-1);
for(y=1;y<max_y-1;y++) //只计算流场内部的流函数
{
for(x=1;x<max_x-1;x++)
{
yx=x+y*max_x;
psi[yx]=0.5*(0.5*delta_x*v[yx+1]);
for (i=1;i<x-1;i++)
{
psi[yx]+= 0.5 * delta_x *( v[i+y*max_x] + v[(i+1)+y*max_x] );
}
}
}
///////////////////////////////////////////////////////
//write to file
//**********************************************
if(!(fp=fopen(name,"wb+"))) //打开文件
{
printf("read file wrong!");
exit(1);
}
strcpy(s1,"VARIABLES = X, Y, PRESS,VX, VY, FAI\n");
fprintf(fp,"%s\n",s1);
strcpy(s2,"ZONE I=");
fprintf(fp,"%s",s2);
fprintf(fp,"%d",max_x);
strcpy(s3,", J=");
fprintf(fp,"%s",s3);
fprintf(fp,"%d\n",max_y);
strcpy(s4,"F=POINT");
fprintf(fp,"%s\n",s4);
for(i=0;i<max_x*max_y;i++)
{
fprintf(fp,"%f\t%f\t%g\t%g\t%g\t%g\n",xc[i],yc[i],rho[i],u[i],v[i],psi[i]);
}
fclose(fp);
free(xc );
free(yc );
free(rho);
free(u );
free(v );
free(psi);
free(s1);
free(s2);
free(s3);
free(s4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -