Skip to content

[GeoMechanicsApplication] Integrate the functionality for UPw interfaces#14266

Merged
markelov208 merged 31 commits intomasterfrom
geo/14042-integration-tests-for-UPw-interface
Apr 13, 2026
Merged

[GeoMechanicsApplication] Integrate the functionality for UPw interfaces#14266
markelov208 merged 31 commits intomasterfrom
geo/14042-integration-tests-for-UPw-interface

Conversation

@markelov208
Copy link
Copy Markdown
Contributor

@markelov208 markelov208 commented Mar 9, 2026

📝 Description
A brief description of the PR.

Created integration tests that perform computations for:

  • column with a horizontal_interface
  • column with a vertical_interface
  • column with a horizontal_interface using diff_order_elements

The obtained solutions (displacement and pressure values) are compared with solutions obtained for

  • column
  • column using diff order elements.

Tests are Quasi-static and displacement, pressure and fluid flux are compared for all time steps.

Added PUCoupling , Permeability and FluidBodyFlow to UPwInterfaceElementContributions .

This requires allows to get proper values of pressure and fluid fluxes for these tests but it breaks two tests:

  • building_pit
  • test_interface_prestress
    They have been fixed by adding "IGNORE_UNDRAINED" : true for interface material properties.

A hydraulic discharge flow field is disconnected at the horizontal interface because UPwInterfaceElement does not calculate the discharge now. Therefore a new issue [GeoMechanicsApplication] Add hydraulic discharge calculation in UPw interface element is created.

Fixed error with fluid_flux calculation in SmallStrainUPwDiffOrderElement::CalculateOnIntegrationPoints. A unit test is added.

@markelov208 markelov208 self-assigned this Mar 9, 2026
@markelov208 markelov208 requested a review from a team as a code owner March 9, 2026 14:06
@markelov208
Copy link
Copy Markdown
Contributor Author

Hi @WPK4FEM , @rfaasse and @avdg81 , I've added Permeability to UPwInterfaceElementContributions then building_pit and test_interface_presstress failed. Adding TRANSVERSAL_PERMEABILITY and DYNAMIC_VISCOSITY to MaterialParameters solves them. Is it acceptable?

@WPK4FEM
Copy link
Copy Markdown
Contributor

WPK4FEM commented Mar 10, 2026

Hi @WPK4FEM , @rfaasse and @avdg81 , I've added Permeability to UPwInterfaceElementContributions then building_pit and test_interface_presstress failed. Adding TRANSVERSAL_PERMEABILITY and DYNAMIC_VISCOSITY to MaterialParameters solves them. Is it acceptable?

Hi @markelov208, Yes I think that that is acceptable. Its what the water part of the U-Pw interface element needs.

@rfaasse
Copy link
Copy Markdown
Contributor

rfaasse commented Mar 10, 2026

Hi @WPK4FEM , @rfaasse and @avdg81 , I've added Permeability to UPwInterfaceElementContributions then building_pit and test_interface_presstress failed. Adding TRANSVERSAL_PERMEABILITY and DYNAMIC_VISCOSITY to MaterialParameters solves them. Is it acceptable?

In principle no problem for me. However, since we use IGNORE_UNDRAINED in most of the model, I would not expect this to be necessary. I think if you'd add IGNORE_UNDRAINED: true to the material parameters of the interface (instead of the transversal permeability and dynamic viscosity), it'll also work (and that might be a bit more intuitive, since the rest of the materials also have IGNORE_UNDRAINED set to true.

Comment on lines +190 to +192
"MINIMUM_RELATIVE_PERMEABILITY" : 0.0001,
"TRANSVERSAL_PERMEABILITY" : 5.0e-4,
"DYNAMIC_VISCOSITY" : 1.0e-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.

As mentioned in the other comment, I think this would also work:

Suggested change
"MINIMUM_RELATIVE_PERMEABILITY" : 0.0001,
"TRANSVERSAL_PERMEABILITY" : 5.0e-4,
"DYNAMIC_VISCOSITY" : 1.0e-3
"IGNORE_UNDRAINED" : true,

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.

Because in that case, the contributions for permeability would be ignored by the interface element

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thank you for the suggestion! It works.

Copy link
Copy Markdown
Contributor

@rfaasse rfaasse left a comment

Choose a reason for hiding this comment

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

Hi Gennady, thank you for adding the integration tests for the interface! As mentioned the PR will likely change due to the fluid body flow etc, but these are my intermediate comments!

"WATER_PRESSURE", no_pressure_time, no_pressure_output, [5]
)[0]

self.assertGreater(baseline_top_pressure - no_pressure_top_pressure, 900.0)
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.

What is the reason we use an assertGreater instead of assertAlmostEqual here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The test has been generated by AI and I kept it just in case. Right now I removed it because it checks the imposed pressure. It should be somewhere for the tables/boundaries.

Comment on lines +72 to +76
Displacement and water pressure values obtained with and without the interface are compared for all nodes. The following pairs are used:

- `column_horizontal_interface` and `column`,
- `column_vertical_interface` and `column`,
- `column_horizontal_interface_diff_order_elements` and `column_diff_order_elements`.
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.

If I understand correctly, this means we check that adding the interface does not have an effect on the results. That probably means we have high stiffnesses, such that the interfaces stay closed (correct me if I'm wrong).

I'm not sure, just asking, but would there be a benefit in having at least 1 test which does have an open interface (i.e. would it increase the covered paths within the element)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You are right these tests show that the solution is the same with/without an interface and the interface stays rather thin. If stiffness values are lower then the interface gets thicker and a solution changes. It is not clear what to check in this case.

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.

The stiffness values of the interface element will have an effect on the obtained displacement (additional deformation compared to the situation where there is no interface, assuming the normal stiffness is not nearly "infinite"). And I suspect the transverse permeability has an impact on the groundwater flow (if it is less permeable than the surrounding soil, I mean).

I think it's wise to double-check the obtained results with @WPK4FEM.

Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/column/column.mdpa Outdated
Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/README.md
Comment thread applications/GeoMechanicsApplication/geo_mechanics_application.h
Comment on lines +97 to +100
Begin Table 2 TIME WATER_PRESSURE
0.0000000000 0.0000000000
1.0000000000 1000.0000000000
End Table
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.

Since the water pressure is time dependent, does it make sense to add asserts for more time steps than just the latest ones?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Correct, now tests check parameters for all times steps.

Comment on lines +42 to +47
"max_line_search_iterations": 5,
"first_alpha_value": 0.5,
"second_alpha_value": 1.0,
"min_alpha": 0.1,
"max_alpha": 2.0,
"line_search_tolerance": 0.5,
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.

I don't think these params are needed, since we don't use line search

Suggested change
"max_line_search_iterations": 5,
"first_alpha_value": 0.5,
"second_alpha_value": 1.0,
"min_alpha": 0.1,
"max_alpha": 2.0,
"line_search_tolerance": 0.5,

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed

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.

It might be GitHub, but I still see these parameters here (and in the other project parameter files)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sorry it seems they are pop-up due to changing the folder structure. removed

"kratos_module": "KratosMultiphysics.GeoMechanicsApplication",
"process_name": "ApplyK0ProcedureProcess",
"Parameters": {
"model_part_name": "PorousDomain.settlement_computational_model_part"
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.

Just to validate my understanding, this means it's the intention that K0 is done for the interfaces as well, right?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed. Initially, the test was falling with Soil. Tried to find the reason.

Copy link
Copy Markdown
Contributor Author

@markelov208 markelov208 left a comment

Choose a reason for hiding this comment

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

Hi Richard, many thanks for the review. It helped me to improve these tests and to learn better integration tests in general.

Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/column/column.mdpa Outdated
"WATER_PRESSURE", no_pressure_time, no_pressure_output, [5]
)[0]

self.assertGreater(baseline_top_pressure - no_pressure_top_pressure, 900.0)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The test has been generated by AI and I kept it just in case. Right now I removed it because it checks the imposed pressure. It should be somewhere for the tables/boundaries.

Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/README.md
Comment thread applications/GeoMechanicsApplication/geo_mechanics_application.h
project_parameters_filenames = (
project_parameters_filenames or self.project_parameters_filenames
)
status = run_geo_settlement.run_stages(case_path, project_parameters_filenames)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Frankly speaking, I just grabbed something that I met first.

"kratos_module": "KratosMultiphysics.GeoMechanicsApplication",
"process_name": "ApplyK0ProcedureProcess",
"Parameters": {
"model_part_name": "PorousDomain.settlement_computational_model_part"
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed. Initially, the test was falling with Soil. Tried to find the reason.

Comment on lines +329 to +346
def test_horizontal_interface(self):
file_path = test_helper.get_file_path(os.path.join("UPw_interface", "column"))
output_data = self._run_two_stage_soil_case(file_path)
self.assertTrue(output_data.get("results"))

def test_horizontal_interface_diff_order(self):
file_path = test_helper.get_file_path(
os.path.join("UPw_interface", "column_diff_order_elements")
)
output_data = self._run_two_stage_soil_case(file_path)
self.assertTrue(output_data.get("results"))

def test_vertical_interface(self):
file_path = test_helper.get_file_path(
os.path.join("UPw_interface", "column_vertical_interface")
)
output_data = self._run_two_stage_interface_case(file_path)
self.assertTrue(output_data.get("results"))
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, these tests just run. Now removed them because these computations are also done in other tests.

Comment on lines +179 to +183
if pair not in seen_pairs:
seen_pairs.add(pair)
node_id_pairs.append(pair)

return node_id_pairs
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

a vertical interface consists of two elements and repeated pairs of nodes exist.

Comment thread applications/GeoMechanicsApplication/tests/test_upw_interface.py Outdated
Comment on lines +97 to +100
Begin Table 2 TIME WATER_PRESSURE
0.0000000000 0.0000000000
1.0000000000 1000.0000000000
End Table
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Correct, now tests check parameters for all times steps.

@markelov208 markelov208 requested a review from rfaasse March 13, 2026 12:57
Copy link
Copy Markdown
Contributor

@rfaasse rfaasse left a comment

Choose a reason for hiding this comment

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

Hi Gennady, apologies for not re-reviewing sooner, I missed the mail. To me, this looks almost good to go, I just have a small suggestion and one question left. Other than that, I think it's a good idea if @WPK4FEM and @avdg81 still have a look 👍

Comment on lines +42 to +47
"max_line_search_iterations": 5,
"first_alpha_value": 0.5,
"second_alpha_value": 1.0,
"min_alpha": 0.1,
"max_alpha": 2.0,
"line_search_tolerance": 0.5,
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.

It might be GitHub, but I still see these parameters here (and in the other project parameter files)

project_parameters_filenames = (
project_parameters_filenames or self.project_parameters_filenames
)
status = run_geo_settlement.run_stages(case_path, project_parameters_filenames)
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.

In that case, since run_geo_settlement is at this moment not that generic, I'd propose to use the python workflow 👍

Comment on lines 148 to 153
"kratos_module": "KratosMultiphysics.GeoMechanicsApplication",
"process_name": "ApplyK0ProcedureProcess",
"Parameters": {
"model_part_name": "PorousDomain.settlement_computational_model_part"
"model_part_name": "PorousDomain.Soil"
}
}
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.

Does this mean that K0 should not be applied to the interfaces?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

There are no any effects of the model part name. Perhaps, this is a topic for the next study.

Comment on lines +179 to +183
if pair not in seen_pairs:
seen_pairs.add(pair)
node_id_pairs.append(pair)

return node_id_pairs
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.

Okay, I still don't fully understand the code then, because seen_pairs is a set (so only contains unique items if I'm correct) and a pair is only added to node_id_pairs if it's not in the set. Could you explain this a bit more?

@avdg81
Copy link
Copy Markdown
Contributor

avdg81 commented Apr 8, 2026

Hi Gennady, apologies for not re-reviewing sooner, I missed the mail. To me, this looks almost good to go, I just have a small suggestion and one question left. Other than that, I think it's a good idea if @WPK4FEM and @avdg81 still have a look 👍

@rfaasse: I'm looking into it 👍

Copy link
Copy Markdown
Contributor

@avdg81 avdg81 left a comment

Choose a reason for hiding this comment

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

Hi Gennady,

Thanks a lot for all the work that you've done for this PR. I like that you've set things up in a systematic way 👍 I have several suggestions and a few questions.

In addition, I have found two files that define a constitutive law for interface elements, but which don't have IGNORE_UNDRAINED set (is that intentional?):

  • line_interface_elements/common/MaterialParameters.json
  • test_mohr_coulomb_with_tension_cutoff/interface_coulomb_2plus2/MaterialParameters.json (this one doesn't have any pore water properties defined)

One more thing: can you also please update this branch with the latest changes from master and then reformat the code (using kp format), to make sure the new JSON files are formatted correctly? Thanks.

// Arrange
auto p_element =
CreateSmallStrainUPwDiffOrderElementWithUPwDofs(CreatePropertiesForUPwDiffOrderElementTest());
SetSolutionStepValuesForGeneralCheck(p_element); // uniform pressure + gravity
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.

When I looked at this function, I noticed that it only sets displacements at three of the six nodes. Not sure what happens at the mid-side nodes. This is not related in any way to your changes, but I was curious about what we prescribe and then I happened to see this. Perhaps just something to think about.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

this is a separate action due to replace of auto with Vector . In release mode the flux was always 0. Sorry the goal was to check the non-zero flux only.

Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/column/column.mdpa Outdated
Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/column/column.mdpa Outdated
Comment on lines +34 to +37
def _run_two_stage_case(self, case_path, project_parameters_filenames=None):
project_parameters_filenames = (
project_parameters_filenames or self.project_parameters_filenames
)
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.

When we call _run_two_stage_case in our test cases, we always provide a value for project_parameters_filenames. That is, in our tests, the value will never be None. Therefore, I would suggest to remove the check and just use what is being passed. Then, you also no longer need to define self.project_parameters_filenames.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

removed

Comment thread applications/GeoMechanicsApplication/tests/test_upw_interface.py
Comment on lines +57 to +61
def _all_times(output_data):
times = GiDOutputFileReader.get_time_steps_from_first_valid_result(output_data)
if not times:
raise RuntimeError("No valid output time steps found")
return times
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.

I feel this approach is a bit tricky, since now the time steps depend on the produced output, which may be incorrect. I suspect that we know in advance which time steps will be calculated, so I would prefer to have hard-coded lists of expected time steps.

}

