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.
38 lines
1.1 KiB
38 lines
1.1 KiB
#include <iostream>
|
|
#include <unsupported/Eigen/CXX11/Tensor>
|
|
#include <Eigen/Dense>
|
|
#include <Eigen/Eigen>
|
|
#include "Top3d.h"
|
|
#include "Boundary.h"
|
|
using Eigen::Tensor;
|
|
using Tensor3f = Tensor<float, 3>;
|
|
|
|
void print_tensor(const Tensor3f &t3) {
|
|
for (int k = 0; k < t3.dimension(2); ++k) {
|
|
std::cout << t3.chip(k, 2) << std::endl;
|
|
std::cout << std::endl;
|
|
}
|
|
}
|
|
|
|
int main() {
|
|
auto para = std::make_shared<top::CtrlPara>();
|
|
para->max_loop=200;
|
|
para->volfrac=0.2;
|
|
para->penal=3.0;
|
|
para->r_min=1.5;
|
|
double E = 1.0;
|
|
double Poisson_ratio = 0.3;
|
|
auto material = std::make_shared<SIM::Material>(E, Poisson_ratio);
|
|
auto mesh = std::make_shared<top::Mesh>(20, 120,20);
|
|
top::Top3d top3d(para, material, mesh);
|
|
top::Boundary bdr(mesh);
|
|
top3d.AddDBC(bdr.GetCornerPoint(0),{1,1,1});
|
|
top3d.AddDBC(bdr.GetCornerPoint(1),{1,1,1});
|
|
top3d.AddDBC(bdr.GetCornerPoint(2),{1,1,1});
|
|
top3d.AddDBC(bdr.GetCornerPoint(3),{1,1,1});
|
|
top3d.AddNBC(bdr.GetTopSurfaceCenter(),{0,0,-1});
|
|
top3d.TopOptMainLoop();
|
|
|
|
|
|
return 0;
|
|
}
|
|
|