⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 write_tecplot_field_file.cpp

📁 Lattice Boltzmann用于模拟方腔流的程序。 生成的plt文件需用tecplot软件打开。
💻 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 + -