Browse Source

fix bug in rearAxle_mod

master
Chen Wei 2 years ago
parent
commit
6e1da1dd7e
  1. 16
      sim-test/rigid-test/rearAxle-mod/config.json
  2. 16
      sim-test/rigid-test/rearAxle-mod/config.json.in
  3. 61
      src/static_sim/StaticSim.cpp

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

@ -4,21 +4,21 @@
"DBC": [
{
"min": [-0.1, 0.4, -0.1],
"max": [0.6, 0.6, 1.1]
"min": [-0.01, 0.4, 0.3],
"max": [0.07, 0.6, 0.6]
}
],
"NBC": [
{
"min": [-0.1, 0.8, -0.1],
"max": [1.1, 1.1, 1.1],
"force": [1, 0, 0]
"min": [0.3, -0.01, 0.2],
"max": [0.6, 0.05, 0.6],
"force": [0, 1, 0]
},
{
"min": [-0.1, -0.1, -0.1],
"max": [1.1, 0.2, 1.1],
"force": [1, 0, 0]
"min": [0.3, 0.95, 0.2],
"max": [0.6, 1.01, 0.6],
"force": [0, -1, 0]
}
]
}

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

@ -4,21 +4,21 @@
"DBC": [
{
"min": [-0.1, 0.4, -0.1],
"max": [0.6, 0.6, 1.1]
"min": [-0.01, 0.4, 0.3],
"max": [0.07, 0.6, 0.6]
}
],
"NBC": [
{
"min": [-0.1, 0.8, -0.1],
"max": [1.1, 1.1, 1.1],
"force": [1, 0, 0]
"min": [0.3, -0.01, 0.2],
"max": [0.6, 0.05, 0.6],
"force": [0, 1, 0]
},
{
"min": [-0.1, -0.1, -0.1],
"max": [1.1, 0.2, 1.1],
"force": [1, 0, 0]
"min": [0.3, 0.95, 0.2],
"max": [0.6, 1.01, 0.6],
"force": [0, -1, 0]
}
]
}

61
src/static_sim/StaticSim.cpp

@ -361,6 +361,10 @@ namespace ssim {
);
#endif
for (int dofI = 0; dofI < nDof; ++dofI) {
linSysSolver->addCoeff(dofI, dofI, 1e-5);
}
}
void StaticSim::solve() {
@ -470,6 +474,63 @@ namespace ssim {
}
}
// BC only apply on surface nodes
// void StaticSim::setBC() {
// spdlog::info("set Boundary Conditions");
//
// // DBC
// int nDBC = 0;
// DBC_nI.resize(nN);
// isDBC.setZero(nN);
// int DBCNum = (int) DirichletBCs.size();
// for (int svI = 0; svI < SVI.size(); ++svI) {
// int vI = SVI(svI);
// Eigen::Vector3d p = TV.row(vI);
// for (int _i = 0; _i < DBCNum; ++_i) {
// if (DirichletBCs[_i].inDBC(p)) {
// DBC_nI(nDBC) = vI;
// isDBC(vI) = 1;
// ++nDBC;
//
// break;
// }
// }
// }
// DBC_nI.conservativeResize(nDBC);
// // Utils::writeOBJ(outputPath + "DBCV.obj", TV(DBC_nI, Eigen::all),
// // Eigen::VectorXi::LinSpaced(nDBC, 0, nDBC-1));
// // NBC
// load.resize(0);
// load.setZero(nDof);
// int nNBC = 0;
// Eigen::VectorXi NBC_nI(nN);
// int NBCNum = (int) NeumannBCs.size();
// for (int svI = 0; svI < SVI.size(); ++svI) {
// int vI = SVI(svI);
// Eigen::Vector3d p = TV.row(vI);
// for (int _i = 0; _i < NBCNum; ++_i) {
// if (NeumannBCs[_i].inNBC(p)) {
// load.segment<DIM_>(vI * DIM_) = NeumannBCs[_i].force;
// NBC_nI(nNBC) = vI;
// ++nNBC;
//
// break;
// }
// }
// }
// NBC_nI.conservativeResize(nNBC);
// // Utils::writeOBJ(outputPath + "NBCV.obj", TV(NBC_nI, Eigen::all),
// // Eigen::VectorXi::LinSpaced(nNBC, 0, nNBC-1));
//
// spdlog::info("#DBC nodes: {}, #NBC particles: {}", nDBC, nNBC);
//
// // ensure (DBC intersect NBC) = (empty)
// for (int i_ = 0; i_ < DBC_nI.size(); ++i_) {
// int nI = DBC_nI(i_);
// load.segment<DIM_>(nI * DIM_).setZero();
// }
// }
Model StaticSim::get_mesh() {
if (mesh_.NumVertex() == 0) {
// fill mesh_

Loading…
Cancel
Save