Skip to content
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

refactor: Preparatory for well to frac connection #3227

Open
wants to merge 46 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
998857e
first step
Jul 17, 2024
8d2f816
Merge branch 'develop' into pt/well-frac
paveltomin Sep 10, 2024
dba796a
WIP
Sep 13, 2024
c8557e7
enable reservoir+wells+contact mechanics in seq way
Sep 13, 2024
75d7a70
test cases
Sep 13, 2024
85fe134
Merge branch 'develop' into pt/seq-wells-frac
paveltomin Sep 13, 2024
f249115
Merge branch 'develop' into pt/well-frac
paveltomin Sep 13, 2024
d4caa6a
Merge branch 'pt/seq-wells-frac' into pt/well-frac
Sep 13, 2024
c2eb806
format
Sep 13, 2024
7e911d3
fix test
Sep 13, 2024
e927410
bug fix
Sep 13, 2024
7c3b280
remove some debug output
Sep 14, 2024
7839d7a
Merge branch 'pt/seq-wells-frac' into pt/well-frac
paveltomin Sep 14, 2024
c0702ef
test should run now
Sep 14, 2024
a4aa4a2
Merge branch 'develop' into pt/seq-wells-frac
paveltomin Sep 14, 2024
f88f482
Merge branch 'pt/seq-wells-frac' into pt/well-frac
paveltomin Sep 14, 2024
c26e1cc
Update FiniteVolumeManager.cpp
paveltomin Sep 14, 2024
7cef347
Update MeshForLoopInterface.hpp
paveltomin Sep 14, 2024
0f88d5a
Update SinglePhaseWell.cpp
paveltomin Sep 15, 2024
a4041d7
cleanup
Sep 16, 2024
7be3513
test cases
Sep 16, 2024
91d8e63
Merge branch 'pt/seq-wells-frac' into pt/well-frac
paveltomin Sep 16, 2024
7af09b0
Update SurfaceGenerator.cpp
paveltomin Sep 16, 2024
6e63f20
Update EmbeddedSurfaceGenerator.cpp
paveltomin Sep 16, 2024
6733dc1
Update SolidMechanicsMPM.hpp
paveltomin Sep 16, 2024
8a7c8fa
Update SolidMechanicsLagrangianFEM.hpp
paveltomin Sep 16, 2024
a1caadf
Update PhaseFieldFractureSolver.cpp
paveltomin Sep 16, 2024
28a7b0a
Update SolidMechanicsLagrangeContact.cpp
paveltomin Sep 16, 2024
c93f069
build fix and schema
Sep 16, 2024
5d0f32c
connect to all regions by default
Sep 16, 2024
fe5d046
implement subregion loop break
Sep 16, 2024
c4eaa53
remove schema from commit
Sep 16, 2024
ba5f466
Update WellElementSubRegion.cpp
paveltomin Sep 18, 2024
5911c0d
Merge branch 'develop' into pt/seq-wells-frac
paveltomin Sep 18, 2024
bad8ebd
test fix
Sep 18, 2024
c65a65f
Merge branch 'pt/seq-wells-frac' into pt/well-frac
paveltomin Sep 18, 2024
b1a3f19
Merge branch 'develop' into pt/well-frac
paveltomin Oct 25, 2024
f18b63e
Merge remote-tracking branch 'origin/develop' into pt/well-frac
Nov 4, 2024
2f26203
Merge branch 'develop' into pt/well-frac
paveltomin Nov 7, 2024
85bedf6
Merge branch 'develop' into pt/well-frac
paveltomin Nov 11, 2024
af565ed
Merge branch 'develop' into pt/well-frac
paveltomin Nov 17, 2024
29ffe9b
Merge branch 'develop' into pt/well-frac
paveltomin Nov 22, 2024
3051704
Merge remote-tracking branch 'origin/develop' into pt/well-frac
Dec 2, 2024
56d52cb
Update WellGeneratorBase.hpp
paveltomin Dec 2, 2024
f8b21d9
Merge branch 'develop' into pt/well-frac
paveltomin Dec 16, 2024
a979d51
Merge branch 'develop' into pt/well-frac
paveltomin Dec 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
<Problem>
<Included>
<File name="./singlePhasePoromechanics_FaultModel_well_new_base.xml"/>
</Included>

<Solvers
gravityVector="{ 0.0, 0.0, 0.0 }">

