You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
41 lines
1.2 KiB
//
|
|
// 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<Top3d> sp_mech_top3d, std::shared_ptr<Top3d> 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<Top3d> sp_mech_top3d_, sp_thermal_top3d_;
|
|
};
|
|
}
|
|
|
|
|
|
#endif //TOP3D_THERMOELASTICTOP3D_H
|
|
|