Browse Source

change force in BC

master
Chen Wei 2 years ago
parent
commit
6f46623520
  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. 17
      src/static_sim/StaticSim.cpp

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/static_simulation_gui/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/static_simulation_gui/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/static_simulation_gui/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": [
{ {

17
src/static_sim/StaticSim.cpp

@ -499,19 +499,21 @@ namespace ssim {
DBC_nI.conservativeResize(nDBC); DBC_nI.conservativeResize(nDBC);
// Utils::writeOBJ(outputPath + "DBCV.obj", TV(DBC_nI, Eigen::all), // Utils::writeOBJ(outputPath + "DBCV.obj", TV(DBC_nI, Eigen::all),
// Eigen::VectorXi::LinSpaced(nDBC, 0, nDBC-1)); // Eigen::VectorXi::LinSpaced(nDBC, 0, nDBC-1));
// NBC // NBC
load.resize(0);
load.setZero(nDof);
int nNBC = 0; int nNBC = 0;
Eigen::VectorXi NBC_nI(nN); Eigen::VectorXi NBC_nI(nN);
Eigen::VectorXi NBC_nI_nbcI(nN);
int NBCNum = (int) NeumannBCs.size(); int NBCNum = (int) NeumannBCs.size();
Eigen::VectorXi NBC_nNode = Eigen::VectorXi::Zero(NBCNum);
for (int svI = 0; svI < SVI.size(); ++svI) { for (int svI = 0; svI < SVI.size(); ++svI) {
int vI = SVI(svI); int vI = SVI(svI);
Eigen::Vector3d p = TV.row(vI); Eigen::Vector3d p = TV.row(vI);
for (int _i = 0; _i < NBCNum; ++_i) { for (int _i = 0; _i < NBCNum; ++_i) {
if (NeumannBCs[_i].inNBC(p)) { if (NeumannBCs[_i].inNBC(p)) {
load.segment<DIM_>(vI * DIM_) = NeumannBCs[_i].force;
NBC_nI(nNBC) = vI; NBC_nI(nNBC) = vI;
NBC_nI_nbcI(nNBC) = _i;
++NBC_nNode(_i);
++nNBC; ++nNBC;
break; break;
@ -519,6 +521,15 @@ namespace ssim {
} }
} }
NBC_nI.conservativeResize(nNBC); NBC_nI.conservativeResize(nNBC);
NBC_nI_nbcI.conservativeResize(nNBC);
load.resize(0);
load.setZero(nDof);
for (int vI_ = 0; vI_ < nNBC; ++vI_) {
int vI = NBC_nI(vI_);
int nbcI = NBC_nI_nbcI(vI_);
load.segment<DIM_>(vI * DIM_) = NeumannBCs[nbcI].force / NBC_nNode(nbcI);
}
// Utils::writeOBJ(outputPath + "NBCV.obj", TV(NBC_nI, Eigen::all), // Utils::writeOBJ(outputPath + "NBCV.obj", TV(NBC_nI, Eigen::all),
// Eigen::VectorXi::LinSpaced(nNBC, 0, nNBC-1)); // Eigen::VectorXi::LinSpaced(nNBC, 0, nNBC-1));

Loading…
Cancel
Save