Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added method to define zero and non-zero boundary conditons on indivi… #103

Open
wants to merge 131 commits into
base: master
Choose a base branch
from

Conversation

JohnDN90
Copy link
Member

This allows dirichlet boundary conditions, both zero and non-zero, to be applied on individual degrees of freedom. The formatting for defining BCs is similar to that of Nastran. The new class accepts three vectors which defines the nodes the BC is applied to, the DOFs the BC acts on within those nodes, and the value for each of those DOFs.

This was implement a long time ago (~10 months?), but was never moved from GitLab to here. This pull request moves this into the GitHub repo.

manavbhatia and others added 30 commits October 9, 2019 22:19
The initial data of the continuation solver is stored before competing the initial residual, which may update the search direction.
- Also updated documentation deployment conditions.
- Reference libMesh/libmesh#2337 for discussion of extra flags necessary for MAST build when using libmesh_dbg <1.5.0
- Recommendation for GCC users is to simply move to libMesh v1.5.0.
- Headers were refactored in libMesh in v1.5.0, which means we needed to include some of the relevant stuff that got dropped out. libMesh/libmesh#2219
Uses a cython interface to pyNastran.
Modified multiple CMakeLists.txt to compile new source code with MAST.
Changed required CMake version from 3.2 to 3.12, for the built-in FindPython3 module support.
- NastranIO adds Python dependency not needed otherwise so we make this support optional.
- Increment to CMake 3.13 requirement due to improved support for adding includes/libraries to targets (3.13) and FindPython (3.12).
- Built-in CMake still seems to have trouble finding consistent interpreter/headers/library when there are multiple options. Has been especially troublesome on macOS or when using Spack built Python.
- CMake >3.12 able to find Numpy headers itself, but we are using custom FindPython3.
- Option only necessary if developing Python bindings and making changes to pyNastran interface currently.
CMake updates for NastranIO/pyNastran/Cython.
#47)

* Initial multi-libMesh version CI build.

* Migrate before_install and install stages to scripts from .travis.yml.

* Multi-libMesh build on OSX.

* Separate CI docs build from code build for efficiency.

* Added exit status to CI scripts, organized CI, added all cases.

- Also updated documentation deployment conditions.

* Added README for the Travis CI build testing updates.

* Setup both Debug and Release builds on Travis CI jobs.

* Remove Debug build from Travis CI for libMesh < v1.5.0 when using GCC.

- Reference libMesh/libmesh#2337 for discussion of extra flags necessary for MAST build when using libmesh_dbg <1.5.0
- Recommendation for GCC users is to simply move to libMesh v1.5.0.
* Initial multi-libMesh version CI build.

* Migrate before_install and install stages to scripts from .travis.yml.

* Multi-libMesh build on OSX.

* Separate CI docs build from code build for efficiency.

* Added exit status to CI scripts, organized CI, added all cases.

- Also updated documentation deployment conditions.

* Added README for the Travis CI build testing updates.

* Setup both Debug and Release builds on Travis CI jobs.

* Remove Debug build from Travis CI for libMesh < v1.5.0 when using GCC.

- Reference libMesh/libmesh#2337 for discussion of extra flags necessary for MAST build when using libmesh_dbg <1.5.0
- Recommendation for GCC users is to simply move to libMesh v1.5.0.

* Updates for compatibility with libMesh release v1.5.0.

- Headers were refactored in libMesh in v1.5.0, which means we needed to include some of the relevant stuff that got dropped out. libMesh/libmesh#2219
- Should prevent error previously encountered where some errors in processing documentation for deployment to website was only caught after pushing to master branch.
JohnDN90 and others added 29 commits March 5, 2020 15:04
Refactor 1D tests to reduce repetitive code
- Triangle required by John's addition to compute 1D beam section properties. CI libMesh dependencies previously didn't have this.
- Tetgen added in case it is used in the future.
Upgrade CI libMesh 1.5.0->1.5.1 & add triangle/tetgen to all libMesh CI binaries.
* bug-fix for conduction boundary condition application for 3D elements that do not provide a section object unlike 1D area and 2D thickness.

