This work studies the snap buckling process when tightening an over hand knot. Uses Discrete Elastic Rod (DER) framework and incorporates contact and friction. Comparison between simulations and experiments is seen below in Figure 1.
Figure 1. Comparison between simulations and experiments for different overhand knots.
The codes are developed under linux systems. Please use the codes in linux systems.
Install the following C++ dependencies:
-
- Eigen is used for various linear algebra operations.
- Simulation codes is built with Eigen version 3.4.0 which can be downloaded here. After downloading the source code, install through cmake as follows.
cd eigen-3.4.0 && mkdir build && cd build cmake .. sudo make install
-
Intel oneAPI Math Kernel Library (oneMKL)
- Necessary for access to Pardiso, which is used as a sparse matrix solver.
- Intel MKL is also used as the BLAS / LAPACK backend for Eigen.
- If you are using Linux, follow the below steps. Otherwise, click the link above for your OS.
cd /tmp wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18483/l_onemkl_p_2022.0.2.136.sh # This runs an installer, simply follow the instructions. sudo sh ./l_onemkl_p_2022.0.2.136.sh
- Add the following to your .bashrc. Change the directory accordingly if your MKL version is different.
export MKLROOT=/opt/intel/oneapi/mkl/2022.0.2
-
- OpenGL / GLUT is used for rendering the knot through a simple graphic.
- Simply install through apt package manager:
sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
-
Lapack (usually preinstalled on your computer)
After completing all the necessary above steps, clone the source repository of IMC and then build the project through cmake.
mkdir build && cd build
cmake ..
make -j4All simulation parameters are set through a parameter file option.txt. A template file option.txt is provided that can be used to construct customized option.txt.
Specifiable parameters are as follows (we use SI units):
RodLength- Contour length of the rod.numVertices- Number of nodes on the rod.rodRadius- Cross-sectional radius of the rod.density- Mass per unit volume.youngM- Young's modulus.Poisson- Poisson ratio.tolandstol- Small numbers used in solving the linear system. Fraction of a percent, e.g. 1.0e-3, is often a good choice.maxIter- Maximum number of iterations allowed before the solver quits.gVector- 3x1 vector specifying acceleration due to gravity.viscosity- Viscosity for applying damping forces.render (0 or 1)- Flag indicating whether OpenGL visualization should be rendered.saveData (0 or 1)- Flag indicating whether pull forces and rod end positions should be reocrded.dataResolution- Rate of data recording in seconds. Applies to bothsaveDataandrecordNodes.statictimeInitial wait period duration.pullTime- Duration to pull for (starts afterwaitTimeis done).pullSpeed- Speed at which to pull and/or loosen each end.deltaTime- Time step size.filename- File name for the initial knot configuration. Should be a txt file located inknot_configurationsdirectory. Note that overhand knot configurations forn1, n2, n3, n4are provided with a discretization of 301 nodes.
Once parameters are set to your liking, the simulation can be ran from the terminal by running the provided script:
./run.shIf this doesn't work, execute chmod +x run.sh prior to running.
If our work has helped your research, please cite the following paper.
@article{10.1115/1.4056478,
author = {Tong, Dezhong and Choi, Andrew and Joo, Jungseock and Borum, Andy and Khalid Jawed, Mohammad},
title = "{Snap Buckling in Overhand Knots}",
journal = {Journal of Applied Mechanics},
volume = {90},
number = {4},
pages = {041008},
year = {2023},
month = {01},
issn = {0021-8936},
doi = {10.1115/1.4056478},
url = {https://doi.org/10.1115/1.4056478},
eprint = {https://asmedigitalcollection.asme.org/appliedmechanics/article-pdf/90/4/041008/6975362/jam\_90\_4\_041008.pdf},
}