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

📄 initwin.c

📁 美国berkeley大学开发的有界等离子体粒子1d3v计算机模拟程序,很实用
💻 C
📖 第 1 页 / 共 2 页
字号:
	ptr->npoint	= &hist_hi;
	ptr->color	= COLOR[4];
	window[wincnt].data = ptr;

	wincnt++;
	window[wincnt].Y_Label = "Total Energy(t)";
	window[wincnt].X_Label = TimePtr;
	window[wincnt].state	  = 0;
	window[wincnt].xscale  = 1;
	window[wincnt].yscale  = 1;
	XAutoRescale(window[wincnt]);
	YAutoRescale(window[wincnt]);
	SetSemilog(window[wincnt]);
	SetWindowPosition(wincnt, FOURTHQUAD);
	ptr = SetupDataStruct();
	ptr->y		= te_hist;
	ptr->x		= t_array;
	ptr->npoint	= &hist_hi;
	ptr->color	= COLOR[4];
	window[wincnt].data = ptr;

	if(nfft)
	{
		sprintf(freqbuf, "Freq (df=%.3G)", df);

		wincnt++;
		window[wincnt].Y_Label = "Mid Potential (Local)";
		window[wincnt].X_Label = TimePtr;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, FOURTHQUAD);
		ptr = SetupDataStruct();
		ptr->y		= phi_hist[1];
		ptr->x		= Local_t_array;
		ptr->npoint	= &thist_hi;
		ptr->color	= COLOR[3];
		window[wincnt].data = ptr;

		wincnt++;
		window[wincnt].Y_Label = "LHS Potential (Local)";
		window[wincnt].X_Label = TimePtr;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, FOURTHQUAD);
		ptr = SetupDataStruct();
		ptr->y		= phi_hist[0];
		ptr->x		= Local_t_array;
		ptr->npoint	= &thist_hi;
		ptr->color	= COLOR[3];
		window[wincnt].data = ptr;

		wincnt++;
		window[wincnt].Y_Label = "Current (Local)";
		window[wincnt].X_Label = TimePtr;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, FOURTHQUAD);
		ptr = SetupDataStruct();
		ptr->y		= cur_hist;
		ptr->x		= Local_t_array;
		ptr->npoint	= &thist_hi;
		ptr->color	= COLOR[3];
		window[wincnt].data = ptr;

		wincnt++;
		window[wincnt].Y_Label = "Mag of Mid V(f)";
		window[wincnt].X_Label = freqbuf;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetSemilog(window[wincnt]);
		SetWindowPosition(wincnt, UPPERHALF);
		ptr = SetupDataStruct();
		ptr->y		= mphi_fft;
		ptr->x		= f_array;
		ptr->npoint	= &freq_hi;
		ptr->color	= COLOR[5];
		window[wincnt].data = ptr;
		
		wincnt++;
		window[wincnt].Y_Label = "Mag of I(f)";
		window[wincnt].X_Label = freqbuf;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetSemilog(window[wincnt]);
		SetWindowPosition(wincnt, UPPERHALF);
		ptr = SetupDataStruct();
		ptr->y		= cur_fft;
		ptr->x		= f_array;
		ptr->npoint	= &freq_hi;
		ptr->color	= COLOR[5];
		window[wincnt].data = ptr;
		
		wincnt++;
		window[wincnt].Y_Label = "Mag of LHS V(f)";
		window[wincnt].X_Label = freqbuf;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetSemilog(window[wincnt]);
		SetWindowPosition(wincnt, UPPERHALF);
		ptr = SetupDataStruct();
		ptr->y		= phi_fft;
		ptr->x		= f_array;
		ptr->npoint	= &freq_hi;
		ptr->color	= COLOR[5];
		window[wincnt].data = ptr;
		
		wincnt++;
		window[wincnt].Y_Label = "Mag of Z(f)";
		window[wincnt].X_Label = freqbuf;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetSemilog(window[wincnt]);
		SetWindowPosition(wincnt, UPPERHALF);
		ptr = SetupDataStruct();
		ptr->y		= z_fft;
		ptr->x		= f_array;
		ptr->npoint	= &freq_hi;
		ptr->color	= COLOR[5];
		window[wincnt].data = ptr;
		
		wincnt++;
		window[wincnt].Y_Label = "Phase of Z(f)";
		window[wincnt].X_Label = freqbuf;
		window[wincnt].state	  = 0;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		XAutoRescale(window[wincnt]);
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, LOWERHALF);
		ptr = SetupDataStruct();
		ptr->y		= z_fft+freq_hi;
		ptr->x		= f_array;
		ptr->npoint	= &freq_hi;
		ptr->color	= COLOR[5];
		window[wincnt].data = ptr;
	}

	if(ecollisional)
	{
		wincnt++;
		window[wincnt].Y_Label = "Ionization Profile";
		window[wincnt].X_Label = "r";
		window[wincnt].state	  = 0;
		window[wincnt].xmax	  = r1*dr;
		window[wincnt].xmin	  = r0*dr;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, THIRDQUAD);
		ptr = SetupDataStruct();
		ptr->y		= ionrate;
		ptr->x		= r_array;
		ptr->npoint	= &ng;
		ptr->color	= COLOR[6];
		window[wincnt].data = ptr;

		wincnt++;
		window[wincnt].Y_Label = "Average ne(r)";
		window[wincnt].X_Label = "r";
		window[wincnt].state	  = 0;
		window[wincnt].xmax	  = r1*dr;
		window[wincnt].xmin	  = r0*dr;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = nc2p;
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, THIRDQUAD);
		ptr = SetupDataStruct();
		ptr->y		= avene;
		ptr->x		= r_array;
		ptr->npoint	= &ng;
		ptr->color	= COLOR[6];
		window[wincnt].data = ptr;
	}

	if(icollisional)
	{
		wincnt++;
		window[wincnt].Y_Label= "Charge X Profile";
		window[wincnt].X_Label = "r";
		window[wincnt].state	  = 0;
		window[wincnt].xmax	  = r1*dr;
		window[wincnt].xmin	  = r0*dr;
		window[wincnt].xscale  = 1;
		window[wincnt].yscale  = 1;
		YAutoRescale(window[wincnt]);
		SetLinear(window[wincnt]);
		SetWindowPosition(wincnt, THIRDQUAD);
		ptr = SetupDataStruct();
		ptr->y		= chrgxrate;
		ptr->x		= r_array;
		ptr->npoint	= &ng;
		ptr->color	= COLOR[6];
		window[wincnt].data = ptr;
	}

	/************************************************************/
	/* This function must be called at the end of the routine   */

	InitDiagnostics();
}

