diff --git a/requirements.txt b/requirements.txt
index 24e1856f..688925e0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-Sphinx>=6.0
+Sphinx>=6.0,<9.0
sphinx_rtd_theme>=3.0.0
sphinx_copybutton>=0.5.2
sphinx-tabs
diff --git a/source/conf.py b/source/conf.py
index bbe9a597..71eecb4e 100644
--- a/source/conf.py
+++ b/source/conf.py
@@ -49,6 +49,9 @@
.. |mhs| replace:: `Michael H. Scott`_
.. _Michael H. Scott: https://cce.oregonstate.edu/scott
.. |fmk| replace:: **fmk**
+.. |jaabell| replace:: **José A. Abell**
+.. |mhscott| replace:: `Michael H. Scott`_
+.. |zhuminjie| replace:: **Zhu Minjie**
.. |pedro| replace:: `Pedro Arduino`_
.. _Pedro Arduino: https://www.ce.washington.edu/facultyfinder/pedro-arduino
.. |peter| replace:: `Peter Mackenzie-Helnwein`_
diff --git a/source/user/manual/analysis/algorithm/ExpressNewton.rst b/source/user/manual/analysis/algorithm/ExpressNewton.rst
index 520ec0ed..0a07c09a 100644
--- a/source/user/manual/analysis/algorithm/ExpressNewton.rst
+++ b/source/user/manual/analysis/algorithm/ExpressNewton.rst
@@ -12,9 +12,9 @@ This command is used to construct an ExpressNewton algorithm object for nonlinea
$iter, |integer|, constant number of iterations. Default to 2
$kMultiplier, |float|, multiplier to system stiffness in evaluation of the system Jacobian matrix to support unconditional stability for hardening system. Default to 1.0. Dicussed in Reference [1]
- -initialTangent, |string|, optional flag to indicate to use initial stiffness in evaluation of the system Jacobian matrix
+ -initialTangent, |string|, optional flag to indicate to use initial stiffness in evaluation of the system Jacobian matrix. Also accepted as ``-initial``; enables ``-factorOnce`` automatically.
-currentTangent, |string|, optional and default flag to indicate to use current stiffness in evaluation of the system Jacobian matrix
- -factorOnce, |string|, optional flag to indicate to factorize the system Jacobian matrix only once. It is suggested to specify this flag to maximize the solution efficiency (Reference [1]). If this flag is not specified factorization will be performed on every iteraction.
+ -factorOnce, |string|, optional flag to factorize the system Jacobian matrix only once and reuse it in later analysis steps until a domain change. It is suggested to specify this flag to maximize the solution efficiency (Reference [1]). If this flag is not specified, factorization is performed at every analysis step.
The strategy of the ExpressNewton algorithm is to adopt a typical transient integrator and accept the solution after a constant number of iterations using a constant system Jacobian matrix. The algorithm inherits the advantages of the host transient integrators, such as the unconditional stability, the order of accuracy, and the numerical dissipation that helps suppress the spurious high-frequency oscillation. Using a constant Jacobian matrix is vital to minimizing the computational expense associated with matrix operations. The algorithm helps achieve an exponential efficiency improvement in a response history analysis with any transient integrator.
diff --git a/source/user/manual/analysis/algorithm/KrylovNewton.rst b/source/user/manual/analysis/algorithm/KrylovNewton.rst
index 6d5bb8bb..38f092af 100644
--- a/source/user/manual/analysis/algorithm/KrylovNewton.rst
+++ b/source/user/manual/analysis/algorithm/KrylovNewton.rst
@@ -2,7 +2,7 @@
Krylov-Newton Algorithm
--------------------------------
-.. function:: algorithm KrylovNewton <-iterate $tangIter> <-increment $tangIncr> <-maxDim $maxDim>
+.. function:: algorithm KrylovNewton <-iterate $tangIter> <-increment $tangIncr> <-maxDim $maxDim> <-factorOnce>
.. list-table::
:widths: 10 10 40
@@ -20,8 +20,13 @@ Krylov-Newton Algorithm
* - $maxDim
- |float|
- max number of iterations until the tangent is reformed and acceleration restarts (default = 3) of iterations within a time step until a new tangent is formed
-
+ * - -factorOnce
+ - |string|
+ - optional flag to assemble and factor the increment tangent in the first analysis step, keep it fixed in all later steps, and update it only after a domain change (for example, nodes or elements added or removed). Also accepted as ``-factorIncrementOnce``.
+
+.. note::
+ Krylov-Newton already uses one increment tangent per equilibrium solve within each analysis step. ``-factorOnce`` carries that same tangent forward to later steps instead of reforming it each time. Using ``-increment initial`` with ``-iterate noTangent`` or ``-iterate initial`` also enables ``-factorOnce`` automatically. If ``-factorOnce`` is given without ``-iterate``, OpenSees warns and defaults to ``-iterate noTangent``. If ``-factorOnce`` conflicts with the chosen ``-iterate`` tangent (for example, ``-iterate current``), OpenSees warns and disables ``-factorOnce``.
This command is used to construct a KrylovNewton algorithm object which uses a modified Newton method with Krylov subspace acceleration to advance to the next time step.
diff --git a/source/user/manual/analysis/algorithm/ModifiedNewton.rst b/source/user/manual/analysis/algorithm/ModifiedNewton.rst
index 09ebb72d..4f8d00ba 100644
--- a/source/user/manual/analysis/algorithm/ModifiedNewton.rst
+++ b/source/user/manual/analysis/algorithm/ModifiedNewton.rst
@@ -2,7 +2,7 @@
Modified Newton Algorithm
--------------------------------
-.. function:: algorithm ModifiedNewton <-initial>
+.. function:: algorithm ModifiedNewton <-initial> <-factorOnce>
.. list-table::
:widths: 10 10 40
@@ -14,5 +14,12 @@ Modified Newton Algorithm
* - -initial
- |string|
- optional flag to indicate to use initial stiffness iterations
+ * - -factorOnce
+ - |string|
+ - optional flag to assemble and factor the tangent in the first analysis step, keep it fixed in all later steps, and update it only after a domain change (for example, nodes or elements added or removed).
+
+.. note::
+
+ Modified Newton already uses one tangent per equilibrium solve within each analysis step. ``-factorOnce`` carries that same tangent forward to later steps instead of reforming it each time. The fixed matrix is the current tangent by default, or the initial tangent with ``-initial``. Specifying ``-initial`` also enables ``-factorOnce`` automatically.
This command is used to construct a ModifiedNewton algorithm object, which uses the modified newton-raphson algorithm to solve the nonlinear residual equation.
diff --git a/source/user/manual/analysis/algorithm/Newton.rst b/source/user/manual/analysis/algorithm/Newton.rst
index 109a0d80..cdbdbe5f 100644
--- a/source/user/manual/analysis/algorithm/Newton.rst
+++ b/source/user/manual/analysis/algorithm/Newton.rst
@@ -4,7 +4,7 @@ Newton Algorithm
----------------
This command is used to construct a NewtonRaphson algorithm object which is uses the Newton-Raphson algorithm to solve the nonlinear residual equation. The Newton-Raphson method is the most widely used and most robust method for solving nonlinear algebraic equations. The command is of the following form:
-.. function:: algorithm Newton <-initial> <-initialThenCurrent>
+.. function:: algorithm Newton <-initial> <-initialThenCurrent> <-factorOnce>
.. csv-table::
:header: "Argument", "Type", "Description"
@@ -12,7 +12,11 @@ This command is used to construct a NewtonRaphson algorithm object which is uses
-initial, |string|, optional flag to indicate to use initial stiffness
-initialThenCurrent, |string|, optional flag to indicate to use initial stiffness on first step and then current on subsequent steps
+ -factorOnce, |string|, optional flag to assemble and factor the tangent on the first Newton iteration of the first analysis step, keep it fixed in later iterations and later steps, and update it only after a domain change (for example, nodes or elements added or removed).
+.. note::
+
+ Newton-Raphson normally reforms the tangent every Newton iteration. ``-factorOnce`` keeps the tangent from the first iteration fixed thereafter. The fixed matrix is the current tangent by default, or the initial tangent with ``-initial``. Specifying ``-initial`` also enables ``-factorOnce`` automatically. ``-factorOnce`` is not used with ``-initialThenCurrent``, which reforms the tangent every iteration.
The Newton method used in finite element analysis is identical to that taught in basic calculus courses. It is just extended for the n unknown degrees-of-freedom. The method as taught in basic calculus, is a root-finding algorithm that uses the first few terms of the Taylor series of a function :math:`f(x)\,\!` in the vicinity of a suspected root :math:`x_n\,\!` to find the root :math:`x_{n+1}\,\!`. Newton's method is sometimes also known as Newton's iteration, although in this work the latter term is reserved to the application of Newton's method for computing square roots.
diff --git a/source/user/manual/analysis/algorithm/NewtonLineSearch.rst b/source/user/manual/analysis/algorithm/NewtonLineSearch.rst
index 445c1245..8a581406 100644
--- a/source/user/manual/analysis/algorithm/NewtonLineSearch.rst
+++ b/source/user/manual/analysis/algorithm/NewtonLineSearch.rst
@@ -4,7 +4,7 @@ Newton Line Search Algorithm
----------------
This command is used to construct a NewtonLineSearch algorithm object which introduces line search to the Newton-Raphson algorithm to solve the nonlinear residual equation. Line search increases the effectiveness of the Newton method when convergence is slow due to roughness of the residual. The command is of the following form:
-.. function:: algorithm NewtonLineSearch <-type $typeSearch> <-tol $tol> <-maxIter $maxIter> <-minEta $minEta> <-maxEta $maxEta>
+.. function:: algorithm NewtonLineSearch <-type $typeSearch> <-tol $tol> <-maxIter $maxIter> <-minEta $minEta> <-maxEta $maxEta> <-factorOnce>
.. csv-table::
:header: "Argument", "Type", "Description"
@@ -16,6 +16,11 @@ This command is used to construct a NewtonLineSearch algorithm object which intr
$maxIter, |integer|, maximum number of iteration to try. The default is 10.
$minEta, |float|, a minimum :math:`\eta` value. Optional; The default is 0.1
$maxEta, |float|, a maximum :math:`\eta` value. Optional; The default is 10.0
+ -factorOnce, |string|, optional flag to assemble and factor the current tangent on the first Newton iteration of the first analysis step, keep it fixed in later iterations and later steps, and update it only after a domain change (for example, nodes or elements added or removed).
+
+.. note::
+
+ Newton line search normally reforms the current tangent every Newton iteration. ``-factorOnce`` keeps the tangent from the first iteration fixed thereafter.
Theory
^^^^^^^^^^^^^^
diff --git a/source/user/manual/analysis/algorithm/SecantNewton.rst b/source/user/manual/analysis/algorithm/SecantNewton.rst
index cb786b55..423e6b40 100644
--- a/source/user/manual/analysis/algorithm/SecantNewton.rst
+++ b/source/user/manual/analysis/algorithm/SecantNewton.rst
@@ -1,8 +1,10 @@
.. _SecantNewton:
-Secant Newton Algorithm
+Secant Newton Algorithm
----------------
-.. function:: algorithm SecantNewton <-iterate $tangIter> <-increment $tangIncr> <-maxDim $maxDim>
+This command is used to construct a SecantNewton algorithm object which uses the two-term update to accelerate the convergence of the modified newton method.
+
+.. function:: algorithm SecantNewton <-iterate $tangIter> <-increment $tangIncr> <-maxDim $maxDim> <-numTerms $numTerms> <-cutOut $R1 $R2> <-factorOnce>
.. list-table::
:widths: 10 10 40
@@ -11,22 +13,30 @@ Secant Newton Algorithm
* - Argument
- Type
- Description
- * - $tangIter
+ * - -iterate
- |string|
- - tangent to iterate on, options are current, initial, noTangent. default is current.
- * - $tangIncr
+ - tangent to iterate on, options are current, initial, noTangent. default is current.
+ * - -increment
- |string|
- - tangent to increment on, options are current, initial, noTangent. default is current
- * - $maxDim
- - |float|
- - max number of iterations until the tangent is reformed and acceleration restarts (default = 3) of iterations within a time step until a new tangent is formed
-
-This command is used to construct a SecantNewton algorithm object which uses the two-term update to accelerate the convergence of the modified newton method.
+ - tangent to increment on, options are current, initial, noTangent. default is current.
+ * - -maxDim
+ - |integer|
+ - max number of iterations until the tangent is reformed and acceleration restarts (default = 3).
+ * - -numTerms
+ - |integer|
+ - number of terms in the secant accelerator update (default = 2).
+ * - -cutOut
+ - |listFloat|
+ - optional flag followed by cut-out factors ``$R1`` and ``$R2`` to suppress overly aggressive secant updates. Crisfield's recommended values are 3.5 and 0.3.
+ * - -factorOnce
+ - |string|
+ - optional flag to assemble and factor the increment tangent in the first analysis step, keep it fixed in all later steps, and update it only after a domain change (for example, nodes or elements added or removed). Also accepted as ``-factorIncrementOnce``.
.. note::
- * The default "cut-out" values recommended by Crisfield (R1=3.5, R2=0.3) are used.
+
+ Secant-Newton already uses one increment tangent per equilibrium solve within each analysis step. ``-factorOnce`` carries that same tangent forward to later steps instead of reforming it each time. Using ``-increment initial`` with ``-iterate noTangent`` or ``-iterate initial`` also enables ``-factorOnce`` automatically. If ``-factorOnce`` is given without ``-iterate``, OpenSees warns and defaults to ``-iterate noTangent``. If ``-factorOnce`` conflicts with the chosen ``-iterate`` tangent (for example, ``-iterate current``), OpenSees warns and disables ``-factorOnce``.
.. note::
References:
- * Crisfield, M.A. "Non-linear Finite Element Analysis of Solids and Structures", Vol. 1, Wiley, 1991.
-
+
+ * Crisfield, M.A. "Non-linear Finite Element Analysis of Solids and Structures", Vol. 1, Wiley, 1991.
diff --git a/source/user/manual/analysis/system.rst b/source/user/manual/analysis/system.rst
index ec1ed9d8..ecd66526 100644
--- a/source/user/manual/analysis/system.rst
+++ b/source/user/manual/analysis/system.rst
@@ -21,6 +21,5 @@ The following contain information about systemType? and the args required for ea
system/FullGeneral
system/SparseSYM
system/Mumps
- system/Cusp
system/Diagonal
system/PythonSparse
diff --git a/source/user/manual/analysis/system/Cusp.rst b/source/user/manual/analysis/system/Cusp.rst
deleted file mode 100644
index e69de29b..00000000
diff --git a/source/user/manual/analysis/test/RelativeNormDispIncr.rst b/source/user/manual/analysis/test/RelativeNormDispIncr.rst
index e69de29b..c72a98a9 100644
--- a/source/user/manual/analysis/test/RelativeNormDispIncr.rst
+++ b/source/user/manual/analysis/test/RelativeNormDispIncr.rst
@@ -0,0 +1,44 @@
+.. _RelativeNormDispIncr:
+
+Relative Norm Displacement Increment
+------------------------------------
+
+This command constructs a convergence test that uses the norm of the solution, :math:`x` vector, of the matrix equation, :math:`Ax=b`. It compares the current norm to the norm at the first step, i.e. :math:`\frac{\sqrt({x_i}^T{x_i})}{\sqrt({x_1}^T{x_1})}`. What the right-hand-side of the matrix equation is depends on integrator and constraint handler chosen. Usually, though not always, it is equal to the change in nodal displacements in the system due to the current unbalance.
+
+.. function:: test RelativeNormDispIncr $tol $iter <$pFlag> <$nType>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $tol, |float|, the tolerance criteria used to check for convergence
+ $iter, |integer|, the max number of iterations to check before returning failure condition
+ $pFlag, |integer|, " | print flag (optional: default is 0) valid options:
+ | 0 print nothing
+ | 1 print information on norms each time test() is invoked
+ | 2 print information on norms and number of iterations at end of successful test
+ | 4 at each step it will print the norms and also the and vectors.
+ | 5 if it fails to converge at end of $numIter it will print an error message BUT RETURN A SUCCESSFUL test."
+ $nType, |integer|, "type of norm (optional: default is 2 (0 = max-norm 1 = 1-norm 2 = 2-norm ...))"
+
+.. note::
+
+ The convergence test compares the current norm of the displacement increment with the norm of the first step to determine if convergence has been achieved. As a consequence it will always take at least two steps to achieve convergence.
+
+.. admonition:: Example
+
+ The following examples demonstrate the command to create a RelativeNormDispIncr test which allows 10 iterations till failure with a 2-norm in the :math:`x` vector of **1.0e-2**.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ test RelativeNormDispIncr 1.0e-2 10 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ test('RelativeNormDispIncr', 1.0e-2, 10, 2)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/ndMaterial.rst b/source/user/manual/material/ndMaterial.rst
index d157ea3a..17937378 100644
--- a/source/user/manual/material/ndMaterial.rst
+++ b/source/user/manual/material/ndMaterial.rst
@@ -43,7 +43,7 @@ The following contain information about matType? and the args required for each
ndMaterials/Parallel3D
ndMaterials/InitStrain
ndMaterials/ASDConcrete3D
- ndMaterials/ASDPlasticMaterial
+ ndMaterials/ASDPlasticMaterial3D
ndMaterials/OrthotropicRAConcrete
ndMaterials/SmearedSteelDoubleLayer
ndMaterials/NDTest
diff --git a/source/user/manual/material/ndMaterials/ASDPlasticMaterial3D.rst b/source/user/manual/material/ndMaterials/ASDPlasticMaterial3D.rst
index 23f70f17..d2bb1e71 100644
--- a/source/user/manual/material/ndMaterials/ASDPlasticMaterial3D.rst
+++ b/source/user/manual/material/ndMaterials/ASDPlasticMaterial3D.rst
@@ -1,7 +1,7 @@
.. _ASDPlasticMaterial3D:
ASDPlasticMaterial3D
-^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^
| This command is used to construct an ``ASDPlasticMaterial3D`` material object. ``ASDPlasticMaterial3D`` implements a large family of constitutive models based on the classical theory of elastoplasticity using advanced template metaprogramming. Users build new constitutive models by selecting the yield function, plastic-flow direction, elasticity law, and hardening models for the internal variables from several possible options for each component.
@@ -50,12 +50,12 @@ Explanation
$ElasticityType, |string|, "Mandatory. Elastic model to be used -> :ref:`ElasticityType`"
$IV_TYPE, |string|, "Mandatory. Hardening model for internal variables. Admitted types depend on YF, PF, and EL chosen. "
Begin_Internal_Variables, |string|, "Optional. Marks the beginning of the code block to set the internal variables. If ommitted, all internal variables are initialized to zero. You can specify as many of the following variables as wanted. Ommitted variables are initialized to zero. Number and name of variables that can be set is model dependent (once YF, PF, and EL are specified)"
- $InternalVariable1, |list of name/value pairs|, "Initial value of internal variable1. Dimension depends on internal variable type. "
- $InternalVariable2, |list of name/value pairs|, "Initial value of internal variable2. "
+ $InternalVariable1, |list|, "Initial value of internal variable1. Dimension depends on internal variable type. "
+ $InternalVariable2, |list|, "Initial value of internal variable2. "
"--", "--", "... (input as many as model supports)"
End_Internal_Variables, |string|, "Mandatory if block started. Marks the end of the code block to set the internal variables"
Begin_Model_Parameters, |string|, "Optional. Marks the beginning of the code block to set the model parameters"
- $ModelParameters, |list of name/value pairs|, "Values for parameters of the models to be used. This depends on the particular choices of ``$YieldFunctionType``, ``$PlasticFlowType``, ``$ElasticityType``, and ``$IV_type``. "
+ $ModelParameters, |list|, "Values for parameters of the models to be used. This depends on the particular choices of ``$YieldFunctionType``, ``$PlasticFlowType``, ``$ElasticityType``, and ``$IV_type``. "
"--", "--", "... (input as many as model supports)"
End_Model_Parameters, |string|, "Mandatory if block started. Marks the beginning of the code block to set the model parameters"
Begin_Integration_Options, |string|, "Optional. Marks the beginning of the code block to set the integration options. You can set any ammount "
@@ -82,17 +82,18 @@ Explanation
:caption: Arguments detailed description
:maxdepth: 2
- ../ASDPlasticMaterial/YieldFunctions
- ../ASDPlasticMaterial/PlasticFlowType
- ../ASDPlasticMaterial/ElasticityType
- ../ASDPlasticMaterial/HardeningFunctions
+ ASDPlasticMaterial/YieldFunctions
+ ASDPlasticMaterial/PlasticFlowType
+ ASDPlasticMaterial/ElasticityType
+ ASDPlasticMaterial/HardeningFunctions
.. _ASDPlasticMaterial3DTheory:
+.. _ASDPlasticTheory:
ASDPlasticMaterial3D Theory
"""""""""""""""""""""""""""""
-The theoretical foundation is identical to :ref:`ASDPlasticTheory`. However, ``ASDPlasticMaterial3D`` provides additional implementation features:
+The theoretical foundation follows classical elastoplasticity theory (see :ref:`ASDPlasticTheory`). ``ASDPlasticMaterial3D`` provides additional implementation features:
* **Template Metaprogramming**: Uses C++ template metaprogramming for compile-time optimization
* **Multiple Integration Methods**: Offers several integration algorithms beyond the basic methods
@@ -107,8 +108,9 @@ The material recieves the total (trial) strain :math:`\vec{\epsilon}^{\text{tria
The integration method selected determines how the stress increment is computed and how the plastic corrections are applied.
.. _`ASDPlasticMaterial3DIntegrationMethods`:
+
Advanced Integration Methods
-""""""""""""""""""""""""""""
+""""""""""""""""""""""""""""""
``ASDPlasticMaterial3D`` supports multiple integration algorithms beyond the basic Forward Euler and Runge-Kutta methods:
@@ -127,9 +129,11 @@ Advanced Integration Methods
The integration method is selected in the ``Begin_Integration_Options`` block using the ``method`` parameter. If not specified, ``Runge_Kutta_45_Error_Control`` is used by default.
+
.. _`ASDPlasticMaterial3DTangentOperators`:
+
Tangent Operator Types
-"""""""""""""""""""""
+"""""""""""""""""""""""
``ASDPlasticMaterial3D`` provides several options for computing the consistent tangent operator:
@@ -147,7 +151,9 @@ Tangent Operator Types
The tangent operator type is selected in the ``Begin_Integration_Options`` block using the ``tangent_operator`` parameter. If not specified, an appropriate default is selected based on the integration method.
+
.. _`ASDPlasticMaterial3DIntegrationOptions`:
+
Integration Options
"""""""""""""""""""
@@ -155,10 +161,10 @@ Integration Options
:header: "Parameter", "Type", "Description"
:widths: 10, 10, 40
- $f_relative_tol, |double|, "Relative tolerance to evaluate the yield function crossing."
- $stress_relative_tol, |double|, "Tolerance for the convergece of the integration algorithm."
- $n_max_iterations, |int|, "Maximum number of iterations for constitutive integration."
- $return_to_yield_surface, |0 or 1|, "Whether to apply a return to yield surface algorithm after integration convergence."
+ $f_relative_tol, |float|, "Relative tolerance to evaluate the yield function crossing."
+ $stress_relative_tol, |float|, "Tolerance for the convergece of the integration algorithm."
+ $n_max_iterations, |integer|, "Maximum number of iterations for constitutive integration."
+ $return_to_yield_surface, |integer|, "Whether to apply a return to yield surface algorithm after integration convergence (0 or 1)."
$method, |string|, "Constitutive integration method. See :ref:`ASDPlasticMaterial3DIntegrationMethods` for options"
$tangent_operator, |string|, "Tangent operator computation method. See :ref:`ASDPlasticMaterial3DTangentOperators` for options"
@@ -229,7 +235,7 @@ The following example defines an instance of ``ASDPlasticMaterial3D`` with a Dru
.. admonition:: TCL code
- .. code-block:: tcl
+ .. code-block:: none
nDMaterial ASDPlasticMaterial3D 1 \
DruckerPrager_YF \
@@ -315,7 +321,7 @@ To access the enhanced response capabilities of ``ASDPlasticMaterial3D``, you ca
recorder Node -file radius.out -time -node 1 -dof 1 VonMisesRadius
Example: Parameter Updates During Analysis
-""""""""""""""""""""""""""""""""""""""""
+"""""""""""""""""""""""""""""""""""""""""""""
``ASDPlasticMaterial3D`` supports parameter updates during analysis:
diff --git a/source/user/manual/material/ndMaterials/J2Plasticity.rst b/source/user/manual/material/ndMaterials/J2Plasticity.rst
index c23c5d1a..cb55ac69 100644
--- a/source/user/manual/material/ndMaterials/J2Plasticity.rst
+++ b/source/user/manual/material/ndMaterials/J2Plasticity.rst
@@ -39,13 +39,15 @@ Yield Function
.. math::
- \phi(\sigma,q) = || dev(\sigma) || - \sqrt(\tfrac{2}{3}*q(xi)
+ \phi(\sigma, q) = \|\mathrm{dev}(\sigma)\| - \sqrt{\tfrac{2}{3}}\, q(\xi)
Saturation Isotropic Hardening with linear term
.. math::
- q(xi) = \sigma_0 + (\sigma_\inf - \sigma_0)*exp(-delta*\xi) + H*\xi
+ q(\xi) = \sigma_{\inf} + (\sigma_0 - \sigma_{\inf})\exp(-\delta\xi) + H\xi
+
+At :math:`\xi = 0`, :math:`q = \sigma_0` (initial yield stress). As :math:`\xi \to \infty` with :math:`H = 0`, :math:`q \to \sigma_{\inf}` (saturation yield stress).
Flow Rules
diff --git a/source/user/manual/material/ndMaterials/NDTest.rst b/source/user/manual/material/ndMaterials/NDTest.rst
index 9dac07d4..b985463f 100644
--- a/source/user/manual/material/ndMaterials/NDTest.rst
+++ b/source/user/manual/material/ndMaterials/NDTest.rst
@@ -36,12 +36,12 @@ Sets trial strain components on a specified nDMaterial.
:widths: 10, 10, 40
$matTag, |integer|, Unique tag identifying the nDMaterial object
- $eps11, |double|, Normal strain in direction 1 (ε₁₁)
- $eps22, |double|, Normal strain in direction 2 (ε₂₂)
- $eps33, |double|, Normal strain in direction 3 (ε₃₃)
- $gamma12, |double|, Engineering shear strain γ₁₂
- $gamma23, |double|, Engineering shear strain γ₂₃
- $gamma31, |double|, Engineering shear strain γ₃₁
+ $eps11, |float|, Normal strain in direction 1 (ε₁₁)
+ $eps22, |float|, Normal strain in direction 2 (ε₂₂)
+ $eps33, |float|, Normal strain in direction 3 (ε₃₃)
+ $gamma12, |float|, Engineering shear strain γ₁₂
+ $gamma23, |float|, Engineering shear strain γ₂₃
+ $gamma31, |float|, Engineering shear strain γ₃₁
**Example:**
@@ -318,7 +318,7 @@ Updates a double-precision parameter in the material during runtime.
$matTag, |integer|, Unique tag identifying the nDMaterial object
$paramID, |integer|, Integer parameter identifier (material-specific)
- $newValue, |double|, New double value for the parameter
+ $newValue, |float|, New double value for the parameter
**Example:**
diff --git a/source/user/manual/material/ndMaterials/PressureIndependentMultiYieldExample1.rst b/source/user/manual/material/ndMaterials/PressureIndependentMultiYieldExample1.rst
index a4f12888..87305e51 100644
--- a/source/user/manual/material/ndMaterials/PressureIndependentMultiYieldExample1.rst
+++ b/source/user/manual/material/ndMaterials/PressureIndependentMultiYieldExample1.rst
@@ -1,4 +1,9 @@
-** Single 2D plane-strain quadrilateral element, subjected to sinusoidal base shaking**
+.. _PressureIndependentMultiYieldExample1:
+
+Pressure Independent Multi Yield Example 1
+------------------------------------------
+
+Single 2D plane-strain quadrilateral element, subjected to sinusoidal base shaking.
1. **Tcl Code**
diff --git a/source/user/manual/material/uniaxialMaterial.rst b/source/user/manual/material/uniaxialMaterial.rst
index d430e09e..98ec7f83 100644
--- a/source/user/manual/material/uniaxialMaterial.rst
+++ b/source/user/manual/material/uniaxialMaterial.rst
@@ -4,7 +4,6 @@ uniaxialMaterial Command
************************
This command is used to construct a uniaxial material, which provides a uniaxial stress-strain (or force-deformation) relationships.
-.
.. function:: uniaxialMaterial $matType $matTag $matArgs
@@ -19,7 +18,7 @@ This command is used to construct a uniaxial material, which provides a uniaxial
The following subsections contain information about **$matType**
-#. Steel & Reinforcing-Steel Materials
+1. Steel & Reinforcing-Steel Materials
.. toctree::
:maxdepth: 1
@@ -37,7 +36,7 @@ The following subsections contain information about **$matType**
uniaxialMaterials/DuctileFracture
-#. Concrete Materials
+2. Concrete Materials
.. toctree::
:maxdepth: 1
@@ -49,17 +48,17 @@ The following subsections contain information about **$matType**
uniaxialMaterials/ASDConcrete1D
uniaxialMaterials/GMG_CyclicReinforcedConcrete
uniaxialMaterials/Creep
-
+
.. uniaxialMaterials/Concrete06
- uniaxialMaterials/Concrete07
- uniaxialMaterials/ConfinedConcrete01
- uniaxialMaterials/ConcreteD
- uniaxialMaterials/FRPConfinedConcrete
- uniaxialMaterials/ConcreteCM
+.. uniaxialMaterials/Concrete07
+.. uniaxialMaterials/ConfinedConcrete01
+.. uniaxialMaterials/ConcreteD
+.. uniaxialMaterials/FRPConfinedConcrete
+.. uniaxialMaterials/ConcreteCM
-#. Some Standard Uniaxial Materials
+3. Some Standard Uniaxial Materials
-.. toctree::
+ .. toctree::
:maxdepth: 1
uniaxialMaterials/Elastic
@@ -70,25 +69,24 @@ The following subsections contain information about **$matType**
uniaxialMaterials/ElasticMultiLinear
uniaxialMaterials/Hardening
uniaxialMaterials/MultiLinear
-
-#. Generic Multilinear Hysteretic Materials
+
+4. Generic Multilinear Hysteretic Materials
.. toctree::
:maxdepth: 1
-
+
uniaxialMaterials/Hysteretic
uniaxialMaterials/HystereticSM
uniaxialMaterials/IMKBilin
uniaxialMaterials/IMKPeakOriented
uniaxialMaterials/IMKPinching
uniaxialMaterials/SLModel
-
+
.. uniaxialMaterials/Pinching4
-
-#. Wrapper Uniaxial Materials
+5. Wrapper Uniaxial Materials
-.. toctree::
+ .. toctree::
:maxdepth: 1
uniaxialMaterials/Fatigue
@@ -104,7 +102,7 @@ The following subsections contain information about **$matType**
uniaxialMaterials/Penalty
uniaxialMaterials/Multiplier
-#. Other Uniaxial Materials
+6. Other Uniaxial Materials
.. toctree::
:maxdepth: 1
@@ -121,43 +119,41 @@ The following subsections contain information about **$matType**
uniaxialMaterials/Ratchet
.. uniaxialMaterials/CastFuse
- uniaxialMaterials/ViscousDamper
- uniaxialMaterials/BilinearOilDamper
- uniaxialMaterials/SAWS
- uniaxialMaterials/BARSLIP
- uniaxialMaterials/Bond_SP01 - - Strain Penetration Model for Fully Anchored Steel Reinforcing Bars
- uniaxialMaterials/Impact
- uniaxialMaterials/Hyperbolic Gap
- uniaxialMaterials/LimitState
- uniaxialMaterials/Engineered Cementitious Composites
- uniaxialMaterials/SelfCentering
- uniaxialMaterials/Viscous
- uniaxialMaterials/BoucWen
- uniaxialMaterials/BWBN (Pinching Hysteretic Bouc-Wen)
-
-
-
-#. PyTzQz uniaxial materials for p-y, t-z and q-z elements
-
-.. toctree::
- :maxdepth: 1
-
- uniaxialMaterials/PySimple1
- uniaxialMaterials/TzSimple1
- uniaxialMaterials/QzSimple1
- uniaxialMaterials/PyLiq1
- uniaxialMaterials/TzLiq1
- uniaxialMaterials/QzLiq1
- uniaxialMaterials/TzSandCPT
- uniaxialMaterials/QbSandCPT
-
-.. uniaxialMaterials/KikuchiAikenHDR
- uniaxialMaterials/KikuchiAikenLRB
- uniaxialMaterials/AxialSp
- uniaxialMaterials/AxialSpHD
- uniaxialMaterials/PinchingLimitState
- uniaxialMaterials/CFSWSWP
- uniaxialMaterials/CFSSSWP
- uniaxialMaterials/PySimple1Gen
- uniaxialMaterials/TzSimple1Gen
+.. uniaxialMaterials/ViscousDamper
+.. uniaxialMaterials/BilinearOilDamper
+.. uniaxialMaterials/SAWS
+.. uniaxialMaterials/BARSLIP
+.. uniaxialMaterials/Bond_SP01
+.. uniaxialMaterials/Impact
+.. uniaxialMaterials/HyperbolicGap
+.. uniaxialMaterials/LimitState
+.. uniaxialMaterials/EngineeredCementitiousComposites
+.. uniaxialMaterials/SelfCentering
+.. uniaxialMaterials/Viscous
+.. uniaxialMaterials/BoucWen
+.. uniaxialMaterials/BWBN
+
+7. PyTzQz uniaxial materials for p-y, t-z and q-z elements
+
+ .. toctree::
+ :maxdepth: 1
+
+ uniaxialMaterials/PySimple1
+ uniaxialMaterials/TzSimple1
+ uniaxialMaterials/QzSimple1
+ uniaxialMaterials/PyLiq1
+ uniaxialMaterials/TzLiq1
+ uniaxialMaterials/QzLiq1
+ uniaxialMaterials/TzSandCPT
+ uniaxialMaterials/QbSandCPT
+
+.. uniaxialMaterials/KikuchiAikenHDR
+.. uniaxialMaterials/KikuchiAikenLRB
+.. uniaxialMaterials/AxialSp
+.. uniaxialMaterials/AxialSpHD
+.. uniaxialMaterials/PinchingLimitState
+.. uniaxialMaterials/CFSWSWP
+.. uniaxialMaterials/CFSSSWP
+.. uniaxialMaterials/PySimple1Gen
+.. uniaxialMaterials/TzSimple1Gen
diff --git a/source/user/manual/material/uniaxialMaterials/APDMD.rst b/source/user/manual/material/uniaxialMaterials/APDMD.rst
index f0a5f598..8220c471 100644
--- a/source/user/manual/material/uniaxialMaterials/APDMD.rst
+++ b/source/user/manual/material/uniaxialMaterials/APDMD.rst
@@ -1,14 +1,14 @@
-.. _APDMD :
+.. _APDMD:
APDMD Material
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^
This command is used to construct an APDMD material that simulates the hysteretic response of an asynchronous parallel double-stage metallic damper.
A typical asynchronous parallel double-stage metallic damper is composed of two sub-dampers and an asynchronously activation system. In the first stage only the first sub-damper works and when the deformation reaches to $ad2, the second sub-damper actives , exhibiting the double-stage working mechanism.
.. function:: uniaxialMaterial APDMD $matTag $fy1 $E1 $ad2 $fy2 $E2 $b1 $b2 $a1 $n1 $a2 $n2
-.. csv-table::
+.. csv-table::
:header: "Argument", "Type", "Description"
:widths: 10, 10, 40
@@ -22,86 +22,85 @@ A typical asynchronous parallel double-stage metallic damper is composed of two
$b2, |float|, Ratio of post-yield stiffness to the initial stiffness of the second sub-damper
$a1, |float|, Parameters to control the nonlinear behavior of the first sub-damper
$n1, |float|, Parameters to control the transition from elastic to plastic branches of the first sub-damper
- $a2, |float|, Parameters to control the nonlinear behavior of the second sub-damper
+ $a2, |float|, Parameters to control the nonlinear behavior of the second sub-damper
$n2, |float|, Parameters to control the transition from elastic to plastic branches of the second sub-damper
-
+
Recommended values of $a1 $n1 $a2 $n2 for simulating three types of APDMDs are provided in the examples.
.. figure:: figures/APDMD/APDMD1.png
- :align: center
- :figclass: align-center
+ :align: center
+ :figclass: align-center
+
+ APDMD material schematic.
+
+Example
+-------
+
+In order to verify the reliability of the APDMD uniaxialMaterial, three types of asynchronous parallel double-stage metallic dampers were simulated as examples, including the parallel double-stage yielding buckling restrained brace (PDYBRB), parallel double-stage crawler-track-shaped shear damper (PDCSD) and parallel double-stage shear panel damper (PDSPD).
+Parameters of the APDMD uniaxialMaterial examples for modeling two tests of each of the above three types of dampers are presented in Table 1. (Units can be arbitrarily converted, but must be unified.)
-.. note::
-Example:
- In order to verify the reliability of the APDMD uniaxialMaterial, three types of asynchronous parallel double-stage metallic dampers were simulated as examples, including the parallel double-stage yielding buckling restrained brace (PDYBRB), parallel double-stage crawler-track-shaped shear damper (PDCSD) and parallel double-stage shear panel damper (PDSPD).
-Parameters of the APDMD uniaxialMaterial examples for modeling two tests of each of the above three types of dampers are presented in Table 1. (Units can be arbitrarily converted, but must be unified.)
+**Case 1: PDYBRB.** When simulating parallel double-stage yielding buckling restrained brace (PDYBRB) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 1, 10, 2 and 4, respectively.
.. figure:: figures/APDMD/APDMD2.png
- :align: center
- :figclass: align-center
+ :align: center
+ :figclass: align-center
- (1) When simulating parallel double-stage yielding buckling restrained brace (PDYBRB) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 1, 10, 2 and 4, respectively.
+ PDYBRB example parameters and response.
The input parameters for the material should be as follows:
- **Tcl Code**
- .. code-block:: tcl
+1. **Tcl Code**
+.. code-block:: tcl
- uniaxialMaterial APDMD 1 371 180 12 742 406 0.045 0.041 1 10 2 4
- uniaxialMaterial APDMD 1 479 230 15.8 659 355 0.033 0.043 1 10 2 4
-
-Using these parameters, comparison between the experimental and simulated load-deformation curves of PDYBRB is shown in Fig. 2.
+ uniaxialMaterial APDMD 1 371 180 12 742 406 0.045 0.041 1 10 2 4
+ uniaxialMaterial APDMD 1 479 230 15.8 659 355 0.033 0.043 1 10 2 4
+Using these parameters, comparison between the experimental and simulated load-deformation curves of PDYBRB is shown below.
+**Case 2: PDCSD.** When simulating parallel double-stage crawler-track-shaped shear damper (PDCSD) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 0.5, 10, 1 and 15, respectively.
.. figure:: figures/APDMD/APDMD3.png
- :align: center
- :figclass: align-center
-
+ :align: center
+ :figclass: align-center
- (2) When simulating parallel double-stage crawler-track-shaped shear damper (PDCSD) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 0.5, 10, 1 and 15, respectively.
+ PDCSD example parameters and response.
The input parameters for the material should be as follows:
- **Tcl Code**
-
- .. code-block:: tcl
+1. **Tcl Code**
- uniaxialMaterial APDMD 1 18 2 27 10.55 1.21 0.083 0.033 0.5 10 1 15
- uniaxialMaterial APDMD 1 23 3.24 20 17.48 3.57 0.095 -0.050 0.5 10 1 15
+.. code-block:: tcl
+ uniaxialMaterial APDMD 1 18 2 27 10.55 1.21 0.083 0.033 0.5 10 1 15
+ uniaxialMaterial APDMD 1 23 3.24 20 17.48 3.57 0.095 -0.050 0.5 10 1 15
-Using these parameters, comparison between the experimental and simulated load-deformation curves of PDCSD is shown in Fig. 3.
-
+Using these parameters, comparison between the experimental and simulated load-deformation curves of PDCSD is shown below.
+**Case 3: PDSPD.** When simulating parallel double-stage shear panel damper (PDSPD) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 1, 15, 0.5 and 10, respectively.
.. figure:: figures/APDMD/APDMD4.png
- :align: center
- :figclass: align-center
+ :align: center
+ :figclass: align-center
- (3) When simulating parallel double-stage shear panel damper (PDSPD) using APDMD uniaxialMaterial, $a1, $n1, $a2 and $n2 are recommended to be 1, 15, 0.5 and 10, respectively.
+ PDSPD example parameters and response.
The input parameters for the material should be as follows:
- **Tcl Code**
-
- .. code-block:: tcl
-
- uniaxialMaterial APDMD 1 200 281.69 4.5 87.05 29.02 0.019 -0.031 1 15 0.5 10
- uniaxialMaterial APDMD 1 175 97.22 3.6 58.18 13.82 0.046 0.133 1 15 0.5 10
+1. **Tcl Code**
+.. code-block:: tcl
+ uniaxialMaterial APDMD 1 200 281.69 4.5 87.05 29.02 0.019 -0.031 1 15 0.5 10
+ uniaxialMaterial APDMD 1 175 97.22 3.6 58.18 13.82 0.046 0.133 1 15 0.5 10
-Using these parameters, comparison between the experimental and simulated load-deformation curves of PDMD is shown in Fig. 4.
-
-
+Using these parameters, comparison between the experimental and simulated load-deformation curves of PDSPD is shown below.
.. figure:: figures/APDMD/APDMD5.png
- :align: center
- :figclass: align-center
-
+ :align: center
+ :figclass: align-center
+ Comparison of experimental and simulated load-deformation curves.
Code Developed by: Linlin Xie, Cantian Yang, Bingyan Liu, Aiqun Li, Beijing University of Civil Engineering and Architecture.
diff --git a/source/user/manual/material/uniaxialMaterials/APDVFD.rst b/source/user/manual/material/uniaxialMaterials/APDVFD.rst
index 28210fda..435b307f 100644
--- a/source/user/manual/material/uniaxialMaterials/APDVFD.rst
+++ b/source/user/manual/material/uniaxialMaterials/APDVFD.rst
@@ -1,76 +1,79 @@
-.. _APDVFD :
+.. _APDVFD:
APDVFD Material
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
This command is used to construct a uniaxialMaterial model that simulates the hysteretic responses (axial load-deformation) of an asynchronous parallel double-stage viscous fluid damper (APDVFD) with specific parameters. An adaptive iterative algorithm with a high-precision accuracy has been implemented and validated to solve numerically the constitutive equations. (Specific parameters are shown in Fig. 1.)
.. function:: uniaxialMaterial APDVFD $matTag $K $G1 $G2 $Alpha $L $LC $DP $DG $N1 $N2 $DO1 $DO2 $DC $S $HP $HC <$LGap> <$NM $RelTol $AbsTol $MaxHalf>
-.. csv-table::
+.. csv-table::
:header: "Argument", "Type", "Description"
:widths: 10, 10, 40
$matTag, |integer|, integer tag identifying material.
- $K, |float|, Elastic stiffness of linear spring to model the axial flexibility of a viscous damper (e.g. combined stiffness of the supporting brace and internal damper portion. The value is usually 10^5N/mm.).
+ $K, |float|, "Elastic stiffness of linear spring to model the axial flexibility of a viscous damper (e.g. combined stiffness of the supporting brace and internal damper portion. The value is usually 10^5N/mm.)."
$G1, |float|, Primary piston hydrodynamic viscosity.
$G2, |float|, Secondary piston hydrodynamic viscosity.
$Alpha, |float|, Velocity exponent.
- $L, |float|, The thickness of the total piston (The primary piston is equal to the secondary piston.).
- $LC, |float|, The thickness of the two ends of the secondary piston head (To ensure the secondary piston could smoothly move from the free segment into the damping segment, it is a smaller diameter than that at the middle.).
- $DP, |float|, The diameters of the piston (The primary piston is equal to the secondary piston.).
+ $L, |float|, "The thickness of the total piston (The primary piston is equal to the secondary piston.)."
+ $LC, |float|, "The thickness of the two ends of the secondary piston head (To ensure the secondary piston could smoothly move from the free segment into the damping segment, it is a smaller diameter than that at the middle.)."
+ $DP, |float|, "The diameters of the piston (The primary piston is equal to the secondary piston.)."
$DG, |float|, The diameters of the piston rod.
$N1, |float|, Number of primary piston circular orifices.
$N2, |float|, Number of secondary piston circular orifices.
$DO1, |float|, The diameters of primary piston circular orifices.
$DO2, |float|, The diameters of secondary piston circular orifices.
- $DC, |float|, Inside diameter of the cylinder (The primary cylinder is equal to the secondary cylinder.).
- $S, |float|, The second-stage activation deformation (The displacement of the secondary piston begins to participate in the work.).
- $HP, |float|, Height of annular gap between cylinder inner surface and piston middle outer surface (The value cannot be zero.).
- $HC, |float|, Height of annular gap between cylinder inner surface and outer surface of piston two ends (The value cannot be zero.).
+ $DC, |float|, "Inside diameter of the cylinder (The primary cylinder is equal to the secondary cylinder.)."
+ $S, |float|, "The second-stage activation deformation (The displacement of the secondary piston begins to participate in the work.)."
+ $HP, |float|, "Height of annular gap between cylinder inner surface and piston middle outer surface (The value cannot be zero.)."
+ $HC, |float|, "Height of annular gap between cylinder inner surface and outer surface of piston two ends (The value cannot be zero.)."
$LGap, |float|, Gap length to simulate the gap length due to the pin tolerance.
- $NM, |float|, Employed adaptive numerical algorithm (default value NM = 1; 1 = Dormand-Prince54, 2=6th order Adams-Bashforth-Moulton, 3=modified Rosenbrock Triple).
- $RelTol, |float|, Tolerance for absolute relative error control of the adaptive iterative algorithm (default value 10^-6).
- $AbsTol, |float|, Tolerance for absolute error control of adaptive iterative algorithm (default value 10^-10).
+ $NM, |float|, "Employed adaptive numerical algorithm (default value NM = 1; 1 = Dormand-Prince54, 2=6th order Adams-Bashforth-Moulton, 3=modified Rosenbrock Triple)."
+ $RelTol, |float|, "Tolerance for absolute relative error control of the adaptive iterative algorithm (default value 10^-6)."
+ $AbsTol, |float|, "Tolerance for absolute error control of adaptive iterative algorithm (default value 10^-10)."
$MaxHalf, |float|, Maximum number of sub-step iterations within an integration step (default value 15).
-
.. figure:: figures/APDVFD/APDVFD1.png
- :align: center
- :figclass: align-center
+ :align: center
+ :figclass: align-center
-.. note::
-Example:
- In order to verify the reliability of the asynchronous parallel double-stage viscous fluid damper, two sets of test and simulation results are selected for verification. Material parameters are shown in the following table (Units can be arbitrarily converted, but must be unified):
+ APDVFD material schematic.
-.. figure:: figures/APDVFD/APDVFD2.png
- :align: center
- :figclass: align-center
- The input parameters for the material should be as follows:
- **Tcl Code**
+Example
+-------
- .. code-block:: tcl
+In order to verify the reliability of the asynchronous parallel double-stage viscous fluid damper, two sets of test and simulation results are selected for verification. Material parameters are shown in the following table (Units can be arbitrarily converted, but must be unified):
+.. figure:: figures/APDVFD/APDVFD2.png
+ :align: center
+ :figclass: align-center
- uniaxialMaterial APDVFD 1 300 0.009 0.009 0.2238 170 25 179.8 90 6 6 4.5 5 180 20 0.1 0.5
- uniaxialMaterial APDVFD 1 300 0.013 0.013 0.1986 170 25 179.8 90 6 6 4.5 5 180 20 0.1 0.5
-Using these parameters, comparison between the experimental and simulated load-deformation curves of APDVFD1 for sinusoidal displacement increment of 80mm and a frequency f = 0.02Hz is shown in Fig. 2. The comparison between the experimental and simulated load-deformation curves of APDVFD2 for sinusoidal displacement increment of 120mm and a frequency f = 0.02Hz is shown in Fig. 3.
+ APDVFD material parameters.
+The input parameters for the material should be as follows:
+1. **Tcl Code**
-.. figure:: figures/APDVFD/APDVFD3.png
- :align: center
- :figclass: align-center
+.. code-block:: tcl
+
+ uniaxialMaterial APDVFD 1 300 0.009 0.009 0.2238 170 25 179.8 90 6 6 4.5 5 180 20 0.1 0.5
+ uniaxialMaterial APDVFD 1 300 0.013 0.013 0.1986 170 25 179.8 90 6 6 4.5 5 180 20 0.1 0.5
+Using these parameters, comparison between the experimental and simulated load-deformation curves of APDVFD1 for sinusoidal displacement increment of 80mm and a frequency f = 0.02Hz is shown in Fig. 2. The comparison between the experimental and simulated load-deformation curves of APDVFD2 for sinusoidal displacement increment of 120mm and a frequency f = 0.02Hz is shown in Fig. 3.
+.. figure:: figures/APDVFD/APDVFD3.png
+ :align: center
+ :figclass: align-center
+ Comparison of experimental and simulated load-deformation curves.
Code Developed by: Linlin Xie, Cantian Yang, Haoxiang Wang, Aiqun Li, Beijing University of Civil Engineering and Architecture.
References:
-[1] Yang C, Wang H, Xie L, Li A, Wang X. “Experimental and theoretical investigations on an asynchronized parallel double-stage viscous fluid damper.” Structural Control and Health Monitoring,(under review).
+[1] Yang C, Wang H, Xie L, Li A, Wang X. "Experimental and theoretical investigations on an asynchronized parallel double-stage viscous fluid damper." Structural Control and Health Monitoring,(under review).
-[2] Akcelyan, S., Lignos, D. G., Hikino, T. (2018). “Adaptive Numerical Method Algorithms for Nonlinear Viscous and Bilinear Oil Damper Models Subjected to Dynamic Loading.” Soil Dynamics and Earthquake Engineering, 113, 488-502.
+[2] Akcelyan, S., Lignos, D. G., Hikino, T. (2018). "Adaptive Numerical Method Algorithms for Nonlinear Viscous and Bilinear Oil Damper Models Subjected to Dynamic Loading." Soil Dynamics and Earthquake Engineering, 113, 488-502.
-[3] Oohara, K., and Kasai, K. (2002), “Time-History Analysis Models for Nonlinear Viscous Dampers”, Proc. Structural Engineers World Congress (SEWC), Yokohama, JAPAN, CD-ROM, T2-2-b-3 (in Japanese).
+[3] Oohara, K., and Kasai, K. (2002), "Time-History Analysis Models for Nonlinear Viscous Dampers", Proc. Structural Engineers World Congress (SEWC), Yokohama, JAPAN, CD-ROM, T2-2-b-3 (in Japanese).
diff --git a/source/user/manual/material/uniaxialMaterials/Elastic.rst b/source/user/manual/material/uniaxialMaterials/Elastic.rst
new file mode 100644
index 00000000..753a9d24
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/Elastic.rst
@@ -0,0 +1,33 @@
+.. _Elastic:
+
+Elastic Material
+^^^^^^^^^^^^^^^^
+
+This command constructs a linear elastic uniaxial material.
+
+.. function:: uniaxialMaterial Elastic $matTag $E <$eta> <$Eneg>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E, |float|, tangent stiffness
+ $eta, |float|, optional damping tangent (default 0.0)
+ $Eneg, |float|, optional stiffness in compression when different from tension (default = $E)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial Elastic 1 3000.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('Elastic', 1, 3000.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/uniaxialMaterials/ElasticBilin.rst b/source/user/manual/material/uniaxialMaterials/ElasticBilin.rst
new file mode 100644
index 00000000..2c93bb54
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/ElasticBilin.rst
@@ -0,0 +1,36 @@
+.. _ElasticBilin:
+
+Elastic Bilinear Material
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a bilinear elastic uniaxial material. Also accepted as ``ElasticBilinear``.
+
+.. function:: uniaxialMaterial ElasticBilin $matTag $E1P $E2P $eps2P <$E1N $E2N $eps2N>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E1P, |float|, initial stiffness in tension
+ $E2P, |float|, secondary stiffness in tension
+ $eps2P, |float|, strain at which secondary stiffness begins in tension
+ $E1N, |float|, optional initial stiffness in compression
+ $E2N, |float|, optional secondary stiffness in compression
+ $eps2N, |float|, optional strain at which secondary stiffness begins in compression
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial ElasticBilin 1 3000.0 300.0 0.01
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('ElasticBilin', 1, 3000.0, 300.0, 0.01)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/uniaxialMaterials/ElasticMultiLinear.rst b/source/user/manual/material/uniaxialMaterials/ElasticMultiLinear.rst
new file mode 100644
index 00000000..9dc6015b
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/ElasticMultiLinear.rst
@@ -0,0 +1,44 @@
+.. _ElasticMultiLinear:
+
+Elastic Multi-Linear Material
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a multi-linear elastic uniaxial material defined by strain-stress points.
+
+.. function:: uniaxialMaterial ElasticMultiLinear $matTag <$eta> -strain $strainPoints -stress $stressPoints
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $eta, |float|, optional damping tangent
+ -strain, |string|, flag followed by strain points (at least two)
+ $strainPoints, |listFloat|, strain values
+ -stress, |string|, flag followed by stress points (at least two)
+ $stressPoints, |listFloat|, stress values corresponding to the strain points
+
+The material is path-independent: unloading and reloading follow the same multi-linear stress-strain curve.
+
+.. figure:: figures/ElasticMultiLinear.png
+ :align: center
+ :figclass: align-center
+ :name: fig-ElasticMultiLinear-response
+
+ ElasticMultiLinear material stress-strain behavior.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial ElasticMultiLinear 1 -strain 0.0 0.01 0.02 -stress 0.0 30.0 35.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('ElasticMultiLinear', 1, '-strain', 0.0, 0.01, 0.02, '-stress', 0.0, 30.0, 35.0)
+
+Code Developed by: Andreas Schellenberg
diff --git a/source/user/manual/material/uniaxialMaterials/ElasticNoTension.rst b/source/user/manual/material/uniaxialMaterials/ElasticNoTension.rst
new file mode 100644
index 00000000..f021dfa9
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/ElasticNoTension.rst
@@ -0,0 +1,35 @@
+.. _ElasticNoTension:
+
+Elastic No Tension Material
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastic uniaxial material with no tensile strength. In OpenSees the material type is ``ENT``.
+
+.. function:: uniaxialMaterial ENT $matTag $E <$A $B>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E, |float|, stiffness in compression
+ $A, |float|, optional tension scaling factor (default 0.0)
+ $B, |float|, optional tension-shape parameter (default 1.0)
+
+In compression the stress is :math:`\sigma = E \varepsilon`; in tension it is :math:`\sigma = A E \tanh(B \varepsilon)` when :math:`A \neq 0`, and zero when :math:`A = 0` (the default).
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial ENT 1 3000.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('ENT', 1, 3000.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/uniaxialMaterials/ElasticPP.rst b/source/user/manual/material/uniaxialMaterials/ElasticPP.rst
new file mode 100644
index 00000000..03b6fbf5
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/ElasticPP.rst
@@ -0,0 +1,34 @@
+.. _ElasticPP:
+
+Elastic-Perfectly Plastic Material
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastic-perfectly plastic uniaxial material.
+
+.. function:: uniaxialMaterial ElasticPP $matTag $E $epsP <$epsN $eps0>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E, |float|, tangent stiffness
+ $epsP, |float|, strain at which material yields in tension
+ $epsN, |float|, optional strain at which material yields in compression (default = -$epsP)
+ $eps0, |float|, optional initial strain (default 0.0)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial ElasticPP 1 3000.0 0.02
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('ElasticPP', 1, 3000.0, 0.02)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/uniaxialMaterials/ElasticPP_Gap.rst b/source/user/manual/material/uniaxialMaterials/ElasticPP_Gap.rst
new file mode 100644
index 00000000..77f69f27
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/ElasticPP_Gap.rst
@@ -0,0 +1,35 @@
+.. _ElasticPP_Gap:
+
+Elastic-Perfectly Plastic Gap Material
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastic-perfectly plastic gap uniaxial material.
+
+.. function:: uniaxialMaterial ElasticPPGap $matTag $E $Fy $gap <$eta damage>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E, |float|, initial stiffness
+ $Fy, |float|, yield force
+ $gap, |float|, initial gap
+ $eta, |float|, optional damping tangent (default 0.0)
+ damage, |string|, optional ``damage`` flag to enable damage behavior
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial ElasticPPGap 1 1000.0 10.0 0.01
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('ElasticPPGap', 1, 1000.0, 10.0, 0.01)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/material/uniaxialMaterials/Hardening.rst b/source/user/manual/material/uniaxialMaterials/Hardening.rst
new file mode 100644
index 00000000..af805d82
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/Hardening.rst
@@ -0,0 +1,37 @@
+.. _Hardening:
+
+Hardening Material
+^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastoplastic uniaxial material with combined isotropic and kinematic hardening. Also accepted as ``Hardening2``.
+
+.. function:: uniaxialMaterial Hardening $matTag $E $sigmaY $H_iso $H_kin <$eta>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $E, |float|, initial stiffness
+ $sigmaY, |float|, yield stress
+ $H_iso, |float|, isotropic hardening modulus
+ $H_kin, |float|, kinematic hardening modulus
+ $eta, |float|, optional damping tangent (default 0.0)
+
+The post-yield slope is :math:`E(H_{iso}+H_{kin})/(E+H_{iso}+H_{kin})`. To match a ``Steel01``-style hardening ratio :math:`b` with kinematic hardening only (:math:`H_{iso}=0`), use :math:`H_{kin} = bE/(1-b)` (equivalently :math:`bE = EH_{kin}/(E+H_{kin})`); see `Elastoplastic Calibration `_.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial Hardening 1 3000.0 30.0 100.0 200.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('Hardening', 1, 3000.0, 30.0, 100.0, 200.0)
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/material/uniaxialMaterials/MultiLinear.rst b/source/user/manual/material/uniaxialMaterials/MultiLinear.rst
new file mode 100644
index 00000000..c7204aa6
--- /dev/null
+++ b/source/user/manual/material/uniaxialMaterials/MultiLinear.rst
@@ -0,0 +1,42 @@
+.. _MultiLinear:
+
+Multi-Linear Material
+^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a multi-linear uniaxial material defined by strain-stress point pairs.
+
+.. function:: uniaxialMaterial MultiLinear $matTag $e1 $s1 $e2 $s2 ...
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $matTag, |integer|, unique material tag
+ $e1 $s1 ..., |listFloat|, alternating strain and stress points (at least two pairs)
+
+The material follows a symmetric multi-linear envelope with inelastic hysteretic unloading and reloading.
+
+.. figure:: figures/MultiLinear_Material2.png
+ :align: center
+ :figclass: align-center
+ :name: fig-MultiLinear-hysteresis
+
+ MultiLinear material hysteretic behavior.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ uniaxialMaterial MultiLinear 1 0.0 0.0 0.01 30.0 0.02 35.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.uniaxialMaterial('MultiLinear', 1, 0.0, 0.0, 0.01, 30.0, 0.02, 35.0)
+
+Code Developed by: |fmk|
+
+Images Developed by: Vesna Terzic
diff --git a/source/user/manual/material/uniaxialMaterials/figures/ElasticMultiLinear.png b/source/user/manual/material/uniaxialMaterials/figures/ElasticMultiLinear.png
new file mode 100644
index 00000000..8d239807
Binary files /dev/null and b/source/user/manual/material/uniaxialMaterials/figures/ElasticMultiLinear.png differ
diff --git a/source/user/manual/material/uniaxialMaterials/figures/MultiLinear_Material2.png b/source/user/manual/material/uniaxialMaterials/figures/MultiLinear_Material2.png
new file mode 100644
index 00000000..7238354b
Binary files /dev/null and b/source/user/manual/material/uniaxialMaterials/figures/MultiLinear_Material2.png differ
diff --git a/source/user/manual/misc/remove.rst b/source/user/manual/misc/remove.rst
new file mode 100644
index 00000000..1539fa68
--- /dev/null
+++ b/source/user/manual/misc/remove.rst
@@ -0,0 +1,40 @@
+.. _remove:
+
+remove Command
+**************
+
+This command is used to remove components from the model.
+
+.. function:: remove element $eleTag
+
+ Remove an element from the domain.
+
+.. function:: remove node $nodeTag
+
+ Remove a node from the domain.
+
+.. function:: remove loadPattern $patternTag
+
+ Remove a load pattern from the domain.
+
+.. function:: remove parameter $paramTag
+
+ Remove a parameter from the model.
+
+.. function:: remove recorders
+
+ Remove all recorders.
+
+.. function:: remove recorder $tag
+
+ Remove a single recorder. The tag is the integer returned when the recorder was created.
+
+.. function:: remove sp $nodeTag $dof
+
+ Remove a single-point constraint.
+
+.. function:: remove mp $constrainedNodeTag
+
+ Remove a multi-point constraint.
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/miscCommands.rst b/source/user/manual/miscCommands.rst
index 04ac1aaa..2a6203e8 100644
--- a/source/user/manual/miscCommands.rst
+++ b/source/user/manual/miscCommands.rst
@@ -20,6 +20,7 @@ These are commands added to the interpreter which don't fit into one of the othe
:maxdepth: 1
misc/loadConst
+ misc/remove
misc/wipe
misc/wipeAnalysis
misc/exit
diff --git a/source/user/manual/model/block.rst b/source/user/manual/model/block.rst
new file mode 100644
index 00000000..401d5fc5
--- /dev/null
+++ b/source/user/manual/model/block.rst
@@ -0,0 +1,75 @@
+.. _block:
+
+block Commands
+**************
+
+The block commands generate regular meshes of quadrilateral or brick elements from a block of corner (and optional midside) node coordinates.
+
+block2D Command
+^^^^^^^^^^^^^^^
+
+Generates a mesh of quadrilateral elements in 2D or 3D. In 3D models, a 2D surface mesh suitable for shell analysis is created.
+
+.. function:: block2D $numX $numY $startNode $startEle $eleType $eleArgs { $coords }
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $numX, |integer|, number of elements in the local x direction
+ $numY, |integer|, number of elements in the local y direction
+ $startNode, |integer|, starting node tag for mesh generation
+ $startEle, |integer|, starting element tag for mesh generation
+ $eleType, |string|, "quadrilateral element type (for example ``quad``, ``ShellMITC4``, ``bbarQuad``, ``enhancedQuad``)"
+ $eleArgs, |list|, arguments required by the chosen element type
+ $coords, |list|, "block corner coordinates in braces; nodes 1--4 are required, nodes 5--9 are optional for curved meshes"
+
+Only the first four corner nodes are required. Optional nodes 5--9 refine curved block geometries.
+
+block3D Command
+^^^^^^^^^^^^^^^
+
+Generates a mesh of eight-node brick solid elements.
+
+.. function:: block3D $numX $numY $numZ $startNode $startEle $eleType $eleArgs { $coords }
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $numX, |integer|, number of elements in the local x direction
+ $numY, |integer|, number of elements in the local y direction
+ $numZ, |integer|, number of elements in the local z direction
+ $startNode, |integer|, starting node tag for mesh generation
+ $startEle, |integer|, starting element tag for mesh generation
+ $eleType, |string|, "brick element type (for example ``stdBrick``, ``bbarBrick``, ``Brick20N``)"
+ $eleArgs, |list|, arguments required by the chosen element type
+ $coords, |list|, "block corner coordinates in braces; nodes 1--8 are required, nodes 9--27 are optional for curved meshes"
+
+.. note::
+
+ 1. Variable substitutions are recognized when command arguments are placed in quotes.
+
+ 2. In Tcl, corner coordinates are wrapped in braces. In OpenSeesPy, pass ``*eleArgs`` and ``*crds`` as separate positional arguments (no braces).
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ block2D 16 4 1 1 quad "1 PlaneStrain2D 1" {
+ 1 0 0
+ 2 40 0
+ 3 40 10
+ 4 0 10
+ }
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ block2D(16, 4, 1, 1, 'quad', '1', 'PlaneStrain2D', '1',
+ 1, 0, 0, 2, 40, 0, 3, 40, 10, 4, 0, 10)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/model/element.rst b/source/user/manual/model/element.rst
index b0095e0f..6055281c 100644
--- a/source/user/manual/model/element.rst
+++ b/source/user/manual/model/element.rst
@@ -46,6 +46,7 @@ The following subsections contain information about **$eleType** and the number
elements/Truss
elements/CorotationalTruss
+ elements/InertiaTruss
3. Beam Column Elements
@@ -60,7 +61,7 @@ The following subsections contain information about **$eleType** and the number
elements/ElasticBeamColumnElementWithStiffnessModifiers
elements/ElasticTimoshenkoBeamColumnElement
elements/BeamWithHingesElement
- elements/gradientInelasticBeamColumn
+ elements/gradientInelasticBeamColumn
elements/FlexureShearInteractionDisplacementBasedBeamColumnElement
elements/MVLEM
elements/MVLEM_3D
@@ -84,6 +85,7 @@ The following subsections contain information about **$eleType** and the number
elements/ShellNLDKGQ
elements/ShellNL
elements/BbarPlaneStrainQuadrilateral
+ elements/bbarQuad
elements/EnhancedStrainQuadrilateral
elements/MEFI
@@ -151,13 +153,13 @@ The following subsections contain information about **$eleType** and the number
elements/ElastomericX
elements/LeadRubberX
elements/HDR
- elements/RJ-Watson EQS Bearing
+ elements/RJWatsonEQSBearing
elements/FPBearingPTV
elements/TripleFrictionPendulumX
-11. U-P Elements (saturated soil)
+11. U-P Elements (saturated soil)
.. toctree::
:maxdepth: 1
@@ -168,27 +170,24 @@ The following subsections contain information about **$eleType** and the number
elements/bbarBrickUP
elements/NineFourNodeQuadUP
elements/TwentyEightNodeBrickUP
- elements/TwentyNodeBrickUP
- elements/BrickLargeDisplacementUP
- elements/SSPquadUP
+ elements/SSPquadUP
elements/SSPbrickUP
12. Contact
.. toctree::
- :maxdepth: 1
+ :maxdepth: 1
elements/SimpleContact2D
elements/SimpleContact3D
elements/BeamContact2D
elements/BeamContact3D
elements/BeamEndContact3D
- elements/zeroLengthImpact3D
-
+
13. Cable
.. toctree::
- :maxdepth: 1
+ :maxdepth: 1
elements/CatenaryCableElement
diff --git a/source/user/manual/model/elements/AC3D8.rst b/source/user/manual/model/elements/AC3D8.rst
new file mode 100644
index 00000000..83348365
--- /dev/null
+++ b/source/user/manual/model/elements/AC3D8.rst
@@ -0,0 +1,42 @@
+.. _AC3D8:
+
+AC3D8 Element
+^^^^^^^^^^^^^
+
+This command constructs an eight-node hexahedral acoustic fluid element for dam-reservoir and fluid-domain modeling. Each node carries one pressure DOF. The element requires an ``AcousticMedium`` ND material. Use with ``-ndm 3 -ndf 1`` for the fluid mesh.
+
+.. function:: element AC3D8 $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $matTag
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 ... $N8, |integer|, eight node tags in standard brick order
+ $matTag, |integer|, tag of a previously defined ``AcousticMedium`` material
+
+.. note::
+
+ 1. Define the acoustic material first: ``nDMaterial AcousticMedium $matTag $K $rho <$gamma>``.
+
+ 2. For fluid-structure coupling at interfaces see :ref:`ASI3D8`. For acoustic boundaries see :ref:`AV3D4`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force`` and ``stiffness``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ nDMaterial AcousticMedium 1 2.2e9 1000.0
+ element AC3D8 1 1 2 3 4 5 6 7 8 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ nDMaterial('AcousticMedium', 1, 2.2e9, 1000.0)
+ element('AC3D8', 1, 1, 2, 3, 4, 5, 6, 7, 8, 1)
+
+Code developed by: Quan Gu, Yichao Gao, and Zhijian Qiu, Xiamen University
diff --git a/source/user/manual/model/elements/ASI3D8.rst b/source/user/manual/model/elements/ASI3D8.rst
new file mode 100644
index 00000000..13a6a496
--- /dev/null
+++ b/source/user/manual/model/elements/ASI3D8.rst
@@ -0,0 +1,40 @@
+.. _ASI3D8:
+
+ASI3D8 Element
+^^^^^^^^^^^^^^
+
+This command constructs an eight-node quadrilateral fluid-structure interface element for coupled dam-reservoir analysis. The element connects four solid nodes (three displacement DOFs each) and four fluid nodes (one pressure DOF each). Use with compatible solid and fluid node DOF layouts in a 3D model.
+
+.. function:: element ASI3D8 $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 $N2 $N3 $N4, |integer|, four solid-side interface nodes
+ $N5 $N6 $N7 $N8, |integer|, four fluid-side interface nodes
+
+.. note::
+
+ 1. Pair with :ref:`AC3D8` acoustic elements in the fluid domain and standard solid elements in the structure.
+
+ 2. The element enforces fluid-structure interaction tractions on the shared interface.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force`` and ``stiffness``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element ASI3D8 1 1 2 3 4 101 102 103 104
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('ASI3D8', 1, 1, 2, 3, 4, 101, 102, 103, 104)
+
+Code developed by: Quan Gu, Yichao Gao, and Zhijian Qiu, Xiamen University
diff --git a/source/user/manual/model/elements/AV3D4.rst b/source/user/manual/model/elements/AV3D4.rst
new file mode 100644
index 00000000..0927d4b0
--- /dev/null
+++ b/source/user/manual/model/elements/AV3D4.rst
@@ -0,0 +1,42 @@
+.. _AV3D4:
+
+AV3D4 Element
+^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral acoustic absorbing-transmitting boundary element for fluid domain edges in dam-reservoir analysis. The element requires an ``AcousticMedium`` ND material. Use with ``-ndm 3 -ndf 1`` on fluid boundary nodes.
+
+.. function:: element AV3D4 $eleTag $iNode $jNode $kNode $lNode $matTag
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four boundary nodes in counter-clockwise order
+ $matTag, |integer|, tag of a previously defined ``AcousticMedium`` material
+
+.. note::
+
+ 1. Define the acoustic material first: ``nDMaterial AcousticMedium $matTag $K $rho <$gamma>``.
+
+ 2. For solid-side absorbing boundaries see :ref:`VS3D4`. For interior fluid elements see :ref:`AC3D8`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force`` and ``stiffness``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ nDMaterial AcousticMedium 1 2.2e9 1000.0
+ element AV3D4 1 1 2 3 4 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ nDMaterial('AcousticMedium', 1, 2.2e9, 1000.0)
+ element('AV3D4', 1, 1, 2, 3, 4, 1)
+
+Code developed by: Quan Gu, Yichao Gao, and Zhijian Qiu, Xiamen University
diff --git a/source/user/manual/model/elements/BbarPlaneStrainQuadrilateral.rst b/source/user/manual/model/elements/BbarPlaneStrainQuadrilateral.rst
new file mode 100644
index 00000000..9dc846ef
--- /dev/null
+++ b/source/user/manual/model/elements/BbarPlaneStrainQuadrilateral.rst
@@ -0,0 +1,39 @@
+.. _BbarPlaneStrainQuadrilateral:
+
+Bbar Plane Strain Quadrilateral Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral element using a bilinear isoparametric formulation with a mixed constant pressure/volume (B-bar) assumption. The command names in OpenSees are ``bbarQuad`` or ``mixedQuad``. The element is for plane strain problems only. Use with ``-ndm 2 -ndf 2``.
+
+.. function:: element bbarQuad $eleTag $iNode $jNode $kNode $lNode $thick $matTag
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $thick, |float|, element thickness
+ $matTag, |integer|, tag of an nD material
+
+.. note::
+
+ 1. Plane strain only; not valid for plane stress problems.
+
+ 2. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element bbarQuad 1 1 2 3 4 1.0 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('bbarQuad', 1, 1, 2, 3, 4, 1.0, 1)
+
+Code developed by: Ed Love
diff --git a/source/user/manual/model/elements/BeamContact2D.rst b/source/user/manual/model/elements/BeamContact2D.rst
new file mode 100644
index 00000000..3f6a1e8c
--- /dev/null
+++ b/source/user/manual/model/elements/BeamContact2D.rst
@@ -0,0 +1,42 @@
+.. _BeamContact2D:
+
+BeamContact2D Element
+^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-dimensional beam-to-surface contact element. A beam segment (nodes i-j) contacts a secondary node through a Lagrange multiplier node. Use with ``-ndm 2``.
+
+.. function:: element BeamContact2D $eleTag $iNode $jNode $secondaryNode $lambdaNode $matTag $width $gapTol $forceTol <$cSwitch>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, beam end nodes
+ $secondaryNode, |integer|, secondary (contact) node
+ $lambdaNode, |integer|, Lagrange multiplier node
+ $matTag, |integer|, tag of a contact ND material
+ $width, |float|, beam width used in contact geometry
+ $gapTol, |float|, gap tolerance for contact detection
+ $forceTol, |float|, force tolerance for contact equilibrium
+ $cSwitch, |integer|, optional initial contact flag
+
+.. note::
+
+ A penalty variant is available as ``BeamContact2Dp``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element BeamContact2D 1 1 2 10 11 1 0.5 1.0e-6 1.0e-6
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('BeamContact2D', 1, 1, 2, 10, 11, 1, 0.5, 1.0e-6, 1.0e-6)
+
+Code developed by: Chris McGann, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/BeamContact3D.rst b/source/user/manual/model/elements/BeamContact3D.rst
new file mode 100644
index 00000000..6905b5bf
--- /dev/null
+++ b/source/user/manual/model/elements/BeamContact3D.rst
@@ -0,0 +1,43 @@
+.. _BeamContact3D:
+
+BeamContact3D Element
+^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional beam-to-surface contact element. A beam segment (nodes i-j) contacts a secondary node through a Lagrange multiplier node. Use with ``-ndm 3``.
+
+.. function:: element BeamContact3D $eleTag $iNode $jNode $secondaryNode $lambdaNode $radius $crdTransf $matTag $tolGap $tolF <$cSwitch>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, beam end nodes
+ $secondaryNode, |integer|, secondary (contact) node
+ $lambdaNode, |integer|, Lagrange multiplier node
+ $radius, |float|, beam radius used in contact geometry
+ $crdTransf, |integer|, tag of a coordinate transformation for the beam
+ $matTag, |integer|, tag of a contact ND material
+ $tolGap, |float|, gap tolerance for contact detection
+ $tolF, |float|, force tolerance for contact equilibrium
+ $cSwitch, |integer|, optional initial contact flag
+
+.. note::
+
+ A penalty variant is available as ``BeamContact3Dp``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element BeamContact3D 1 1 2 10 11 0.25 1 1 1.0e-6 1.0e-6
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('BeamContact3D', 1, 1, 2, 10, 11, 0.25, 1, 1, 1.0e-6, 1.0e-6)
+
+Code developed by: Kathryn Petek, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/BeamEndContact3D.rst b/source/user/manual/model/elements/BeamEndContact3D.rst
new file mode 100644
index 00000000..69222dbe
--- /dev/null
+++ b/source/user/manual/model/elements/BeamEndContact3D.rst
@@ -0,0 +1,41 @@
+.. _BeamEndContact3D:
+
+BeamEndContact3D Element
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional contact element between a beam end (nodes i-j) and a secondary node using a Lagrange multiplier node. Use with ``-ndm 3``.
+
+.. function:: element BeamEndContact3D $eleTag $iNode $jNode $secondaryNode $lambdaNode $radius $gapTol $forceTol <$cFlag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, beam end nodes
+ $secondaryNode, |integer|, secondary (contact) node
+ $lambdaNode, |integer|, Lagrange multiplier node
+ $radius, |float|, beam radius used in contact geometry
+ $gapTol, |float|, gap tolerance for contact detection
+ $forceTol, |float|, force tolerance for contact equilibrium
+ $cFlag, |integer|, optional initial contact flag
+
+.. note::
+
+ A penalty variant is available as ``BeamEndContact3Dp``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element BeamEndContact3D 1 1 2 10 11 0.25 1.0e-6 1.0e-6
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('BeamEndContact3D', 1, 1, 2, 10, 11, 0.25, 1.0e-6, 1.0e-6)
+
+Code developed by: Chris McGann, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/BeamWithHingesElement.rst b/source/user/manual/model/elements/BeamWithHingesElement.rst
new file mode 100644
index 00000000..b49bf5db
--- /dev/null
+++ b/source/user/manual/model/elements/BeamWithHingesElement.rst
@@ -0,0 +1,55 @@
+.. _BeamWithHingesElement:
+
+Beam With Hinges Element
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a force-based beam-column element with plastic hinges at the ends using modified Gauss-Radau integration. The command name in OpenSees is ``beamWithHinges``. The element interior is elastic; nonlinear behavior is concentrated in user-defined hinge sections at ends I and J.
+
+For 2D (``ndm=2``, ``ndf=3``):
+
+.. function:: element beamWithHinges $eleTag $iNode $jNode $secTagI $LpI $secTagJ $LpJ $E $A $Iz $transfTag <-mass $massDens> <-iter $maxIters $tol> <-subdivide $numSub $subFac>
+
+For 3D (``ndm=3``, ``ndf=6``):
+
+.. function:: element beamWithHinges $eleTag $iNode $jNode $secTagI $LpI $secTagJ $LpJ $E $A $Iz $Iy $G $J $transfTag <-mass $massDens> <-iter $maxIters $tol> <-subdivide $numSub $subFac>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end node tags
+ $secTagI $secTagJ, |integer|, section tags at ends I and J
+ $LpI $LpJ, |float|, plastic hinge lengths at ends I and J
+ $E $A $Iz, |float|, elastic properties of the interior (2D)
+ $Iy $G $J, |float|, additional elastic properties of the interior (3D)
+ $transfTag, |integer|, geometric transformation tag
+ $massDens, |float|, element mass per unit length (optional; default 0.0)
+ $maxIters, |integer|, maximum iterations for element compatibility (optional)
+ $tol, |float|, compatibility tolerance used with ``-iter`` (optional)
+ $numSub, |integer|, number of subdivisions used with ``-subdivide`` (optional)
+ $subFac, |float|, subdivision factor used with ``-subdivide`` (optional)
+
+.. note::
+
+ 1. This legacy format constrains the element interior to remain linear-elastic. For models where plasticity may spread beyond hinge regions, use :ref:`forceBeamColumn` with ``HingeRadau`` (or related) plastic-hinge integration instead.
+
+ 2. Hinge integration uses two-point Gauss-Radau over lengths ``4*LpI`` and ``4*LpJ`` at the element ends (six integration points total).
+
+ 3. Valid :ref:`elementRecorder` queries are the same as for :ref:`forceBeamColumn`.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element beamWithHinges 1 1 2 3 12.0 4 12.0 29000.0 20.0 800.0 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('beamWithHinges', 1, 1, 2, 3, 12.0, 4, 12.0, 29000.0, 20.0, 800.0, 1)
+
+Code developed by: |mhs|
diff --git a/source/user/manual/model/elements/BrickUP.rst b/source/user/manual/model/elements/BrickUP.rst
new file mode 100644
index 00000000..c3114f49
--- /dev/null
+++ b/source/user/manual/model/elements/BrickUP.rst
@@ -0,0 +1,42 @@
+.. _BrickUP:
+
+BrickUP Element
+^^^^^^^^^^^^^^^
+
+This command constructs an eight-node hexahedral brick element for coupled solid-fluid (u-p) analysis of saturated porous media. Each node has three solid displacement DOFs and one pore-pressure DOF. Use with ``-ndm 3 -ndf 4``.
+
+.. function:: element brickUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $matTag $bulk $fmass $permX $permY $permZ <$bX $bY $bZ>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8, |integer|, eight node tags in standard brick order
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus relating pore pressure and volumetric strain
+ $fmass, |float|, fluid mass density
+ $permX $permY $permZ, |float|, permeability in x; y; and z directions
+ $bX $bY $bZ, |float|, optional body-force components (default 0.0)
+
+.. note::
+
+ 1. Record pore pressure at nodes with a :ref:`nodeRecorder` on DOF 4.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force`` and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element brickUP 1 1 2 3 4 5 6 7 8 1 2.2e6 1000.0 1.0e-5 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('brickUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/CatenaryCableElement.rst b/source/user/manual/model/elements/CatenaryCableElement.rst
new file mode 100644
index 00000000..fe7875e3
--- /dev/null
+++ b/source/user/manual/model/elements/CatenaryCableElement.rst
@@ -0,0 +1,47 @@
+.. _CatenaryCableElement:
+
+CatenaryCableElement
+^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-node catenary cable element for static and dynamic analysis including thermal effects. The registered command name is ``CatenaryCable``. Use with ``-ndm 3 -ndf 3`` or ``-ndf 6``.
+
+.. function:: element CatenaryCable $eleTag $iNode $jNode $weight $E $A $L0 $alpha $temperature_change $rho $errorTol $Nsubsteps $massType
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $weight, |float|, distributed weight per unit length
+ $E, |float|, elastic modulus
+ $A, |float|, cross-sectional area
+ $L0, |float|, unstressed cable length
+ $alpha, |float|, thermal expansion coefficient
+ $temperature_change, |float|, temperature change from reference state
+ $rho, |float|, mass density
+ $errorTol, |float|, equilibrium iteration tolerance
+ $Nsubsteps, |integer|, number of substeps for internal equilibrium iterations
+ $massType, |integer|, mass matrix type: 0 lumped; 1 integration; 2 Clough-style; 3 equivalent truss
+
+.. note::
+
+ 1. The element formulates catenary equilibrium internally and supports large displacements.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, and ``basicForce``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element CatenaryCable 1 1 2 0.1 2.0e11 0.001 10.0 1.2e-5 0.0 7850.0 1.0e-8 10 0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('CatenaryCable', 1, 1, 2, 0.1, 2.0e11, 0.001, 10.0, 1.2e-5, 0.0, 7850.0, 1.0e-8, 10, 0)
+
+Code developed by: Pablo Ibanez and Jose Abell, Universidad de los Andes
diff --git a/source/user/manual/model/elements/ElasticBeamColumnElementWithStiffnessModifiers.rst b/source/user/manual/model/elements/ElasticBeamColumnElementWithStiffnessModifiers.rst
new file mode 100644
index 00000000..97f1e157
--- /dev/null
+++ b/source/user/manual/model/elements/ElasticBeamColumnElementWithStiffnessModifiers.rst
@@ -0,0 +1,50 @@
+.. _ElasticBeamColumnElementWithStiffnessModifiers:
+
+Elastic Beam Column Element with Stiffness Modifiers
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This element models a prismatic elastic beam-column member using stiffness modifiers that account for the presence of end rotational springs. It is intended for dynamic analysis of frame structures with concentrated plasticity hinges, where numerical damping from standard elastic elements can be problematic.
+
+The command names in OpenSees are ``ModElasticBeam2d`` and ``ModElasticBeam3d``. Full formulation details, stiffness modifier definitions, and references are given in :ref:`ModElasticBeam`.
+
+For ``ndm=2``:
+
+.. function:: element ModElasticBeam2d $eleTag $iNode $jNode $A $E $Iz $K11 $K33 $K44 $transfTag <-mass $massDens> <-cMass>
+
+For ``ndm=3``:
+
+.. function:: element ModElasticBeam3d $eleTag $iNode $jNode $A $E $G $J $Iy $Iz $K11y $K33y $K44y $K11z $K33z $K44z $transfTag <-mass $massDens> <-cMass>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end node tags
+ $A, |float|, cross-sectional area
+ $E, |float|, Young's modulus
+ $G, |float|, shear modulus (3D only)
+ $J, |float|, torsional inertia (3D only)
+ $Iz $Iy, |float|, second moments of area
+ $K11 $K33 $K44, |float|, stiffness modifier coefficients (2D)
+ $K11y $K33y $K44y, |float|, stiffness modifiers for bending about local y (3D)
+ $K11z $K33z $K44z, |float|, stiffness modifiers for bending about local z (3D)
+ $transfTag, |integer|, geometric transformation tag
+ $massDens, |float|, element mass per unit length (optional; default 0.0)
+ -cMass, |string|, form consistent mass matrix (optional)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element ModElasticBeam2d 1 1 2 10.0 29000.0 100.0 1.0 1.0 1.0 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('ModElasticBeam2d', 1, 1, 2, 10.0, 29000.0, 100.0, 1.0, 1.0, 1.0, 1)
+
+Code developed by: |fmk|
diff --git a/source/user/manual/model/elements/ElasticTimoshenkoBeamColumnElement.rst b/source/user/manual/model/elements/ElasticTimoshenkoBeamColumnElement.rst
new file mode 100644
index 00000000..496ba40b
--- /dev/null
+++ b/source/user/manual/model/elements/ElasticTimoshenkoBeamColumnElement.rst
@@ -0,0 +1,56 @@
+.. _ElasticTimoshenkoBeamColumnElement:
+
+Elastic Timoshenko Beam Column Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastic Timoshenko beam-column element that includes shear deformation. The command name in OpenSees is ``ElasticTimoshenkoBeam`` (aliases ``ElasticTimoshenkoBeam2d`` / ``ElasticTimoshenkoBeam3d``). Section properties may be supplied directly or through a previously defined section object.
+
+For a two-dimensional problem (``ndm=2``, ``ndf=3``):
+
+.. function:: element ElasticTimoshenkoBeam $eleTag $iNode $jNode $E $G $A $Iz $Avy $transfTag <-mass $massDens> <-cMass> <-geomNonlinear>
+
+.. function:: element ElasticTimoshenkoBeam $eleTag $iNode $jNode $secTag $transfTag <-mass $massDens> <-cMass> <-geomNonlinear>
+
+For a three-dimensional problem (``ndm=3``, ``ndf=6``):
+
+.. function:: element ElasticTimoshenkoBeam $eleTag $iNode $jNode $E $G $A $J $Iz $Iy $Avy $Avz $transfTag <-mass $massDens> <-cMass> <-geomNonlinear>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end node tags
+ $E, |float|, Young's modulus
+ $G, |float|, shear modulus
+ $A, |float|, cross-sectional area
+ $J, |float|, torsional moment of inertia (3D)
+ $Iz $Iy, |float|, second moments of area
+ $Avy $Avz, |float|, shear areas for local y and z directions
+ $secTag, |integer|, tag of a section object (alternative to explicit properties)
+ $transfTag, |integer|, geometric transformation tag
+ $massDens, |float|, element mass per unit length (optional; default 0.0)
+ -cMass, |string|, form consistent mass matrix (optional)
+ -geomNonlinear, |string|, enable geometric nonlinearity flag (optional)
+
+.. note::
+
+ 1. The valid queries to an elastic Timoshenko beam element when creating an :ref:`elementRecorder` are ``force``.
+
+ 2. For solid rectangular sections, the shear area is typically 5/6 of the gross area; for solid circular sections, 9/10 of the gross area; for I-shapes, the shear area may be approximated as the web area.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element ElasticTimoshenkoBeam 1 2 4 100.0 45.0 6.0 4.5 5.0 9
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('ElasticTimoshenkoBeam', 1, 2, 4, 100.0, 45.0, 6.0, 4.5, 5.0, 9)
+
+Code developed by: Andreas Schellenberg
diff --git a/source/user/manual/model/elements/ElastomericBearingBouc-Wen.rst b/source/user/manual/model/elements/ElastomericBearingBouc-Wen.rst
new file mode 100644
index 00000000..be74ff88
--- /dev/null
+++ b/source/user/manual/model/elements/ElastomericBearingBouc-Wen.rst
@@ -0,0 +1,54 @@
+.. _ElastomericBearingBoucWen:
+
+ElastomericBearingBouc-Wen Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-node elastomeric bearing element with Bouc-Wen shear hysteresis (2D unidirectional or 3D coupled). Non-shear directions use user-defined :ref:`uniaxialMaterial` objects.
+
+.. function:: element elastomericBearingBoucWen $eleTag $iNode $jNode $kInit $qd $alpha1 $alpha2 $mu $eta $beta $gamma -P $matTag -Mz $matTag <-orient $x1 $x2 $x3 $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. function:: element elastomericBearingBoucWen $eleTag $iNode $jNode $kInit $qd $alpha1 $alpha2 $mu $eta $beta $gamma -P $matTag -T $matTag -My $matTag -Mz $matTag <-orient <$x1 $x2 $x3> $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $kInit, |float|, initial elastic stiffness in local shear direction
+ $qd, |float|, characteristic strength
+ $alpha1, |float|, post-yield stiffness ratio of linear hardening component
+ $alpha2, |float|, post-yield stiffness ratio of nonlinear hardening component
+ $mu, |float|, exponent of nonlinear hardening component
+ $eta, |float|, yielding exponent (default 1.0)
+ $beta, |float|, first Bouc-Wen shape parameter (default 0.5)
+ $gamma, |float|, second Bouc-Wen shape parameter (default 0.5)
+ $matTag, |integer|, uniaxial material tag for axial behavior (``-P``)
+ $matTag, |integer|, uniaxial material tag for torsion (``-T``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local y (``-My``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local z (``-Mz``)
+ $sDratio, |float|, shear distance from iNode as fraction of element length (optional; default 0.5)
+ $m, |float|, element mass (optional; default 0.0)
+ $maxIter $tol, |integer| |float|, equilibrium iteration limit and tolerance (optional)
+
+.. note::
+
+ 1. By default the bearing does not contribute to Rayleigh damping. Use ``-doRayleigh`` to include it.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element elastomericBearingBoucWen 1 1 2 20.0 2.50 0.02 0.0 3.0 1.0 0.5 0.5 -P 1 -Mz 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('elastomericBearingBoucWen', 1, 1, 2, 20.0, 2.50, 0.02, 0.0, 3.0, 1.0, 0.5, 0.5, '-P', 1, '-Mz', 2)
+
+Code developed by: Andreas Schellenberg, University of California, Berkeley
diff --git a/source/user/manual/model/elements/ElastomericBearingPlasticity.rst b/source/user/manual/model/elements/ElastomericBearingPlasticity.rst
new file mode 100644
index 00000000..99b28190
--- /dev/null
+++ b/source/user/manual/model/elements/ElastomericBearingPlasticity.rst
@@ -0,0 +1,52 @@
+.. _ElastomericBearingPlasticity:
+
+ElastomericBearingPlasticity Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-node elastomeric bearing element with coupled shear plasticity (2D) or bidirectional plasticity (3D). Force-deformation in the non-shear directions is defined by user-supplied :ref:`uniaxialMaterial` objects. The command name ``elastomericBearing`` is an alias for ``elastomericBearingPlasticity``.
+
+.. function:: element elastomericBearingPlasticity $eleTag $iNode $jNode $kInit $qd $alpha1 $alpha2 $mu -P $matTag -Mz $matTag <-orient $x1 $x2 $x3 $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m>
+
+.. function:: element elastomericBearingPlasticity $eleTag $iNode $jNode $kInit $qd $alpha1 $alpha2 $mu -P $matTag -T $matTag -My $matTag -Mz $matTag <-orient <$x1 $x2 $x3> $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $kInit, |float|, initial elastic stiffness in local shear direction
+ $qd, |float|, characteristic strength
+ $alpha1, |float|, post-yield stiffness ratio of linear hardening component
+ $alpha2, |float|, post-yield stiffness ratio of nonlinear hardening component
+ $mu, |float|, exponent of nonlinear hardening component
+ $matTag, |integer|, uniaxial material tag for axial behavior (``-P``)
+ $matTag, |integer|, uniaxial material tag for torsion (``-T``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local y (``-My``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local z (``-Mz``)
+ $sDratio, |float|, shear distance from iNode as fraction of element length (optional; default 0.5)
+ $m, |float|, element mass (optional; default 0.0)
+
+.. note::
+
+ 1. By default the bearing does not contribute to Rayleigh damping. Use ``-doRayleigh`` to include it.
+
+ 2. Specify realistic axial stiffness; extremely large values can cause numerical sensitivity.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element elastomericBearingPlasticity 1 1 2 20.0 2.50 0.02 0.0 3.0 -P 1 -Mz 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('elastomericBearingPlasticity', 1, 1, 2, 20.0, 2.50, 0.02, 0.0, 3.0, '-P', 1, '-Mz', 2)
+
+Code developed by: Andreas Schellenberg, University of California, Berkeley
diff --git a/source/user/manual/model/elements/ElastomericX.rst b/source/user/manual/model/elements/ElastomericX.rst
new file mode 100644
index 00000000..d77b33e7
--- /dev/null
+++ b/source/user/manual/model/elements/ElastomericX.rst
@@ -0,0 +1,58 @@
+.. _ElastomericX:
+
+ElastomericX Element
+^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional elastomeric bearing element that formulates all six directional material models internally from geometric and rubber properties. It extends the :ref:`ElastomericBearingBoucWen` formulation without requiring user-supplied uniaxial materials. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ElastomericX $eleTag $Nd1 $Nd2 $Fy $alpha $Gr $Kbulk $D1 $D2 $ts $tr $n <$x1 $x2 $x3 $y1 $y2 $y3> <$kc> <$PhiM> <$ac> <$sDratio> <$m> <$cd> <$tc> <$tag1> <$tag2> <$tag3> <$tag4>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $Nd1 $Nd2, |integer|, end nodes
+ $Fy, |float|, yield strength
+ $alpha, |float|, post-yield stiffness ratio
+ $Gr, |float|, shear modulus of elastomer
+ $Kbulk, |float|, bulk modulus of rubber
+ $D1, |float|, internal diameter
+ $D2, |float|, outer diameter excluding cover thickness
+ $ts, |float|, single steel shim layer thickness
+ $tr, |float|, single rubber layer thickness
+ $n, |integer|, number of rubber layers
+ $kc, |float|, cavitation parameter (optional; default 10.0)
+ $PhiM, |float|, damage parameter (optional; default 0.5)
+ $ac, |float|, strength reduction parameter (optional; default 1.0)
+ $sDratio, |float|, shear distance from iNode as fraction of length (optional; default 0.5)
+ $m, |float|, element mass (optional; default 0.0)
+ $cd, |float|, viscous damping parameter (optional; default 0.0)
+ $tc, |float|, cover thickness (optional; default 0.0)
+ $tag1, |integer|, include cavitation and post-cavitation (optional; default 0)
+ $tag2, |integer|, include buckling load variation (optional; default 0)
+ $tag3, |integer|, include horizontal stiffness variation (optional; default 0)
+ $tag4, |integer|, include vertical stiffness variation (optional; default 0)
+
+.. note::
+
+ 1. Characteristic strength is :math:`Q_d = F_y(1-\alpha)`; do not confuse with :math:`F_y`.
+
+ 2. Use ``Parameters`` :ref:`elementRecorder` to obtain cavitation force; buckling capacity; vertical stiffness; and horizontal stiffness.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element ElastomericX 1 1 2 100.0 0.1 0.8 2.0e9 0.0 0.6 0.003 0.01 20 0 1 0 1 0 0 10.0 0.5 1.0 0.5 0.0 0.0 0.0 1 0 0 0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('ElastomericX', 1, 1, 2, 100.0, 0.1, 0.8, 2.0e9, 0.0, 0.6, 0.003, 0.01, 20,
+ 0, 1, 0, 1, 0, 0, 10.0, 0.5, 1.0, 0.5, 0.0, 0.0, 0.0, 1, 0, 0, 0)
+
+Code developed by: Manish Kumar, University at Buffalo, SUNY
diff --git a/source/user/manual/model/elements/EnhancedStrainQuadrilateral.rst b/source/user/manual/model/elements/EnhancedStrainQuadrilateral.rst
new file mode 100644
index 00000000..b30b8b27
--- /dev/null
+++ b/source/user/manual/model/elements/EnhancedStrainQuadrilateral.rst
@@ -0,0 +1,38 @@
+.. _EnhancedStrainQuadrilateral:
+
+Enhanced Strain Quadrilateral Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral element using a bilinear isoparametric formulation with enhanced strain modes. The command name in OpenSees is ``enhancedQuad``. Use with ``-ndm 2 -ndf 2``.
+
+.. function:: element enhancedQuad $eleTag $iNode $jNode $kNode $lNode $thick $type $matTag
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $thick, |float|, element thickness
+ $type, |string|, material formulation: ``PlaneStrain`` or ``PlaneStress``
+ $matTag, |integer|, tag of an nD material
+
+.. note::
+
+ 1. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element enhancedQuad 1 1 2 3 4 1.0 PlaneStrain 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('enhancedQuad', 1, 1, 2, 3, 4, 1.0, 'PlaneStrain', 1)
+
+Code developed by: Ed Love
diff --git a/source/user/manual/model/elements/FPBearingPTV.rst b/source/user/manual/model/elements/FPBearingPTV.rst
new file mode 100644
index 00000000..bc545769
--- /dev/null
+++ b/source/user/manual/model/elements/FPBearingPTV.rst
@@ -0,0 +1,55 @@
+.. _FPBearingPTV:
+
+FPBearingPTV Element
+^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a single friction pendulum bearing element with friction coefficient that depends on sliding velocity; axial pressure; and temperature at the sliding surface. Use with ``-ndm 3 -ndf 6``. For triple pendulum systems with heating see :ref:`TripleFrictionPendulumX`.
+
+.. function:: element FPBearingPTV $eleTag $iNode $jNode $MuRef $IsPressureDependent $pRef $IsTemperatureDependent $Diffusivity $Conductivity $IsVelocityDependent $rateParameter $ReffectiveFP $Radius_Contact $kInitial $matP $matT $matMy $matMz $x1 $x2 $x3 $y1 $y2 $y3 $shearDist $doRayleigh $mass $iter $tol $unit
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $MuRef, |float|, reference coefficient of friction at reference pressure and 20 C
+ $IsPressureDependent, |integer|, 1 if friction depends on instantaneous axial pressure
+ $pRef, |float|, reference axial pressure
+ $IsTemperatureDependent, |integer|, 1 if friction depends on temperature at sliding surface
+ $Diffusivity, |float|, thermal diffusivity of steel
+ $Conductivity, |float|, thermal conductivity of steel
+ $IsVelocityDependent, |integer|, 1 if friction depends on sliding velocity
+ $rateParameter, |float|, exponent controlling friction-velocity curve shape
+ $ReffectiveFP, |float|, effective radius of curvature of sliding surface
+ $Radius_Contact, |float|, radius of contact area at sliding surface
+ $kInitial, |float|, lateral stiffness before sliding begins
+ $matP $matT $matMy $matMz, |integer|, uniaxial material tags for axial; torsion; and rocking directions
+ $shearDist, |float|, shear distance from iNode as fraction of element length
+ $doRayleigh, |integer|, 1 to include Rayleigh damping contribution from bearing
+ $mass, |float|, element mass
+ $iter $tol, |integer| |float|, maximum equilibrium iterations and convergence tolerance
+ $unit, |integer|, unit system tag (1: N-m-s-C; 2: kN-m-s-C; 3: N-mm-s-C; 4: kN-mm-s-C; 5-8: imperial variants)
+
+.. note::
+
+ 1. Element recorders with ``Temperature``, ``FrictionFactors``, and ``MuAdjusted`` return temperature; friction factor history; and adjusted coefficient of friction.
+
+ 2. Valid standard :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, and ``basicDisplacement``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element FPBearingPTV 1 1 2 0.06 1 5.0e7 1 4.44e-6 18.0 1 100.0 2.2352 0.2 500.0 1 2 3 4 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0 0.0 100 1.0e-8 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('FPBearingPTV', 1, 1, 2, 0.06, 1, 5.0e7, 1, 4.44e-6, 18.0, 1, 100.0,
+ 2.2352, 0.2, 500.0, 1, 2, 3, 4, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0, 0.0, 100, 1.0e-8, 1)
+
+Code developed by: Manish Kumar, University at Buffalo, SUNY
diff --git a/source/user/manual/model/elements/FlatSliderBearingElement.rst b/source/user/manual/model/elements/FlatSliderBearingElement.rst
new file mode 100644
index 00000000..ac5b4463
--- /dev/null
+++ b/source/user/manual/model/elements/FlatSliderBearingElement.rst
@@ -0,0 +1,50 @@
+.. _FlatSliderBearingElement:
+
+FlatSliderBearingElement
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-node flat slider bearing element. The iNode represents the flat sliding surface and the jNode the slider. Shear behavior uses a friction model; axial and rotational behavior use :ref:`uniaxialMaterial` objects. The axial material is modified for no-tension behavior to capture uplift.
+
+.. function:: element flatSliderBearing $eleTag $iNode $jNode $frnMdlTag $kInit -P $matTag -Mz $matTag <-orient $x1 $x2 $x3 $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. function:: element flatSliderBearing $eleTag $iNode $jNode $frnMdlTag $kInit -P $matTag -T $matTag -My $matTag -Mz $matTag <-orient <$x1 $x2 $x3> $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes (iNode is flat sliding surface)
+ $frnMdlTag, |integer|, tag of a previously defined friction model
+ $kInit, |float|, initial elastic stiffness in local shear direction
+ $matTag, |integer|, uniaxial material tag for axial behavior (``-P``)
+ $matTag, |integer|, uniaxial material tag for torsion (``-T``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local y (``-My``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local z (``-Mz``)
+ $sDratio, |float|, shear distance from iNode as fraction of element length (optional; default 0.0)
+ $m, |float|, element mass (optional; default 0.0)
+ $maxIter $tol, |integer| |float|, equilibrium iteration limit and tolerance (optional; defaults 20 and 1e-8)
+
+.. note::
+
+ 1. P-Delta moments are transferred entirely to the flat sliding surface (iNode) by default.
+
+ 2. Friction depends on axial force and slip rate; use a smaller time step for dynamic analysis when needed.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element flatSliderBearing 1 1 2 1 250.0 -P 1 -Mz 2 -orient 0 1 0 -1 0 0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('flatSliderBearing', 1, 1, 2, 1, 250.0, '-P', 1, '-Mz', 2, '-orient', 0, 1, 0, -1, 0, 0)
+
+Code developed by: Andreas Schellenberg, University of California, Berkeley
diff --git a/source/user/manual/model/elements/FlexureShearInteractionDisplacementBasedBeamColumnElement.rst b/source/user/manual/model/elements/FlexureShearInteractionDisplacementBasedBeamColumnElement.rst
new file mode 100644
index 00000000..70e36c51
--- /dev/null
+++ b/source/user/manual/model/elements/FlexureShearInteractionDisplacementBasedBeamColumnElement.rst
@@ -0,0 +1,49 @@
+.. _FlexureShearInteractionDisplacementBasedBeamColumnElement:
+
+Flexure-Shear Interaction Displacement-Based Beam Column Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a distributed-plasticity, displacement-based beam-column element that couples flexural and shear deformations. The command name in OpenSees is ``dispBeamColumnInt``. The formulation follows Massone et al. (2006) and is limited to 2D analysis (``ndm=2``, ``ndf=3``).
+
+.. function:: element dispBeamColumnInt $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag $cRot <-mass $massDens>
+
+.. function:: element dispBeamColumnInt $eleTag $iNode $jNode $numIntgrPts -sections {$secTag1 ...} $transfTag $cRot <-mass $massDens>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end node tags
+ $numIntgrPts, |integer|, number of integration points along the element
+ $secTag, |integer|, tag of a ``FiberSection2dInt`` section (same section at all points)
+ $secTag1 ..., |listInt|, list of section tags when using ``-sections``
+ $transfTag, |integer|, tag of a ``LinearInt`` geometric transformation
+ $cRot, |float|, center of rotation as a fraction of element height from bottom (0 to 1)
+ $massDens, |float|, element mass per unit length (optional; default 0.0)
+
+.. note::
+
+ 1. This element requires the ``LinearInt`` geometric transformation and a ``FiberSection2dInt`` section created for strip (panel) modeling with flexure-shear interaction.
+
+ 2. Parameter $cRot distributes transverse displacement between flexural (curvature) and shear (shear strain) components.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force``, ``stiffness``, and ``section $secNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ geomTransf LinearInt 1
+ element dispBeamColumnInt 1 1 3 2 2 1 0.4
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ geomTransf('LinearInt', 1)
+ element('dispBeamColumnInt', 1, 1, 3, 2, 2, 1, 0.4)
+
+Code developed by: Leo Massone, Kutay Orakcal, John Wallace
diff --git a/source/user/manual/model/elements/FourNodeQuadUP.rst b/source/user/manual/model/elements/FourNodeQuadUP.rst
new file mode 100644
index 00000000..d0faa808
--- /dev/null
+++ b/source/user/manual/model/elements/FourNodeQuadUP.rst
@@ -0,0 +1,44 @@
+.. _FourNodeQuadUP:
+
+FourNodeQuadUP Element
+^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node plane-strain quadrilateral element for coupled solid-fluid (u-p) analysis of saturated porous media based on Biot theory. Each node has two solid displacement DOFs and one pore-pressure DOF. Use with ``-ndm 2 -ndf 3``. The registered command name is ``quadUP``.
+
+.. function:: element quadUP $eleTag $iNode $jNode $kNode $lNode $thick $matTag $bulk $fmass $hPerm $vPerm <$b1 $b2 $t>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $thick, |float|, element thickness
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus relating pore pressure and volumetric strain
+ $fmass, |float|, fluid mass density
+ $hPerm $vPerm, |float|, permeability in horizontal and vertical directions
+ $b1 $b2, |float|, optional body-force components (default 0.0)
+ $t, |float|, optional uniform normal traction; positive in tension (default 0.0)
+
+.. note::
+
+ 1. Record pore pressure at nodes with a :ref:`nodeRecorder` on DOF 3.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force``, ``stiffness``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element quadUP 1 1 2 3 4 1.0 1 2.2e6 1000.0 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('quadUP', 1, 1, 2, 3, 4, 1.0, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/HDR.rst b/source/user/manual/model/elements/HDR.rst
new file mode 100644
index 00000000..7168b2ef
--- /dev/null
+++ b/source/user/manual/model/elements/HDR.rst
@@ -0,0 +1,50 @@
+.. _HDR:
+
+HDR Element
+^^^^^^^^^^^
+
+This command constructs a three-dimensional high damping rubber (HDR) bearing element using the Grant et al. (2004) biaxial shear model. Axial and rotational behavior follow the same framework as :ref:`ElastomericX`. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element HDR $eleTag $Nd1 $Nd2 $Gr $Kbulk $D1 $D2 $ts $tr $n $a1 $a2 $a3 $b1 $b2 $b3 $c1 $c2 $c3 $c4 <$x1 $x2 $x3 $y1 $y2 $y3> <$kc> <$PhiM> <$ac> <$sDratio> <$m> <$tc>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $Nd1 $Nd2, |integer|, end nodes
+ $Gr, |float|, shear modulus of elastomer
+ $Kbulk, |float|, bulk modulus of rubber
+ $D1, |float|, internal diameter
+ $D2, |float|, outer diameter excluding cover thickness
+ $ts, |float|, single steel shim layer thickness
+ $tr, |float|, single rubber layer thickness
+ $n, |integer|, number of rubber layers
+ $a1 $a2 $a3 $b1 $b2 $b3 $c1 $c2 $c3 $c4, |float|, Grant model shear parameters
+ $kc, |float|, cavitation parameter (optional; default 10.0)
+ $PhiM, |float|, damage parameter (optional; default 0.5)
+ $ac, |float|, strength reduction parameter (optional; default 1.0)
+ $sDratio, |float|, shear distance from iNode as fraction of length (optional; default 0.5)
+ $m, |float|, element mass (optional; default 0.0)
+ $tc, |float|, cover thickness (optional; default 0.0)
+
+.. note::
+
+ Use ``Parameters`` :ref:`elementRecorder` to obtain cavitation force; buckling capacity; and vertical stiffness.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element HDR 1 1 2 0.8 2.0e9 0.0 0.6 0.003 0.01 20 1.0 0.5 0.0 1.0 0.5 0.0 1.0 0.5 0.0 1.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('HDR', 1, 1, 2, 0.8, 2.0e9, 0.0, 0.6, 0.003, 0.01, 20,
+ 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0, 0.5, 0.0, 1.0)
+
+Code developed by: Manish Kumar, University at Buffalo, SUNY
diff --git a/source/user/manual/model/elements/KikuchiBearing.rst b/source/user/manual/model/elements/KikuchiBearing.rst
new file mode 100644
index 00000000..2392e963
--- /dev/null
+++ b/source/user/manual/model/elements/KikuchiBearing.rst
@@ -0,0 +1,51 @@
+.. _KikuchiBearing:
+
+KikuchiBearing Element
+^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional elastomeric bearing element with multiple normal springs parallel to the local x-axis and multiple shear springs distributed in the local y-z plane. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element KikuchiBearing $eleTag $iNode $jNode -shape $shape -size $size $totalRubber <-totalHeight $totalHeight> -nMSS $nMSS -matMSS $matMSSTag <-limDisp $limDisp> -nMNS $nMNS -matMNS $matMNSTag <-lambda $lambda> <-orient <$x1 $x2 $x3> $yp1 $yp2 $yp3> <-mass $m> <-noPDInput> <-noTilt> <-adjustPDOutput $ci $cj> <-doBalance $limFo $limFi $nIter>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $shape, |string|, bearing cross section: ``round`` or ``square`` (``-shape``)
+ $size, |float|, characteristic size of cross section (``-size``)
+ $totalRubber, |float|, total rubber thickness (``-size``)
+ $totalHeight, |float|, total bearing height (optional; default is distance between nodes)
+ $nMSS, |integer|, number of multiple shear springs (``-nMSS``)
+ $matMSSTag, |integer|, uniaxial material tag for shear springs (``-matMSS``)
+ $limDisp, |float|, limit displacement for MSS equivalent coefficient (optional)
+ $nMNS, |integer|, number of multiple normal springs (``-nMNS``)
+ $matMNSTag, |integer|, uniaxial material tag for normal springs (``-matMNS``)
+ $lambda, |float|, normal spring distribution parameter (optional)
+ $m, |float|, element mass (optional)
+ $ci $cj, |float|, P-Delta output adjustment coefficients (``-adjustPDOutput``)
+ $limFo $limFi $nIter, |float| |float| |integer|, force-balance iteration controls (``-doBalance``)
+
+.. note::
+
+ 1. Flags ``-noPDInput`` and ``-noTilt`` disable P-Delta input and tilt effects respectively.
+
+ 2. Valid :ref:`elementRecorder` queries include ``globalForce``, ``localForce``, ``basicForce``, ``localDisplacement``, and ``basicDeformation``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element KikuchiBearing 1 1 2 -shape round -size 0.5 0.2 -nMSS 16 -matMSS 1 -nMNS 4 -matMNS 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('KikuchiBearing', 1, 1, 2, '-shape', 'round', '-size', 0.5, 0.2,
+ '-nMSS', 16, '-matMSS', 1, '-nMNS', 4, '-matMNS', 2)
+
+Code developed by: Ken Ishii and Masaru Kikuchi
diff --git a/source/user/manual/model/elements/LeadRubberX.rst b/source/user/manual/model/elements/LeadRubberX.rst
new file mode 100644
index 00000000..6aa008c3
--- /dev/null
+++ b/source/user/manual/model/elements/LeadRubberX.rst
@@ -0,0 +1,62 @@
+.. _LeadRubberX:
+
+LeadRubberX Element
+^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional lead-rubber bearing element extending :ref:`ElastomericX` with strength degradation in the lead core due to heating. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element LeadRubberX $eleTag $Nd1 $Nd2 $Fy $alpha $Gr $Kbulk $D1 $D2 $ts $tr $n <$x1 $x2 $x3 $y1 $y2 $y3> <$kc> <$PhiM> <$ac> <$sDratio> <$m> <$cd> <$tc> <$qL> <$cL> <$kS> <$aS> <$tag1> <$tag2> <$tag3> <$tag4> <$tag5>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $Nd1 $Nd2, |integer|, end nodes
+ $Fy, |float|, yield strength
+ $alpha, |float|, post-yield stiffness ratio
+ $Gr, |float|, shear modulus of elastomer
+ $Kbulk, |float|, bulk modulus of rubber
+ $D1, |float|, internal diameter
+ $D2, |float|, outer diameter excluding cover thickness
+ $ts, |float|, single steel shim layer thickness
+ $tr, |float|, single rubber layer thickness
+ $n, |integer|, number of rubber layers
+ $kc, |float|, cavitation parameter (optional; default 10.0)
+ $PhiM, |float|, damage parameter (optional; default 0.5)
+ $ac, |float|, strength reduction parameter (optional; default 1.0)
+ $sDratio, |float|, shear distance from iNode as fraction of length (optional; default 0.5)
+ $m, |float|, element mass (optional; default 0.0)
+ $cd, |float|, viscous damping parameter (optional; default 0.0)
+ $tc, |float|, cover thickness (optional; default 0.0)
+ $qL, |float|, density of lead (optional; default 11200 kg/m3)
+ $cL, |float|, specific heat of lead (optional; default 130 N-m/kg C)
+ $kS, |float|, thermal conductivity of steel (optional; default 50 W/m C)
+ $aS, |float|, thermal diffusivity of steel (optional; default 1.41e-05 m2/s)
+ $tag1, |integer|, include cavitation and post-cavitation (optional; default 0)
+ $tag2, |integer|, include buckling load variation (optional; default 0)
+ $tag3, |integer|, include horizontal stiffness variation (optional; default 0)
+ $tag4, |integer|, include vertical stiffness variation (optional; default 0)
+ $tag5, |integer|, include lead-core heating degradation (optional; default 0)
+
+.. note::
+
+ 1. Default heating parameters are in SI units; override them when using imperial units.
+
+ 2. Use ``Parameters`` :ref:`elementRecorder` to obtain cavitation force; buckling capacity; vertical stiffness; horizontal stiffness; temperature increase; and yield strength.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element LeadRubberX 1 1 2 150.0 0.1 0.8 2.0e9 0.0 0.6 0.003 0.01 20
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('LeadRubberX', 1, 1, 2, 150.0, 0.1, 0.8, 2.0e9, 0.0, 0.6, 0.003, 0.01, 20)
+
+Code developed by: Manish Kumar, University at Buffalo, SUNY
diff --git a/source/user/manual/model/elements/LehighJoint2D.rst b/source/user/manual/model/elements/LehighJoint2D.rst
index 3d87f9c8..41c4c147 100644
--- a/source/user/manual/model/elements/LehighJoint2D.rst
+++ b/source/user/manual/model/elements/LehighJoint2D.rst
@@ -1,4 +1,4 @@
-.. LehighJoint2D:
+.. _LehighJoint2D:
LehighJoint2D Element
^^^^^^^^^^^^^^^^^^^^^^^
@@ -11,7 +11,7 @@ Command Lines
TCL:
-.. function:: element LehighJoint $eleTag $iNode $jNnode $kNode $lNode $matTag1 $matTag2 $matTag3 $matTag4 $matTag5 $matTag6 $matTag7 $matTag8 $matTag9
+.. function:: element LehighJoint2D $eleTag $iNode $jNnode $kNode $lNode $matTag1 $matTag2 $matTag3 $matTag4 $matTag5 $matTag6 $matTag7 $matTag8 $matTag9
Python:
@@ -65,7 +65,7 @@ Examples
.. code-block:: tcl
- element LehighJoint 4 2 3 4 5 1001 1002 1003 1004 1005 1006 1007 1008 1009;
+ element LehighJoint2D 4 2 3 4 5 1001 1002 1003 1004 1005 1006 1007 1008 1009;
2. **Python**
diff --git a/source/user/manual/model/elements/MVLEM.rst b/source/user/manual/model/elements/MVLEM.rst
new file mode 100644
index 00000000..eb24d0f2
--- /dev/null
+++ b/source/user/manual/model/elements/MVLEM.rst
@@ -0,0 +1,61 @@
+.. _MVLEM:
+
+MVLEM Element
+^^^^^^^^^^^^^
+
+| Developed and implemented by:
+| `Kristijan Kolozvari `_ (CSU Fullerton)
+| Kutay Orakcal (Bogazici University)
+| John Wallace (UCLA)
+
+The MVLEM (Multiple-Vertical-Line-Element-Model) element is a two-node macro-element for flexure-dominated reinforced concrete walls in 2D. The element has six global degrees of freedom (three at the center of each rigid top and bottom beam). Flexural response is modeled by vertical macro-fibers; shear response is modeled by an uncoupled horizontal shear spring at height ``c`` from the bottom node. Use with ``-ndm 2 -ndf 3``.
+
+For the 3D extension, see the ``MVLEM_3D`` element.
+
+.. function:: element MVLEM $eleTag $Dens $iNode $jNode $m $c -thick {Thicknesses} -width {Widths} -rho {Reinforcing_ratios} -matConcrete {Concrete_tags} -matSteel {Steel_tags} -matShear {Shear_tag}
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $Dens, |float|, wall density
+ $iNode $jNode, |integer|, end node tags
+ $m, |integer|, number of macro-fibers
+ $c, |float|, location of center of rotation from $iNode (recommended 0.4)
+ {Thicknesses}, |listFloat|, fiber thicknesses (length $m$)
+ {Widths}, |listFloat|, macro-fiber widths (length $m$)
+ {Reinforcing_ratios}, |listFloat|, reinforcing ratio for each macro-fiber
+ {Concrete_tags}, |listInt|, uniaxial material tags for concrete in each fiber
+ {Steel_tags}, |listInt|, uniaxial material tags for steel in each fiber
+ {Shear_tag}, |integer|, uniaxial material tag for the shear spring
+
+Recorders
+#########
+
+.. csv-table::
+ :header: "Recorder", "Description"
+ :widths: 20, 40
+
+ globalForce, element global forces
+ Curvature, element curvature
+ Shear_Force_Deformation, shear force-deformation relationship
+ Fiber_Strain, vertical strains in each macro-fiber
+ Fiber_Stress_Concrete, vertical concrete stresses in each macro-fiber
+ Fiber_Stress_Steel, vertical steel stresses in each macro-fiber
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element MVLEM 1 0.0 1 2 8 0.4 -thick 4 4 4 4 4 4 4 4 -width 7.5 1.5 7.5 7.5 7.5 7.5 1.5 7.5 -rho 0.0293 0.0 0.0033 0.0033 0.0033 0.0033 0.0 0.0293 -matConcrete 3 4 4 4 4 4 4 3 -matSteel 1 2 2 2 2 2 2 1 -matShear 5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('MVLEM', 1, 0.0, 1, 2, 8, 0.4, '-thick', 4, 4, 4, 4, 4, 4, 4, 4, '-width', 7.5, 1.5, 7.5, 7.5, 7.5, 7.5, 1.5, 7.5, '-rho', 0.0293, 0.0, 0.0033, 0.0033, 0.0033, 0.0033, 0.0, 0.0293, '-matConcrete', 3, 4, 4, 4, 4, 4, 4, 3, '-matSteel', 1, 2, 2, 2, 2, 2, 2, 1, '-matShear', 5)
+
+Code developed by: Kristijan Kolozvari, Kutay Orakcal, John Wallace
diff --git a/source/user/manual/model/elements/MultipleShearSpring.rst b/source/user/manual/model/elements/MultipleShearSpring.rst
new file mode 100644
index 00000000..488b820a
--- /dev/null
+++ b/source/user/manual/model/elements/MultipleShearSpring.rst
@@ -0,0 +1,41 @@
+.. _MultipleShearSpring:
+
+MultipleShearSpring Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a multiple shear spring (MSS) element consisting of identical shear springs arranged radially to represent isotropic behavior in the local y-z plane. The command name ``MSS`` is an alias for ``multipleShearSpring``.
+
+.. function:: element multipleShearSpring $eleTag $iNode $jNode $nSpring -mat $matTag <-lim $dsp> <-orient <$x1 $x2 $x3> $yp1 $yp2 $yp3> <-mass $m>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $nSpring, |integer|, number of radial shear springs
+ $matTag, |integer|, tag of a previously defined uniaxial material (``-mat``)
+ $dsp, |float|, minimum deformation to compute equivalent coefficient (optional; default 0.0)
+ $m, |float|, element mass (optional)
+
+.. note::
+
+ 1. When ``$dsp`` is positive and shear deformation exceeds ``$dsp``; the element adjusts force and stiffness to reproduce monotonic uniaxial material behavior in every direction.
+
+ 2. Valid :ref:`elementRecorder` queries include ``globalForce``, ``localForce``, ``basicForce``, ``localDisplacement``, and ``basicDeformation``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element multipleShearSpring 1 1 2 16 -mat 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('multipleShearSpring', 1, 1, 2, 16, '-mat', 1)
+
+Code developed by: Masaru Kikuchi
diff --git a/source/user/manual/model/elements/NineFourNodeQuadUP.rst b/source/user/manual/model/elements/NineFourNodeQuadUP.rst
new file mode 100644
index 00000000..39bbf525
--- /dev/null
+++ b/source/user/manual/model/elements/NineFourNodeQuadUP.rst
@@ -0,0 +1,41 @@
+.. _NineFourNodeQuadUP:
+
+NineFourNodeQuadUP Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a nine-node quadrilateral element (nine-four node) for coupled u-p plane-strain analysis. Corner nodes carry pore pressure; midside nodes carry solid displacement only. Use with ``-ndm 2``. The registered command name is ``9_4_QuadUP``.
+
+.. function:: element 9_4_QuadUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $N9 $thick $matTag $bulk $fmass $permX $permY <$b1 $b2>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $N9, |integer|, nine node tags
+ $thick, |float|, element thickness
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus
+ $fmass, |float|, fluid mass density
+ $permX $permY, |float|, permeability in x and y directions
+ $b1 $b2, |float|, optional body-force components (default 0.0)
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``force``, ``stiffness``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element 9_4_QuadUP 1 1 2 3 4 5 6 7 8 9 1.0 1 2.2e6 1000.0 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('9_4_QuadUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1.0, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/RJWatsonEQSBearing.rst b/source/user/manual/model/elements/RJWatsonEQSBearing.rst
new file mode 100644
index 00000000..a1851f9f
--- /dev/null
+++ b/source/user/manual/model/elements/RJWatsonEQSBearing.rst
@@ -0,0 +1,50 @@
+.. _RJWatsonEQSBearing:
+
+RJWatsonEQSBearing Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an RJ Watson EQS sliding bearing element with separate uniaxial materials for axial; shear; and moment directions. Shear friction uses a friction model. The iNode represents the sliding surface.
+
+.. function:: element RJWatsonEqsBearing $eleTag $iNode $jNode $frnMdlTag $kInit -P $matTag -Vy $matTag -Mz $matTag <-orient $x1 $x2 $x3 $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. function:: element RJWatsonEqsBearing $eleTag $iNode $jNode $frnMdlTag $kInit -P $matTag -Vy $matTag -Vz $matTag -T $matTag -My $matTag -Mz $matTag <-orient <$x1 $x2 $x3> $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $frnMdlTag, |integer|, tag of a previously defined friction model
+ $kInit, |float|, initial elastic stiffness in local shear direction
+ $matTag, |integer|, uniaxial material tag for axial behavior (``-P``)
+ $matTag, |integer|, uniaxial material tag for shear in local y (``-Vy``)
+ $matTag, |integer|, uniaxial material tag for shear in local z (``-Vz``; 3D only)
+ $matTag, |integer|, uniaxial material tag for torsion (``-T``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local y (``-My``)
+ $matTag, |integer|, uniaxial material tag for moment about local z (``-Mz``)
+ $sDratio, |float|, shear distance from iNode as fraction of element length (optional; default 0.0)
+ $m, |float|, element mass (optional; default 0.0)
+ $maxIter $tol, |integer| |float|, equilibrium iteration limit and tolerance (optional)
+
+.. note::
+
+ 1. In 2D problems use ``-Vy`` and ``-Mz``. In 3D problems use ``-Vy``, ``-Vz``, ``-T``, ``-My``, and ``-Mz``.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element RJWatsonEqsBearing 1 1 2 1 250.0 -P 1 -Vy 2 -Mz 3
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('RJWatsonEqsBearing', 1, 1, 2, 1, 250.0, '-P', 1, '-Vy', 2, '-Mz', 3)
+
+Code developed by: Andreas Schellenberg, University of California, Berkeley
diff --git a/source/user/manual/model/elements/SFI_MVLEM_3D.rst b/source/user/manual/model/elements/SFI_MVLEM_3D.rst
index afc4b8b7..037b2e26 100644
--- a/source/user/manual/model/elements/SFI_MVLEM_3D.rst
+++ b/source/user/manual/model/elements/SFI_MVLEM_3D.rst
@@ -1,10 +1,10 @@
-.. _SFI_MVLEM_3D::
+.. _SFI_MVLEM_3D:
SFI-MVLEM-3D Element
^^^^^^^^^^^^^^^^^^^^
-| Developed and implemented by:
-| `Kristijan Kolozvari `_ (CSU Fullerton)
+| Developed and implemented by:
+| Kristijan Kolozvari (CSU Fullerton, kkolozvari@fullerton.edu)
| Kamiar Kalbasi (CSU Fullerton)
| Kutay Orakcal (Bogazici University)
| John Wallace (UCLA)
@@ -12,9 +12,9 @@ SFI-MVLEM-3D Element
Description
###########
-The SFI-MVLEM-3D model (Figure 1a) is a three-dimensional four-node element with 24 DOFs that incorporates axial-flexural-shear interaction and can be used for nonlinear analysis of non-rectangular reinforced concrete walls subjected to multidirectional loading. The SFI-MVLEM-3D model is an extension of the two-dimensional, two-node Shear-Flexure-Interaction Multiple-Vertical-Line-Element-Model (`SFI-MVLEM `_). The baseline SFI-MVLEM, which is essentially a line element for rectangular walls subjected to in-plane loading, is extended in this study to a three-dimensional model formulation by applying geometric transformation of the element degrees of freedom that converted it into a four-node element formulation (Figure 1b), as well as by incorporating linear elastic out-of-plane behavior based on the Kirchhoff plate theory (Figure 1c). The in-plane and the out-of-plane element behaviors are uncoupled in the present model.
+The SFI-MVLEM-3D model (Figure 1a) is a three-dimensional four-node element with 24 DOFs that incorporates axial-flexural-shear interaction and can be used for nonlinear analysis of non-rectangular reinforced concrete walls subjected to multidirectional loading. The SFI-MVLEM-3D model is an extension of the two-dimensional, two-node Shear-Flexure-Interaction Multiple-Vertical-Line-Element-Model (`SFI-MVLEM `__). The baseline SFI-MVLEM, which is essentially a line element for rectangular walls subjected to in-plane loading, is extended in this study to a three-dimensional model formulation by applying geometric transformation of the element degrees of freedom that converted it into a four-node element formulation (Figure 1b), as well as by incorporating linear elastic out-of-plane behavior based on the Kirchhoff plate theory (Figure 1c). The in-plane and the out-of-plane element behaviors are uncoupled in the present model.
-For additional information please visit `SFI-MVLEM-3D GitHub Page `_.
+For additional information please visit the `SFI-MVLEM-3D GitHub repository `__.
This element shall be used in Domain defined with **-ndm 3 -ndf 6**.
diff --git a/source/user/manual/model/elements/SSPbrickUP.rst b/source/user/manual/model/elements/SSPbrickUP.rst
new file mode 100644
index 00000000..d6574bea
--- /dev/null
+++ b/source/user/manual/model/elements/SSPbrickUP.rst
@@ -0,0 +1,43 @@
+.. _SSPbrickUP:
+
+SSPbrickUP Element
+^^^^^^^^^^^^^^^^^^
+
+This command constructs a stabilized single-point brick element with u-p formulation for analysis of fluid-saturated porous media. Use with ``-ndm 3 -ndf 4``.
+
+.. function:: element SSPbrickUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $matTag $fBulk $fDen $k1 $k2 $k3 $e $alpha <$b1 $b2 $b3> <-lumped>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 ... $N8, |integer|, eight node tags in standard brick order
+ $matTag, |integer|, tag of a previously defined ND material
+ $fBulk, |float|, fluid bulk modulus
+ $fDen, |float|, fluid mass density
+ $k1 $k2 $k3, |float|, permeability in local x; y; and z directions
+ $e, |float|, void ratio
+ $alpha, |float|, :math:`1 - K_s/K_f` parameter
+ $b1 $b2 $b3, |float|, optional body-force components (default 0.0)
+ -lumped, |string|, optional flag to use lumped mass matrix
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``force``, ``stress``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element SSPbrickUP 1 1 2 3 4 5 6 7 8 1 2.2e6 1000.0 1.0e-5 1.0e-5 1.0e-5 0.5 1.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('SSPbrickUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5, 1.0e-5, 0.5, 1.0)
+
+Code developed by: Chris McGann, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/SSPquadUP.rst b/source/user/manual/model/elements/SSPquadUP.rst
new file mode 100644
index 00000000..faa67c37
--- /dev/null
+++ b/source/user/manual/model/elements/SSPquadUP.rst
@@ -0,0 +1,44 @@
+.. _SSPquadUP:
+
+SSPquadUP Element
+^^^^^^^^^^^^^^^^^
+
+This command constructs a stabilized single-point quadrilateral element with u-p formulation for plane-strain analysis of fluid-saturated porous media. Use with ``-ndm 2 -ndf 3``.
+
+.. function:: element SSPquadUP $eleTag $iNode $jNode $kNode $lNode $matTag $t $fBulk $fDen $k1 $k2 $e $alpha <$b1 $b2> <$Pup $Plow $Pleft $Pright>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $matTag, |integer|, tag of a previously defined ND material
+ $t, |float|, element thickness
+ $fBulk, |float|, fluid bulk modulus
+ $fDen, |float|, fluid mass density
+ $k1 $k2, |float|, permeability in local x and y directions
+ $e, |float|, void ratio
+ $alpha, |float|, :math:`1 - K_s/K_f` parameter
+ $b1 $b2, |float|, optional body-force components (default 0.0)
+ $Pup $Plow $Pleft $Pright, |float|, optional boundary pore pressures on element edges
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``force``, ``stress``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element SSPquadUP 1 1 2 3 4 1 1.0 2.2e6 1000.0 1.0e-5 1.0e-5 0.5 1.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('SSPquadUP', 1, 1, 2, 3, 4, 1, 1.0, 2.2e6, 1000.0, 1.0e-5, 1.0e-5, 0.5, 1.0)
+
+Code developed by: Chris McGann, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/ShallowFoundationGen.rst b/source/user/manual/model/elements/ShallowFoundationGen.rst
new file mode 100644
index 00000000..a878e3c1
--- /dev/null
+++ b/source/user/manual/model/elements/ShallowFoundationGen.rst
@@ -0,0 +1,45 @@
+.. _ShallowFoundationGen:
+
+ShallowFoundationGen
+^^^^^^^^^^^^^^^^^^^^
+
+This command generates a two-dimensional Beam-on-Nonlinear-Winkler-Foundation (BNWF) mesh for shallow footing analysis. It reads footing and soil properties from an input file and writes a Tcl source file ``Foundation_$FoundationTag.tcl`` containing nodes; elastic beam-column footing elements; zeroLength soil springs; materials; and boundary conditions. Source the generated file after running this command.
+
+.. function:: ShallowFoundationGen $FoundationTag $ConnectNode $InputFileName $FootingCondition
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $FoundationTag, |integer|, foundation identifier (also used in output file naming)
+ $ConnectNode, |integer|, node tag in the structural model connected to the footing
+ $InputFileName, |string|, path to input file with soil; footing; and mesh parameters
+ $FootingCondition, |integer|, foundation base condition code from 1 to 5
+
+.. note::
+
+ 1. **Footing condition codes:** 1 = fixed base; 2 = elastic vertical springs with sliding restrained; 3 = elastic vertical and horizontal springs; 4 = ``QzSimple2`` vertical springs with sliding restrained; 5 = ``QzSimple2`` vertical plus ``PxSimple1`` and ``TxSimple1`` horizontal springs.
+
+ 2. Material tags generated by this command start at 101; keep structural material tags at 100 or below.
+
+ 3. The input file may use ``CapSoil $Qult $Pult $Tult $Kv $Kh`` to specify strength and stiffness directly instead of computing them from soil properties.
+
+ 4. This is a model-generation utility; it does not create a single finite element.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ ShallowFoundationGen 1 10 footingInput.dat 4
+ source Foundation_1.tcl
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ShallowFoundationGen(1, 10, 'footingInput.dat', 4)
+ source('Foundation_1.tcl')
+
+Code developed by: Prishati Raychowdhury, UC San Diego
diff --git a/source/user/manual/model/elements/Shell.rst b/source/user/manual/model/elements/Shell.rst
new file mode 100644
index 00000000..e62ff8cc
--- /dev/null
+++ b/source/user/manual/model/elements/Shell.rst
@@ -0,0 +1,44 @@
+.. _Shell:
+
+Shell Element
+^^^^^^^^^^^^^
+
+This command constructs a four-node shell element using the Bathe MITC4 formulation with membrane and drilling degrees of freedom. The command names in OpenSees are ``shell``, ``Shell``, ``shellMITC4``, or ``ShellMITC4``.
+
+Use with ``-ndm 3 -ndf 6``. The section is typically a :ref:`PlateFiberSection`, :ref:`ElasticMembranePlateSection`, or layered shell section.
+
+.. function:: element ShellMITC4 $eleTag $iNode $jNode $kNode $lNode $secTag <-updateBasis> <-damp $dampTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $secTag, |integer|, tag of a previously defined section object
+ -updateBasis, |string|, update the element local basis during analysis (optional)
+ $dampTag, |integer|, tag of an elemental damping object used with ``-damp`` (optional)
+
+.. note::
+
+ 1. This is a 3D element with 6 DOFs per node and cannot be used in a 2D domain.
+
+ 2. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellMITC4 1 1 2 3 4 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellMITC4', 1, 1, 2, 3, 4, 1)
+
+Code developed by: Ed Love; reimplementation by Leopoldo Tesser, Diego A. Talledo, Veronique Le Corvec
diff --git a/source/user/manual/model/elements/ShellDKGQ.rst b/source/user/manual/model/elements/ShellDKGQ.rst
new file mode 100644
index 00000000..bb0dae33
--- /dev/null
+++ b/source/user/manual/model/elements/ShellDKGQ.rst
@@ -0,0 +1,43 @@
+.. _ShellDKGQ:
+
+ShellDKGQ Element
+^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral shell element based on generalized conforming element theory. The bending part uses the DKQ thin-plate formulation; the membrane part uses the GQ12 element with drilling DOF. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ShellDKGQ $eleTag $iNode $jNode $kNode $lNode $secTag <-damp $dampTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in clockwise or counter-clockwise order
+ $secTag, |integer|, tag of a previously defined section object
+ $dampTag, |integer|, tag of an elemental damping object used with ``-damp`` (optional)
+
+.. note::
+
+ 1. The section may be a :ref:`PlateFiberSection`, :ref:`ElasticMembranePlateSection`, or layered shell section.
+
+ 2. This is the linear small-deformation formulation. For geometric nonlinearity see :ref:`ShellNLDKGQ`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellDKGQ 1 1 2 3 4 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellDKGQ', 1, 1, 2, 3, 4, 1)
+
+Code developed by: Lisha Wang, Xinzheng Lu, Linlin Xie, Song Cen, Quan Gu
diff --git a/source/user/manual/model/elements/ShellDKGT.rst b/source/user/manual/model/elements/ShellDKGT.rst
new file mode 100644
index 00000000..aee7e05b
--- /dev/null
+++ b/source/user/manual/model/elements/ShellDKGT.rst
@@ -0,0 +1,43 @@
+.. _ShellDKGT:
+
+ShellDKGT Element
+^^^^^^^^^^^^^^^^^
+
+This command constructs a three-node triangular shell element based on generalized conforming element theory. The bending part uses the DKT thin-plate formulation; the membrane part uses the GT9 element with drilling DOF. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ShellDKGT $eleTag $iNode $jNode $kNode $secTag <-damp $dampTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode, |integer|, three nodes in clockwise or counter-clockwise order
+ $secTag, |integer|, tag of a previously defined section object
+ $dampTag, |integer|, tag of an elemental damping object used with ``-damp`` (optional)
+
+.. note::
+
+ 1. The section may be a :ref:`PlateFiberSection`, :ref:`ElasticMembranePlateSection`, or layered shell section.
+
+ 2. This is the linear small-deformation formulation. For geometric nonlinearity see :ref:`ShellNLDKGT`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellDKGT 1 1 2 3 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellDKGT', 1, 1, 2, 3, 1)
+
+Code developed by: Shuhao Zhang, Xinzheng Lu
diff --git a/source/user/manual/model/elements/ShellNL.rst b/source/user/manual/model/elements/ShellNL.rst
new file mode 100644
index 00000000..88c81704
--- /dev/null
+++ b/source/user/manual/model/elements/ShellNL.rst
@@ -0,0 +1,42 @@
+.. _ShellNL:
+
+ShellNL Element
+^^^^^^^^^^^^^^^
+
+This command constructs a nine-node Lagrangian shell element with membrane and drilling degrees of freedom. The command names in OpenSees are ``ShellNL``, ``shellNL``, ``ShellMITC9``, or ``shellMITC9``. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ShellMITC9 $eleTag $n1 $n2 $n3 $n4 $n5 $n6 $n7 $n8 $n9 $secTag
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $n1 ... $n9, |integer|, nine nodes defining the element
+ $secTag, |integer|, tag of a previously defined section object
+
+.. note::
+
+ 1. This is a 3D element with 6 DOFs per node (54 total element DOFs).
+
+ 2. The section is typically a :ref:`PlateFiberSection` or :ref:`ElasticMembranePlateSection`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellMITC9 1 1 2 3 4 5 6 7 8 9 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellMITC9', 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1)
+
+Code developed by: Leopoldo Tesser, Diego A. Talledo
diff --git a/source/user/manual/model/elements/ShellNLDKGQ.rst b/source/user/manual/model/elements/ShellNLDKGQ.rst
new file mode 100644
index 00000000..4629d81f
--- /dev/null
+++ b/source/user/manual/model/elements/ShellNLDKGQ.rst
@@ -0,0 +1,41 @@
+.. _ShellNLDKGQ:
+
+ShellNLDKGQ Element
+^^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral shell element with geometric nonlinearity based on the updated Lagrangian formulation. It extends the :ref:`ShellDKGQ` element for large-deformation analysis. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ShellNLDKGQ $eleTag $iNode $jNode $kNode $lNode $secTag <-damp $dampTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in clockwise or counter-clockwise order
+ $secTag, |integer|, tag of a previously defined section object
+ $dampTag, |integer|, tag of an elemental damping object used with ``-damp`` (optional)
+
+.. note::
+
+ 1. The section may be a :ref:`PlateFiberSection`, :ref:`ElasticMembranePlateSection`, or layered shell section.
+
+ 2. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellNLDKGQ 1 1 2 3 4 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellNLDKGQ', 1, 1, 2, 3, 4, 1)
+
+Code developed by: Lisha Wang, Xinzheng Lu, Linlin Xie, Song Cen, Quan Gu
diff --git a/source/user/manual/model/elements/ShellNLDKGT.rst b/source/user/manual/model/elements/ShellNLDKGT.rst
new file mode 100644
index 00000000..906587dd
--- /dev/null
+++ b/source/user/manual/model/elements/ShellNLDKGT.rst
@@ -0,0 +1,41 @@
+.. _ShellNLDKGT:
+
+ShellNLDKGT Element
+^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-node triangular shell element with geometric nonlinearity based on the updated Lagrangian formulation. It extends the :ref:`ShellDKGT` element for large-deformation analysis. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element ShellNLDKGT $eleTag $iNode $jNode $kNode $secTag <-damp $dampTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode, |integer|, three nodes in clockwise or counter-clockwise order
+ $secTag, |integer|, tag of a previously defined section object
+ $dampTag, |integer|, tag of an elemental damping object used with ``-damp`` (optional)
+
+.. note::
+
+ 1. The section may be a :ref:`PlateFiberSection`, :ref:`ElasticMembranePlateSection`, or layered shell section.
+
+ 2. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 1 10.0
+ element ShellNLDKGT 1 1 2 3 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ section('PlateFiber', 1, 1, 10.0)
+ element('ShellNLDKGT', 1, 1, 2, 3, 1)
+
+Code developed by: Shuhao Zhang, Xinzheng Lu
diff --git a/source/user/manual/model/elements/SimpleContact2D.rst b/source/user/manual/model/elements/SimpleContact2D.rst
new file mode 100644
index 00000000..fccc6110
--- /dev/null
+++ b/source/user/manual/model/elements/SimpleContact2D.rst
@@ -0,0 +1,40 @@
+.. _SimpleContact2D:
+
+SimpleContact2D Element
+^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-dimensional contact element between a primary line segment (nodes i-j) and a secondary node using a Lagrange multiplier node. Use with ``-ndm 2``.
+
+.. function:: element SimpleContact2D $eleTag $iNode $jNode $secondaryNode $lambdaNode $matTag $tolGap $tolForce
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, nodes defining the primary contact segment
+ $secondaryNode, |integer|, secondary (slave) node
+ $lambdaNode, |integer|, Lagrange multiplier node
+ $matTag, |integer|, tag of a contact ND material
+ $tolGap, |float|, gap tolerance for contact detection
+ $tolForce, |float|, force tolerance for contact equilibrium
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``forces`` and ``force``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element SimpleContact2D 1 1 2 10 11 1 1.0e-6 1.0e-6
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('SimpleContact2D', 1, 1, 2, 10, 11, 1, 1.0e-6, 1.0e-6)
+
+Code developed by: Kathryn Petek, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/SimpleContact3D.rst b/source/user/manual/model/elements/SimpleContact3D.rst
new file mode 100644
index 00000000..34e8bee4
--- /dev/null
+++ b/source/user/manual/model/elements/SimpleContact3D.rst
@@ -0,0 +1,40 @@
+.. _SimpleContact3D:
+
+SimpleContact3D Element
+^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional contact element between a primary quadrilateral surface (four nodes) and a secondary node using a Lagrange multiplier node. Use with ``-ndm 3``.
+
+.. function:: element SimpleContact3D $eleTag $iNode $jNode $kNode $lNode $secondaryNode $lambdaNode $matTag $tolGap $tolForce
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes defining the primary contact surface
+ $secondaryNode, |integer|, secondary (slave) node
+ $lambdaNode, |integer|, Lagrange multiplier node
+ $matTag, |integer|, tag of a contact ND material
+ $tolGap, |float|, gap tolerance for contact detection
+ $tolForce, |float|, force tolerance for contact equilibrium
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``forces`` and ``force``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element SimpleContact3D 1 1 2 3 4 10 11 1 1.0e-6 1.0e-6
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('SimpleContact3D', 1, 1, 2, 3, 4, 10, 11, 1, 1.0e-6, 1.0e-6)
+
+Code developed by: Kathryn Petek, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/SingleFrictionPendulumBearing.rst b/source/user/manual/model/elements/SingleFrictionPendulumBearing.rst
new file mode 100644
index 00000000..2467f1f9
--- /dev/null
+++ b/source/user/manual/model/elements/SingleFrictionPendulumBearing.rst
@@ -0,0 +1,51 @@
+.. _SingleFrictionPendulumBearing:
+
+SingleFrictionPendulumBearing Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-node single concave friction pendulum bearing. The iNode is the concave sliding surface and the jNode is the articulated slider. Shear behavior includes post-yield stiffening from the concave surface and uses a friction model.
+
+.. function:: element singleFPBearing $eleTag $iNode $jNode $frnMdlTag $Reff $kInit -P $matTag -Mz $matTag <-orient $x1 $x2 $x3 $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. function:: element singleFPBearing $eleTag $iNode $jNode $frnMdlTag $Reff $kInit -P $matTag -T $matTag -My $matTag -Mz $matTag <-orient <$x1 $x2 $x3> $y1 $y2 $y3> <-shearDist $sDratio> <-doRayleigh> <-mass $m> <-iter $maxIter $tol>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes (iNode is concave surface)
+ $frnMdlTag, |integer|, tag of a previously defined friction model
+ $Reff, |float|, effective radius of concave sliding surface
+ $kInit, |float|, initial elastic stiffness in local shear direction
+ $matTag, |integer|, uniaxial material tag for axial behavior (``-P``)
+ $matTag, |integer|, uniaxial material tag for torsion (``-T``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local y (``-My``; 3D only)
+ $matTag, |integer|, uniaxial material tag for moment about local z (``-Mz``)
+ $sDratio, |float|, shear distance from iNode as fraction of element length (optional; default 0.0)
+ $m, |float|, element mass (optional; default 0.0)
+ $maxIter $tol, |integer| |float|, equilibrium iteration limit and tolerance (optional; defaults 20 and 1e-8)
+
+.. note::
+
+ 1. The axial uniaxial material is modified for no-tension behavior.
+
+ 2. For pressure-velocity-temperature dependent friction see :ref:`FPBearingPTV`.
+
+ 3. Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element singleFPBearing 1 1 2 1 34.68 250.0 -P 1 -Mz 2 -orient 0 1 0 -1 0 0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('singleFPBearing', 1, 1, 2, 1, 34.68, 250.0, '-P', 1, '-Mz', 2, '-orient', 0, 1, 0, -1, 0, 0)
+
+Code developed by: Andreas Schellenberg, University of California, Berkeley
diff --git a/source/user/manual/model/elements/SurfaceLoad.rst b/source/user/manual/model/elements/SurfaceLoad.rst
new file mode 100644
index 00000000..72307335
--- /dev/null
+++ b/source/user/manual/model/elements/SurfaceLoad.rst
@@ -0,0 +1,40 @@
+.. _SurfaceLoad:
+
+SurfaceLoad Element
+^^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node surface load element that applies uniform pressure normal to a quadrilateral face. The element distributes energetically conjugate nodal forces to nodes shared with adjacent 3D brick or shell elements. Use with ``-ndm 3 -ndf 3`` or ``-ndf 6``.
+
+.. function:: element SurfaceLoad $eleTag $iNode $jNode $kNode $lNode $pressure
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order defining the loaded face
+ $pressure, |float|, pressure normal to the surface; outward positive and inward negative
+
+.. note::
+
+ 1. This element has no stiffness; it only applies equivalent nodal loads to connected structural elements.
+
+ 2. Apply the load in a load pattern so pressure can vary between analysis steps.
+
+ 3. A triangular variant ``TriSurfaceLoad`` is also available.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element SurfaceLoad 1 1 2 3 4 -10.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('SurfaceLoad', 1, 1, 2, 3, 4, -10.0)
+
+Code developed by: Chris McGann, Pedro Arduino, and Peter Mackenzie-Helnwein, University of Washington
diff --git a/source/user/manual/model/elements/Tri31.rst b/source/user/manual/model/elements/Tri31.rst
new file mode 100644
index 00000000..ce30ffd5
--- /dev/null
+++ b/source/user/manual/model/elements/Tri31.rst
@@ -0,0 +1,45 @@
+.. _Tri31:
+
+Tri31 Element
+^^^^^^^^^^^^^
+
+This command constructs a constant-strain triangular element using three nodes and one integration point. The command name in OpenSees is ``Tri31`` or ``tri31``. Use with ``-ndm 2 -ndf 2``.
+
+.. function:: element Tri31 $eleTag $iNode $jNode $kNode $thick $type $matTag <$pressure $rho $b1 $b2>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode, |integer|, three nodes in counter-clockwise order
+ $thick, |float|, element thickness
+ $type, |string|, material formulation: ``PlaneStrain`` or ``PlaneStress``
+ $matTag, |integer|, tag of an nD material
+ $pressure, |float|, surface pressure (optional; default 0.0)
+ $rho, |float|, element mass density per unit volume (optional; default 0.0)
+ $b1 $b2, |float|, constant body forces in the domain (optional; default 0.0)
+
+.. note::
+
+ 1. If all optional arguments are supplied, all four must be provided.
+
+ 2. Consistent nodal loads are computed from pressure and body forces.
+
+ 3. Valid :ref:`elementRecorder` queries include ``forces``, ``stresses``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element Tri31 1 1 2 3 1.0 PlaneStress 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('Tri31', 1, 1, 2, 3, 1.0, 'PlaneStress', 1)
+
+Code developed by: Roozbeh G. Mikola, N. Sitar
diff --git a/source/user/manual/model/elements/TripleFrictionPendulum.rst b/source/user/manual/model/elements/TripleFrictionPendulum.rst
new file mode 100644
index 00000000..b68b481b
--- /dev/null
+++ b/source/user/manual/model/elements/TripleFrictionPendulum.rst
@@ -0,0 +1,49 @@
+.. _TripleFrictionPendulum:
+
+TripleFrictionPendulum Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a triple friction pendulum bearing element using the series model of Dao et al. (2013). Three friction model objects define sliding behavior at the three active interfaces; four :ref:`uniaxialMaterial` objects define axial and rotational behavior. For the original geometry-based TFP element see :ref:`TripleFrictionPendulumBearing`. For heating effects see :ref:`TripleFrictionPendulumX`.
+
+.. function:: element TripleFrictionPendulum $eleTag $iNode $jNode $frnMdl1 $frnMdl2 $frnMdl3 $matP $matT $matMy $matMz $L1 $L2 $L3 $Ubar1 $Ubar2 $Ubar3 $W $Uy $Kvt $minFv $tol
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $frnMdl1 $frnMdl2 $frnMdl3, |integer|, tags of three friction models
+ $matP, |integer|, uniaxial material tag for axial behavior
+ $matT, |integer|, uniaxial material tag for torsion
+ $matMy $matMz, |integer|, uniaxial material tags for moments about local y and z
+ $L1 $L2 $L3, |float|, effective pendulum lengths for the three sliding interfaces
+ $Ubar1 $Ubar2 $Ubar3, |float|, displacement capacities at the three interfaces
+ $W, |float|, axial load on bearing
+ $Uy, |float|, yield displacement for shear behavior
+ $Kvt, |float|, vertical stiffness
+ $minFv, |float|, minimum vertical force for friction activation
+ $tol, |float|, convergence tolerance for internal equilibrium
+
+.. note::
+
+ 1. Use with ``-ndm 3 -ndf 6``.
+
+ 2. P-Delta moments are transferred entirely to the concave sliding surface (iNode).
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element TripleFrictionPendulum 1 1 2 1 2 3 10 11 12 13 2.0 2.0 4.0 0.5 0.5 1.0 500.0 0.01 1.0e6 10.0 1.0e-8
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('TripleFrictionPendulum', 1, 1, 2, 1, 2, 3, 10, 11, 12, 13,
+ 2.0, 2.0, 4.0, 0.5, 0.5, 1.0, 500.0, 0.01, 1.0e6, 10.0, 1.0e-8)
+
+Code developed by: Nhan Dao, University of Nevada, Reno
diff --git a/source/user/manual/model/elements/TripleFrictionPendulumBearing.rst b/source/user/manual/model/elements/TripleFrictionPendulumBearing.rst
new file mode 100644
index 00000000..b2bab917
--- /dev/null
+++ b/source/user/manual/model/elements/TripleFrictionPendulumBearing.rst
@@ -0,0 +1,44 @@
+.. _TripleFrictionPendulumBearing:
+
+TripleFrictionPendulumBearing Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs the original triple friction pendulum (TFP) bearing element of Becker and Mahin. It models four sliding interfaces with geometry and friction coefficients specified directly. For the series-model element of Dao et al. see :ref:`TripleFrictionPendulum`. For heating effects see :ref:`TripleFrictionPendulumX`.
+
+.. function:: element TFP $eleTag $iNode $jNode $R1 $R2 $R3 $R4 $D1 $D2 $D3 $D4 $d1 $d2 $d3 $d4 $mu1 $mu2 $mu3 $mu4 $h1 $h2 $h3 $h4 $H0 $colLoad <$K>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $R1 $R2 $R3 $R4, |float|, radii of inner bottom; inner top; outer bottom; outer top sliding surfaces
+ $D1 $D2 $D3 $D4, |float|, diameters of inner bottom; inner top; outer bottom; outer top sliding surfaces
+ $d1 $d2 $d3 $d4, |float|, diameters of inner bottom; inner top; outer bottom; outer top sliders
+ $mu1 $mu2 $mu3 $mu4, |float|, friction coefficients at the four sliding surfaces
+ $h1 $h2 $h3 $h4, |float|, heights from each sliding surface to bearing center
+ $H0, |float|, total height of bearing
+ $colLoad, |float|, initial axial load on bearing (used for first step only)
+ $K, |float|, vertical spring stiffness (optional; default 1.0e15)
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``force``, ``localForce``, ``basicForce``, ``localDisplacement``, ``basicDisplacement``, ``relativeDisp``, ``plasticDisp``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element TFP 1 1 2 12.0 12.0 88.0 88.0 12.0 12.0 44.0 44.0 8.0 8.0 12.5 12.5 0.02 0.02 0.09 0.12 3.0 3.0 4.5 4.5 12.5 45.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('TFP', 1, 1, 2, 12.0, 12.0, 88.0, 88.0, 12.0, 12.0, 44.0, 44.0,
+ 8.0, 8.0, 12.5, 12.5, 0.02, 0.02, 0.09, 0.12, 3.0, 3.0, 4.5, 4.5, 12.5, 45.0)
+
+Code developed by: Tracy Becker, University of California, Berkeley
diff --git a/source/user/manual/model/elements/TripleFrictionPendulumX.rst b/source/user/manual/model/elements/TripleFrictionPendulumX.rst
index f6b96147..c72491a6 100644
--- a/source/user/manual/model/elements/TripleFrictionPendulumX.rst
+++ b/source/user/manual/model/elements/TripleFrictionPendulumX.rst
@@ -1,4 +1,4 @@
-.. _TripleFrictionPendulumX::
+.. _TripleFrictionPendulumX:
TripleFrictionPendulumX Element
^^^^^^^^^^^^^^^^
diff --git a/source/user/manual/model/elements/TwentyEightNodeBrickUP.rst b/source/user/manual/model/elements/TwentyEightNodeBrickUP.rst
new file mode 100644
index 00000000..e65027a6
--- /dev/null
+++ b/source/user/manual/model/elements/TwentyEightNodeBrickUP.rst
@@ -0,0 +1,41 @@
+.. _TwentyEightNodeBrickUP:
+
+TwentyEightNodeBrickUP Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a 20-node hexahedral element for coupled u-p analysis. Eight corner nodes have pore-pressure DOFs; twelve midside nodes carry solid displacement only. Use with ``-ndm 3``. The registered command name is ``20_8_BrickUP``.
+
+.. function:: element 20_8_BrickUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $N9 $N10 $N11 $N12 $N13 $N14 $N15 $N16 $N17 $N18 $N19 $N20 $matTag $bulk $fmass $permX $permY $permZ <$bX $bY $bZ>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 ... $N20, |integer|, twenty node tags in standard 20-node brick order
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus
+ $fmass, |float|, fluid mass density
+ $permX $permY $permZ, |float|, permeability in x; y; and z directions
+ $bX $bY $bZ, |float|, optional body-force components (default 0.0)
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``force``, ``stiffness``, and ``material $matNum ...``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element 20_8_BrickUP 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2.2e6 1000.0 1.0e-5 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('20_8_BrickUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/VS3D4.rst b/source/user/manual/model/elements/VS3D4.rst
new file mode 100644
index 00000000..6dd00f81
--- /dev/null
+++ b/source/user/manual/model/elements/VS3D4.rst
@@ -0,0 +1,43 @@
+.. _VS3D4:
+
+VS3D4 Element
+^^^^^^^^^^^^^
+
+This command constructs a four-node quadrilateral viscous-spring boundary element for absorbing and transmitting outgoing waves at solid domain boundaries. The element supports sensitivity analysis. Use with ``-ndm 3 -ndf 3``.
+
+.. function:: element VS3D4 $eleTag $iNode $jNode $kNode $lNode $E $G $rho $R <$alphaN $alphaT>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four boundary nodes in counter-clockwise order
+ $E, |float|, Young's modulus of the adjacent solid medium
+ $G, |float|, shear modulus of the adjacent solid medium
+ $rho, |float|, mass density (default 1.0)
+ $R, |float|, distance from the boundary to the domain of interest (default 1.0)
+ $alphaN, |float|, normal-wave correction factor (default 1.33)
+ $alphaT, |float|, tangential-wave correction factor (default 0.67)
+
+.. note::
+
+ 1. Intended for dam-foundation and other 3D wave-propagation models with artificial boundaries.
+
+ 2. Valid :ref:`elementRecorder` queries include ``force`` and ``stiffness``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element VS3D4 1 1 2 3 4 3.0e10 1.2e10 2400.0 50.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('VS3D4', 1, 1, 2, 3, 4, 3.0e10, 1.2e10, 2400.0, 50.0)
+
+Code developed by: Quan Gu, Yichao Gao, and Zhijian Qiu, Xiamen University
diff --git a/source/user/manual/model/elements/YamamotoBiaxialHDR.rst b/source/user/manual/model/elements/YamamotoBiaxialHDR.rst
new file mode 100644
index 00000000..490b0ca3
--- /dev/null
+++ b/source/user/manual/model/elements/YamamotoBiaxialHDR.rst
@@ -0,0 +1,41 @@
+.. _YamamotoBiaxialHDR:
+
+YamamotoBiaxialHDR Element
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a three-dimensional high damping rubber bearing element with biaxial shear springs distributed in the local y-z plane. Axial and rotational stiffness remain zero. Use with ``-ndm 3 -ndf 6``.
+
+.. function:: element YamamotoBiaxialHDR $eleTag $iNode $jNode $Tp $DDo $DDi $Hr <-coRS $cr $cs> <-orient <$x1 $x2 $x3> $yp1 $yp2 $yp3> <-mass $m>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode, |integer|, end nodes
+ $Tp, |integer|, number of rubber layers
+ $DDo, |float|, outer diameter
+ $DDi, |float|, inner diameter
+ $Hr, |float|, height of rubber layers
+ $cr $cs, |float|, coefficients for scragging model (``-coRS``; optional; default 1.0)
+ $m, |float|, element mass (optional; default 0.0)
+
+.. note::
+
+ Valid :ref:`elementRecorder` queries include ``globalForce``, ``localForce``, ``basicForce``, ``localDisplacement``, and ``basicDeformation``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element YamamotoBiaxialHDR 1 1 2 20 0.6 0.0 0.15
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('YamamotoBiaxialHDR', 1, 1, 2, 20, 0.6, 0.0, 0.15)
+
+Code developed by: Masaru Kikuchi
diff --git a/source/user/manual/model/elements/ZeroLengthContactASDimplex.png b/source/user/manual/model/elements/ZeroLengthContactASDimplex.png
new file mode 100644
index 00000000..f4978929
Binary files /dev/null and b/source/user/manual/model/elements/ZeroLengthContactASDimplex.png differ
diff --git a/source/user/manual/model/elements/bbarBrickUP.rst b/source/user/manual/model/elements/bbarBrickUP.rst
new file mode 100644
index 00000000..f3cbaaf2
--- /dev/null
+++ b/source/user/manual/model/elements/bbarBrickUP.rst
@@ -0,0 +1,40 @@
+.. _bbarBrickUP:
+
+bbarBrickUP Element
+^^^^^^^^^^^^^^^^^^^
+
+This command constructs an eight-node brick element with the B-bar method for coupled u-p analysis of saturated porous media. Use with ``-ndm 3 -ndf 4``.
+
+.. function:: element bbarBrickUP $eleTag $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8 $matTag $bulk $fmass $permX $permY $permZ <$bX $bY $bZ>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $N1 $N2 $N3 $N4 $N5 $N6 $N7 $N8, |integer|, eight node tags in standard brick order
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus
+ $fmass, |float|, fluid mass density
+ $permX $permY $permZ, |float|, permeability in x; y; and z directions
+ $bX $bY $bZ, |float|, optional body-force components (default 0.0)
+
+.. note::
+
+ For the standard formulation without B-bar see :ref:`BrickUP`.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element bbarBrickUP 1 1 2 3 4 5 6 7 8 1 2.2e6 1000.0 1.0e-5 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('bbarBrickUP', 1, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/bbarQuadUP.rst b/source/user/manual/model/elements/bbarQuadUP.rst
new file mode 100644
index 00000000..7616cfe9
--- /dev/null
+++ b/source/user/manual/model/elements/bbarQuadUP.rst
@@ -0,0 +1,42 @@
+.. _bbarQuadUP:
+
+bbarQuadUP Element
+^^^^^^^^^^^^^^^^^^
+
+This command constructs a four-node plane-strain quadrilateral element with the B-bar method to mitigate volumetric locking in coupled u-p analysis. Use with ``-ndm 2 -ndf 3``.
+
+.. function:: element bbarQuadUP $eleTag $iNode $jNode $kNode $lNode $thick $matTag $bulk $fmass $hPerm $vPerm <$b1 $b2 $t>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $eleTag, |integer|, unique element tag
+ $iNode $jNode $kNode $lNode, |integer|, four nodes in counter-clockwise order
+ $thick, |float|, element thickness
+ $matTag, |integer|, tag of a previously defined ND material
+ $bulk, |float|, combined undrained bulk modulus
+ $fmass, |float|, fluid mass density
+ $hPerm $vPerm, |float|, permeability in horizontal and vertical directions
+ $b1 $b2, |float|, optional body-force components (default 0.0)
+ $t, |float|, optional uniform normal traction (default 0.0)
+
+.. note::
+
+ For the standard formulation without B-bar see :ref:`FourNodeQuadUP`.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ element bbarQuadUP 1 1 2 3 4 1.0 1 2.2e6 1000.0 1.0e-5 1.0e-5
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ element('bbarQuadUP', 1, 1, 2, 3, 4, 1.0, 1, 2.2e6, 1000.0, 1.0e-5, 1.0e-5)
+
+Code developed by: Zhaohui Yang, UC San Diego
diff --git a/source/user/manual/model/elements/brick.rst b/source/user/manual/model/elements/brick.rst
deleted file mode 100644
index e515a5e9..00000000
--- a/source/user/manual/model/elements/brick.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-.. _stdBrick::
-
-stdBrick Element
-^^^^^^^^^^^^^^^^
-
-This command is used to construct an eight-node brick element object, which uses the standard isoparametric formulation.
-
-.. function:: element stdBrick $eleTag $node1 $node2 $node3 $node4 $node5 $node6 $node7 $node8 $matTag <$b1 $b2 $b3>
-
-.. csv-table::
- :header: "Argument", "Type", "Description"
- :widths: 10, 10, 40
-
- $eleTag, |integer|, unique element object tag
- $node1 .. $node8, 8 |integer|, nodes of brick (ordered as shown in fig below)
- $matTag, |integer|, tag of nDMaterial
- $b1 $b2 $b3, |listFloat|, optional: body forces in global x,y,z directions
-
-.. note::
-
- The valid queries to a Brick element when creating an ElementRecorder object are 'forces', 'stresses,' ('strains' version > 2.2.0) and 'material $matNum matArg1 matArg2 ...' Where $matNum refers to the material object at the integration point corresponding to the node numbers in the isoparametric domain.
-This element can only be defined in -ndm 3 -ndf 3
-
- .. admonition:: Example
-
- The following example constructs a brick element with tag **1** between nodes **1, 2, 3, 4, 5, 6, 7, 8** with an nDMaterial of tag **1** and body forces given by varaiables **b1, b2, b3**.
-
- 1. **Tcl Code**
-
- .. code-block:: tcl
-
- element stdBrick 1 1 2 3 4 5 6 7 8 1 $b1 $b2 $b3
-
- 2. **Python Code**
-
- .. code-block:: python
-
- element('stdBrick',1,2,3,4,5,6,7,8,1, b1, b2, b3)
-
-Code Developed by: **Edward Love, Sandia National Laboratories**
\ No newline at end of file
diff --git a/source/user/manual/model/elements/dispBeamColumn.rst b/source/user/manual/model/elements/dispBeamColumn.rst
index c1393634..affb9d05 100644
--- a/source/user/manual/model/elements/dispBeamColumn.rst
+++ b/source/user/manual/model/elements/dispBeamColumn.rst
@@ -15,7 +15,7 @@ stic hinge integration, see :ref:`beamIntegration` options. The element if formu
.. tab:: Tcl
- .. function:: element dispBeamCoumn $eleTag $iNode $jNode $transfTag $integrationTag <-mass $mass>
+ .. function:: element dispBeamColumn $eleTag $iNode $jNode $transfTag $integrationTag <-mass $mass>
.. csv-table::
:header: "Argument", "Type", "Description"
diff --git a/source/user/manual/model/elements/figures/SFI_MVLEM/SFI_MVLEM_3D_formulation.jpg b/source/user/manual/model/elements/figures/SFI_MVLEM/SFI_MVLEM_3D_formulation.jpg
new file mode 100644
index 00000000..565f01c0
Binary files /dev/null and b/source/user/manual/model/elements/figures/SFI_MVLEM/SFI_MVLEM_3D_formulation.jpg differ
diff --git a/source/user/manual/model/elements/forceBeamColumn.rst b/source/user/manual/model/elements/forceBeamColumn.rst
index bba01274..aa7379fc 100644
--- a/source/user/manual/model/elements/forceBeamColumn.rst
+++ b/source/user/manual/model/elements/forceBeamColumn.rst
@@ -15,7 +15,7 @@ stic hinge integration, see :ref:`beamIntegration` options. The element if formu
.. tab:: Tcl
- .. function:: element forceBeamCoumn $eleTag $iNode $jNode $transfTag $integrationTag <-iter $maxIter $tol> <-mass $mass>
+ .. function:: element forceBeamColumn $eleTag $iNode $jNode $transfTag $integrationTag <-iter $maxIter $tol> <-mass $mass>
.. csv-table::
:header: "Argument", "Type", "Description"
diff --git a/source/user/manual/model/elements/zeroLengthContactASDimplex.rst b/source/user/manual/model/elements/zeroLengthContactASDimplex.rst
index 719fae3b..a09ac206 100644
--- a/source/user/manual/model/elements/zeroLengthContactASDimplex.rst
+++ b/source/user/manual/model/elements/zeroLengthContactASDimplex.rst
@@ -1,7 +1,7 @@
.. _zeroLengthContactASDimplex:
ZeroLengthContactASDimplex Element
-^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This command is used to construct zeroLengthContactASDimplex element object. The zeroLengthContactASDimplex element is a 2-node zeroLength contact element with the following features:
diff --git a/source/user/manual/model/mass.rst b/source/user/manual/model/mass.rst
new file mode 100644
index 00000000..9eb31b8a
--- /dev/null
+++ b/source/user/manual/model/mass.rst
@@ -0,0 +1,37 @@
+.. _mass:
+
+mass Command
+************
+
+This command assigns lumped mass values to an existing node. The number of mass values must match the number of degrees of freedom at the node.
+
+.. function:: mass $nodeTag $m1 $m2 ...
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $nodeTag, |integer|, tag of the node whose mass is being set
+ $m1 $m2 ..., |listFloat|, nodal mass values for each DOF (diagonal lumped mass matrix)
+
+.. note::
+
+ Mass can also be assigned when a node is created using the :ref:`node` command with the ``-mass`` option.
+
+.. admonition:: Example
+
+ The following example assigns mass in the x and z directions at node 2 for a 6-DOF model.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ mass 2 2.5 0.0 2.5 0.0 0.0 0.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.mass(2, 2.5, 0.0, 2.5, 0.0, 0.0, 0.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/model/region.rst b/source/user/manual/model/region.rst
new file mode 100644
index 00000000..04d6eb30
--- /dev/null
+++ b/source/user/manual/model/region.rst
@@ -0,0 +1,47 @@
+.. _region:
+
+region Command
+**************
+
+This command labels a group of nodes and/or elements as a mesh region. Regions are used to assign Rayleigh damping factors to selected parts of the model. A region is defined by elements or by nodes, not both.
+
+If elements are specified, the region includes those elements and their connected nodes unless ``-eleOnly`` is used. If nodes are specified, the region includes those nodes and all elements whose nodes are all in the region, unless ``-nodeOnly`` is used.
+
+.. function:: region $regTag <$selectionOptions> <-rayleigh $alphaM $betaK $betaKinit $betaKcomm>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $regTag, |integer|, unique region tag
+ -ele, |string|, flag followed by a list of element tags
+ -eleOnly, |string|, same as ``-ele`` but connected nodes are not included
+ -eleRange, |string|, flag followed by $startEle and $endEle
+ -eleOnlyRange, |string|, element range with ``-eleOnly`` behavior
+ -node, |string|, flag followed by a list of node tags
+ -nodeOnly, |string|, same as ``-node`` but connected elements are not included
+ -nodeRange, |string|, flag followed by $startNode and $endNode
+ -nodeOnlyRange, |string|, node range with ``-nodeOnly`` behavior
+ -rayleigh, |string|, "flag followed by Rayleigh damping factors: $alphaM $betaK $betaKinit $betaKcomm"
+
+.. note::
+
+ The user cannot define a region using both element and node selection flags in the same command.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ region 1 -ele 1 5 -eleRange 10 15
+ region 2 -node 2 4 6 -nodeRange 9 12 -rayleigh 0.0 0.01 0.0 0.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.region(1, '-ele', 1, 5, '-eleRange', 10, 15)
+ ops.region(2, '-node', 2, 4, 6, '-nodeRange', 9, 12, '-rayleigh', 0.0, 0.01, 0.0, 0.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/output/DriftRecorder.rst b/source/user/manual/output/DriftRecorder.rst
new file mode 100644
index 00000000..cd99bd9d
--- /dev/null
+++ b/source/user/manual/output/DriftRecorder.rst
@@ -0,0 +1,52 @@
+.. _driftRecorder:
+
+Drift Recorder
+^^^^^^^^^^^^^^
+
+The Drift recorder records the displacement drift between pairs of nodes. Drift is computed as the relative displacement along a specified degree of freedom divided by the distance between the node pair, measured in a perpendicular global direction. This is commonly used for inter-story drift in building models.
+
+.. function:: recorder Drift <-file $fileName> <-xml $fileName> <-binary $fileName> <-fileCSV $fileName> <-precision $nSD> <-time> <-dT $deltaT> <-rTolDt $rTol> <-closeOnWrite> -iNode $iNode1 $iNode2 ... -jNode $jNode1 $jNode2 ... -dof $dof -perpDirn $dirn
+ :noindex:
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $fileName, |string|, file to which output is sent (one of ``-file``, ``-xml``, ``-binary``, or ``-fileCSV``)
+ $nSD, |integer|, number of significant digits (optional, default 6)
+ -time, |string|, place domain time in the first column of each output line
+ $deltaT, |float|, record only when elapsed time since last write exceeds this value
+ $rTol, |float|, relative tolerance on $deltaT (optional, default 0.00001)
+ -closeOnWrite, |string|, open and close the output file on each write
+ $iNode1 $iNode2 ..., |listInt|, tags of the first node in each drift pair
+ $jNode1 $jNode2 ..., |listInt|, tags of the second node in each drift pair (same length as ``-iNode`` list)
+ $dof, |integer|, global degree of freedom along which relative displacement is measured (1 through ndf)
+ $dirn, |integer|, global direction used to compute the distance between nodes (1 = X, 2 = Y, 3 = Z)
+
+.. note::
+
+ 1. The number of nodes listed after ``-iNode`` must equal the number listed after ``-jNode``. Node pairs are matched by position in the two lists.
+
+ 2. Only one output destination option may be used: ``-file``, ``-xml``, ``-binary``, or ``-fileCSV``.
+
+ 3. | The function returns a value:
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
+ | FAILURE: **-1** recorder command failed (read the log)
+
+.. admonition:: Example
+
+ The following example records drift in DOF 1 between node pairs (1, 3) and (2, 4), using the Y direction to compute story height.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ recorder Drift -file drift.out -time -iNode 1 2 -jNode 3 4 -dof 1 -perpDirn 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ recorder('Drift', '-file', 'drift.out', '-time', '-iNode', 1, 2, '-jNode', 3, 4, '-dof', 1, '-perpDirn', 2)
+
+Code developed by: |mhs|
diff --git a/source/user/manual/output/EnvelopeElementRecorder.rst b/source/user/manual/output/EnvelopeElementRecorder.rst
new file mode 100644
index 00000000..caccdc22
--- /dev/null
+++ b/source/user/manual/output/EnvelopeElementRecorder.rst
@@ -0,0 +1,58 @@
+.. _envelopeElementRecorder:
+
+Envelope Element Recorder
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The EnvelopeElement recorder tracks the minimum, maximum, and maximum absolute value of element response quantities over the analysis. The response arguments are the same as for the :ref:`elementRecorder`; see that page for fiber and section recording options.
+
+.. function:: recorder EnvelopeElement <-file $fileName> <-xml $fileName> <-binary $fileName> <-tcp $inetAddress $port> <-precision $nSD> <-time> <-dT $deltaT> <-rTolDt $rTol> <-closeOnWrite> <-ele $ele1 $ele2 ...> <-eleRange $startEle $endEle> <-region $regionTag> $responseArgs
+ :noindex:
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $fileName, |string|, file to which output is sent
+ $inetAddr, |string|, IP address of remote machine (with ``-tcp``)
+ $port, |integer|, TCP port on remote machine
+ $nSD, |integer|, number of significant digits (optional, default 6)
+ -time, |string|, include the time at which each envelope extremum occurred
+ $deltaT, |float|, time interval for updating the envelope
+ $rTol, |float|, relative tolerance on $deltaT (optional, default 0.00001)
+ -closeOnWrite, |string|, open and close the output file on each write
+ $ele1 $ele2 ..., |listInt|, element tags to record
+ $startEle $endEle, |integer|, inclusive range of element tags
+ $regionTag, |integer|, tag of a previously defined :ref:`region`
+ $responseArgs, |list|, element response request (e.g. ``globalForce``, ``localForce``, ``section 1 force``)
+
+.. note::
+
+ 1. Only one of ``-file``, ``-xml``, ``-binary``, or ``-tcp`` may be used to specify the output destination.
+
+ 2. Only one of ``-ele``, ``-eleRange``, or ``-region`` may be used to select elements.
+
+ 3. For each recorded quantity, the output contains three values: minimum, maximum, and maximum absolute value. When ``-time`` is used, the time at which each extremum occurred is also recorded.
+
+ 4. Common beam-column response requests include ``globalForce``, ``localForce``, ``section $secNum force``, ``section $secNum deformation``, and ``section $secNum fiber $y $z stressStrain``.
+
+ 5. | The function returns a value:
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
+ | FAILURE: **-1** recorder command failed (read the log)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ recorder EnvelopeElement -file ele1global.out -time -ele 1 globalForce
+ recorder EnvelopeElement -file ele1sec1.out -time -ele 1 section 1 force
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ recorder('EnvelopeElement', '-file', 'ele1global.out', '-time', '-ele', 1, 'globalForce')
+ recorder('EnvelopeElement', '-file', 'ele1sec1.out', '-time', '-ele', 1, 'section', 1, 'force')
+
+Code developed by: |fmk|
diff --git a/source/user/manual/output/EnvelopeNodeRecorder.rst b/source/user/manual/output/EnvelopeNodeRecorder.rst
index e7528983..f7b1d058 100644
--- a/source/user/manual/output/EnvelopeNodeRecorder.rst
+++ b/source/user/manual/output/EnvelopeNodeRecorder.rst
@@ -45,9 +45,10 @@ The EnvelopeNode recorder type records the maxima and minima response of a numbe
rayleighForces!
4. | The function returns a value:
- | SUCCESS: **>0** an integer tag that can be used as a handle on the recorder for the remove a recorder in the :ref:`remove`.
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
| FAILURE: **-1** recorder command failed (read the log)
- To remove a recorder using the :ref:`remove` you need to save this tag in a variable for use later in the script.
+
+ To remove a recorder using the :ref:`remove` command, save this tag in a variable for use later in the script.
5. $deltaT, time interval for recording. will record when next step is $deltaT greater than last recorder step. Not really useful for Envelope recorder, a legacy from NodeRecorder!
@@ -70,6 +71,9 @@ The EnvelopeNode recorder type records the maxima and minima response of a numbe
recorder EnvelopeNode -file nodesA.out -timeSeries 1 2 -time -node 1 2 3 4 -dof 1 2 accel;
- .. code:: python
+ .. code-block:: python
+
+ recorder('EnvelopeNode', '-file', 'nodesD.out', '-time', '-node', 1, 2, 3, 4, '-dof', 1, 2, 'disp')
+ recorder('EnvelopeNode', '-file', 'nodesA.out', '-timeSeries', 1, 2, '-time', '-node', 1, 2, 3, 4, '-dof', 1, 2, 'accel')
Code developed by: |fmk|
diff --git a/source/user/manual/output/GmshRecorder.rst b/source/user/manual/output/GmshRecorder.rst
index d911bb3c..0e709d2f 100644
--- a/source/user/manual/output/GmshRecorder.rst
+++ b/source/user/manual/output/GmshRecorder.rst
@@ -35,7 +35,7 @@ The GMSH recorder type is a *whole model* recorder, that is it is meant to recor
Note the response type ``partition`` is unique to this recorder type and it contains information on the partition each element was assigned (useful in parallel processing to check model partitioning).
3. | The function returns a value:
- | SUCCESS: **>0** an integer tag that can be used as a handle on the recorder for the remove a recorder in the :ref:`remove`.
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
| FAILURE: **-1** recorder command failed (read the log)
diff --git a/source/user/manual/output/NodeRecorder.rst b/source/user/manual/output/NodeRecorder.rst
index b5d99561..007b483d 100644
--- a/source/user/manual/output/NodeRecorder.rst
+++ b/source/user/manual/output/NodeRecorder.rst
@@ -45,9 +45,10 @@ The Node recorder type records the response of a number of nodes at every conver
rayleighForces!
4. | The function returns a value:
- | SUCCESS: **>0** an integer tag that can be used as a handle on the recorder for the remove a recorder in the :ref:`remove`.
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
| FAILURE: **-1** recorder command failed (read the log)
- To remove a recorder using the :ref:`remove` you need to save this tag in a variable for use later in the script.
+
+ To remove a recorder using the :ref:`remove` command, save this tag in a variable for use later in the script.
5. $deltaT specifies a time interval for recording. will record when next step is $deltaT greater than last recorder step. It is useful if user script subdivides time step and user is not interested in the responses at each time step due to memory or file size constraints.
@@ -70,6 +71,9 @@ The Node recorder type records the response of a number of nodes at every conver
recorder Node -file nodesA.out -timeSeries 1 2 -time -node 1 2 3 4 -dof 1 2 accel;
- .. code:: python
+ .. code-block:: python
+
+ recorder('Node', '-file', 'nodesD.out', '-time', '-node', 1, 2, 3, 4, '-dof', 1, 2, 'disp')
+ recorder('Node', '-file', 'nodesA.out', '-timeSeries', 1, 2, '-time', '-node', 1, 2, 3, 4, '-dof', 1, 2, 'accel')
Code developed by: |fmk|
diff --git a/source/user/manual/output/PlotRecorder.rst b/source/user/manual/output/PlotRecorder.rst
new file mode 100644
index 00000000..94fb9613
--- /dev/null
+++ b/source/user/manual/output/PlotRecorder.rst
@@ -0,0 +1,48 @@
+.. _plotRecorder:
+
+Plot Recorder
+^^^^^^^^^^^^^
+
+The Plot recorder opens a graphical window and plots columns from a text file as the analysis progresses. The input file is typically the output of another recorder (for example, a :ref:`nodeRecorder`).
+
+.. function:: recorder Plot $fileName $windowTitle $xLoc $yLoc $xPixels $yPixels -columns $xCol $yCol <-columns $xCol2 $yCol2 ...> <-dT $deltaT> <-rTolDt $rTol>
+ :noindex:
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $fileName, |string|, name of the file from which data is read
+ $windowTitle, |string|, title displayed in the plot window
+ $xLoc $yLoc, |integer|, screen coordinates of the top-left corner of the window (pixels)
+ $xPixels $yPixels, |integer|, width and height of the plot window (pixels)
+ $xCol $yCol, |integer|, column indices for the x and y axes (1-based)
+ $deltaT, |float|, minimum time between plot updates (optional)
+ $rTol, |float|, relative tolerance on $deltaT (optional, default 0.00001)
+
+.. note::
+
+ 1. At least one ``-columns`` (or ``-cols`` / ``-col``) pair must be specified. Additional pairs may be supplied to overlay multiple curves.
+
+ 2. Column indices are 1-based. If the source recorder uses ``-time``, column 1 is typically time.
+
+ 3. This recorder requires a build with graphics support. It is available in the Tcl interpreter; there is no direct OpenSeesPy equivalent.
+
+ 4. The only way to save the plotted image is a screen capture.
+
+ 5. | The function returns a value:
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
+ | FAILURE: **-1** recorder command failed (read the log)
+
+.. admonition:: Example
+
+ The following example plots column 2 (displacement) versus column 1 (time) from a node recorder output file.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ recorder Node -file node.out -time -node 1 -dof 2 disp
+ recorder Plot node.out "Nodal Displacement" 10 10 400 400 -columns 1 2
+
+Code developed by: |fmk|
diff --git a/source/user/manual/output/VTK.rst b/source/user/manual/output/VTK.rst
new file mode 100644
index 00000000..0e7da650
--- /dev/null
+++ b/source/user/manual/output/VTK.rst
@@ -0,0 +1,59 @@
+.. _vtkRecorder:
+
+VTK Recorder
+^^^^^^^^^^^^
+
+The VTK recorder writes the model mesh and selected response quantities to VTK XML format for visualization in `ParaView `_. It creates a directory named after the recorder base name, writes a ParaView collection file (``.pvd``), and stores time-step data in ``.vtu`` files.
+
+For newer workflows, consider also the :ref:`pvdRecorder`, which provides similar ParaView output.
+
+.. function:: recorder vtk $baseName $respType1 $respType2 ... <-precision $nSD> <-dT $deltaT> <-rTolDt $rTol>
+ :noindex:
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $baseName, |string|, base name for the output directory and ``.pvd`` collection file
+ $respType, |string|, response quantity to record (see note 2)
+ $nSD, |integer|, output precision (optional, default 10)
+ $deltaT, |float|, minimum time between writes (optional)
+ $rTol, |float|, relative tolerance on $deltaT (optional, default 0.00001)
+
+.. note::
+
+ 1. Valid nodal response types include:
+
+ .. code:: none
+
+ disp
+ disp2
+ disp3
+ vel
+ accel
+ reaction
+ reaction2
+ reaction3
+ mass
+ unbalancedLoad
+ eigen $mode
+
+ 2. Element response may be requested with ``eleResponse`` followed by the same arguments used in an :ref:`elementRecorder` (for example, ``eleResponse localForce``).
+
+ 3. This recorder is available in the Tcl interpreter. It is not registered in the standard OpenSeesPy recorder map; use Tcl or the :ref:`pvdRecorder` / :ref:`gmshRecorder` for Python-based visualization workflows.
+
+ 4. Open ``$baseName.pvd`` in ParaView to animate results over time.
+
+ 5. | The function returns a value:
+ | SUCCESS: **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
+ | FAILURE: **-1** recorder command failed (read the log)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ recorder vtk results disp accel -dT 0.1
+
+Code developed by: |fmk|
diff --git a/source/user/manual/output/recorder.rst b/source/user/manual/output/recorder.rst
index 7882b2ec..5e60622f 100644
--- a/source/user/manual/output/recorder.rst
+++ b/source/user/manual/output/recorder.rst
@@ -44,7 +44,7 @@ The type of recorder created and the additional arguments required depends on th
The function returns a value:
- **>0** an integer tag that can be used as a handle on the recorder for the remove a recorder in the :ref:`remove`.
+ **>0** an integer tag that can be used as a handle to remove a recorder with the :ref:`remove` command.
**-1** recorder command failed if integer -1 returned.
diff --git a/source/user/manual/section/BidirectionalSection.rst b/source/user/manual/section/BidirectionalSection.rst
new file mode 100644
index 00000000..3f409896
--- /dev/null
+++ b/source/user/manual/section/BidirectionalSection.rst
@@ -0,0 +1,37 @@
+.. _BidirectionalSection:
+
+BidirectionalSection
+^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a bidirectional elastoplastic section model with combined isotropic and kinematic hardening. The command name in OpenSees is ``Bidirectional``.
+
+.. function:: section Bidirectional $secTag $E $sigY $Hiso $Hkin <$code1 $code2>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $E, |float|, elastic modulus
+ $sigY, |float|, yield stress
+ $Hiso, |float|, isotropic hardening modulus
+ $Hkin, |float|, kinematic hardening modulus
+ $code1 $code2, |string|, optional section response components (default ``Vy`` and ``P``)
+
+Valid response codes are ``P``, ``Mz``, ``My``, ``Vy``, ``Vz``, and ``T``.
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section Bidirectional 1 1000.0 10.0 0.0 100.0 Vy P
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('Bidirectional', 1, 1000.0, 10.0, 0.0, 100.0, 'Vy', 'P')
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/ElasticMembranePlateSection.rst b/source/user/manual/section/ElasticMembranePlateSection.rst
new file mode 100644
index 00000000..4dea10c1
--- /dev/null
+++ b/source/user/manual/section/ElasticMembranePlateSection.rst
@@ -0,0 +1,35 @@
+.. _ElasticMembranePlateSection:
+
+ElasticMembranePlateSection
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs an elastic membrane-plate section for shell elements. The section provides both in-plane membrane stiffness and out-of-plane plate bending stiffness.
+
+.. function:: section ElasticMembranePlateSection $secTag $E $nu $h <$rho> <$EpModifier>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $E, |float|, Young's modulus for membrane action
+ $nu, |float|, Poisson's ratio
+ $h, |float|, section thickness
+ $rho, |float|, mass density (optional, default 0)
+ $EpModifier, |float|, multiplier applied to $E for out-of-plane plate bending stiffness (optional, default 1)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section ElasticMembranePlateSection 1 3000.0 0.2 10.0 0.0 1.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('ElasticMembranePlateSection', 1, 3000.0, 0.2, 10.0, 0.0, 1.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/section/Isolator2springSection.rst b/source/user/manual/section/Isolator2springSection.rst
new file mode 100644
index 00000000..27e69045
--- /dev/null
+++ b/source/user/manual/section/Isolator2springSection.rst
@@ -0,0 +1,38 @@
+.. _Isolator2springSection:
+
+Isolator2springSection
+^^^^^^^^^^^^^^^^^^^^^^
+
+This command constructs a two-spring isolator section based on the Koh and Kelly model for elastomeric bearing buckling, with optional material nonlinearity and strength degradation. In Tcl the command is ``Iso2spring``; in Python it is ``Isolator2spring``.
+
+.. function:: section Iso2spring $secTag $tol $k1 $Fy $k2 $kv $hb $Pe <$Po>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $tol, |float|, convergence tolerance for the internal solution
+ $k1, |float|, pre-buckling stiffness
+ $Fy, |float|, yield force
+ $k2, |float|, post-buckling stiffness
+ $kv, |float|, vertical stiffness
+ $hb, |float|, bearing height
+ $Pe, |float|, Euler buckling load
+ $Po, |float|, axial load (optional, default 0)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section Iso2spring 1 1.0e-6 100.0 50.0 10.0 500.0 6.0 200.0 0.0
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('Isolator2spring', 1, 1.0e-6, 100.0, 50.0, 10.0, 500.0, 6.0, 200.0, 0.0)
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/section/NDFiberSection.rst b/source/user/manual/section/NDFiberSection.rst
new file mode 100644
index 00000000..0ec4feff
--- /dev/null
+++ b/source/user/manual/section/NDFiberSection.rst
@@ -0,0 +1,48 @@
+.. _NDFiberSection:
+
+NDFiberSection
+^^^^^^^^^^^^^^
+
+This command constructs a fiber section in which each fiber uses an nD material in a **beam-fiber** stress state. Unlike a standard ``Fiber`` section (Bernoulli theory with uniaxial materials), an ``NDFiber`` section captures **axial-shear** interaction in 2D and **axial-shear-torsion** interaction in 3D. Section geometry is defined with ``patch``, ``layer``, and ``fiber`` subcommands inside a braced block, the same way as for a ``Fiber`` section.
+
+.. function:: section NDFiber $secTag { $subcommands }
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $subcommands, |list|, braced block of ``patch`` ``layer`` and ``fiber`` commands referencing nD materials
+
+.. note::
+
+ 1. **Direct beam-fiber materials.** ``J2BeamFiber`` and ``ElasticIsotropicBeamFiber`` are nD materials formulated directly for the beam-fiber stress condition and are the usual choice for steel or other J2 beam fibers.
+
+ 2. **Wrapping general nD materials.** A three-dimensional nD material can also be placed in an ``NDFiber`` section. OpenSees obtains a ``BeamFiber2d`` (2D) or ``BeamFiber`` (3D) copy by wrapping the material with ``BeamFiberMaterial2d`` or ``BeamFiberMaterial``, which performs static condensation to the beam-fiber stress state. This approach can be expensive for complicated constitutive models.
+
+ 3. Use ``section NDFiberWarping`` instead of ``section NDFiber`` when warping behavior is required in 2D models.
+
+ 4. Further discussion and verification examples are available in `Fibers of Higher Dimensions `_ on OpenSees Digital.
+
+.. admonition:: Example
+
+ The following example defines a 3D ``NDFiber`` section for a hollow steel tube using ``J2BeamFiber`` and a circular ``patch``.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ nDMaterial J2BeamFiber 1 29000.0 0.3 60.0 0.0 145.73
+ section NDFiber 1 {
+ patch circ 1 8 4 0.0 0.0 2.25 2.50 0.0 360.0
+ }
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ nDMaterial('J2BeamFiber', 1, 29000.0, 0.3, 60.0, 0.0, 145.73)
+ section('NDFiber', 1)
+ patch('circ', 1, 8, 4, 0.0, 0.0, 2.25, 2.50, 0.0, 360.0)
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/ParallelSection.rst b/source/user/manual/section/ParallelSection.rst
new file mode 100644
index 00000000..5888efde
--- /dev/null
+++ b/source/user/manual/section/ParallelSection.rst
@@ -0,0 +1,31 @@
+.. _ParallelSection:
+
+ParallelSection
+^^^^^^^^^^^^^^^
+
+This command constructs a section that acts in parallel with two or more existing sections. The resultant section deformation is the sum of the component section deformations, and the section forces are shared among the components.
+
+.. function:: section Parallel $secTag $secTag1 $secTag2 ...
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag for the parallel section
+ $secTag1 $secTag2 ..., |listInt|, tags of previously defined sections connected in parallel
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section Parallel 3 1 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('Parallel', 3, 1, 2)
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/PlateFiberSection.rst b/source/user/manual/section/PlateFiberSection.rst
new file mode 100644
index 00000000..7a33ee47
--- /dev/null
+++ b/source/user/manual/section/PlateFiberSection.rst
@@ -0,0 +1,33 @@
+.. _PlateFiberSection:
+
+PlateFiberSection
+^^^^^^^^^^^^^^^^^
+
+This command constructs a membrane-plate fiber section for shell elements. The section integrates an nD material through the thickness using Lobatto or Gauss integration.
+
+.. function:: section PlateFiber $secTag $matTag $h <$integrationType>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $matTag, |integer|, tag of the nD material
+ $h, |float|, section thickness
+ $integrationType, |string|, optional integration rule: ``Lobatto`` (default), ``Gauss``, or ``Legendre``
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section PlateFiber 1 2 10.0 Lobatto
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('PlateFiber', 1, 2, 10.0, 'Lobatto')
+
+Code Developed by: |fmk|
diff --git a/source/user/manual/section/RCSection.rst b/source/user/manual/section/RCSection.rst
new file mode 100644
index 00000000..b22bc226
--- /dev/null
+++ b/source/user/manual/section/RCSection.rst
@@ -0,0 +1,42 @@
+.. _RCSection:
+
+RCSection
+^^^^^^^^^
+
+This command constructs a reinforced-concrete rectangular section by discretizing the cross section into fibers. The command name in OpenSees is ``RCSection2d``.
+
+.. function:: section RCSection2d $secTag $coreTag $coverTag $steelTag $h $b $cover $Atop $Abottom $Aside $nfcore $nfcover $nfs
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $coreTag, |integer|, uniaxial material tag for the concrete core
+ $coverTag, |integer|, uniaxial material tag for the concrete cover
+ $steelTag, |integer|, uniaxial material tag for the longitudinal reinforcement
+ $h, |float|, section depth
+ $b, |float|, section width
+ $cover, |float|, concrete cover thickness
+ $Atop, |float|, total area of top reinforcement steel
+ $Abottom, |float|, total area of bottom reinforcement steel
+ $Aside, |float|, total area of side reinforcement steel
+ $nfcore, |integer|, number of fibers in the core
+ $nfcover, |integer|, number of fibers in each cover region
+ $nfs, |integer|, number of fibers used to discretize each steel layer
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section RCSection2d 1 1 2 3 24.0 18.0 1.5 4.0 4.0 0.0 10 2 4
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('RCSection2d', 1, 1, 2, 3, 24.0, 18.0, 1.5, 4.0, 4.0, 0.0, 10, 2, 4)
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/SectionAggregator.rst b/source/user/manual/section/SectionAggregator.rst
new file mode 100644
index 00000000..c48c8cea
--- /dev/null
+++ b/source/user/manual/section/SectionAggregator.rst
@@ -0,0 +1,36 @@
+.. _SectionAggregator:
+
+SectionAggregator
+^^^^^^^^^^^^^^^
+
+This command constructs a section by aggregating one or more uniaxial materials with an optional base section. Each uniaxial material is assigned to a specific section force-deformation component. The command name in OpenSees is ``Aggregator`` (alias ``AddDeformation``).
+
+.. function:: section Aggregator $secTag $matTag1 $code1 ... <-section $baseSecTag>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $matTag1 $code1 ..., |list|, pairs of uniaxial material tag and section response code
+ $baseSecTag, |integer|, optional tag of an existing section providing the remaining response components
+
+Valid response codes ($code) are ``P``, ``Mz``, ``My``, ``Vy``, ``Vz``, and ``T``.
+
+.. admonition:: Example
+
+ The following example adds a uniaxial torsion spring to an existing fiber section.
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section Aggregator 2 5 T -section 1
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('Aggregator', 2, 5, 'T', '-section', 1)
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/UniaxialSection.rst b/source/user/manual/section/UniaxialSection.rst
new file mode 100644
index 00000000..93a248a6
--- /dev/null
+++ b/source/user/manual/section/UniaxialSection.rst
@@ -0,0 +1,32 @@
+.. _UniaxialSection:
+
+UniaxialSection
+^^^^^^^^^^^^^^^
+
+This command constructs a section with a single force-deformation component modeled by one uniaxial material. The command name in OpenSees is ``Uniaxial``.
+
+.. function:: section Uniaxial $secTag $matTag $code
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $matTag, |integer|, tag of the uniaxial material
+ $code, |string|, section response component: ``P``, ``Mz``, ``My``, ``Vy``, ``Vz``, or ``T``
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section Uniaxial 1 3 Mz
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('Uniaxial', 1, 3, 'Mz')
+
+Code Developed by: |mhs|
diff --git a/source/user/manual/section/WideFlangeSection.rst b/source/user/manual/section/WideFlangeSection.rst
new file mode 100644
index 00000000..88fb5430
--- /dev/null
+++ b/source/user/manual/section/WideFlangeSection.rst
@@ -0,0 +1,42 @@
+.. _WideFlangeSection:
+
+WideFlangeSection
+^^^^^^^^^^^^^^^^^
+
+This command constructs a wide-flange (I-shaped) steel section by discretizing the cross section into fibers. The command name in OpenSees is ``WFSection2d`` (alias ``WSection2d``).
+
+.. function:: section WFSection2d $secTag $matTag $d $tw $bf $tf $nfdw $nftf <$nfbf $nftw> <-GJ $GJ> <-nd $shape> <-warping>
+
+.. csv-table::
+ :header: "Argument", "Type", "Description"
+ :widths: 10, 10, 40
+
+ $secTag, |integer|, unique section tag
+ $matTag, |integer|, tag of uniaxial or nD material assigned to all fibers
+ $d, |float|, section depth
+ $tw, |float|, web thickness
+ $bf, |float|, flange width
+ $tf, |float|, flange thickness
+ $nfdw, |integer|, number of fibers along the web depth
+ $nftf, |integer|, number of fibers along each flange thickness
+ $nfbf, |integer|, number of fibers along each flange width (optional, default 1)
+ $nftw, |integer|, number of fibers along the web thickness (optional, default 1)
+ $GJ, |float|, torsional rigidity (3D uniaxial models only)
+ $shape, |float|, nD fiber shape factor (used with ``-nd``)
+ ``-warping``, |string|, enable warping formulation (3D uniaxial models with ``-GJ``)
+
+.. admonition:: Example
+
+ 1. **Tcl Code**
+
+ .. code-block:: tcl
+
+ section WFSection2d 1 1 14.0 0.44 14.5 0.71 16 2
+
+ 2. **Python Code**
+
+ .. code-block:: python
+
+ ops.section('WFSection2d', 1, 1, 14.0, 0.44, 14.5, 0.71, 16, 2)
+
+Code Developed by: |mhs|