Skip to content

fix: enable FullyImplicit for SinglePhaseReservoirPoromechanicsConformingFractures#3851

Merged
paveltomin merged 13 commits intodevelopfrom
pt/enable-fim-fracs
Oct 13, 2025
Merged

fix: enable FullyImplicit for SinglePhaseReservoirPoromechanicsConformingFractures#3851
paveltomin merged 13 commits intodevelopfrom
pt/enable-fim-fracs

Conversation

@paveltomin
Copy link
Copy Markdown
Collaborator

@paveltomin paveltomin commented Oct 7, 2025

should fix #3850

fixes are:

  1. assign discretization name for coupled reservoir and wells solver (causes rebaseline)
  2. create a version of assembleSystem for SinglePhasePoromechanicsConformingFractures that has well parts assembly (similar to SinglePhasePoromechanics)

the rest of the changes is cleanup - move code to parent class where possible to avoid duplication

@paveltomin paveltomin self-assigned this Oct 7, 2025
@paveltomin paveltomin added the ci: run integrated tests Allows to run the integrated tests in GEOS CI label Oct 7, 2025
@paveltomin paveltomin added the ci: run CUDA builds Allows to triggers (costly) CUDA jobs label Oct 7, 2025
@paveltomin paveltomin requested a review from Copilot October 7, 2025 18:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR enables the FullyImplicit feature for SinglePhaseReservoirPoromechanicsConformingFractures by refactoring the assembly system architecture. The changes move common assembly logic to the base PoromechanicsSolver class and update derived classes to leverage this shared implementation.

Key changes:

  • Moves assembleSystem implementation from derived classes to PoromechanicsSolver base class
  • Adds virtual assembleElementBasedTerms method for derived class customization
  • Updates error messages to use consistent single quote formatting
  • Adds getDiscretizationName override for coupled reservoir and wells

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
SinglePhasePoromechanicsConformingFractures.hpp Adds assembleSystem override and removes private method declaration
SinglePhasePoromechanicsConformingFractures.cpp Implements template specialization for SinglePhaseReservoirAndWells assembly
SinglePhasePoromechanics.hpp Updates assembleSystem to use base class implementation
SinglePhasePoromechanics.cpp Removes duplicate assembly logic, delegates to base class
PoromechanicsSolver.hpp Adds common assembleSystem implementation and virtual assembleElementBasedTerms
MultiphasePoromechanics.hpp Updates to use base class assembleSystem implementation
MultiphasePoromechanics.cpp Removes duplicate assembly logic, delegates to base class
CoupledReservoirAndWellsBase.hpp Adds virtual getDiscretizationName override
PhysicsSolverBase.hpp Makes getDiscretizationName virtual
MeshObjectPath.cpp Updates error message to use single quotes
testGroupPath.cpp Updates test expectation for new error message format
Group.hpp Updates error messages to use single quotes for consistency

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@paveltomin paveltomin added type: bug Something isn't working flag: no rebaseline Does not require rebaseline labels Oct 7, 2025
@paveltomin
Copy link
Copy Markdown
Collaborator Author

Ready for review

Copy link
Copy Markdown
Contributor

@dkachuma dkachuma left a comment

Choose a reason for hiding this comment

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

Looks good to me. This is also done for multiphase, right?

@paveltomin
Copy link
Copy Markdown
Collaborator Author

Looks good to me. This is also done for multiphase, right?

Once wells are enabled for multiphase, similar version of assembleSystem function needs to be added there, not done yet in this PR

Base::postInputInitialization();

// assume that reservoir solver discretization is the primary one
this->m_discretizationName = reservoirSolver()->getDiscretizationName();
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

this is first fix


Base::assembleSystem( time_n, dt, domain, dofManager, localMatrix, localRhs );

// assemble well contributions
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

this is second fix

@paveltomin paveltomin added flag: requires rebaseline Requires rebaseline branch in integratedTests and removed flag: no rebaseline Does not require rebaseline labels Oct 9, 2025
@paveltomin
Copy link
Copy Markdown
Collaborator Author

@castelletto1 @OmarDuran @frankfeifan @Guotong-Ren review please

Copy link
Copy Markdown
Collaborator

@castelletto1 castelletto1 left a comment

Choose a reason for hiding this comment

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

Looks good to me, thanks.

@paveltomin paveltomin merged commit 13bfc26 into develop Oct 13, 2025
25 of 26 checks passed
@paveltomin paveltomin deleted the pt/enable-fim-fracs branch October 13, 2025 21:44
paveltomin added a commit that referenced this pull request Oct 28, 2025
Added entries for pull requests #3880, #3299, #3279, and #3851 with details on changes and links to integrated tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci: run CUDA builds Allows to triggers (costly) CUDA jobs ci: run integrated tests Allows to run the integrated tests in GEOS CI flag: requires rebaseline Requires rebaseline branch in integratedTests type: bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Crash when switching from Sequential to FullyImplicit in fault model test case

5 participants