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