Skip to content
Snippets Groups Projects
Mircrostructure Truss.ipynb 1.91 MiB
Newer Older
  • Learn to ignore specific revisions
  •        "   210\n",
           "   211\n",
           "   212\n",
           "   213\n",
           "   214\n",
           "   215\n",
           "   216\n",
           "   217\n",
           "     ⋮\n",
           " 20187\n",
           " 20188\n",
           " 20189\n",
           " 20190\n",
           " 20191\n",
           " 20192\n",
           " 20193\n",
           " 20194\n",
           " 20195\n",
           " 20196\n",
           " 20197\n",
           " 20198"
          ]
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "source": [
        "display(n1)\n",
        "display(d1)\n",
        "display(n3)\n",
        "display(d3)\n",
        "display(n4)\n",
        "display(d4)\n",
        "display(d2)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 163,
       "metadata": {},
       "outputs": [],
       "source": [
        "for j = 1:3\n",
        "    ufixed[3:4,j] = [e0[1,j] e0[3,j]/2 ; e0[3,j]/2 e0[2,j]]*[nelx;0];\n",
        "    ufixed[7:8,j] = [e0[1,j] e0[3,j]/2 ; e0[3,j]/2 e0[2,j]]*[0;nely];\n",
        "    ufixed[5:6,j] = ufixed[3:4,j] .+ ufixed[7:8,j];\n",
        "end"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 164,
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "8×3 Array{Float64,2}:\n",
           "   0.0    0.0   0.0\n",
           "   0.0    0.0   0.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0  50.0\n",
           "   0.0  100.0  50.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0"
          ]
         },
         "execution_count": 164,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "ufixed"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 165,
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "396×3 Array{Float64,2}:\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   0.0    0.0  50.0\n",
           " 100.0    0.0   0.0\n",
           "   ⋮           \n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0\n",
           "   0.0    0.0  50.0\n",
           "   0.0  100.0   0.0"
          ]
         },
         "execution_count": 165,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "wfixed = [repeat(ufixed[3:4,:],nely-1,1); repeat(ufixed[7:8,:],nelx-1,1)];\n",
        "wfixed"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 174,
       "metadata": {},
       "outputs": [],
       "source": [
        "## INITIALIZE ITERATION\n",
        "qe = Array{Any,2}(undef, 3, 3);\n",
        "Q = zeros(3,3);\n",
        "dQ = Array{Any,2}(undef, 3, 3);\n",
        "x = volfrac.*ones(nely,nelx)\n",
        "\n",
        "for i = 1:nelx\n",
        "    for j = 1:nely\n",
        "        vall=3\n",
        "        if optType==\"poisson\"\n",
        "            vall=6\n",
        "        end\n",
        "        if sqrt((i-nelx/2-0.5)^2+(j-nely/2-0.5)^2) < min(nelx,nely)/vall\n",
        "            x[j,i] = volfrac/2.0;\n",
        "        end\n",
        "    end\n",
        "end\n",
        "xPhys = copy(x);\n",
        "change = 1;\n",
        "loop = 0;\n",
        "xnew=zeros(size(x));\n"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 175,
       "metadata": {},
       "outputs": [],
       "source": [
        "## START ITERATION\n",
        "\n",
        "## FE-ANALYSIS\n",
        "sK = reshape(KE[:]*(Emin .+ xPhys[:]'.^penal*(80 .- Emin)),64*nelx*nely,1);\n",
        "\n",
        "K = sparse(vec(iK),vec(jK),vec(sK)); \n",
        "K = (K.+K')./2.0;\n",
        "\n",
        "Kr = vcat(hcat(K[d2,d2] , K[d2,d3]+K[d2,d4]),hcat((K[d3,d2]+K[d4,d2]),(K[d3,d3]+K[d4,d3]+K[d3,d4]+K[d4,d4])));\n",
        "U[d1,:] .= ufixed;\n",
        "U[[d2;d3],:] = Kr\\(-[K[d2,d1]; K[d3,d1]+K[d4,d1]]*ufixed-[K[d2,d4]; K[d3,d4]+K[d4,d4]]*wfixed);\n",
        "U[d4,:] = U[d3,:]+wfixed;\n",
        "        \n",
        "        \n"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 177,
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "20402×3 Array{Float64,2}:\n",
           "   0.0            0.0          50.0\n",
           "   0.0          100.0           0.0\n",
           "  -3.67405e-11    7.00067e-14  49.9953\n",
           "   0.236372      99.0911       -1.00882e-11\n",
           "  -4.54123e-11    6.15561e-14  49.9892\n",
           "   0.471982      98.1818       -1.44058e-11\n",
           "  -5.17758e-11    6.23073e-14  49.9802\n",
           "   0.706067      97.2718       -1.6833e-11\n",
           "  -5.61746e-11    7.17849e-14  49.967\n",
           "   0.937861      96.3608       -1.85503e-11\n",
           "  -5.96617e-11    7.22162e-14  49.948\n",
           "   1.1666        95.4483       -1.98748e-11\n",
           "  -6.25283e-11    7.66748e-14  49.922\n",
           "   ⋮                           \n",
           " 100.0            1.34213e-13   0.0519715\n",
           "  -1.1666         4.5517       50.0\n",
           " 100.0            1.2473e-13    0.0330427\n",
           "  -0.937861       3.63922      50.0\n",
           " 100.0            1.13706e-13   0.0198063\n",
           "  -0.706067       2.72816      50.0\n",
           " 100.0            9.64519e-14   0.0108357\n",
           "  -0.471982       1.81817      50.0\n",
           " 100.0            7.3829e-14    0.00470755\n",
           "  -0.236372       0.908907     50.0\n",
           " 100.0            0.0           0.0\n",
           "   0.0            0.0          50.0"
          ]
         },
         "execution_count": 177,
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "U"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": null,
       "metadata": {},
       "outputs": [],
       "source": []
      }
     ],
     "metadata": {
      "kernelspec": {
       "display_name": "Julia 1.5.2",
       "language": "julia",
       "name": "julia-1.5"
      },
      "language_info": {
       "file_extension": ".jl",
       "mimetype": "application/julia",
       "name": "julia",
       "version": "1.5.2"
      }
     },
     "nbformat": 4,
     "nbformat_minor": 2
    }