Contact Module

The interaction of moving bodies is a common occurrence in our world, and therefore modeling such problems is essential to accurately represent the mechanical behavior of the physic world. However, finite element methods do not have an inherent means of modeling contact. Therefore, specific contact algorithms are required. These algorithms enforce constraints between surfaces in the mesh, to prevent penetration and develop contact forces. The MOOSE contact module provides the necessary tools for modeling mechanical contact.

Theory

Mechanical contact between fuel pellets and the inside surface of the cladding is based on three requirements.

That is, the penetration distance (typically referred to as the gap in the contact literature) of one of the body into another must not be positive; the contact force opposing penetration must be positive in the normal direction; and either the penetration distance or the contact force must be zero at all times.

In the MOOSE Contact Module, these contact constraints are enforced through the use of node/face constraints. Specifically, the nodes of the fuel pellets are prevented from penetrating cladding faces. This is accomplished in a manner similar to that detailed by Heinstein and Laursen. First, a geometric search determines which master nodes have penetrated slave faces. For those nodes, the internal force computed by the divergence of stress is moved to the appropriate slave face at the point of contact. Those forces are distributed to slave nodes by employing the finite element shape functions. Additionally, the master nodes are constrained to remain on the pellet faces, preventing penetration. The module currently supports frictionless and tied contact. Friction is an important capability, and preliminary support for frictional contact is available.

Finite element contact is notoriously difficult to make efficient and robust in three dimensions. That being the case, effort is underway to improve contact algorithm.

Procedure for using mechanical contact

In the contact module there are currently two sytems to choose from mechanical contact : Dirac and Constraint. Constraint based contact is recommended for two-dimensional problems and Dirac for three-dimensional problems. Constraint contact is more robust but due to the patch size requirement specified in the Mesh block, Constraint contact uses too much memory on 3D problems. Depending upon the contact formalism chosen, the solver options to be used change. The details of the solver parameters recommended for Dirac and Constraint contact formalisms are provided below.

The contact block in the MOOSE input file looks like this :


[Contact]
[./contact]
disp_x = <variable>
disp_y = <variable>
disp_z = <variable>
formulation = <string> (DEFAULT)
friction_coefficient = <real> (0)
master = <string>
model = <string> (frictionless)
normal_smoothing_distance = <real>
normal_smoothing_method = <string> (edge_based)
order = <string> (FIRST)
penalty = <real> (1e8)
normalize_penalty = <bool> (false)
slave = <string>
system = <string> (Dirac)
tangential_tolerance = <real>
tension_release = <real> (0)
[../]
[]


The parameters descriptions are :

• disp_x (Required) Variable name for displacement variable in x direction. Tipically disp_x.

• disp_y Variable name for displacement variable in y direction. Typically disp_y.

• disp_z Variable name for displacement variable in z direction. Typically disp_z

• formulation Select either DEFAULT, KINEMATIC, or PENALTY. DEFAULT is KINEMATIC.

• friction_coefficient The friction coefficient.

• master (Required) The boundary ID for the master surface.

• model Select either frictionless, glued, or coulomb.

• normal_smoothing_distance Distance from face edge in parametric coordinates over which to smooth the contact normal. is a reasonable value.

• normal_smoothing_method Select either edge_based or nodal_normal_based. If nodal_normal_based, must also have a NodalNormals block.

• order The order of the variable. Typical values are FIRST and SECOND.

• penalty The penalty stiffness value to be used in the constraint.

• normalize_penalty Whether to normalize the penalty stiffness by the nodal area of the slave node.

• slave (Required) The boundary ID for the slave surface.

• system The system to use for constraint enforcement. Options are Dirac DiracKernel or Constraint. The default is Dirac.

• tangential_tolerance Tangential distance to extend edges of contact surfaces.

• tension_release Tension release threshold. A node will not be released if its tensile load is below this value. If negative, no tension release will occur.

It is good practice to make the surface with the coarser mesh to be the master surface.

The robustness and accuracy of the mechanical contact algorithm is strongly dependent on the penalty parameter. If the parameter is too small, inaccurate solutions are more likely. If the parameter is too large, the solver may struggle.

The DEFAULT option uses an enforcement algorithmn that moves th internal forces at a slave node to th master face. The distance between the slave node and the master face is penalized, The PENALTY algorithm is the traditional penalty enforcement technique.

Petsc options for contact

The recommended PETSc options for use with Constraint based contact are shown below :


[Executioner]
...
petsc_options_iname = '-pc_type -sub_pc_type -pc_asm_overlap
-ksp_gmres_restart'
petsc_options_value = 'asm lu 20 101'
...
[../]


The recommended PETSc options for use with Dirac based contact are given below:


[Executioner]
...
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type
-pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
...
[../]


DiracKernels

• Moose App
• ConstantPointSource
• FunctionDiracSource
• Heat Conduction App
• GapHeatPointSourceMaster
• Richards App
• Q2PBoreholeApproximates a borehole in the mesh with given bottomhole pressure, and radii using a number of point sinks whose positions are read from a file. This DiracKernel is for use by Q2P models
• RichardsBoreholeApproximates a borehole in the mesh with given bottomhole pressure, and radii using a number of point sinks whose positions are read from a file
• RichardsPolyLineSinkApproximates a polyline sink in the mesh by using a number of point sinks whose positions are read from a file
• XFEMApp
• XFEMPressure
• Porous Flow App
• PorousFlowPeacemanBoreholeApproximates a borehole in the mesh using the Peaceman approach, ie using a number of point sinks with given radii whose positions are read from a file
• PorousFlowPolyLineSinkApproximates a polyline sink by using a number of point sinks with given weighting whose positions are read from a file
• PorousFlowSquarePulsePointSourcePoint source (or sink) that adds (removes) fluid at a constant mass flux rate for times between the specified start and end times.
• Contact App
• ContactMaster
• SlaveConstraint

UserObjects

• Moose App
• AreaPostprocessorComputes the "area" or dimension - 1 "volume" of a given boundary or boundaries in your mesh.
• AverageElementSize
• AverageNodalVariableValue
• AxisymmetricCenterlineAverageValueComputes the average value of a variable on a sideset located along the centerline of an axisymmetric model.
• ChangeOverTimePostprocessorComputes the change or relative change in a post-processor value over a timestep or the entire transient
• ChangeOverTimestepPostprocessorComputes the change or relative change in a post-processor value over a timestep or the entire transient
• CumulativeValuePostprocessor
• DifferencePostprocessor
• ElementAverageSecondTimeDerivativeComputes the element averaged second derivative of variable
• ElementAverageTimeDerivative
• ElementAverageValue
• ElementExtremeValue
• ElementH1Error
• ElementH1SemiError
• ElementIntegralMaterialProperty
• ElementIntegralVariablePostprocessor
• ElementIntegralVariableUserObject
• ElementL2Difference
• ElementL2Error
• ElementL2Norm
• ElementQualityCheckerClass to check the quality of each element using different metrics from libmesh.
• ElementVectorL2Error
• ElementW1pError
• ElementalVariableValueOutputs an elemental variable value at a particular location
• EmptyPostprocessor
• ExecutionerAttributeReporter
• FindValueOnLineFind a specific target value along a sampling line. The variable values along the line should change monotonically. The target value is searched using a bisection algorithm.
• FunctionSideIntegral
• FunctionValuePostprocessor
• GeometrySphereSnap nodes to the surface of a sphere on adaptivity
• LayeredAverage
• LayeredIntegral
• LayeredSideAverage
• LayeredSideFluxAverage
• LayeredSideIntegral
• LinearCombinationPostprocessor
• MemoryUsageMemory usage statistics for the running simulation.
• NearestPointLayeredAverage
• NodalExtremeValue
• NodalL2Error
• NodalL2Norm
• NodalMaxValue
• NodalNormalsCorner
• NodalNormalsEvaluator
• NodalNormalsPreprocessor
• NodalProxyMaxValue
• NodalSum
• NodalVariableValueOutputs values of a nodal variable at a particular location
• NumDOFsReturn the number of Degrees of freedom from either the NL, Aux or both systems.
• NumElemsReturn the number of active or total elements in the simulation.
• NumLinearIterations
• NumNodesReturns the total number of nodes in a simulation (works with DistributedMesh)
• NumNonlinearIterationsOutputs the number of nonlinear iterations
• NumPicardIterations
• NumResidualEvaluations
• NumVarsReturn the number of variables from either the NL, Aux, or both systems.
• PercentChangePostprocessor
• PerfGraphDataRetrieves timing information from the PerfGraph.
• PointValue
• PostprocessorComparisonCompares two post-processors and produces a boolean value
• RelativeDifferencePostprocessorComputes the absolute value of the relative difference between 2 post-processor values.
• RelativeSolutionDifferenceNorm
• Residual
• ScalarL2Error
• ScalarVariable
• ScalePostprocessor
• SideAverageValueComputes the average value of a variable on a sideset. Note that this cannot be used on the centerline of an axisymmetric model.
• SideFluxAverageComputes the integral of the flux over the specified boundary
• SideFluxIntegralComputes the integral of the flux over the specified boundary
• SideIntegralVariablePostprocessor
• SolutionUserObjectReads a variable from a mesh in one simulation to another
• Terminator
• TimeExtremeValueA postprocessor for reporting the extreme value of another postprocessor over time.
• TimestepSizeReports the timestep size
• TotalVariableValue
• VariableInnerProduct
• VariableResidual
• VectorPostprocessorComparisonCompares two vector post-processors of equal size and produces a boolean value
• VerifyElementUniqueID
• VerifyNodalUniqueID
• VolumePostprocessor
• Stochastic Tools Test App
• TestDistributionDirectPostprocessor
• TestDistributionPostprocessor
• TestSampler
• Rdg App
• AEFVFreeOutflowBoundaryFluxFree outflow BC based boundary flux user object for the advection equation using a cell-centered finite volume method.
• AEFVSlopeLimitingOneDOne-dimensional slope limiting to get the limited slope of cell average variable for the advection equation using a cell-centered finite volume method.
• AEFVUpwindInternalSideFluxUpwind numerical flux scheme for the advection equation using a cell-centered finite volume method.
• Phase Field App
• AverageGrainVolumeCalculate average grain area in a polycrystal
• ComputeExternalGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
• ComputeGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
• ConservedMaskedNormalNoiseGaussian normal distributed random number noise provider with an applied spatially dependent material property mask for the ConservedLangevinNoise kernel.
• ConservedMaskedUniformNoiseUniformly distributed random number noise provider with an applied spatially dependent material property mask for the ConservedLangevinNoise kernel.
• ConservedNormalNoiseGaussian normal distributed random number noise provider for the ConservedLangevinNoise kernel.
• ConservedUniformNoiseUniformly distributed random number noise provider for the ConservedLangevinNoise kernel.
• ConstantGrainForceAndTorqueUserobject for calculating force and torque acting on a grain
• DiscreteNucleationDataOutput diagnostic data on a DiscreteNucleationInserter
• DiscreteNucleationFromFileManages the list of currently active nucleation sites and adds new sites according to a predetermined list from a CSV file (use this with sync_times).
• DiscreteNucleationInserterManages the list of currently active nucleation sites and adds new sites according to a given probability function.
• DiscreteNucleationMapGenerates a spatial smoothed map of all nucleation sites with the data of the DiscreteNucleationInserter for use by the DiscreteNucleation material.
• DiscreteNucleationTimeStepReturn a time step limit for nucleation event to be used by IterationAdaptiveDT
• EBSDReaderLoad and manage DREAM.3D EBSD data files for running simulations on reconstructed microstructures.
• EulerAngleUpdaterProvide updated euler angles after rigid body rotation of the grains.
• FauxGrainTrackerFake grain tracker object for cases where the number of grains is equal to the number of order parameters.
• FeatureFloodCountThe object is able to find and count "connected components" in any solution field or number of solution fields. A primary example would be to count "bubbles".
• FeatureVolumeFraction
• GrainBoundaryAreaCalculate total grain boundary length in 2D and area in 3D
• GrainForceAndTorqueSumUserobject for summing forces and torques acting on a grain
• GrainTrackerGrain Tracker object for running reduced order parameter simulations without grain coalescence.
• GrainTrackerElasticityGrain Tracker object for running reduced order parameter simulations without grain coalescence.
• MaskedGrainForceAndTorqueUserobject for masking/pinning grains and making forces and torques acting on that grain zero
• PFCElementEnergyIntegral
• PolycrystalCirclesPolycrystal circles generated from a vector input or read from a file
• PolycrystalEBSDObject for setting up a polycrystal structure from an EBSD Datafile
• PolycrystalHexPerturbed hexagonal polycrystal
• PolycrystalVoronoiRandom Voronoi tesselation polycrystal (used by PolycrystalVoronoiAction)
• RandomEulerAngleProviderAssign random euler angles for each grain.
• SolutionRasterizerProcess an XYZ file of atomic coordinates and filter atoms via threshold or map variable values.
• Misc App
• InternalVolumeComputes the volume of an enclosed area by performing an integral over a user-supplied boundary.
• RigidBodyModes3D
• Functional Expansion Tools App
• FXBoundaryFluxUserObjectGenerates an Functional Expansion representation for a boundary flux condition using a 'FunctionSeries'-type Function
• FXBoundaryValueUserObjectGenerates an Functional Expansion representation for a boundary value condition using a 'FunctionSeries'-type Function
• FXVolumeUserObjectGenerates an Functional Expansion representation of a variable value over a volume using a 'FunctionSeries'-type Function
• Level Set App
• LevelSetCFLConditionCompute the minimum timestep from the Courant-Friedrichs-Lewy (CFL) condition for the level-set equation.
• LevelSetOlssonTerminatorTool for terminating the reinitialization of the level set equation based on the criteria defined by Olsson et. al. (2007).
• LevelSetVolumeCompute the area or volume of the region inside or outside of a level set contour.
• Richards App
• Q2PPiecewiseLinearSinkFluxRecords the fluid flow into a sink (positive values indicate fluid is flowing from porespace into the sink).
• Q2PRelPermPowerGasPower form of relative permeability that might be useful for gases as a function of water saturation in Q2P models. Define s = seff/(1 - simm). Then relperm = 1 - (n+1)sn + ns(n+1) if seff<1-simm, otherwise relperm=1. Here seff is the water saturation
• RichardsDensityConstBulkFluid density assuming constant bulk modulus. dens0 * Exp(pressure/bulk)
• RichardsDensityConstBulkCutFluid density assuming constant bulk modulus. dens0 * Exp(pressure/bulk)
• RichardsDensityIdealFluid density of ideal gas. Density = slope*(p - p0)
• RichardsDensityMethane20degCMethane density (kg/m^3) at 20degC. Pressure is assumed to be measured in Pascals. NOTE: this expression is only valid to about P=20MPa. Use van der Waals (RichardsDensityVDW) for higher pressures.
• RichardsDensityVDWDensity of van der Waals gas.
• RichardsExcavFlowRecords total flow INTO an excavation (if quantity is positive then flow has occured from rock into excavation void)
• RichardsHalfGaussianSinkFlux
• RichardsMassReturns the mass in a region.
• RichardsPiecewiseLinearSinkFluxRecords the fluid flow into a sink (positive values indicate fluid is flowing from porespace into the sink).
• RichardsPlotQuantity
• RichardsRelPermBWBroadbridge-White form of relative permeability. Define s = (seff - Sn)/(Ss - Sn). Then relperm = Kn + s^2(c-1)(Kn-Ks)/(c-s) if 0<s<1, otherwise relperm = Kn if s<0, otherwise relperm = Ks if s>1.
• RichardsRelPermMonomialMonomial form of relative permeability. Define s = (seff - simm)/(1 - simm). Then relperm = s^n if s<simm, otherwise relperm=1
• RichardsRelPermPowerPower form of relative permeability. Define s = (seff - simm)/(1 - simm). Then relperm = (n+1)sn - ns(n+1) if s<simm, otherwise relperm=1
• RichardsRelPermPowerGasPower form of relative permeability that might be useful for gases. Define s = (seff - simm)/(1 - simm). Then relperm = 1 - (n+1)(1-s)^n + n(1-s)^(n+1) if s<simm, otherwise relperm=1
• RichardsRelPermVGVG form of relative permeability. Define s = (seff - simm)/(1 - simm). Then relperm = s(1/2) * (1 - (1 - s(1/m))^m)^2, if s>0, and relperm=0 otherwise
• RichardsRelPermVG1VG1 form of relative permeability. Define s = (seff - simm)/(1 - simm). Then relperm = s(1/2) * (1 - (1 - s(1/m))^m)^2, if s>0, and relperm=0 otherwise
• RichardsSUPGnoneUser object for no SUPG
• RichardsSUPGstandardStandard SUPG relationships for Richards flow based on Appendix A of TJR Hughes, M Mallet and A Mizukami A new finite element formulation for computational fluid dynamics:: II. Behond SUPG'' Computer Methods in Applied Mechanics and Engineering 54 (1986) 341–355
• RichardsSatUser object yielding saturation for a phase as a function of effective saturation of that phase
• RichardsSeff1BWsmallBroadbridge-white form of effective saturation for negligable Kn. Then porepressure = -las*( (1-th)/th - (1/c)Ln((C-th)/((C-1)th))), for th = (Seff - Sn)/(Ss - Sn). A Lambert-W function must be evaluated to express Seff in terms of porepressure, which can be expensive
• RichardsSeff1RSCRogers-Stallybrass-Clements version of effective saturation for the water phase, valid for residual saturations = 0, and viscosityOil = 2viscosityWater. seff_water = 1/Sqrt(1 + Exp((Pc - shift)/scale)), where scale = 0.25scale_ratio*oil_viscosity. Note that this effective saturation is mostly useful for 2-phase, not single-phase.
• RichardsSeff1VGvan-Genuchten effective saturation as a function of pressure suitable for use in single-phase simulations.. seff = (1 + (-al*p)^(1/(1-m)))^(-m)
• RichardsSeff1VGcutcut van-Genuchten effective saturation as a function of capillary pressure. Single-phase seff = (1 + (-al*p)^(1/(1-m)))^(-m) for p>p_cut, otherwise user a a linear relationship that is chosen so the value and derivative match van-Genuchten at p=p_cut.
• RichardsSeff2gasRSCRogers-Stallybrass-Clements version of effective saturation for the oil (gas) phase, valid for residual saturations = 0, and viscosityOil = 2viscosityWater. seff_gas = 1 - 1/Sqrt(1 + Exp((Pc - shift)/scale)), where scale = 0.25scale_ratio*oil_viscosity
• RichardsSeff2gasVGvan-Genuchten effective saturation as a function of (Pwater, Pgas) suitable for use for the gas phase in two-phase simulations. With Pc=Pgas-Pwater, seff = 1 - (1 + (al*pc)^(1/(1-m)))^(-m)
• RichardsSeff2gasVGshiftedShifted van-Genuchten effective saturation as a function of (Pwater, Pgas) suitable for use for the gas phase in two-phase simulations. seff = (1 + (-al*(P0-p1-shift))^(1/(1-m)))^(-m), then scaled so it runs between 0 and 1.
• RichardsSeff2waterRSCRogers-Stallybrass-Clements version of effective saturation for the water phase, valid for residual saturations = 0, and viscosityOil = 2viscosityWater. seff_water = 1/Sqrt(1 + Exp(Pc - shift)/scale)), where scale = 0.25scale_ratio*oil_viscosity
• RichardsSeff2waterVGvan-Genuchten effective saturation as a function of (Pwater, Pgas) suitable for use for the water phase in two-phase simulations. With Pc=Pgas-Pwater, seff = (1 + (al*pc)^(1/(1-m)))^(-m)
• RichardsSeff2waterVGshiftedShifted van-Genuchten effective saturation as a function of (Pwater, Pgas) suitable for use for the water phase in two-phase simulations. seff = (1 + (-al*(P0-p1-shift))^(1/(1-m)))^(-m), then scaled so it runs between 0 and 1.
• RichardsSumQuantity
• RichardsVarNamesHolds information on the porepressure variable names
• XFEMApp
• CircleCutUserObjectCreates a UserObject for circular cuts on 3D meshes for XFEM
• EllipseCutUserObjectCreates a UserObject for elliptical cuts on 3D meshes for XFEM
• LevelSetCutUserObjectXFEM mesh cut by level set function
• LineSegmentCutSetUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
• LineSegmentCutUserObjectCreates a UserObject for a line segment cut on 2D meshes for XFEM
• MeshCut3DUserObjectCreates a UserObject for a mesh cutter in 3D problems
• MovingLineSegmentCutSetUserObjectCreates a UserObject for a moving line segment cut on 2D meshes for XFEM
• PointValueAtXFEMInterfaceObtain field values and gradients on the interface.
• RectangleCutUserObjectCreates a UserObject for planar cuts on 3D meshes for XFEM
• XFEMMaterialTensorMarkerUserObject
• XFEMPhaseTransitionMovingInterfaceVelocitycalculate the interface velocity for a simple phase transition problem.
• XFEMRankTwoTensorMarkerUserObjectMark elements to be cut by XFEM based on a scalar extracted from a RankTwoTensor
• Contact App
• NodalArea
• Heat Conduction App
• HomogenizedThermalConductivity
• ThermalConductivityComputes the average value of a variable on a sideset. Note that this cannot be used on the centerline of an axisymmetric model.
• Solid Mechanics App
• HomogenizedElasticConstants
• InteractionIntegralSM
• MaterialTensorIntegralSM
• Tensor Mechanics App
• CavityPressurePostprocessorInterfaces with the CavityPressureUserObject to store the initial number of moles of a gas contained within an internal volume.
• CavityPressureUserObjectUses the ideal gas law to compute internal pressure and an initial moles of gas quantity.
• CrackFrontData
• CrackFrontDefinition
• CrystalPlasticitySlipRateGSSPhenomenological constitutive model slip rate class. Override the virtual functions in your class
• CrystalPlasticitySlipResistanceGSSPhenomenological constitutive models' slip resistance base class. Override the virtual functions in your class
• CrystalPlasticityStateVarRateComponentGSSPhenomenological constitutive model state variable evolution rate component base class. Override the virtual functions in your class
• CrystalPlasticityStateVarRateComponentVocePhenomenological Voce constitutive model state variable evolution rate component base class.
• CrystalPlasticityStateVariableCrystal plasticity state variable class. Override the virtual functions in your class
• ElementPropertyReadFileUser Object to read property data from an external file and assign to elements: Works only for Rectangular geometry (2D-3D)
• EulerAngleFileReaderRead Euler angle data from a file and provide it to other objects.
• GeneralizedPlaneStrainUserObjectGeneralized plane strain UserObject to provide residual and diagonal jacobian entries.
• GlobalStrainUserObjectGlobal Strain UserObject to provide Residual and diagonal Jacobian entry
• HEVPEqvPlasticStrainUser Object to integrate equivalent plastic strain
• HEVPEqvPlasticStrainRateUser Object computing equivalent plastic strain rate
• HEVPFlowRatePowerLawJ2User object to evaluate power law flow rate and flow direction based on J2
• HEVPLinearHardeningUser Object for linear hardening
• HEVPRambergOsgoodHardeningUser object for Ramberg-Osgood hardening power law hardening
• InteractionIntegralComputes the interaction integral for fracture
• JIntegralCalculates the J-integral at a specified point along the crack front
• LinearViscoelasticityManagerManages the updating of the semi-implicit single-step first-order finite difference time-stepping scheme
• Mass
• MaterialTensorIntegralThis postprocessor computes an element integral of a component of a material tensor as specified by the user-supplied indices
• MaterialTimeStepPostprocessorThis postprocessor estimates a timestep that reduces the increment change in a material property below a given threshold.
• MixedModeEquivalentKComputes the mixed-mode stress intensity factor given the , , and stress intensity factors
• TensorMechanicsHardeningConstantNo hardening - the parameter is independent of the internal parameter(s)
• TensorMechanicsHardeningCubicHardening is Cubic
• TensorMechanicsHardeningCutExponentialHardening is Cut-exponential
• TensorMechanicsHardeningExponentialHardening is Exponential
• TensorMechanicsHardeningGaussianHardening is Gaussian
• TensorMechanicsHardeningPowerRuleHardening defined by power rule
• TensorMechanicsPlasticDruckerPragerNon-associative Drucker Prager plasticity with no smoothing of the cone tip.
• TensorMechanicsPlasticDruckerPragerHyperbolicNon-associative Drucker Prager plasticity with hyperbolic smoothing of the cone tip.
• TensorMechanicsPlasticIsotropicSDIsotropicSD plasticity for pressure sensitive materials and also models the strength differential effect
• TensorMechanicsPlasticJ2J2 plasticity, associative, with hardening
• TensorMechanicsPlasticMeanCapClass that limits the mean stress. Yield function = a*mean_stress - strength. mean_stress = (stress_xx + stress_yy + stress_zz)/3
• TensorMechanicsPlasticMeanCapTCAssociative mean-cap tensile and compressive plasticity with hardening/softening
• TensorMechanicsPlasticMohrCoulombNon-associative Mohr-Coulomb plasticity with hardening/softening
• TensorMechanicsPlasticMohrCoulombMultiNon-associative Mohr-Coulomb plasticity with hardening/softening
• TensorMechanicsPlasticOrthotropicOrthotropic plasticity for pressure sensitive materials and also models the strength differential effect
• TensorMechanicsPlasticSimpleTesterClass that can be used for testing multi-surface plasticity models. Yield function = a*stress_yy + b*stress_zz + c*stress_xx + d*(stress_xy + stress_yx)/2 + e*(stress_xz + stress_zx)/2 + f*(stress_yz + stress_zy)/2 - strength
• TensorMechanicsPlasticTensileAssociative tensile plasticity with hardening/softening, and tensile_strength = 1
• TensorMechanicsPlasticTensileMultiAssociative tensile plasticity with hardening/softening
• TensorMechanicsPlasticWeakPlaneShearNon-associative finite-strain weak-plane shear perfect plasticity. Here cohesion = 1, tan(phi) = 1 = tan(psi)
• TensorMechanicsPlasticWeakPlaneTensileAssociative weak-plane tensile plasticity with hardening/softening
• TensorMechanicsPlasticWeakPlaneTensileNAssociative weak-plane tensile plasticity with hardening/softening, with specified, fixed normal vector. (WeakPlaneTensile combined with specifying N in the Material might be preferable to you.)
• TorqueReactionTorqueReaction calculates the torque in 2D and 3Dabout a user-specified axis of rotation centeredat a user-specied origin.
• XFEMTest App
• TestCrackCounterTest postprocessor for extracting the crack_tip_origin_direction_map from XFEM.
• Navier Stokes App
• INSExplicitTimestepSelectorPostprocessor that computes the minimum value of h_min/|u|, where |u| is coupled in as an aux variable.
• NSEntropyErrorComputes entropy error.
• VolumetricFlowRateComputes the volumetric flow rate through a boundary.
• Tensor Mechanics Test App
• TestSubblockIndexProvider
• Chemical Reactions App
• TotalMineralVolumeFractionTotal volume fraction of coupled mineral species
• Porous Flow App
• AdvectiveFluxCalculatorConstantVelocityCompute K_ij (a measure of advective flux from node i to node j) and R+ and R- (which quantify amount of antidiffusion to add) in the Kuzmin-Turek FEM-TVD multidimensional scheme. Constant advective velocity is assumed
• PorousFlowAdvectiveFluxCalculatorSaturatedComputes the advective flux of fluid of given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowAdvectiveFluxCalculatorSaturatedHeatComputes the advective flux of heat energy in the given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density * enthalpy / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponentComputes the advective flux of fluid of given phase and fluid component. Explicitly, the UserObject computes (mass_fraction * density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowAdvectiveFluxCalculatorUnsaturatedComputes the advective flux of fluid of given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowAdvectiveFluxCalculatorUnsaturatedHeatComputes the advective flux of heat energy in a given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * enthalpy * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponentComputes the advective flux of fluid of given phase and component. Hence this UserObject is relevant to multi-phase, multi-component situations. Explicitly, the UserObject computes (mass_fraction * density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
• PorousFlowBrineCO2Fluid state class for brine and CO2
• PorousFlowCapillaryPressureBCBrooks-Corey capillary pressure
• PorousFlowCapillaryPressureBWBroadbridge and White capillary pressure for negligable Kn
• PorousFlowCapillaryPressureConstConstant capillary pressure
• PorousFlowCapillaryPressureRSCRogers-Stallybrass-Clements version of effective saturation for the water phase, valid for residual saturations = 0, and viscosityOil = 2 * viscosityWater. seff_water = 1 / sqrt(1 + exp((Pc - shift) / scale)), where scale = 0.25 * scale_ratio * oil_viscosity.
• PorousFlowCapillaryPressureVGvan Genuchten capillary pressure
• PorousFlowDictatorHolds information on the PorousFlow variable names
• PorousFlowFluidMassCalculates the mass of a fluid component in a region
• PorousFlowFluidStateFlashCompositional flash calculations for use in fluid state classes
• PorousFlowHeatEnergyCalculates the sum of heat energy of fluid phase(s) and/or the porous skeleton in a region
• PorousFlowPlotQuantityExtracts the value from the PorousFlowSumQuantity UserObject
• PorousFlowSumQuantityRecords total mass flowing into a borehole
• PorousFlowWaterNCGFluid state class for water and non-condensable gas