Browse Source

fix bug in updateBC

master
Chen Wei 2 years ago
parent
commit
d6e0991a2f
  1. 19
      sim-test/rigid-test/rearAxle-mod/config.json.in
  2. 14
      static_sim/StaticSim.cpp

19
sim-test/rigid-test/rearAxle-mod/config.json.in

@ -4,20 +4,21 @@
"DBC": [ "DBC": [
{ {
"min": [0.2, -0.001, 0.2], "min": [-0.1, 0.4, -0.1],
"max": [0.6, 0.05, 0.8] "max": [0.6, 0.6, 1.1]
},
{
"min": [0.2, 0.95, 0.2],
"max": [0.6, 1.001, 0.8]
} }
], ],
"NBC": [ "NBC": [
{ {
"min": [-0.001, 0.4, 0.3], "min": [-0.1, 0.8, -0.1],
"max": [0.08, 0.6, 0.7], "max": [1.1, 1.1, 1.1],
"force": [-1.732, 0, 1] "force": [1, 0, 0]
},
{
"min": [-0.1, -0.1, -0.1],
"max": [1.1, 0.2, 1.1],
"force": [1, 0, 0]
} }
] ]
} }

14
static_sim/StaticSim.cpp

@ -116,6 +116,7 @@ namespace ssim {
Eigen::VectorXi DBC_i_faceIdx = getSurfTriForBox(DBC.absMinBBox, DBC.absMaxBBox); Eigen::VectorXi DBC_i_faceIdx = getSurfTriForBox(DBC.absMinBBox, DBC.absMaxBBox);
DBC_faceIdx_.conservativeResize(cnt + DBC_i_faceIdx.size()); DBC_faceIdx_.conservativeResize(cnt + DBC_i_faceIdx.size());
DBC_faceIdx_.segment(cnt, DBC_i_faceIdx.size()) = DBC_i_faceIdx; DBC_faceIdx_.segment(cnt, DBC_i_faceIdx.size()) = DBC_i_faceIdx;
cnt += DBC_i_faceIdx.size();
} }
std::set<int> DBC_faceIdx_set(DBC_faceIdx_.data(), DBC_faceIdx_.data() + DBC_faceIdx_.size()); std::set<int> DBC_faceIdx_set(DBC_faceIdx_.data(), DBC_faceIdx_.data() + DBC_faceIdx_.size());
std::vector<int> DBC_faceIdx_vec(DBC_faceIdx_set.begin(), DBC_faceIdx_set.end()); std::vector<int> DBC_faceIdx_vec(DBC_faceIdx_set.begin(), DBC_faceIdx_set.end());
@ -130,6 +131,12 @@ namespace ssim {
} }
std::vector<int> DBC_vertexIdx_vec(DBC_vertex_set.begin(), DBC_vertex_set.end()); std::vector<int> DBC_vertexIdx_vec(DBC_vertex_set.begin(), DBC_vertex_set.end());
DBC_vertexIdx_ = Eigen::Map<Eigen::VectorXi>(DBC_vertexIdx_vec.data(), DBC_vertexIdx_vec.size());; DBC_vertexIdx_ = Eigen::Map<Eigen::VectorXi>(DBC_vertexIdx_vec.data(), DBC_vertexIdx_vec.size());;
Eigen::MatrixXd DBCV(DBC_vertexIdx_.size(), 3);
for (int i_ = 0; i_ < DBC_vertexIdx_.size(); ++i_) {
DBCV.row(i_) = TV.row(SVI(DBC_vertexIdx_(i_)));
}
writePntVTK("/home/cw/Downloads/DBCV.vtk", DBCV);
} }
{ {
int cnt = 0; int cnt = 0;
@ -137,6 +144,7 @@ namespace ssim {
Eigen::VectorXi NBC_i_faceIdx = getSurfTriForBox(NBC.absMinBBox, NBC.absMaxBBox); Eigen::VectorXi NBC_i_faceIdx = getSurfTriForBox(NBC.absMinBBox, NBC.absMaxBBox);
NBC_faceIdx_.conservativeResize(cnt + NBC_i_faceIdx.size()); NBC_faceIdx_.conservativeResize(cnt + NBC_i_faceIdx.size());
NBC_faceIdx_.segment(cnt, NBC_i_faceIdx.size()) = NBC_i_faceIdx; NBC_faceIdx_.segment(cnt, NBC_i_faceIdx.size()) = NBC_i_faceIdx;
cnt += NBC_i_faceIdx.size();
} }
std::set<int> NBC_faceIdx_set(NBC_faceIdx_.data(), NBC_faceIdx_.data() + NBC_faceIdx_.size()); std::set<int> NBC_faceIdx_set(NBC_faceIdx_.data(), NBC_faceIdx_.data() + NBC_faceIdx_.size());
std::vector<int> NBC_faceIdx_vec(NBC_faceIdx_set.begin(), NBC_faceIdx_set.end()); std::vector<int> NBC_faceIdx_vec(NBC_faceIdx_set.begin(), NBC_faceIdx_set.end());
@ -151,6 +159,12 @@ namespace ssim {
} }
std::vector<int> NBC_vertexIdx_vec(NBC_vertex_set.begin(), NBC_vertex_set.end()); std::vector<int> NBC_vertexIdx_vec(NBC_vertex_set.begin(), NBC_vertex_set.end());
NBC_vertexIdx_ = Eigen::Map<Eigen::VectorXi>(NBC_vertexIdx_vec.data(), NBC_vertexIdx_vec.size());; NBC_vertexIdx_ = Eigen::Map<Eigen::VectorXi>(NBC_vertexIdx_vec.data(), NBC_vertexIdx_vec.size());;
Eigen::MatrixXd NBCV(NBC_vertexIdx_.size(), 3);
for (int i_ = 0; i_ < NBC_vertexIdx_.size(); ++i_) {
NBCV.row(i_) = TV.row(SVI(NBC_vertexIdx_(i_)));
}
writePntVTK("/home/cw/Downloads/NBCV.vtk", NBCV);
} }
} }

Loading…
Cancel
Save