@staticmethod
def _read_mdpa_nodes(mdpa_file_path):
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.

I'm not sure, but perhaps you can use read_coordinates_from_post_msh_file from test_helper.py? If you really need to have a map from node ID to position, we could add a second helper function (e.g. extract_node_map_from_post_msh_file) that does just that (see variable node_map in the body of read_coordinates_from_post_msh_file), and then let read_coordinates_from_post_msh_file call extract_node_map_from_post_msh_file and produce the coordinates list from that.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thank you for the info. I tried to use read_coordinates_from_post_msh_file and met a situation that in column_vertical_interface folder .post.msh file does not include all nodes. Nodes used only in the vertical interface are missed. Perhaps, we can discuss it.

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.

Wow, this is a lot of test code. I see that many things have been set up in a very generic way, which is generally a good idea. For test code, however, and in particular for asserting certain results, it may be clearer to hard-code, for instance, which times or at which nodes you'd like to check something. That may help to reduce this test code a bit. For now I would suggest to keep the code "as-is", but we may want to simplify it a bit more in a separate PR. What do you think?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

That is AI. Now I reduced the code a bit.

@markelov208
Copy link
Copy Markdown
Contributor Author

Hi Gennady,

Thanks a lot for all the work that you've done for this PR. I like that you've set things up in a systematic way 👍 I have several suggestions and a few questions.

