#include"Assemble_Base.h"
#include"../function/BF.h"
#include"../function/Gauss.h"
#include"../common/define.h"
#include "../parser/mpParser.h"

#include<cmath>

using namespace Eigen;

void OpticsFEM_3D_Scatter::Assemble_SBC()
{
	//physic
	double k0 = 2 * Pi / _mSolver->GetLda0();


}

void OpticsFEM_3D_Scatter::Assemble_PEC_ELE()
{
	//find PEC index
	int NbrPEC = _mPhy->GetNbrPEC();
	Eigen::VectorXi PECDomain = Eigen::VectorXi::Zero(NbrPEC);
	for (int i = 0; i < NbrPEC; i++)
		PECDomain(i) = _mPhy->GetPECDomain(i);
	Eigen::VectorXi edgeIndexOfPEC;
	_mMesh->GetTriIndexOfDomain(PECDomain, edgeIndexOfPEC);

	//find ELE index
	int NbrELE = _mPhy->GetNbrElE();
	Eigen::VectorXi ELEDomain = Eigen::VectorXi::Zero(NbrELE);
	Eigen::VectorXi indexNum = Eigen::VectorXi::Zero(NbrELE);
	for (int i = 0; i < NbrELE; i++)
	{
		ELEDomain(i) = _mPhy->GetELEDomain(i);
		indexNum(i) = i;
	}
	Eigen::VectorXi triIndexOfELE, triNumOfELE;
	_mMesh->GetTriIndexOfDomain2(ELEDomain, indexNum, triIndexOfELE, triNumOfELE);
}