Skip to content

Conversation

@MartinLadecky
Copy link
Collaborator

No description provided.

Updates the naming scheme for the displacement field results file
to better reflect that it now contains combined data. This clarifies
the purpose of the file and avoids potential confusion.
Optimizes the Jacobi-Green preconditioner by removing unnecessary name passing in the fast Jacobi preconditioner calculation.

Increases the problem size for testing and adjust plot settings to accommodate larger datasets.
This enables more accurate performance evaluation and allows for running larger, more realistic simulations.
-Improves convergence rate with relative residual
-Adds experiment for smooth vs sharp interfaces
-Fixes Jacobi Preconditioner naming in domain class
-Reduces number of pixel to increase speed
Refactors and optimizes the Jacobi-Green preconditioner implementation for improved convergence in iterative solvers.

Key changes include:
- Enforces zero mean for the preconditioner to address numerical stability issues
- Provides energy evaluation during the iterations.
- Adds plotting routines to see the differences of Green and Jacobi preconditioners.
- Removes unnecessary variables to improve memory efficiency
Refactors the code for computing and testing the Jacobi-Green preconditioner.
Specifically, it addresses several key improvements:
- Enables the computation of stress at each CG iteration
- Removes unnecessary code, streamlining the process
- Introduces changes aimed at improving the test setup and stability.
Refactors sensitivity analysis calculations for increased accuracy.
This includes using consistent field types, correcting gradient calculations,
and ensuring proper application of quadrature weights in adjoint potential
and related functions. Memory allocations are also handled in a more consistent way, to avoid memory leaks.
This commit enhances the paper experiments by:

- Adding more data saving capabilities
- Modifying the plotting script to produce more informative plots.
- Adapting the preconditioner for 2D elasticity.
Improves the efficiency and structure of the topology optimization process.

- Streamlines data handling by utilizing field objects for intermediate results, reducing redundant calculations.
- Optimizes memory usage and computational speed by eliminating unnecessary intermediate large tensors.
- Enhances code readability and maintainability through refactoring and modularization.
- Fixes a bug in the adjoint problem setup, ensuring correct sensitivity calculations.
- Improves convergence by using more precise tolerance in PCG solver
Enhances the 2D elasticity topology optimization example by increasing pixel resolution for finer designs.

Introduces circle inclusions as an alternative initial geometry in the paper's experiment, offering diverse starting points for the optimization.

Improves the finite difference checks of double well potential and adjoint problem sensitivities by:
 - Expanding the range of epsilon values tested.
 - Refining solver tolerances for greater accuracy.
 - Adding new test cases and refactoring existing ones for increased coverage and clarity.

These changes contribute to more robust and reliable topology optimization experiments and validation.
Refactors and improves finite difference checks in the topology optimization tests.

This includes:
- Renaming tests for clarity.
- Corrects errors in finite difference calculations for double well potential, gradient of phase field potential, and stress equivalence potential.
- Implements more robust finite difference checks for various partial derivatives, ensuring consistency between analytical and numerical results.
- Fixes potential issues and improves accuracy of adjoint sensitivity analysis.
- Implements new test for objective function with adjoint potential w.r.t. phase field, displacement.
- Updates L-BFGS parameters for better convergence.
- Fixes Reduction calls for MPI to use the object, not the class.

These changes enhance the reliability and accuracy of the topology optimization framework.
Refactors sensitivity analysis in topology optimization for improved clarity and correctness.

This involves:
- Modifying function signatures to improve data flow.
- Correcting the computation of material derivative terms.
- Ensuring consistent field sizing and initialization.
- Introducing new tests for stress equivalence objective function and adding tests for the whole objective function stress equivalence.
- Increasing resolution of pixel array.
Refactors the sensitivity analysis in topology optimization, using base material data
and field parameters for clarity and efficiency.

Introduces a muGrid PCG solver for FE discretizations, replacing specialized solvers
for Green, Jacobi, and Jacobi_Green preconditioners with a unified function.

These changes aim to enhance code maintainability and flexibility while
improving the handling of material properties and solver configurations.
Implements Jacobi Green preconditioner in the 3D elasticity solver.

Introduces a combined impuls Jacobi preconditioner for better conditioning.

Updates experiments and adds plotting of error evolutions, and removes unnecessary plotting of the residual.
Refactors homogenization examples to leverage muGrid fields for enhanced parallelization.

Updates examples to use muGrid's real field collection and FFT engine, improving performance and scalability in parallel environments. Addresses ghost communication issues and improves preconditioner creation.
Implements a mu-grid approach for homogenization calculations, specifically focusing on elasticity problems.

This includes:
- Modifying the discretization process to leverage mu-grids.
- Adapting the system matrix application and preconditioner calculations for mu-grids.
- Introducing a conjugate gradient solver tailored for mu-grid structures.
- Correcting the computation of homogenized stress and fluxes.

This implementation aims to improve the efficiency and accuracy of homogenization computations.
Refactors the 2D and introduces a 3D homogenization example to leverage muGrid fields for improved performance and scalability.

This includes:
- Migrating to `_mugrid` versions of field-related functions.
- Introducing Green's function preconditioner based on unit impulse response
- Replacing PCG solver with conjugate gradients.
- Corrects material tensor definitions, Poisson ratio
- Addresses domain dimension related functions

Removes the older 3D homogenization example.
Modifies the script to save field data (strain, stress, etc.)
along with subdomain locations, allowing for proper
reconstruction of the fields in parallel computations.
This enhances data management and analysis capabilities.
Refactors code to enhance parallel performance with the Jacobi-Green preconditioner by
- Using MPI to communicate ghosts in stress field
- Modifying the Jacobi preconditioner to operate on mugrid fields.
- Saving the variables to disk.
- Adding a 3D domain to handle z axis and fixing errors that arise due to this change.
Adds Green and Jacobi preconditioners for the mugrid discretization.

Integrates conjugate gradient solver for the mugrid discretization.

Refactors the code to enable comparisons between different preconditioners and material distributions in the nonlinear elasticity experiment.

Improves convergence and efficiency by using a more appropriate stopping criterion in CG.
Adds scripts for new experiments, including one focused on Jacobi-Green preconditioning and another on n-laminate structures.

Improves the conjugate gradient solver by allowing a custom norm metric for convergence checking and providing the stopping criterion norm to the callback function. This allows for more flexible and informative convergence monitoring.
- Reduces max iterations in solvers to improve convergence speed.
- Adds a script to generate cosine geometries for experiments,
  improving the workflow for creating test cases.
- Implements loading pre-generated geometries to enhance reusability
  and control over material distribution.
- Addresses a potential issue where the conjugate gradient algorithm may not converge,
  replacing the RuntimeError with a warning to prevent the program from crashing.
Improves the convergence behavior of the non-linear elasticity example.

Adds plotting functionality to visualize stress fields and convergence data
for the Jacobi-Green preconditioner.

Adjusts parameters and adds a modification to material distribution for better convergence.
Refines experiment parameters to improve simulation efficiency.
Modifies plotting scripts for more efficient data analysis and visualization.
These changes are aimed at optimizing the performance of the Jacobi-Green solver.
Addresses memory leaks by deleting temporary arrays after saving,
enhancing overall performance.

Reduces save result frequency and increases resolution for paper experiments.
Also changes script name for plots.
@MartinLadecky
Copy link
Collaborator Author

Just formal

@MartinLadecky MartinLadecky merged commit 8b20cf4 into main Nov 25, 2025
0 of 5 checks passed
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.

2 participants