In addition, I have found two files that define a constitutive law for interface elements, but which don't have IGNORE_UNDRAINED set (is that intentional?):

  • line_interface_elements/common/MaterialParameters.json
  • test_mohr_coulomb_with_tension_cutoff/interface_coulomb_2plus2/MaterialParameters.json (this one doesn't have any pore water properties defined)

One more thing: can you also please update this branch with the latest changes from master and then reformat the code (using kp format), to make sure the new JSON files are formatted correctly? Thanks.

the new tests fail when IGNORE_UNDRAINED is removed

Copy link
Copy Markdown
Contributor Author

@markelov208 markelov208 left a comment

Choose a reason for hiding this comment

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

Hi Richard and Anne, many thanks for the reviews and suggestions how to improve the tests. Unfortunately, I was not able to use all these suggestions. Hope we can discuss them.

Comment on lines +179 to +183
if pair not in seen_pairs:
seen_pairs.add(pair)
node_id_pairs.append(pair)

return node_id_pairs
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

As far as I understand a set is faster and a list preserves the order. The number of pairs is small in these tests so only the list can be used. Removed seen_pairs.

Comment on lines +42 to +47
"max_line_search_iterations": 5,
"first_alpha_value": 0.5,
"second_alpha_value": 1.0,
"min_alpha": 0.1,
"max_alpha": 2.0,
"line_search_tolerance": 0.5,
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sorry it seems they are pop-up due to changing the folder structure. removed

project_parameters_filenames = (
project_parameters_filenames or self.project_parameters_filenames
)
status = run_geo_settlement.run_stages(case_path, project_parameters_filenames)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

switched to run_multiple_stages, this required some changes in it and adding K0 parameters in material files.

Comment on lines 148 to 153
"kratos_module": "KratosMultiphysics.GeoMechanicsApplication",
"process_name": "ApplyK0ProcedureProcess",
"Parameters": {
"model_part_name": "PorousDomain.settlement_computational_model_part"
"model_part_name": "PorousDomain.Soil"
}
}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

There are no any effects of the model part name. Perhaps, this is a topic for the next study.

// Arrange
auto p_element =
CreateSmallStrainUPwDiffOrderElementWithUPwDofs(CreatePropertiesForUPwDiffOrderElementTest());
SetSolutionStepValuesForGeneralCheck(p_element); // uniform pressure + gravity
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

this is a separate action due to replace of auto with Vector . In release mode the flux was always 0. Sorry the goal was to check the non-zero flux only.

Comment thread applications/GeoMechanicsApplication/tests/UPw_interface/README.md Outdated
- Constitutive law: `GeoIncrementalLinearElasticInterfaceLaw`
- `INTERFACE_NORMAL_STIFFNESS = 6.4e10`
- `INTERFACE_SHEAR_STIFFNESS = 2.6000869565e10`
- `TRANSVERSAL_PERMEABILITY = 5.0e-4`
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Are k_{\perp} and m^2 OK?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It is just happened because a one stage calculation did not work due to my mistakes in settings and I looked at building_pit model as an example.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

That is AI. Now I reduced the code a bit.

}

@staticmethod
def _read_mdpa_nodes(mdpa_file_path):
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thank you for the info. I tried to use read_coordinates_from_post_msh_file and met a situation that in column_vertical_interface folder .post.msh file does not include all nodes. Nodes used only in the vertical interface are missed. Perhaps, we can discuss it.

@markelov208 markelov208 requested review from avdg81 and rfaasse April 9, 2026 12:31
Copy link
Copy Markdown
Contributor

@avdg81 avdg81 left a comment

Choose a reason for hiding this comment

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

I feel this PR is good to go. Thanks a lot for processing the review suggestions. 👍

Copy link
Copy Markdown
Contributor

@WPK4FEM WPK4FEM left a comment

Choose a reason for hiding this comment

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

Hi Gennady,
Lets put this in master.
Wijtze Pieter

@markelov208 markelov208 merged commit 6a81a1f into master Apr 13, 2026
10 checks passed
@markelov208 markelov208 deleted the geo/14042-integration-tests-for-UPw-interface branch April 13, 2026 09:51
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.

[GeoMechanicsApplication] Integrate the functionality for UPw interfaces

4 participants