{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear Elasticity in 3D\n", "\n", "## Introduction\n", "\n", "This example provides a demonstration of using PyMKS to compute the linear strain field for a two-phase composite material in 3D, and presents a comparison of the computational efficiency of MKS, when compared with the finite element method. The example first provides information on the boundary conditions, used in MKS. Next, delta microstructures are used to calibrate the first-order influence coefficients. The influence coefficients are then used to compute the strain field for a random microstructure. Lastly, the calibrated influence coefficients are scaled up and are used to compute the strain field for a larger microstructure and compared with results computed using finite element analysis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Elastostatics Equations and Boundary Conditions\n", "\n", "A review of the governing field equations for elastostatics can be found in the [Linear Elasticity in 2D](elasticity_2D.html) example. The same equations are used in the example with the exception that the second lame parameter (shear modulus) $\\mu$ is defined differently in 3D.\n", "\n", "$$ \\mu = \\frac{E}{2(1+\\nu)} $$\n", "\n", "\n", "In general, generating the calibration data for the MKS requires boundary conditions that are both periodic and displaced, which are quite unusual boundary conditions. The ideal boundary conditions are given by:\n", "\n", "$$ u(L, y, z) = u(0, y, z) + L\\bar{\\varepsilon}_{xx} $$\n", "$$ u(0, L, L) = u(0, 0, L) = u(0, L, 0) = u(0, 0, 0) = 0 $$\n", "$$ u(x, 0, z) = u(x, L, z) $$\n", "$$ u(x, y, 0) = u(x, y, L) $$\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "import pymks\n", "\n", "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import timeit as tm\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modeling with MKS\n", "\n", "### Calibration Data and Delta Microstructures\n", "\n", "The first-order MKS influence coefficients are all that is needed to compute a strain field of a random microstructure, as long as the ratio between the elastic moduli (also known as the contrast) is less than 1.5. If this condition is met, we can expect a mean absolute error of 2% or less, when comparing the MKS results with those computed using finite element methods [1]. \n", "\n", "Because we are using distinct phases and the contrast is low enough to only need the first order coefficients, delta microstructures and their strain fields are all that we need to calibrate the first-order influence coefficients [2]. \n", "\n", "The `make_delta_microstructure` function from `pymks.datasets` can be used to create the two delta microstructures needed to calibrate the first-order influence coefficients for a two phase microstructure. This function uses the Python module [SfePy](http://sfepy.org/doc-devel/index.html) to compute the strain fields using finite element methods." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.tools import draw_microstructures\n", "from pymks.datasets import make_delta_microstructures\n", "\n", "\n", "n = 9\n", "center = (n - 1) / 2\n", "X_delta = make_delta_microstructures(n_phases=2, size=(n, n, n))\n", "draw_microstructures(X_delta[:, center])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using delta microstructures for the calibration of the first-order influence coefficients is essentially the same as using a unit [impulse response](http://en.wikipedia.org/wiki/Impulse_response) to find the kernel of a system in signal processing. Delta microstructures are composed of only two phases. One phase is located only at the center cell of the microstructure, and the rest made up of the other phase. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generating Calibration Data\n", "\n", "The `make_elasticFEstrain_delta` function from `pymks.datasets` provides an easy interface to generate delta microstructures and their strain fields, which can then be used for calibration of the influence coefficients. The function calls the `ElasticFESimulation` class to compute the strain fields with the boundary conditions given above.\n", "\n", "In this example, lets look at a two-phase microstructure with elastic moduli values of 80 and 120 and Poisson's ratio values of 0.3 and 0.3 respectively. Let's also set the macroscopic imposed strain equal to 0.02. All of these parameters used in the simulation must be passed into the `make_elasticFEstrain_delta` function. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time 118.738605976 Seconds\n" ] } ], "source": [ "from pymks.datasets import make_elastic_FE_strain_delta\n", "from pymks.tools import draw_microstructure_strain\n", "\n", "\n", "elastic_modulus = (80, 120)\n", "poissons_ratio = (0.3, 0.3)\n", "macro_strain = 0.02 \n", "size = (n, n, n)\n", "\n", "t = tm.time.time()\n", "X_delta, strains_delta = make_elastic_FE_strain_delta(elastic_modulus=elastic_modulus,\n", " poissons_ratio=poissons_ratio,\n", " size=size, macro_strain=macro_strain)\n", "print 'Elapsed Time',tm.time.time() - t, 'Seconds'\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at one of the delta microstructures and the $\\varepsilon_{xx}$ strain field." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoQAAAEyCAYAAABjzMG6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X90VPWd//HXhAnJTDAIIqyICUOS4cfkh/yIYG1Viuup\n2sb1B0n21PZQv1vX7bI935497kGI32EETvc03f5I1Lp1m54shSOR2FjhsOtCMW0tp0I0BiQwwQkm\nUbuABJDJTEjMfP/wcJtAbiYByUQ/z8c5c87MfO793E8uv168P/dzryMWi8UEAAAAYyUlegAAAABI\nLAIhAACA4QiEAAAAhiMQAgAAGI5ACAAAYDgCIQAAgOEIhAAAAIYjEAIAABiOQAgAAGA4AuEVtnbt\nWpWUlCR6GAAAALYIhEMoKSmxXseOHbPdLhAIWNvV19cPaHM4HHI4HFd6qFfEwYMHVVJSoq1btyZ6\nKIMa6+MDAOCzwpnoAYx148aN08cff6zf/va3Ki0tvaj9z3/+sw4ePGhtd6GVK1equ7t7NIYKAABw\nSQiEcUycOFGTJk3S7t27VVxcrKSkgUXVnTt3SpIWLlyo119//aL9r7nmmlEZ55UQi8USPYQhjfXx\nARhcb2+v/vjHP+rNN9/UqVOndO7cOXV3d2vevHm65557NG3atEQPETAOgXAYli1bpp///Od64403\ntGjRIuv7jz/+WPX19Zo9e7auv/76Qfddu3atmpubtWXLlova3nrrLe3YsUPvvPOOurq6lJ6eLo/H\no7vuukt5eXmSPpkWDQQCWr58uW688Ua98MILamlpUTgc1tNPP60pU6ZIkkKhkF588UUdPnxYXV1d\nuvrqqzV//nw9+OCDuvrqqwcc9/Tp03rppZf0xhtv6MMPP5TT6dTEiRPl9Xr14IMPaurUqXrmmWes\n6e8XXnhBL7zwgrW/3+/XvHnz9Oqrr+pnP/uZvvOd72jixIl66aWX1Nraqkgkoi1btuj48eNauXKl\nbrvtNn3nO9/5VM7N3Xffrdzc3GGNr6amRrW1tdbn/uzG9vTTT+t3v/udKisr1dDQoN/+9rf64IMP\nlJOTI7/fb23X2NioHTt26MiRI4pGo5o8ebIWL16s+++/X263e9DfCwCk9957T9u3b9eXvvQlffe7\n37UuqTl79qzq6ur07rvvEgiBBCAQDsMtt9yi6upq7dq1a0Ag3Lt3r86cOaOHHnpIH3zwwaD72l0/\neD6spKamqrCwUFOmTNHJkycVDAb1+9//3gqE5x0+fFi//vWvNWfOHH35y1/WmTNn5HR+8svX0NCg\nH/3oR5KkxYsX69prr1UoFNL//M//qKGhQU8++aSuvfZaSdK5c+dUVlamY8eOKT8/X4sWLVIsFtPx\n48e1b98+LVmyRFOnTtVNN90kSaqvr9e8efPk8/mssUydOnXA2Pbs2aO33npL8+fP15133qkTJ04M\n67xeyrn53e9+p9zc3GGN71Ku3Ty/zy9/+UsdOnRICxYs0Pz58wdUhl944QVt3bpVEyZM0MKFC5We\nnq62tja9/PLLevPNN7VhwwalpqaO+NiACTZv3qx//ud/vmi2ZcKECXrooYcSNCoABMJhSE1N1Re+\n8AXV19fr5MmTmjx5siRp165dcrvduvnmm/Xiiy8Ou7+33npLtbW1mjZtmp588smLKngnT568aJ+m\npiY98sgjWrZs2YDvo9Gonn76afX19Wnt2rWaPXu21fab3/xGmzZt0s9//nOtWbNGkrR//34dO3ZM\n99xzj775zW8O6Ovjjz9WT0+PJGnRokVyu92qr6+Xz+fTgw8+aPvzNDY2avXq1crPzx/2ObAz3HMz\nkvFdiqNHj6q8vNyqwJ534MABbd26VbNnz9bjjz8ul8tltdXX1+uZZ55RTU3NRecWgNTV1aXe3t6L\nwiCAxONP5TDdcccd6uvr0+7duyV9MuW4f/9+felLX9L48eNH1NeOHTskSd/85jcvCjySrMDZ38yZ\nMy8Kg5K0b98+hcNhfeELXxgQBiXpq1/9qq699lo1NTXpww8/HNA22JjHjRt3SZWtwsLCTyUMSpd2\nbq6Ee++996IwKP1lfI888siAMChJt912m2bOnKnf//73ozJG4LPG7XYrLS1NNTU1+tGPfqRAIKB1\n69bpj3/8Y6KHBhiPCuEwZWdnKyMjQ7t379YDDzygXbt2KRaLDRrS4jly5IgcDocKCgpGdPzBhEIh\nSRowZXpeUlKS5s6dq+PHj6u1tVXXXHON5s2bp8mTJ6uurk6hUEjz58/X7NmzNXPmzEv+X3tWVtYl\n7TeYSzk3V4Ldz9TS0iKn06k9e/YM2t7b26szZ87o7NmzmjBhwpUcIvCZc/6OC6dOnVI4HFZSUpKS\nk5O5xAIYAwiEI7Bs2TL98pe/1BtvvKH6+nrNmjVLmZmZI+4nHA4rLS1NycnJw95nsGqZ9MkUjCRN\nmjRp0Pbz35/fzuVyacOGDaqpqVFDQ4PeeustSdJVV12lO++8Uw888IDGjRs37HENNbZLcSnn5kqw\n+5k++ugj9fX1DXnvQ4fDoWg0SiAELvCzn/1Mt9xyiwoLCxM9FAAXIBCOwK233qpNmzbpueee08mT\nJ7V8+fJL6ictLU1nz55VT0/PsIOP3QKJ8ytaT506NWh7Z2fngO2kT6ZdH330UUlSR0eHDhw4oP/+\n7/9WbW2tJKm4uHh4P0icsZ3/vq+vb9D2cDh80XeXcm7ijWuw4w927MH2vdD58/iLX/zissYGmOad\nd95RUlLSsMLgb37zG9XX16ujo0NpaWn6p3/6J+3atUt79+5VRkaGvvjFL8rhcMTd5t577x2Fnwz4\nfOAawhFwu91avHixTp48aS00uRQ5OTmKxWJqbGy87DF5PB5J0ttvv31RW19fnw4dOjRguwvNmDFD\nX/nKV1RWVibpk5XT552fQrYLdPGcr5BdeP2iJEUikUFXZo/k3MQb3/njD7bq+Z133onb/2BycnJ0\n9uxZdXR0XNL+gKn+93//V3PmzBnWtkVFRfr+97+vKVOmqKenR9ddd51yc3NVWFio8vJy3XvvvcPa\nBsDwEQhH6G//9m/12GOPac2aNZd83ctdd90lSfrP//zPQVcUD/adncLCQk2YMEGvvfaaWlpaBrRt\n27bNur3M+Rtkd3R06PTp0xf1c77CmJKSYn03VKAajtTUVE2fPl2HDh3Se++9Z33f19en6upqnTt3\n7qJ9RnJu4o3v/HWXr7766oDQeOLECasaOlJf/epXJUn//u//blVf++vu7r7o1wGANGvWLDU3N9u2\nb9u2bcCfnfHjx+vv/u7vdO7cOVVUVOjll1/WI488MmCf4WwDYHiYMh6ha6655rKfPpKfn68HHnhA\ntbW1+t73vmfda+/UqVM6fPiwcnJyBr2R82BSU1P1D//wD/rxj3+stWvXasmSJZoyZYpCoZCampo0\nadIkffvb37a2b2pq0saNG+X1enXddddp4sSJ+vDDD7Vv3z4lJSWpqKjI2nb69OmaPHmyXnvtNSUl\nJenaa6+Vw+HQrbfeOugK3MEUFRXp2WefVVlZmW6++WYlJyfr7bff1scff6zMzEy9++67l3xu4o0v\nOztbc+fOVXNzsx5//HHl5ubq9OnTamhoUEFBge3CkKHk5ubq61//ujZv3qzvfve7mj9/vqZOnapo\nNKoTJ07o4MGDmjt3rh5//PER9w18nv3VX/2VbrzxRv3whz9Ufn6+9ef1xIkTev/99+X1epWTkzNg\nn/nz5+vmm2/Wnj17dN999yk9Pf2ifoezDYD4CIRxXMrNjYfTR3Fxsbxer3bs2KE333xT0WhUEydO\n1KxZs3TbbbeNqP9FixZp3bp1evHFF9XU1GQ9qeT8IpH+CyQKCgp04sQJNTc3q6GhQV1dXZo0aZIK\nCgp0zz33yOv1WtsmJSXpscce06ZNm/SnP/1JkUhEsVhMc+bMGXYgXLp0qaRP/vdfX1+vCRMmqLCw\nUKWlpfq3f/u3yzo3wxnfv/zLv+hXv/qV9u7dq//6r//Sddddp2984xvKy8vTnj17Bj1+vF/zoqIi\nzZ49Wzt27NChQ4fU0NAgt9utyZMn66//+q91yy23DOvcAKa57bbbtGTJEr355ptqb2+X2+3W9ddf\nrzvuuMN2n+zsbO3Zs0e7du3S1772NaWlpV3SNgCG5ojxQFgAwBj05z//WevWrdPtt9+urVu36stf\n/rL+/u//fsTbAIiPawgBAGNOLBbTs88+q69//et68MEHlZ2drd27d1sL5Ya7DYDhYcoYADCmbN68\nWXv37tX7779vXXt49uxZxWIx/fjHP9bMmTOVmZkZdxuu5QWGjyljAAAAwzFlDAAAYLi4U8afxipb\nAOa4nEmHbWr4FEcC4PPMdc6pZeMT+9z7zxOuIQQAAEiQ6upqhUIheTwerVixwvq+s7NTlZWV6unp\nUUlJiXJzc7Vz507t3r1bDodDX/nKV/TFL35RfX19euaZZ3T8+HEtWLDAekqPXb92mDIGAABIgNbW\nVnV3dysQCKi3t1ehUMhqq6urU2lpqcrKyqyna914443asGGDAoGAtm3bJknat2+frr/+egUCATU3\nN+v06dND9muHQAgAAJAALS0tys/PlyTl5eUpGAxabW1tbfJ6vUpJSZHL5VI0GrUeujBu3DiNGzdO\nkhQMBq0+cnNz1dLSMmS/dpgyBgAAn3td6pZbKaN6zHPnzqmurs767PP55PP5rM/hcFjTpk2TJLnd\nbnV0dFht/a/HdrlcCofDSk1NlSS98sorKiwslCR1dXXJ5XJZfXR1dQ3Zrx0CIQAA+NxzK0Uvx/aN\n6jG/Nn6RiouLbdvdbrcikYgkKRKJDHjsYv9Fvf3bWlpa1NjYqMcee+yiPrq6unTdddcpGo3a9muH\nKWMAAGCEWCw2qq94vF6v9u/fL0lqampSTk6O1ZaZmalgMGiFu9TUVJ08eVIbN27UP/7jP1qBsX8f\nb7/9trKyspSTk2Pbrx0CIQAAMEJfLDaqr3g8Ho+Sk5Pl9/vldDqVlZWlqqoqSVJRUZGef/55bdiw\nQffff78kaevWrTp9+rR++MMfKhAIqKenRwsXLlRbW5v8fr9mz56tq6++ekC/48aNU1ZWVtyxxH1S\nCfchBDAS3IcQwGi4lPsQ/rr3T1doNIO7z7l4VI93ObiGEAAAGCEW60v0EMYsAiEAADDC5cxgfN4R\nCAEAgBFiIhDaIRACAAAjUCG0RyAEAABGGM7KX1MRCAEAgBGoENojEAIAACMQCO0RCAEAgBEIhPZ4\nUgkAAIDhqBACAAAjUCG0RyAEAABGYJWxPQIhAAAwAo+us0cgBAAARmDK2B6BEAAAGIFAaI9ACAAA\njEAgtEcgBAAARmBRiT0CIQAAMAIVQnsEQgAAYISYCIR2CIQAAMAIVAjtEQgBAIARCIT2CIQAAMAI\n3JjaHoEQAAAYgVXG9giEAADACEwZ2yMQAgAAIxAI7REIAQCAEQiE9giEAADACARCewRCAABgBBaV\n2CMQAgAAI4zFCmF1dbVCoZA8Ho9WrFhhfd/Z2anKykr19PSopKREubm5amxsVHV1tdLT0xUIBCRJ\nXV1dqqioUHd3twoLC3X33Xfr+PHjWr16tWbMmCGn06k1a9bEHUfSlfoBAQAAxpJYLDaqr3haW1vV\n3d2tQCCg3t5ehUIhq62urk6lpaUqKytTbW2tJMnr9aq8vHxAHzt37tStt94qv9+v5uZmnT17VpJU\nUFAgv98/rDAoEQgBAIAhxlogbGlpUX5+viQpLy9PwWDQamtra5PX61VKSopcLpei0ajcbreczoGT\nu8eOHVNGRoYkacaMGTpy5Igk6cCBA/L7/dq+ffuwzg2BEAAAGCGmvlF9xRMOh+VyuSRJbrdb4XD4\nL2PtFyhdLteAtv6mT5+ugwcPqq+vT83Nzerq6tKkSZNUUVEhv9+v/fv3q62tLe5YuIYQAAAYIRHX\nENbU1FjvfT6ffD6f9dntdisSiUiSIpGI0tLSrDaHw2G9v7Ctv2XLlum5557T3r17NXnyZE2cOHFA\nFXHBggVqb2+3qoh2CIQAAMAIiVhlXFxcbNvm9Xq1c+dOLVmyRE1NTVq6dKnVlpmZqWAwqIyMDEUi\nEaWmplpt/YNtSkqKVq5cqb6+PlVUVMjr9SoajVrbHz58WHfddVfccRIIAQCAEcbaKmOPx6Pk5GT5\n/X55PB5lZWWpqqpKDz/8sIqKivTUU0+pp6dHy5cvlySFQiFt2rRJ7e3tWr9+vVatWqW2tjZt3LhR\nSUlJKioqUnJysg4cOKAtW7YoOTlZc+fOVXZ2dtyxOGJxzk7/kiUAxHM5f+FuU8OnOBIAn2euc04t\nG18won2+/87GKzSawT2e9Y1RPd7loEIIAACMMNYqhGMJgRAAABiBQGiPQAgAAIzAo+vsEQgBAIAR\nqBDaIxACAAAjxGLxbxZtKgIhAAAwAhVCewRCAABgBAKhPQIhAAAwAoHQHoEQAAAYoU8EQjsEQgAA\nYAQqhPYIhAAAwAgEQnsEQgAAYAQCoT0CIQAAMAKB0B6BEAAAGKGPG1PbIhACAAAjUCG0RyAEgARI\n1D9MiTpuoiozSUlJiTmuIzHHxdAIhPYIhAAAwAgEQnsEQgAAYAQCoT0CIQAAMEIfgdAWgRAAABiB\nCqE9AiEAADACgdAegRAAABiBQGiPQAgAAIwQE4HQDoEQAAAYIcaTSmwRCAEAgBFYZWyPQAgAAIzA\nNYT2CIQAAMAIBEJ7BEIAAGAEAqE9AiEAADDCWAyE1dXVCoVC8ng8WrFihfV9Z2enKisr1dPTo5KS\nEuXm5qqxsVHV1dVKT09XIBCQJHV1damiokLd3d0qLCzU3XffPWS/dpKuxA8HAAAw1vTFYqP6iqe1\ntVXd3d0KBALq7e1VKBSy2urq6lRaWqqysjLV1tZKkrxer8rLywf0sXPnTt16663y+/1qbm7W2bNn\nh+zXDoEQAAAYIRaLjeornpaWFuXn50uS8vLyFAwGrba2tjZ5vV6lpKTI5XIpGo3K7XbL6Rw4uXvs\n2DFlZGRIkmbMmKEjR44M2a8dAiEAADDCWAuE4XBYLpdLkuR2uxUOhweM9TyXyzWgrb/p06fr4MGD\n6uvrU3Nzs7q6uobs1w7XEAIAACMk4sbUNTU11nufzyefz2d9drvdikQikqRIJKK0tDSrzeFwWO8v\nbOtv2bJleu6557R3715NnjxZEydO1EcffWTbrx0CIQAAMEIiFpUUFxfbtnm9Xu3cuVNLlixRU1OT\nli5darVlZmYqGAwqIyNDkUhEqampVlv/nyMlJUUrV65UX1+fKioq5PV65Xa7bfu1QyAEAABGGGur\njD0ej5KTk+X3++XxeJSVlaWqqio9/PDDKioq0lNPPaWenh4tX75ckhQKhbRp0ya1t7dr/fr1WrVq\nldra2rRx40YlJSWpqKhIycnJA/qdOXOmsrKy4o7FEYtzdvqXLAEgnsv5C3ebGj7FkYxtifqHKVHH\n7UvQM2STkhJzqXySg0v0rzTXOaeWjS8Y0T4P7VxzhUYzuF/dsWFUj3c5qBACAAAjjLUK4VhCIAQA\nAEYgENojEAIAACMQCO0RCAEAgBEIhPYIhAAAwAjDeZycqQiEAADACFQI7REIAQCAERLxpJLPCgIh\nAAAwAhVCewRCAABgBAKhPQIhAKOZ9uSOM2c/Sshxg+3vJOS4szOyE3Lc9AlXJeS4PCFlaARCewRC\nAABgBFYZ2yMQAgAAI1AhtEcgBAAARiAQ2iMQAgAAI8REILRDIAQAAEagQmiPQAgAAIyQqNX9nwUE\nQgAAYAQqhPYIhAAAwAgEQnvcwRIAAMBwVAgBAIARqBDaIxACAAAjEAjtEQgBAIAReHSdPQIhAAAw\nAhVCewRCAABgBAKhPQIhAAAwAoHQHoEQAAAYgUBoj0AIAACMEOPRdbYIhAAAwAh9okJoh0AIAACM\nMBanjKurqxUKheTxeLRixQrr+87OTlVWVqqnp0clJSXKzc1VY2OjqqurlZ6erkAgIEk6deqUfvrT\nn0qSpk2bpkcffVTHjx/X6tWrNWPGDDmdTq1ZsybuOHh0HQAAMEIsFhvVVzytra3q7u5WIBBQb2+v\nQqGQ1VZXV6fS0lKVlZWptrZWkuT1elVeXj6gjz/84Q9aunSp/H6/HA6H2traJEkFBQXy+/3DCoMS\ngRAAABhirAXClpYW5efnS5Ly8vIUDAattra2Nnm9XqWkpMjlcikajcrtdsvpHDi5O336dHV1dUmS\nIpGI3G63JOnAgQPy+/3avn37sM4NU8YAAMAIiZgyrqmpsd77fD75fD7rczgc1rRp0yRJbrdbHR0d\nVlv/sbpcLoXDYaWmpl7Uf3Z2tjZv3qxXXnlFWVlZmjJlinp7e1VRUSGn06kf/OAHysvLU0ZGxpDj\nJBACAAAjJOLRdcXFxbZtbrdbkUhE0ifVvbS0NKvN4XBY7y9s6+/ll1/W8uXLtXjxYlVVVenQoUOa\nM2eO1b5gwQK1t7fHDYRMGQMAACOMtSljr9er/fv3S5KampqUk5NjtWVmZioYDCoajSoSiQyoDl7Y\n9/mweNVVV6mrq0vRaNRqO3z4sFWFHAoVQgAAYISxtsrY4/EoOTlZfr9fHo9HWVlZqqqq0sMPP6yi\noiI99dRT6unp0fLlyyVJoVBImzZtUnt7u9avX69Vq1bpzjvv1NNPP63a2lpNmDBB999/v5qamrRl\nyxYlJydr7ty5ys7OjjsWRyzO2elfsgSAeC7nL9xtavgURzI8ifoHoi9BN8g9c/ajhBw32P5OQo47\nOyP+P4RXQvqEqxJy3CSHORN/rnNOLRtfMKJ9Fj734BUazeAavr11VI93OagQAgAAI4y1CuFYQiAE\nAABGIBDaIxACAAAjJGKV8WcFgdBg7e3tCTnuDTfckJDjAmNJX19iriE83HYkIcf9yf8JJOS436ta\nm5DjLpwzsmvbPi1J48y5hvBSUCG0RyAEAABGIBDaIxACAAAjxEQgtEMgBAAARqBCaI9ACAAAjMCi\nEnsEQgAAYAQqhPYIhAAAwAixBD0h6LOAQAgAAIxAhdAegRAAABiBQGiPQAgAAIxAILRHIAQAAEZg\nlbE9AiEAADACFUJ7BEIAAGAEAqE9AiEAADACgdAegRAAABiBQGiPQAgAAIwQE4HQDoEQAACYgTxo\ni0AIAADMwJSxraREDwAAAACJRYUQAAAYgQKhPQIhAAAwA4nQFlPGAAAAhqNCCAAAzECB0BaBEAAA\nmIEpY1tMGQMAABiOCiEAADDDGCwQVldXKxQKyePxaMWKFdb3nZ2dqqysVE9Pj0pKSpSbm6vGxkZV\nV1crPT1dgUBAknTq1Cn99Kc/lSRNmzZNjz766JD92qFCCAAAjBCLxUb1FU9ra6u6u7sVCATU29ur\nUChktdXV1am0tFRlZWWqra2VJHm9XpWXlw/o4w9/+IOWLl0qv98vh8Ohtra2Ifu1QyAEAABIgJaW\nFuXn50uS8vLyFAwGrba2tjZ5vV6lpKTI5XIpGo3K7XbL6Rw4uTt9+nR1dXVJkiKRiNxu95D92mHK\nGAAAmCEBU8Y1NTXWe5/PJ5/PZ30Oh8OaNm2aJMntdqujo8Nq619hdLlcCofDSk1Nvaj/7Oxsbd68\nWa+88oqysrI0ZcqUIfu1QyAEAABmSEAgLC4utm1zu92KRCKSPqnupaWlWW0Oh8N6f2Fbfy+//LKW\nL1+uxYsXq6qqSs3NzUP2a4dAaLAbbrgh0UMAjJWUlJgrdmZnZCfkuP/3F/6EHNd7Q1ZCjpvk4Iqs\nsWlsrSrxer3auXOnlixZoqamJi1dutRqy8zMVDAYVEZGhiKRyIDq4IXXJ54PfFdddZUikciQ/drh\ndywAADBDbJRfcXg8HiUnJ8vv98vpdCorK0tVVVWSpKKiIj3//PPasGGD7rvvPklSKBTSunXr1N7e\nrvXr16u3t1d33nmntm7dqkAgoLa2NhUUFAzod9y4ccrKiv8fI0cszjKY/iVLAIhnOCvr7GxTw6c4\nkuG5nPFejr5YX0KOe+bsRwk57uG2Iwk5bqIqohMnpCfkuImqPCeC65xTy8YXjGif6//fLVdoNIN7\n78nXRvV4l4MpYwAAYIixNWU8lhAIAQCAEXhynT0CIQAAMAOB0BaBEAAAGIJEaIdACAAAzEAetGXO\nciQAAAAMigohAAAwAxVCWwRCAABgBpYZ2yIQAgAAIxAH7REIAQCAGUiEtgiEAADADEwZ22KVMQAA\ngOGoEAIAADNQILRFIAQAAGZgytgWU8YAAACGo0IIAADMQIHQFoEQAAAYIcaUsS2mjAEAAAxHhRAA\nAJiBAqEtAiEAADADgdAWgRAAABiCRGiHQAgAAMxAHrRFIAQAAGYgENoiEAIAACPESIS2CIQAAMAM\n5EFbBEIAAGAGAqEtAiEAADAEidAOgRCA0RwOR0KOm5SgB0WlT7gqIcddOKcgIcdNSkrMeU7U7yt8\n9lRXVysUCsnj8WjFihXW952dnaqsrFRPT49KSkqUm5urxsZGVVdXKz09XYFAQJL06quvqr6+XpJ0\n9OhRrV27Vm63W6tXr9aMGTPkdDq1Zs2auOPg0XUAAMAMsVF+xdHa2qru7m4FAgH19vYqFApZbXV1\ndSotLVVZWZlqa2slSV6vV+Xl5QP6uP322+X3+/XEE09o6tSpyszMlCQVFBTI7/cPKwxKBEIAAGCK\nMRYIW1palJ+fL0nKy8tTMBi02tra2uT1epWSkiKXy6VoNCq32y2nc/DJ3YMHD2ru3LnW5wMHDsjv\n92v79u3DODEEQgAAYIyxlQjD4bBcLpckye12KxwO/2Wksb/s73K5BrQN5vXXX9dNN90kSZo0aZIq\nKirk9/u1f/9+tbW1xR0L1xACAAAzJGBNSU1NjfXe5/PJ5/NZn91utyKRiCQpEokoLS3Naut/HeqF\nbYM5dOiQvvWtb0nSgCriggUL1N7eroyMjCH3JxACAAAjxBIQCIuLi23bvF6vdu7cqSVLlqipqUlL\nly612jIzMxUMBpWRkaFIJKLU1FSrLXbBD3LkyBHNmjXLCpHRaNTa/vDhw7rrrrvijpNACAAAkAAe\nj0fJycnBdCCEAAAHtUlEQVTy+/3yeDzKyspSVVWVHn74YRUVFempp55ST0+Pli9fLkkKhULatGmT\n2tvbtX79eq1atUpOp3PAdLEkNTc3a8uWLUpOTtbcuXOVnZ0ddyyO2IUx88INWDoPYATi/JUypG1q\n+BRHMrZdznm6HH2xvsQcty8xx03UbWeSHNzu5kpznXNq2fiR3c5o6qM3XqHRDO7Ys42jerzLQYUQ\nAACYgftS22KVMQAAgOGoEAIAADMk6FKNzwICIQAAMAN50BaBEAAAGIE8aI9ACAAAzMCUsS0CIQAA\nMAN50BarjAEAAAxHhRAAAJiBKWNbBEIAAGAG8qAtpowBAAAMR4UQAACYgQqhLQIhAAAwQoxEaItA\nCAAAzEAetEUgBAAAZiAQ2iIQAgAAQ5AI7RAIAQCAGciDtgiEAADADARCWwRCAABgCBKhHQIhAAAw\nAk+us0cgBAAAZiAQ2uLRdQAAAIajQggACeBwOBJy3KQE1QGSxplVf0jUry/iYM7YFoEQAACYgTxo\ny6z/sgEAAOAiVAgBAIAZmDK2RSAEAABmIA/aIhACAAAjkAftEQgBAIAZxuCUcXV1tUKhkDwej1as\nWGF939nZqcrKSvX09KikpES5ublqbGxUdXW10tPTFQgEJEmvvvqq6uvrJUlHjx7V2rVrlZmZaduv\nHRaVAAAAM8RG+RVHa2ururu7FQgE1Nvbq1AoZLXV1dWptLRUZWVlqq2tlSR5vV6Vl5cP6OP222+X\n3+/XE088oalTpyozM3PIfu0QCAEAABKgpaVF+fn5kqS8vDwFg0Grra2tTV6vVykpKXK5XIpGo3K7\n3XI6B5/cPXjwoObOnRu3XzsEQgAAYIZYbHRfcYTDYblcLkmS2+1WOBzuN9S/7O9yuQa0Deb111/X\nTTfdFLdfO1xDCAAAzJCASwhramqs9z6fTz6fz/rsdrsViUQkSZFIRGlpaVZb/6fdXNg2mEOHDulb\n3/pW3H7tUCEEAAC4QoqLi61X/zAofXJN4P79+yVJTU1NysnJsdoyMzMVDAYVjUYViUSUmppqtcUu\nqD4eOXJEs2bNskLkUP3aIRACAAAjjLEZY3k8HiUnJ8vv98vpdCorK0tVVVWSpKKiIj3//PPasGGD\n7rvvPklSKBTSunXr1N7ervXr16u3t1fSwOniC/sdN26csrKy4o7FEbswZl64AQ/oBjACcf5KGdI2\nNXyKI8FgLufXB8PHv51XnuucU8vGF4xon0l/E79S9mnqrGsZ1eNdDiqEAAAAhmNRCQAAMAMFclsE\nQgAAYAYumbDFlDEAAIDhqBACAAAzUCC0RSAEAABmYMrYFoEQAAAYgThoj0AIAADMQCK0RSAEAABm\nYMrYFquMAQAADEeFEAAAmIECoS0CIQAAMAOB0BaBEAAAGIJEaIdACAAAjMCaEnsEQgAAYAYCoS0C\nIQAAMASJ0A6BEAAM4nA4Ej0EIHHIg7YIhAAAwAwEQlsEQgAAYAgSoR0CIQAAMAN50BaPrgMAADAc\nFUIAAGAE7kNoj0AIAADMQCK0xZQxAACA4agQAgAAM1AgtEUgBAAAZmDK2BZTxgAAAIajQggAAMxA\ngdAWgRAAABghNganjKurqxUKheTxeLRixQrr+87OTlVWVqqnp0clJSXKzc1VY2OjqqurlZ6erkAg\nYG370ksvqampSX19ffL7/Tp+/LhWr16tGTNmyOl0as2aNXHHQSAEAABIgNbWVnV3dysQCOg//uM/\nFAqFNGvWLElSXV2dSktLlZmZqX/9139Vbm6uvF6vysvLtW7dOquPI0eOqLu7W0888cSAvgsKCrRy\n5cphj4VrCAEAgBlio/yKo6WlRfn5+ZKkvLw8BYNBq62trU1er1cpKSlyuVyKRqNyu91yOgfW8t54\n4w2dOXNGgUBAW7dutb4/cOCA/H6/tm/fPqxTQ4UQAACYIQFTxjU1NdZ7n88nn89nfQ6Hw5o2bZok\nye12q6Ojw2rrP73tcrkUDoeVmpp6UdupU6eUnp4uv9+vn/zkJzp69KhmzJihiooKOZ1O/eAHP1Be\nXp4yMjKGHCeBEAAA4AopLi62bXO73YpEIpKkSCSitLQ0q83hcFjvh2pzu92aN2+eJCk3N1cdHR2a\nOXOm1b5gwQK1t7fHDYRMGQMAADOMsSljr9er/fv3S5KampqUk5NjtWVmZioYDCoajSoSiVjVQWlg\nhXD27Nl69913JUlHjx7V1KlTFY1GrfbDhw9bVcihEAgBAIAZxlgg9Hg8Sk5Olt/vl9PpVFZWlqqq\nqiRJRUVFev7557Vhwwbdd999kqRQKKR169apvb1d69evV29vrxYuXKj29nYFAgHFYjF5vV41Nzdr\n1apVeuKJJ3TNNdcoOzs77lgcsThrsPuXJQEgnsu5rcM2NXyKIwHweeY659Sy8QUj2ueqm6dfodEM\n7qM974/q8S4H1xACAAAjjMHbEI4ZTBkDAAAYjgohAAAwAxVCWwRCAABgCBKhHQIhAAAwwtk/fZDo\nIYxZXEMIAABgOAIhAACA4QiEAAAAhiMQAgAAGC7uopK8vLzRGAcAyHWOdW4Ahie11ymNT/QoPj/i\nProOAAAAn29MGQMAABiOQAgAAGA4AiEAAIDhCIQAAACGIxACAAAYjkAIAABguP8Pb07uE11KrGcA\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "draw_microstructure_strain(X_delta[0, center, :, :], strains_delta[0, center, :, :])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calibrating First Order Influence Coefficients\n", "\n", "Now that we have the delta microstructures and their strain fields, we can calibrate the influence coefficients by creating an instance of a bases and the `MKSLocalizationModel` class. Because we have 2 discrete phases we will create an instance of the `PrimitiveBasis` with `n_states` equal to 2, and then pass the basis in to create an instance of the `MKSLocalizationModel`. The delta microstructures and their strain fields are then passed to the `fit` method. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from pymks import MKSLocalizationModel\n", "from pymks.bases import PrimitiveBasis\n", "\n", "\n", "p_basis = PrimitiveBasis(n_states=2)\n", "model = MKSLocalizationModel(basis=p_basis)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, pass the delta microstructures and their strain fields into the `fit` method to calibrate the first order influence coefficients." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model.fit(X_delta, strains_delta)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's it, the influence coefficient have been calibrated. Let's take a look at them." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAooAAAEhCAYAAAD4R4E8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9wVPW9//HX5sdmE+OaX2jILyLUEom9RBvTvUgjk0Ir\nbWXaBigJ4w8gXm2t97alvZ36LTcXEGVMxateiL2TwFC1lQVzNRP7pbUjMdIWY7kX0WIoGJJmSyKs\noQzLkk3i7vcPv2xZErIbPC6bw/MxszPhnM++z2dP9PDi8/mcs5ZAIBAQAAAAcJ64S90BAAAAxCaC\nIgAAAEZFUAQAAMCoCIoAAAAYFUERAAAAoyIoAgAAYFQERQAAAIwq4VJ34EKcTqd+/etfq7GxcVzv\n27Fjh37729/qxIkTuvXWW/Xtb39bGzdulMvl0iOPPPIJ9fbS2rNnj37zm9/oyJEjGhwcVFZWlj77\n2c/q9ttvV3p6uuHHG+0cn7v9b3/7m8rLyyVJPT09EZ/3TZs2jav9ePzhD3+Qz+fTnDlzDK+NiY/r\nTeS43oTH9QZmErNB0WKxyGKxjOs9nZ2d2r59u6qrq1VcXCy73R6sZVY///nP9atf/UoVFRX66le/\nquTkZLlcLr3yyis6duyYfvCDHxh6vAud4wttHxwcjLj2woULx9V+PP7whz/o1KlThly433nnHf3y\nl79UYmKi/v3f//1j15Mkn8+nZ599Vjk5Oert7dX06dN1yy23GFIb4XG9iQzXm8jE+vVGkj788EM1\nNTXpmmuuCQZtYDQxGxQvhsvlkiR96Utfks1mu8S9+eT98Y9/1Msvv6xvfetbIRek66+/XnPnztVb\nb71l+DEvdI6NOPdXX331x+9gFNxwww36zGc+I5/PZ1jNZ599VpMnT9b8+fPl9/v1ve99TwUFBcrP\nzzfsGDAW15uPcL35ZH0S15vW1lb95S9/0d69e/WNb3zDsLowpwkTFM9OE1RVVemZZ55RX1+frr32\nWv3TP/2T8vLytGnTJr322muSpLvuukuSVFtbqxkzZoyotXr1al155ZX6/ve/H9x24MABrV69Wo89\n9pjy8vIkSe+++662bdum9957T1arVWVlZbrrrrtCLkzh+nVu/e3bt+u9995TXFycrr32Wt11110q\nLCyM+Fjn+9WvfqWpU6eO+q9Wi8WikpKSkG2///3v1dTUpN7eXtntdt16661avHix4uL+vlR1rH5c\n6By3trZecPv5UztjnYfRpuyM+B1s2rRJb7zxhiTpm9/8piRp0aJFWrhwoXp6evTMM8/o8OHDGhoa\nUlZWlubPn68vfvGLFzzvknTw4EHNnz9/zDaRGhwcVGtrqx577DFJUlxcnEpKSrR7925VVVUZcgyM\nD9ebkbjeRPY7iPXrjaTg7/DIkSOG1YR5TZigKElut1vPPfecKisrlZiYqJ///Of6j//4D/30pz/V\nwoULlZmZqaamJtXW1spqtYZcOMero6NDDz30kMrKyrRy5UqdOnVKzz33nE6fPh1ywQ/XL0n605/+\npIceekif+cxn9J3vfEdJSUk6ePCg+vv7VVhYOK5jnfXhhx/q4MGDuv322yP6PG+99ZaeeOIJ3Xrr\nrbrjjjvU3d2tbdu2yePxqKamJqLPfKFznJWVNWJ7bm6uWltbQ/oQ7jycP2Vn1O+gsrJSbrdbXq83\n+FkzMjIkSY8++qjy8vL0z//8z0pISNDRo0d15syZMc/l8PCwDh8+rKKioojOfThHjx7V4OCgJk2a\nFNyWlZWlN99805D6uDhcb/6O6415rjfAeE2ooOjxePTQQw/pmmuukST5/X799Kc/1dGjR5WTkxPc\nPm3aNCUlJX2sY/3iF79QUVGR/uVf/iW4LT09XWvXrpXL5Qr5SyFcv37xi1/o2muv1YMPPhh8z8yZ\nMy/qWGedOnVKw8PDysrKiujzOJ1O3XDDDcGF4GeP/8tf/lLf+MY3lJGREVE/RjvHNpstonMf7jyM\n1t6o30FqaqoCgYA+9alPBd9z6tQpHTt2TP/6r/8anOK94YYbwp1KdXZ2KisrK7gu6uP629/+psTE\nxJC/uJKSknTixAlD6uPicL35O6435rneAOM1oYLi1VdfHfwfU1Lwf9z+/n7l5OQYdpzBwUEdOnRI\ny5cvl9/vD24vKipSfHy8Ojs7Qy4aY/UrMzNThw8f1vLlyw051vkiWTjv9/t15MgR3X333SHbZ82a\npeeee05//vOfddNNN32sfoTj8/nGPA/nM/J3cKH/NlJTU5WZman/+q//0vz583XDDTdEdDF+9913\ndf3114/YPjAwoC1btigQCIz5/vz8/JCRGY/Ho8TExJA2CQkJYUca8MniejMS15uPTOTrDTBeEyoo\npqSkhPw5IeGj7ht955rH45Hf71dDQ4MaGhpG7He73RH36/Tp05KktLQ0Q4511pVXXqmEhIQL7j/X\nqVOn9OGHH47ow1VXXRXsw8X2I1LhzsP5jPwdXIjFYtFPfvITPf/883r66afl8/lUVFSkZcuWBddy\njebdd9/VrFmzRmy32Wz61re+NdbHGlVycvKIbYODgyPCI6KL683fcb0xz/UGGK8JFRSNkpiYqOHh\n4ZBtHo8n+PMVV1whSVq8eLFuvPHGEe8/u94kEldccYUsFssFpxEv9ljx8fEqKirSW2+9FVwwfSFX\nXnml4uPjdfLkyZDtZ/985ZVXGvqZRxPuPIzW/pPsz1k5OTn6/ve/L7/fr3fffVfPPvus1q9fr6ef\nfnrU9oFAQAcPHtSKFSsMOb700fTW+Xc0DgwMRDzNh9jG9eYjXG9i43oDjNdlGRQzMjLU0dERsu3c\nRzskJSXp05/+tI4eParKysqPdaykpCRdd911amtr02233Tbq/os91pe//GU9+uijeu2113TrrbeG\n7AsEAnrrrbdUUlKiuLg4TZ06VXv27NG8efOCbX7/+98rLi5On/70pw39zKMJdx5Ga29kfxISEjQ0\nNHTB/XFxcSouLtZXv/pVPfnkkzp9+nTwL49z/eUvf5HNZtOkSZPU0dERssD8YqeCpkyZIqvVqv7+\n/uBfSH19fZo2bdp4PyZiENebj3C9+btLeb0BxuuyDIplZWXatWuXtm7dqptuukl/+tOfRjwDbOnS\npVq7dq0sFoscDodsNpvcbrf+53/+R9XV1crOzo74eNXV1XrooYf08MMPa+7cuUpKStKf//xnTZs2\nTTfddNNFH+uzn/2svvKVr+jpp5/WwYMHVVpaKpvNpr/+9a/67W9/q0mTJgUfWbF48WKtW7dOmzZt\n0i233BK8C/ELX/hC8NsUjPzMF3Mezmdkf3JycvTHP/5Rb775pjIzM5Wenq5Tp07pmWee0T/+4z/q\nmmuukcfj0UsvvaTCwsJRL9qS9Ne//lXXXXed+vv79cEHH4Tsu9ipoPj4eN18881qb2/XbbfdpsHB\nQb311lshi/AxcXG94XoTS9cbYLwuy6B40003qaqqSr/5zW/06quv6uabb9ayZcv06KOPBtsUFRVp\n9erV2r59u/7zP/9Tfr9fkyZN0syZM4NrbSJ1/fXX6yc/+Ym2bdump556SgkJCbr22mtVVlb2sY91\n5513qqioSDt37tRTTz0VfMxKaWlpyL8i/+Ef/kHf/e531dTUpN/97ney2+1asGCBFi1a9Il85os5\n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\n8QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.tools import draw_coeff\n", "\n", "\n", "coeff = model.coef_\n", "draw_coeff(coeff[center])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The influence coefficients for $l=0$ have a Gaussian-like shape, while the influence coefficients for $l=1$ are constant-valued. The constant-valued influence coefficients may seem superfluous, but are equally as important. They are equivalent to the constant term in multiple linear regression with [categorical variables](http://en.wikipedia.org/wiki/Dummy_variable_%28statistics%29)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predict of the Strain Field for a Random Microstructure\n", "\n", "Let's now use our instance of the `MKSLocalizationModel` class with calibrated influence coefficients to compute the strain field for a random two-phase microstructure and compare it with the results from a finite element simulation. \n", "\n", "The `make_elasticFEstrain_random` function from `pymks.datasets` is an easy way to generate a random microstructure and its strain field results from finite element analysis. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time 53.8849179745 Seconds\n" ] }, { "data": { "image/png": "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\n4XDo2LFjuu6667RlyxbDxwasJjIyUomJifrnf/5nLVmyxPN31OFw6OTJk7r22mu1YMECr32WLVum\nG2+8UYcPH9Z3vvMdhYWFDTnuWPoAuDQEwvNczMONx3KMNWvW6Nprr9XLL7+sd955Rz09PZo6darm\nzZunm2++2dDxk5KS9NRTT6miokL19fWeTyoZvEnk3Bskli5dKofDoQ8++EC1tbXq6urStGnTtHTp\nUqWnp+vaa6/19PX19dXmzZv1wgsv6I033lB3d7fcbrfi4+PHHAhvueUWSV/NBFRXVys0NFQrVqxQ\nTk6Onn322Us6N2MZ36OPPqp///d/15tvvqlXXnlFUVFRuv/++3X99dfr8OHDw9Yf7WuekZGhhQsX\n6uWXX1ZDQ4Nqa2tls9k0ffp0ffOb39SqVavGdG6AyeDmm2+W3W7XO++8o+bmZtlsNkVHR+u22267\n4D7z58/X4cOHdeDAAf31X/+1pkyZclF9AFw8HzcfEAsAGCdtbW166qmnlJaWpr1792r16tX63ve+\nZ7gPgEvDNYQAgHHhdrv1y1/+Uvfee6+ysrI0f/58HTx40HNz3Fj7ALh0LBkDAEz34osv6s0339TJ\nkyc91x46nU653W5t375dcXFxmjt37qh9uH4XuDxYMgYAAJjkWDIGAACY5AiEAADAUrrUO95D+NoZ\ndcn43AcMmyEmJsbUepL571H66kJps3Fur5zxOLfj4Uqd21k/SLwix72QZbesNLWeJL3x7wdMr+kX\nGmh6zTse/I7pNfcXlZteU2cv7hOdLkWofbbpNXPvuLiPbL0Uzyx/5LIcZ79qL8txxuIu3WBarSuF\nm0oAAIDlmDo5cOmPMB53BEIAAGA5BEJjCIQAAMByXDxExRACIQAAsByeqmcMgRAAAFiO223+jT9f\nZwRCAABgOcwQGkMgBAAAluMWgdAIAiEAALAcZgiNIRACAADL4S5jYwiEAADAcpghNIZACAAALIdA\naAyBEAAAWA6B0BgCIQAAsBwCoTEEQgAAYDkT8aYSp9Op4uJi1dfXKywsTLm5uUpJSRm27/79+1VZ\nWam+vj7Z7Xbl5eXJ399fZ8+eVUlJiY4ePSqn06nIyEjl5uYqMTFxyDH27t2rPXv26Cc/+YkWL148\n4th8L8s7BAAAmEDcbpdpr7EqKSlRQECASktLtXHjRpWUlKilpWVIv7q6OlVWVmrr1q0qKipSe3u7\n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\nT3/6U61bt04LFy4cdfwEQgAAYDlmB8I1a9aMuD0qKkoul0ttbW2eZeOmpqZhl3pjY2PV2Ngou90u\nSWpsbFR4eLhCQ0M9fYqLi3X69Glt2bJFvr7eC76ff/65nnrqKWVlZV3wLubzsWQMAAAsZ6JdQxgU\nFKTk5GSVl5ert7dXDQ0Nqq2tVWpq6pC+qampOnjwoFpaWuR0OlVRUaG0tDTP9p07d+rkyZN69NFH\n5e/vPbfX0dGhJ598UnfccYduu+22MZ+vUWcIfXx8xnywr6vJ8B6l8Xkm04UucsWlG+5C5K+r0LgZ\nptb7r7eqTa0nSc5XT5he02+mbfROl1v/2K6nupxWf2vsP/Qul1nTZ5pe8+0P602v+dHbx0yvqdEv\ndxuTsd79a6b169eruLhYeXl5CgsLU35+vmJiYuRwOLRp0yZt27ZNM2bMUGJiojIyMlRQUKD+/n7Z\n7XZlZ2dLkhwOhw4cOKCAgADl5+dL+irH5OfnKyUlRa+++qo+++wz7dmzR3v27JHb7ZaPj4/KyspG\nHBtLxgAAwHIm4oOpQ0NDtXnz5iHtERERQwJbenq60tPTh+27e/fuC9bIyspSVlaW4bERCAEAgOVM\nxEA4kREIAQCA5bhFIDSCQAgAACyHGUJjCIQAAMByXGN8YDS+QiAEAACWwwyhMQRCAABgOQRCYwiE\nAADAcgiExhAIAQCA5RAIjSEQAgAAy5mIn1QykREIAQCA5TBDaAyBEAAAWA6B0BgCIQAAsBwCoTEE\nQgAAYDkEQmMIhAAAwHLcfFKJIQRCAABgOS4xQ2gEgRAAAFgOS8bGEAgBAIDlEAiNIRACAADLIRAa\nQyAEAACWQyA0hkAIAAAsh4+uM4ZACAAALIcZQmMIhAAAwHImYiB0Op0qLi5WfX29wsLClJubq5SU\nlGH77t+/X5WVlerr65PdbldeXp78/f119uxZlZSU6OjRo3I6nYqMjFRubq4SExMlSWfPntXzzz+v\njz/+WA6HQ1u3btWiRYtGHZvvZX2nAAAAE4Db7TLtNVYlJSUKCAhQaWmpNm7cqJKSErW0tAzpV1dX\np8rKSm3dulVFRUVqb29XeXm5JGlgYEAREREqKChQWVmZ1q5dq+3bt8vhcHj2j4+P1yOPPKLw8PAx\nj41ACAAALMftdpv2Gove3l4dOXJEOTk5CgwMVHx8vJKSklRTUzOkb01NjVavXq3o6GjZbDZlZmaq\nqqpKkhQUFKSsrCxFRERIkpYvX65Zs2bp+PHjkiR/f3/deeedWrhwoXx9xx7zCIQAAMByJlogbG1t\nlZ+fnyIjIz1tcXFxw84QNjc3a+7cuV79Ojs75XQ6h/Q9deqUWltbFRMTcxFn6S+4hhAAAFjORLvL\nuKenRzabzastJCRE3d3do/YNCQnxtIeGhnraBwYGVFhYqLS0NM2ePfuSxkcgBAAAljPRbioJDg5W\nV1eXV1tXV5cn7J3f99ygOLhfcHCwp83tdquwsFABAQFat27dJY9v1EB4qVOQXwfj8U0zGc7rZNLc\n3Gx6zfH4HrpSf1d+/MCmK3LcC/k//7fI1HqSpHH42TRl+VWm11zz11mm15wffbXpNRtbT5he8/9/\n6WXTa8YumWd6zcvF7J/tgzd9SFJCQoISEhK8tkdFRcnlcqmtrc2zbNzU1DTsv+WxsbFqbGyU3W6X\nJDU2Nio8PNxrdrC4uFinT5/Wli1bDF0reCFcQwgAACzHbeJ/krRmzRrP6/wwKH11M0hycrLKy8vV\n29urhoYG1dbWKjU1dUjf1NRUHTx4UC0tLXI6naqoqFBaWppn+86dO3Xy5Ek9+uij8vcfOrd39uxZ\n9fX1ef6/v79/1PPFkjEAALCcibZkLEnr169XcXGx8vLyFBYWpvz8fMXExMjhcGjTpk3atm2bZsyY\nocTERGVkZKigoED9/f2y2+3Kzs6WJDkcDh04cEABAQHKz8+XJPn4+Cg/P9/zTMO/+7u/8zyG5umn\nn5Yk7dixw3Nn8nAIhAAAwHIm2k0lkhQaGqrNmzcPaY+IiFBZWZlXW3p6utLT04ftu3v37hHr7Nix\nw/DYCIQAAMByJuIM4URGIAQAAJZj5BNEQCAEAAAWxAyhMQRCAABgOQRCYwiEAADAcgiExhAIAQCA\n5UzEu4wnMgIhAACwHGYIjSEQAgAAyyEQGkMgBAAAlkMgNIZACAAALIdAaAyBEAAAWI5bBEIjCIQA\nAMB6yIOGEAgBAID1sGRsiO94DwAAAADjixlCAABgOUwQGkMgBAAA1kMiNIQlYwAAgEmOGUIAAGA9\nTBAaQiAEAADWw5KxISwZAwAATHLMEAIAAOthgtAQAiEAALAcPsvYGAIhAACACZxOp4qLi1VfX6+w\nsDDl5uYqJSVl2L779+9XZWWl+vr6ZLfblZeXJ39/f509e1YlJSU6evSonE6nIiMjlZubq8TERM++\nR48e1a9+9Ss5HA4tWLBAGzZsUERExIhj4xpCAABgPW4TX2NUUlKigIAAlZaWauPGjSopKVFLS8uQ\nfnV1darUf6HjAAARVUlEQVSsrNTWrVtVVFSk9vZ2lZeXS5IGBgYUERGhgoIClZWVae3atdq+fbsc\nDock6fTp03r22WeVk5OjXbt2ad68edq+ffuoYyMQAgAA65lggbC3t1dHjhxRTk6OAgMDFR8fr6Sk\nJNXU1AzpW1NTo9WrVys6Olo2m02ZmZmqqqqSJAUFBSkrK8sz47d8+XLNmjVLx48flyS98cYbio2N\n1cqVK+Xv76/s7Gw1NTXp5MmTI45v1CXj5ubmsb3TyyQ2NtbUepLk4+Njek2zz6s0Pud2PAz32xYm\ntseeetzUend/53+ZWk+SPk342PSafS2nTa/59ofvml4zODDI9Jr/9utfm16zt/GU6TV9lpr/8/Hy\nmVjXELa2tsrPz0+RkZGetri4OB07dmxI3+bmZq1YscKrX2dnp5xOp0JDQ736njp1SidPnvT8jG9p\nadHcuXM924OCghQZGamWlhbNnj37guNjhhAAAFjPBJsh7Onpkc1m82oLCQlRd3f3qH1DQkI87eca\nGBhQYWGhbrnlFkVFRRmucy5uKgEAANZj8gTh4DV+kpSQkKCEhASv7cHBwerq6vJq6+rq8oS98/ue\nG+AG9wsODva0ud1uFRYWKiAgQOvWrbvgviPVOReBEAAAWJC5iXDNmjUjbo+KipLL5VJbW5tn2bip\nqUkxMTFD+sbGxqqxsVF2u12S1NjYqPDwcK/l4uLiYp0+fVpbtmyRr+9fFnxjYmJUXV3t+XNPT4/a\n29uHrXMulowBAIDluN3mvcYiKChIycnJKi8vV29vrxoaGlRbW6vU1NQhfVNTU3Xw4EG1tLTI6XSq\noqJCaWlpnu07d+7UyZMn9eijj8rf33tuLzk5WS0tLTpy5Ij6+/u1d+9excXFjXj9oMQMIQAAgCnW\nr1+v4uJi5eXlKSwsTPn5+YqJiZHD4dCmTZu0bds2zZgxQ4mJicrIyFBBQYH6+/tlt9uVnZ0tSXI4\nHDpw4IACAgKUn58v6aubY/Pz85WSkqKwsDBt2rRJpaWlKiws1Pz58/X3f//3o46NQAgAAKxnYt1k\nLEkKDQ3V5s2bh7RHRESorKzMqy09PV3p6enD9t29e/eIdRYvXjymZw+ei0AIAAAsaAImwgmMQAgA\n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\nk9z/A9n8E43SAjSxAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.datasets import make_elastic_FE_strain_random\n", "\n", "\n", "np.random.seed(99)\n", "t = tm.time.time()\n", "X, strain = make_elastic_FE_strain_random(n_samples=1, elastic_modulus=elastic_modulus,\n", " poissons_ratio=poissons_ratio, size=size, macro_strain=macro_strain)\n", "print 'Elapsed Time',(tm.time.time() - t), 'Seconds'\n", "draw_microstructure_strain(X[0, center] , strain[0, center])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Note that the calibrated influence coefficients can only be used to reproduce the simulation with the same boundary conditions that they were calibrated with.**\n", "\n", "Now to get the strain field from the `MKSLocalizationModel` just pass the same microstructure to the `predict` method." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time 0.00195503234863 Seconds\n" ] } ], "source": [ "t = tm.time.time()\n", "strain_pred = model.predict(X)\n", "print 'Elapsed Time',tm.time.time() - t,'Seconds'\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally let's compare the results from finite element simulation and the MKS model." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAowAAAEpCAYAAAAZCnMWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X9YlGW+P/A34wDKoKEwI7EzMKsZ6oSaYYm5oQdq21zL\n0nFiNb5cJ8/5HgEPe7F7zI2VFlvqdNxzutgoznVcE3ZrYWzLLFMRpDAIVjCXEEPYCAWDM4xs2oy5\n4zjz/aMvU9MwPzSfh3nw/dprrkvv576fz/1Azb67n18hTqfTCSIiIiIiL2RjPQEiIiIiCm4MjERE\nRETkEwMjEREREfnEwEhEREREPjEwEhEREZFPDIxERERE5BMDIxERERH5xMBIRERERD4xMAaZoaEh\nGAwGvPTSS0G1LzFIbb5EREQ3CvlYT+BGYTAYfG7Pzs5Gamqq6+8hISHXrfY39zU0NITc3FykpqYi\nOzv7utXwxt9xA8BTTz2FuXPnCj6XYCb274Uo2H3zu+OFF16ASqUatV9RURFOnjwJwPN7dGQfRqPR\nY9zg4CCKi4thMpnw8MMP49FHHwUAOBwO1NXVoaGhAWfOnMGXX36JyMhIREVFYebMmUhOTkZycvJ1\nO04iqWBgFJlerx+1XavVAgCmTZuG559/HhEREd+51vXc13fl7bgBeP0/AiK6sU2YMAFXrlxBXV2d\nK9B90+DgIE6ePOnqF6ienh48++yzsFgsePzxx3HfffcB+Cos/vu//zva2tqgUCiwcOFCTJs2DXa7\nHf39/WhsbMTAwAADI92QGBhFtmbNGp/bJ0yYgLi4uOtSa7R9jdWrw/0d942Or3Qn8nTTTTdh6tSp\nePfdd7F27VrIZO5XUdXW1gIA7rjjDhw9ejSgfX700Uf4zW9+gytXruCnP/0p7rrrLte2xsZGtLW1\nQavVoqioCBMnTnQba7PZ8Ne//vU7HhWRNDEwBhlvpya/2a7X6/Hqq6+ivb0dly5dQnx8PPR6PRYu\nXOhzX6+99hr+9Kc/AQDq6+tRX1/v6vvtUznd3d146623cOrUKVgsFtx00024/fbbodfrMXXqVIF/\nCqMLdE7fPO7Vq1fjlVdewcmTJ2G323HrrbciMzMTGo0GFy5cQGVlJT788ENYLBbEx8dj/fr10Ol0\n161+IL+rq/m9EN1o0tLS8D//8z/48MMP3Vb2rly5gvr6eiQmJuJ73/teQPtqaGhAWVkZwsLCsGXL\nFo9LYU6dOgUASE1N9QiLABAWFnbDXz5DNy4GRokZGhrCk08+ienTpyM1NRUWiwUffPABtm/fjq1b\nt/r8MtPpdLh48SL2798PrVaLRYsWubaNnBIHgLq6OuzYsQOhoaFITk5GdHQ0BgYG8O677+LYsWN4\n5plnEB0dLeRheriWOY38rNRqNZYtW4ahoSH8+c9/RlFREX7961+juLgYERERWLJkCSwWCxobG/Hs\ns8+ipKTEY1/fpb6/31WgvxeiG9Hdd9+NiooKHD582C0wtrS04MKFC1i/fj0GBgb87mf//v2oqKjA\n1KlT8eSTTyI+Pt6jz+TJkwEgoP0R3WgkGRhNJhMOHjyI9vZ2DA4OIiwsDLfffjsMBgOUSuVYT8+n\n1157zaNNqVRi2bJlAY0/efIk1q5di9WrV7va7r77bjzzzDN46623fAbGuXPnQqlUYv/+/UhISBj1\nNPHAwAB+97vfQaVSoaioCFFRUa5tJ06cwK9//Wvs2rULP//5zwOa74jRjhsAQkNDsWrVKp9jr3VO\nJ0+eREZGhtv+X3/9dezevRtPPvkklixZgg0bNri2JSUl4cUXX8Q777yDzMzM61I/kN9VIL8Xou9C\nyt+ZEydOxJIlS1BfX4/h4WFMmzYNAHD48GFEREQgJSUFb7zxhs99/PGPf8TevXsRFxeHgoICxMTE\njNrvrrvuwt69e3Ho0CF8+eWXuPPOOzFjxgyv/YluJJILjJ988gleeeUVpKam4r777kNUVBQsFguO\nHDmCv/3tb0H/5Tdy6vGb5s6dG3BgVCqVeOSRR9za5s+fj5iYmOtybU11dTWuXLmCrKwst2AEALfd\ndhuSk5Nx7NgxXLp0adRTNt6MdtwAoFAo/AbGa52TSqXCQw895NY/NTUVu3fvht1ux/r16922LV26\nFGVlZejt7b0u9YX+XREFQurfmQCQnp6Od999F++++y5Wr16NoaEhtLe347777kNYWJjf8Xv37oVc\nLscvfvELn+FPq9XiX//1X7Fr1y68//77eP/99wEAkZGRmDNnDpYvX4477rjjuh0XkZRILjB+9tln\nyMjIwK233upqmzhxosf/MQth9+7dHo+7Wb58+VX91+doj3e4GlqtdtRH7kRHR6O7u/s77RuAax8d\nHR2jhprz58/D4XBgYGAA3//+9wPe73c57mudU0JCgsfPamR14uabb/YIvDKZDFFRUTh37tx1qS/0\n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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.tools import draw_strains_compare\n", "\n", "\n", "draw_strains_compare(strain[0, center], strain_pred[0, center])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at the difference between the two plots." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.tools import draw_differences\n", "\n", "\n", "draw_differences([strain[0, center] - strain_pred[0, center]], ['Finite Element - MKS'])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The MKS model is able to capture the strain field for the random microstructure after being calibrated with delta microstructures." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Resizing the Coefficeints to use on Larger Microstructures \n", "\n", "The influence coefficients that were calibrated on a smaller microstructure can be used to predict the strain field on a larger microstructure though spectral interpolation [3], but accuracy of the MKS model drops slightly. To demonstrate how this is done, let's generate a new larger $m$ by $m$ random microstructure and its strain field." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "m = 3 * n\n", "center = (m - 1) / 2\n", "t = tm.time.time()\n", "X = np.random.randint(2, size=(1, m, m, m))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The influence coefficients that have already been calibrated need to be resized to match the shape of the new larger microstructure that we want to compute the strain field for. This can be done by passing the shape of the new larger microstructure into the 'resize_coeff' method." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model.resize_coeff(X[0].shape)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the coefficients have been resized, they will no longer work for our original $n$ by $n$ sized microstructures they were calibrated on, but they can now be used on the $m$ by $m$ microstructures. Just like before, just pass the microstructure as the argument of the `predict` method to get the strain field." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time 0.00978684425354 Seconds\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pymks.tools import draw_strains\n", "\n", "\n", "t = tm.time.time()\n", "strain_pred = model.predict(X)\n", "print 'Elapsed Time',(tm.time.time() - t), 'Seconds'\n", "draw_microstructure_strain(X[0, center], strain_pred[0, center])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## References\n", "\n", "[1] Binci M., Fullwood D., Kalidindi S.R., *A new spectral framework for establishing localization relationships for elastic behav ior of composites and their calibration to finite-element models*. Acta Materialia, 2008. 56 (10): p. 2272-2282 [doi:10.1016/j.actamat.2008.01.017](http://dx.doi.org/10.1016/j.actamat.2008.01.017).\n", "\n", "\n", "[2] Landi, G., S.R. Niezgoda, S.R. Kalidindi, *Multi-scale modeling of elastic response of three-dimensional voxel-based microstructure datasets using novel DFT-based knowledge systems*. Acta Materialia, 2009. 58 (7): p. 2716-2725 [doi:10.1016/j.actamat.2010.01.007](http://dx.doi.org/10.1016/j.actamat.2010.01.007).\n", "\n", "\n", "[3] Marko, K., Kalidindi S.R., Fullwood D., *Computationally efficient database and spectral interpolation for fully plastic Taylor-type crystal plasticity calculations of face-centered cubic polycrystals*. International Journal of Plasticity 24 (2008) 1264–1276 [doi;10.1016/j.ijplas.2007.12.002](http://dx.doi.org/10.1016/j.ijplas.2007.12.002).\n", "\n", "\n", "[4] Marko, K. Al-Harbi H. F. , Kalidindi S.R., *Crystal plasticity simulations using discrete Fourier transforms*. Acta Materialia 57 (2009) 1777–1784 [doi:10.1016/j.actamat.2008.12.017](http://dx.doi.org/10.1016/j.actamat.2008.12.017)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }