亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fdtd_2d_te_pml_lorentz_period.cpp

?? 2Dfdtd算法
?? CPP
字號(hào):
// fdtd_2D_TE_PML_Lorentz_period.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "fdtd_2D_TE_PML_Lorentz_period.h"
#include "Matrix.h"
#include "Math.h"
#include "FDTD_2D_TE_LORENTZ_PERIODIC.h"
#include "FDTD_1D_HzEy_LORENTZ.h"
#include "Save_File_Data.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// initialize MFC and print and error on failure
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: change error code to suit your needs
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		nRetCode = 1;
	}
	else
	{
		double pi = 3.14159265358979;
		double eps_0 = 8.854*1e-12; //[F/m]
		double mu_0  = 4*pi*1e-7; //[H/m]
		double c = 1/sqrt(eps_0*mu_0); //the speed of the light in the vacuum

		//the parameters of the photonic crystal
		double dx =  1.5e-8;
		double dy = dx;
		
        int n_x = 1320;//total number of cells in x direction
		int n_y = 52; //total number of cells in y direction
				
		double dt;
		if (dx < dy)
		  dt = dx/c/2; //the time step, stability criteria dt<=dx/c!!!
		else
		  dt = dy/c/2; //the time step, stability criteria dt<=dx/c!!!
		
		int n_PML = 20; //the size of PML
		
		//Total field - Scattered field interface
		int n_x_a = n_PML + 10;
		int n_x_b = n_x - n_PML - 10;

		int num_iter = 100000;

		//the excitation
		//Gaussian pulse
		double H0 = 1; //[A/m]
	    double tw = 20*dt;
		double t0 = 4*tw;
		//Sin
		double omega = 1.3e15;
		double phi = -pi/2;
		int source_Type = 1; // 1- Gauss; 2- Sin; 3- Gauss-Sin

		int ** Index = NULL;
		Index = Init_Matrix_2D<int>(n_x,n_y);
		if(!Index)
		{
			return FALSE;
		}

		/////////////////////////////////////////////////////////////////////////////
		//Reads from file the elements of the Geometry matrix 
		/////////////////////////////////////////////////////////////////////////////
		CString path_Name = "Geom_40sz10_30_triang_period.geom";
		switch ( load_2D_int(Index,n_x,n_y,path_Name) )
		{
			case -1:
					printf("faild to open the file\n");
					return FALSE;
			case -2:
					printf("wrong file content\n");
					return FALSE;
			case -3:
					printf("wrong dimensions\n");
					return FALSE;
			default:
			{
					//CString name_Index = "Index";
					//int a1 = 0, b1 =0, c1 = 0;
					//if ( !save_2D_int( Index,a1,n_x,b1,n_y,c1,name_Index) )
					//			return FALSE;
			}
		}
		/////////////////////////////////////////////////////////////////////////////
		
		int n_Mat = 2; //number of materials
		int *n_Mat_Lorentz = NULL; //the number of second orders Lorentz poles
		
		n_Mat_Lorentz = (int *)calloc(n_Mat, sizeof(int));
        if(!n_Mat_Lorentz)
		{
			Index = Free_Matrix_2D<int>(Index);
			return FALSE;
		}

		n_Mat_Lorentz[0] = 2 + 10*3 + 1; n_Mat_Lorentz[1] = 2 + 1*3 + 1;	//n_Mat_Lorentz[2] = 2 + 1*3 + 1;
		
		double ** Mat_Param = NULL;
		Mat_Param = Init_Matrix_2D<double>(n_Mat,n_Mat_Lorentz);
		if(!Mat_Param)
		{
			Index = Free_Matrix_2D<int>(Index);
			free(n_Mat_Lorentz);
			return FALSE;
		}
		
		//InP
		Mat_Param[0][0] = 10;//Number of Lorentz terms
		//eps_inf
		Mat_Param[0][1] = 2.9728;
		//am                             0 < delta_0 < 2                omega_0
		Mat_Param[0][2]  =  2.1809;     Mat_Param[0][3]  = 0.12385;    Mat_Param[0][4]  = 7.1897e+015;
		Mat_Param[0][5]  = -2.1426;	    Mat_Param[0][6]  = 0.3912;     Mat_Param[0][7]  = 1.9157e+015;
		Mat_Param[0][8]  =  0.87198;    Mat_Param[0][9]  = 0.33261;    Mat_Param[0][10] = 8.4884e+015;
		Mat_Param[0][11] =  1.0966;	    Mat_Param[0][12] = 0.11644;    Mat_Param[0][13] = 4.8676e+015;
		Mat_Param[0][14] = -2.9501;		Mat_Param[0][15] = 1.1994;     Mat_Param[0][16] = 1.6229e+015;
		Mat_Param[0][17] =  3.2874;     Mat_Param[0][18] = 0.43415;    Mat_Param[0][19] = 5.6233e+015;  
		Mat_Param[0][20] =  1.5489;	    Mat_Param[0][21] = 1.0763;     Mat_Param[0][22] = 1.9818e+015;
		Mat_Param[0][23] =  0.93079;    Mat_Param[0][24] = 0.37739;    Mat_Param[0][25] = 1.8472e+015;
		Mat_Param[0][26] =  0.61149;    Mat_Param[0][27] = 0.30277;    Mat_Param[0][28] = 1.9326e+015;
		Mat_Param[0][29] =  1.4274;     Mat_Param[0][30] = 1.178;      Mat_Param[0][31] = 1.4736e+015;
		//mu_r
		Mat_Param[0][32] = 1;

    	//Vacuum
		Mat_Param[1][0] = 1;//Number of Lorentz terms
		//eps_inf
		Mat_Param[1][1] = 1;
		//am                             0 < delta_0 < 2                omega_0
		Mat_Param[1][2] = 0;	         Mat_Param[1][3]  = 0.2;          Mat_Param[1][4]  = 5e15;
		//mu_r
		Mat_Param[1][5] = 1;
		
		
		//the averaged material coefficients needed for PML
		double av_eps_r = 10;
		double av_mu_r = 1;

		CFDTD_2D_TE_LORENTZ_PERIODIC fdtd_TE;

		/////////////////////////////////////////////////////////////////////////////
		//Initialize fdtd_TE
		/////////////////////////////////////////////////////////////////////////////
		fdtd_TE.Init_Main_Param(Index, n_x, n_y, Mat_Param, n_Mat, n_PML, dt, dx, dy);
		
		int jel_plane_wave = 0;
		if (jel_plane_wave == 0)
		{
		//plane wave
		   fdtd_TE.Init_TotFScatF(n_x_a, n_x_b, H0, t0, tw, omega, phi,
			                      source_Type, av_eps_r, av_mu_r);
		}
		else
		{
		//point source
		   //fdtd_TE.Init_Gauss_Point_Source(n_x/2, n_y/2, H0, t0, tw);
		   fdtd_TE.Init_Sinus_Point_Source(n_PML+1, n_y/2, H0, omega, phi);
		}
		
		
		fdtd_TE.Set_PML_Param(av_eps_r, av_mu_r);

		/////////////////////////////////////////////////////////////////////////////
		//Initializations for data save
		/////////////////////////////////////////////////////////////////////////////
		int elment = 0;
		
		// Create the directory to save output data
	    char path[512];
		GetCurrentDirectory(512, path); 
		CString Path;
		Path.Format("%s\\data",path);
		BOOL fret = CreateDirectory(Path,0);
		if (!fret)
		{
			DWORD gerr = GetLastError();
		}

		CString path_name_Hz;
			path_name_Hz.Format("%s\\Hz",Path);
		CString path_name_Ex;
			path_name_Ex.Format("%s\\Ex",Path);
		CString path_name_Ey;
			path_name_Ey.Format("%s\\Ey",Path);

		CString nev_Hz_1D;
			nev_Hz_1D.Format("%s\\Hz_1D",Path);
		
		double **hz = NULL, **ex = NULL, **ey = NULL;
		double *hz_1D = NULL, *ey_1D = NULL;

		int n_Ind_F = 2;
		int **Ind_F = NULL;
	    Ind_F = Init_Matrix_2D<int>(n_Ind_F,2);
		if(!Ind_F)
		{
			Index = Free_Matrix_2D<int>(Index);
			return FALSE;
		}
		
		Ind_F[0][0] = n_x_a + 5;             Ind_F[0][1] = n_y/2;
		Ind_F[1][0] = n_x - n_x_a - 5;       Ind_F[1][1] = n_y/2;
		
	
		fdtd_TE.Init_Followed(Ind_F, n_Ind_F, num_iter);
			
		fdtd_TE.Get_Data_1D(hz_1D, ey_1D);
		fdtd_TE.Get_Data(hz, ex, ey);
  		
		int n1 = 0; // to save 1D
		n_x_a = 0; n_x_b = n_x; //to save data
				
		/////////////////////////////////////////////////////////////////////////////
		//start of the main FDTD loop
		/////////////////////////////////////////////////////////////////////////////
		for (int n = 0; n < num_iter; n++)
		{
			if (jel_plane_wave == 0)
			{
				fdtd_TE.calc_Ey_1D();
				fdtd_TE.calc_Hz_1D(n*dt);
			}
			
			
			fdtd_TE.calc_Hz_TE();
			if (jel_plane_wave)
				fdtd_TE.Point_Source(n*dt);

			fdtd_TE.periodic_Hz();

			fdtd_TE.calc_Ex_TE();
			fdtd_TE.calc_Ey_TE();
	
	        fdtd_TE.periodic_Ex();
	
			fdtd_TE.Set_Data_Followed(n);

			if (elment == 1 && n%10 == 1 /*&& n<5000*/)
			{
				
				//if (jel_plane_wave == 0)
				//	if ( !save_1D(hz_1D, n1, n_x_b, n, nev_Hz_1D) )
				//		return FALSE;
				if ( !save_2D(hz,n_x_a,n_x_b,n1,n_y,n,path_name_Hz) )
					return FALSE;
				if ( !save_2D(ex,n_x_a,n_x_b,n1,n_y,n,path_name_Ex) )
					return FALSE;
				if ( !save_2D(ey,n_x_a,n_x_b,n1,n_y,n,path_name_Ey) )
					return FALSE;
			}

			if (n%100 == 1)
				cout<< n << endl;
		}

		/////////////////////////////////////////////////////////////////////////////
		//end of the main FDTD loop
		/////////////////////////////////////////////////////////////////////////////
		
		/////////////////////////////////////////////////////////////////////////////
		//Save the followed data
		/////////////////////////////////////////////////////////////////////////////
		double **hz_foll = NULL, **ex_foll = NULL, **ey_foll = NULL; 
		fdtd_TE.Get_Data_Followed(hz_foll, ex_foll, ey_foll);

		CString path_name_hz_foll;
		path_name_hz_foll.Format("%s\\Hz_foll",Path);
		CString path_name_ex_foll;
		path_name_ex_foll.Format("%s\\Ex_foll",Path);
		CString path_name_ey_foll;
		path_name_ey_foll.Format("%s\\Ey_foll",Path);
		
		int x1 =0, y1 = 0;
		if ( !save_2D(hz_foll,x1,n_Ind_F,y1,num_iter,n,path_name_hz_foll) )
			return FALSE;
		if ( !save_2D(ex_foll,x1,n_Ind_F,y1,num_iter,n,path_name_ex_foll) )
			return FALSE;
		if ( !save_2D(ey_foll,x1,n_Ind_F,y1,num_iter,n,path_name_ey_foll) )
			return FALSE;
		
		/////////////////////////////////////////////////////////////////////////////
		//Free allocated memory 
		/////////////////////////////////////////////////////////////////////////////
		Index = Free_Matrix_2D<int>(Index);
		free(n_Mat_Lorentz);
		Mat_Param = Free_Matrix_2D<double>(Mat_Param);
	}

	return nRetCode;
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品家庭影院| 91精品国产一区二区| 国产欧美一区二区精品忘忧草| 久久精品久久久精品美女| 日韩视频不卡中文| 国产乱一区二区| 国产精品久久久一本精品 | 久久久激情视频| 国产精品一二二区| 国产亚洲欧美一级| 色偷偷一区二区三区| 日本色综合中文字幕| 久久综合色一综合色88| 成人丝袜18视频在线观看| 亚洲黄网站在线观看| 91精品国产色综合久久不卡电影 | 国产色综合一区| 91丝袜高跟美女视频| 日本不卡一二三| 国产精品视频观看| 欧美浪妇xxxx高跟鞋交| 国产一区二区电影| 亚洲最快最全在线视频| 日韩色在线观看| 99re这里只有精品视频首页| 日韩av二区在线播放| 国产精品欧美极品| 日韩一区二区电影网| 成人福利视频在线看| 无码av中文一区二区三区桃花岛| 国产日产欧美一区二区视频| 欧美军同video69gay| 福利一区在线观看| 亚洲成人久久影院| 中文在线一区二区| 日韩欧美一区在线观看| 色哟哟精品一区| 国产91在线|亚洲| 麻豆成人久久精品二区三区红| 亚洲女人的天堂| 国产日韩综合av| 欧美成人免费网站| 欧美日韩视频在线一区二区| 成人黄色片在线观看| 蜜桃av一区二区在线观看| 自拍偷拍欧美精品| 亚洲国产高清aⅴ视频| 日韩欧美专区在线| 欧美最猛性xxxxx直播| 成人av动漫在线| 国产一区二三区好的| 蜜臀av亚洲一区中文字幕| 亚洲在线观看免费视频| 亚洲日本在线a| 日本一区二区三级电影在线观看| 精品久久久久久久一区二区蜜臀| 一区二区三区在线观看网站| 久久美女高清视频| 日韩女优视频免费观看| 欧美视频完全免费看| 成人午夜视频在线| 国产精品香蕉一区二区三区| 精品一区二区三区在线观看国产| 午夜视频一区在线观看| 亚洲男人天堂av| 综合久久久久综合| 成人欧美一区二区三区黑人麻豆| 国产日本亚洲高清| 久久久久久一级片| 欧美精品一区二区蜜臀亚洲| 日韩欧美在线影院| 精品久久久久久久久久久院品网| 91麻豆精品国产综合久久久久久| 欧美日韩一区国产| 欧美性受xxxx| 欧美日韩国产片| 91精品国产丝袜白色高跟鞋| 欧美一级国产精品| 日韩精品一区二区三区老鸭窝 | 五月综合激情网| 丝袜美腿一区二区三区| 日韩综合一区二区| 麻豆高清免费国产一区| 国产资源在线一区| 国产高清久久久| 91在线小视频| 91国在线观看| 欧美日本在线播放| 日韩一级精品视频在线观看| 欧美一级久久久| 国产日韩欧美电影| 亚洲猫色日本管| 五月综合激情婷婷六月色窝| 免费成人美女在线观看.| 国产一区在线观看视频| www.综合网.com| 欧美视频日韩视频在线观看| 日韩久久免费av| 国产调教视频一区| 一个色综合av| 日韩成人dvd| 国产精品资源在线观看| 色婷婷av一区二区三区gif| 欧美喷潮久久久xxxxx| 精品精品国产高清a毛片牛牛| 日本一区免费视频| 亚洲宅男天堂在线观看无病毒| 日本一区中文字幕| 成人性生交大片免费看中文网站| 色狠狠桃花综合| 亚洲精品一区二区精华| 中文字幕亚洲精品在线观看| 日韩经典中文字幕一区| 国产成人精品免费视频网站| 在线看日本不卡| 久久久五月婷婷| 亚洲国产欧美日韩另类综合| 国产酒店精品激情| 欧洲日韩一区二区三区| 久久人人97超碰com| 亚洲与欧洲av电影| 国产精品亚洲午夜一区二区三区| 在线观看日韩一区| 欧美国产日韩亚洲一区| 午夜精品久久久久久久久久| 欧美一区二区视频网站| 欧美激情艳妇裸体舞| 日本不卡一区二区| 色综合久久中文综合久久97| 精品国产第一区二区三区观看体验| 亚洲美女视频一区| 国产成人午夜精品影院观看视频| 欧美高清性hdvideosex| 亚洲免费观看高清完整版在线观看熊 | 亚洲精品第1页| 国产在线国偷精品产拍免费yy| 欧美色图片你懂的| 亚洲国产精品精华液2区45| 日韩国产精品久久| 在线亚洲人成电影网站色www| 精品国产百合女同互慰| 丝袜亚洲精品中文字幕一区| 色婷婷香蕉在线一区二区| 国产日韩欧美高清| 精品一区免费av| 制服丝袜一区二区三区| 亚洲精品视频在线| 成人h动漫精品一区二区| www激情久久| 日韩av网站免费在线| 欧美另类z0zxhd电影| 又紧又大又爽精品一区二区| 成人国产在线观看| 国产欧美视频在线观看| 狠狠色狠狠色综合| 欧美大片国产精品| 欧美aaa在线| 欧美一级黄色录像| 免费日本视频一区| 欧美一区二区在线免费观看| 亚洲综合久久久| 欧美性三三影院| 午夜日韩在线观看| 精品视频1区2区3区| 午夜久久久久久久久| 欧美老女人第四色| 三级久久三级久久久| 欧美理论电影在线| 青青草原综合久久大伊人精品优势 | 亚洲成人资源网| 精品视频免费看| 免费人成在线不卡| 日韩一区二区精品| 精品亚洲国产成人av制服丝袜 | 中文字幕av一区二区三区免费看 | 午夜国产精品一区| 欧美日韩一区二区在线观看视频 | 国产精品久久久久久久久久免费看| 国产成人午夜视频| 中文字幕第一区第二区| jizzjizzjizz欧美| 亚洲一区二区三区在线| 在线成人免费观看| 激情综合亚洲精品| 久久精品视频一区| 91热门视频在线观看| 夜夜夜精品看看| 欧美一区二区三区在线视频| 国产在线播放一区三区四| 国内精品在线播放| 国产午夜精品美女毛片视频| av中文字幕一区| 午夜av一区二区三区| 精品国产网站在线观看| a美女胸又www黄视频久久| 亚洲一区二区3| 精品裸体舞一区二区三区| 丰满亚洲少妇av| 一区二区三区四区五区视频在线观看 | 久久精品视频网|