-
Notifications
You must be signed in to change notification settings - Fork 25
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
Explicitly Set Adjoint RHS #104
Open
JohnDN90
wants to merge
130
commits into
master
Choose a base branch
from
feature/custom_adjoint_rhs
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
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.
Miscellaneous refactoring and bug fixes.
* 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.
…nt RHS. Backwards compatibility of the adjoint_solve method is maintained.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These changes allow the user to explicitly define the adjoint right-hand-side (rhs) for multiple quantities of interest. This brings the MAST implementation of adjoints closer to that implemented in libMesh. This feature was added to support interfacing MAST with third-party programs for coupled analyses.
Backwards compatibility of the "adjoint_solve" method is maintained.