72 lines
1.5 KiB
C++
72 lines
1.5 KiB
C++
#include"Post_Base.h"
|
|
#include"../function/BF.h"
|
|
|
|
#include <fstream>
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
#include <string>
|
|
#include "../parser/mpParser.h"
|
|
#include"../Eigen/Sparse"
|
|
#include"../Eigen/Dense"
|
|
|
|
|
|
using namespace Eigen;
|
|
|
|
void Post_2D_Scatter::GetEb()
|
|
{
|
|
int nbrVertex = _mMesh->GetNbrVertex();
|
|
int nbrEdge = _mMesh->GetNbrEdge();
|
|
_mEbx = Eigen::VectorXcd::Zero(nbrVertex);
|
|
_mEby = Eigen::VectorXcd::Zero(nbrVertex);
|
|
_mEbz = Eigen::VectorXcd::Zero(nbrVertex);
|
|
|
|
string Ebx, Eby, Ebz;
|
|
_mPhy->GetEb(Ebx, Eby, Ebz);
|
|
|
|
//inite parser
|
|
mup::ParserX p(mup::pckALL_COMPLEX);
|
|
p.EnableAutoCreateVar(true);
|
|
mup::Value xx, yy;
|
|
p.DefineVar(_T("x"), mup::Variable(&xx));
|
|
p.DefineVar(_T("y"), mup::Variable(&yy));
|
|
|
|
Eigen::Vector3d vertex;
|
|
for (int i = 0; i < nbrVertex; i++)
|
|
{
|
|
|
|
_mMesh->GetVertex(i, vertex);
|
|
|
|
xx = vertex[0];
|
|
yy = vertex[1];
|
|
|
|
p.SetExpr(_T(Ebx));
|
|
_mEbx[i].real(p.Eval().GetFloat());
|
|
_mEbx[i].imag(p.Eval().GetImag());
|
|
p.SetExpr(_T(Eby));
|
|
_mEby[i].real(p.Eval().GetFloat());
|
|
_mEby[i].imag(p.Eval().GetImag());
|
|
p.SetExpr(_T(Ebz));
|
|
_mEbz[i].real(p.Eval().GetFloat());
|
|
_mEbz[i].imag(p.Eval().GetImag());
|
|
}
|
|
|
|
//loop over tri
|
|
int NbrTri = _mMesh->GetNbrTri();
|
|
for (int i = 0; i < NbrTri; i++)
|
|
{
|
|
int domain = _mMesh->GetDomainOfTri(i);
|
|
Eigen::VectorXi PMLDomain;
|
|
_mPhy->GetPMLDomain(PMLDomain);
|
|
if (std::find(PMLDomain.begin(), PMLDomain.end(), domain) != PMLDomain.end())
|
|
{
|
|
int tri;
|
|
for (int j = 0; j < 3; j++)
|
|
{
|
|
tri = _mMesh->GetTri(i, j);
|
|
_mEbx(tri) = 0;
|
|
_mEby(tri) = 0;
|
|
_mEbz(tri) = 0;
|
|
}
|
|
}
|
|
}
|
|
} |