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

📄 fdtd_3d_alloc.cpp

📁 利用c++语言写的三维FDTD
💻 CPP
字号:
#include "fdtd_3d_alloc.h"
#include "Matrix.h"

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Ex field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Ex(double **K_Gx_a_1, double **K_Gx_b_1, double **K_Ex_a_1,
				  double **K_Ex_b_1, double **K_Ex_c_1, double **K_Ex_d_1,
				  double **K_Gx_a_2, double **K_Gx_b_2, double **K_Ex_a_2,
				  double **K_Ex_b_2, double **K_Ex_c_2, double **K_Ex_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//1
	*K_Gx_a_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Gx_a_1)
	{
		return 1;
	}

	*K_Gx_b_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Gx_b_1)
	{
		return 1;
	}

	*K_Ex_a_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Ex_a_1)
	{
		return 1;
	}

	*K_Ex_b_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Ex_b_1)
	{
		return 1;
	}

	*K_Ex_c_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Ex_c_1)
	{
		return 1;
	}

	*K_Ex_d_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Ex_d_1)
	{
		return 1;
	}

	//2
	*K_Gx_a_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Gx_a_2)
	{
		return 1;
	}

	*K_Gx_b_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Gx_b_2)
	{
		return 1;
	}

	*K_Ex_a_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Ex_a_2)
	{
		return 1;
	}

	*K_Ex_b_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Ex_b_2)
	{
		return 1;
	}

	*K_Ex_c_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Ex_c_2)
	{
		return 1;
	}

	*K_Ex_d_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Ex_d_2)
	{
		return 1;
	}

	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Ey field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Ey(double **K_Gy_a_1, double **K_Gy_b_1, double **K_Ey_a_1,
				  double **K_Ey_b_1, double **K_Ey_c_1, double **K_Ey_d_1,
				  double **K_Gy_a_2, double **K_Gy_b_2, double **K_Ey_a_2,
				  double **K_Ey_b_2, double **K_Ey_c_2, double **K_Ey_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//1
	*K_Gy_a_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Gy_a_1)
	{
		return 1;
	}

	*K_Gy_b_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Gy_b_1)
	{
		return 1;
	}

	*K_Ey_a_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Ey_a_1)
	{
		return 1;
	}

	*K_Ey_b_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Ey_b_1)
	{
		return 1;
	}

	*K_Ey_c_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Ey_c_1)
	{
		return 1;
	}

	*K_Ey_d_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Ey_d_1)
	{
		return 1;
	}

	//2
	*K_Gy_a_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Gy_a_2)
	{
		return 1;
	}

	*K_Gy_b_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Gy_b_2)
	{
		return 1;
	}

	*K_Ey_a_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Ey_a_2)
	{
		return 1;
	}

	*K_Ey_b_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Ey_b_2)
	{
		return 1;
	}

	*K_Ey_c_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Ey_c_2)
	{
		return 1;
	}

	*K_Ey_d_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Ey_d_2)
	{
		return 1;
	}

	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Ez field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Ez(double **K_Gz_a_1, double **K_Gz_b_1, double **K_Ez_a_1,
				  double **K_Ez_b_1, double **K_Ez_c_1, double **K_Ez_d_1,
				  double **K_Gz_a_2, double **K_Gz_b_2, double **K_Ez_a_2,
				  double **K_Ez_b_2, double **K_Ez_c_2, double **K_Ez_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//1
	*K_Gz_a_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Gz_a_1)
	{
		return 1;
	}

	*K_Gz_b_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Gz_b_1)
	{
		return 1;
	}

	*K_Ez_a_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Ez_a_1)
	{
		return 1;
	}

	*K_Ez_b_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Ez_b_1)
	{
		return 1;
	}

	*K_Ez_c_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Ez_c_1)
	{
		return 1;
	}

	*K_Ez_d_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Ez_d_1)
	{
		return 1;
	}

	//2
	*K_Gz_a_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Gz_a_2)
	{
		return 1;
	}

	*K_Gz_b_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Gz_b_2)
	{
		return 1;
	}

	*K_Ez_a_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Ez_a_2)
	{
		return 1;
	}

	*K_Ez_b_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Ez_b_2)
	{
		return 1;
	}

	*K_Ez_c_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Ez_c_2)
	{
		return 1;
	}

	*K_Ez_d_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Ez_d_2)
	{
		return 1;
	}

	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Hx field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Hx(double **K_Bx_a_1, double **K_Bx_b_1, double **K_Hx_a_1,
				  double **K_Hx_b_1, double **K_Hx_c_1, double **K_Hx_d_1,
				  double **K_Bx_a_2, double **K_Bx_b_2, double **K_Hx_a_2,
				  double **K_Hx_b_2, double **K_Hx_c_2, double **K_Hx_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//1
	*K_Bx_a_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Bx_a_1)
	{
		return 1;
	}

	*K_Bx_b_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Bx_b_1)
	{
		return 1;
	}

	*K_Hx_a_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Hx_a_1)
	{
		return 1;
	}

	*K_Hx_b_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Hx_b_1)
	{
		return 1;
	}

	*K_Hx_c_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Hx_c_1)
	{
		return 1;
	}

	*K_Hx_d_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Hx_d_1)
	{
		return 1;
	}

	//2
	*K_Bx_a_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Bx_a_2)
	{
		return 1;
	}

	*K_Bx_b_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Bx_b_2)
	{
		return 1;
	}

	*K_Hx_a_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Hx_a_2)
	{
		return 1;
	}

	*K_Hx_b_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Hx_b_2)
	{
		return 1;
	}

	*K_Hx_c_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Hx_c_2)
	{
		return 1;
	}

	*K_Hx_d_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Hx_d_2)
	{
		return 1;
	}

	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Hy field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Hy(double **K_By_a_1, double **K_By_b_1, double **K_Hy_a_1,
				  double **K_Hy_b_1, double **K_Hy_c_1, double **K_Hy_d_1,
				  double **K_By_a_2, double **K_By_b_2, double **K_Hy_a_2,
				  double **K_Hy_b_2, double **K_Hy_c_2, double **K_Hy_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//PML-Hy field
	//1
	*K_By_a_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_By_a_1)
	{
		return 1;
	}

	*K_By_b_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_By_b_1)
	{
		return 1;
	}
	
	*K_Hy_a_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Hy_a_1)
	{
		return 1;
	}

	*K_Hy_b_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Hy_b_1)
	{
		return 1;
	}

	*K_Hy_c_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Hy_c_1)
	{
		return 1;
	}

	*K_Hy_d_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Hy_d_1)
	{
		return 1;
	}

	//2
	*K_By_a_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_By_a_2)
	{
		return 1;
	}

	*K_By_b_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_By_b_2)
	{
		return 1;
	}
	
	*K_Hy_a_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Hy_a_2)
	{
		return 1;
	}

	*K_Hy_b_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Hy_b_2)
	{
		return 1;
	}

	*K_Hy_c_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Hy_c_2)
	{
		return 1;
	}

	*K_Hy_d_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Hy_d_2)
	{
		return 1;
	}

	return 0;
}

