-
Notifications
You must be signed in to change notification settings - Fork 109
feat: make possible to use solid mechanics solver to perform poromechanics initialization #3396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
f181983
053377b
ec91135
6018d8c
c1be658
1313a67
81b57c2
e15d0d1
1d14aeb
4f70588
29d6887
3ca668f
fa20021
a4872a5
8179a57
c882d2f
035a986
b704634
d9ed44f
62b27fc
999f0b4
e7ca59f
4e44af8
4c5f4f1
ac1a262
f1bbcfe
adcc53f
c187f5d
7440d13
74b5a7b
ab8fa82
b95d65a
aded90f
8cccac0
9b4b156
a75dcfa
a9e15a1
ea3467e
2bfc779
e635c58
ee92b4b
55ec38a
9791525
40889ff
8976830
e266546
8d8441b
829c9a4
ddf2789
0549c83
c71cf4e
104cbb7
8d5c87d
7a4f3d0
e2a7a5a
182906c
7d4ae18
a1e43cb
a13d3dd
02e48df
13b594f
acf4c45
2c70d5e
88e5bd4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -60,7 +60,8 @@ SolidMechanicsLagrangianFEM::SolidMechanicsLagrangianFEM( const string & name, | |
| m_maxForce( 0.0 ), | ||
| m_maxNumResolves( 10 ), | ||
| m_strainTheory( 0 ), | ||
| m_isFixedStressPoromechanicsUpdate( false ) | ||
| m_isFixedStressPoromechanicsUpdate( false ), | ||
| m_performStressInitialization( false ) | ||
| { | ||
|
|
||
| registerWrapper( viewKeyStruct::newmarkGammaString(), &m_newmarkGamma ). | ||
|
|
@@ -1006,6 +1007,8 @@ void SolidMechanicsLagrangianFEM::setupSystem( DomainPartition & domain, | |
| ParallelVector & solution, | ||
| bool const setSparsity ) | ||
| { | ||
| GEOS_LOG( "SolidMechanicsLagrangianFEM::setupSystem" ); | ||
|
|
||
| GEOS_MARK_FUNCTION; | ||
| PhysicsSolverBase::setupSystem( domain, dofManager, localMatrix, rhs, solution, setSparsity ); | ||
|
|
||
|
|
@@ -1021,25 +1024,6 @@ void SolidMechanicsLagrangianFEM::setupSystem( DomainPartition & domain, | |
| arrayView1d< globalIndex const > const | ||
| dofNumber = nodeManager.getReference< globalIndex_array >( dofManager.getKey( solidMechanics::totalDisplacement::key() ) ); | ||
|
|
||
| if( m_contactRelationName != viewKeyStruct::noContactRelationNameString() ) | ||
| { | ||
| ElementRegionManager const & elemManager = mesh.getElemManager(); | ||
| string_array allFaceElementRegions; | ||
| elemManager.forElementRegions< SurfaceElementRegion >( [&]( SurfaceElementRegion const & elemRegion ) | ||
| { | ||
| allFaceElementRegions.emplace_back( elemRegion.getName() ); | ||
| } ); | ||
|
|
||
| finiteElement:: | ||
| fillSparsity< FaceElementSubRegion, | ||
| solidMechanicsLagrangianFEMKernels::ImplicitSmallStrainQuasiStatic >( mesh, | ||
| allFaceElementRegions, | ||
| this->getDiscretizationName(), | ||
| dofNumber, | ||
| dofManager.rankOffset(), | ||
| sparsityPattern ); | ||
|
|
||
| } | ||
| finiteElement:: | ||
| fillSparsity< CellElementSubRegion, | ||
| solidMechanicsLagrangianFEMKernels::ImplicitSmallStrainQuasiStatic >( mesh, | ||
|
|
@@ -1072,7 +1056,7 @@ void SolidMechanicsLagrangianFEM::assembleSystem( real64 const GEOS_UNUSED_PARAM | |
| MeshLevel & mesh, | ||
| string_array const & regionNames ) | ||
| { | ||
| if( m_isFixedStressPoromechanicsUpdate ) | ||
| if( m_isFixedStressPoromechanicsUpdate || m_performStressInitialization ) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not that this PR is the introduction of this, but the single physics solver shouldn't know about the coupled physics solver.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In the case of coupled reservoir and well solver, where the event section only activates the reservoir solver, doesn't the well solver need to know that reservoir solver is assuming that well variables are constant. the well solver knows its coupled to the reservoir via perforations. |
||
| { | ||
| set< string > poromechanicsRegions; | ||
| set< string > mechanicsRegions; | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@CusiniM this seems not needed and when called - it does not work, no FE discretization is registered for face elements