<SinglePhasePoromechanicsConformingFracturesReservoir
name="reservoirSolver"
targetRegions="{ Region, Fault, wellRegion1, wellRegion2 }"
initialDt="1e-3"
poromechanicsConformingFracturesSolverName="poroFractureSolver"
wellSolverName="singlePhaseWellSolver"
logLevel="1">
<NonlinearSolverParameters
lineSearchAction="None"
maxTimeStepCuts="10"
newtonTol="1e-3"
newtonMaxIter="20"
maxAllowedResidualNorm="1e+25"/>
<LinearSolverParameters
solverType="direct"/>
</SinglePhasePoromechanicsConformingFracturesReservoir>

<SinglePhasePoromechanicsConformingFractures
name="poroFractureSolver"
targetRegions="{ Region, Fault }"
flowSolverName="singlePhaseFlowSolver"
solidSolverName="fractureMechSolver"
logLevel="1">
</SinglePhasePoromechanicsConformingFractures>

<SolidMechanicsLagrangeContact
name="fractureMechSolver"
stabilizationName="singlePhaseTPFA_stab"
logLevel="1"
targetRegions="{ Region, Fault }"
timeIntegrationOption="QuasiStatic"
discretization="FE1"/>

<SinglePhaseFVM
name="singlePhaseFlowSolver"
logLevel="1"
allowNegativePressure="1"
discretization="singlePhaseTPFA"
targetRegions="{ Region, Fault}" />

<SinglePhaseWell
name="singlePhaseWellSolver"
logLevel="1"
targetRegions="{ wellRegion1, wellRegion2 }">
<WellControls
name="wellControls1"
logLevel="2"
type="producer"
control="BHP"
referenceElevation="-2500"
targetBHP="1e7"
targetTotalRate="1e10" />
<WellControls
name="wellControls2"
logLevel="2"
type="injector"
control="BHP"
referenceElevation="-2500"
targetBHP="10e7"
targetTotalRate="1e10" />
</SinglePhaseWell>
</Solvers>

<Tasks>
<SinglePhasePoromechanicsConformingFracturesInitialization
logLevel="1"
name="SinglePhasePoroelasticityPreEquilibrationStep"
poromechanicsSolverName="poroFractureSolver"/>
</Tasks>

<Events
minTime="-1e11"
maxTime="3.0e7">

<!-- Initialization -->
<SoloEvent
name="SinglePhasePoroelasticityPreEquilibrationStep"
targetTime="-1e11"
beginTime="-1e11"
target="/Tasks/SinglePhasePoroelasticityPreEquilibrationStep"
/>
<!-- Injection -->
<SoloEvent
name="outputPostEquilibrationStep1"
targetTime="0"
targetExactTimestep="1"
target="/Outputs/vtkOutput"/>

<PeriodicEvent
name="outputs"
beginTime="0.0"
endTime="3.0e7"
forceDt="3.0e7"
target="/Outputs/vtkOutput"/>

<PeriodicEvent
name="solverApplication"
endTime="3.0e7"
forceDt="3.0e7"
target="/Solvers/reservoirSolver"/>

<PeriodicEvent
name="restarts"
beginTime="0.0"
endTime="3.0e7"
target="/Outputs/restartOutput"/>
</Events>
</Problem>
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
<Problem>
<Constitutive>
<PorousElasticIsotropic
name="porousRock"
permeabilityModelName="rockPerm"
porosityModelName="rockPorosity"
solidModelName="rock" />

<ElasticIsotropic
name="rock"
defaultDensity="2927"
defaultPoissonRatio="0.15"
defaultYoungModulus="14950000000" />

<CompressibleSinglePhaseFluid
name="water"
compressibility="2.09028227021e-10"
defaultDensity="1325"
defaultViscosity="0.001"
referenceDensity="1325"
referencePressure="0e6"
referenceViscosity="0.001"
viscosibility="0.0" />

<BiotPorosity
name="rockPorosity"
defaultReferencePorosity="0.3"
defaultGrainBulkModulus="7.12e30" />

<ConstantPermeability
name="rockPerm"
permeabilityComponents="{ 1.0e-18, 1.0e-18, 1.0e-18 }" />
<!-- Material inside the fault -->
<CompressibleSolidParallelPlatesPermeability
name="faultFilling"
solidModelName="nullSolid"
porosityModelName="fracturePorosity"
permeabilityModelName="fracturePerm"/>

<PressurePorosity
name="fracturePorosity"
defaultReferencePorosity="1.00"
referencePressure="0e6"
compressibility="0.0"/>

<ParallelPlatesPermeability
name="fracturePerm"/>

<Coulomb
name="fractureContact"
cohesion="40.0e6"
frictionCoefficient="0.01"/>

<HydraulicApertureTable
name="hApertureModel"
apertureTableName="apertureTable"/>

