From 2688e77a63863722f36098b0688ee3b754bba88d Mon Sep 17 00:00:00 2001 From: kssgarcia Date: Tue, 10 Dec 2024 10:01:37 -0500 Subject: [PATCH] first-commit --- .github/workflows/python-publish.yml | 153 + .gitignore | 427 + AUTHORS.rst | 9 + CONTRIBUTING.rst | 113 + HISTORY.rst | 35 + LICENSE | 22 + README.rst | 182 + conda-recipe/meta.yaml | 47 + docs/Makefile | 20 + docs/advanced.rst | 12 + docs/advanced/img/membrane_eigs.png | Bin 0 -> 46939 bytes docs/advanced/img/membrane_mode1.png | Bin 0 -> 65528 bytes docs/advanced/membrane_vibration.rst | 278 + docs/authors.rst | 1 + docs/conf.py | 181 + docs/contributing.rst | 1 + docs/history.rst | 1 + docs/img/Folder_selection.png | Bin 0 -> 7309 bytes .../img/square-4_elements-horizontal_disp.png | Bin 0 -> 18955 bytes docs/img/square-4_elements-vertical_disp.png | Bin 0 -> 17163 bytes docs/img/square-4_elements.png | Bin 0 -> 24005 bytes docs/img/square-4_elements.svg | 627 + docs/img/template_schematic.pdf | Bin 0 -> 14593 bytes docs/img/template_schematic.png | Bin 0 -> 67607 bytes docs/img/template_schematic.svg | 765 + docs/img/wrench.png | Bin 0 -> 98925 bytes docs/index.rst | 30 + docs/installation.rst | 25 + docs/make.bat | 36 + docs/modules.rst | 44 + docs/readme.rst | 1 + docs/tutorial.rst | 23 + docs/tutorials/brazilian_test.rst | 539 + docs/tutorials/geometry_gmsh.rst | 54 + docs/tutorials/img/Agregar_arcos.png | Bin 0 -> 33113 bytes docs/tutorials/img/Agregar_linea_fisica.png | Bin 0 -> 42562 bytes docs/tutorials/img/Agregar_lineas.png | Bin 0 -> 39266 bytes docs/tutorials/img/Agregar_puntos.png | Bin 0 -> 54364 bytes docs/tutorials/img/Agregar_superficie.png | Bin 0 -> 41121 bytes docs/tutorials/img/Guardar_malla.png | Bin 0 -> 55542 bytes docs/tutorials/img/Mallar_2D.png | Bin 0 -> 30613 bytes docs/tutorials/img/Motor_geometrico.png | Bin 0 -> 3151 bytes docs/tutorials/img/Nuevo_archivo.png | Bin 0 -> 31679 bytes docs/tutorials/img/Prueba_brasilera.pdf | Bin 0 -> 8541 bytes docs/tutorials/img/Prueba_brasilera.svg | 259 + docs/tutorials/img/Prueba_brasilera_ux.svg | 408 + docs/tutorials/img/Prueba_brasilera_uy.svg | 405 + docs/tutorials/img/Ver_superficie_malla.png | Bin 0 -> 47906 bytes docs/tutorials/img/solids_GUI-ventana.png | Bin 0 -> 49799 bytes docs/tutorials/old_format.rst | 63 + docs/tutorials/square_example.rst | 197 + docs/tutorials/template.geo | 38 + docs/tutorials/template.msh | 880 + docs/tutorials/template_input.py | 77 + docs/usage.rst | 6 + .../beam_convergence/beam_convergence.ipynb | 2846 + examples/beam_convergence/error_vs_h.txt | 8 + .../beam_convergence/img/Beam_convergence.pdf | Bin 0 -> 17400 bytes .../beam_convergence/img/Beam_mesh-12.pdf | Bin 0 -> 3852 bytes .../beam_convergence/img/Beam_mesh-12288.pdf | Bin 0 -> 2261558 bytes .../beam_convergence/img/Beam_mesh-192.pdf | Bin 0 -> 38855 bytes examples/beam_convergence/img/Beam_mesh-3.pdf | Bin 0 -> 1868 bytes .../beam_convergence/img/Beam_mesh-3072.pdf | Bin 0 -> 580656 bytes .../beam_convergence/img/Beam_mesh-48.pdf | Bin 0 -> 10842 bytes .../beam_convergence/img/Beam_mesh-768.pdf | Bin 0 -> 150062 bytes .../beam_convergence/img/cantilever_beam.svg | 849 + examples/beam_convergence/img/meshes.pdf | Bin 0 -> 57219 bytes examples/custom_barba.css | 85 + .../membrane_vibration.ipynb | 2143 + .../membrane_vibration/membrane_vibration.py | 166 + examples/membrane_vibration/square.geo | 33 + examples/membrane_vibration/square.msh | 52741 ++++++++++++++++ examples/simple_truss/img/simple_truss.png | Bin 0 -> 27159 bytes examples/simple_truss/img/simple_truss.svg | 478 + examples/simple_truss/simple_truss.ipynb | 1383 + examples/square-4_elements/eles.txt | 4 + examples/square-4_elements/loads.txt | 3 + examples/square-4_elements/mater.txt | 2 + examples/square-4_elements/nodes.txt | 9 + paper/paper.bib | 33 + paper/paper.md | 54 + paper/wrench.png | Bin 0 -> 98925 bytes pyproject.toml | 55 + setup.cfg | 5 + src/solidspy_opt/Utils/__init__.py | 2 + src/solidspy_opt/Utils/beams.py | 145 + src/solidspy_opt/Utils/solver.py | 501 + src/solidspy_opt/__init__.py | 15 + src/solidspy_opt/models.py | 237 + src/solidspy_opt/optimize.py | 465 + tests/test_optimize.py | 102 + 91 files changed, 68323 insertions(+) create mode 100644 .github/workflows/python-publish.yml create mode 100755 .gitignore create mode 100644 AUTHORS.rst create mode 100644 CONTRIBUTING.rst create mode 100644 HISTORY.rst create mode 100644 LICENSE create mode 100644 README.rst create mode 100644 conda-recipe/meta.yaml create mode 100644 docs/Makefile create mode 100644 docs/advanced.rst create mode 100644 docs/advanced/img/membrane_eigs.png create mode 100644 docs/advanced/img/membrane_mode1.png create mode 100644 docs/advanced/membrane_vibration.rst create mode 100644 docs/authors.rst create mode 100644 docs/conf.py create mode 100644 docs/contributing.rst create mode 100644 docs/history.rst create mode 100755 docs/img/Folder_selection.png create mode 100755 docs/img/square-4_elements-horizontal_disp.png create mode 100755 docs/img/square-4_elements-vertical_disp.png create mode 100755 docs/img/square-4_elements.png create mode 100755 docs/img/square-4_elements.svg create mode 100755 docs/img/template_schematic.pdf create mode 100755 docs/img/template_schematic.png create mode 100755 docs/img/template_schematic.svg create mode 100755 docs/img/wrench.png create mode 100644 docs/index.rst create mode 100644 docs/installation.rst create mode 100644 docs/make.bat create mode 100644 docs/modules.rst create mode 100644 docs/readme.rst create mode 100644 docs/tutorial.rst create mode 100644 docs/tutorials/brazilian_test.rst create mode 100644 docs/tutorials/geometry_gmsh.rst create mode 100644 docs/tutorials/img/Agregar_arcos.png create mode 100644 docs/tutorials/img/Agregar_linea_fisica.png create mode 100644 docs/tutorials/img/Agregar_lineas.png create mode 100644 docs/tutorials/img/Agregar_puntos.png create mode 100644 docs/tutorials/img/Agregar_superficie.png create mode 100644 docs/tutorials/img/Guardar_malla.png create mode 100644 docs/tutorials/img/Mallar_2D.png create mode 100644 docs/tutorials/img/Motor_geometrico.png create mode 100644 docs/tutorials/img/Nuevo_archivo.png create mode 100644 docs/tutorials/img/Prueba_brasilera.pdf create mode 100644 docs/tutorials/img/Prueba_brasilera.svg create mode 100644 docs/tutorials/img/Prueba_brasilera_ux.svg create mode 100644 docs/tutorials/img/Prueba_brasilera_uy.svg create mode 100644 docs/tutorials/img/Ver_superficie_malla.png create mode 100644 docs/tutorials/img/solids_GUI-ventana.png create mode 100644 docs/tutorials/old_format.rst create mode 100644 docs/tutorials/square_example.rst create mode 100755 docs/tutorials/template.geo create mode 100755 docs/tutorials/template.msh create mode 100755 docs/tutorials/template_input.py create mode 100644 docs/usage.rst create mode 100755 examples/beam_convergence/beam_convergence.ipynb create mode 100755 examples/beam_convergence/error_vs_h.txt create mode 100755 examples/beam_convergence/img/Beam_convergence.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-12.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-12288.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-192.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-3.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-3072.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-48.pdf create mode 100755 examples/beam_convergence/img/Beam_mesh-768.pdf create mode 100755 examples/beam_convergence/img/cantilever_beam.svg create mode 100755 examples/beam_convergence/img/meshes.pdf create mode 100755 examples/custom_barba.css create mode 100644 examples/membrane_vibration/membrane_vibration.ipynb create mode 100644 examples/membrane_vibration/membrane_vibration.py create mode 100644 examples/membrane_vibration/square.geo create mode 100644 examples/membrane_vibration/square.msh create mode 100755 examples/simple_truss/img/simple_truss.png create mode 100755 examples/simple_truss/img/simple_truss.svg create mode 100755 examples/simple_truss/simple_truss.ipynb create mode 100755 examples/square-4_elements/eles.txt create mode 100755 examples/square-4_elements/loads.txt create mode 100755 examples/square-4_elements/mater.txt create mode 100755 examples/square-4_elements/nodes.txt create mode 100644 paper/paper.bib create mode 100644 paper/paper.md create mode 100755 paper/wrench.png create mode 100644 pyproject.toml create mode 100755 setup.cfg create mode 100644 src/solidspy_opt/Utils/__init__.py create mode 100644 src/solidspy_opt/Utils/beams.py create mode 100644 src/solidspy_opt/Utils/solver.py create mode 100755 src/solidspy_opt/__init__.py create mode 100644 src/solidspy_opt/models.py create mode 100644 src/solidspy_opt/optimize.py create mode 100755 tests/test_optimize.py diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..fc8e280 --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,153 @@ +name: SolidsPy CI/CD Pipeline + +on: + push: + branches: + - main + - develop + tags: + - 'v*.*.*' + pull_request: + branches: + - main + - develop + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + name: Test on Python ${{ matrix.python-version }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.10', '3.11', '3.12'] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install build + pip install -e .[dev] + + - name: Run tests with coverage + run: | + pytest --cov=solidspy_opt tests/ + + - name: Generate coverage report + run: | + coverage xml + + - name: Upload coverage report + uses: actions/upload-artifact@v4 + with: + name: coverage-report-${{ matrix.python-version }} + path: coverage.xml + + release: + name: Release Process + needs: test + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Extract version from tag + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV + + - name: Validate VERSION Format + run: | + if [[ ! "${{ env.VERSION }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Invalid version format: ${{ env.VERSION }}" + exit 1 + fi + + - name: Update __version__ in __init__.py + run: | + sed -i 's|__version__ = ".*"|__version__ = "${{ env.VERSION }}"|' src/solidspy_opt/__init__.py + + - name: Update version in pyproject.toml + run: | + sed -i 's/version = ".*"/version = "${{ env.VERSION }}"/' pyproject.toml + + - name: Update version in conda-recipe/meta.yaml + run: | + sed -i 's|{% set version = ".*" %}|{% set version = "'${{ env.VERSION }}'" %}|' conda-recipe/meta.yaml + + - name: Update release in docs/conf.py + run: | + sed -i 's|release = ".*"|release = "${{ env.VERSION }}"|' docs/conf.py + + - name: Configure Git + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + - name: Commit version update + run: | + git add . + git commit -m "Update version to ${{ env.VERSION }}" || echo "No changes to commit" + + - name: Push changes (Force) + uses: ad-m/github-push-action@v0.8.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: develop + directory: . + force: true + + # Build and Publish Steps + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.8' + + - name: Install build tools + run: | + python -m pip install --upgrade pip + pip install build twine + + - name: Build Python package + run: python -m build + + - name: Publish package to TestPyPI + env: + TWINE_USERNAME: '__token__' + TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} + run: | + python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/* --verbose + + # - name: Set up Miniconda + # uses: conda-incubator/setup-miniconda@v2 + # with: + # auto-update-conda: true + # python-version: '3.10' + # channels: conda-forge + # use-mamba: false + + # - name: Install conda-build and anaconda-client via conda + # run: | + # conda install -y conda-build anaconda-client + # conda list anaconda-client + + # - name: Build Conda package + # run: conda build conda-recipe --output-folder dist -c conda-forge + + # - name: Upload Conda package + # env: + # ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }} + # run: | + # for pkg in dist/*/*.tar.bz2; do + # conda run -n base anaconda upload "$pkg" --force + # done \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..16f152d --- /dev/null +++ b/.gitignore @@ -0,0 +1,427 @@ +### FEM Python files ### + +# Output files +out.txt +KELEMS.txt +KLOADS.txt +KMATES.txt +KNODES.txt +MESHUTIL/contour +MESHUTIL/mesher + +### Fortran ### +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +### LaTeX ### +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.toc +*.fmt +*.fot +*.cb +*.cb2 + +## Intermediate documents: +*.dvi +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.brf +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm +*.[1-9] +*.[1-9][0-9] + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# hyperref + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# mylatexformat + +# nomencl +*.nlo + +# pax +*.pax + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +/auto/* + +# expex forward references with \gathertags +*-tags.tex + +# VSCode +.vscode/ + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject + +# Rope project settings +.ropeproject + +# Pytest +.cache/ +.pytest_cache/ + + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# nohup.out +nohup.out + +### macOS ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 0000000..96eeec1 --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,9 @@ +======= +Credits +======= + +Principal developers +-------------------- + +* Nicolas Guarin-Zapata (`@nicoguaro`) +* Kevin Sepulveda (`@kssepulveg`) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..403d31d --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,113 @@ +============ +Contributing +============ + +Contributions are welcome, and they are greatly appreciated! Every +little bit helps, and credit will always be given. + + +Types of Contributions +---------------------- + +You can contribute in many ways: + +Create FEM Analysis +~~~~~~~~~~~~~~~~~~~ + +If you run a Finite Element Analysis using SolidsPy, and want to share it +with the community, submit a pull request to our sibling project +`SolidsPy-meshes `__. + + +Report Bugs +~~~~~~~~~~~ + +Report bugs at https://github.com/AppliedMechanics-EAFIT/SolidsPy/issues. + +If you are reporting a bug, please include: + +* Your operating system name and version. +* Any details about your local setup that might be helpful in troubleshooting. +* If you can, provide detailed steps to reproduce the bug. +* If you don't have steps to reproduce the bug, just note your observations in + as much detail as you can. Questions to start a discussion about the issue + are welcome. + +Fix Bugs +~~~~~~~~ + +Look through the GitHub issues for bugs. Anything tagged with "bug" +is open to whoever wants to implement it. + +Implement Features +~~~~~~~~~~~~~~~~~~ + +Look through the GitHub issues for features. Anything tagged with "enhancement" +and "please-help" is open to whoever wants to implement it. + +Please do not combine multiple feature enhancements into a single pull request. + + +Write Documentation +~~~~~~~~~~~~~~~~~~~ + +SolidsPy could always use more documentation, whether as part of the +official SolidsPy docs, in docstrings, or even on the web in blog posts, +articles, and such. + +Submit Feedback +~~~~~~~~~~~~~~~ + +The best way to send feedback is to file an issue at +https://github.com/AppliedMechanics-EAFIT/SolidsPy/issues. + +If you are proposing a feature: + +* Explain in detail how it would work. +* Keep the scope as narrow as possible, to make it easier to implement. +* Remember that this is a volunteer-driven project, and that contributions + are welcome :) + + +Contributor Guidelines +---------------------- + +Pull Request Guidelines +~~~~~~~~~~~~~~~~~~~~~~~ + +Before you submit a pull request, check that it meets these guidelines: + +1. The pull request should include tests. +2. If the pull request adds functionality, the docs should be updated. Put + your new functionality into a function with a docstring, and add the + feature to the list in README.rst. +3. The pull request should work for Python 2.7, 3.3, 3.4, 3.5, 3.6. + +Coding Standards +~~~~~~~~~~~~~~~~ + +* PEP8 +* Functions over classes except in tests +* Quotes via http://stackoverflow.com/a/56190/5549 + + * Use double quotes around strings that are used for interpolation or that are natural language messages + * Use single quotes for small symbol-like strings (but break the rules if the strings contain quotes) + * Use triple double quotes for docstrings and raw string literals for regular expressions even if they aren't needed. + * Example: + + .. code-block:: python + + LIGHT_MESSAGES = { + 'English': "There are %(number_of_lights)s lights.", + 'Pirate': "Arr! Thar be %(number_of_lights)s lights." + } + + def lights_message(language, number_of_lights): + """Return a language-appropriate string reporting the light count.""" + return LIGHT_MESSAGES[language] % locals() + + def is_pirate(message): + """Return True if the given message sounds piratical.""" + return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None + + * Write new code in Python 3. diff --git a/HISTORY.rst b/HISTORY.rst new file mode 100644 index 0000000..8a04e0b --- /dev/null +++ b/HISTORY.rst @@ -0,0 +1,35 @@ +History +------- + +1.0.15 (2018-05-09) +~~~~~~~~~~~~~~~~~~ + +* Fix element ordering in `rectgrid` and doctests. + +1.0.14 (2018-05-08) +~~~~~~~~~~~~~~~~~~ + +* Add Jacobian checks. +* Pytest catch exceptions. + +1.0.13 (2018-05-07) +~~~~~~~~~~~~~~~~~~ + +* Update meshio syntax for physical groups. +* Add citation information to package. + +1.0.12 (2018-04-16) +~~~~~~~~~~~~~~~~~~ + +* Documentation built with Sphinx. +* Docs in ReadTheDocs. + +1.0.0 (2017-07-17) +~~~~~~~~~~~~~~~~~~ + +* First release on PyPI. + +Roadmap +------- + +Pending ... diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..96b53ed --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2015 - 2018 Juan Gomez and Nicolás Guarín-Zapata + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..a137849 --- /dev/null +++ b/README.rst @@ -0,0 +1,182 @@ +SolidsPy: 2D-Finite Element Analysis with Python +================================================ + +.. figure:: https://raw.githubusercontent.com/AppliedMechanics-EAFIT/SolidsPy/master/docs/img/wrench.png + :alt: Wrench under bending. + + + +.. image:: https://img.shields.io/pypi/v/solidspy.svg + :target: https://pypi.python.org/pypi/continuum_mechanics + :alt: PyPI download + +.. image:: https://readthedocs.org/projects/solidspy/badge/?version=latest + :target: https://solidspy.readthedocs.io/en/latest/ + :alt: Documentation Status + +.. image:: https://img.shields.io/pypi/dm/solidspy + :target: https://pypistats.org/packages/solidspy + :alt: Downloads frequency + + + +A simple finite element analysis code for 2D elasticity problems. +The code uses as input simple-to-create text files +defining a model in terms of nodal, element, material and load data. + +- Documentation: http://solidspy.readthedocs.io +- GitHub: https://github.com/AppliedMechanics-EAFIT/SolidsPy +- PyPI: https://pypi.org/project/solidspy/ +- Free and open source software: `MIT license `__ + + + +Features +-------- + +* It is based on an open-source environment. + +* It is easy to use. + +* The code allows to find displacement, strain and stress solutions for + arbitrary two-dimensional domains discretized into finite elements and + subject to point loads. + +* The code is organized in independent modules for pre-processing, assembly and + post-processing allowing the user to easily modify it or add features like + new elements or analyses pipelines. + +* It was created with academic and research purposes. + +* It has been used to tech the following courses: + + - Computational Modeling. + - Introduction to the Finite Element Methods. + + +Installation +------------ + +The code is written in Python and it depends on ``numpy``, ``scipy`` and +``sympy``. It has been tested under Windows, Mac, Linux and Android. + +To install *SolidsPy* open a terminal and type: + +:: + + pip install solidspy + +To specify through a GUI the folder where the input +files are stored you will need to install `easygui `__. + +To easily generate the required SolidsPy text files out of a +`Gmsh `__ model you will need +`meshio `__. + +These two can be installed with: + +:: + + pip install easygui + pip install meshio + + +How to run a simple model +------------------------- + +For further explanation check the `docs `__. + +Let's suppose that we have a simple model represented by the following +files (see `tutorials/square example `__ +for further explanation). + +.. code:: python + + import numpy as np + from solidspy.solids_GUI import solids_auto + + ### Define the data + nodes = np.array([ + [0, 0.00, 0.00], + [1, 2.00, 0.00], + [2, 2.00, 2.00], + [3, 0.00, 2.00], + [4, 1.00, 0.00], + [5, 2.00, 1.00], + [6, 1.00, 2.00], + [7, 0.00, 1.00], + [8, 1.00, 1.00]]) + + cons = np.array([ + [0, -1], + [0, -1], + [0, 0], + [0, 0], + [-1, -1], + [0, 0], + [0, 0], + [0, 0], + [0, 0]]) + + elements = np.array([ + [0, 1, 0, 0, 4, 8, 7], + [1, 1, 0, 4, 1, 5, 8], + [2, 1, 0, 7, 8, 6, 3], + [3, 1, 0, 8, 5, 2, 6]]) + + mats = np.array([[1.0, 0.3]]) + + loads = np.array([ + [2, 0.0, 1.0], + [3, 0.0, 1.0], + [6, 0.0, 2.0]]) + + data = {"nodes": nodes, + "cons": cons, + "elements": elements, + "mats": mats, + "loads": loads} + + ### Run the simulation + disp = solids_auto(data) + plt.show() + + +Save it as ``example_solidspy.py`` and run it in your terminal: + +.. code:: bash + + python example_solidspy.py + + +License +------- + +This project is licensed under the `MIT +license `__. The documents are +licensed under `Creative Commons Attribution +License `__. + +Citation +-------- + +To cite SolidsPy in publications use + + Juan Gómez, Nicolás Guarín-Zapata (2018). SolidsPy: 2D-Finite + Element Analysis with Python, . + +A BibTeX entry for LaTeX users is + +.. code:: bibtex + + @software{solidspy, + title = {SolidsPy: 2D-Finite Element Analysis with Python}, + author = {Gómez, Juan and Guarín-Zapata, Nicolás}, + year = 2018, + keywords = {Python, Finite elements, Scientific computing, Computational mechanics}, + abstract = {SolidsPy is a simple finite element analysis code for + 2D elasticity problems. The code uses as input simple-to-create text + files defining a model in terms of nodal, element, material and + load data.}, + url = {https://github.com/AppliedMechanics-EAFIT/SolidsPy} + } diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml new file mode 100644 index 0000000..d19eb29 --- /dev/null +++ b/conda-recipe/meta.yaml @@ -0,0 +1,47 @@ +{% set name = "solidspy-opt" %} +{% set version = "0.2.0" %} + +package: + name: {{ name|lower }} + version: {{ version }} + +source: + git_url: https://github.com/kssgarcia/SolidsPy.git + git_tag: v{{ version }} + +build: + number: 0 + script: python -m pip install . --no-deps -vv + +requirements: + host: + - python + - pip + run: + - python + - numpy + - scipy + - matplotlib + - easygui + - meshio >=5.0 + +test: + imports: + - solidspy + +about: + home: "https://github.com/yourusername/SolidsPyKevin" + license: "MIT" + license_file: "LICENSE" + summary: "A Python package for finite element analysis." + description: | + SolidsPyKevin is a Python library for performing finite element analysis. + doc_url: "https://github.com/yourusername/SolidsPyKevin#readme" + dev_url: "https://github.com/yourusername/SolidsPyKevin" + +extra: + recipe-maintainers: + - kssgarcia + +channels: + - conda-forge \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..8545201 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = SolidsPy +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/advanced.rst b/docs/advanced.rst new file mode 100644 index 0000000..1b19301 --- /dev/null +++ b/docs/advanced.rst @@ -0,0 +1,12 @@ +Advanced tutorials +==================== + +Here we show some advanced tutorials for SolidsPy. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + advanced/membrane_vibration + + diff --git a/docs/advanced/img/membrane_eigs.png b/docs/advanced/img/membrane_eigs.png new file mode 100644 index 0000000000000000000000000000000000000000..b51672c6bfcbe12dedff620c0f82a811375522d6 GIT binary patch literal 46939 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 P?|$ev6}fmBgWvxfsFHJ_ literal 0 HcmV?d00001 diff --git a/docs/advanced/img/membrane_mode1.png b/docs/advanced/img/membrane_mode1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c5fd77d278f10339b9d6204077ab4740e6d215 GIT binary patch literal 65528 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 literal 0 HcmV?d00001 diff --git a/docs/img/square-4_elements.png b/docs/img/square-4_elements.png new file mode 100755 index 0000000000000000000000000000000000000000..9ad29456ee23262a0054e63505bee3d3059f6825 GIT binary patch literal 24005 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 T)>gvGb+%I{&RSHOyWIFMI%qt! literal 0 HcmV?d00001 diff --git a/docs/img/square-4_elements.svg b/docs/img/square-4_elements.svg new file mode 100755 index 0000000..9b90072 --- /dev/null +++ b/docs/img/square-4_elements.svg @@ -0,0 +1,627 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + (0,0) + (2,2) + 1.0 + 1.0 + 2.0 + + + 0 + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 0 + + + + 1 + + + + 2 + + + + 3 + + + diff --git a/docs/img/template_schematic.pdf b/docs/img/template_schematic.pdf new file mode 100755 index 0000000000000000000000000000000000000000..2c3f1b63e6e5733bfb1a79bd5f675db3859bdf55 GIT binary patch literal 14593 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 bpQ>_pF?4eI6I~D+3kwGVC8fB61j7FTBcx1o literal 0 HcmV?d00001 diff --git a/docs/img/template_schematic.png b/docs/img/template_schematic.png new file mode 100755 index 0000000000000000000000000000000000000000..0106c304dd241dcb49e55737e54d8c4b174c7ad8 GIT binary patch literal 67607 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 IckN&Ne@X_5LjV8( literal 0 HcmV?d00001 diff --git a/docs/img/template_schematic.svg b/docs/img/template_schematic.svg new file mode 100755 index 0000000..0f38092 --- /dev/null +++ b/docs/img/template_schematic.svg @@ -0,0 +1,765 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Material profile 1(Physical surface 100) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Material profile 2(Physical surface 200) + + + Physical line 500 + + + Physical line 300 + + + Physical line 300 + + + Physical line 400 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/img/wrench.png b/docs/img/wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..21fa507b2a5d5330818fa4ef62bee83d0aa7fc7b GIT binary patch literal 98925 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

