{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Basic modeling with mecabio" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import matplotlib.pylab as plt\n", "\n", "from kt_simul.mecabio import Structure, Point, Link\n", "from kt_simul.mecabio import Model, dampedspring, viscous\n", "from kt_simul.mecabio import spring, dashpot, linear_fv, contraction\n", "\n", "from kt_simul.visu import StructureViewer\n", "from kt_simul.visu import StructureWidget\n", "\n", "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simulate two points linked together by a linear force which push on them." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "struct = Structure('simple 2 points system')\n", "p0 = struct.add_point(idx=0, init_pos=[2, 0, 0], color=\"black\")\n", "p1 = struct.add_point(idx=1, init_pos=[-2, 0, 0], color=\"green\")\n", "lnk = struct.add_link(p0, p1)\n", "\n", "struct.update_geometry()\n", "m = Model(struct)\n", "\n", "def model_update(step):\n", "\n", " m.Bvect *= 0\n", " linear_fv(m, lnk, F_stall=1, v_max=1, gamma=1)\n", " struct.register_history(step)\n", "\n", "for i in range(0, 30):\n", " m.solve()\n", " model_update(i)\n", " \n", "struct.end_history()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize points trajectories in 2D." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n6u65BVRdnOT67r5kj2M9uz4AGK2q0t01uw4AYCxLxAEAAGCA2T/T9eYkf5/k26vq01X1opn1AAAA\nwOmavkR8P5aIA7CJLBEHgM1kiTgAAAAMIGADAADAAAI2AAAADCBgAwAAwAACNgAAAAwgYAMAAMAA\nAjYAAAAMIGADAADAAAI2AAAADCBgAwAAwAACNgAAAAwgYAMAAMAAAjYAAAAMIGADAADAAAI2AAAA\nDCBgAwAAwAACNgAAAAwgYAMAAMAAAjYAAAAMIGADAADAAAI2AAAADCBgAwAAwABTA3ZVXV5VH62q\nT1TVK2bWAgAAAGdiWsCuqvOS/GaSy5M8Jsnzquo773ne0UuPZvtV26f8uduv2s7RS4/mwY978DfU\n9nTbzWqrXvXO7lO9m9eneg+/XgBgw3X3lC3J9yX5y13vr0py1T3O6Wynty7b6mPXHeuDHLvuWG9d\nttXZzontVNqebrtZbdWr3tl9qnfz+lTv4de7286f3zl/f202m81msx3eVt29bwCvqr9N8trufteu\nfb/d3T97JsG+qn4iydO7+8Wr9z+d5MndfeWuczrbO6+PvO1I7rj5jn0/8+ilR3P82cfvtf+gtqfb\nblZb9ap3dp/q3bw+1Xv49e5WVenuOuUGAMBZYesUznlUkldU1RO7+9rVvu8Z0Pf+yf4uN+78c/xL\nx1MvrJ1qTuaCvXcff8jx1LX7fI853Xaz2qpXvbP7PJO26l3PPs+krXrztfravs2Wy2WWy+X+nw0A\nnPVOJWB/MckPJ/mNqro+yfMH9f2ZJBften9RktvuddYP7fxz5G1HcsfvHnBl4a1Hczx7XFn4wpHc\ncWyfqxmn2W5WW/Wqd3af6t28PtV7Zn1u9f5/TheLRRaLxYn311577clPBgDOWqf0kLPu/lp3vzTJ\nW5O8N8m3Dej7A0keXVUXV9X5SZ6b5J17nbj19q1c8dwrDvzAK37qimy9/eu/5JxK29NtN6utetU7\nu0/1bl6f6j38egGAc8BBN2kneck93j8hyRtH3ACe5BlJPpbkk0leucfxPnLpkW/o4THHrjvWRy49\n0g+67EHfUNvTbTerrXrVO7tP9W5en+o9/HrvEg85s9lsNpttI7cDH3I2U1X1OtcHAKfDQ84AYDNN\n+x1sAAAA2CQCNgAAAAwgYAMAAMAAAjYAAAAMIGADAADAAAI2AAAADCBgAwAAwAACNgAAAAwgYAMA\n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\nYH8p8CoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_ = struct.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize points trajectories in 3D with vispy." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib qt\n", "\n", "# Pure vispy\n", "v = StructureViewer(structure=struct)\n", "v.play()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Vispy + Qt\n", "w = StructureWidget()\n", "w.add_structure(struct)\n", "w.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }