#pragma once #include"../material/Material_Base.h" #include"../mesh/Mesh_Base.h" #include"../solver/Solver_Base.h" #include"../Eigen/Sparse" #include"../Eigen/Dense" #include #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); void GetResult(Eigen::VectorXcd* x); void GetElectric(); void OutputData(std::string str); private: Mesh_3D* _mMesh; Eigen::VectorXcd* _mX; Eigen::VectorXcd _mEx, _mEy, _mEz; Eigen::VectorXd _mNormE; };