Skip to content

[beaminteraction]Add postprocess routine for Dual Lagrange Multipliers - #2129

Open
dharinib98 wants to merge 1 commit into
4C-multiphysics:mainfrom
dharinib98:postprocess_lambda_dual2
Open

[beaminteraction]Add postprocess routine for Dual Lagrange Multipliers#2129
dharinib98 wants to merge 1 commit into
4C-multiphysics:mainfrom
dharinib98:postprocess_lambda_dual2

Conversation

@dharinib98

Copy link
Copy Markdown
Contributor

Description and Context

This PR implements post-processing of the Lagrange multipliers obtained with the dual LM approach(see #2009), enabling the visualization of smooth Lagrange multiplier curves. The implementation follows the reconstruction described in Equations (34) and (35) of Seitz et al., “Isogeometric dual mortar methods for computational contact mechanics.”

Related Issues and Pull Requests

@dharinib98 dharinib98 self-assigned this Jul 15, 2026
@dharinib98 dharinib98 changed the title [beaminteraction]Add postprocess routine for Lagrange Multipliers [beaminteraction]Add postprocess routine for Dual Lagrange Multipliers Jul 15, 2026

@mayrmt mayrmt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dharinib98 is it true, that this change is related to the runtime output? If yes, please add an output test.

@isteinbrecher isteinbrecher left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution @dharinib98.

I have two additional questions:

  • How is the post processing actually done? (Maybe we should talk about this internally)
  • Why are there no adapted test results / failing tests with this change?

point_coordinates.push_back(Core::FADUtils::cast_to_double(X(dim)));
displacement.push_back(Core::FADUtils::cast_to_double(u(dim)));
lambda_vis.push_back(Core::FADUtils::cast_to_double(lambda_discret(dim)));
lambda_postprocessed_vis.push_back(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we do this in the constextpression if before?

auto& visualization_data = visualization_writer->get_visualization_data();
visualization_data.register_point_data<double>("displacement", 3);
visualization_data.register_point_data<double>("lambda", 3);
visualization_data.register_point_data<double>("lambda_postprocessed", 3);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We now initialize this even, if we don't need the postprocessed lambda. We should not do this postprocessing in cases where we don't need it. We can either automatically do the post processing for the dual shapefuctions or have an input file option postprocess_lambda that allows to turn this on/off (I prefer the input file option).

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.

3 participants