Skip to content
Snippets Groups Projects
Mircrostructure Truss.ipynb 1.91 MiB
Newer Older
       "   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
}