[
    {
        "Variant name": "main",
        "Reviewer name": "Nicolas Bonneel <nicolas.bonneel@liris.cnrs.fr>",
        "Is master variant (boolean)": true,
        "Is variant deprecated (boolean)": false,
        "Title": "An Asymptotic Numerical Method for Inverse Elastic Shape Design",
        "DOI": "10.1145/2601097.2601189",
        "Year": 2014,
        "ACM Keywords": [
            "Geometric topology",
            "Physical simulation",
            "Shape modeling"
        ],
        "Topic {Rendering, Animation and Simulation, Geometry, Images, Virtual Reality, Fabrication}": "Fabrication",
        "Co-authors from academia (boolean)": true,
        "Co-authors from industry (boolean)": false,
        "ACM Open Access (boolean)": false,
        "PDF on the authors' webpage / institution (boolean)": true,
        "PDF URL": "http://kunzhou.net/zjugaps/ANMdesign/ANMdesign.pdf",
        "PDF on Arxiv or any openarchive initiatives (boolean)": false,
        "Arxiv/OAI page URL": "",
        "Project URL": "http://kunzhou.net/zjugaps/ANMdesign/",
        "Code available (boolean)": true,
        "If code not available, pseudo-code available (boolean)": false,
        "If pseudo-code, could the paper be trivially implemented? {0..4}": "",
        "Code URL": "http://kunzhou.net/zjugaps/ANMdesign/code/opensrc.zip",
        "Code URL2": "",
        "MD5 sum (for archives)": "F48759C5025580AA52E1A30A2BA3F685",
        "git/hg/svn commit hash or revision number": "",
        "MD5 sum (for archives) URL2": "",
        "git/hg/svn commit hash or revision number URL2": "",
        "Software Heritage permalink": "",
        "Software type {Code, Binary, Partial Code}": "Code",
        "Code License (if any)": "unspecified",
        "Are the code authors explicit? (boolean)": false,
        "Build/Configure mechanism": "IDE Project (VS,..)",
        "Dependencies": "VEGA / Intel Math Kernel Library / Qt / QGLViewer / pthread / clapack / Eigen / alglib / freeglut / glui / levmar / sparselm",
        "Does the software require paywall/proprietary software/material (boolean)?": false,
        "Does the code need data (not examples) (boolean)": false,
        "Nature of the data (pretrained model, LUT...)": "",
        "License of the data": "",
        "Able to perform a replicability test (boolean)": true,
        "If not able to perform a test, was it due to missing hardware/software? (boolean)": false,
        "Documentation score {0=NA,1,2,3}": 0,
        "Dependencies score {0=NA, 1,2,3,4,5}": 1,
        "Build/configure score {0=NA, 1,2,3,4,5}": 1,
        "Fixing bugs score (if any) {0=NA, 1,2,3,4,5}": 1,
        "Replicate paper results score {0=NA, 1,2,3,4,5}": 5,
        "Adaptability score to other contexts {0=NA, 1,2,3,4,5}": 5,
        "Time spent for the test (code download to first successful run, [0,10], 10min slots, 100min max)": 10,
        "Operating system for the test": "Windows",
        "Build instructions/comments": "I refreshed this old 2014 code to make it run on Qt 5 in 64bits with VS2017 using up to dates libraries rather than Qt 4 in 32 bits. This requires a number of adjustments, and fixing existing bugs, especially since there is no documentation nor build info:\n\n- In mat3d.h, replace line 435:\n  return(\n    s << '[' << a00 << ' ' << a01 << ' ' << a02 << ']' << std::endl <<\n    s << '[' << a10 << ' ' << a11 << ' ' << a12 << ']' << std::endl <<\n    s << '[' << a20 << ' ' << a21 << ' ' << a22 << ']'\n  );\nby\n  return(\n    s << '[' << a00 << ' ' << a01 << ' ' << a02 << ']' << std::endl <<\n    '[' << a10 << ' ' << a11 << ' ' << a12 << ']' << std::endl <<\n    '[' << a20 << ' ' << a21 << ' ' << a22 << ']'\n  );\n\n- in neoHookeanANMForward.cpp and tribox3.cpp, add #include <algorithm> (for std::min)\n\n- add the preprocessor directive HAVE_STRUCT_TIMESPEC in the vegaport project.\n\n- add the include directory to freeglut in the VS project.\n\n- in manipulatedforceframe.cpp line 35, replace \ndist = min((mp - pproj).norm(), (mp - qproj).norm());\nby\ndist = std::min((mp - pproj).norm(), (mp - qproj).norm());\n\n** Regarding the port to Qt 5\n- in inverseDeformableDesigner.vcxproj.user, changes the occurrences of Qt 4.8.4 to your Qt version (e.g., eg. C:\\Libs\\Qt\\5.12.6\\msvc2017_64 )\nIn the inverseDeformableDesigner project, add include path to $(QTDIR)\\include\\QtWidgets;\n\n- in inversedeformabledesigner.h, replace #include <QtGui/QMainWindow> by #include <QtWidgets/QMainWindow>\n- in inversedeformabledesigner.h, line 15 / inversedeformabledesigner.cpp line 4: replace Qt::WFlags by Qt::WindowFlags\n- in inversedeformabledesigner.cpp add #include <QFileDialog>\n- in inversedesigner.h, #include <QDockWidget> and #include <QListWidget> and #include <QLabel>\n- in main.cpp line 1, replace #include <QtGui/QApplication> by #include <QtWidgets/QApplication>\n\n- replace the included libraries QtCore4.lib QtGui4.lib QtOpenGL4.lib QtXml4.lib  by Qt5Core.lib Qt5Gui.lib Qt5OpenGL.lib Qt5Xml.lib\nAlso add Qt5Widgets.lib.\n\n** Regarding the port to 64 bits:\n* in the inverseDeformableDesigner project, replace the library mkl_intel_c_dll.lib by mkl_intel_lp64.lib\n\n* You of course need to recompile the dependencies in 64 bits. This includes downloading a fresh QGLViewer (I used 2.7.2) :\n- in manipulatedforceframe.h add #include \"QGLViewer/manipulatedframe.h\"\n- in inversedesigner.h, add #include \"QGLViewer/manipulatedcameraframe.h\"\n- in inversedesigner.cpp, line 2725, 2739, 2753, 2758, 2759, 2760, replace updateGL by update\n* You need to use a 64bits phread. A precompiled library in x64 has been shipped with the code... but the dll are missing. I used the lib and dll from https://github.com/github-for-unity/sfw/tree/master/lib/pthreads-win32-2.9.1\nIn the VS project file, I removed pthreadVCE2.lib and pthreadVSE2.lib.\n\n* You need to recompile sparselm-1.3 (which can be downloaded) without support for choldmod (use HAVE_CHOLMOD = false in cmake) ; clapack can be found here http://www.netlib.org/clapack/\n\n* Levmar 3.6 can be downloaded and recompiled without hassle.\n\n** Regarding MKL:\n- set the MKL_INC_PATH to your MKL : C:\\Program Files (x86)\\IntelSWTools\\compilers_and_libraries_2019.5.281\\windows\\mkl\\include\nUse the MKL library path in additional library directories: C:\\Program Files (x86)\\IntelSWTools\\compilers_and_libraries_2019.5.281\\windows\\mkl\\lib\\intel64_win\n\n- If you do all of the above, it should compile and run without complaining. However, it will crash during a solve with pardiso (?? pardiso is not linked with...). If this happens, just put the mkl dlls : mkl_core.dll, mkl_def.dll, mkl_intel_thread.dll and mkl_sequential.dll in the executable directory (or just add the MKL binary path to your Path environment variable).\n\n** Regarding execution\nThere is no documentation. However, the interface is quite straigforward : just load an existing config file, and click and the back arrow to solve the proposed inverse problem.\nThe code manages to reproduce (at least) Fig. 2.",
        "Misc. comments": "",
        "Software language": "C/C++"
    }
]