Browse Source

complete ExtractTarget

master
Chen Wei 2 years ago
parent
commit
21b1fef69e
  1. 2
      sim-test/rigid-test/cube/config.json
  2. 2
      sim-test/rigid-test/rearAxle-mod/config.json
  3. 2
      sim-test/rigid-test/rocker-arm/config.json
  4. 42
      src/static_sim/StaticSim.h

2
sim-test/rigid-test/cube/config.json

@ -1,6 +1,6 @@
{ {
"material": [1e5, 0.3, 1e3], "material": [1e5, 0.3, 1e3],
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/cube/cube_9743.msh", "mshFilePath": "/home/cw/opt/StaticSimulation/sim-test/rigid-test/cube/cube_9743.msh",
"DBC": [ "DBC": [
{ {

2
sim-test/rigid-test/rearAxle-mod/config.json

@ -1,6 +1,6 @@
{ {
"material": [1e5, 0.3, 1e3], "material": [1e5, 0.3, 1e3],
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/rearAxle-mod/rearAxle-mod_.msh", "mshFilePath": "/home/cw/opt/StaticSimulation/sim-test/rigid-test/rearAxle-mod/rearAxle-mod_.msh",
"DBC": [ "DBC": [
{ {

2
sim-test/rigid-test/rocker-arm/config.json

@ -1,6 +1,6 @@
{ {
"material": [1e5, 0.3, 1e3], "material": [1e5, 0.3, 1e3],
"mshFilePath": "/home/cflin/Documents/CppField/source/RigidElasticSim/sim-test/rigid-test/rocker-arm/rocker-arm_.msh", "mshFilePath": "/home/cw/opt/StaticSimulation/sim-test/rigid-test/rocker-arm/rocker-arm_.msh",
"DBC": [ "DBC": [
{ {

42
src/static_sim/StaticSim.h

@ -25,7 +25,10 @@
#include "BoundaryConditions.hpp" #include "BoundaryConditions.hpp"
#include "Config.hpp" #include "Config.hpp"
#include "Utils.hpp"
#include <igl/read_triangle_mesh.h> #include <igl/read_triangle_mesh.h>
#include <igl/write_triangle_mesh.h>
namespace ssim { namespace ssim {
class StaticSimGUI; class StaticSimGUI;
@ -85,19 +88,24 @@ namespace ssim {
/// \param v_is_extract if (v_is_extract[i]){ extract the target i; } /// \param v_is_extract if (v_is_extract[i]){ extract the target i; }
/// \param extract_coord_flg /// \param extract_coord_flg
void ExtractTarget(std::string save_dir,std::vector<bool> v_is_extract,bool extract_coord_flg){ void ExtractTarget(std::string save_dir,std::vector<bool> v_is_extract,bool extract_coord_flg){
if(extract_coord_flg){ if(extract_coord_flg) {
// TODO: add coordinate cols Eigen::MatrixXd V_surf(SVI.size(), 3);
spdlog::info("extract {}","coordinate"); for (int svI = 0; svI < SVI.size(); ++svI) {
int vI = SVI[svI];
Eigen::Vector3d u = U.segment<3>(vI * 3);
V_surf.row(svI) = TV.row(vI) + u.transpose();
}
igl::write_triangle_mesh(save_dir + "/deformed-surf.obj", V_surf, F_surf);
spdlog::info("save deformed surface mesh to 'deformed-surf.obj'");
} }
for(int i=0;i<v_is_extract.size();++i){ for(int i=0;i<v_is_extract.size();++i){
assert(i<SimTargetOption::Target::ENUM_SIZE); assert(i<SimTargetOption::Target::ENUM_SIZE);
if(v_is_extract[i]){ if(v_is_extract[i]){
// TODO: add #target col Utils::writeMatrix(save_dir + "/" + std::to_string(i) + ".txt", map_target_to_evaluated_[i]);
spdlog::info("extract {}",i); spdlog::info("extract target {}",i);
} }
} }
// TODO: extract the file
} }
Eigen::MatrixXd EvaluateTarget(SimTargetOption::Target target) { Eigen::MatrixXd EvaluateTarget(SimTargetOption::Target target) {
@ -165,26 +173,6 @@ namespace ssim {
// Return: 1 x 1 // Return: 1 x 1
Eigen::MatrixXd EvaluateCompliance() const; Eigen::MatrixXd EvaluateCompliance() const;
void writePntVTK(const std::string &path, const Eigen::MatrixXd &V) {
std::ofstream out(path);
out << "# vtk DataFile Version 3.0\n"
"Volume Mesh\n"
"ASCII\n"
"DATASET UNSTRUCTURED_GRID" << std::endl;
out << "POINTS " << V.rows() << " float" << std::endl;
for (int i = 0; i < V.rows(); ++i) {
out << std::setprecision(4) << V.row(i).x() << " " << V.row(i).y() << " " << V.row(i).z() << std::endl;
}
out << "CELLS " << V.rows() << " " << V.rows() * (1 + 1) << std::endl;
for (int i = 0; i < V.rows(); ++i) {
out << "1 " << i << std::endl;
}
out << "CELL_TYPES " << V.rows() << std::endl;
for (int i = 0; i < V.rows(); ++i) {
out << 1 << std::endl;
}
}
private: private:
MeshModel mesh_; MeshModel mesh_;
MaterialProperty material_property_; MaterialProperty material_property_;

Loading…
Cancel
Save