From 932cb5c6ca47af3800922a07e0ca3dabbca5ea29 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Keck <Jean-Baptiste.Keck@imag.fr> Date: Wed, 8 Aug 2018 19:38:19 +0200 Subject: [PATCH] fixed notebooks --- hysop/topology/topology_descriptor.py | 2 + notebooks/00_introduction.ipynb | 787 ++++++++++++-------------- notebooks/01_analytical.ipynb | 450 +-------------- 3 files changed, 377 insertions(+), 862 deletions(-) diff --git a/hysop/topology/topology_descriptor.py b/hysop/topology/topology_descriptor.py index f3e15bb62..3045b0979 100644 --- a/hysop/topology/topology_descriptor.py +++ b/hysop/topology/topology_descriptor.py @@ -70,6 +70,8 @@ class TopologyDescriptor(object): if isinstance(handle, Topology): # handle is already a Topology, so we return it. return handle + elif isinstance(handle, TopologyView): + return handle._topology elif isinstance(handle, TopologyDescriptor): # handle is already a TopologyDescriptor, so we return it. return handle diff --git a/notebooks/00_introduction.ipynb b/notebooks/00_introduction.ipynb index d714d77c0..3e8170521 100644 --- a/notebooks/00_introduction.ipynb +++ b/notebooks/00_introduction.ipynb @@ -29,20 +29,7 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Starting hysop version 2.0.0-rc.1 with 1 mpi process(es) on 1 host(s) providing 1 shared memory node(s).\n", - "\n", - "*Default path for all i/o is '/home/keckj/Documents/hysop/notebooks/interactive/p1'.\n", - "*Default path for caching is '/home/keckj/.cache/hysop'.\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "# First we import HySoP and some types we will need for this tutorial\n", @@ -361,6 +348,8 @@ " | \n", " | __init__(self, obj_view=None, **kwds)\n", " | \n", + " | __repr__(self)\n", + " | \n", " | ----------------------------------------------------------------------\n", " | Data descriptors inherited from hysop.tools.handle.TaggedObjectView:\n", " | \n", @@ -370,12 +359,18 @@ " | __weakref__\n", " | list of weak references to the object (if defined)\n", " | \n", + " | full_pretty_tag\n", + " | Unique tag of the underlying object view with cls information.\n", + " | \n", " | full_tag\n", " | Unique tag of the underlying object view with cls information.\n", " | \n", " | id\n", " | Unique id of the underlying object view.\n", " | \n", + " | pretty_tag\n", + " | Unique pretty tag of the underlying object view.\n", + " | \n", " | tag\n", " | Unique tag of the underlying object view.\n", " | \n", @@ -442,24 +437,24 @@ "text": [ "HYSOP_REAL is set to float64.\n", "\n", - "Field::f0\n", - " *name: F0\n", - " *pname: F0\n", - " *dim: 2\n", - " *nb_components: 1\n", - " *dtype: float64\n", - " *initial values: (0, 0)\n", - " *topology tags: []\n", - " \n", - "Field::f1\n", - " *name: F1\n", - " *pname: F1\n", - " *dim: 2\n", - " *nb_components: 1\n", - " *dtype: int32\n", - " *initial values: (0, 0)\n", - " *topology tags: []\n", - " \n" + "ScalarField::f0\n", + " *name: F0\n", + " *pname: F0\n", + " *dim: 2\n", + " *dtype: float64\n", + " *symbolic repr.: F0\n", + " *initial values: (0, 0)\n", + " *topology tags: []\n", + "\n", + "ScalarField::f1\n", + " *name: F1\n", + " *pname: F1\n", + " *dim: 2\n", + " *dtype: int32\n", + " *symbolic repr.: F1\n", + " *initial values: (0, 0)\n", + " *topology tags: []\n", + "\n" ] } ], @@ -490,33 +485,50 @@ "name": "stdout", "output_type": "stream", "text": [ - "Field::f2\n", - " *name: V0\n", - " *pname: V0\n", - " *dim: 2\n", - " *nb_components: 2\n", - " *dtype: float64\n", - " *initial values: (0, 0)\n", - " *topology tags: []\n", - " \n", - "Field::f3\n", - " *name: V1\n", - " *pname: V1\n", - " *dim: 2\n", - " *nb_components: 3\n", - " *dtype: float64\n", - " *initial values: (0, 0)\n", - " *topology tags: []\n", - " \n" + "VectorField::tf0\n", + " *name: V0\n", + " *pname: V0\n", + " *dim: 2\n", + " *shape: (2,)\n", + " *nb_components: 2\n", + " *symbolic repr.:\n", + " [[V0â‚€]\n", + " [V0â‚]]\n", + "\n", + "VectorField::tf1\n", + " *name: V1\n", + " *pname: V1\n", + " *dim: 2\n", + " *shape: (3,)\n", + " *nb_components: 3\n", + " *symbolic repr.:\n", + " [[V1â‚€]\n", + " [V1â‚]\n", + " [V1â‚‚]]\n", + "\n", + "TensorField::tf2\n", + " *name: T\n", + " *pname: T\n", + " *dim: 2\n", + " *shape: (3, 2)\n", + " *nb_components: 6\n", + " *symbolic repr.:\n", + " [[T₀₀ Tâ‚€â‚]\n", + " [Tâ‚â‚€ Tâ‚â‚]\n", + " [Tâ‚‚â‚€ Tâ‚‚â‚]]\n" ] } ], "source": [ "field2 = Field(name='V0', domain=domain, is_vector=True)\n", "field3 = Field(name='V1', domain=domain, nb_components=3)\n", + "field4 = Field(name='T', domain=domain, shape=(3,2))\n", "\n", "print field2\n", - "print field3" + "print\n", + "print field3\n", + "print\n", + "print field4" ] }, { @@ -544,7 +556,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "CartesianTopology[tag=t0, domain=Box::d1, pcoords=[0 0], pshape=[1 1], shape=[5,5], ghosts=[0,0]]\n" + "CartesianTopology::t0[domain=Box::d1, pcoords=[0 0], pshape=[1 1], shape=[5,5], ghosts=[0,0], backend=HOST]\n" ] } ], @@ -572,7 +584,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "CartesianTopology[tag=t1, domain=Box::d1, pcoords=[0 0], pshape=[1 1], shape=[5,5], ghosts=[1,2]]\n" + "CartesianTopology::t1[domain=Box::d1, pcoords=[0 0], pshape=[1 1], shape=[5,5], ghosts=[1,2], backend=HOST]\n" ] } ], @@ -637,9 +649,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Allocation of discrete field F00 (CartesianDiscreteField::df0) on CartesianTopology::t0\n", - " (compute_res=[4 4], ghosts=[0 0], nb_comp=1, dtype=float64, size=128.0B)\n", "[[ 0.00 0.00 0.00 0.00]\n", " [ 0.00 2.00 2.00 0.00]\n", " [ 0.00 0.00 0.00 0.00]\n", @@ -659,13 +668,13 @@ "assert dfield0.dfield is dfield0_bis.dfield\n", "\n", "# Accessing data is simple as:\n", - "dfield0[0][...] = 0.0\n", - "dfield0[0][1,1:3] = 2\n", - "print dfield0.data[0]\n", + "dfield0.data[0][...] = 0.0\n", + "dfield0.data[0][1,1:3] = 2\n", + "print dfield0.sdata\n", "print\n", "\n", - "dfield0[0][...] = 1.0\n", - "print dfield0_bis.data[0]" + "dfield0.sdata[...] = 1.0\n", + "print dfield0_bis.sdata" ] }, { @@ -685,9 +694,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Allocation of discrete field F01 (CartesianDiscreteField::df1) on CartesianTopology::t1\n", - " (compute_res=[4 4], ghosts=[1 2], nb_comp=1, dtype=float64, size=384.0B)\n", "[[ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]\n", " [ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]\n", " [ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]\n", @@ -695,12 +701,12 @@ " [ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]\n", " [ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]]\n", "\n", - "[[ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]\n", - " [ 0.00 0.00 1.00 1.00 1.00 1.00 0.00 0.00]\n", - " [ 0.00 0.00 1.00 1.00 1.00 1.00 0.00 0.00]\n", - " [ 0.00 0.00 1.00 1.00 1.00 1.00 0.00 0.00]\n", - " [ 0.00 0.00 1.00 1.00 1.00 1.00 0.00 0.00]\n", - " [ 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00]]\n", + "[[ nan nan nan nan nan nan nan nan]\n", + " [ nan nan 1.00 1.00 1.00 1.00 nan nan]\n", + " [ nan nan 1.00 1.00 1.00 1.00 nan nan]\n", + " [ nan nan 1.00 1.00 1.00 1.00 nan nan]\n", + " [ nan nan 1.00 1.00 1.00 1.00 nan nan]\n", + " [ nan nan nan nan nan nan nan nan]]\n", "(slice(1, 5, None), slice(2, 6, None))\n" ] } @@ -710,13 +716,15 @@ "dfield1 = field0.discretize(t1)\n", "\n", "# Put zeros everywhere\n", - "dfield1[0][...] = 0.0\n", - "print dfield1.data[0]\n", + "dfield1.sdata[...] = 0.0\n", + "print dfield1.sdata\n", "print\n", "\n", "# Put ones inside the compute domain (exluding ghosts)\n", - "dfield1[0][dfield1.compute_slices] = 1.0\n", - "print dfield1.data[0]\n", + "# and NaNs in the ghost layers\n", + "dfield1.sdata[...] = np.nan\n", + "dfield1.sdata[dfield1.compute_slices] = 1.0\n", + "print dfield1.sdata\n", "print dfield1.compute_slices" ] }, @@ -741,13 +749,12 @@ " [ X X 1.00 1.00 1.00 1.00 X X ]\n", " [ X X 1.00 1.00 1.00 1.00 X X ]\n", " [ X X 1.00 1.00 1.00 1.00 X X ]\n", - " [ X X X X X X X X ]]\n", - "None\n" + " [ X X X X X X X X ]]\n" ] } ], "source": [ - "print dfield1.print_with_ghosts(component=0)" + "dfield1.print_with_ghosts(component=0)" ] }, { @@ -766,24 +773,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - ">Initializing discrete field F00 with formula f0.\n", "f(x,y) = x\n", "[[ 0.00 1.57 3.14 4.71]\n", " [ 0.00 1.57 3.14 4.71]\n", " [ 0.00 1.57 3.14 4.71]\n", " [ 0.00 1.57 3.14 4.71]]\n", "\n", - "\n", - ">Initializing discrete field F00 with formula f1.\n", "f(x,y) = y\n", "[[ 0.00 0.00 0.00 0.00]\n", " [ 1.57 1.57 1.57 1.57]\n", " [ 3.14 3.14 3.14 3.14]\n", " [ 4.71 4.71 4.71 4.71]]\n", "\n", - "\n", - ">Initializing discrete field F00 with formula f2.\n", "f(x,y) = xy\n", "[[ 0.00 0.00 0.00 0.00]\n", " [ 0.00 2.47 4.93 7.40]\n", @@ -795,21 +796,21 @@ ], "source": [ "def f0(data, coords):\n", - " x,y = coords\n", + " x,y = coords[0]\n", " data[0][...] = x\n", " \n", "def f1(data, coords):\n", - " x,y = coords\n", + " x,y = coords[0]\n", " data[0][...] = y\n", " \n", "def f2(data, coords):\n", - " x,y = coords\n", + " x,y = coords[0]\n", " data[0][...] = x*y\n", "\n", "for (f,fname) in zip((f0,f1,f2),('x','y','xy')):\n", " dfield0.initialize(f)\n", " print 'f(x,y) = {}'.format(fname)\n", - " print dfield0[0]\n", + " print dfield0.sdata\n", " print" ] }, @@ -831,11 +832,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - "Allocation of discrete field V11 (CartesianDiscreteField::df2) on CartesianTopology::t1\n", - " (compute_res=[4 4], ghosts=[1 2], nb_comp=3, dtype=float64, size=1.15kB)\n", - "\n", - ">Initializing discrete field V11 with formula f.\n", "Component 0:\n", "[[ X X X X X X X X ]\n", " [ X X 0.00 1.57 3.14 4.71 X X ]\n", @@ -865,7 +861,7 @@ ], "source": [ "def f(data, coords):\n", - " x,y = coords\n", + " x,y = coords[0]\n", " data[0][...] = x\n", " data[1][...] = y\n", " data[2][...] = x*y\n", @@ -897,8 +893,6 @@ "name": "stdout", "output_type": "stream", "text": [ - "\n", - ">Initializing discrete field V11 with formula f.\n", "Component 0:\n", "[[ X X X X X X X X ]\n", " [ X X 0.00 0.16 0.31 0.47 X X ]\n", @@ -928,7 +922,7 @@ ], "source": [ "def f(data, coords, p=1.0):\n", - " x,y = coords\n", + " x,y = coords[0]\n", " data[0][...] = p*x\n", " data[1][...] = p*y\n", " data[2][...] = p*x*y\n", @@ -999,9 +993,9 @@ "data": { "text/html": [ "<video width=\"576\" height=\"360\" controls autoplay loop>\n", - " <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAA8J21kYXQAAAKuBgX//6rcRem9\n", - "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTQ4IHIyNjQzIDVjNjU3MDQgLSBILjI2NC9NUEVHLTQg\n", - "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE1IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n", + " <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAA8fm1kYXQAAAKuBgX//6rcRem9\n", + "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTUyIHIyODU0IGU5YTU5MDMgLSBILjI2NC9NUEVHLTQg\n", + "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE3IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n", "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n", "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n", "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n", @@ -1011,284 +1005,285 @@ "YW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3\n", "ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTUgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n", "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n", - "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAABNSZYiE\n", + "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAABM/ZYiE\n", "ABP//vexj4FNyAANlzqKeh/hFbH0kFF6sdmgZZQfwZOX+oAbVWujOrqiGmbqzF73kxJ5XP9Eamvz\n", "hAVbXvNRmSIUXx1oOPGifSMO97B4Fy7/O7hti1b9cSZORNWO07bzrOyyH4EMFUbfn5DNAvF3cF/I\n", "LRlU3r0noJFAur1+gwzoklnCu2QR906cAZznZNWYN6vxzuI+nj7t/7hnreqqTr+YXR4Fq+J8MlVV\n", - "nQ+wgwVwJIlZBNWh51rVsv6xKKl6XPWxc5ugQPEznQQHutCjsIOpO8aCAuDHb3feLWm81Wa+ir2f\n", - "U2MCExDv+YUkYvZxj0kwIbDENdZAAA0JZUP4Hz8xPoAlAlMdvhfN8aUB9f3zXf3U82vZ4w++B3nK\n", - "3D/9OY7/yX15/NNaeRJEqQ7G+gn8vkpoCdU4AmF0OOo5JwIr0bRGn63oLbey1AOY/2NncR1/la2K\n", - "E0I8/jRedA1AywFuxQHrgGpgTEBCACmm/xevqmD5ZBGz0aH3TlwO04rcbpaIgIbm8ULOWFVAkAsN\n", - "58AxY5e95GnmqBX0pHvWicf98iU/DTxeAB7nMtQOSLNFbm/gZWq5jvaw7fSv7p65rzW5/5NvmvmU\n", - "sl8ewtm3twYyMmTpPnRwCSE7vlBAhVWUnimAR53fJQ2hYB9GhkohlyRw6hrHBa0/z5aLsnMqvnQo\n", - "Oa16cl0FBKJIIBPN33AnePfa7ynbDJF5DnXVjzjN7rw5JKy6vwFGVPVeitwzdI7f3gBxhysI4WDu\n", - "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\n", - "NTYuNDAuMTAx\n", + "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\n", "\">\n", " Your browser does not support the video tag.\n", "</video>" @@ -1360,48 +1355,6 @@ "source": [ "In the next notebook we will see how to do this the HySoP way by introducing operators and computational graphs." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -1420,7 +1373,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.12" + "version": "2.7.15rc1" } }, "nbformat": 4, diff --git a/notebooks/01_analytical.ipynb b/notebooks/01_analytical.ipynb index 2b2096cd1..bc75bdef4 100644 --- a/notebooks/01_analytical.ipynb +++ b/notebooks/01_analytical.ipynb @@ -28,20 +28,7 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Starting hysop version 2.0.0-rc.1 with 1 mpi process(es) on 1 host(s) providing 1 shared memory node(s).\n", - "\n", - "*Default path for all i/o is '/home/poulpy/Documents/hysop/notebooks/interactive/p1'.\n", - "*Default path for caching is '/home/poulpy/.cache/hysop'.\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "import hysop\n", "from hysop.deps import np\n", @@ -151,7 +138,7 @@ "source": [ "def compute_scalar(data, coords, t):\n", " data[0][...] = (1.0/(1.0+0.1*t()))\n", - " for x in coords:\n", + " for x in coords[0]:\n", " data[0][...] *= np.cos(x-t())\n", " \n", "# Analytic operator\n", @@ -193,70 +180,7 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Initializing problem...\n", - "\n", - "== ComputationalGraph Problem domain and operator report ==================\n", - ">Box::d0 (O=[0.0,0.0], L=[6.3,6.3], BC=[PER/PER,PER/PER], current_task=999)\n", - " OPERATOR INPUTS OUTPUTS OPERATOR TYPE \n", - " analytic [t] -> [F0] PythonAnalyticField\n", - " dumped_scalar_field [F0] -> no outputs HDF_Writer \n", - "===========================================================================\n", - "\n", - "\n", - "== ComputationalGraph Problem field requirements report ============================================\n", - ">INPUTS:\n", - " CartesianTopology[tag=t0, domain=Box::d0, pcoords=[0 0], pshape=[1 1], shape=[65,65], ghosts=[0,0]]\n", - " OPERATOR FIELD GHOSTS BASIS TSTATES\n", - " dumped_scalar_field F0 [0,0]<=ghosts<[+∞,+∞] ANY YX \n", - ">OUTPUTS:\n", - " CartesianTopology[tag=t0, domain=Box::d0, pcoords=[0 0], pshape=[1 1], shape=[65,65], ghosts=[0,0]]\n", - " OPERATOR FIELD GHOSTS BASIS TSTATES\n", - " analytic F0 [0,0]<=ghosts<[+∞,+∞] ANY ANY \n", - "====================================================================================================\n", - "\n", - "\n", - "== ComputationalGraph Problem topology report ========================================================\n", - " :HostBackend: tag=bk1, allocator=HostAllocator::al0:\n", - " *CartesianTopology[tag=t0, domain=Box::d0, pcoords=[0 0], pshape=[1 1], shape=[65,65], ghosts=[0,0]]\n", - "======================================================================================================\n", - "\n", - "\n", - "== ComputationalGraph Problem discrete operator report ===================\n", - " ID OPERATOR INPUTS OUTPUTS OPERATOR TYPE \n", - " 0 analytic [t] -> [F0.t0] PythonAnalyticField\n", - " 1 dumped_scalar_field [F0.t0] -> no outputs HDF_Writer \n", - "==========================================================================\n", - "\n", - "\n", - "Discretizing problem...\n", - "\n", - "Allocation of discrete field F00 (CartesianDiscreteField::df0) on CartesianTopology::t0\n", - " (compute_res=[64 64], ghosts=[0 0], nb_comp=1, dtype=float32, size=16.38kB)\n", - "\n", - "Getting work properties...\n", - "\n", - "== ComputationalGraph Problem work properties report ==\n", - " No extra buffers have been requested.\n", - "=======================================================\n", - "\n", - "\n", - "Allocating work...\n", - "\n", - "Setting up problem...\n", - "\n", - "***********************************************\n", - "** Problem building took 0:00:00 (0.016152s) **\n", - "***********************************************\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Create a problem and build it\n", "problem = Problem()\n", @@ -275,371 +199,7 @@ "cell_type": "code", "execution_count": 7, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - ">Parameter dt set to 0.0628318530718.\n", - ">Parameter t set to 0.0.\n", - "\n", - "Solving problem...\n", - ">Parameter t set to 0.0.\n", - ">Parameter dt set to 0.0628318530718.\n", - "\n", - "== Iteration : 0, from t = 0.0 to t = 0.06283 ==\n", - ">Parameter t set to 0.0628318563104.\n", - "\n", - "== Iteration : 1, from t = 0.062832 to t = 0.12566 ==\n", - ">Parameter t set to 0.125663712621.\n", - "\n", - "== Iteration : 2, from t = 0.12566 to t = 0.18850 ==\n", - ">Parameter t set to 0.188495576382.\n", - "\n", - "== Iteration : 3, from t = 0.1885 to t = 0.25133 ==\n", - ">Parameter t set to 0.251327425241.\n", - "\n", - "== Iteration : 4, from t = 0.25133 to t = 0.31416 ==\n", - ">Parameter t set to 0.314159274101.\n", - "\n", - "== Iteration : 5, from t = 0.31416 to t = 0.37699 ==\n", - ">Parameter t set to 0.376991122961.\n", - "\n", - "== Iteration : 6, from t = 0.37699 to t = 0.43982 ==\n", - ">Parameter t set to 0.439822971821.\n", - "\n", - "== Iteration : 7, from t = 0.43982 to t = 0.50265 ==\n", - ">Parameter t set to 0.502654850483.\n", - "\n", - "== Iteration : 8, from t = 0.50265 to t = 0.56549 ==\n", - ">Parameter t set to 0.565486729145.\n", - "\n", - "== Iteration : 9, from t = 0.56549 to t = 0.62832 ==\n", - ">Parameter t set to 0.628318607807.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=10, total= 13.8ms, mean= 1.4ms\n", - " >dumped_scalar_field::apply ncalls=10, total= 21.6ms, mean= 2.2ms\n", - "\n", - "== Iteration : 10, from t = 0.62832 to t = 0.69115 ==\n", - ">Parameter t set to 0.691150486469.\n", - "\n", - "== Iteration : 11, from t = 0.69115 to t = 0.75398 ==\n", - ">Parameter t set to 0.753982365131.\n", - "\n", - "== Iteration : 12, from t = 0.75398 to t = 0.81681 ==\n", - ">Parameter t set to 0.816814243793.\n", - "\n", - "== Iteration : 13, from t = 0.81681 to t = 0.87965 ==\n", - ">Parameter t set to 0.879646122456.\n", - "\n", - "== Iteration : 14, from t = 0.87965 to t = 0.94248 ==\n", - ">Parameter t set to 0.942478001118.\n", - "\n", - "== Iteration : 15, from t = 0.94248 to t = 1.00531 ==\n", - ">Parameter t set to 1.00530982018.\n", - "\n", - "== Iteration : 16, from t = 1.0053 to t = 1.06814 ==\n", - ">Parameter t set to 1.06814169884.\n", - "\n", - "== Iteration : 17, from t = 1.0681 to t = 1.13097 ==\n", - ">Parameter t set to 1.1309735775.\n", - "\n", - "== Iteration : 18, from t = 1.131 to t = 1.19381 ==\n", - ">Parameter t set to 1.19380545616.\n", - "\n", - "== Iteration : 19, from t = 1.1938 to t = 1.25664 ==\n", - ">Parameter t set to 1.25663733482.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=20, total= 27.0ms, mean= 1.3ms\n", - " >dumped_scalar_field::apply ncalls=20, total= 40.9ms, mean= 2.0ms\n", - "\n", - "== Iteration : 20, from t = 1.2566 to t = 1.31947 ==\n", - ">Parameter t set to 1.31946921349.\n", - "\n", - "== Iteration : 21, from t = 1.3195 to t = 1.38230 ==\n", - ">Parameter t set to 1.38230109215.\n", - "\n", - "== Iteration : 22, from t = 1.3823 to t = 1.44513 ==\n", - ">Parameter t set to 1.44513297081.\n", - "\n", - "== Iteration : 23, from t = 1.4451 to t = 1.50796 ==\n", - ">Parameter t set to 1.50796484947.\n", - "\n", - "== Iteration : 24, from t = 1.508 to t = 1.57080 ==\n", - ">Parameter t set to 1.57079672813.\n", - "\n", - "== Iteration : 25, from t = 1.5708 to t = 1.63363 ==\n", - ">Parameter t set to 1.6336286068.\n", - "\n", - "== Iteration : 26, from t = 1.6336 to t = 1.69646 ==\n", - ">Parameter t set to 1.69646048546.\n", - "\n", - "== Iteration : 27, from t = 1.6965 to t = 1.75929 ==\n", - ">Parameter t set to 1.75929236412.\n", - "\n", - "== Iteration : 28, from t = 1.7593 to t = 1.82212 ==\n", - ">Parameter t set to 1.82212424278.\n", - "\n", - "== Iteration : 29, from t = 1.8221 to t = 1.88496 ==\n", - ">Parameter t set to 1.88495612144.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=30, total= 38.1ms, mean= 1.3ms\n", - " >dumped_scalar_field::apply ncalls=30, total= 56.3ms, mean= 1.9ms\n", - "\n", - "== Iteration : 30, from t = 1.885 to t = 1.94779 ==\n", - ">Parameter t set to 1.94778800011.\n", - "\n", - "== Iteration : 31, from t = 1.9478 to t = 2.01062 ==\n", - ">Parameter t set to 2.01061987877.\n", - "\n", - "== Iteration : 32, from t = 2.0106 to t = 2.07345 ==\n", - ">Parameter t set to 2.07345175743.\n", - "\n", - "== Iteration : 33, from t = 2.0735 to t = 2.13628 ==\n", - ">Parameter t set to 2.13628363609.\n", - "\n", - "== Iteration : 34, from t = 2.1363 to t = 2.19912 ==\n", - ">Parameter t set to 2.19911551476.\n", - "\n", - "== Iteration : 35, from t = 2.1991 to t = 2.26195 ==\n", - ">Parameter t set to 2.26194739342.\n", - "\n", - "== Iteration : 36, from t = 2.2619 to t = 2.32478 ==\n", - ">Parameter t set to 2.32477927208.\n", - "\n", - "== Iteration : 37, from t = 2.3248 to t = 2.38761 ==\n", - ">Parameter t set to 2.38761115074.\n", - "\n", - "== Iteration : 38, from t = 2.3876 to t = 2.45044 ==\n", - ">Parameter t set to 2.4504430294.\n", - "\n", - "== Iteration : 39, from t = 2.4504 to t = 2.51327 ==\n", - ">Parameter t set to 2.51327490807.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=40, total= 49.1ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=40, total= 71.7ms, mean= 1.8ms\n", - "\n", - "== Iteration : 40, from t = 2.5133 to t = 2.57611 ==\n", - ">Parameter t set to 2.57610678673.\n", - "\n", - "== Iteration : 41, from t = 2.5761 to t = 2.63894 ==\n", - ">Parameter t set to 2.63893866539.\n", - "\n", - "== Iteration : 42, from t = 2.6389 to t = 2.70177 ==\n", - ">Parameter t set to 2.70177054405.\n", - "\n", - "== Iteration : 43, from t = 2.7018 to t = 2.76460 ==\n", - ">Parameter t set to 2.76460242271.\n", - "\n", - "== Iteration : 44, from t = 2.7646 to t = 2.82743 ==\n", - ">Parameter t set to 2.82743430138.\n", - "\n", - "== Iteration : 45, from t = 2.8274 to t = 2.89027 ==\n", - ">Parameter t set to 2.89026618004.\n", - "\n", - "== Iteration : 46, from t = 2.8903 to t = 2.95310 ==\n", - ">Parameter t set to 2.9530980587.\n", - "\n", - "== Iteration : 47, from t = 2.9531 to t = 3.01593 ==\n", - ">Parameter t set to 3.01592993736.\n", - "\n", - "== Iteration : 48, from t = 3.0159 to t = 3.07876 ==\n", - ">Parameter t set to 3.07876181602.\n", - "\n", - "== Iteration : 49, from t = 3.0788 to t = 3.14159 ==\n", - ">Parameter t set to 3.14159369469.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=50, total= 61.2ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=50, total= 92.5ms, mean= 1.9ms\n", - "\n", - "== Iteration : 50, from t = 3.1416 to t = 3.20443 ==\n", - ">Parameter t set to 3.20442557335.\n", - "\n", - "== Iteration : 51, from t = 3.2044 to t = 3.26726 ==\n", - ">Parameter t set to 3.26725745201.\n", - "\n", - "== Iteration : 52, from t = 3.2673 to t = 3.33009 ==\n", - ">Parameter t set to 3.33008933067.\n", - "\n", - "== Iteration : 53, from t = 3.3301 to t = 3.39292 ==\n", - ">Parameter t set to 3.39292120934.\n", - "\n", - "== Iteration : 54, from t = 3.3929 to t = 3.45575 ==\n", - ">Parameter t set to 3.455753088.\n", - "\n", - "== Iteration : 55, from t = 3.4558 to t = 3.51858 ==\n", - ">Parameter t set to 3.51858496666.\n", - "\n", - "== Iteration : 56, from t = 3.5186 to t = 3.58142 ==\n", - ">Parameter t set to 3.58141684532.\n", - "\n", - "== Iteration : 57, from t = 3.5814 to t = 3.64425 ==\n", - ">Parameter t set to 3.64424872398.\n", - "\n", - "== Iteration : 58, from t = 3.6442 to t = 3.70708 ==\n", - ">Parameter t set to 3.70708060265.\n", - "\n", - "== Iteration : 59, from t = 3.7071 to t = 3.76991 ==\n", - ">Parameter t set to 3.76991248131.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=60, total= 74.6ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=60, total=112.4ms, mean= 1.9ms\n", - "\n", - "== Iteration : 60, from t = 3.7699 to t = 3.83274 ==\n", - ">Parameter t set to 3.83274435997.\n", - "\n", - "== Iteration : 61, from t = 3.8327 to t = 3.89558 ==\n", - ">Parameter t set to 3.89557623863.\n", - "\n", - "== Iteration : 62, from t = 3.8956 to t = 3.95841 ==\n", - ">Parameter t set to 3.95840811729.\n", - "\n", - "== Iteration : 63, from t = 3.9584 to t = 4.02124 ==\n", - ">Parameter t set to 4.02123975754.\n", - "\n", - "== Iteration : 64, from t = 4.0212 to t = 4.08407 ==\n", - ">Parameter t set to 4.0840716362.\n", - "\n", - "== Iteration : 65, from t = 4.0841 to t = 4.14690 ==\n", - ">Parameter t set to 4.14690351486.\n", - "\n", - "== Iteration : 66, from t = 4.1469 to t = 4.20974 ==\n", - ">Parameter t set to 4.20973539352.\n", - "\n", - "== Iteration : 67, from t = 4.2097 to t = 4.27257 ==\n", - ">Parameter t set to 4.27256727219.\n", - "\n", - "== Iteration : 68, from t = 4.2726 to t = 4.33540 ==\n", - ">Parameter t set to 4.33539915085.\n", - "\n", - "== Iteration : 69, from t = 4.3354 to t = 4.39823 ==\n", - ">Parameter t set to 4.39823102951.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=70, total= 86.8ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=70, total=129.8ms, mean= 1.9ms\n", - "\n", - "== Iteration : 70, from t = 4.3982 to t = 4.46106 ==\n", - ">Parameter t set to 4.46106290817.\n", - "\n", - "== Iteration : 71, from t = 4.4611 to t = 4.52389 ==\n", - ">Parameter t set to 4.52389478683.\n", - "\n", - "== Iteration : 72, from t = 4.5239 to t = 4.58673 ==\n", - ">Parameter t set to 4.5867266655.\n", - "\n", - "== Iteration : 73, from t = 4.5867 to t = 4.64956 ==\n", - ">Parameter t set to 4.64955854416.\n", - "\n", - "== Iteration : 74, from t = 4.6496 to t = 4.71239 ==\n", - ">Parameter t set to 4.71239042282.\n", - "\n", - "== Iteration : 75, from t = 4.7124 to t = 4.77522 ==\n", - ">Parameter t set to 4.77522230148.\n", - "\n", - "== Iteration : 76, from t = 4.7752 to t = 4.83805 ==\n", - ">Parameter t set to 4.83805418015.\n", - "\n", - "== Iteration : 77, from t = 4.8381 to t = 4.90089 ==\n", - ">Parameter t set to 4.90088605881.\n", - "\n", - "== Iteration : 78, from t = 4.9009 to t = 4.96372 ==\n", - ">Parameter t set to 4.96371793747.\n", - "\n", - "== Iteration : 79, from t = 4.9637 to t = 5.02655 ==\n", - ">Parameter t set to 5.02654981613.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=80, total= 99.3ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=80, total=147.0ms, mean= 1.8ms\n", - "\n", - "== Iteration : 80, from t = 5.0265 to t = 5.08938 ==\n", - ">Parameter t set to 5.08938169479.\n", - "\n", - "== Iteration : 81, from t = 5.0894 to t = 5.15221 ==\n", - ">Parameter t set to 5.15221357346.\n", - "\n", - "== Iteration : 82, from t = 5.1522 to t = 5.21505 ==\n", - ">Parameter t set to 5.21504545212.\n", - "\n", - "== Iteration : 83, from t = 5.215 to t = 5.27788 ==\n", - ">Parameter t set to 5.27787733078.\n", - "\n", - "== Iteration : 84, from t = 5.2779 to t = 5.34071 ==\n", - ">Parameter t set to 5.34070920944.\n", - "\n", - "== Iteration : 85, from t = 5.3407 to t = 5.40354 ==\n", - ">Parameter t set to 5.4035410881.\n", - "\n", - "== Iteration : 86, from t = 5.4035 to t = 5.46637 ==\n", - ">Parameter t set to 5.46637296677.\n", - "\n", - "== Iteration : 87, from t = 5.4664 to t = 5.52920 ==\n", - ">Parameter t set to 5.52920484543.\n", - "\n", - "== Iteration : 88, from t = 5.5292 to t = 5.59204 ==\n", - ">Parameter t set to 5.59203672409.\n", - "\n", - "== Iteration : 89, from t = 5.592 to t = 5.65487 ==\n", - ">Parameter t set to 5.65486860275.\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=90, total=111.3ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=90, total=167.6ms, mean= 1.9ms\n", - "\n", - "== Iteration : 90, from t = 5.6549 to t = 5.71770 ==\n", - ">Parameter t set to 5.71770048141.\n", - "\n", - "== Iteration : 91, from t = 5.7177 to t = 5.78053 ==\n", - ">Parameter t set to 5.78053236008.\n", - "\n", - "== Iteration : 92, from t = 5.7805 to t = 5.84336 ==\n", - ">Parameter t set to 5.84336423874.\n", - "\n", - "== Iteration : 93, from t = 5.8434 to t = 5.90620 ==\n", - ">Parameter t set to 5.9061961174.\n", - "\n", - "== Iteration : 94, from t = 5.9062 to t = 5.96903 ==\n", - ">Parameter t set to 5.96902799606.\n", - "\n", - "== Iteration : 95, from t = 5.969 to t = 6.03186 ==\n", - ">Parameter t set to 6.03185987473.\n", - "\n", - "== Iteration : 96, from t = 6.0319 to t = 6.09469 ==\n", - ">Parameter t set to 6.09469175339.\n", - "\n", - "== Iteration : 97, from t = 6.0947 to t = 6.15752 ==\n", - ">Parameter t set to 6.15752363205.\n", - "\n", - "== Iteration : 98, from t = 6.1575 to t = 6.22036 ==\n", - ">Parameter t set to 6.22035551071.\n", - "\n", - "*******************************************************************************\n", - "** Next iteration is last iteration, clamping dt to achieve t=6.28318530718. **\n", - "*******************************************************************************\n", - ">Parameter dt set to 0.0628297964679.\n", - "\n", - "== Iteration : 99, from t = 6.2204 to t = 6.28319 ==\n", - "\n", - "*****************************************************\n", - "** Simulation took 0:00:00 (0.348946s) **\n", - "** for 100 iterations (0.00348946s per iteration) **\n", - "*****************************************************\n", - "\n", - "\n", - ">Problem profiler report\n", - " >analytic::apply ncalls=100, total=122.9ms, mean= 1.2ms\n", - " >dumped_scalar_field::apply ncalls=100, total=183.5ms, mean= 1.8ms\n", - "Finalizing problem...\n" - ] - } - ], + "outputs": [], "source": [ "# Create a simulation and solve the problem \n", "# (do not forget to specify the time parameter here)\n", @@ -681,7 +241,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.12" + "version": "2.7.15rc1" } }, "nbformat": 4, -- GitLab