|
|
@ -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<DIM_>(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<DIM_>(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));
|
|
|
|
|
|
|
|