diff --git a/sim-test/rigid-test/cube/config.json b/sim-test/rigid-test/cube/config.json index 73ec4e3..a8f50b9 100644 --- a/sim-test/rigid-test/cube/config.json +++ b/sim-test/rigid-test/cube/config.json @@ -1,6 +1,6 @@ { "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": [ { diff --git a/sim-test/rigid-test/rearAxle-mod/config.json b/sim-test/rigid-test/rearAxle-mod/config.json index d0fdae9..9fb800c 100644 --- a/sim-test/rigid-test/rearAxle-mod/config.json +++ b/sim-test/rigid-test/rearAxle-mod/config.json @@ -1,6 +1,6 @@ { "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": [ { diff --git a/sim-test/rigid-test/rocker-arm/config.json b/sim-test/rigid-test/rocker-arm/config.json index 888ce7e..2be5db7 100644 --- a/sim-test/rigid-test/rocker-arm/config.json +++ b/sim-test/rigid-test/rocker-arm/config.json @@ -1,6 +1,6 @@ { "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": [ { diff --git a/src/static_sim/StaticSim.cpp b/src/static_sim/StaticSim.cpp index d6cbad8..f91e3d3 100644 --- a/src/static_sim/StaticSim.cpp +++ b/src/static_sim/StaticSim.cpp @@ -499,19 +499,21 @@ namespace ssim { 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); + Eigen::VectorXi NBC_nI_nbcI(nN); int NBCNum = (int) NeumannBCs.size(); + Eigen::VectorXi NBC_nNode = Eigen::VectorXi::Zero(NBCNum); 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(vI * DIM_) = NeumannBCs[_i].force; NBC_nI(nNBC) = vI; + NBC_nI_nbcI(nNBC) = _i; + ++NBC_nNode(_i); ++nNBC; break; @@ -519,6 +521,15 @@ namespace ssim { } } 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(vI * DIM_) = NeumannBCs[nbcI].force / NBC_nNode(nbcI); + } // Utils::writeOBJ(outputPath + "NBCV.obj", TV(NBC_nI, Eigen::all), // Eigen::VectorXi::LinSpaced(nNBC, 0, nNBC-1));