-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 YduhUZU#e0659;oiyuzWxgZfwg7kjXRi~s-t literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..e4b7c99 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,30 @@ +.. SolidsPy documentation master file, created by + sphinx-quickstart on Mon Apr 16 18:07:33 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SolidsPy's documentation! +==================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + readme + tutorial + installation + usage + advanced + contributing + authors + modules + history + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/installation.rst b/docs/installation.rst new file mode 100644 index 0000000..7ff6542 --- /dev/null +++ b/docs/installation.rst @@ -0,0 +1,25 @@ +Installation +============ + +The code is written in Python and it depends on ``numpy``, ``scipy`` and +``sympy``. It has been tested under Windows, Mac, Linux and Android. + +To install *SolidsPy* open a terminal and type: + +:: + + pip install solidspy + +To specify through a GUI the folder where the input +files are stored you will need to install `easygui `__. + +To easily generate the required SolidsPy text files out of a +`Gmsh `__ model you will need +`meshio `__. + +These two can be installed with: + +:: + + pip install easygui + pip install meshio diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..caa7763 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build +set SPHINXPROJ=SolidsPy + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/modules.rst b/docs/modules.rst new file mode 100644 index 0000000..f20701f --- /dev/null +++ b/docs/modules.rst @@ -0,0 +1,44 @@ +SolidsPy reference +================== + +SolidsPy have the following modules: + + - ``solids_GUI.py``: The main program; + - ``preprocesor.py``: Pre-processing subroutines including + `Gmsh `__ convertion functions using + `meshio `__ + - ``assemutil.py``: Assembly of elemental stiffness matrices ; + - ``femutil.py``: Shape functions, its derivatives and general + finite element method subroutines; + - ``uelutil.py``: Elemental or local matrix subroutines for + different elements; and + - ``postprocesor.py``: Several results handling subroutines. + + +.. automodule:: solids_GUI + :members: + +.. automodule:: assemutil + :members: + +.. automodule:: femutil + :members: + +.. automodule:: gaussutil + :members: + +.. automodule:: preprocesor + :members: + +.. automodule:: postprocesor + :members: + +.. automodule:: solutil + :members: + +.. automodule:: uelutil + :members: + + + + diff --git a/docs/readme.rst b/docs/readme.rst new file mode 100644 index 0000000..72a3355 --- /dev/null +++ b/docs/readme.rst @@ -0,0 +1 @@ +.. include:: ../README.rst diff --git a/docs/tutorial.rst b/docs/tutorial.rst new file mode 100644 index 0000000..40f411c --- /dev/null +++ b/docs/tutorial.rst @@ -0,0 +1,23 @@ +SolidsPy's tutorials +==================== + +Here we show through simple examples how to conduct analyses using +SolidsPy. + +First we describe the structure of the text files for the +problem of small 2×2 square plate under axial loading. In the second part +of the documents we describe the creation of a +SolidsPy model with the aid of `Gmsh `__. This is +necessary when conducting analysis in large and complex geometries. In +this case the Gmsh files need to be converted into text files using +subroutines based upon `meshio `__. + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + tutorials/square_example + tutorials/geometry_gmsh + tutorials/brazilian_test + + diff --git a/docs/tutorials/brazilian_test.rst b/docs/tutorials/brazilian_test.rst new file mode 100644 index 0000000..b02c5a0 --- /dev/null +++ b/docs/tutorials/brazilian_test.rst @@ -0,0 +1,539 @@ +========================================================================== +Geometry in Gmsh and solution with SolidsPy +========================================================================== + +:Author: Nicolás Guarín-Zapata +:Date: September, 2018 + +This document is a tutorial on how to generate a (specific) geometry +using Gmsh [Gmsh2009]_ and its subsequent processing for the generation +of input files for a Finite Element program in Python. This document +does not pretend to be an introduction to the management of Gmsh, +for this we suggest the official tutorial [Gmsh_tut]_ +(for text mode) or the official screencasts [Gmsh_scr]_ +(for the graphical interface). + +Model +===== + +The example to be solved corresponds to the determination of +Efforts in a cylinder in the *Brazilian Test*. The Brazilian Test +is a technique that is used for the indirect measurement of the resistance of +rocks It is a simple and effective technique, and therefore it is commonly used +for rock measurements. Sometimes this test is also used +for concrete [D3967-16]_. + +The following figure presents a scheme of the model to solve. Since the +original model may present rigid body movements, it +decides to use the symmetry of the problem. Then, the problem to +solve is a quarter of the original problem and the surfaces lower e +left present restrictions of *roller*. + +.. figure:: img/Prueba_brasilera.svg + :alt: Schematic of the problem to be solved. + :width: 400 px + + Schematic of the problem to be solved. + +Creation of the geometry and mesh in Gmsh +========================================= + +As a first step, it is suggested to create a new file in Gmsh, as +It shows in the following figure. + +.. figure:: img/Nuevo_archivo.png + :alt: Creation of a new file in Gmsh. + :width: 800 px + + Creation of a new file in Gmsh. + +When creating a new document it is possible [1]_ for Gmsh to ask about which +geometry kernel to use. We will not dwell on what the differences are +and we will use ``built-in``. + +.. figure:: img/Motor_geometrico.png + :alt: Pop-up window asking for the geometry kernel. + :width: 400 px + + Pop-up window asking for the geometry kernel. + +To create a model, we initially create the points. For that, let's go +to the option: ``Geometry> Elementary Entities> Add> Point``, as +shown in the following figure. Then, the coordinates of the +points in the pop-up window and "Add". Finally we can close the +pop-up window and press ``e``. + +.. figure:: img/Agregar_puntos.png + :alt: Agregar puntos al modelo. + :width: 800 px + + Agregar puntos al modelo. + +Later we create lines. For this, we go to the option: +`` Geometry> Elementary Entities> Add> Straight line``, as +shown in the following figure, and we select the initial points and +endings for each line. At the end, we can press ``e``. + +.. figure:: img/Agregar_lineas.png + :alt: Add straight lines to the model. + :width: 800 px + + Add straight lines to the model. + +We also create the circle arcs. For this, we go to the +option: ``Geometry> Elementary Entities> Add> Circle Arc``, as +shown in the following figure, and we select the initial points, +central and final for each arc (in that order). At the end, we can +press ``e``. + +.. figure:: img/Agregar_arcos.png + :alt: Add arcs to the model. + :width: 800 px + + Add arcs to the model. + +Since we already have a closed contour, we can define a surface. +For this, we go to the option: +``Geometry> Elementary Entities> Add> Plane Surface``, as +shown in the following figure, and we select the contours in order. +At the end, we can press `` e``. + +.. figure:: img/Agregar_superficie.png + :alt: Add surfaces. + :width: 800 px + + Add surfaces. + +Now, we need to define *physical groups*. Physical groups allow us to +associate names to different parts of the model such as lines and +surfaces. This will allow us to define the region in which we will resolve +the model (and we will associate a material), the regions that have +restricted movements (boundary conditions) and the regions +on which we will apply the load. In our case we will have 4 groups +physical: + +- Region of the model, where we will define a material; + +- Bottom edge, where we will restrict the displacement in :math:`y`; + +- Left edge, where we will restrict the displacement in :math:`x`; and + +- Top point, where we will apply the point load. + +To define the physical groups we are going to +``Geometry> Physical groups> Add> Plane Surface``, as shown in the +next figure. In this case, we can leave the field of `` Name`` empty +and allow Gmsh to name the groups for us, which will be +numbers that we can then consult in the text file + +.. figure:: img/Agregar_linea_fisica.png + :alt: Add physical groups. + :width: 800 px + + Add physical groups. + +After (slightly) editing the text file (``.geo``) this looks like this + +.. code:: C + + L = 0.1; + + // Points + Point(1) = {0, 0, 0, L}; + Point(2) = {1, 0, 0, L}; + Point(3) = {0, 1, 0, L}; + + // Lines + Line(1) = {3, 1}; + Line(2) = {1, 2}; + Circle(3) = {2, 1, 3}; + + // Surfaces + Line Loop(1) = {2, 3, 1}; + Plane Surface(1) = {1}; + + // Physical groups + Physical Line(1) = {1}; + Physical Line(2) = {2}; + Physical Point(3) = {3}; + Physical Surface(4) = {1}; + +We added a parameter ``L``, which we can vary to +to change the size of the elements when creating the +mesh. + +Now, we proceed to create the mesh. To do this, we go to ``Mesh> 2D``. +As we see in the figure below. + +.. figure:: img/Mallar_2D.png + :alt: Create the mesh. + :width: 800 px + + Create the mesh. + +Additionally, we can change the configuration so that it shows the elements +of the mesh in colors. For this, we are going to +``Tools> Options> Mesh`` and mark the box that indicates +``Surface faces``. + +.. figure:: img/Ver_superficie_malla.png + :alt: Create the mesh. + :width: 800 px + + Create the mesh. + +We can then refine the mesh going to +``Mesh> Refine by Splitting``, or by modifying the ``L`` parameter in the +input file (.geo). As a last step, we want to save the mesh. +To do this, go to ``Mesh> Save``, or ``File> Save Mesh``, as +shows below. + +.. figure:: img/Guardar_malla.png + :alt: Save the ``.msh`` file. + :width: 800 px + + Save the ``.msh`` file. + +Python script to generate input files +===================================== + +We need to create files with the information of the nodes (``nodes.txt``), +elements (``eles.txt``), loads (``loads.txt``) and materials +(``mater.txt``). + +The following code generates the necessary input files for +Run the finite element program in Python. + +.. code-block:: python + + import meshio + import numpy as np + + mesh = meshio.read("Prueba_brasilera.msh") + points = mesh.points + cells = mesh.cells + point_data = mesh.point_data + cell_data = mesh.cell_data + + # Element data + eles = cells["triangle"] + els_array = np.zeros([eles.shape[0], 6], dtype=int) + els_array[:, 0] = range(eles.shape[0]) + els_array[:, 1] = 3 + els_array[:, 3::] = eles + + # Nodes + nodes_array = np.zeros([points.shape[0], 5]) + nodes_array[:, 0] = range(points.shape[0]) + nodes_array[:, 1:3] = points[:, :2] + + # Boundaries + lines = cells["line"] + bounds = cell_data["line"]["gmsh:physical"] + nbounds = len(bounds) + + # Loads + id_cargas = cells["vertex"] + nloads = len(id_cargas) + load = -10e8 # N/m + loads_array = np.zeros((nloads, 3)) + loads_array[:, 0] = id_cargas + loads_array[:, 1] = 0 + loads_array[:, 2] = load + + # Boundary conditions + id_izq = [cont for cont in range(nbounds) if bounds[cont] == 1] + id_inf = [cont for cont in range(nbounds) if bounds[cont] == 2] + nodes_izq = lines[id_izq] + nodes_izq = nodes_izq.flatten() + nodes_inf = lines[id_inf] + nodes_inf = nodes_inf.flatten() + nodes_array[nodes_izq, 3] = -1 + nodes_array[nodes_inf, 4] = -1 + + # Materials + mater_array = np.array([[70e9, 0.35], + [70e9, 0.35]]) + maters = cell_data["triangle"]["gmsh:physical"] + els_array[:, 2] = [1 for mater in maters if mater == 4] + + # Create files + np.savetxt("eles.txt", els_array, fmt="%d") + np.savetxt("nodes.txt", nodes_array, + fmt=("%d", "%.4f", "%.4f", "%d", "%d")) + np.savetxt("loads.txt", loads_array, fmt=("%d", "%.6f", "%.6f")) + np.savetxt("mater.txt", mater_array, fmt="%.6f") + + +Now, let's discuss the different parts of the code to see what it does +each. + +Header and reading the ``.msh`` file +------------------------------------ + +The first part loads the necessary Python modules and reads the file +of mesh that in this case is called ``Prueba_brasilera.msh`` (line 6 and +7). In order for Python to be able to read the file, it must be in the +same directory as the Python file that will process it. + +.. code:: python + + import meshio + import numpy as np + + + mesh = meshio.read("Prueba_brasilera.msh") + points = mesh.points + cells = mesh.cells + point_data = mesh.point_data + cell_data = mesh.cell_data + +Element data +------------ + +The next section of the code creates the data for elements. The line +18 creates a variable `` eles`` with the information of the nodes that +make up each triangle. Line 11 creates an array (filled with zeros) +with the number of rows equal to the number of elements +(``eles.shape[0]``) and 6 columns [2]_. Then we assign a number to +each element, what we do on line 12 with ``range(eles.shape[0])`` +and this we assign to column 0. All +elements are triangles, that's why we should put 3 in column 1. Last, +in this section, we assign the nodes of each element to the array +with (line 19), and this assignment is made from column 3 to +final with ``els_array[:, 3::]``. + +.. code:: python + + # Element data + eles = cells["triangle"] + els_array = np.zeros([eles.shape[0], 6], dtype=int) + els_array[:, 0] = range(eles.shape[0]) + els_array[:, 1] = 3 + els_array[:, 3::] = eles + +Nodes data +---------- + +In the next section we create the information related to the +nodes. To do this, on line 17 we created an array ``nodes_array`` +with 5 columns and as many rows as there are points in the model +(``points.shape[0]``). Then, we assign the +element type on line 18. And finally, we assign the +information on the coordinates of the nodes on line 19 with +``nodes_array[:, 1:3] = points[:, :2]``, where we are adding the +information in columns 1 and 2. + +.. code:: python + + # Nodes + nodes_array = np.zeros([points.shape[0], 5]) + nodes_array[:, 0] = range(points.shape[0]) + nodes_array[:, 1:3] = points[:, :2] + +Boundary data +------------- + +In the next section we find the line information. For this, +we read the ``cells`` information in position ``line`` [3]_ +(line 22). The array ``lines`` +will then have the information of the nodes that form each +line that is on the border of the model. Then, we read the information +of the physical lines (line 23), and we calculate how many lines belong +to the physical lines (line 24). + +.. code:: python + + # Boundaries + lines = cells["line"] + bounds = cell_data["line"]["gmsh:physical"] + nbounds = len(bounds) + +Load data +--------- + +In the next section we must define the information of loads. +In this case, the loads are assigned in a single point that we define as a +physical group. On line 27 we read the nodes (in this case, one). +Then, we create an array that has as many rows as loads (``nloads``) and 3 +columns Assign the number of the node to which each load belongs +(line 31), the charges in :math: `x` (line 32) and the loads in :math:`y` and +(line 33) + +.. code:: python + + # Loads + id_cargas = cells["vertex"] + nloads = len(id_cargas) + load = -10e8 # N/m + loads_array = np.zeros((nloads, 3)) + loads_array[:, 0] = id_cargas + loads_array[:, 1] = 0 + loads_array[:, 2] = load + +Boundary conditions +------------------- + +Now, we will proceed to apply the boundary conditions, that is, the +model regions that have restrictions on displacements. +Initially, we identify which lines have an identifier 1 +(which would be the left side) with + +.. code:: python + + id_izq = [cont for cont in range(nbounds) if bounds[cont] == 1] + +This creates a list with the numbers (``cont``) for which the +condition (``bounds[cont] == 1``). On line 46 we get the nodes that belong to +these lines, however, this array has as many rows as lines +on the left side and two columns. First we return this array as +a one-dimensional array with ``nodes_izq.flatten()``. Later, on line 42, +we assign the value of -1 in the third column of the array for +nodes that belong to the left side. In the same way, this process +is repeated for the nodes at the bottom line. + +.. code:: python + + # Boundary conditions + id_izq = [cont for cont in range(nbounds) if bounds[cont] == 1] + id_inf = [cont for cont in range(nbounds) if bounds[cont] == 2] + nodes_izq = lines[id_izq] + nodes_izq = nodes_izq.flatten() + nodes_inf = lines[id_inf] + nodes_inf = nodes_inf.flatten() + nodes_array[nodes_izq, 3] = -1 + nodes_array[nodes_inf, 4] = -1 + +Materials +--------- + +In the next section we assign the corresponding materials to each +element. In this case, we only have one material. However, it +present the example as if there were two different ones. First, we created a +array with the material information where the first column +represents the Young's module and the second the Poisson's relation (line +46). Then, we read the information of the physical groups of surfaces +on line 48. Finally, we assign the value of 0 to the materials that +have as physical group 4 (see file ``.geo`` above) and 1 to the +others, which in this case will be zero (line 49). This information goes in the +column 2 of the arrangement. + +.. code:: python + + # Materials + mater_array = np.array([[70e9, 0.35], + [70e9, 0.35]]) + maters = cell_data["triangle"]["gmsh:physical"] + els_array[:, 2] = [1 for mater in maters if mater == 4] + +Export files +------------ + +The last section uses the ``numpy`` function to export the +files. + +.. code:: python + + # Create files + np.savetxt("eles.txt", els_array, fmt="%d") + np.savetxt("nodes.txt", nodes_array, + fmt=("%d", "%.4f", "%.4f", "%d", "%d")) + np.savetxt("loads.txt", loads_array, fmt=("%d", "%.6f", "%.6f")) + np.savetxt("mater.txt", mater_array, fmt="%.6f") + +Solution using SolidsPy +======================= + +To solve the model, we can type [4]_ + +.. code:: python + + from solidspy import solids_GUI + disp = solids_GUI() + +After running this program it will appear +a pop-up window as shown below. In this window +the directory we should locate the folder with the input files +generated previously. Keep in mind that the appearance of +this window may vary between operating systems. Also, we have +notef that sometimes the pop-up window may be hidden +by other windows on your desktop. + +.. figure:: img/solids_GUI-ventana.png + :alt: Pop-up window to locate folder with input files. + :width: 600 px + + Pop-up window to locate folder with input files. + + +At this point, the program must solve the model. If the +input files are used without modifications the program should print +a message similar to the following. + +:: + + Number of nodes: 123 + Number of elements: 208 + Number of equations: 224 + Duration for system solution: 0:00:00.086983 + Duration for post processing: 0:00:00 + Analysis terminated successfully! + +the times taken to solve the system can change a bit +from one computer to another. + +As a last step, the program generates graphics with the fields of +displacements, deformations and stresses, as shown in the +next figures. + +.. figure:: img/Prueba_brasilera_ux.svg + :alt: Horizontal displacement. + :width: 400 px + + Horizontal displacement. + +.. figure:: img/Prueba_brasilera_uy.svg + :alt: Vertical displacement. + :width: 400 px + + Vertical displacement. + +References +========== + +.. [D3967-16] + ASTM D3967–16 (2016), Standard Test Method for Splitting Tensile + Strength of Intact Rock Core Specimens, ASTM + International, `www.astm.org `__. + +.. [Gmsh2009] + Geuzaine, Christophe, y Jean-François Remacle (2009), *Gmsh: A 3-D + finite element mesh generator with built-in pre-and post-processing + facilities*. International Journal for Numerical Methods in Engineering, + 79.11. + +.. [Gmsh_tut] + Geuzaine, Christophe, y Jean-François Remacle (2017), Gmsh Official + Tutorial. Accessed: April 18, 2018 + http://gmsh.info/doc/texinfo/gmsh.html#Tutorial. + +.. [Gmsh_scr] + Geuzaine, Christophe, y Jean-François Remacle (2017), Gmsh Official + Screencasts. Accessed: April 18, 2018de + http://gmsh.info/screencasts/. + + +.. [1] + If the version is 3.0 or higher, this pop-up window will appear. + +.. [2] + For quadrilateral elements, 7 columns would be used, since each + Element is defined by 4 nodes. + +.. [3] + ``cells`` is a dictionary and allows to store information associated + with some keywords, in this case it is ``lines``. + +.. [4] + To make use of the graphical interface it must be installed + ``easygui``. diff --git a/docs/tutorials/geometry_gmsh.rst b/docs/tutorials/geometry_gmsh.rst new file mode 100644 index 0000000..552b793 --- /dev/null +++ b/docs/tutorials/geometry_gmsh.rst @@ -0,0 +1,54 @@ +Creation of a simple geometry using Gmsh +======================================== + +:Author: Juan Gómez +:Date: October 2017 + +We want to create a mesh for the following geometry + +.. figure:: ../img/template_schematic.png + :alt: Bilayer model. + + Bilayer model. + +The ``.geo`` file for this model is the following + +.. code:: c + + // Parameters + L = 2.0; + H = 1.0; + h_1 = H/2; + h_2 = H/2; + lado_elem = 0.1; + + + // Points + Point(1) = {0.0, 0.0, 0, lado_elem}; + Point(2) = {L, 0.0, 0, lado_elem}; + Point(3) = {L, h_2, 0, lado_elem}; + Point(4) = {L, H, 0, lado_elem}; + Point(5) = {0, H, 0, lado_elem}; + Point(6) = {0, h_2, 0, lado_elem}; + + // Lines + Line(1) = {1, 2}; + Line(2) = {2, 3}; + Line(3) = {3, 4}; + Line(4) = {4, 5}; + Line(5) = {5, 6}; + Line(6) = {6, 1}; + Line(7) = {3, 6}; + + // Surfaces + Line Loop(8) = {1, 2, 7, 6}; + Plane Surface(9) = {8}; + Line Loop(10) = {-7, 5, 4, 3}; + Plane Surface(11) = {10}; + + // Physical groups + Physical Surface(100) = {9}; // Material superior + Physical Surface(200) = {11}; // Material inferior + Physical Line(300) = {5, 6, 3, 2}; // Lineas laterales + Physical Line(400) = {1}; // Linea inferior + Physical Line(500) = {4}; // Linea superior (cargas) diff --git a/docs/tutorials/img/Agregar_arcos.png b/docs/tutorials/img/Agregar_arcos.png new file mode 100644 index 0000000000000000000000000000000000000000..a27bc04743a229a0cff3a5a9ed37610992539f19 GIT binary patch literal 33113 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/Agregar_linea_fisica.png b/docs/tutorials/img/Agregar_linea_fisica.png new file mode 100644 index 0000000000000000000000000000000000000000..c2288aa14152e77d71707b55fb002d9a7e6284c8 GIT binary patch literal 42562 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