<NullModel
name="nullSolid"/>

</Constitutive>

<FieldSpecifications>

<FieldSpecification
name="fracPorosity"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Fault"
fieldName="fracturePorosity_porosity"
scale="1.00"/>

<FieldSpecification
name="xconstraint"
component="0"
fieldName="totalDisplacement"
objectPath="nodeManager"
scale="0.0"
setNames="{ xnegFace, xposFace }" />

<FieldSpecification
name="yconstraint"
component="1"
fieldName="totalDisplacement"
objectPath="nodeManager"
scale="0.0"
setNames="{ ynegFace, yposFace }" />

<FieldSpecification
name="zconstraint"
component="2"
fieldName="totalDisplacement"
objectPath="nodeManager"
scale="0.0"
setNames="{ znegFace }" />

<Traction
name="tractionTop"
objectPath="faceManager"
tractionType="normal"
scale="-4e7"
setNames="{ zposFace }"/>

<FieldSpecification
name="init_pressure"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions"
fieldName="pressure"
scale="4e7"/>
</FieldSpecifications>

<ElementRegions>
<CellElementRegion
name="Region"
cellBlocks="{ 2_hexahedra, 1_hexahedra, 0_hexahedra }"
materialList="{ water, porousRock }"/>

<SurfaceElementRegion
name="Fault"
faceBlock="fracture"
materialList="{ water, faultFilling, fractureContact, hApertureModel }"
defaultAperture="1e-3"/>

<WellElementRegion
name="wellRegion1"
materialList="{ water }"/>

<WellElementRegion
name="wellRegion2"
materialList="{ water }"/>
</ElementRegions>

<NumericalMethods>
<FiniteElements>
<FiniteElementSpace
name="FE1"
order="1" />
</FiniteElements>

<FiniteVolume>
<TwoPointFluxApproximation
name="singlePhaseTPFA"/>
<TwoPointFluxApproximation
name="singlePhaseTPFA_stab"/>
</FiniteVolume>
</NumericalMethods>

<Outputs>
<VTK
name="vtkOutput" />

<Restart
name="restartOutput"/>
</Outputs>

<Functions>
<TableFunction
name="apertureTable"
coordinates="{ -1.0e-3, 0.0 }"
values="{ 1.0e-3, 1.0e-3 }"
/>
</Functions>

<Mesh>
<VTKMesh
name="mesh1"
useGlobalIds="1"
faceBlocks="{ fracture }"
file="verticalFault_ExternalMesh.vtm">
<InternalWell
name="well_producer1"
logLevel="1"
wellRegionName="wellRegion1"
wellControlsName="wellControls1"
polylineNodeCoords="{ { 5400, 5400, 0 },
{ 5400, 5400, -2500 } }"
polylineSegmentConn="{ { 0, 1 } }"
radius="0.1"
numElementsPerSegment="1">
<Perforation
name="producer1_perf1"
targetRegion="Region"
distanceFromHead="2500"/>
</InternalWell>
<InternalWell
name="well_injector1"
logLevel="1"
wellRegionName="wellRegion2"
wellControlsName="wellControls2"
polylineNodeCoords="{ { -5400, -5400, 0 },
{ -5400, -5400, -2500 } }"
polylineSegmentConn="{ { 0, 1 } }"
radius="0.1"
numElementsPerSegment="1">
<Perforation
name="injector1_perf1"
distanceFromHead="2500"/>
</InternalWell>
</VTKMesh>
</Mesh>

<Geometry>
<Box
name="xposFace"
xMin="{ 5999.99, -6000.01, -4000.01 }"
xMax="{ 6000.01, 6000.01, 0.01 }"/>

<Box
name="xnegFace"
xMin="{-6000.01, -6000.01, -4000.01 }"
xMax="{-5999.99, 6000.01, 0.01 }"/>

<Box
name="yposFace"
xMin="{-6000.01, 5999.99, -4000.01 }"
xMax="{ 6000.01, 6000.01, 0.01 }"/>

<Box
name="ynegFace"
xMin="{-6000.01, -6000.01, -4000.01 }"
xMax="{ 6000.01, -5999.99, 0.01 }"/>

<Box
name="zposFace"
xMin="{-6000.01, -6000.01, -0.01 }"
xMax="{ 6000.01, 6000.01, 0.01 }"/>

<Box
name="znegFace"
xMin="{-6000.01, -6000.01, -4000.01 }"
xMax="{ 6000.01, 6000.01, -3999.99 }"/>
</Geometry>

</Problem>
Loading
Loading