/****************************************************************/
char Revision[]={'1','.','0','0'};

void Dump(filename)
char *filename;
{
	int i, j;
	float ftemp;
	FILE *DMPFile;

	if ((DMPFile = fopen(filename, "w+b")) == NULL)
	{
		ExitMsg("Dump: open failed");
		return;
	}
	fwrite(Revision, sizeof(char), 4, DMPFile);
	fwrite(&t, sizeof(double), 1, DMPFile);
	fwrite(&oldsigma, sizeof(float), 1, DMPFile);
	fwrite(&extq, sizeof(float), 1, DMPFile);
	fwrite(&extq_1, sizeof(float), 1, DMPFile);
	fwrite(&extq_2, sizeof(float), 1, DMPFile);
	fwrite(&extq_3, sizeof(float), 1, DMPFile);
	fwrite(jwall, sizeof(float), nsp, DMPFile);
	fwrite(&nsp, sizeof(int), 1, DMPFile);
	fwrite(np, sizeof(int), nsp, DMPFile);

	for (j=0; j<nsp; j++)
	{
		for (i=0; i<np[j]; i++)
		{
			ftemp = (r[j][i] -r0)/nc;
			fwrite(&ftemp, sizeof(float), 1, DMPFile);
			ftemp = vr[j][i]*vscale;
			fwrite(&ftemp, sizeof(float), 1, DMPFile);
			ftemp = vth[j][i]*vscale;
			fwrite(&ftemp, sizeof(float), 1, DMPFile);
			ftemp = vph[j][i]*vscale;
			fwrite(&ftemp, sizeof(float), 1, DMPFile);
		}
	}

	fclose(DMPFile);
}

/****************************************************************/

void Restore(filename)
char *filename;
{
	char Rev[5];
	int i, j;
	float ftemp;
	FILE *DMPFile;

	if ((DMPFile = fopen(filename, "r+b")) == NULL)
	{
		puts("Dump: open failed");
		return;
	}
	fread(Rev, sizeof(char), 4, DMPFile);
	for (i=0; i<4; i++)
		if (Rev[i]!=Revision[i])
		{
			puts("Incompatible dump file version");
			putch(7);
			exit(1);
		}
	fread(&t, sizeof(double), 1, DMPFile);
	fread(&sigma, sizeof(float), 1, DMPFile);
	fread(&extq, sizeof(float), 1, DMPFile);
	fread(&extq_1, sizeof(float), 1, DMPFile);
	fread(&extq_2, sizeof(float), 1, DMPFile);
	fread(&extq_3, sizeof(float), 1, DMPFile);
	fread(jwall, sizeof(float), nsp, DMPFile);
	fread(&nsp, sizeof(int), 1, DMPFile);
	fread(np, sizeof(int), nsp, DMPFile);

	for (j=0; j<nsp; j++)
	{
		for (i=0; i<np[j]; i++)
		{
			fread(&ftemp, sizeof(float), 1, DMPFile);
			r[j][i] = nc*ftemp +r0;
			fread(&ftemp, sizeof(float), 1, DMPFile);
			vr[j][i] = ftemp/vscale;
			fread(&ftemp, sizeof(float), 1, DMPFile);
			vth[j][i] = ftemp/vscale;
			fread(&ftemp, sizeof(float), 1, DMPFile);
			vph[j][i] = ftemp/vscale;
		}
	}

	fclose(DMPFile);
}

/****************************************************************/







































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -