Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .integrated_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
baselines:
bucket: geosx
baseline: integratedTests/baseline_integratedTests-pr3280-8463-4595d21
baseline: integratedTests/baseline_integratedTests-pr3408-8504-5db9ba0

allow_fail:
all: ''
Expand Down
4 changes: 4 additions & 0 deletions BASELINE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ This file is designed to track changes to the integrated test baselines.
Any developer who updates the baseline ID in the .integrated_tests.yaml file is expected to create an entry in this file with the pull request number, date, and their justification for rebaselining.
These notes should be in reverse-chronological order, and use the following time format: (YYYY-MM-DD).

PR #3408 (2024-11-06)
====================
EFEM bugfixes: effective traction + oldStress.

PR #3280 (2024-11-05)
====================
Added Sprig-slider test.
Expand Down
8 changes: 8 additions & 0 deletions src/coreComponents/constitutive/solid/CoupledSolidBase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,14 @@
return getBaseSolidModel().getDensity();
}

/*
* @brief get the current solid effective stress
* return a constant arrayView3d to effective stress in Voigt form
*/
arrayView3d< real64 const, solid::STRESS_USD > const getEffectiveStress() const

Check warning on line 177 in src/coreComponents/constitutive/solid/CoupledSolidBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/constitutive/solid/CoupledSolidBase.hpp#L177

Added line #L177 was not covered by tests
{
return getBaseSolidModel().getStress();

Check warning on line 179 in src/coreComponents/constitutive/solid/CoupledSolidBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/constitutive/solid/CoupledSolidBase.hpp#L179

Added line #L179 was not covered by tests
}

/*
* @brief get the current biot coefficient
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@
stencilCellsRegionIndex[1] = fractureRegionIndex;
stencilCellsSubRegionIndex[1] = 0;
stencilCellsIndex[1] = kes;
stencilWeights[1] = 4. * faceArea[fractureRegionIndex] / hydraulicAperture[fractureRegionIndex][0][kes];
stencilWeights[1] = 4. * faceArea[kes] / hydraulicAperture[fractureRegionIndex][0][kes];

Check warning on line 594 in src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp#L594

Added line #L594 was not covered by tests
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

weird bug...


edfmStencil.add( 2,
stencilCellsRegionIndex.data(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,9 @@

// Compute the local residuals
LvArray::tensorOps::Ri_add_AijBj< 3, 3 >( stack.localRw, stack.localKww, stack.wLocal );
LvArray::tensorOps::Ri_add_AijBj< 3, nUdof >( stack.localRw, stack.localKwu, stack.uLocal );
LvArray::tensorOps::Ri_add_AijBj< nUdof, 3 >( stack.localRu, stack.localKuw, stack.wLocal );
// add EqM * effStress into the residual of enrichment nodes
LvArray::tensorOps::add< 3 >( stack.localRw, stack.localEqMStress );

Check warning on line 225 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp#L225

Added line #L225 was not covered by tests

// Add traction contribution
LvArray::tensorOps::scaledAdd< 3 >( stack.localRw, stack.tractionVec, -1 );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
inputDt,
inputGravityVector ),
m_w( embeddedSurfSubRegion.getField< fields::contact::dispJump >().toView() ),
m_effStress( inputConstitutiveType.getStress()),

Check warning on line 110 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp#L110

Added line #L110 was not covered by tests
m_tractionVec( embeddedSurfSubRegion.getField< fields::contact::traction >().toViewConst() ),
m_dTraction_dJump( embeddedSurfSubRegion.getField< fields::contact::dTraction_dJump >().toViewConst() ),
m_nVec( embeddedSurfSubRegion.getNormalVector().toViewConst() ),
Expand Down Expand Up @@ -144,6 +145,7 @@
localKww{ { 0.0 } },
localKwu{ { 0.0 } },
localKuw{ { 0.0 } },
localEqMStress{ 0.0 },

Check warning on line 148 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp#L148

Added line #L148 was not covered by tests
wLocal(),
uLocal(),
hInv(),
Expand Down Expand Up @@ -171,6 +173,9 @@
/// C-array storage for the element local Kuw matrix.
real64 localKuw[numUdofs][numWdofs];

/// C-array storage for the element local EqM*effStress vector.
real64 localEqMStress[numWdofs];

/// Stack storage for the element local jump vector
real64 wLocal[3];

Expand Down Expand Up @@ -249,6 +254,9 @@
// Gauss contribution to Kww, Kwu and Kuw blocks
real64 Kww_gauss[3][3], Kwu_gauss[3][nUdof], Kuw_gauss[nUdof][3];

// Gauss contirbution to eqMStress which is EqMatrix*effStress, all stresses are in Voigt notation
real64 eqMStress_gauss[3]{};

Check warning on line 258 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp#L258

Added line #L258 was not covered by tests

// Compatibility, equilibrium and strain operators. The compatibility operator is constructed as
// a 3 x 6 because it is more convenient for construction purposes (reduces number of local var).
real64 compMatrix[3][6], strainMatrix[6][nUdof], eqMatrix[3][6];
Expand Down Expand Up @@ -292,17 +300,25 @@
LvArray::tensorOps::Rij_eq_AikBkj< 3, nUdof, 6 >( Kwu_gauss, matED, strainMatrix );
// transp(B)DB
LvArray::tensorOps::Rij_eq_AikBjk< nUdof, 3, 6 >( Kuw_gauss, matBD, compMatrix );
// EqMatrix * effStress
LvArray::tensorOps::Ri_eq_AijBj< 3, 6 >( eqMStress_gauss, eqMatrix, m_effStress[k][q] );

Check warning on line 304 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp#L304

Added line #L304 was not covered by tests

/// FIX: add old Equilibrium operator times oldStress (in Voigt notation)
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

LvArray::tensorOps::Rij_eq_AikBjk< 3, 3, 6 >( rw, eqMatrix, oldStressVoigt );

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

and then change uLocal in this kernel to be the increment.


// multiply by determinant and add to element matrix
LvArray::tensorOps::scaledAdd< 3, 3 >( stack.localKww, Kww_gauss, -detJ );
LvArray::tensorOps::scaledAdd< 3, nUdof >( stack.localKwu, Kwu_gauss, -detJ );
LvArray::tensorOps::scaledAdd< nUdof, 3 >( stack.localKuw, Kuw_gauss, -detJ );
LvArray::tensorOps::scaledAdd< 3 >( stack.localEqMStress, eqMStress_gauss, -detJ );

Check warning on line 312 in src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp#L312

Added line #L312 was not covered by tests
}

protected:

arrayView2d< real64 > const m_w;

/// The effective stress at the current time
arrayView3d< real64 const, solid::STRESS_USD > m_effStress;

arrayView2d< real64 const > const m_tractionVec;

arrayView3d< real64 const > const m_dTraction_dJump;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -489,9 +489,7 @@

arrayView1d< real64 const > const area = subRegion.getElementArea().toViewConst();

arrayView2d< real64 > const & fractureTraction = subRegion.template getField< fields::contact::traction >();

arrayView1d< real64 > const & dTdpf = subRegion.template getField< fields::contact::dTraction_dPressure >();
arrayView2d< real64 > const & fractureContactTraction = subRegion.template getField< fields::contact::traction >();

Check warning on line 492 in src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp#L492

Added line #L492 was not covered by tests
Copy link
Contributor

Choose a reason for hiding this comment

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

I gave a different name called fractureContactTraction. if you prefer to effectiveTraction, i can change it. @CusiniM

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I think I prefer effectiveTraction. I even think that we should change the name of the field that gets written in teh output. That would actually be more important coz this is just an internal name

Copy link
Contributor

Choose a reason for hiding this comment

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

i agree. we should refactor it. e.g., two distinct traction fields, one is total while the other is effective. It will make the meaning much clear.


arrayView1d< real64 const > const & pressure =
subRegion.template getField< fields::flow::pressure >();
Expand Down Expand Up @@ -524,8 +522,7 @@
aperture,
oldHydraulicAperture,
hydraulicAperture,
fractureTraction,
dTdpf );
fractureContactTraction );

Check warning on line 525 in src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp#L525

Added line #L525 was not covered by tests

} );
} );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
localKww{ { 0.0 } },
localKwu{ { 0.0 } },
localKuw{ { 0.0 } },
localEqMStress { 0.0 },

Check warning on line 118 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp#L118

Added line #L118 was not covered by tests
localKwpm{ 0.0 },
localKwpf( 0.0 ),
wLocal(),
Expand Down Expand Up @@ -154,6 +155,9 @@
/// C-array storage for the element local Kuw matrix.
real64 localKuw[numUdofs][numWdofs];

/// C-array storage for the element local EqM*effStress vector.
real64 localEqMStress[numWdofs];

/// C-array storage for the element local Kwpm matrix.
real64 localKwpm[numWdofs];

Expand Down Expand Up @@ -233,6 +237,9 @@

arrayView2d< real64 const > const m_w;

/// The effective stress at the current time
arrayView3d< real64 const, solid::STRESS_USD > m_effStress;

/// The global degree of freedom number
arrayView1d< globalIndex const > const m_matrixPresDofNumber;

Expand All @@ -249,6 +256,9 @@
/// The rank-global fluid pressure array.
arrayView1d< real64 const > const m_matrixPressure;

/// The rank-global fluid pressure array.
arrayView1d< real64 const > const m_fracturePressure;

/// The rank-global delta-fluid pressure array.
arrayView2d< real64 const > const m_porosity_n;

Expand Down Expand Up @@ -314,8 +324,7 @@
* @param[out] deltaVolume the change in volume
* @param[out] aperture the aperture
* @param[out] hydraulicAperture the effecture aperture
* @param[out] fractureTraction the fracture traction
* @param[out] dFractureTraction_dPressure the derivative of the fracture traction wrt pressure
* @param[out] fractureContactTraction the fracture contact traction
*/
template< typename POLICY, typename POROUS_WRAPPER, typename CONTACT_WRAPPER >
static void
Expand All @@ -330,8 +339,7 @@
arrayView1d< real64 > const & aperture,
arrayView1d< real64 const > const & oldHydraulicAperture,
arrayView1d< real64 > const & hydraulicAperture,
arrayView2d< real64 > const & fractureTraction,
arrayView1d< real64 > const & dFractureTraction_dPressure )
arrayView2d< real64 > const & fractureEffectiveTraction )
{
forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k )
{
Expand All @@ -341,23 +349,21 @@
real64 dHydraulicAperture_dNormalJump = 0.0;
real64 dHydraulicAperture_dNormalTraction = 0.0;
hydraulicAperture[k] = contactWrapper.computeHydraulicAperture( aperture[k],
fractureTraction[k][0],
fractureEffectiveTraction[k][0],
dHydraulicAperture_dNormalJump,
dHydraulicAperture_dNormalTraction );

deltaVolume[k] = hydraulicAperture[k] * area[k] - volume[k];

// traction on the fracture to include the pressure contribution
fractureTraction[k][0] -= pressure[k];
dFractureTraction_dPressure[k] = -1.0;

real64 const jump[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3 ( dispJump[k] );
real64 const traction[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3 ( fractureTraction[k] );
real64 const effectiveTraction[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3 ( fractureEffectiveTraction[k] );

Check warning on line 359 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp#L359

Added line #L359 was not covered by tests

// all perm update models below should need effective traction instead of total traction
// (total traction is combined forces of fluid pressure and effective traction)
porousMaterialWrapper.updateStateFromPressureApertureJumpAndTraction( k, 0, pressure[k],
oldHydraulicAperture[k], hydraulicAperture[k],
dHydraulicAperture_dNormalJump,
jump, traction );
Copy link
Contributor

Choose a reason for hiding this comment

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

in the previous version, the total traction is passed to the porousMaterialWrapper to update perm. I think only contact traction is needed here. I corrected it here but it may change the results from Integrated Tests. @CusiniM @paveltomin

Copy link
Contributor

Choose a reason for hiding this comment

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

Now the traction in ContactFields.hpp only represents the contact traction which will be rendered in paraview. Like total stress and effective stress in the rock matrix, user has to do their own calculation to get total force on the fracture. I think this will make the naming more consistent with the data stored here. @CusiniM @paveltomin

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I would call it effectiveTraction but yes, this is how it should be IMO. It's also how it is for the other contact solver so it's nice to be consistent.

jump, effectiveTraction );

} );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
m_disp( nodeManager.getField< fields::solidMechanics::totalDisplacement >() ),
m_deltaDisp( nodeManager.getField< fields::solidMechanics::incrementalDisplacement >() ),
m_w( embeddedSurfSubRegion.getField< fields::contact::dispJump >() ),
m_effStress( inputConstitutiveType.getEffectiveStress()),

Check warning on line 74 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L74

Added line #L74 was not covered by tests
m_matrixPresDofNumber( elementSubRegion.template getReference< array1d< globalIndex > >( inputFlowDofKey ) ),
m_fracturePresDofNumber( embeddedSurfSubRegion.template getReference< array1d< globalIndex > >( inputFlowDofKey ) ),
m_wDofNumber( jumpDofNumber ),
Expand All @@ -80,6 +81,7 @@
m_dFluidDensity_dPressure( embeddedSurfSubRegion.template getConstitutiveModel< constitutive::SingleFluidBase >( elementSubRegion.template getReference< string >(
fluidModelKey ) ).dDensity_dPressure() ),
m_matrixPressure( elementSubRegion.template getField< fields::flow::pressure >() ),
m_fracturePressure( embeddedSurfSubRegion.template getField< fields::flow::pressure >() ),

Check warning on line 84 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L84

Added line #L84 was not covered by tests
m_porosity_n( inputConstitutiveType.getPorosity_n() ),
m_tractionVec( embeddedSurfSubRegion.getField< fields::contact::traction >() ),
m_dTraction_dJump( embeddedSurfSubRegion.getField< fields::contact::dTraction_dJump >() ),
Expand Down Expand Up @@ -188,6 +190,12 @@
FUNC && kernelOp ) const
{

// The quarature kernal deals with the fracture force balance (eq. 29 in https://onlinelibrary.wiley.com/doi/epdf/10.1002/nag.3168)
// The total stress in matrix: sigma_tau = simga_eff_old + sigma_eff_incr - biot * p_m = sigma_eff_new - biot * p_m
// We can either use formulation: sigma_eff_old + stiffness_matrix * incremental_strain - biot * p_m or directly effective_stress_current
// - biot * p_m
// The latter one is adopted here.

localIndex const embSurfIndex = m_cellsToEmbeddedSurfaces[k][0];

// Get displacement: (i) basis functions (N), (ii) basis function
Expand All @@ -202,6 +210,9 @@
// Gauss contribution to Kww, Kwu and Kuw blocks
real64 Kww_gauss[3][3]{}, Kwu_gauss[3][nUdof]{}, Kuw_gauss[nUdof][3]{}, Kwpm_gauss[3]{};

// Gauss contirbution to eqMStress which is EqMatrix*effStress, all stresses are in Voigt notation
real64 eqMStress_gauss[3]{};

Check warning on line 214 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L214

Added line #L214 was not covered by tests

// Compatibility, equilibrium and strain operators. The compatibility operator is constructed as
// a 3 x 6 because it is more convenient for construction purposes (reduces number of local var).
real64 compMatrix[3][6]{}, strainMatrix[6][nUdof]{}, eqMatrix[3][6]{};
Expand Down Expand Up @@ -247,6 +258,8 @@
LvArray::tensorOps::Rij_eq_AikBkj< 3, nUdof, 6 >( Kwu_gauss, matED, strainMatrix );
// transp(B)DB
LvArray::tensorOps::Rij_eq_AikBjk< nUdof, 3, 6 >( Kuw_gauss, matBD, compMatrix );
// EqMatrix * effStress
LvArray::tensorOps::Ri_eq_AijBj< 3, 6 >( eqMStress_gauss, eqMatrix, m_effStress[k][q] );

Check warning on line 262 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L262

Added line #L262 was not covered by tests

LvArray::tensorOps::fill< 3 >( Kwpm_gauss, 0 );
for( int i=0; i < 3; ++i )
Expand All @@ -260,6 +273,7 @@
LvArray::tensorOps::scaledAdd< 3, 3 >( stack.localKww, Kww_gauss, -detJ );
LvArray::tensorOps::scaledAdd< 3, nUdof >( stack.localKwu, Kwu_gauss, -detJ );
LvArray::tensorOps::scaledAdd< nUdof, 3 >( stack.localKuw, Kuw_gauss, -detJ );
LvArray::tensorOps::scaledAdd< 3 >( stack.localEqMStress, eqMStress_gauss, -detJ );

Check warning on line 276 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L276

Added line #L276 was not covered by tests

/// TODO: should this be negative???
// I had No neg coz the total stress = effective stress - porePressure
Expand All @@ -285,20 +299,25 @@

// Compute the local residuals
LvArray::tensorOps::Ri_add_AijBj< 3, 3 >( stack.localJumpResidual, stack.localKww, stack.wLocal );
LvArray::tensorOps::Ri_add_AijBj< 3, nUdof >( stack.localJumpResidual, stack.localKwu, stack.dispLocal );
LvArray::tensorOps::Ri_add_AijBj< nUdof, 3 >( stack.localDispResidual, stack.localKuw, stack.wLocal );
// add EqM * effStress into the residual of enrichment nodes
LvArray::tensorOps::add< 3 >( stack.localJumpResidual, stack.localEqMStress );

Check warning on line 304 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L304

Added line #L304 was not covered by tests

// add pore pressure contribution
LvArray::tensorOps::scaledAdd< 3 >( stack.localJumpResidual, stack.localKwpm, m_matrixPressure[ k ] );

localIndex const embSurfIndex = m_cellsToEmbeddedSurfaces[k][0];

// Add traction contribution tranction
// Add total traction contribution from penalty force and fracture pressure
// total traction is T_total = -k * dispJump + pf (where dispJump < 0)
// -1 is because k*dispJump was saved in tractionVec
LvArray::tensorOps::scaledAdd< 3 >( stack.localJumpResidual, stack.tractionVec, -1 );
LvArray::tensorOps::scaledAdd< 3, 3 >( stack.localKww, stack.dTractiondw, -1 );

// JumpFractureFlowJacobian
real64 const localJumpFracPressureJacobian = -m_dTraction_dPressure[embSurfIndex] * m_surfaceArea[embSurfIndex];
// fracture pressure only affects normal direction
stack.localJumpResidual[0] += m_fracturePressure[embSurfIndex] * m_surfaceArea[embSurfIndex];

Check warning on line 318 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L318

Added line #L318 was not covered by tests
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

this sign... I guess that if it works it must be correct.

// fracture force balance residual w.r.t. fracture pressure
real64 const localJumpFracPressureJacobian = m_surfaceArea[embSurfIndex];

Check warning on line 320 in src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp

View check run for this annotation

Codecov / codecov/patch

src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp#L320

Added line #L320 was not covered by tests

// Mass balance accumulation
real64 const newVolume = m_elementVolume( embSurfIndex ) + m_deltaVolume( embSurfIndex );
Expand Down