6a29Xv_F1vXeC*VyC+%P~y||?ihTyV$RB9k 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

\"Cantilever
\n", + "\n", + "The analytic solution is given by (see Timoshenko):\n", + "\n", + "$$u = - \\frac{P}{{2EI}}{x^2}y - \\frac{{\\nu P}}{{6EI}}{y^3} + \\frac{P}{{2IG}}{y^3} + \\left( {\\frac{{P{l^2}}}{{2EI}} - \\frac{{P{c^2}}}{{2IG}}} \\right)y$$\n", + "\n", + "$$v = \\frac{{\\nu P}}{{2EI}}x{y^2} + \\frac{P}{{6EI}}{x^3} - \\frac{{P{l^2}}}{{2EI}}x + \\frac{{P{l^3}}}{{3EI}}$$\n", + "\n", + "$${\\varepsilon _{xx}} = \\frac{{\\partial u}}{{\\partial x}} \\equiv - \\frac{P}{{EI}}xy$$\n", + "\n", + "$${\\varepsilon _{yy}} = \\frac{{\\partial v}}{{\\partial y}} \\equiv \\frac{{\\nu P}}{{EI}}xy$$\n", + "\n", + "$${\\gamma _{xy}} = \\frac{{\\partial u}}{{\\partial y}} + \\frac{{\\partial v}}{{\\partial x}} \\equiv \\frac{P}{{2IG}}\\left( {{y^2} - {c^2}} \\right)$$\n", + "\n", + "The following snippet compute the solution for an array of points $x$, $y$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import division, print_function\n", + "import numpy as np\n", + "from scipy.interpolate import griddata\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib import rcParams\n", + "from solidspy.preprocesor import rect_grid\n", + "import solidspy.postprocesor as pos\n", + "import solidspy.assemutil as ass\n", + "import solidspy.solutil as sol" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook\n", + "\n", + "rcParams['figure.figsize'] = 6, 4\n", + "rcParams['font.family'] = 'serif'\n", + "rcParams['font.size'] = 12" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def beam_sln(x, y, nu, P, E, I, L, h):\n", + " \"\"\"Compute the solution for a cantilever beam\n", + "\n", + " Parameters\n", + " ----------\n", + " x : ndarray (float)\n", + " Array with x coordinates.\n", + " y : ndarray (float)\n", + " Array with y coordinates.\n", + " nu : float, (-1, 0.5)\n", + " Poisson coefficient.\n", + " P : float\n", + " Applied force at the end of the beam.\n", + " E : float, >0\n", + " Young modulus.\n", + " I : float, >0\n", + " Moment of inertia.\n", + " L : float, >0\n", + " Length of the beam.\n", + " h : float, >0\n", + " Height of the beam.\n", + "\n", + " Returns\n", + " -------\n", + " u : ndarray (float)\n", + " Horizontal displacement at the nodes.\n", + " v : ndarray (float)\n", + " Vertical displacement at the nodes.\n", + " exx : ndarray (float)\n", + " xx component of the strain tensor.\n", + " eyy : ndarray (float)\n", + " yy component of the strain tensor.\n", + " gammaxy : ndarray (float)\n", + " xy component of the strain tensor.\n", + " \n", + " References\n", + " ----------\n", + " .. [1] Timoshenko, S. & Goodier, J., 1970. Theory of Elasticity,\n", + " McGraw-Hill, 3rd Ed.\n", + "\n", + " \"\"\"\n", + " G = E/(2*(1 + nu))\n", + " c = h/2\n", + " C1 = -P/(2*E*I)\n", + " C2 = -(nu*P)/(6*E*I)\n", + " C3 = P/(2*I*G)\n", + " C4 = (P*L**2)/(2*E*I)\n", + " C5 = -(P*c**2)/(2*I*G)\n", + " C6 = C4 + C5\n", + " C7 = (nu*P)/(2*E*I)\n", + " C8 = P/(6*E*I)\n", + " C9 = -(P*L**2)/(2*E*I)\n", + " C10 = (P*L**3)/(3*E*I)\n", + " B1 = -P/(E*I)\n", + " B2 = (nu*P)/(E*I)\n", + " B3 = P/(2*I*G)\n", + " u = C1*y*x**2 + C2*y**3 + C3*y**3 + (C5 + C6)*y\n", + " v = C7*x*y**2 + C8*x**3 + C9*x + C10\n", + " exx = B1*x*y\n", + " eyy = B2*x*y\n", + " gammaxy = B3*(y**2 - c**2)\n", + "\n", + " return u, v, exx, eyy, gammaxy" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "nu, P, E, I, L, h = 0.3, -50, 1000, 42.67, 24, 4\n", + "x = np.linspace(0, L, 100)\n", + "y = np.linspace(-h, h, 100)\n", + "x, y = np.meshgrid(x, y)\n", + "u, v, exx, eyy, gammaxy = beam_sln(x, y, nu, P, E, I, L, h)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The particular solution for parameters $E=1000.0$, $P=-50$ $\\nu=0.30$, $I=42.67$,\n", + "$l=24$ and $2c=8$ is shown below:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " event.shiftKey = false;\n", + " // Send a \"J\" for go to next cell\n", + " event.which = 74;\n", + " event.keyCode = 74;\n", + " manager.command_mode();\n", + " manager.handle_keydown(event);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plt.contourf(x, y, v, 10)\n", + "plt.axis(\"image\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also want to analyze this problem using the FEM with bilineal square elements under plane stress conditions.\n", + "\n", + "Since this is a structured mesh it is easily generated in a simple function." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "P = -50\n", + "E = 1000\n", + "nu = 0.3\n", + "L = 24\n", + "h = 8\n", + "I = 42.67\n", + "niter = 8\n", + "err = np.zeros((niter))\n", + "hvec = np.zeros((niter))\n", + "mats = np.array([[E, nu]])\n", + "fname = \"error_vs_h.txt\"\n", + "fid = open(fname, \"w\")\n", + "fid.write(\"Iteration, Elements, h, error\\n\")\n", + "fid.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that in the finite elment models the load is applied as nodal point loads of the same magnitud distributed along all the nodes at $x=-12$. This implies a uniform load distribution instead of the parabolic load that is consistent with the shear stress in the analytic solution." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting iteration 1, h=8, 3 elements\n", + "Starting iteration 2, h=4, 12 elements\n", + "Starting iteration 3, h=2, 48 elements\n", + "Starting iteration 4, h=1, 192 elements\n", + "Starting iteration 5, h=0.5, 768 elements\n", + "Starting iteration 6, h=0.25, 3072 elements\n", + "Starting iteration 7, h=0.125, 12288 elements\n", + "Starting iteration 8, h=0.0625, 49152 elements\n" + ] + } + ], + "source": [ + "for cont in range(1, niter + 1):\n", + " print(\"Starting iteration %i, \" % cont +\n", + " \"h=%g, %i elements\" % (8/2**(cont - 1), 3*4**(cont - 1)))\n", + " nx = 3*2**(cont - 1)\n", + " ny = 2**(cont - 1)\n", + " x, y, els = rect_grid(L, h, nx, ny)\n", + " nodes = np.zeros(((nx + 1)*(ny + 1), 5))\n", + " nodes[:, 0] = range((nx + 1)*(ny + 1))\n", + " nodes[:, 1] = x\n", + " nodes[:, 2] = y\n", + " nodes[x==L/2, 3] = -1\n", + " nodes[nx*(ny//2 + 1) - 1, 4] = -1 \n", + " loads = np.zeros((ny + 1, 3))\n", + " loads[:, 0] = nodes[x==-L/2, 0]\n", + " loads[:, 2] = P/ny\n", + "\n", + " # Assembly\n", + " DME, IBC, neq = ass.DME(nodes, els)\n", + " stiff = ass.assembler(els, mats, nodes, neq, DME)\n", + " rhs = ass.loadasem(loads, IBC, neq)\n", + "\n", + " # Solution\n", + " disp = sol.static_sol(stiff, rhs)\n", + " disp_comp = pos.complete_disp(IBC, nodes, disp)\n", + "\n", + " # Interpolation and error evaluation\n", + " if cont > 1:\n", + " disp_interp = np.column_stack([u_interp, v_interp])\n", + " aux = np.linalg.norm(disp_interp - disp_comp)\n", + " err[cont - 1] = aux/np.linalg.norm(disp_comp)\n", + " hvec[cont - 1] = 8*1/2**(cont - 1)\n", + " fid = open(fname, \"a\")\n", + " fid.write(\"%i, %i, %g, %g\\n\" %\n", + " (cont, 3*4**(cont - 1), 8*1/2**(cont - 1), err[cont-1]))\n", + " fid.close()\n", + " \n", + " x_new, y_new, _ = rect_grid(L, h, 2*nx, 2*ny)\n", + " u_interp = griddata((x, y), disp_comp[:, 0], (x_new, y_new))\n", + " v_interp = griddata((x, y), disp_comp[:, 1], (x_new, y_new))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support.' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
')\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " // select the cell after this one\n", + " var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n", + " IPython.notebook.select(index + 1);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Eigenvale')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plt.plot(eigvals_exact, \"ko\")\n", + "plt.plot(eigvals, \"r.\")\n", + "plt.xlabel(\"Eigenvalue number\")\n", + "plt.ylabel(\"Eigenvale\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let us visualize the first vibration mode. For that we first need to complete\n", + "the solution vector with `pos.complete_disp` and then `pos.plot_node_field`." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "sol = pos.complete_disp(bc_array, nodes, eigvecs[:, 0], ndof_node=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "/* Put everything inside the global mpl namespace */\n", + "window.mpl = {};\n", + "\n", + "\n", + "mpl.get_websocket_type = function() {\n", + " if (typeof(WebSocket) !== 'undefined') {\n", + " return WebSocket;\n", + " } else if (typeof(MozWebSocket) !== 'undefined') {\n", + " return MozWebSocket;\n", + " } else {\n", + " alert('Your browser does not have WebSocket support. ' +\n", + " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", + " 'Firefox 4 and 5 are also supported but you ' +\n", + " 'have to enable WebSockets in about:config.');\n", + " };\n", + "}\n", + "\n", + "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", + " this.id = figure_id;\n", + "\n", + " this.ws = websocket;\n", + "\n", + " this.supports_binary = (this.ws.binaryType != undefined);\n", + "\n", + " if (!this.supports_binary) {\n", + " var warnings = document.getElementById(\"mpl-warnings\");\n", + " if (warnings) {\n", + " warnings.style.display = 'block';\n", + " warnings.textContent = (\n", + " \"This browser does not support binary websocket messages. \" +\n", + " \"Performance may be slow.\");\n", + " }\n", + " }\n", + "\n", + " this.imageObj = new Image();\n", + "\n", + " this.context = undefined;\n", + " this.message = undefined;\n", + " this.canvas = undefined;\n", + " this.rubberband_canvas = undefined;\n", + " this.rubberband_context = undefined;\n", + " this.format_dropdown = undefined;\n", + "\n", + " this.image_mode = 'full';\n", + "\n", + " this.root = $('
');\n", + " this._root_extra_style(this.root)\n", + " this.root.attr('style', 'display: inline-block');\n", + "\n", + " $(parent_element).append(this.root);\n", + "\n", + " this._init_header(this);\n", + " this._init_canvas(this);\n", + " this._init_toolbar(this);\n", + "\n", + " var fig = this;\n", + "\n", + " this.waiting = false;\n", + "\n", + " this.ws.onopen = function () {\n", + " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", + " fig.send_message(\"send_image_mode\", {});\n", + " if (mpl.ratio != 1) {\n", + " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", + " }\n", + " fig.send_message(\"refresh\", {});\n", + " }\n", + "\n", + " this.imageObj.onload = function() {\n", + " if (fig.image_mode == 'full') {\n", + " // Full images could contain transparency (where diff images\n", + " // almost always do), so we need to clear the canvas so that\n", + " // there is no ghosting.\n", + " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", + " }\n", + " fig.context.drawImage(fig.imageObj, 0, 0);\n", + " };\n", + "\n", + " this.imageObj.onunload = function() {\n", + " fig.ws.close();\n", + " }\n", + "\n", + " this.ws.onmessage = this._make_on_message_function(this);\n", + "\n", + " this.ondownload = ondownload;\n", + "}\n", + "\n", + "mpl.figure.prototype._init_header = function() {\n", + " var titlebar = $(\n", + " '
');\n", + " var titletext = $(\n", + " '
');\n", + " titlebar.append(titletext)\n", + " this.root.append(titlebar);\n", + " this.header = titletext[0];\n", + "}\n", + "\n", + "\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._init_canvas = function() {\n", + " var fig = this;\n", + "\n", + " var canvas_div = $('
');\n", + "\n", + " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", + "\n", + " function canvas_keyboard_event(event) {\n", + " return fig.key_event(event, event['data']);\n", + " }\n", + "\n", + " canvas_div.keydown('key_press', canvas_keyboard_event);\n", + " canvas_div.keyup('key_release', canvas_keyboard_event);\n", + " this.canvas_div = canvas_div\n", + " this._canvas_extra_style(canvas_div)\n", + " this.root.append(canvas_div);\n", + "\n", + " var canvas = $('');\n", + " canvas.addClass('mpl-canvas');\n", + " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", + "\n", + " this.canvas = canvas[0];\n", + " this.context = canvas[0].getContext(\"2d\");\n", + "\n", + " var backingStore = this.context.backingStorePixelRatio ||\n", + "\tthis.context.webkitBackingStorePixelRatio ||\n", + "\tthis.context.mozBackingStorePixelRatio ||\n", + "\tthis.context.msBackingStorePixelRatio ||\n", + "\tthis.context.oBackingStorePixelRatio ||\n", + "\tthis.context.backingStorePixelRatio || 1;\n", + "\n", + " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", + "\n", + " var rubberband = $('');\n", + " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", + "\n", + " var pass_mouse_events = true;\n", + "\n", + " canvas_div.resizable({\n", + " start: function(event, ui) {\n", + " pass_mouse_events = false;\n", + " },\n", + " resize: function(event, ui) {\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " stop: function(event, ui) {\n", + " pass_mouse_events = true;\n", + " fig.request_resize(ui.size.width, ui.size.height);\n", + " },\n", + " });\n", + "\n", + " function mouse_event_fn(event) {\n", + " if (pass_mouse_events)\n", + " return fig.mouse_event(event, event['data']);\n", + " }\n", + "\n", + " rubberband.mousedown('button_press', mouse_event_fn);\n", + " rubberband.mouseup('button_release', mouse_event_fn);\n", + " // Throttle sequential mouse events to 1 every 20ms.\n", + " rubberband.mousemove('motion_notify', mouse_event_fn);\n", + "\n", + " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", + " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", + "\n", + " canvas_div.on(\"wheel\", function (event) {\n", + " event = event.originalEvent;\n", + " event['data'] = 'scroll'\n", + " if (event.deltaY < 0) {\n", + " event.step = 1;\n", + " } else {\n", + " event.step = -1;\n", + " }\n", + " mouse_event_fn(event);\n", + " });\n", + "\n", + " canvas_div.append(canvas);\n", + " canvas_div.append(rubberband);\n", + "\n", + " this.rubberband = rubberband;\n", + " this.rubberband_canvas = rubberband[0];\n", + " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", + " this.rubberband_context.strokeStyle = \"#000000\";\n", + "\n", + " this._resize_canvas = function(width, height) {\n", + " // Keep the size of the canvas, canvas container, and rubber band\n", + " // canvas in synch.\n", + " canvas_div.css('width', width)\n", + " canvas_div.css('height', height)\n", + "\n", + " canvas.attr('width', width * mpl.ratio);\n", + " canvas.attr('height', height * mpl.ratio);\n", + " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", + "\n", + " rubberband.attr('width', width);\n", + " rubberband.attr('height', height);\n", + " }\n", + "\n", + " // Set the figure to an initial 600x600px, this will subsequently be updated\n", + " // upon first draw.\n", + " this._resize_canvas(600, 600);\n", + "\n", + " // Disable right mouse context menu.\n", + " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", + " return false;\n", + " });\n", + "\n", + " function set_focus () {\n", + " canvas.focus();\n", + " canvas_div.focus();\n", + " }\n", + "\n", + " window.setTimeout(set_focus, 100);\n", + "}\n", + "\n", + "mpl.figure.prototype._init_toolbar = function() {\n", + " var fig = this;\n", + "\n", + " var nav_element = $('
');\n", + " nav_element.attr('style', 'width: 100%');\n", + " this.root.append(nav_element);\n", + "\n", + " // Define a callback function for later on.\n", + " function toolbar_event(event) {\n", + " return fig.toolbar_button_onclick(event['data']);\n", + " }\n", + " function toolbar_mouse_event(event) {\n", + " return fig.toolbar_button_onmouseover(event['data']);\n", + " }\n", + "\n", + " for(var toolbar_ind in mpl.toolbar_items) {\n", + " var name = mpl.toolbar_items[toolbar_ind][0];\n", + " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", + " var image = mpl.toolbar_items[toolbar_ind][2];\n", + " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", + "\n", + " if (!name) {\n", + " // put a spacer in here.\n", + " continue;\n", + " }\n", + " var button = $('');\n", + " button.click(method_name, toolbar_event);\n", + " button.mouseover(tooltip, toolbar_mouse_event);\n", + " nav_element.append(button);\n", + " }\n", + "\n", + " // Add the status bar.\n", + " var status_bar = $('');\n", + " nav_element.append(status_bar);\n", + " this.message = status_bar[0];\n", + "\n", + " // Add the close button to the window.\n", + " var buttongrp = $('
');\n", + " var button = $('');\n", + " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", + " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", + " buttongrp.append(button);\n", + " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", + " titlebar.prepend(buttongrp);\n", + "}\n", + "\n", + "mpl.figure.prototype._root_extra_style = function(el){\n", + " var fig = this\n", + " el.on(\"remove\", function(){\n", + "\tfig.close_ws(fig, {});\n", + " });\n", + "}\n", + "\n", + "mpl.figure.prototype._canvas_extra_style = function(el){\n", + " // this is important to make the div 'focusable\n", + " el.attr('tabindex', 0)\n", + " // reach out to IPython and tell the keyboard manager to turn it's self\n", + " // off when our div gets focus\n", + "\n", + " // location in version 3\n", + " if (IPython.notebook.keyboard_manager) {\n", + " IPython.notebook.keyboard_manager.register_events(el);\n", + " }\n", + " else {\n", + " // location in version 2\n", + " IPython.keyboard_manager.register_events(el);\n", + " }\n", + "\n", + "}\n", + "\n", + "mpl.figure.prototype._key_event_extra = function(event, name) {\n", + " var manager = IPython.notebook.keyboard_manager;\n", + " if (!manager)\n", + " manager = IPython.keyboard_manager;\n", + "\n", + " // Check for shift+enter\n", + " if (event.shiftKey && event.which == 13) {\n", + " this.canvas_div.blur();\n", + " event.shiftKey = false;\n", + " // Send a \"J\" for go to next cell\n", + " event.which = 74;\n", + " event.keyCode = 74;\n", + " manager.command_mode();\n", + " manager.handle_keydown(event);\n", + " }\n", + "}\n", + "\n", + "mpl.figure.prototype.handle_save = function(fig, msg) {\n", + " fig.ondownload(fig, null);\n", + "}\n", + "\n", + "\n", + "mpl.find_output_cell = function(html_output) {\n", + " // Return the cell and output element which can be found *uniquely* in the notebook.\n", + " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", + " // IPython event is triggered only after the cells have been serialised, which for\n", + " // our purposes (turning an active figure into a static one), is too late.\n", + " var cells = IPython.notebook.get_cells();\n", + " var ncells = cells.length;\n", + " for (var i=0; i= 3 moved mimebundle to data attribute of output\n", + " data = data.data;\n", + " }\n", + " if (data['text/html'] == html_output) {\n", + " return [cell, data, j];\n", + " }\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\n", + "// Register the function which deals with the matplotlib target/channel.\n", + "// The kernel may be null if the page has been refreshed.\n", + "if (IPython.notebook.kernel != null) {\n", + " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", + "}\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plot_truss(nodes, eles, mats, color=\"green\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elemental matrices\n", + "\n", + "The first step to solve the problem is to compute the stiffness matrices\n", + "for each member of the truss in global coordinates. These matrices\n", + "are given by\n", + "\n", + "$$K_0 = \\frac{2000}{\\sqrt{3}}\\begin{bmatrix}\n", + "1 &0 &-1 &0\\\\\n", + "0 &0 &0 &0\\\\\n", + "1 &0 &-1 &0\\\\\n", + "0 &0 &0 &0\\end{bmatrix}$$\n", + "\n", + "$$K_1 = 250\\begin{bmatrix}\n", + "3 &-\\sqrt{3} &-3 &\\sqrt{3}\\\\\n", + "\\sqrt{3} &1 &\\sqrt{3} &-1\\\\\n", + "-3 &\\sqrt{3} &3 &-\\sqrt{3}\\\\\n", + "\\sqrt{3} &-1 &-\\sqrt{3} &1\\end{bmatrix}$$\n", + "\n", + "$$K_2 = 2000\\begin{bmatrix}\n", + "0 &0 &0 &0\\\\\n", + "0 &1 &0 &1\\\\\n", + "0 &0 &0 &0\\\\\n", + "0 &-1 &0 &1\\end{bmatrix}$$\n", + "\n", + "We can double-check that this result is correct printing the matrices\n", + "returned by ``uel.ueltruss2D`` from ``solidspy``." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Element 0\n", + " [[ 1155. 0. -1155. 0.]\n", + " [ 0. 0. 0. 0.]\n", + " [-1155. 0. 1155. 0.]\n", + " [ 0. 0. 0. 0.]]\n", + "Element 1\n", + " [[ 750. -433. -750. 433.]\n", + " [-433. 250. 433. -250.]\n", + " [-750. 433. 750. -433.]\n", + " [ 433. -250. -433. 250.]]\n", + "Element 2\n", + " [[ 0. 0. 0. 0.]\n", + " [ 0. 2000. 0. -2000.]\n", + " [ 0. 0. 0. 0.]\n", + " [ 0. -2000. 0. 2000.]]\n" + ] + } + ], + "source": [ + "for cont in range(3):\n", + " Kloc = uel.ueltruss2D(nodes[eles[cont, 3:], 1:3], *mats[cont, :])\n", + " print(\"Element {}\\n\".format(cont), np.round(Kloc))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## System assembly\n", + "\n", + "Once we have the elemental matrices we can form the global system of\n", + "equations to obtain the global matrix.\n", + "\n", + "### Unconstrained matrix\n", + "\n", + "Let's consider, for now, that none of the nodes is contrained. From a\n", + "physics point of view, that might be unsound, since that would render\n", + "the problem undetermined. We will solve that problem later on.\n", + "\n", + "The global matrix (for unconstrained nodes) is\n", + "\n", + "$$K_\\text{total} = 250 \\begin{bmatrix}\n", + "\\frac{8}{\\sqrt{3}} + 3 &-\\sqrt{3} &3 &\\sqrt{3} &-\\frac{8}{\\sqrt{3}} &0\\\\\n", + "-\\sqrt{3} &1 &\\sqrt{3} &-1 &0 &0\\\\\n", + "3 &\\sqrt{3} &3 &-\\sqrt{3} &0 &0\\\\\n", + "\\sqrt{3} &-1 &-\\sqrt{3} &9 &0 &-8\\\\\n", + "-\\frac{8}{\\sqrt{3}} &0 &0 &0 &\\frac{8}{\\sqrt{3}} &0\\\\\n", + "0 &0 &0 &-8 &0 &8\n", + "\\end{bmatrix}$$\n", + "\n", + "To check that step we can use the ``solidspy`` as well, considering a different\n", + "nodes array." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1905. -433. -750. 433. -1155. 0.]\n", + " [ -433. 250. 433. -250. 0. 0.]\n", + " [ -750. 433. 750. -433. 0. 0.]\n", + " [ 433. -250. -433. 2250. 0. -2000.]\n", + " [-1155. 0. 0. 0. 1155. 0.]\n", + " [ 0. 0. 0. -2000. 0. 2000.]]\n" + ] + } + ], + "source": [ + "nodes_uncon = np.array([\n", + " [0, 10*np.sqrt(3)/2, 0.0, 0, 0],\n", + " [1, 0.0, 5.0, 0, 0],\n", + " [2, 0.0, 0.0, 0, 0]])\n", + "DME , IBC , neq = ass.DME(nodes_uncon, eles)\n", + "KG_uncon = ass.assembler(eles, mats, nodes_uncon, neq, DME, sparse=False)\n", + "print(np.round(KG_uncon))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Constrained matrix\n", + "\n", + "In our problem, we are interested in the constrained stiffness matrix.\n", + "First, because the underlying system of equations has a unique solution.\n", + "Second, because that would make it smaller.\n", + "\n", + "The constrained matrix is the following\n", + "\n", + "$$K_\\text{total}^\\text{cons} = 250 \\begin{bmatrix}\n", + "\\frac{8}{\\sqrt{3}} + 3 &-\\sqrt{3} &\\sqrt{3}\\\\\n", + "-\\sqrt{3} &1 &-1 \\\\\n", + "\\sqrt{3} &-1 &9\\\\\n", + "\\end{bmatrix}$$\n", + "\n", + "We can check that result with ``solidspy`` as well." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# System assembly\n", + "DME , IBC , neq = ass.DME(nodes, eles)\n", + "stiff = ass.assembler(eles, mats, nodes, neq, DME, sparse=False)\n", + "load_vec = ass.loadasem(loads, IBC, neq) # right-hand-side" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1905. -433. 433.]\n", + " [-433. 250. -250.]\n", + " [ 433. -250. 2250.]]\n" + ] + } + ], + "source": [ + "print(np.round(stiff))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0. -10. 0.]\n" + ] + } + ], + "source": [ + "print(load_vec)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-0.015 , -0.07098076, -0.005 ])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# System solution\n", + "disp = sol.static_sol(stiff, load_vec)\n", + "disp" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-0.015 , -0.07098076],\n", + " [ 0. , -0.005 ],\n", + " [ 0. , 0. ]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Post-processing\n", + "disp_complete = pos.complete_disp(IBC, nodes, disp)\n", + "disp_complete" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.core.display import HTML\n", + "def css_styling():\n", + " styles = open('../custom_barba.css', 'r').read()\n", + " return HTML(styles)\n", + "css_styling()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:solidspy-dev]", + "language": "python", + "name": "conda-env-solidspy-dev-py" + }, + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/square-4_elements/eles.txt b/examples/square-4_elements/eles.txt new file mode 100755 index 0000000..12b9d8a --- /dev/null +++ b/examples/square-4_elements/eles.txt @@ -0,0 +1,4 @@ +0 1 0 0 4 8 7 +1 1 0 4 1 5 8 +2 1 0 7 8 6 3 +3 1 0 8 5 2 6 diff --git a/examples/square-4_elements/loads.txt b/examples/square-4_elements/loads.txt new file mode 100755 index 0000000..e20757b --- /dev/null +++ b/examples/square-4_elements/loads.txt @@ -0,0 +1,3 @@ +3 0.0 1.0 +6 0.0 2.0 +2 0.0 1.0 diff --git a/examples/square-4_elements/mater.txt b/examples/square-4_elements/mater.txt new file mode 100755 index 0000000..94c5913 --- /dev/null +++ b/examples/square-4_elements/mater.txt @@ -0,0 +1,2 @@ +1.0 0.3 + diff --git a/examples/square-4_elements/nodes.txt b/examples/square-4_elements/nodes.txt new file mode 100755 index 0000000..bf4c841 --- /dev/null +++ b/examples/square-4_elements/nodes.txt @@ -0,0 +1,9 @@ +0 0.00 0.00 0 -1 +1 2.00 0.00 0 -1 +2 2.00 2.00 0 0 +3 0.00 2.00 0 0 +4 1.00 0.00 -1 -1 +5 2.00 1.00 0 0 +6 1.00 2.00 0 0 +7 0.00 1.00 0 0 +8 1.00 1.00 0 0 diff --git a/paper/paper.bib b/paper/paper.bib new file mode 100644 index 0000000..1d1e6d6 --- /dev/null +++ b/paper/paper.bib @@ -0,0 +1,33 @@ +@book{bathe, + title={Finite element procedures}, + author={Bathe, Klaus-J{\"u}rgen}, + year={2006}, + publisher={Klaus-Jurgen Bathe} +} + +@article{gmsh, + title={Gmsh: A 3-D finite element mesh generator with built-in pre-and post-processing facilities}, + author={Geuzaine, Christophe and Remacle, Jean-Fran{\c{c}}ois}, + journal={International journal for numerical methods in engineering}, + volume={79}, + number={11}, + pages={1309--1331}, + year={2009}, + publisher={Wiley Online Library} +} + +@Misc{scipy, + author = {Eric Jones and Travis Oliphant and Pearu Peterson and others}, + title = {{SciPy}: Open source scientific tools for {Python}}, + year = {2001--}, + url = "http://www.scipy.org/", + note = {[Online; accessed June 12, 2018]} +} + +@Misc{meshio, + author = {Nico Schlömer et al.}, + title = {{meshio v1.11.7. Zenodo. http://doi.org/10.5281/zenodo.1173116}}, + year = {2016--}, + url = "https://github.com/nschloe/meshio", + note = {[Online; accessed June 12, 2018]} +} diff --git a/paper/paper.md b/paper/paper.md new file mode 100644 index 0000000..a6fa9ff --- /dev/null +++ b/paper/paper.md @@ -0,0 +1,54 @@ +--- +title: 'SolidsPy: 2D-Finite Element Analysis with Python' +tags: + - Python + - finite elements + - computational mechanics + - scientific computing +authors: + - name: Nicolás Guarín-Zapata + orcid: 0000-0002-9435-1914 + affiliation: 1 + - name: Juan D. Gómez + orcid: 0000-0000-0000-0000 + affiliation: 1 +affiliations: + - name: Departamento de Ingeniería Civil, Universidad EAFIT, Medellín-Colombia + index: 1 +date: 12 June 2018 +bibliography: paper.bib +--- + +# Summary + + +JOSS welcomes submissions from broadly diverse research areas. For this reason, we request that authors include in the paper some sentences that would explain the software functionality and domain of use to a non-specialist reader. Your submission should probably be somewhere between 250-1000 words. + + A list of the authors of the software and their affiliations + A summary describing the high-level functionality and purpose of the software for a diverse, non-specialist audience + A clear statement of need that illustrates the purpose of the software + A list of key references including a link to the software archive + Mentions (if applicable) of any ongoing research projects using the software or recent scholarly publications enabled by it + + +![Displacement and von Mises stress for a wrench under bending.](wrench.png) + +The Finite Element Method is a numerical method for the solution of problems in engineering and physics [@bathe]. These problems are commonly written as boundary value problems and involve partial differential equations. + +``SolidsPy`` is a simple finite element analysis code for 2D elasticity problems and was designed to be used by researchers in computational mechanics and by +students in courses on Computational modeling. It has also been used in graduate +courses on Introduction to the Finite Element Method. It uses as input simple-to-create text files defining a model in terms of nodal, element, material and load data. Some feature of ``SolidsPy`` are: +- It is based on an open-source environment. +- It is easy to use. +- The code allows to find displacement, strain and stress solutions for arbitrary two-dimensional domains discretized into finite elements and subject to point loads. +- The code is organized in independent modules for pre-processing, assembly and post-processing allowing the user to easily modify it or add features like new elements or analyses pipelines. + +``SolidsPy`` uses SciPy [@scipy] for matrix (sparse/dense) storage and solution of systems of equations. For the creation of complex meshes it is suggested to utilize ``Gmsh`` [@gmsh] and then take advantage of ``meshio`` [@meshio] as interface to Gmsh. + + +# Acknowledgements + +We acknowledge contributions from Edward Villegas. + + +# References diff --git a/paper/wrench.png b/paper/wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..21fa507b2a5d5330818fa4ef62bee83d0aa7fc7b GIT binary patch literal 98925 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

-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 YduhUZU#e0659;oiyuzWxgZfwg7kjXRi~s-t literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e7374af --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,55 @@ +[build-system] +requires = ["setuptools >= 68.0.0", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "solidspy-opt" +version = "0.1.0" +description = "This package is made to perfome topology optimization of 2D solids" +readme = "README.md" +authors = [ + {name = "Kevin Sepúlveda-García", email = "kssepulveg@eafit.edu.co"}, + {name = "Nicolas Guarin-Zapata", email = "nguarinz@eafit.edu.co"} +] +license = {file = "LICENSE"} +keywords = ["finite-elements", "scientific-computing", "deep learning", "topology", "optimization"] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Education", + "Topic :: Scientific/Engineering", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", +] + +dependencies = [ + "numpy", + "scipy", + "matplotlib", + "easygui", + "meshio==3.0", + "tensorflow", + "solidspy" +] + +[project.optional-dependencies] +dev = [ + "pytest", + "coverage", + "pytest-cov", + "black", + "flake8", + "solidspy", + "numpy" +] + +[project.urls] +Homepage = "https://github.com/AppliedMechanics-EAFIT/SolidsPy-Opt" +Repository = "https://github.com/AppliedMechanics-EAFIT/SolidsPy-Opt" +BugTracker = "https://github.com/AppliedMechanics-EAFIT/SolidsPy-Opt/issues" + +[tool.setuptools.packages.find] +where = ["src"] + +[tool.pytest.ini_options] +pythonpath = ["src"] + diff --git a/setup.cfg b/setup.cfg new file mode 100755 index 0000000..f487bbf --- /dev/null +++ b/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +# This flag says that the code is written to work on both Python 2 and Python +# 3. If at all possible, it is good practice to do this. If you cannot, you +# will need to generate wheels for each Python version that you support. +universal =1 diff --git a/src/solidspy_opt/Utils/__init__.py b/src/solidspy_opt/Utils/__init__.py new file mode 100644 index 0000000..94ab784 --- /dev/null +++ b/src/solidspy_opt/Utils/__init__.py @@ -0,0 +1,2 @@ +from solidspy_opt.Utils.beams import beam +from solidspy_opt.Utils.solver import protect_els, del_node, volume, sensitivity_elsBESO, adjacency_nodes, center_els, sensitivity_nodes, sensitivity_filter, sensitivity_elsESO, strain_els, protect_elsESO, del_nodeESO, sparse_assem, optimality_criteria, density_filter, center_els \ No newline at end of file diff --git a/src/solidspy_opt/Utils/beams.py b/src/solidspy_opt/Utils/beams.py new file mode 100644 index 0000000..ec7c13e --- /dev/null +++ b/src/solidspy_opt/Utils/beams.py @@ -0,0 +1,145 @@ +import numpy as np +import solidspy.preprocesor as pre + +def beam(L=10, H=10, E=206.8e9, v=0.28, nx=20, ny=20, dirs=np.array([]), positions=np.array([]), n=1): + """ + This function selects the appropriate beam function to call based on the value of n. + + Parameters + ---------- + L : float, optional + Beam's length, by default 10 + H : float, optional + Beam's height, by default 10 + F : float, optional + Vertical force, by default -1000000 + E : float, optional + Young's modulus, by default 206.8e9 + v : float, optional + Poisson's ratio, by default 0.28 + nx : int, optional + Number of elements in the x direction, by default 20 + ny : int, optional + Number of elements in the y direction, by default 20 + n : int, optional + Selector for the beam function to call, by default 1 + + Returns + ------- + ndarray + Nodes array returned by the selected beam function + """ + match n: + case 1: + return beam_1(L, H, E, v, nx, ny, dirs, positions) + case 2: + return beam_2(L, H, E, v, nx, ny, dirs, positions) + + +def beam_1(L=10, H=10, E=206.8e9, v=0.28, nx=20, ny=20, dirs=np.array([]), positions=np.array([])): + """ + Make the mesh for a cuadrilateral model with cantilever beam's constrains. + + Parameters + ---------- + L : float, optional + Length of the beam, by default 10 + H : float, optional + Height of the beam, by default 10 + E : float, optional + Young's modulus, by default 206.8e9 + v : float, optional + Poisson's ratio, by default 0.28 + nx : int, optional + Number of elements in the x direction, by default 20 + ny : int, optional + Number of elements in the y direction, by default 20 + dirs : ndarray, optional + An array with the directions of the loads, by default empty array. [[0,1],[1,0],[0,-1]] + positions : ndarray, optional + An array with the positions of the loads, by default empty array. [[61,30], [1,30], [30, 1]] + + Returns + ------- + nodes : ndarray + Array of nodes + mats : ndarray + Array of material properties + els : ndarray + Array of elements + loads : ndarray + Array of loads + """ + x, y, els = pre.rect_grid(L, H, nx, ny) + mats = np.zeros((els.shape[0], 3)) + mats[:] = [E,v,1] + nodes = np.zeros(((nx + 1)*(ny + 1), 5)) + nodes[:, 0] = range((nx + 1)*(ny + 1)) + nodes[:, 1] = x + nodes[:, 2] = y + mask = (x==-L/2) + nodes[mask, 3:] = -1 + + loads = np.zeros((dirs.shape[0], 3), dtype=int) + node_index = nx*positions[:,0]+(positions[:,0]-positions[:,1]) + + loads[:, 0] = node_index + loads[:, 1] = dirs[:,0] + loads[:, 2] = dirs[:,1] + BC = nodes[mask, 0] + return nodes, mats, els, loads, BC + +def beam_2(L=10, H=10, E=206.8e9, v=0.28, nx=20, ny=20, dirs=np.array([]), positions=np.array([])): + """ + Make the mesh for a cuadrilateral model with simply supported beam's constrains. + + Parameters + ---------- + L : float, optional + Length of the beam, by default 10 + H : float, optional + Height of the beam, by default 10 + E : float, optional + Young's modulus, by default 206.8e9 + v : float, optional + Poisson's ratio, by default 0.28 + nx : int, optional + Number of elements in the x direction, by default 20 + ny : int, optional + Number of elements in the y direction, by default 20 + dirs : ndarray, optional + An array with the directions of the loads, by default empty array. [[0,1],[1,0],[0,-1]] + positions : ndarray, optional + An array with the positions of the loads, by default empty array. [[61,30], [1,30], [30, 1]] + + Returns + ------- + nodes : ndarray + Array of nodes + mats : ndarray + Array of material properties + els : ndarray + Array of elements + loads : ndarray + Array of loads + """ + x, y, els = pre.rect_grid(L, H, nx, ny) + mats = np.zeros((els.shape[0], 3)) + mats[:] = [E,v,1] + nodes = np.zeros(((nx + 1)*(ny + 1), 5)) + nodes[:, 0] = range((nx + 1)*(ny + 1)) + nodes[:, 1] = x + nodes[:, 2] = y + mask_1 = (x == L/2) & (y > H/4) + mask_2 = (x == L/2) & (y < -H/4) + mask = np.bitwise_or(mask_1, mask_2) + nodes[mask, 3:] = -1 + + loads = np.zeros((dirs.shape[0], 3), dtype=int) + node_index = nx*positions[:,0]+(positions[:,0]-positions[:,1]) + + loads[:, 0] = node_index + loads[:, 1] = dirs[:,0] + loads[:, 2] = dirs[:,1] + BC = nodes[mask, 0] + return nodes, mats, els, loads, BC diff --git a/src/solidspy_opt/Utils/solver.py b/src/solidspy_opt/Utils/solver.py new file mode 100644 index 0000000..6631c2d --- /dev/null +++ b/src/solidspy_opt/Utils/solver.py @@ -0,0 +1,501 @@ +import numpy as np +from scipy.sparse import coo_matrix +from scipy.spatial.distance import cdist +import solidspy.uelutil as uel + +def protect_els(els, nels, loads, BC): + """ + Compute an mask array with the elements that don't must be deleted. + + Parameters + ---------- + els : ndarray + Array with models elements + nels : ndarray + Number of elements + loads : ndarray + Array with models loads + BC : ndarray + Boundary conditions nodes + + Returns + ------- + mask_els : ndarray + Array with the elements that don't must be deleted. + """ + mask_els = np.zeros(nels, dtype=bool) + protect_nodes = np.hstack((loads[:,0], BC)).astype(int) + protect_index = None + for p in protect_nodes: + protect_index = np.argwhere(els[:, -4:] == p)[:,0] + mask_els[els[protect_index,0]] = True + + return mask_els + +def del_node(nodes, els, loads, BC): + """ + Retricts nodes dof that aren't been used and free up the nodes that are in use. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + els : ndarray + Array with models elements + loads : ndarray + Array with models loads + BC : ndarray + Boundary conditions nodes + + Returns + ------- + """ + protect_nodes = np.hstack((loads[:,0], BC)).astype(int) + for n in nodes[:,0]: + if n not in els[:, -4:]: + nodes[int(n), -2:] = -1 + elif n not in protect_nodes and n in els[:, -4:]: + nodes[int(n), -2:] = 0 + + +def volume(els, length, height, nx, ny): + """ + Compute volume. + + Parameters + ---------- + els : ndarray + Array with models elements. + length : ndarray + Length of the beam. + height : ndarray + Height of the beam. + nx : float + Number of elements in x direction. + ny : float + Number of elements in y direction. + + Return + ---------- + V: float + Volume of the structure. + """ + + dy = length / nx + dx = height / ny + V = dx * dy * np.ones(els.shape[0]) + + return V + +def sensitivity_elsBESO(nodes, mats, els, mask, UC): + """ + Calculate the sensitivity number for each element. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + mats : ndarray + Array with models materials + els : ndarray + Array with models elements + mask : ndarray + Mask of optimal estructure + UC : ndarray + Displacements at nodes + + Returns + ------- + sensi_number : ndarray + Sensitivity number for each element. + """ + sensi_number = [] + for el in range(els.shape[0]): + if mask[el] == False: + sensi_number.append(0) + continue + params = tuple(mats[els[el, 2], :]) + elcoor = nodes[els[el, -4:], 1:3] + kloc, _ = uel.elast_quad4(elcoor, params) + + node_el = els[el, -4:] + U_el = UC[node_el] + U_el = np.reshape(U_el, (8,1)) + a_i = 0.5 * U_el.T.dot(kloc.dot(U_el))[0,0] + sensi_number.append(a_i) + sensi_number = np.array(sensi_number) + sensi_number = sensi_number/sensi_number.max() + + return sensi_number + +def adjacency_nodes(nodes, els): + """ + Create an adjacency matrix for the elements connected to each node. + + Parameters + ---------- + nodes : ndarray + Array with models nodes. + els : ndarray + Array with models elements. + + Returns + ------- + adj_nodes : ndarray, nodes.shape[0] + Adjacency elements for each node. + """ + adj_nodes = [] + for n in nodes[:, 0]: + adj_els = np.argwhere(els[:, -4:] == n)[:,0] + adj_nodes.append(adj_els) + return adj_nodes + +def center_els(nodes, els): + """ + Calculate the center of each element. + + Parameters + ---------- + nodes : ndarray + Array with models nodes. + els : ndarray + Array with models elements. + + Returns + ------- + centers : ndarray, nodes.shape[0] + Center of each element. + """ + centers = [] + for el in els: + n = nodes[el[-4:], 1:3] + center = np.array([n[1,0] + (n[0,0] - n[1,0])/2, n[2,1] + (n[0,1] - n[2,1])/2]) + centers.append(center) + centers = np.array(centers) + return centers + +def sensitivity_nodes(nodes, adj_nodes, centers, sensi_els): + """ + Calculate the sensitivity of each node. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + adj_nodes : ndarray + Adjacency matrix of nodes + centers : ndarray + Array with center of elements + sensi_els : ndarra + Sensitivity of each element without filter + + Returns + ------- + sensi_nodes : ndarray + Sensitivity of each nodes + """ + sensi_nodes = [] + for n in nodes: + connected_els = adj_nodes[int(n[0])] + if connected_els.shape[0] > 1: + delta = centers[connected_els] - n[1:3] + r_ij = np.linalg.norm(delta, axis=1) # We can remove this line and just use a constant because the distance is always the same + w_i = 1/(connected_els.shape[0] - 1) * (1 - r_ij/r_ij.sum()) + sensi = (w_i * sensi_els[connected_els]).sum(axis=0) + else: + sensi = sensi_els[connected_els[0]] + sensi_nodes.append(sensi) + sensi_nodes = np.array(sensi_nodes) + + return sensi_nodes + +def sensitivity_filter(nodes, centers, sensi_nodes, r_min): + """ + Performe the sensitivity filter. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + sensi_nodes : ndarray + Array with nodal sensitivity + centers : ndarray + Array with center of elements + r_min : ndarra + Minimum distance + + Returns + ------- + sensi_els : ndarray + Sensitivity of each element with filter + """ + sensi_els = [] + for i, c in enumerate(centers): + delta = nodes[:,1:3]-c + r_ij = np.linalg.norm(delta, axis=1) + omega_i = (r_ij < r_min) + w = 1/(omega_i.sum() - 1) * (1 - r_ij[omega_i]/r_ij[omega_i].sum()) + sensi_els.append((w*sensi_nodes[omega_i]).sum()/w.sum()) + + sensi_els = np.array(sensi_els) + sensi_els = sensi_els/sensi_els.max() + + return sensi_els + +def sensitivity_elsESO(nodes, mats, els, UC): + """ + Calculate the sensitivity number for each element. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + mats : ndarray + Array with models materials + els : ndarray + Array with models elements + UC : ndarray + Displacements at nodes + + Returns + ------- + sensi_number : ndarray + Sensitivity number for each element. + """ + sensi_number = [] + for el in range(len(els)): + params = tuple(mats[els[el, 2], :]) + elcoor = nodes[els[el, -4:], 1:3] + kloc, _ = uel.elast_quad4(elcoor, params) + + node_el = els[el, -4:] + U_el = UC[node_el] + U_el = np.reshape(U_el, (8,1)) + a_i = 0.5 * U_el.T.dot(kloc.dot(U_el))[0,0] + sensi_number.append(a_i) + sensi_number = np.array(sensi_number) + sensi_number = sensi_number/sensi_number.max() + + return sensi_number + +def strain_els(els, E_nodes, S_nodes): + """ + Compute the elements strains and stresses. + + Get from: https://github.com/AppliedMechanics-EAFIT/SolidsPy/blob/master/solidspy/solids_GUI.py + + Parameters + ---------- + els : ndarray + Array with models elements + E_nodes : ndarray + Strains at nodes. + S_nodes : ndarray + Stresses at nodes. + + Returns + ------- + E_els : ndarray (nnodes, 3) + Strains at elements. + S_els : ndarray (nnodes, 3) + Stresses at elements. + """ + + E_els = [] + S_els = [] + for el in els: + strain_nodes = np.take(E_nodes, list(el[3:]), 0) + stress_nodes = np.take(S_nodes, list(el[3:]), 0) + strain_elemt = (strain_nodes[0] + strain_nodes[1] + strain_nodes[2] + strain_nodes[3]) / 4 + stress_elemt = (stress_nodes[0] + stress_nodes[1] + stress_nodes[2] + stress_nodes[3]) / 4 + E_els.append(strain_elemt) + S_els.append(stress_elemt) + E_els = np.array(E_els) + S_els = np.array(S_els) + + return E_els, S_els + +def protect_elsESO(els, loads, BC): + """ + Compute an mask array with the elements that don't must be deleted. + + Parameters + ---------- + els : ndarray + Array with models elements + loads : ndarray + Array with models loads + BC : ndarray + Boundary conditions nodes + + Returns + ------- + mask_els : ndarray + Array with the elements that don't must be deleted. + """ + mask_els = np.ones_like(els[:,0], dtype=bool) + protect_nodes = np.hstack((loads[:,0], BC)).astype(int) + protect_index = None + for p in protect_nodes: + protect_index = np.argwhere(els[:, -4:] == p)[:,0] + mask_els[protect_index] = False + + return mask_els + +def del_nodeESO(nodes, els): + """ + Retricts nodes dof that aren't been used. + + Parameters + ---------- + nodes : ndarray + Array with models nodes + els : ndarray + Array with models elements + + Returns + ------- + """ + n_nodes = nodes.shape[0] + for n in range(n_nodes): + if n not in els[:, -4:]: + nodes[n, -2:] = -1 + +def sparse_assem(elements, mats, neq, assem_op, kloc): + """ + Assembles the global stiffness matrix + using a sparse storing scheme + + Parameters + ---------- + elements : ndarray (int) + Array with the number for the nodes in each element. + mats : ndarray (float) + Array with the material profiles. + neq : int + Number of active equations in the system. + assem_op : ndarray (int) + Assembly operator. + uel : callable function (optional) + Python function that returns the local stiffness matrix. + kloc : ndarray + Stiffness matrix of a single element + + Returns + ------- + stiff : sparse matrix (float) + Array with the global stiffness matrix in a sparse + Compressed Sparse Row (CSR) format. + """ + rows = [] + cols = [] + stiff_vals = [] + nels = elements.shape[0] + for ele in range(nels): + kloc_ = kloc * mats[elements[ele, 0], 2] + ndof = kloc.shape[0] + dme = assem_op[ele, :ndof] + for row in range(ndof): + glob_row = dme[row] + if glob_row != -1: + for col in range(ndof): + glob_col = dme[col] + if glob_col != -1: + rows.append(glob_row) + cols.append(glob_col) + stiff_vals.append(kloc_[row, col]) + + stiff = coo_matrix((stiff_vals, (rows, cols)), shape=(neq, neq)).tocsr() + + return stiff + +def optimality_criteria(nelx, nely, rho, d_c, g): + """ + Optimality criteria method. + + Parameters + ---------- + nelx : int + Number of elements in x direction. + nely : int + Number of elements in y direction. + rho : ndarray + Array with the density of each element. + d_c : ndarray + Array with the derivative of the compliance. + g : float + Volume constraint. + + Returns + ------- + rho_new : ndarray + Array with the new density of each element. + gt : float + Volume constraint. + """ + l1=0 + l2=1e9 + move=0.2 + rho_new=np.zeros(nelx*nely) + while (l2-l1)/(l1+l2)>1e-3: + lmid=0.5*(l2+l1) + rho_new[:]= np.maximum(0.0,np.maximum(rho-move,np.minimum(1.0,np.minimum(rho+move,rho*np.sqrt(-d_c/lmid))))) + gt=g+np.sum(((rho_new-rho))) + if gt>0 : + l1=lmid + else: + l2=lmid + return (rho_new, gt) + + + +def density_filter(centers, r_min, rho, d_rho): + """ + Performe the sensitivity filter. + + Parameters + ---------- + centers : ndarray + Array with the centers of each element. + r_min : float + Minimum radius of the filter. + rho : ndarray + Array with the density of each element. + d_rho : ndarray + Array with the derivative of the density of each element. + + Returns + ------- + densi_els : ndarray + Sensitivity of each element with filter + """ + dist = cdist(centers, centers, 'euclidean') + delta = r_min - dist + H = np.maximum(0.0, delta) + densi_els = (rho*H*d_rho).sum(1)/(H.sum(1)*np.maximum(0.001,rho)) + + return densi_els + +def center_els(nodes, els): + """ + Calculate the center of each element. + + Parameters + ---------- + nodes : ndarray + Array with models nodes. + els : ndarray + Array with models elements. + + Returns + ------- + centers : + Centers of each element. + """ + centers = np.zeros((els.shape[0], 2)) + for el in els: + n = nodes[el[-4:], 1:3] + center = np.array([n[1,0] + (n[0,0] - n[1,0])/2, n[2,1] + (n[0,1] - n[2,1])/2]) + centers[int(el[0])] = center + + return centers \ No newline at end of file diff --git a/src/solidspy_opt/__init__.py b/src/solidspy_opt/__init__.py new file mode 100755 index 0000000..902f0c4 --- /dev/null +++ b/src/solidspy_opt/__init__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import + +__all__ = ["models", "optimize"] + +__version__ = "0.1.0" + +__citation__ = """@software{solidspy, + title = {SolidsPy-Opt: 2D-Finite Element optimzation with Python}, + author = {Sepulveda, Kevin and Guarín-Zapata, Nicolás}, + year = 2024, + keywords = {Python, Finite elements, Scientific computing, Computational mechanics, topology optimization}, + abstract = {SolidsPy-Opt.}, + url = {github} +}""" diff --git a/src/solidspy_opt/models.py b/src/solidspy_opt/models.py new file mode 100644 index 0000000..070f5b7 --- /dev/null +++ b/src/solidspy_opt/models.py @@ -0,0 +1,237 @@ +from tensorflow import keras +from tensorflow.keras.models import Model +from tensorflow.keras.layers import Input, Conv2D, BatchNormalization, MaxPooling2D, concatenate, Conv2DTranspose +from tensorflow.keras.models import Sequential +from tensorflow.keras.layers import Conv2D, MaxPooling2D, UpSampling2D, Dense, Flatten +from tensorflow.keras import layers +import tensorflow as tf + +# %% CNN architecture +def CNN_model(input_shape): + ''' + Load the CNN model architecture + + Parameters + ---------- + input_shape : tuple + The shape of the input image + + Returns + ------- + moodel: tensorflow.keras.models.Model + Model architecture + ''' + model = Sequential() + + # Layers down-sampling + model.add(Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=input_shape)) + model.add(MaxPooling2D((2, 2))) + model.add(Conv2D(64, (3, 3), activation='relu', padding='same')) + model.add(MaxPooling2D((2, 2))) + model.add(Conv2D(128, (3, 3), activation='relu', padding='same')) + model.add(MaxPooling2D((3, 3))) + + # Upsampling layers + model.add(Conv2D(128, (3, 3), activation='relu', padding='same')) + model.add(UpSampling2D((3, 3))) + model.add(Conv2D(64, (3, 3), activation='relu', padding='same')) + model.add(UpSampling2D((2, 2))) + model.add(Conv2D(32, (3, 3), activation='relu', padding='same')) + model.add(UpSampling2D((2, 2))) + model.add(Conv2D(1, (1, 1), activation='sigmoid')) + + # Output layer + return model + +# %% CNN with U-NET architecture +def UNN_model(input_shape): + ''' + Load the U-NET model architecture + + Parameters + ---------- + input_shape : tuple + The shape of the input image + + Returns + ------- + moodel: tensorflow.keras.models.Model + Model architecture + ''' + # Input layer + input_tensor = Input(shape=input_shape) + print("After Initial Convolution:", input_tensor.shape) + + # Initial Convolution Layer (No Padding) + initial = Conv2D(32, kernel_size=(2, 2), activation='relu', padding='valid')(input_tensor) + initial = BatchNormalization()(initial) + + # Encoding Blocks + def encoding_block(input_layer, filters): + x = Conv2D(filters, (3, 3), activation='relu', padding='same')(input_layer) + x = BatchNormalization()(x) + x = Conv2D(filters, (3, 3), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + if x.shape[1] == 15: + encoded = MaxPooling2D((3, 3))(x) + else: + encoded = MaxPooling2D((2, 2))(x) + + encoded = layers.Dropout(rate=0.2)(encoded) # New line + return encoded + + encoded1 = encoding_block(initial, filters=64) + encoded2 = encoding_block(encoded1, filters=128) + encoded3 = encoding_block(encoded2, filters=256) + + # Additional Convolution Layers for Feature Maps + x = Conv2D(256, kernel_size=(7, 7), activation='relu', padding='same')(encoded3) + x = BatchNormalization()(x) + x = Conv2D(256, kernel_size=(7, 7), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + + # Decoding Blocks + def decoding_block(input_layer, concat_layer, filters): + x = concatenate([input_layer, concat_layer], axis=-1) + if x.shape[1] == 5: + x = Conv2DTranspose(filters, (3, 3), strides=(3,3), activation='relu', padding='same')(x) + else: + x = Conv2DTranspose(filters, (2, 2), strides=(2,2), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + x = Conv2D(filters, (3, 3), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + + x = layers.Dropout(rate=0.2)(x) # New line + return x + + decoded1 = decoding_block(x, encoded3, filters=128) + decoded2 = decoding_block(decoded1, encoded2, filters=64) + decoded3 = decoding_block(decoded2, encoded1, filters=32) + + # Final Convolution Layers for Element Solution + x = concatenate([decoded3, initial], axis=-1) + x = Conv2D(32, kernel_size=(7, 7), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + x = Conv2D(32, kernel_size=(7, 7), activation='relu', padding='same')(x) + x = BatchNormalization()(x) + + # Output layer with Sigmoid activation for binary classification + output_tensor = Conv2D(1, (1, 1), activation='sigmoid')(x) + print("After Final:", output_tensor.shape) + + # Create the model + model = Model(inputs=input_tensor, outputs=output_tensor) + model.summary() + return model + +# %% ViT architecture +def mlp(x, hidden_units, dropout_rate): + for units in hidden_units: + x = layers.Dense(units, activation=tf.nn.gelu)(x) + x = layers.Dropout(dropout_rate)(x) + return x + +class Patches(layers.Layer): + def __init__(self, patch_size): + super().__init__() + self.patch_size = patch_size + + def call(self, images): + batch_size = tf.shape(images)[0] + patches = tf.image.extract_patches( + images=images, + sizes=[1, self.patch_size, self.patch_size, 1], + strides=[1, self.patch_size, self.patch_size, 1], + rates=[1, 1, 1, 1], + padding="VALID", + ) + patch_dims = patches.shape[-1] + H = patches.shape[1] + patches = tf.reshape(patches, [batch_size, H*H, patch_dims]) + return patches + +class PatchEncoder(layers.Layer): + def __init__(self, num_patches, projection_dim): + super().__init__() + self.num_patches = num_patches + self.projection = layers.Dense(units=projection_dim) + self.position_embedding = layers.Embedding( + input_dim=num_patches, output_dim=projection_dim + ) + + def call(self, patch): + positions = tf.range(start=0, limit=self.num_patches, delta=1) + encoded = self.projection(patch) + self.position_embedding(positions) + return encoded + +def decoding_block(input_layer, filters): + if input_layer.shape[1] == 6: + x = layers.Conv2DTranspose(filters, (5, 5), strides=(5,5), activation='relu', padding='same')(input_layer) + else: + x = layers.Conv2DTranspose(filters, (2, 2), strides=(2, 2), activation='relu', padding='same')(input_layer) + x = layers.BatchNormalization()(x) + x = layers.Conv2D(filters, (3, 3), activation='relu', padding='same')(x) + x = layers.BatchNormalization()(x) + return x + +def ViT_model(input_shape): + ''' + load the ViT model architecture with CNN decoder + + Parameters + ---------- + input_shape : tuple + The shape of the input image + + Returns + ------- + moodel: tensorflow.keras.models.Model + Model architecture + ''' + image_size = 60 # We'll resize input images to this size + patch_size = 10 # Size of the patches to be extract from the input images + num_patches = (image_size // patch_size) ** 2 + projection_dim = 64 + num_heads = 12 + transformer_units = [ + projection_dim * 2, + projection_dim, + ] # Size of the transformer layers + transformer_layers = 15 + inputs = layers.Input(shape=input_shape) + initial = layers.Conv2D(2, kernel_size=(2, 2), activation='relu', padding='valid')(inputs) + # Create patches. + patches = Patches(patch_size)(initial) + # Encode patches. + encoded_patches = PatchEncoder(num_patches, projection_dim)(patches) + + # Create multiple layers of the Transformer block. + for _ in range(transformer_layers): + # Layer normalization 1. + x1 = layers.LayerNormalization(epsilon=1e-6)(encoded_patches) + # Create a multi-head attention layer. + attention_output = layers.MultiHeadAttention( + num_heads=num_heads, key_dim=projection_dim, dropout=0.1 + )(x1, x1) + # Skip connection 1. + x2 = layers.Add()([attention_output, encoded_patches]) + # Layer normalization 2. + x3 = layers.LayerNormalization(epsilon=1e-6)(x2) + # MLP. + x3 = mlp(x3, hidden_units=transformer_units, dropout_rate=0.1) + # Skip connection 2. + encoded_patches = layers.Add()([x3, x2]) + + # Create a [batch_size, projection_dim] tensor. + representation = layers.LayerNormalization(epsilon=1e-6)(encoded_patches) + + resize1 = tf.reshape(representation, [-1, 6, 6, projection_dim]) + + decoded1 = decoding_block(resize1, filters=64) + decoded2 = decoding_block(decoded1, filters=32) + + output_tensor = layers.Conv2D(1, (1, 1), activation='sigmoid')(decoded2) + + model = keras.Model(inputs=inputs, outputs=output_tensor) + model.summary() + return model diff --git a/src/solidspy_opt/optimize.py b/src/solidspy_opt/optimize.py new file mode 100644 index 0000000..554826a --- /dev/null +++ b/src/solidspy_opt/optimize.py @@ -0,0 +1,465 @@ +# %% +import matplotlib.pyplot as plt +from matplotlib import colors +import numpy as np +from scipy.sparse.linalg import spsolve + +from solidspy_opt.Utils.beams import * +from solidspy_opt.Utils.solver import * + +import solidspy.assemutil as ass +import solidspy.postprocesor as pos +np.seterr(divide='ignore', invalid='ignore') + +# %% ESO stress based + +def ESO_stress(length, height, nx, ny, dirs, positions, niter, RR, ER, volfrac, plot=False): + """ + Performs Evolutionary Structural Optimization (ESO) based on stress for a beam structure. + + Parameters + ---------- + length : float + The length of the beam. + height : float + The height of the beam. + nx : int + The number of elements in the x direction. + ny : int + The number of elements in the y direction. + dirs : list + List of directions. + positions : list + List of positions. + niter : int + The number of iterations for the ESO process. + RR : float + The relative stress threshold for removing elements. + ER : float + The increment of RR for each iteration. + volfrac : float + The volume fraction for the optimal structure. + plot : bool, optional + If True, plot the initial and optimized mesh. Defaults to False. + + Returns + ------- + ELS: ndarray + The optimized elements of the structure. + nodes: ndarray + The optimized nodes of the structure. + """ + nodes, mats, els, loads, BC = beam(L=length, H=height, nx=nx, ny=ny, dirs=dirs, positions=positions, n=1) + elsI = np.copy(els) + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UCI = pos.complete_disp(IBC, nodes, disp) + E_nodesI, S_nodesI = pos.strain_nodes(nodes, els, mats[:,:2], UCI) + + V_opt = volume(els, length, height, nx, ny).sum() * volfrac # Optimal volume + + ELS = None + for _ in range(niter): + print("Number of elements: {}".format(els.shape[0])) + + # Check equilibrium + if not np.allclose(stiff_mat.dot(disp)/stiff_mat.max(), rhs_vec/stiff_mat.max()) or volume(els, length, height, nx, ny).sum() < V_opt: + print('hollaa') + break + + ELS = els + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UC = pos.complete_disp(IBC, nodes, disp) + E_nodes, S_nodes = pos.strain_nodes(nodes, els, mats[:,:2], UC) + E_els, S_els = strain_els(els, E_nodes, S_nodes) # Calculate strains and stresses in elements + + vons = np.sqrt(S_els[:,0]**2 - (S_els[:,0]*S_els[:,1]) + S_els[:,1]**2 + 3*S_els[:,2]**2) + + # Remove/add elements + RR_el = vons/vons.max() # Relative stress + mask_del = RR_el < RR # Mask for elements to be deleted + mask_els = protect_elsESO(els, loads, BC) # Mask of elements to do not remove + mask_del *= mask_els + els = np.delete(els, mask_del, 0) # Delete elements + del_nodeESO(nodes, els) # Remove nodes + + RR += ER + + if plot: + pos.fields_plot(elsI, nodes, UCI, E_nodes=E_nodesI, S_nodes=S_nodesI) # Plot initial mesh + pos.fields_plot(ELS, nodes, UC, E_nodes=E_nodes, S_nodes=S_nodes) # Plot optimized mesh + + fill_plot = np.ones(E_nodes.shape[0]) + plt.figure() + tri = pos.mesh2tri(nodes, ELS) + plt.tricontourf(tri, fill_plot, cmap='binary') + plt.axis("image"); + + return ELS, nodes + + +# %% Eso stiff based + +def ESO_stiff(length, height, nx, ny, dirs, positions, niter, RR, ER, volfrac, plot=False): + """ + Performs Evolutionary Structural Optimization (ESO) based on stiff for a beam structure. + + Parameters + ---------- + length : float + The length of the beam. + height : float + The height of the beam. + nx : int + The number of elements in the x direction. + ny : int + The number of elements in the y direction. + dirs : list + List of directions. + positions : list + List of positions. + niter : int + The number of iterations for the ESO process. + RR : float + The relative stress threshold for removing elements. + ER : float + The increment of RR for each iteration. + volfrac : float + The volume fraction for the optimal structure. + plot : bool, optional + If True, plot the initial and optimized mesh. Defaults to False. + + Returns + ------- + ELS: ndarray + The optimized elements of the structure. + nodes: ndarray + The optimized nodes of the structure. + """ + nodes, mats, els, loads, BC = beam(L=length, H=height, nx=nx, ny=ny, dirs=dirs, positions=positions, n=1) + elsI= np.copy(els) + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UCI = pos.complete_disp(IBC, nodes, disp) + E_nodesI, S_nodesI = pos.strain_nodes(nodes, els, mats[:,:2], UCI) + + niter = 200 + RR = 0.005 # Initial removal ratio + ER = 0.05 # Removal ratio increment + V_opt = volume(els, length, height, nx, ny).sum() * volfrac # Optimal volume + ELS = None + for _ in range(niter): + # Check equilibrium + if not np.allclose(stiff_mat.dot(disp)/stiff_mat.max(), rhs_vec/stiff_mat.max()) or volume(els, length, height, nx, ny).sum() < V_opt: + break # Check equilibrium/volume and stop if not + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UC = pos.complete_disp(IBC, nodes, disp) + E_nodes, S_nodes = pos.strain_nodes(nodes, els, mats[:,:2], UC) + E_els, S_els = strain_els(els, E_nodes, S_nodes) # Calculate strains and stresses in elements + print("Number of elements: {}".format(els.shape[0])) + + # Compute Sensitivity number + sensi_number = sensitivity_elsESO(nodes, mats, els, UC) # Sensitivity number + mask_del = sensi_number < RR # Mask of elements to be removed + mask_els = protect_elsESO(els, loads, BC) # Mask of elements to do not remove + mask_del *= mask_els # Mask of elements to be removed and not protected + ELS = els # Save last iteration elements + + # Remove/add elements + els = np.delete(els, mask_del, 0) # Remove elements + del_nodeESO(nodes, els) # Remove nodes + + RR += ER + + if plot: + pos.fields_plot(elsI, nodes, UCI, E_nodes=E_nodesI, S_nodes=S_nodesI) # Plot initial mesh + pos.fields_plot(ELS, nodes, UC, E_nodes=E_nodes, S_nodes=S_nodes) # Plot optimized mesh + + fill_plot = np.ones(E_nodes.shape[0]) + plt.figure() + tri = pos.mesh2tri(nodes, ELS) + plt.tricontourf(tri, fill_plot, cmap='binary') + plt.axis("image"); + + return ELS, nodes + + +# %% BESO + +def BESO(length, height, nx, ny, dirs, positions, niter, t, ER, volfrac, plot=False): + """ + Performs Evolutionary Structural Optimization (ESO) based on stiff for a beam structure. + + Parameters + ---------- + length : float + The length of the beam. + height : float + The height of the beam. + nx : int + The number of elements in the x direction. + ny : int + The number of elements in the y direction. + dirs : list + List of directions. + positions : list + List of positions. + niter : int + The number of iterations for the ESO process. + t : float + Threshold for error. + ER : float + The increment of RR for each iteration. + volfrac : float + The volume fraction for the optimal structure. + plot : bool, optional + If True, plot the initial and optimized mesh. Defaults to False. + + Returns + ------- + ELS: ndarray + The optimized elements of the structure. + nodes: ndarray + The optimized nodes of the structure. + """ + nodes, mats, els, loads, BC = beam(L=length, H=height, nx=nx, ny=ny, dirs=dirs, positions=positions, n=1) + elsI = np.copy(els) + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UCI = pos.complete_disp(IBC, nodes, disp) + E_nodesI, S_nodesI = pos.strain_nodes(nodes, els, mats[:,:2], UCI) + + r_min = np.linalg.norm(nodes[0,1:3] - nodes[1,1:3]) * 1 # Radius for the sensitivity filter + adj_nodes = adjacency_nodes(nodes, els) # Adjacency nodes + centers = center_els(nodes, els) # Centers of elements + + Vi = volume(els, length, height, nx, ny) # Initial volume + V_opt = Vi.sum() * volfrac # Optimal volume + + # Initialize variables. + ELS = None + mask = np.ones(els.shape[0], dtype=bool) # Mask of elements to be removed + sensi_I = None + C_h = np.zeros(niter) # History of compliance + error = 1000 + + for i in range(niter): + print("Number of elements: {}".format(els.shape[0])) + + # Calculate the optimal design array elements + els_del = els[mask].copy() # Elements to be removed + V = Vi[mask].sum() # Volume of the structure + + # Check equilibrium + if not np.allclose(stiff_mat.dot(disp)/stiff_mat.max(), rhs_vec/stiff_mat.max()) or volume(els, length, height, nx, ny).sum() < V_opt: + break + + # Storage the solution + ELS = els_del + + # System assembly + assem_op, IBC, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + stiff_mat, _ = ass.assembler(els, mats, nodes[:, :3], neq, assem_op) + rhs_vec = ass.loadasem(loads, IBC, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UC = pos.complete_disp(IBC, nodes, disp) + E_nodes, S_nodes = pos.strain_nodes(nodes, els, mats[:,:2], UC) + E_els, S_els = strain_els(els, E_nodes, S_nodes) # Calculate strains and stresses in elements + + # Sensitivity filter + sensi_e = sensitivity_elsBESO(nodes, mats, els, mask, UC) # Calculate the sensitivity of the elements + sensi_nodes = sensitivity_nodes(nodes, adj_nodes, centers, sensi_e) # Calculate the sensitivity of the nodes + sensi_number = sensitivity_filter(nodes, centers, sensi_nodes, r_min) # Perform the sensitivity filter + + # Average the sensitivity numbers to the historical information + if i > 0: + sensi_number = (sensi_number + sensi_I)/2 # Average the sensitivity numbers to the historical information + sensi_number = sensi_number/sensi_number.max() # Normalize the sensitivity numbers + + # Check if the optimal volume is reached and calculate the next volume + V_r = False + if V <= V_opt: + els_k = els_del.shape[0] + V_r = True + break + else: + V_k = V * (1 + ER) if V < V_opt else V * (1 - ER) + + # Remove/add threshold + sensi_sort = np.sort(sensi_number)[::-1] # Sort the sensitivity numbers + els_k = els_del.shape[0]*V_k/V # Number of elements to be removed + alpha_del = sensi_sort[int(els_k)] # Threshold for removing elements + + # Remove/add elements + mask = sensi_number > alpha_del # Mask of elements to be removed + mask_els = protect_els(els[np.invert(mask)], els.shape[0], loads, BC) # Mask of elements to be protected + mask = np.bitwise_or(mask, mask_els) + del_node(nodes, els[mask], loads, BC) # Delete nodes + + # Calculate the strain energy and storage it + C = 0.5*rhs_vec.T@disp + C_h[i] = C + if i > 10: error = C_h[i-5:].sum() - C_h[i-10:-5].sum()/C_h[i-5:].sum() + + # Check for convergence + if error <= t and V_r == True: + print("convergence") + break + + # Save the sensitvity number for the next iteration + sensi_I = sensi_number.copy() + + if plot: + pos.fields_plot(elsI, nodes, UCI, E_nodes=E_nodesI, S_nodes=S_nodesI) # Plot initial mesh + pos.fields_plot(ELS, nodes, UC, E_nodes=E_nodes, S_nodes=S_nodes) # Plot optimized mesh + + fill_plot = np.ones(E_nodes.shape[0]) + plt.figure() + tri = pos.mesh2tri(nodes, ELS) + plt.tricontourf(tri, fill_plot, cmap='binary') + plt.axis("image"); + + return ELS, nodes + +# %% SIMP + +def SIMP(length, height, nx, ny, dirs, positions, niter, penal, plot=False): + """ + Performs Solid Isotropic Material with Penalization (SIMP) for topology optimization. + + Parameters + ---------- + length : float + The length of the beam. + height : float + The height of the beam. + nx : int + The number of elements in the x direction. + ny : int + The number of elements in the y direction. + dirs : list + List of directions. + positions : list + List of positions. + niter : int + The number of iterations for the SIMP process. + penal : float + Penalization factor used in the SIMP method. + plot : bool, optional + If True, plot the initial and optimized mesh. Defaults to False. + + Returns + ------- + rho: ndarray + The optimized density distribution of the structure. + """ + # Initialize variables + Emin=1e-9 # Minimum young modulus of the material + Emax=1.0 # Maximum young modulus of the material + + nodes, mats, els, loads, _ = beam(L=length, H=height, nx=nx, ny=ny, dirs=dirs, positions=positions, n=1) + + # Initialize the design variables + change = 10 # Change in the design variable + g = 0 # Constraint + rho = 0.5 * np.ones(ny*nx, dtype=float) # Initialize the density + sensi_rho = np.ones(ny*nx) # Initialize the sensitivity + rho_old = rho.copy() # Initialize the density history + d_c = np.ones(ny*nx) # Initialize the design change + + r_min = np.linalg.norm(nodes[0,1:3] - nodes[1,1:3]) * 4 # Radius for the sensitivity filter + centers = center_els(nodes, els) # Calculate centers + E = mats[0,0] # Young modulus + nu = mats[0,1] # Poisson ratio + k = np.array([1/2-nu/6,1/8+nu/8,-1/4-nu/12,-1/8+3*nu/8,-1/4+nu/12,-1/8-nu/8,nu/6,1/8-3*nu/8]) # Coefficients + kloc = E/(1-nu**2)*np.array([ [k[0], k[1], k[2], k[3], k[4], k[5], k[6], k[7]], + [k[1], k[0], k[7], k[6], k[5], k[4], k[3], k[2]], + [k[2], k[7], k[0], k[5], k[6], k[3], k[4], k[1]], + [k[3], k[6], k[5], k[0], k[7], k[2], k[1], k[4]], + [k[4], k[5], k[6], k[7], k[0], k[1], k[2], k[3]], + [k[5], k[4], k[3], k[2], k[1], k[0], k[7], k[6]], + [k[6], k[3], k[4], k[1], k[2], k[7], k[0], k[5]], + [k[7], k[2], k[1], k[4], k[3], k[6], k[5], k[0]]]); # Local stiffness matrix + assem_op, bc_array, neq = ass.DME(nodes[:, -2:], els, ndof_el_max=8) + + iter = 0 + for _ in range(niter): + iter += 1 + + # Check convergence + if change < 0.01: + print('Convergence reached') + break + + + # Change density + mats[:,2] = Emin+rho**penal*(Emax-Emin) + + # System assembly + stiff_mat = sparse_assem(els, mats, neq, assem_op, kloc) + rhs_vec = ass.loadasem(loads, bc_array, neq) + + # System solution + disp = spsolve(stiff_mat, rhs_vec) + UC = pos.complete_disp(bc_array, nodes, disp) + + compliance = rhs_vec.T.dot(disp) + + # Sensitivity analysis + sensi_rho[:] = (np.dot(UC[els[:,-4:]].reshape(nx*ny,8),kloc) * UC[els[:,-4:]].reshape(nx*ny,8) ).sum(1) + d_c[:] = (-penal*rho**(penal-1)*(Emax-Emin))*sensi_rho + d_c[:] = density_filter(centers, r_min, rho, d_c) + + # Optimality criteria + rho_old[:] = rho + rho[:], g = optimality_criteria(nx, ny, rho, d_c, g) + + # Compute the change + change = np.linalg.norm(rho.reshape(nx*ny,1)-rho_old.reshape(nx*ny,1),np.inf) + + # Check equilibrium + if not np.allclose(stiff_mat.dot(disp)/stiff_mat.max(), rhs_vec/stiff_mat.max()): + break + + if plot: + plt.ion() + fig,ax = plt.subplots() + ax.imshow(-rho.reshape(nx,ny), cmap='gray', interpolation='none',norm=colors.Normalize(vmin=-1,vmax=0)) + ax.set_title('Predicted') + fig.show() + + return rho \ No newline at end of file diff --git a/tests/test_optimize.py b/tests/test_optimize.py new file mode 100755 index 0000000..a8b19f4 --- /dev/null +++ b/tests/test_optimize.py @@ -0,0 +1,102 @@ +# -*- coding: utf-8 -*- +""" +Test cases for functions on ``assemutil`` module + +""" +import numpy as np +import solidspy_opt +import unittest + +import solidspy_opt.optimize + +class TestSolidsPyOpt(unittest.TestCase): + def setUp(self): + # Common parameters for the tests + self.length = 60 + self.height = 60 + self.nx = 60 + self.ny = 60 + self.dirs = np.array([[0, -1]]) + self.positions = np.array([[15, 1]]) + self.niter = 50 # Reduced for testing efficiency + self.penal = 3 + self.volfrac = 0.5 + self.RR = 0.005 + self.ER = 0.05 + self.t = 1e-3 + + def test_SIMP(self): + """Test SIMP functionality.""" + rho = solidspy_opt.optimize.SIMP( + self.length, + self.height, + self.nx, + self.ny, + self.dirs, + self.positions, + self.niter, + self.penal, + plot=False + ) + self.assertIsInstance(rho, np.ndarray, "SIMP should return a numpy array.") + self.assertEqual(rho.size, self.nx * self.ny, "Density array size should match the number of elements.") + + def test_ESO_stress(self): + """Test ESO based on stress.""" + els, nodes = solidspy_opt.optimize.ESO_stress( + self.length, + self.height, + self.nx, + self.ny, + self.dirs, + self.positions, + self.niter, + self.RR, + self.ER, + self.volfrac, + plot=False + ) + self.assertIsInstance(els, np.ndarray, "ESO_stress should return an array of elements.") + self.assertIsInstance(nodes, np.ndarray, "ESO_stress should return an array of nodes.") + self.assertTrue(els.size > 0, "The element array should not be empty.") + + def test_ESO_stiff(self): + """Test ESO based on stiffness.""" + els, nodes = solidspy_opt.optimize.ESO_stiff( + self.length, + self.height, + self.nx, + self.ny, + self.dirs, + self.positions, + self.niter, + self.RR, + self.ER, + self.volfrac, + plot=False + ) + self.assertIsInstance(els, np.ndarray, "ESO_stiff should return an array of elements.") + self.assertIsInstance(nodes, np.ndarray, "ESO_stiff should return an array of nodes.") + self.assertTrue(els.size > 0, "The element array should not be empty.") + + def test_BESO(self): + """Test Bi-directional ESO.""" + els, nodes = solidspy_opt.optimize.BESO( + self.length, + self.height, + self.nx, + self.ny, + self.dirs, + self.positions, + self.niter, + self.t, + self.ER, + self.volfrac, + plot=False + ) + self.assertIsInstance(els, np.ndarray, "BESO should return an array of elements.") + self.assertIsInstance(nodes, np.ndarray, "BESO should return an array of nodes.") + self.assertTrue(els.size > 0, "The element array should not be empty.") + +if __name__ == "__main__": + unittest.main()

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 S2C*FCML8)Y$*<2}2mOC-`5*59 literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/Agregar_superficie.png b/docs/tutorials/img/Agregar_superficie.png new file mode 100644 index 0000000000000000000000000000000000000000..0fae68eb837737a1536be9da43d76b4ff7530507 GIT binary patch literal 41121 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 JPDHLkV1oSV*|`7! literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/Mallar_2D.png b/docs/tutorials/img/Mallar_2D.png new file mode 100644 index 0000000000000000000000000000000000000000..7ce058c27cd67d076834b0292a4ddb818096824d GIT binary patch literal 30613 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≀>>ih(}E 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/Nuevo_archivo.png b/docs/tutorials/img/Nuevo_archivo.png new file mode 100644 index 0000000000000000000000000000000000000000..b391da15163f2a4efd6e416572d28679195bbf0f GIT binary patch literal 31679 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 literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/Prueba_brasilera.pdf b/docs/tutorials/img/Prueba_brasilera.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4583d02c8cea2782ac670529a86fd9eaca64bfad GIT binary patch literal 8541 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 + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + Q + Q + Q + + diff --git a/docs/tutorials/img/Prueba_brasilera_ux.svg b/docs/tutorials/img/Prueba_brasilera_ux.svg new file mode 100644 index 0000000..d2fb3b4 --- /dev/null +++ b/docs/tutorials/img/Prueba_brasilera_ux.svg @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tutorials/img/Prueba_brasilera_uy.svg b/docs/tutorials/img/Prueba_brasilera_uy.svg new file mode 100644 index 0000000..236aa83 --- /dev/null +++ b/docs/tutorials/img/Prueba_brasilera_uy.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tutorials/img/Ver_superficie_malla.png b/docs/tutorials/img/Ver_superficie_malla.png new file mode 100644 index 0000000000000000000000000000000000000000..a694a0eab4e44967267d33032806635b92a26b05 GIT binary patch literal 47906 zcmbTec_5U1+de*H$wbOTRES2UZp)xTSre%{QdGz?B1v{)Y_lX=l%<92Dp|6VvCk-3 zipahU#=Z<@Y-5=*GvABu`+1-D{r&g*qp9Iq&g=Y~%W)i^^XmD{8~XgbM|nXY5dXES zy2c<77Y7K$Q3Tlo{Dfm=cp3N$>}9O411e|}n*+XZIb1Tl1OgRD^KIYf2EOlgziRFU z0v&v^^9MZgP{J1ksw%&xd+D~X^&->h#d&jdJl`pu+k9Js2X&+}R-ZoGpVpRjh4y&m zt*Xw^D^eIWsS|t&(8*S@lM_b*ZR)g%o1y$EL!p8E$`uZENaq6=#@*{~EKqR6<(~_j zdYOr|yQWCmr>d%|T+0Ia`1zHB=j?mMwuNQ34c_|Sqs->Fyfv89QD(*CscI~v?<0O| zxdb}<&T;ly7WxX)%?N#)nTy%rBRiny;(G{Nm59zld*3`1f)&P|YwBh*W-!-MSj|S+ zgiZE#7FmSNEYv0PkIh6*F(g=75~f=07QzQsqZa)PjlghX-(+?Zm?4jd#oP0?YVYjX z8|0Y?dscDUW;uD9y(N*2xw*~2Fgh?ftOM+gXfg(~;()%jswL90Ji{u~%5+67%zR*? z7VIQUwAg%vbQTlNUU`%e-S7S`8pCj7TRrh5fA3|m*PgL&q_8n)zf-K|bVA?^@-vl= zPm6kywBJ0;y*6{4v|WeHrONhxU1Hy4pXhw}n8hNo869ILW9#iTjb|UC32Rg~>J4K1 z6JljE1hK96vW5VW*lO1AZf9<{=cX|$(@Zc_DpP}5xO7&FQF@*=+`ipvy`4f>MSjp~ zZ+NwO-P`)xm(@*0Z#sc3PeW-zMUlSf6=}?07sWu5-nLYRr-pk5*cK)>_L6u)w4=Q;umYdDp$!h-jKJq`ac_uWmdC)Yp>AuI%RhUGE_ccbI_ z*(>pcJZtopJ?#@5bq%!~iMS1~U3)dnhu8#i4s;?MRT#g4@?*z4f&a&x1xIXVG*`bg zSeK)D7*ot#IR)1v)GW7z)J4Ma*{&pfzP0Zdw>JuvpNe7m(T2R*9aB;3=D_v(Rom59 z4MM~plIEvSh!OVGMeTyU0${+I%|Df<9YI^FSoOV<2S+ih6Yap^pmRZgJRSEAGE27x zZE1qGPVXGywgj94Ic|9AkAos*z=^uRLady_ZhM2aB6t1~$T|Sk239`?w;;zcxf<^2 z0h|yV<9JY$e>4Ky-vwH)22YAUo#K1Cdw+;yi#1GJ-dJ;^vOOn_Igln7wsVIEq+nS3 zJYbj^cKhwlXCPPrhTZv%%fNN6X7RmHFotf#p7Y#^Go5wAB#1jf@@DFu82H{V5_~aQ zdrx4Ffc~}PB*&zDa5(nkM=9D;{ek$)dv{{f2(X-KhGkyG)*K)bgqMEG6wYdioW=-4 z{yFW1Fxb;n=a}9X*eIOUK*)yQUH=)Gc3Xnc-xR31WqZN%XW(@!t3ZQa9klWSdGh>C zcMn>AiQYSr9%(I~_lZ{yP~B2%Hh)~08Nl-oO?(@6C^6_!uB`ZL{qyTlvz55o_XLGZ zcHC5Fi`AEeQSDBKpSG3>jz)ks?7&7$I>DIW+um}ItAcc3sR53@#ZDPjgkh=MJKkCOaT+Qq zauNmxyl@EoO^e~c&U02gm#I)F0%~Y5H5)a2m7u4cKT%@ieA<0b-ll0yMSmLK?6!#D z-LMgzT{IRKom!sw;R{Q482flAI$W&g;R*@zZx2fIPhn}guo^azgl`#O!6;V zXpO0&_O;4#P7kSsjZnSXF>|OR5!fXLIF(+8`Gj8fLUdB=*BM|uy{C{2=MAJ(&g_W< zB}kCAE(41>`T7>D4t+{d2#gsw+TM%Ow|%tz!S%VU9LEWoZQ0NAf`}j`JnJJp>3At( zvfTNZ?etgwE4%>-`1vTSqWlMD#Obbi*%0*Yig%0Aknju_gzJgdE~Ge@TWR`!2EQs0 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 AxBvhE literal 0 HcmV?d00001 diff --git a/docs/tutorials/img/solids_GUI-ventana.png b/docs/tutorials/img/solids_GUI-ventana.png new file mode 100644 index 0000000000000000000000000000000000000000..c299c1dd8633aea7dd181cd34f3247002e3765b9 GIT binary patch literal 49799 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 from solidspy import solids_GUI + >>> solids_GUI() + +In Linux and you can also run the program from the terminal using + +:: + + $ python -m solidspy + +If you have ``easygui`` installed a pop-up window will appear for you to +select the folder with the input files + +.. figure:: ../img/Folder_selection.png + :width: 400px + :alt: Folder selection window. + + Folder selection window. + +select the folder and click ok. + +If you don't have ``easygui`` installed the software will ask you for +the path to your folder. The path can be absolute or relative. + +:: + + Enter folder (empty for the current one): + + +Then, you will see some information regarding your analysis + +:: + + Number of nodes: 9 + Number of elements: 4 + Number of equations: 14 + Duration for system solution: 0:00:00.006895 + Duration for post processing: 0:00:01.466066 + Analysis terminated successfully! + +And, once the solution is achieved you will see displacements and stress +solutions as contour plots, like the following + +.. image:: ../img/square-4_elements-horizontal_disp.png + :width: 400px + +.. image:: ../img/square-4_elements-vertical_disp.png + :width: 400px + + +Interactive execution +~~~~~~~~~~~~~~~~~~~~~ + +You can also run the program interactively using a Python terminal, a +good option is `IPython `__. + +In IPython you can run the program with + +.. code:: python + + In [1]: from solidspy import solids_GUI + + In [2]: UC = solids_GUI() + +After running the code we have the nodal variables for post-processing. +For example, we can print the displacement vector + +.. code:: python + + In [3]: np.set_printoptions(threshold=np.nan) + + In [4]: print(np.round(UC, 3)) + [ 0.6 -0.6 -0.6 4. 0.6 4. -0.6 2. -0. 4. 0.6 2. -0. 2. ] + +where we first setup the printing option for IPython to show the full +array and then rounded the array to 3 decimal places. + +.. code:: python + + In [5]: U_mag = np.sqrt(UC[0::2]**2 + UG[1::2]**2) + + In [6]: print(np.round(U_mag, 3)) + [ 0.849 4.045 4.045 2.088 4. 2.088 2. ] diff --git a/docs/tutorials/template.geo b/docs/tutorials/template.geo new file mode 100755 index 0000000..0cefe08 --- /dev/null +++ b/docs/tutorials/template.geo @@ -0,0 +1,38 @@ +// Parameters +L = 2.0; +H = 1.0; +h_1 = H/2; +h_2 = H/2; +lado_elem = 0.1; + + +// Points +Point(1) = {0.0, 0.0, 0, lado_elem}; +Point(2) = {L, 0.0, 0, lado_elem}; +Point(3) = {L, h_2, 0, lado_elem}; +Point(4) = {L, H, 0, lado_elem}; +Point(5) = {0, H, 0, lado_elem}; +Point(6) = {0, h_2, 0, lado_elem}; + +// Lines +Line(1) = {1, 2}; +Line(2) = {2, 3}; +Line(3) = {3, 4}; +Line(4) = {4, 5}; +Line(5) = {5, 6}; +Line(6) = {6, 1}; +Line(7) = {3, 6}; + +// Surfaces +Line Loop(8) = {1, 2, 7, 6}; +Plane Surface(9) = {8}; +Line Loop(10) = {-7, 5, 4, 3}; +Plane Surface(11) = {10}; + +// Physical groups +Physical Surface(100) = {9}; // Material superior +Physical Surface(200) = {11}; // Material inferior +Physical Line(300) = {5, 6, 3, 2}; // Lineas laterales +Physical Line(400) = {1}; // Linea inferior +Physical Line(500) = {4}; // Linea superior (cargas) + diff --git a/docs/tutorials/template.msh b/docs/tutorials/template.msh new file mode 100755 index 0000000..92ab41e --- /dev/null +++ b/docs/tutorials/template.msh @@ -0,0 +1,880 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$Nodes +291 +1 0 0 0 +2 2 0 0 +3 2 0.5 0 +4 2 1 0 +5 0 1 0 +6 0 0.5 0 +7 0.09999999999979931 0 0 +8 0.1999999999996293 0 0 +9 0.2999999999994072 0 0 +10 0.3999999999991157 0 0 +11 0.4999999999988242 0 0 +12 0.5999999999985328 0 0 +13 0.6999999999982413 0 0 +14 0.7999999999979498 0 0 +15 0.8999999999976585 0 0 +16 0.9999999999973885 0 0 +17 1.09999999999763 0 0 +18 1.199999999997894 0 0 +19 1.299999999998157 0 0 +20 1.39999999999842 0 0 +21 1.499999999998684 0 0 +22 1.599999999998947 0 0 +23 1.69999999999921 0 0 +24 1.799999999999474 0 0 +25 1.899999999999737 0 0 +26 2 0.09999999999977893 0 +27 2 0.1999999999994875 0 +28 2 0.2999999999994734 0 +29 2 0.3999999999997367 0 +30 2 0.5999999999999998 0 +31 2 0.6999999999999998 0 +32 2 0.7999999999999998 0 +33 2 0.8999999999999999 0 +34 1.899999999999584 1 0 +35 1.799999999999167 1 0 +36 1.699999999999306 1 0 +37 1.6 1 0 +38 1.500000000000693 1 0 +39 1.400000000001387 1 0 +40 1.30000000000208 1 0 +41 1.200000000002774 1 0 +42 1.100000000003467 1 0 +43 1.000000000004117 1 0 +44 0.9000000000037447 1 0 +45 0.8000000000033287 1 0 +46 0.7000000000029127 1 0 +47 0.6000000000024965 1 0 +48 0.5000000000020806 1 0 +49 0.4000000000016644 1 0 +50 0.3000000000012482 1 0 +51 0.200000000000832 1 0 +52 0.100000000000416 1 0 +53 0 0.9000000000000002 0 +54 0 0.8000000000000002 0 +55 0 0.7000000000000002 0 +56 0 0.6000000000000001 0 +57 0 0.3999999999999999 0 +58 0 0.3000000000006934 0 +59 0 0.2000000000008322 0 +60 0 0.1000000000004161 0 +61 1.899999999999584 0.5 0 +62 1.799999999999167 0.5 0 +63 1.699999999999306 0.5 0 +64 1.6 0.5 0 +65 1.500000000000693 0.5 0 +66 1.400000000001387 0.5 0 +67 1.30000000000208 0.5 0 +68 1.200000000002774 0.5 0 +69 1.100000000003467 0.5 0 +70 1.000000000004117 0.5 0 +71 0.9000000000037447 0.5 0 +72 0.8000000000033287 0.5 0 +73 0.7000000000029127 0.5 0 +74 0.6000000000024965 0.5 0 +75 0.5000000000020806 0.5 0 +76 0.4000000000016644 0.5 0 +77 0.3000000000012482 0.5 0 +78 0.200000000000832 0.5 0 +79 0.100000000000416 0.5 0 +80 1.65381231547365 0.260959075017021 0 +81 1.351124884378193 0.2487566757764334 0 +82 1.051293921883456 0.2605797345696467 0 +83 0.3461876845254258 0.2390409249830514 0 +84 0.6398967772002651 0.2516188405712113 0 +85 0.8510945898458229 0.2104546307743544 0 +86 1.822431205709429 0.3203988996237616 0 +87 0.1775687942900054 0.1796011003760619 0 +88 1.50000000000077 0.3300000000006733 0 +89 1.20179537351464 0.3284080609398986 0 +90 0.5122496160131741 0.1654647106250118 0 +91 1.20658518994607 0.163384573380157 0 +92 1.514007592956966 0.1612300861632158 0 +93 0.4859924070427815 0.338769913836925 0 +94 0.1574218750003479 0.3425781249999768 0 +95 1.842578124999881 0.1574218749998982 0 +96 0.7834023819892084 0.3373016587370398 0 +97 0.9303510896086535 0.3404875037445799 0 +98 0.7282946509523613 0.1386530230737329 0 +99 0.9723022436844141 0.1368550586017904 0 +100 1.678791150297568 0.1579329143256178 0 +101 0.3212088497016951 0.3420670856746145 0 +102 1.650635949875129 0.3822702370705011 0 +103 1.350000000001733 0.3800000000000853 0 +104 0.3493640501238237 0.1177297629293881 0 +105 1.350549215462113 0.1173222064179004 0 +106 0.6486694934528177 0.4043790641906757 0 +107 1.058356946334444 0.3783286107341154 0 +108 1.105033717066164 0.1229519177184429 0 +109 0.6051676295868596 0.1183309361116041 0 +110 1.601954798728031 0.1098676973427051 0 +111 0.3980452012714666 0.3901323026576862 0 +112 0.09763454861096751 0.2513237847223991 0 +113 1.902365451388961 0.2486762152777088 0 +114 0.2407494093746352 0.2752881229680862 0 +115 1.759250590624464 0.2247118770321746 0 +116 1.754076433120708 0.4036544585984821 0 +117 0.2459235668784563 0.09634554140113429 0 +118 1.893898809523744 0.3938988095237345 0 +119 0.1061011904760172 0.1061011904759796 0 +120 0.8503109512262288 0.0692529734464211 0 +121 0.9510508913120764 0.2350051600890941 0 +122 0.75304629482343 0.2334330987301092 0 +123 0.8565822650797097 0.4046133265339417 0 +124 0.5536966029866326 0.4123964332165881 0 +125 1.446269500933664 0.08854506991589978 0 +126 0.5426371136013343 0.2549445916718134 0 +127 1.139208090057843 0.2315621682028714 0 +128 1.458538890069524 0.2468195407212221 0 +129 1.450679103183663 0.4085471817896525 0 +130 1.550017467298957 0.4090860002514118 0 +131 1.250065058376519 0.4093887688869708 0 +132 0.447653711745927 0.08903838094898638 0 +133 1.139732931286715 0.4123462611969104 0 +134 1.247769418566924 0.2472039393627477 0 +135 1.552487735097033 0.2518653419106516 0 +136 0.4491105529600249 0.2478047584487203 0 +137 1.255666778137688 0.08909660956917107 0 +138 0.2719587010384693 0.1816010905315444 0 +139 1.728041298960676 0.3183989094683881 0 +140 0.855526874284579 0.2934050002219346 0 +141 0.09207457386375807 0.4079254261362749 0 +142 1.907925426136339 0.09207457386362214 0 +143 0.7487971876856526 0.4148381400357274 0 +144 1.765912050852486 0.09247869939390363 0 +145 0.2340879491473859 0.4075213006061623 0 +146 1.173457137029089 0.07508662013355419 0 +147 0.5330141914686635 0.07456680553712046 0 +148 1.422068575526777 0.3228246796576133 0 +149 0.9804493777828056 0.41612096427747 0 +150 1.280150946967602 0.3227514889932272 0 +151 1.581390693549108 0.3268361308500518 0 +152 0.4209131230736751 0.1718157075870316 0 +153 0.4675468422609251 0.4282597299422398 0 +154 1.532446378523258 0.07192857068436413 0 +155 1.424098016760092 0.1725347157989343 0 +156 0.5953557717179743 0.3295181405808718 0 +157 0.7012422360240151 0.3149999999980176 0 +158 1.104724910416833 0.3213405225345778 0 +159 1.282339097298198 0.1731528009012819 0 +160 1.027294960211124 0.07614496122815297 0 +161 0.0830527586877958 0.3286484179073135 0 +162 1.916947241312142 0.1713515820927073 0 +163 1.00631044657302 0.3172815410868923 0 +164 0.6751758003235002 0.07564121393609677 0 +165 0.9416811295125168 0.07152133221283119 0 +166 0.4001089391002788 0.3115629971201995 0 +167 1.600210718510649 0.1883710229518422 0 +168 0.7589337967567894 0.07173703507668208 0 +169 0.07434090622324914 0.1771076344337832 0 +170 1.925659093776767 0.3228923655661743 0 +171 1.041030637369179 0.1771831667349997 0 +172 0.6619107481451618 0.1745172103263714 0 +173 1.669331599975248 0.0720558622124453 0 +174 0.330668400024692 0.4279441377876926 0 +175 1.826058774871606 0.4284613438073174 0 +176 0.1739412251278421 0.07153865619254857 0 +177 0.592372376909359 0.1929752578612024 0 +178 1.835159979552849 0.2290299949804972 0 +179 0.1648400204465712 0.2709700050197172 0 +180 0.8943768639372522 0.1449940258547222 0 +181 0.8060095245903141 0.1447541311593369 0 +182 1.051485800471961 0.4471226351500439 0 +183 0.156716879602548 0.4316049703484828 0 +184 1.843283120397584 0.06839502965148479 0 +185 1.944230571870695 0.4442305718707625 0 +186 0.05576942812899072 0.05576942812926354 0 +187 1.653812315473648 0.7609590750170457 0 +188 1.350000000001733 0.7500000000000001 0 +189 1.060103222803592 0.7516188405713106 0 +190 0.2759435636406584 0.7707395908685654 0 +191 0.6500000000026099 0.750000000000056 0 +192 0.8489054101579443 0.7104546307731273 0 +193 0.4510945898464747 0.7895453692265126 0 +194 1.822431205709389 0.8203988996237644 0 +195 1.500000000000693 0.8300000000006241 0 +196 1.187750383989084 0.6654647106244176 0 +197 1.514007592957976 0.6612300861628946 0 +198 1.2027432465098 0.831007407846562 0 +199 1.84257812499996 0.6574218749998635 0 +200 0.9165976180141326 0.8373016587366646 0 +201 0.3838797537662821 0.663366661750038 0 +202 0.5329655248138147 0.6502206851132515 0 +203 0.7670344751901718 0.8497793148876017 0 +204 0.1442050794348783 0.8612568378342683 0 +205 0.1437499999998767 0.6437500000000587 0 +206 0.9717053490514909 0.6386530230730151 0 +207 0.5932916330824523 0.8439444494340365 0 +208 0.3116735698999436 0.8482722546602307 0 +209 0.7067083669222913 0.6560555505660514 0 +210 1.678791150297588 0.6579329143256385 0 +211 1.650635949875124 0.8822702370705016 0 +212 1.350000000001733 0.6200000000000693 0 +213 1.35134542272576 0.8888503910051702 0 +214 1.051330506553099 0.9043790641909795 0 +215 0.2635216346150465 0.6171430811031082 0 +216 1.094832370416425 0.6183309361105805 0 +217 0.102109830798408 0.7558740706391816 0 +218 1.60195479872828 0.609867697342664 0 +219 1.902365451388809 0.7486762152777201 0 +220 1.759250590624461 0.7247118770321825 0 +221 1.754076433120693 0.9036544585985007 0 +222 1.893898809523751 0.8938988095237254 0 +223 0.450000000001722 0.9309130684718177 0 +224 0.8496890487760469 0.5692529734454797 0 +225 0.6353694428241076 0.5878938292793968 0 +226 0.6646305571808228 0.9121061707209305 0 +227 0.7579785465590218 0.7464813175594186 0 +228 0.5420214534453338 0.7535186824405412 0 +229 0.9469537051799375 0.7334330987294272 0 +230 0.3692499352134036 0.7600494360834718 0 +231 0.2405903965173136 0.9151936796467026 0 +232 0.4536504107111778 0.5945576703836726 0 +233 0.8464177852615756 0.9055378039716225 0 +234 1.446985511369413 0.5885597301925093 0 +235 1.155579519677257 0.9135305674274388 0 +236 1.458351409340829 0.7470267614249307 0 +237 1.155485495327134 0.7536508406731761 0 +238 1.250721290360271 0.5894605850122745 0 +239 1.549196203563488 0.9094186528258546 0 +240 1.45249223501671 0.9085840658754631 0 +241 1.55246541596277 0.7518900110420241 0 +242 1.24922182856296 0.7496361689453344 0 +243 1.249918820666033 0.9095453708312009 0 +244 1.728041298960663 0.818398909468399 0 +245 0.8428600281565044 0.7941169511068044 0 +246 0.4587075963906586 0.7069555736449035 0 +247 1.907925426136383 0.5920745738635829 0 +248 0.9515599611696524 0.9149481968733376 0 +249 0.3505572492863545 0.5881027010516036 0 +250 1.765912050852494 0.5924786993938904 0 +251 1.166660808954404 0.5746512463494545 0 +252 1.422437813417145 0.8248922436612376 0 +253 0.08354166666666207 0.9164583333334068 0 +254 0.08354166666666185 0.5835416666665934 0 +255 0.5500000000022887 0.5677550750266978 0 +256 0.7500000000031208 0.9322449249739323 0 +257 1.581221976975145 0.82690759519121 0 +258 1.277538700583156 0.6749122929164192 0 +259 1.532589580611272 0.5719315027396136 0 +260 1.423868902734337 0.6733633155560808 0 +261 1.103999959141643 0.8281977867849057 0 +262 0.998757763978977 0.8149999999999676 0 +263 1.280645863693257 0.8258078677256535 0 +264 0.3036290949064638 0.6883416024346877 0 +265 0.2084575443963358 0.811477267926999 0 +266 0.611841314864545 0.6799097352474005 0 +267 0.6881586851399592 0.8200902647529831 0 +268 1.916947241312164 0.6713515820927785 0 +269 0.2162352780594649 0.7145542688287667 0 +270 0.1924093089009126 0.5799101643525547 0 +271 1.02482419968005 0.5756412139352947 0 +272 0.3503475574108726 0.9245840004630194 0 +273 0.7485980394289841 0.5766795588818519 0 +274 0.5513501353715119 0.9233481147709266 0 +275 0.1536674285240204 0.9385817701628757 0 +276 0.06724609374987384 0.8399544270834713 0 +277 0.06588029949298932 0.6566331474611667 0 +278 1.600206254684052 0.6883759567780534 0 +279 0.9410662032461479 0.5717370350757074 0 +280 1.925659093776633 0.8228923655661405 0 +281 1.038089251859326 0.6745172103263849 0 +282 1.669331599975534 0.5720558622124385 0 +283 1.826058774871605 0.9284613438073109 0 +284 1.107252144879112 0.6927165076611739 0 +285 1.835159979552794 0.7290299949804179 0 +286 0.8930235157427974 0.6450676268494899 0 +287 0.7998213780452174 0.6468750000001835 0 +288 0.3998213780433444 0.8531249999993652 0 +289 0.5001786219594978 0.8531249999987757 0 +290 1.843283120397518 0.5683950296514673 0 +291 1.944230571870585 0.9442305718707692 0 +$EndNodes +$Elements +580 +1 1 2 400 1 1 7 +2 1 2 400 1 7 8 +3 1 2 400 1 8 9 +4 1 2 400 1 9 10 +5 1 2 400 1 10 11 +6 1 2 400 1 11 12 +7 1 2 400 1 12 13 +8 1 2 400 1 13 14 +9 1 2 400 1 14 15 +10 1 2 400 1 15 16 +11 1 2 400 1 16 17 +12 1 2 400 1 17 18 +13 1 2 400 1 18 19 +14 1 2 400 1 19 20 +15 1 2 400 1 20 21 +16 1 2 400 1 21 22 +17 1 2 400 1 22 23 +18 1 2 400 1 23 24 +19 1 2 400 1 24 25 +20 1 2 400 1 25 2 +21 1 2 300 2 2 26 +22 1 2 300 2 26 27 +23 1 2 300 2 27 28 +24 1 2 300 2 28 29 +25 1 2 300 2 29 3 +26 1 2 300 3 3 30 +27 1 2 300 3 30 31 +28 1 2 300 3 31 32 +29 1 2 300 3 32 33 +30 1 2 300 3 33 4 +31 1 2 500 4 4 34 +32 1 2 500 4 34 35 +33 1 2 500 4 35 36 +34 1 2 500 4 36 37 +35 1 2 500 4 37 38 +36 1 2 500 4 38 39 +37 1 2 500 4 39 40 +38 1 2 500 4 40 41 +39 1 2 500 4 41 42 +40 1 2 500 4 42 43 +41 1 2 500 4 43 44 +42 1 2 500 4 44 45 +43 1 2 500 4 45 46 +44 1 2 500 4 46 47 +45 1 2 500 4 47 48 +46 1 2 500 4 48 49 +47 1 2 500 4 49 50 +48 1 2 500 4 50 51 +49 1 2 500 4 51 52 +50 1 2 500 4 52 5 +51 1 2 300 5 5 53 +52 1 2 300 5 53 54 +53 1 2 300 5 54 55 +54 1 2 300 5 55 56 +55 1 2 300 5 56 6 +56 1 2 300 6 6 57 +57 1 2 300 6 57 58 +58 1 2 300 6 58 59 +59 1 2 300 6 59 60 +60 1 2 300 6 60 1 +61 2 2 100 9 100 144 115 +62 2 2 100 9 101 145 114 +63 2 2 100 9 144 95 115 +64 2 2 100 9 145 94 114 +65 2 2 100 9 63 64 102 +66 2 2 100 9 66 67 103 +67 2 2 100 9 9 10 104 +68 2 2 100 9 19 20 105 +69 2 2 100 9 73 74 106 +70 2 2 100 9 91 127 108 +71 2 2 100 9 108 127 171 +72 2 2 100 9 80 100 115 +73 2 2 100 9 83 101 114 +74 2 2 100 9 71 123 149 +75 2 2 100 9 63 102 116 +76 2 2 100 9 9 104 117 +77 2 2 100 9 80 167 100 +78 2 2 100 9 83 166 101 +79 2 2 100 9 82 171 127 +80 2 2 100 9 73 106 143 +81 2 2 100 9 74 124 106 +82 2 2 100 9 20 125 105 +83 2 2 100 9 64 130 102 +84 2 2 100 9 66 103 129 +85 2 2 100 9 67 131 103 +86 2 2 100 9 10 132 104 +87 2 2 100 9 6 57 141 +88 2 2 100 9 2 26 142 +89 2 2 100 9 6 141 79 +90 2 2 100 9 2 142 25 +91 2 2 100 9 97 149 123 +92 2 2 100 9 81 105 155 +93 2 2 100 9 81 159 105 +94 2 2 100 9 80 139 102 +95 2 2 100 9 83 138 104 +96 2 2 100 9 19 105 137 +97 2 2 100 9 80 102 151 +98 2 2 100 9 81 103 150 +99 2 2 100 9 83 104 152 +100 2 2 100 9 81 148 103 +101 2 2 100 9 23 144 173 +102 2 2 100 9 77 145 174 +103 2 2 100 9 17 146 108 +104 2 2 100 9 77 78 145 +105 2 2 100 9 23 24 144 +106 2 2 100 9 100 167 110 +107 2 2 100 9 101 166 111 +108 2 2 100 9 106 157 143 +109 2 2 100 9 65 129 130 +110 2 2 100 9 12 109 147 +111 2 2 100 9 17 108 160 +112 2 2 100 9 84 157 156 +113 2 2 100 9 58 59 112 +114 2 2 100 9 27 28 113 +115 2 2 100 9 85 140 122 +116 2 2 100 9 96 122 140 +117 2 2 100 9 62 63 116 +118 2 2 100 9 8 9 117 +119 2 2 100 9 91 108 146 +120 2 2 100 9 97 123 140 +121 2 2 100 9 96 140 123 +122 2 2 100 9 12 164 109 +123 2 2 100 9 99 171 121 +124 2 2 100 9 96 143 157 +125 2 2 100 9 100 173 144 +126 2 2 100 9 101 174 145 +127 2 2 100 9 90 147 109 +128 2 2 100 9 106 156 157 +129 2 2 100 9 14 15 120 +130 2 2 100 9 88 130 129 +131 2 2 100 9 90 109 177 +132 2 2 100 9 70 71 149 +133 2 2 100 9 68 133 131 +134 2 2 100 9 82 121 171 +135 2 2 100 9 98 122 172 +136 2 2 100 9 22 110 154 +137 2 2 100 9 76 111 153 +138 2 2 100 9 99 121 180 +139 2 2 100 9 74 75 124 +140 2 2 100 9 20 21 125 +141 2 2 100 9 89 131 133 +142 2 2 100 9 71 72 123 +143 2 2 100 9 64 65 130 +144 2 2 100 9 65 66 129 +145 2 2 100 9 67 68 131 +146 2 2 100 9 10 11 132 +147 2 2 100 9 84 172 122 +148 2 2 100 9 17 18 146 +149 2 2 100 9 86 139 115 +150 2 2 100 9 87 138 114 +151 2 2 100 9 18 19 137 +152 2 2 100 9 86 116 139 +153 2 2 100 9 87 117 138 +154 2 2 100 9 86 113 170 +155 2 2 100 9 87 112 169 +156 2 2 100 9 86 175 116 +157 2 2 100 9 87 176 117 +158 2 2 100 9 90 126 136 +159 2 2 100 9 93 136 126 +160 2 2 100 9 89 127 134 +161 2 2 100 9 88 128 135 +162 2 2 100 9 91 134 127 +163 2 2 100 9 92 135 128 +164 2 2 100 9 86 118 175 +165 2 2 100 9 87 119 176 +166 2 2 100 9 80 115 139 +167 2 2 100 9 83 114 138 +168 2 2 100 9 95 178 115 +169 2 2 100 9 94 179 114 +170 2 2 100 9 72 143 123 +171 2 2 100 9 85 121 140 +172 2 2 100 9 97 140 121 +173 2 2 100 9 82 158 163 +174 2 2 100 9 29 118 170 +175 2 2 100 9 60 119 169 +176 2 2 100 9 86 170 118 +177 2 2 100 9 87 169 119 +178 2 2 100 9 68 69 133 +179 2 2 100 9 11 12 147 +180 2 2 100 9 102 139 116 +181 2 2 100 9 104 138 117 +182 2 2 100 9 15 165 120 +183 2 2 100 9 98 181 122 +184 2 2 100 9 96 123 143 +185 2 2 100 9 85 180 121 +186 2 2 100 9 21 22 154 +187 2 2 100 9 75 76 153 +188 2 2 100 9 14 120 168 +189 2 2 100 9 22 173 110 +190 2 2 100 9 76 174 111 +191 2 2 100 9 92 110 167 +192 2 2 100 9 93 111 166 +193 2 2 100 9 81 155 128 +194 2 2 100 9 84 156 126 +195 2 2 100 9 7 176 119 +196 2 2 100 9 61 175 118 +197 2 2 100 9 12 13 164 +198 2 2 100 9 59 60 169 +199 2 2 100 9 28 29 170 +200 2 2 100 9 92 154 110 +201 2 2 100 9 93 153 111 +202 2 2 100 9 107 163 158 +203 2 2 100 9 16 17 160 +204 2 2 100 9 85 122 181 +205 2 2 100 9 113 178 162 +206 2 2 100 9 112 179 161 +207 2 2 100 9 178 95 162 +208 2 2 100 9 179 94 161 +209 2 2 100 9 57 58 161 +210 2 2 100 9 26 27 162 +211 2 2 100 9 100 110 173 +212 2 2 100 9 101 111 174 +213 2 2 100 9 18 137 146 +214 2 2 100 9 28 170 113 +215 2 2 100 9 59 169 112 +216 2 2 100 9 120 165 180 +217 2 2 100 9 80 151 135 +218 2 2 100 9 83 152 136 +219 2 2 100 9 81 150 134 +220 2 2 100 9 87 179 112 +221 2 2 100 9 86 178 113 +222 2 2 100 9 82 163 121 +223 2 2 100 9 97 121 163 +224 2 2 100 9 58 112 161 +225 2 2 100 9 27 113 162 +226 2 2 100 9 61 62 175 +227 2 2 100 9 7 8 176 +228 2 2 100 9 81 128 148 +229 2 2 100 9 69 182 133 +230 2 2 100 9 107 133 182 +231 2 2 100 9 11 147 132 +232 2 2 100 9 87 114 179 +233 2 2 100 9 86 115 178 +234 2 2 100 9 107 158 133 +235 2 2 100 9 89 133 158 +236 2 2 100 9 82 127 158 +237 2 2 100 9 84 122 157 +238 2 2 100 9 96 157 122 +239 2 2 100 9 120 181 168 +240 2 2 100 9 57 161 141 +241 2 2 100 9 26 162 142 +242 2 2 100 9 94 183 141 +243 2 2 100 9 95 184 142 +244 2 2 100 9 90 132 147 +245 2 2 100 9 72 73 143 +246 2 2 100 9 103 148 129 +247 2 2 100 9 88 129 148 +248 2 2 100 9 94 145 183 +249 2 2 100 9 95 144 184 +250 2 2 100 9 76 77 174 +251 2 2 100 9 22 23 173 +252 2 2 100 9 21 154 125 +253 2 2 100 9 75 153 124 +254 2 2 100 9 7 119 186 +255 2 2 100 9 29 185 118 +256 2 2 100 9 61 118 185 +257 2 2 100 9 60 186 119 +258 2 2 100 9 62 116 175 +259 2 2 100 9 8 117 176 +260 2 2 100 9 81 134 159 +261 2 2 100 9 93 156 124 +262 2 2 100 9 92 155 125 +263 2 2 100 9 93 126 156 +264 2 2 100 9 92 128 155 +265 2 2 100 9 92 167 135 +266 2 2 100 9 93 166 136 +267 2 2 100 9 93 124 153 +268 2 2 100 9 92 125 154 +269 2 2 100 9 88 148 128 +270 2 2 100 9 107 149 163 +271 2 2 100 9 97 163 149 +272 2 2 100 9 102 130 151 +273 2 2 100 9 103 131 150 +274 2 2 100 9 88 151 130 +275 2 2 100 9 89 150 131 +276 2 2 100 9 104 132 152 +277 2 2 100 9 90 152 132 +278 2 2 100 9 91 137 159 +279 2 2 100 9 105 159 137 +280 2 2 100 9 91 146 137 +281 2 2 100 9 90 177 126 +282 2 2 100 9 106 124 156 +283 2 2 100 9 105 125 155 +284 2 2 100 9 89 158 127 +285 2 2 100 9 89 134 150 +286 2 2 100 9 88 135 151 +287 2 2 100 9 90 136 152 +288 2 2 100 9 13 14 168 +289 2 2 100 9 84 126 177 +290 2 2 100 9 15 16 165 +291 2 2 100 9 91 159 134 +292 2 2 100 9 109 164 172 +293 2 2 100 9 98 172 164 +294 2 2 100 9 99 160 171 +295 2 2 100 9 108 171 160 +296 2 2 100 9 99 180 165 +297 2 2 100 9 1 186 60 +298 2 2 100 9 3 61 185 +299 2 2 100 9 3 185 29 +300 2 2 100 9 1 7 186 +301 2 2 100 9 120 180 181 +302 2 2 100 9 85 181 180 +303 2 2 100 9 78 79 183 +304 2 2 100 9 24 25 184 +305 2 2 100 9 69 70 182 +306 2 2 100 9 98 168 181 +307 2 2 100 9 80 135 167 +308 2 2 100 9 83 136 166 +309 2 2 100 9 94 141 161 +310 2 2 100 9 95 142 162 +311 2 2 100 9 79 141 183 +312 2 2 100 9 25 142 184 +313 2 2 100 9 16 160 165 +314 2 2 100 9 99 165 160 +315 2 2 100 9 13 168 164 +316 2 2 100 9 84 177 172 +317 2 2 100 9 24 184 144 +318 2 2 100 9 78 183 145 +319 2 2 100 9 98 164 168 +320 2 2 100 9 70 149 182 +321 2 2 100 9 107 182 149 +322 2 2 100 9 109 172 177 +323 2 2 200 11 210 250 220 +324 2 2 200 11 250 199 220 +325 2 2 200 11 191 209 227 +326 2 2 200 11 191 207 228 +327 2 2 200 11 36 37 211 +328 2 2 200 11 39 40 213 +329 2 2 200 11 66 212 67 +330 2 2 200 11 42 43 214 +331 2 2 200 11 191 266 209 +332 2 2 200 11 191 267 207 +333 2 2 200 11 190 230 208 +334 2 2 200 11 215 264 269 +335 2 2 200 11 190 208 265 +336 2 2 200 11 217 269 265 +337 2 2 200 11 204 217 265 +338 2 2 200 11 187 210 220 +339 2 2 200 11 190 269 264 +340 2 2 200 11 77 215 270 +341 2 2 200 11 205 215 269 +342 2 2 200 11 36 211 221 +343 2 2 200 11 187 278 210 +344 2 2 200 11 77 270 78 +345 2 2 200 11 73 273 225 +346 2 2 200 11 47 274 226 +347 2 2 200 11 43 248 214 +348 2 2 200 11 66 234 212 +349 2 2 200 11 42 214 235 +350 2 2 200 11 37 239 211 +351 2 2 200 11 67 212 238 +352 2 2 200 11 39 213 240 +353 2 2 200 11 3 30 247 +354 2 2 200 11 3 247 61 +355 2 2 200 11 188 212 260 +356 2 2 200 11 263 188 213 +357 2 2 200 11 187 244 211 +358 2 2 200 11 40 243 213 +359 2 2 200 11 187 211 257 +360 2 2 200 11 188 258 212 +361 2 2 200 11 213 188 252 +362 2 2 200 11 73 225 74 +363 2 2 200 11 46 47 226 +364 2 2 200 11 209 225 273 +365 2 2 200 11 207 226 274 +366 2 2 200 11 63 250 282 +367 2 2 200 11 209 266 225 +368 2 2 200 11 207 267 226 +369 2 2 200 11 54 55 217 +370 2 2 200 11 41 235 243 +371 2 2 200 11 50 231 272 +372 2 2 200 11 62 250 63 +373 2 2 200 11 210 278 218 +374 2 2 200 11 79 270 254 +375 2 2 200 11 214 248 262 +376 2 2 200 11 205 270 215 +377 2 2 200 11 38 240 239 +378 2 2 200 11 264 249 201 +379 2 2 200 11 215 249 264 +380 2 2 200 11 69 251 216 +381 2 2 200 11 77 249 215 +382 2 2 200 11 50 51 231 +383 2 2 200 11 189 261 262 +384 2 2 200 11 31 32 219 +385 2 2 200 11 192 229 245 +386 2 2 200 11 200 245 229 +387 2 2 200 11 193 230 246 +388 2 2 200 11 201 246 230 +389 2 2 200 11 78 270 79 +390 2 2 200 11 35 36 221 +391 2 2 200 11 208 272 231 +392 2 2 200 11 200 233 245 +393 2 2 200 11 203 245 233 +394 2 2 200 11 202 246 232 +395 2 2 200 11 201 232 246 +396 2 2 200 11 69 216 271 +397 2 2 200 11 198 243 235 +398 2 2 200 11 200 262 248 +399 2 2 200 11 210 282 250 +400 2 2 200 11 196 216 251 +401 2 2 200 11 214 262 261 +402 2 2 200 11 48 49 223 +403 2 2 200 11 71 224 72 +404 2 2 200 11 5 53 253 +405 2 2 200 11 6 254 56 +406 2 2 200 11 5 253 52 +407 2 2 200 11 6 79 254 +408 2 2 200 11 195 239 240 +409 2 2 200 11 196 284 216 +410 2 2 200 11 208 231 265 +411 2 2 200 11 206 281 229 +412 2 2 200 11 64 218 259 +413 2 2 200 11 209 287 227 +414 2 2 200 11 207 289 228 +415 2 2 200 11 41 42 235 +416 2 2 200 11 65 234 66 +417 2 2 200 11 44 45 233 +418 2 2 200 11 75 232 76 +419 2 2 200 11 37 38 239 +420 2 2 200 11 38 39 240 +421 2 2 200 11 67 238 68 +422 2 2 200 11 189 229 281 +423 2 2 200 11 194 244 220 +424 2 2 200 11 40 41 243 +425 2 2 200 11 194 221 244 +426 2 2 200 11 194 219 280 +427 2 2 200 11 194 283 221 +428 2 2 200 11 198 237 242 +429 2 2 200 11 196 242 237 +430 2 2 200 11 195 236 241 +431 2 2 200 11 197 241 236 +432 2 2 200 11 194 222 283 +433 2 2 200 11 54 217 276 +434 2 2 200 11 55 277 217 +435 2 2 200 11 204 276 217 +436 2 2 200 11 205 217 277 +437 2 2 200 11 187 220 244 +438 2 2 200 11 199 285 220 +439 2 2 200 11 44 233 248 +440 2 2 200 11 76 232 249 +441 2 2 200 11 190 265 269 +442 2 2 200 11 193 246 228 +443 2 2 200 11 202 228 246 +444 2 2 200 11 192 245 227 +445 2 2 200 11 203 227 245 +446 2 2 200 11 33 222 280 +447 2 2 200 11 194 280 222 +448 2 2 200 11 68 251 69 +449 2 2 200 11 205 269 217 +450 2 2 200 11 211 244 221 +451 2 2 200 11 49 272 223 +452 2 2 200 11 48 223 274 +453 2 2 200 11 72 224 273 +454 2 2 200 11 206 229 286 +455 2 2 200 11 208 230 288 +456 2 2 200 11 200 248 233 +457 2 2 200 11 201 249 232 +458 2 2 200 11 192 227 287 +459 2 2 200 11 193 228 289 +460 2 2 200 11 64 259 65 +461 2 2 200 11 71 279 224 +462 2 2 200 11 64 282 218 +463 2 2 200 11 197 218 278 +464 2 2 200 11 188 260 236 +465 2 2 200 11 189 237 261 +466 2 2 200 11 34 283 222 +467 2 2 200 11 69 271 70 +468 2 2 200 11 32 33 280 +469 2 2 200 11 197 259 218 +470 2 2 200 11 192 286 229 +471 2 2 200 11 193 288 230 +472 2 2 200 11 219 285 268 +473 2 2 200 11 285 199 268 +474 2 2 200 11 30 31 268 +475 2 2 200 11 203 267 227 +476 2 2 200 11 191 227 267 +477 2 2 200 11 191 228 266 +478 2 2 200 11 202 266 228 +479 2 2 200 11 210 218 282 +480 2 2 200 11 32 280 219 +481 2 2 200 11 202 232 255 +482 2 2 200 11 75 255 232 +483 2 2 200 11 203 233 256 +484 2 2 200 11 45 256 233 +485 2 2 200 11 223 289 274 +486 2 2 200 11 224 287 273 +487 2 2 200 11 223 272 288 +488 2 2 200 11 205 254 270 +489 2 2 200 11 188 242 258 +490 2 2 200 11 187 257 241 +491 2 2 200 11 194 285 219 +492 2 2 200 11 31 219 268 +493 2 2 200 11 34 35 283 +494 2 2 200 11 188 236 252 +495 2 2 200 11 68 238 251 +496 2 2 200 11 194 220 285 +497 2 2 200 11 189 262 229 +498 2 2 200 11 200 229 262 +499 2 2 200 11 203 256 226 +500 2 2 200 11 46 226 256 +501 2 2 200 11 202 255 225 +502 2 2 200 11 74 225 255 +503 2 2 200 11 224 279 286 +504 2 2 200 11 30 268 247 +505 2 2 200 11 199 290 247 +506 2 2 200 11 196 251 238 +507 2 2 200 11 43 44 248 +508 2 2 200 11 76 249 77 +509 2 2 200 11 195 240 252 +510 2 2 200 11 213 252 240 +511 2 2 200 11 201 230 264 +512 2 2 200 11 190 264 230 +513 2 2 200 11 199 250 290 +514 2 2 200 11 63 282 64 +515 2 2 200 11 65 259 234 +516 2 2 200 11 33 291 222 +517 2 2 200 11 34 222 291 +518 2 2 200 11 202 225 266 +519 2 2 200 11 203 226 267 +520 2 2 200 11 35 221 283 +521 2 2 200 11 188 263 242 +522 2 2 200 11 198 235 261 +523 2 2 200 11 197 260 234 +524 2 2 200 11 198 261 237 +525 2 2 200 11 197 236 260 +526 2 2 200 11 197 278 241 +527 2 2 200 11 197 234 259 +528 2 2 200 11 195 252 236 +529 2 2 200 11 211 239 257 +530 2 2 200 11 195 257 239 +531 2 2 200 11 212 258 238 +532 2 2 200 11 196 238 258 +533 2 2 200 11 53 54 276 +534 2 2 200 11 55 56 277 +535 2 2 200 11 51 52 275 +536 2 2 200 11 213 243 263 +537 2 2 200 11 198 263 243 +538 2 2 200 11 74 255 75 +539 2 2 200 11 45 46 256 +540 2 2 200 11 196 237 284 +541 2 2 200 11 204 265 231 +542 2 2 200 11 212 234 260 +543 2 2 200 11 214 261 235 +544 2 2 200 11 204 231 275 +545 2 2 200 11 51 275 231 +546 2 2 200 11 195 241 257 +547 2 2 200 11 196 258 242 +548 2 2 200 11 70 279 71 +549 2 2 200 11 189 284 237 +550 2 2 200 11 49 50 272 +551 2 2 200 11 72 273 73 +552 2 2 200 11 47 48 274 +553 2 2 200 11 198 242 263 +554 2 2 200 11 216 281 271 +555 2 2 200 11 206 271 281 +556 2 2 200 11 207 274 289 +557 2 2 200 11 209 273 287 +558 2 2 200 11 208 288 272 +559 2 2 200 11 4 34 291 +560 2 2 200 11 4 291 33 +561 2 2 200 11 192 287 286 +562 2 2 200 11 224 286 287 +563 2 2 200 11 193 289 288 +564 2 2 200 11 223 288 289 +565 2 2 200 11 61 290 62 +566 2 2 200 11 206 286 279 +567 2 2 200 11 187 241 278 +568 2 2 200 11 199 247 268 +569 2 2 200 11 53 276 253 +570 2 2 200 11 56 254 277 +571 2 2 200 11 52 253 275 +572 2 2 200 11 61 247 290 +573 2 2 200 11 204 275 253 +574 2 2 200 11 205 277 254 +575 2 2 200 11 204 253 276 +576 2 2 200 11 70 271 279 +577 2 2 200 11 189 281 284 +578 2 2 200 11 62 290 250 +579 2 2 200 11 206 279 271 +580 2 2 200 11 216 284 281 +$EndElements diff --git a/docs/tutorials/template_input.py b/docs/tutorials/template_input.py new file mode 100755 index 0000000..6e4b62e --- /dev/null +++ b/docs/tutorials/template_input.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +""" +Template to generate the input files for the FEM code SolidsPy. +The script uses meshio to read a GMSH mesh and produce +text files nodes.txt, eles.txt , mater.txt and loads.txt + +@authors: Juan Gomez + Nicolas Guarin-Zapata +""" +import meshio +import numpy as np +# +# Read the GMSH file using meshio +# +mesh = meshio.read("template.msh") +points = mesh.points +cells = mesh.cells +point_data = mesh.point_data +cell_data = mesh.cell_data + + +# Process element data. In this case we have used 3-noded triangles. +# (In SolidsPy 1 stands for quad; 2 for triangle6; 3 for triangle) +eles = cells["triangle"] +els_array = np.zeros([eles.shape[0], 6], dtype=int) +# Asigns element id +els_array[:, 0] = range(eles.shape[0]) +# Assigns element type according to SolidsPy +els_array[:, 1] = 3 +# Assign element connectivities +els_array[:, 3::] = eles +# Creates the materials array and assigns a profile (either 0 or 1) to +# each element according to the physical surface +mater_array = np.array([[1.0, 0.30], + [5.0, 0.30]]) +maters = cell_data["triangle"]["gmsh:physical"] +els_array[:, 2] = [0 if mater == 100 else 1 for mater in maters] + +# Process nodal data +nodes_array = np.zeros([points.shape[0], 5]) +nodes_array[:, 0] = range(points.shape[0]) # Assigns nodal id +nodes_array[:, 1:3] = points[:, :2] # Assigns space coordinates + +# Process physical lines to assign displacement boundary conditions +# and nodal point loads +# +# Displacement boundary conditions +lines = cells["line"] +# Bounds contains data corresponding to the physical line. +bounds = cell_data["line"]["gmsh:physical"] +# (-1 means a restraint degree of freedom) +id_frontera_lat = [cont for cont in range(len(bounds)) if bounds[cont] == 300] +nodes_frontera_lat = lines[id_frontera_lat] +nodes_frontera_lat = nodes_frontera_lat.flatten() +nodes_frontera_lat = list(set(nodes_frontera_lat)) +nodes_array[nodes_frontera_lat, 3] = -1 +id_frontera_abajo = [cont for cont in range(len(bounds)) if bounds[cont] == 400] +nodes_frontera_abajo = lines[id_frontera_abajo] +nodes_frontera_abajo = nodes_frontera_abajo.flatten() +nodes_frontera_abajo = list(set(nodes_frontera_abajo)) +nodes_array[nodes_frontera_abajo, 4] = -1 +# Nodal point loads +id_carga = [cont for cont in range(len(bounds)) if bounds[cont] == 500] +nodes_carga = lines[id_carga] +nodes_carga = nodes_carga.flatten() +nodes_carga = list(set(nodes_carga)) +ncargas = len(nodes_carga) +carga_total = -2.0 +cargas = np.zeros((ncargas, 3)) +cargas[:, 0] = nodes_carga +cargas[:, 2] = carga_total/ncargas + +# Write the model .txt files +np.savetxt("eles.txt" , els_array , fmt="%d") +np.savetxt("loads.txt", cargas, fmt=("%d", "%.6f", "%.6f")) +np.savetxt("nodes.txt", nodes_array , fmt=("%d", "%.4f", "%.4f", "%d", "%d")) +np.savetxt("mater.txt", mater_array , fmt="%.6f") diff --git a/docs/usage.rst b/docs/usage.rst new file mode 100644 index 0000000..4b0929f --- /dev/null +++ b/docs/usage.rst @@ -0,0 +1,6 @@ +Usage +----- + +.. todo:: + + Write comprehensive usage docs. diff --git a/examples/beam_convergence/beam_convergence.ipynb b/examples/beam_convergence/beam_convergence.ipynb new file mode 100755 index 0000000..8a019ef --- /dev/null +++ b/examples/beam_convergence/beam_convergence.ipynb @@ -0,0 +1,2846 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Convergence analysis for a cantilever beam\n", + "\n", + "\n", + "This notebook presents convergence analysis using the Finite Element\n", + "Method for a cantilever beam." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following figure shows a cantilever beam under a tip load $P$. The beam is of length $l$, moment of inertia $I$, height $2c$ and material properties corresponding to Poisson ratio and Young modulus $\\nu$ and $E$ respectively.\n", + "\n", + "