[beaminteraction] Individual augmentation scaling parameters#1897
[beaminteraction] Individual augmentation scaling parameters#1897isteinbrecher wants to merge 2 commits into4C-multiphysics:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
Adds independent augmentation scaling for beam vs. solid DOFs in beam-to-solid volume meshtying by introducing two new input parameters and applying them during augmented Lagrange penalty regularization assembly.
Changes:
- Introduce
AUGMENTATION_SCALING_PARAMETER_BEAM/..._SOLIDparameters and plumb them through beam-to-solid params. - Expose beam/solid DOF row maps from the mortar manager to support selective scaling.
- In indirect assembly, assemble penalty regularization into temporary objects, apply row-wise scaling, and accumulate into the global system.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/core/linalg/src/sparse/4C_linalg_fevector.hpp | Inline-implements FEVector::multiply(...) via Epetra call wrapper. |
| src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.hpp | Adds getters + members for beam/solid augmentation scaling parameters. |
| src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp | Initializes + reads new scaling parameters from input list. |
| src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_mortar_manager.hpp | Adds accessors for beam and solid DOF row maps. |
| src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp | Registers new input parameters with defaults and descriptions. |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp | Extends assembly manager interface to accept meshtying params. |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp | Applies beam/solid-specific scaling to penalty regularization contributions before adding to system. |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp | Extends direct assembly manager interface to accept meshtying params. |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp | Updates signature to match new interface (params currently unused here). |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp | Updates base virtual interface for evaluate_force_stiff(...). |
| src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp | Passes meshtying params through to assembly managers. |
...tion/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp
Outdated
Show resolved
Hide resolved
...teraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp
Outdated
Show resolved
Hide resolved
...tion/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp
Outdated
Show resolved
Hide resolved
...tion/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp
Show resolved
Hide resolved
e65ea1d to
19d0d3c
Compare
isteinbrecher
left a comment
There was a problem hiding this comment.
@maxfirmbach Thanks for the changes!
Do you have an idea how we can actually test this feature? I think with the current test, different values of the scaling parmeters will lead to a passing test, since in the converged state these values don't matter. Should we maybe test all the "augmented" test cases with a single newton step and ConstDis predictor? (Of course it would be nice if we could simply test the global tangent matrix, but for now the other approach should also work).
| }; | ||
|
|
||
| add_scaling_values_to_vector(*solid_map, | ||
| beam_to_solid_volume_meshtying_params->get_augmentation_scaling_parameter_solid()); |
There was a problem hiding this comment.
Should we add a check at the beginning of this if clause, that this is not a nullptr?
There was a problem hiding this comment.
Yes, I guess this makes sense.
Yeah, not sure yet ... we could do it that way. |
@maxfirmbach this should somewhat do what we talked about. We can now scale the augmentation blocks for beam and solid independently. This can be controlled via the parameters
AUGMENTATION_SCALING_PARAMETER_BEAMandAUGMENTATION_SCALING_PARAMETER_SOLIDwhich simply scale the penalty terms. The underlying penalty calculation is not changed.I think it makes sense to do it this way, as a different penalty parameter for beam and solid violates momentum conservation and I prefer not to have that in the main evaluation routine of the penalty terms.
We still have to think about a good way to test this feature.