// // Created by cflin on 6/12/23. // #ifndef TOP3D_THERMOELASTICTOP3D_H #define TOP3D_THERMOELASTICTOP3D_H #include "Top3d.h" namespace da::sha::top { class ThermoelasticTop3d { public: ThermoelasticTop3d(std::shared_ptr sp_mech_top3d, std::shared_ptr sp_thermal_top3d) : sp_mech_top3d_(sp_mech_top3d), sp_thermal_top3d_(sp_thermal_top3d) { } void AddThermalDBC(const Eigen::MatrixXi &thermal_DBC_coords, double temperature) { sp_thermal_top3d_->AddDBC(thermal_DBC_coords, temperature); } void AddThermalNBC(const Eigen::MatrixXi &thermal_NBC_coords, double heat_flux) { sp_thermal_top3d_->AddNBC(thermal_NBC_coords, Eigen::Vector3d(heat_flux, 0, 0)); } Tensor3d TopOptMainLoop() { return sp_thermal_top3d_->TopOptMainLoop(); // return sp_mech_top3d_->TopOptMainLoop(); } Eigen::VectorXd GetU() const { return sp_thermal_top3d_->GetU(); // return sp_mech_top3d_->GetU(); } private: std::shared_ptr sp_mech_top3d_, sp_thermal_top3d_; }; } #endif //TOP3D_THERMOELASTICTOP3D_H