///////////////////////////////////////////////////////////////////////////////////////
//Allocate memory for the PML parameters - Hz field component
///////////////////////////////////////////////////////////////////////////////////////
int Alloc_PML_Hz(double **K_Bz_a_1, double **K_Bz_b_1, double **K_Hz_a_1,
				  double **K_Hz_b_1, double **K_Hz_c_1, double **K_Hz_d_1,
				  double **K_Bz_a_2, double **K_Bz_b_2, double **K_Hz_a_2,
				  double **K_Hz_b_2, double **K_Hz_c_2, double **K_Hz_d_2,
				  long  nPML_x_1, long  nPML_y_1, long  nPML_z_1, long  nPML_x_2, 
				  long  nPML_y_2, long  nPML_z_2)
{
	//PML-Hz field
	//1
	*K_Bz_a_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Bz_a_1)
	{
		return 1;
	}

	*K_Bz_b_1 = (double *)calloc(nPML_x_1,sizeof(double)); 
	if(!*K_Bz_b_1)
	{
		return 1;
	}

	*K_Hz_a_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Hz_a_1)
	{
		return 1;
	}

	*K_Hz_b_1 = (double *)calloc(nPML_y_1,sizeof(double)); 
	if(!*K_Hz_b_1)
	{
		return 1;
	}

	*K_Hz_c_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Hz_c_1)
	{
		return 1;
	}

	*K_Hz_d_1 = (double *)calloc(nPML_z_1,sizeof(double)); 
	if(!*K_Hz_d_1)
	{
		return 1;
	}

	//2
	*K_Bz_a_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Bz_a_2)
	{
		return 1;
	}

	*K_Bz_b_2 = (double *)calloc(nPML_x_2,sizeof(double)); 
	if(!*K_Bz_b_2)
	{
		return 1;
	}

	*K_Hz_a_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Hz_a_2)
	{
		return 1;
	}

	*K_Hz_b_2 = (double *)calloc(nPML_y_2,sizeof(double)); 
	if(!*K_Hz_b_2)
	{
		return 1;
	}

	*K_Hz_c_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Hz_c_2)
	{
		return 1;
	}

	*K_Hz_d_2 = (double *)calloc(nPML_z_2,sizeof(double)); 
	if(!*K_Hz_d_2)
	{
		return 1;
	}

	return 0;
}

⌨️ 快捷键说明

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