-
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
Structural concentrated point load and associated example updates. #59
base: master
Are you sure you want to change the base?
Conversation
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.
…ferd for identifying the issue. (#54)
Reorganized external libfort code into a contrib folder as suggested by Manav in #50
NastranIO support for reading Nastran meshes/subdomains/boundaries.
Refactoring done in commit 65ecace seems to have introduced an error related to the caching step that Travis-CI does. This commit fixes the problem.
Fix documentation deployment error due to Travis-CI cache. Closes #56
* -- Added two classes for subelement refinement that look for element intersection with level set boundary and add new elements to the mesh inside each subelement. * -- Bug-fixes for sub element refinement. * -- Modifying the behavior of if_elem_has_positive_phi_region() in level set elem intersection. * -- Bug-fix for stress assembly. * removing commented code from level set nonlinear implicit assembly class. * -- Bug-fixes for sub element refinement. * -- Modified example 5 to use the sub-element refinement class. * -- Added methods to compute topology sensitivity callable from nonlinear implicit assembly. -- Modifications in elem operation classes to support this. * -- Added nanoFlann KD-tree based geometry filter initialization * -- Added iteration counter to function evaluation. * -- Minor fix * -- refactored topology optimization examples by moving each model to an independent file and making the driver functions in the example templated so that the models can be easily switched out. * -- Added reference volume calculation to the topology models. * -- Added structural null-space vector to SIMP topology optimization so that AMG solvers can be used. -- Added problem_type in SIM topology optimization example so that objective/constraint function can be modified using user options. * -- Added null space vector object to level-set topology optimization example -- Added problem_type to level-set topology optimization example. * -- Removed unnecessary output call from FunctionEvaluation::evaluate * Removing errors introduced during merging of master. * Added a dof-constraint for the hanging node created with element intersection. * -- Bug-fix for sub-element hanging node constraint. * -- Added ability to specify element subdomain ids that will be excluded in the global assembly routines. * Added level-set interface point search and normal computation at a point on level-set function. * -- Minor fixes. * -- Added traction shifted boundary condition to all topology optimization examples -- Added method in level-set topology optimization example to mark shifted boundaries for application of traction boundary condition. -- Added traction boundary condition in structural analysis. Currently only implemented for 2D inplane structural analysis. -- Added a shifted boundary application of traction boundary condition. Currently only implemented for 2D inplane structural analysis. -- Added option for computation of second order spatial derivative for side integration. -- Damped the Newton-step for identification of point on shifted boundary. -- Added method in level-set element intersection class to identify the sides of the element on material. -- Bug-fixes in sub-element mesh refinement class. * -- Minor fixes. * -- added methods to compute sensitivity of shifted boundary traction. -- added supporting methods in level-set boundary velocity object and mesh function. * -- Added sensitivity of shifted boundary traction residual for 2D elements. * -- Bug-fix for volume sensitivity in compliance minimization part of example 5 * -- bug-fix * -- Bug-fixes for example 5. * Minor edit in example 5. * Minor fix in structural element 2D. * Added damping factor to boundary point search. * -- Changed Node to Point in plot utility. * The level set boundary point search can lack convergence in regions of high curvature when the searched point moves from one element to another since the gradient of the level-set function can be very different between the two adjacent elements. In this case the point is searched starting from the most recent unconverged point. This is allowed only once. * -- bug-fix for sensitivity of surface normal on level set boundary. * -- bug-fixes in topology optimization examples. * -- Bug-fixes for 2d structural elem. * -- Added methods to remove side and volume loads in physics discipline. * -- Bug-fixes in example 5. * -- Bug-fix in sensitivity of boundary normal computed in level set boundary velocity class -- Added a Hessian approximation in interface point search to improve robustness of point search when the search point ends up in a different element with jump in slope (in regions of high curvature). * -- Added the ability to obtain nearest intersection points on an element based on the intersection computed on an element. * Removing shifted boundary initializations from example 5. * -- Removed _assembly as a member of the ElemBase class. * -- Added classes to compute homogenized element volume fraction from level set function. * added example 7 for homogenized level-set based topology optimization * various bug-fixes for homogenized level-set-based topology optimization. * Fixes for memory errors in example 7. * -- Level-set-based Homogenized volume fraction sensitivity initialization now uses the geometric filter information to improve the computational efficiency. * -- Bug-fix in heaviside function based homogenization -- Modified the element modulus function in example 7 to use a penalty parameter similar to SIMP. * -- Updated example 7 for homogenized level-set-based topology optimization with different penalization of modulus of elasticity for static analysis and stress analysis. -- Updated smoothing width for approximate Heaviside to 0.1. -- Minor fixes for compatibility with libMesh changes to parallel communicator API. * integrating homogenized level-set topology optimization example as example 8 * reintegrated commits lost during rebase. Nastran example is enabled only if NastranIO is enabled. * commiting files missed in previous commit * -- Minor changes to the topology example titles. * adding fix for timpi * -- Bug-fixes for compilation of nastranIO with conditional compilation of mast with pynastran -- Modified upper/lower limit of level-set in example 8 to +/- 10 * removing pynastran_io.cpp and pynastran_io.h from repository since these are created by cython during each compilation. * undoing the previous change of removing the pynastran_io* files in src/mesh. * -- Fixes for backwards compatibility to libMesh. * -- Fix for lib mesh backwards compatibility. * -- More fixes for backwards compatibility.
@manavbhatia In this PR we have basically created a generalized version of the What do you think about swapping the point load application in structural example 2 to this? I am thinking about a more generalized "user guide" type explanation of how boundary conditions are basically functions when I update that documentation. I could include something like what is currently in structural example 2 in there for more advanced usage and communicate how you can define new boundary types. |
Fixed bug that could cause timpi libaries to not be found in FindlibMesh.cmake Added code to find libmesh_devel (development) libraries Added logic to handle cases when when a version (opt, dbg, devel) of libMesh is not present, so that MAST is buildable as long as at least one of these libraries are present
- This is done by specifying CMAKE_BUILD_TYPE=RelWithDebInfo or by setting the CMake variable USE_LIBMESH_DEVEL=1. - It should not adversely effect the previously working build for dbg/opt versions on Linux or macOS.
The demonstration for 1D elem seems sensible and similar to example 2. However, both of these require definition of one such loads, so the overhead of defining the loads this way is small. What would be the right way to approach to scale this up for large general structures? Would there be a point load BC object created for each nodal load? This would require some storage cost (perhaps not too large). They could all be tied into a single parameter for sensitivity analysis, which can be helpful. Or would we have a single point load BC object with an internal tabulated data that computes the nodal load based on the I think @JohnDN90 was also doing something about nodal loads in adjoint sensitivity analysis. How does this fit into that? |
I was thinking about the more general case as well last night and how it would work in SA. I think currently my understanding about what exactly is happening under the hood is too limited to know without creating a more complex demo/test case and digging in. I know John did some sort of example using multiple I think more general cases would kind of fall into two groups:
|
I think you might be referring to when I was messing around with SA of compliance and I realized that point loads weren't being included in the calculation of compliance or its sensitivity. If so, that was just a matter of modifying the output and I think the assembly class to include the point loads and didn't actually do anything with the point loads themselves.
Right now, you create a
|
Base functions: parameter, function_set_base, constant_field_function, libMesh mesh generation. Use "make check" to run these tests after building MAST via "make"
* -- Removing MAST_ENABLE_NASTRANIO to fix documentation generation issues. * updating copyright information * bug-fixes for use of localized vector in transient solver. (#61) * fixing the bug introduced in transient solve (#66) Co-authored-by: Josh Deaton <[email protected]>
- Debug build now occurs first because it has extra assertions that may cause test failures. Earlier feedback than doing Release first.
Catch2 unit testing capability, a few example/basic unit tests, and tests running on Travis CI.
This helps with Nastran interface by preventing having to manually define a point load class for each analysis.
- Structural example 1 now utilizes more straightforward point load instead of pressure applied at right end.
1d2e448
to
5ac4064
Compare
This PR formally adds the feature for applying concentrated point loads to structural systems. This load application is similar in principle to Nastran/ASTROS FORCE cards and Abaqus *CLOAD keyword entry.