* missed file in previous commit
Added tests for structural Jacobian(s), inertial Jacobian, shape functions, and shape function derivatives.
- Also removed some unused #define's from various files.
…elements

First Catch2 tests for structural 2D elements
-- Added example for transient conduction analysis (#86)
-- Updated tutorial page to list the new example
-- Bug-fix for transient direct sensitivity analysis
-- Modification to fluid example sensitivity analysis consistent with the bug-fix
-- Added ability to specify non-zero Dirichlet boundary condition
-- Updated transient conduction example to include a non-zero boundary condition on the left boundary
-- Added a call to DofMap::enforce_constraints_exactly() for System::solution in NonlinearSystem::solve(), since libMesh::NonlinearImplicitSystem::solve() only calls this method on System::currentl_local_solution
…ld. (#89)

* Update Travis-CI to use Ubuntu 18.04 for some builds and doc build.
* Move Travis-CI libMesh 1.4.1 to bionic.
… no bending.

Addresses enhancment discussed in GitHub Issue #40
This was done to increase intuitiveness of MAST and bring it more closely inline with commerical FEA programs.
This was originally done on Oct 11 2019 in GitLab develop branch with commit b0647ec.
Added virtual set_material method to element_property_card_base.h
Allows enhanced polymorphism between derived section classes by allowing 1D, 2D, and 3D section pointers to be stored in the same data structure (i.e. std::map), while still having access to the set_material method.
Added init() and y_vector() methods to element_property_card_base to increase the polymorphism capability of 1D sections.
Originially added on Sept 23 2019 in commits 635ba2c and a04a113 on GitLab in develop branch.
* adding a user flag in output class to make the global sum optional in order to avoid unnecessary communication cost for output computations.

* -- Modified the API of sensitivity analysis, adjoint solves, output computation, output derivative computation routines so that the user can specify if the provided solution vector is to be localized. This is to allow for reduced communication cost due to localization when a user has to call these routines with the same solution vector. So, the user can localize it once and provide the routine with this vector.
-- Modified examples to be consistent with this API modification.
* deleting the unused StructuralSystem class.

* removing StructuralSystem from cmake script
* -- modifications to homogenized level set, mesh field function and derived classes to allow for storing of sensitivity data for multiple variables at a time. This is to help with efficiency enhancements in large-scale topology optimization solves by minimizing interprocess communication.

* -- added a method in assembly_base to compute a portion of adjoint sensitivity with significantly reduced communication cost and higher efficiency.
-- modifications in example 8 (homogenized level-set topology optimization) to take advantage of these enhancements .

* -- Added new method in filter_base to use only nonzero values in the input vector and to provide output in a serialized vector. This helps in significantly reducing the bottleneck to compute the filtered values of level-set function.
-- Modified example 8 to use this modification.

* -- Modified compliance sensitivity computation to use the more efficient refactored code in adjoint sensitivity analysis.

* -- modified example 6 to use the efficiency enhancements, similar to example 8.

* -- Modifications to example 5 level-set topology optimization to take advantage of changes for efficiency enhancement.
-- Modified level-set boundary velocity class to use the provided level-set function, instead of creating its own.
-- Modified calls to level-set boundary velocity in various element routines.
… Minor change in adjoint sensitivity internal routine to remove MPI blocking call for efficiency (#97)
* Update CI process for docs/website hosting migration.
* Enable temporary website storage/archival for all main repo builds.
- refactored organization of docs folder to clean it up for expansion
- added multiple installation guides for recent Ubuntu versions
* -- Modified geometric filter class to handle both serial and parallel/ghosted vectors to compute the filtered field.
-- Added 3D bracket to SIMP-based topology optimization example 6.

* -- Calling add_sensitivity_rhs() before computing them in order to avoid the bottleneck due to blocking MPI calls.
* -- Added thermoelastic load to topology optimization problems.
-- Bug-fix in SIMP based topology optimization example for compliance sensitivity with thermoelastic loads.

* -- added thermoelastic loading to topology optimization example 8.
-- bug-fix for setting extra quadrature order in level-set element.
…dual degrees of freedom.

This was implemented a long time ago, but is just now being moved to GitHub.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants