Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Topology optimization with homogenized level set (#58)
* -- 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.
- Loading branch information