XIAN-FEM-2026June/opticsfem-master/post/Post_Base.h

97 lines
1.7 KiB
C++

#pragma once
#include"../material/Material_Base.h"
#include"../mesh/Mesh_Base.h"
#include"../solver/Solver_Base.h"
#include"../Eigen/Sparse"
#include"../Eigen/Dense"
#include <string>
#include "../phy/Phy_Base.h"
class Post_2D_EigenMode
{
public:
void GetMesh(Mesh_2D* mesh);
void GetSolver(Solver_EigenMode* solver);
void GetResult(Eigen::MatrixXcd* x, Eigen::VectorXcd* lambda);
void GetElectric();
double GetPower();
void OutputData(std::string str);
private:
Mesh_2D* _mMesh;
Solver_EigenMode* _mSolver;
Eigen::MatrixXcd* _mX;
Eigen::MatrixXcd _mEx, _mEy, _mEz;
Eigen::MatrixXd _mNormE;
Eigen::VectorXcd _mGamma;
Eigen::VectorXcd _mNeff;
};
class Post_2D_EigenFreq
{
public:
void GetMesh(Mesh_2D* mesh);
void GetSolver(Solver_EigenFreq* solver);
void GetResult(Eigen::MatrixXcd* x, Eigen::VectorXcd* lambda);
void GetElectric();
void OutputData(std::string str);
private:
Mesh_2D* _mMesh;
Solver_EigenFreq* _mSolver;
Eigen::MatrixXcd* _mX;
Eigen::MatrixXcd _mEx, _mEy, _mEz;
Eigen::MatrixXd _mNormE;
Eigen::VectorXcd _mFreq;
};
class Post_2D_Scatter
{
public:
void GetMesh(Mesh_2D* mesh);
void GetSolver(Solver_LdaDom* solver);
void GetResult(Eigen::VectorXcd* x);
void GetPhy(Phy_WaveOpticsModel* phy);
void GetElectric();
void GetEb();
void OutputData(std::string str);
private:
Mesh_2D* _mMesh;
Solver_LdaDom* _mSolver;
Phy_WaveOpticsModel* _mPhy;
Eigen::VectorXcd* _mX;
Eigen::VectorXcd _mEx, _mEy, _mEz;
Eigen::VectorXd _mNormE;
Eigen::VectorXcd _mRelEx, _mRelEy, _mRelEz;
Eigen::VectorXcd _mEbx, _mEby, _mEbz;
};
class Post_3D_EigenFreq
{
public:
void GetMesh(Mesh_3D* mesh);
private:
Mesh_3D* _mMesh;
};
class Post_3D_Scatter
{
public:
void GetMesh(Mesh_3D* mesh);
private:
Mesh_3D* _mMesh;
};