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

📄 read_input_file.cpp

📁 利用c++语言写的三维FDTD
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "read_input_file.h"

int readFile_fdtd_data(Input_Data *Inp_D, char *ut_nev)
{
	//ifstream declaration
	ifstream *inClientFile = NULL;
	inClientFile = new ifstream[1];
	//open the file
	inClientFile->open(ut_nev,ios::in);
	if (!*inClientFile)//return if ifstream could not open the specified file
	{
		cerr << "File: " << ut_nev << " - cannot be open" << endl;
		return 1;
	}
	
	try
	{
		ReadFileVar<long>(inClientFile, "nx", &Inp_D->nx);
		ReadFileVar<long>(inClientFile, "ny", &Inp_D->ny);
		ReadFileVar<long>(inClientFile, "nz", &Inp_D->nz);

		ReadFileVar<long>(inClientFile, "n_PML_x_1", &Inp_D->n_PML_x_1);
		ReadFileVar<long>(inClientFile, "n_PML_x_2", &Inp_D->n_PML_x_2);
		ReadFileVar<long>(inClientFile, "n_PML_y_1", &Inp_D->n_PML_y_1);
		ReadFileVar<long>(inClientFile, "n_PML_y_2", &Inp_D->n_PML_y_2);
		ReadFileVar<long>(inClientFile, "n_PML_z_1", &Inp_D->n_PML_z_1);
		ReadFileVar<long>(inClientFile, "n_PML_z_2", &Inp_D->n_PML_z_2);

		if (Inp_D->n_PML_x_1 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_ia", &Inp_D->jel_Symmetric_ia);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_ia", &Inp_D->jel_Anti_Symmetric_ia);
		}

		if (Inp_D->n_PML_x_2 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_ib", &Inp_D->jel_Symmetric_ib);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_ib", &Inp_D->jel_Anti_Symmetric_ib);
		}

		if (Inp_D->n_PML_y_1 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_ja", &Inp_D->jel_Symmetric_ja);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_ja", &Inp_D->jel_Anti_Symmetric_ja);
		}

		if (Inp_D->n_PML_y_2 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_jb", &Inp_D->jel_Symmetric_jb);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_jb", &Inp_D->jel_Anti_Symmetric_jb);
		}

		if (Inp_D->n_PML_z_1 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_ka", &Inp_D->jel_Symmetric_ka);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_ka", &Inp_D->jel_Anti_Symmetric_ka);
		}

		if (Inp_D->n_PML_z_2 == 1)
		{
			ReadFileVar<int>(inClientFile, "jel_Symmetric_kb", &Inp_D->jel_Symmetric_kb);
			ReadFileVar<int>(inClientFile, "jel_Anti_Symmetric_kb", &Inp_D->jel_Anti_Symmetric_kb);
		}

		ReadFileVar<double>(inClientFile, "dx", &Inp_D->dx);
		ReadFileVar<double>(inClientFile, "dy", &Inp_D->dy);
		ReadFileVar<double>(inClientFile, "dz", &Inp_D->dz);

		ReadFileVar<long>(inClientFile, "num_iter", &Inp_D->num_iter);
		
		ReadFileVar<double>(inClientFile, "limit_time", &Inp_D->limit_time);

		ReadFileVar<int>(inClientFile, "load_workspace_data", &Inp_D->load_workspace_data);
		if(Inp_D->load_workspace_data)
		{
			ReadFileVarString(inClientFile, "Path_Load_Workspace_Data", &Inp_D->Path_Load_Workspace_Data);
		}
	    
		ReadFileVar<int>(inClientFile, "save_field", &Inp_D->save_field);
		if(Inp_D->save_field)
		{
			ReadFileVar<long>(inClientFile, "nr_Save", &Inp_D->nr_Save);
			ReadFileVar<long>(inClientFile, "saveFROMinst", &Inp_D->saveFROMinst);
			ReadFileVar<long>(inClientFile, "saveTOinst", &Inp_D->saveTOinst);
			ReadFileVar<long>(inClientFile, "n_x_a", &Inp_D->n_x_a);
			if (Inp_D->n_x_a < 0)
			{
				cerr << "wrong n_x_a:  " << Inp_D->n_x_a << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "n_x_b", &Inp_D->n_x_b);
			if (Inp_D->n_x_b > Inp_D->nx)
			{
				cerr << "wrong n_x_b:  " << Inp_D->n_x_b << " >= " << Inp_D->nx  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "n_y_a", &Inp_D->n_y_a);
			if (Inp_D->n_y_a < 0)
			{
				cerr << "wrong n_y_a:  " << Inp_D->n_y_a << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "n_y_b", &Inp_D->n_y_b);
			if (Inp_D->n_y_b > Inp_D->ny)
			{
				cerr << "wrong n_y_b:  " << Inp_D->n_y_b << " >= " << Inp_D->ny  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "n_z_a", &Inp_D->n_z_a);
			if (Inp_D->n_z_a < 0)
			{
				cerr << "wrong n_z_a:  " << Inp_D->n_z_a << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "n_z_b", &Inp_D->n_z_b);
			if (Inp_D->n_z_b > Inp_D->nz)
			{
				cerr << "wrong n_z_b:  " << Inp_D->n_z_b << " >= " << Inp_D->nz  << endl;
				return 1;
			}
		}

		ReadFileVar<int>(inClientFile, "aver_field_volume", &Inp_D->aver_field_volume);
		if (Inp_D->aver_field_volume == 1)
		{
			ReadFileVar<long>(inClientFile, "nx_a_av", &Inp_D->nx_a_av);
			if (Inp_D->nx_a_av < 0)
			{
				cerr << "wrong nx_a_av:  " << Inp_D->nx_a_av << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nx_b_av", &Inp_D->nx_b_av);
			if (Inp_D->nx_b_av >= Inp_D->nx)
			{
				cerr << "wrong nx_b_av:  " << Inp_D->nx_b_av << " >= " << Inp_D->nx  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "ny_a_av", &Inp_D->ny_a_av);
			if (Inp_D->ny_a_av < 0)
			{
				cerr << "wrong ny_a_av:  " << Inp_D->ny_a_av << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "ny_b_av", &Inp_D->ny_b_av);
			if (Inp_D->ny_b_av >= Inp_D->ny)
			{
				cerr << "wrong ny_b_av:  " << Inp_D->ny_b_av << " >= " << Inp_D->ny  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nz_a_av", &Inp_D->nz_a_av);
			if (Inp_D->nz_a_av < 0)
			{
				cerr << "wrong nz_a_av:  " << Inp_D->nz_a_av << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nz_b_av", &Inp_D->nz_b_av);
			if (Inp_D->nz_b_av >= Inp_D->nz)
			{
				cerr << "wrong nz_b_av:  " << Inp_D->nz_b_av << " >= " << Inp_D->nz  << endl;
				return 1;
			}
		}

		ReadFileVar<int>(inClientFile, "fourier_transf_vol", &Inp_D->fourier_transf_vol);
		if (Inp_D->fourier_transf_vol == 1)
		{
			ReadFileVar<long>(inClientFile, "nx_a_f", &Inp_D->nx_a_f);
			if (Inp_D->nx_a_f < 0)
			{
				cerr << "wrong nx_a_f:  " << Inp_D->nx_a_f << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nx_b_f", &Inp_D->nx_b_f);
			if (Inp_D->nx_b_f >= Inp_D->nx)
			{
				cerr << "wrong nx_b_f:  " << Inp_D->nx_b_f << " >= " << Inp_D->nx  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "ny_a_f", &Inp_D->ny_a_f);
			if (Inp_D->ny_a_f < 0)
			{
				cerr << "wrong ny_a_f:  " << Inp_D->ny_a_f << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "ny_b_f", &Inp_D->ny_b_f);
			if (Inp_D->ny_b_f >= Inp_D->ny)
			{
				cerr << "wrong ny_b_f:  " << Inp_D->ny_b_f << " >= " << Inp_D->ny  << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nz_a_f", &Inp_D->nz_a_f);
			if (Inp_D->nz_a_f < 0)
			{
				cerr << "wrong nz_a_f:  " << Inp_D->nz_a_f << endl;
				return 1;
			}
			ReadFileVar<long>(inClientFile, "nz_b_f", &Inp_D->nz_b_f);
			if (Inp_D->nz_b_f > Inp_D->nz)
			{
				cerr << "wrong nz_b_f:  " << Inp_D->nz_b_f << " >= " << Inp_D->nz  << endl;
				return 1;
			}

			ReadFileVar<double>(inClientFile, "frec_1", &Inp_D->frec_1);
			ReadFileVar<double>(inClientFile, "frec_2", &Inp_D->frec_2);
			ReadFileVar<long>(inClientFile, "n_frec", &Inp_D->n_frec);
			ReadFileVar<long>(inClientFile, "start_fourier", &Inp_D->start_fourier);
		}
		

		#ifdef eval_W
			ReadFileVar<long>(inClientFile, "nr_W_DIV_x", &Inp_D->nr_W_DIV_x);
			ReadFileVar<long>(inClientFile, "nr_W_DIV_y", &Inp_D->nr_W_DIV_y);
			ReadFileVar<long>(inClientFile, "nr_W_DIV_z", &Inp_D->nr_W_DIV_z);

			ReadFileVar<long>(inClientFile, "nx_W_a", &Inp_D->nx_W_a);
			ReadFileVar<long>(inClientFile, "nx_W_b", &Inp_D->nx_W_b);
			ReadFileVar<long>(inClientFile, "ny_W_a", &Inp_D->ny_W_a);
			ReadFileVar<long>(inClientFile, "ny_W_b", &Inp_D->ny_W_b);
			ReadFileVar<long>(inClientFile, "nz_W_a", &Inp_D->nz_W_a);
			ReadFileVar<long>(inClientFile, "nz_W_b", &Inp_D->nz_W_b);

			ReadFileVar<long>(inClientFile, "eval_W_FROMinst", &Inp_D->eval_W_FROMinst);
			ReadFileVar<long>(inClientFile, "eval_W_TOinst", &Inp_D->eval_W_TOinst);

			ReadFileVar<int>(inClientFile, "save_W", &Inp_D->save_W);
			if(Inp_D->save_W)
			{
				ReadFileVar<long>(inClientFile, "nr_W_Save", &Inp_D->nr_W_Save);
				ReadFileVar<long>(inClientFile, "save_W_FROMinst", &Inp_D->save_W_FROMinst);
				ReadFileVar<long>(inClientFile, "save_W_TOinst", &Inp_D->save_W_TOinst);
			}
			
			ReadFileVar<long>(inClientFile, "n_x_W_a", &Inp_D->n_x_W_a);
			ReadFileVar<long>(inClientFile, "n_x_W_b", &Inp_D->n_x_W_b);
			ReadFileVar<long>(inClientFile, "n_y_W_a", &Inp_D->n_y_W_a);
			ReadFileVar<long>(inClientFile, "n_y_W_b", &Inp_D->n_y_W_b);
			ReadFileVar<long>(inClientFile, "n_z_W_a", &Inp_D->n_z_W_a);

⌨️ 快捷键说明

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