Add the code for ALE large-deformation thermoplasticity#237
Conversation
bangerth
left a comment
There was a problem hiding this comment.
Thank you for submitting this code!
We need a number of metadata files in the doc/ direction. Could you take a look at https://github.com/dealii/code-gallery?tab=readme-ov-file#contributing-to-the-gallery and add those as necessary?
| ## To run: | ||
| ``` | ||
| # in a build directory: | ||
| $ cmake -DDEAL_II_DIR=<path-to-deal-ii> <path-to-plasticitylab> | ||
| $ make release | ||
| $ make -j 8 && $HOME/share/bin/mpirun -n 18 ./PlasticityLab | ||
|
|
||
| # The triangulation is configured in PlasticityLabProgDrivers.cpp in run() | ||
| # The material is configured in main.cpp | ||
| # The timestep is configured in PlasticityLabProg.h | ||
| ``` | ||
|
|
||
| ## Citation: | ||
| If you use this code as part of your work, please cite: | ||
| Hamed, M.M.O., McBride, A.T. & Reddy, B.D. An ALE approach for large-deformation thermoplasticity with application to friction welding. Comput Mech 72, 803–826 (2023). | ||
| https://doi.org/10.1007/s00466-023-02303-0 |
There was a problem hiding this comment.
Would you be willing to add a few paragraphs that outline what the program does and how it does it? It doesn't have to be very much, but I think it would be nice to be able to read in the readme what this program is about without having to first look at the paper.
e34a713 to
b023104
Compare
bangerth
left a comment
There was a problem hiding this comment.
I made some minor cosmetic changes to file conventions, but otherwise this is ok. Thank you for contributing the program, @maieneuro, and my apologies for not getting to this earlier!
|
Thanks for the review and for merging this! I appreciate you taking the time to go through the submission and for making the formatting and naming adjustments. |
|
This program is now here and looking good: https://dealii.org/developer/doxygen/deal.II/code_gallery_ALE_Finite_Strain_Plasticity.html |
| find_package(deal.II 9.7.0 | ||
| HINTS ${deal.II_DIR} ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR} | ||
| ) |
There was a problem hiding this comment.
Our CI fails the 9.6.0 check because of this requirement.
|
In @maieneuro -- Could you have a look? |
…p build Fixes the assertion reported in dealii#237 and makes the example build warning-free in both Debug and Release with deal.II 9.7. Correctness fixes ----------------- * Mechanical FE component count: mech_fe was declared as FESystem(FE_Q, dim, FE_Q, 2), giving dim+2 components, while the rest of the program consistently assumes dim+1 (displacement + angular twist): the ComponentMasks, LBCSystem<dim, Number, dim+1>, the zero_function, Material<dim+1>, the FEValuesExtractors (displacements 0..dim-1, angular velocity at dim) and the output component names/interpretations. The extra component made component_mask.represents_n_components(fe.n_components()) fail inside VectorTools::interpolate_boundary_values(), aborting in Debug during apply_constraints(). Changed the multiplicity 2 -> 1 so the FE has dim+1 components, matching everything else. * Removed a dead, singular MixedFEProjector setup over mech_fe. The result (mech_fe_projectors) was never used, and assembling an L2 projector over the full mech_fe (dim+1 components, 12 dofs/cell for Q1) from only 4 quadrature points yields a rank-deficient mass matrix, which aborted in FullMatrix::gauss_jordan() once the ComponentMask assertion was past. With this removed the example runs the time-stepping loop. Warning cleanup (Debug and Release now compile with zero project warnings) -------------------------------------------------------------------------- * -Wdeprecated-declarations: DoFSystem now uses the returning form of DoFTools::extract_locally_relevant_dofs() and the two-index-set AffineConstraints::reinit(). * -Wsuggest-override: added override to the Material overrides in ThermoPlasticMaterial and ExponentialHardeningElastoplasticMaterial, and to the Function / std::exception subclasses. * -Wreorder: fixed member initialization order in BoundaryUnidirectionalPenaltySpec and ScaleComponentFunction. * -Wsign-compare: cast boundary_id() comparisons against the int keys of the boundary-load / convection appliers to types::boundary_id. * -Wcatch-value: catch MaterialDomainException by const reference. * -Wunused-variable / -Wunused-but-set-variable / -Wunused-parameter: tagged genuinely-unused locals and parameters with [[maybe_unused]] (preserving the computations), dropped an unused local in main.cpp, and elided unused parameter names in stub material methods.
Following this thread in the mailing list, I'm adding this to the code gallery.