tadd system of equations for 3d beam - slidergrid - grid of elastic sliders on a frictional surface
 (HTM) git clone git://src.adamsgaard.dk/slidergrid
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 897289bb9cc3233e556ccd4b863cdfaf4dea29b0
 (DIR) parent 01b81b008518de59f62d4471b397364dd6b78f9a
 (HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
       Date:   Mon,  2 May 2016 09:58:42 -0700
       
       add system of equations for 3d beam
       
       Diffstat:
         M doc/doc.pdf                         |       0 
         M doc/doc.tex                         |     295 ++++++++++++++++++++++++++++---
         M slidergrid/slider.h                 |       4 ++++
       
       3 files changed, 275 insertions(+), 24 deletions(-)
       ---
 (DIR) diff --git a/doc/doc.pdf b/doc/doc.pdf
       Binary files differ.
 (DIR) diff --git a/doc/doc.tex b/doc/doc.tex
       t@@ -1,4 +1,4 @@
       -\documentclass[11pt]{article}
       +\documentclass[11pt,a4paper]{article}
        
        \usepackage{a4wide}
        
       t@@ -14,6 +14,7 @@
        %\usepackage{subfig}
        %\usepackage{rotating}
        \usepackage{amsmath}
       +\setcounter{MaxMatrixCols}{20}  % allow more than 10 matrix columns
        
        \usepackage[T1]{fontenc} % Font encoding
        \usepackage{charter} % Serif body font
       t@@ -37,7 +38,7 @@ maxcitenames=2, backend=bibtex8]{biblatex}
        \begin{document}
        
        \title{Lagrangian model of the elastic, viscous and plastic deformation of a 
       -    series of bonded points moving on a frictional surface}
       +    series of bonded nodes moving on a frictional surface}
        
        \author{Anders Damsgaard}
        \date{{\small Institute of Geophysics and Planetary Physics\\Scripps Institution 
       t@@ -46,54 +47,300 @@ of Oceanography\\University of California, San Diego}\\[3mm] Last revision:
        
        \maketitle
        
       -
        \section{Methods}
       -The Lagrangian points are connected with visco-elastic beams which are resistive 
       -to relative translational or rotational movement between a pair of bonded 
       -points.  At the beginning of each time step the accumulated strain on each 
       -inter-point bond is determined by considering the relative motion of the bonded 
       -points.  The bond deformation is decomposed per kinematic degree of freedom, 
       -andis determined by an incremental method derived from \citet{Potyondy2004}.  
       -The strain can be decomposed into bond tension and compression, bond shearing, 
       -bond twisting, and bond bending.  The accumulated strains are used to determine 
       -the magnitude of the forces and torques resistive to the deformation.
       +The method is derived from \citet{Schlangen1996}, \citet{Radjai2011}  and 
       +\citet{Potyondy2004} but is, relative to the cited works, adapted for three 
       +spatial dimensions and non-linear properties.
       +
       +The Lagrangian nodes are connected with visco-elastic beam elements which are 
       +resistive to relative translational or rotational movement.  The kinematic 
       +degrees of freedom are determined by explicit integration of Newton's second law 
       +of motion for translation and rotation.  For a point $i$ with bonded 
       +interactions to nodes $j\in N_c$, the translational accelerations 
       +($\boldsymbol{a}$) are found from the sums of forces:
       +\begin{equation}
       +    \boldsymbol{a}_i =
       +    \frac{
       +    \boldsymbol{f}_i^\text{d}
       +    + \boldsymbol{f}_i^\text{f}
       +    + \sum^{N_c}_j \left[
       +        \boldsymbol{f}_{i,j}^\text{p} +
       +        \boldsymbol{f}_{i,j}^\text{s}
       +    \right]
       +}{m_i}
       +    + \boldsymbol{g}
       +\label{eq:n2-tran}
       +\end{equation}
       +where $\boldsymbol{f}_i^\text{d}$ is the gravitational driving stress due to 
       +surface slope, $\boldsymbol{g}$ is the gravitational acceleration, and
       +$\boldsymbol{f}_i^\text{f}$ is the frictional force provided if the point is 
       +resting on the lower surface. Bonded interaction with another point $j$ 
       +contributes to translational acceleration through bond-parallel and bond-normal 
       +shear forces, $\boldsymbol{f}_{i,j}^\text{p}$ and 
       +$\boldsymbol{f}_{i,j}^\text{s}$, respectively.
       +
       +The angular accelerations ($\boldsymbol{\alpha}$) are found from the sums of 
       +torques:
       +\begin{equation}
       +    \boldsymbol{\alpha}_i =
       +    \sum^{N_c}_j
       +    \left[
       +        \frac{\boldsymbol{t}^\text{s}_{i,j}}{I_i} +
       +        \frac{\boldsymbol{t}^\text{t}_{i,j}}{J_{i,i}}
       +    \right]
       +\label{eq:n2-ang}
       +\end{equation}
       +here, $\boldsymbol{t}^\text{s}$ is the torque resulting from shearing motion of 
       +the bond, while the torque $\boldsymbol{t}^{t}$ results from relative twisting.
       +$I_i$ is the local moment of inertia at the point, and $J_{i,j}$ is polar moment 
       +of inertia of the bond.
       +
       +
       +At the beginning of each time step the accumulated strain on each inter-point 
       +bond is determined by considering the relative motion of the bonded nodes.  The 
       +bond deformation is decomposed per kinematic degree of freedom, andis determined 
       +by an incremental method derived from \citet{Potyondy2004}.  The strain can be 
       +decomposed into bond tension and compression, bond shearing, bond twisting, and 
       +bond bending.  The accumulated strains are used to determine the magnitude of 
       +the forces and torques resistive to the deformation.
        
        The deformation and reactive forces are determined relative to the orientation 
        of the bond.  Common geometrical vectors include the inter-distance vector 
       -$\boldsymbol{d}$ between points $\boldsymbol{p}_i$ and $\boldsymbol{p}_j$:
       +$\boldsymbol{d}$ between nodes $\boldsymbol{p}_i$ and $\boldsymbol{p}_j$:
        \begin{equation}
            \boldsymbol{d}_{i,j} = \boldsymbol{p}_i - \boldsymbol{p}_j
        \end{equation}
       -which in normalized form constitutes the bond-parallel normal vector:
       +which in normalized form constitutes the bond-parallel unit vector:
        \begin{equation}
            \boldsymbol{n}_{i,j} = \frac{\boldsymbol{d}_{i,j}}{||\boldsymbol{d}_{i,j}||}
        \end{equation}
        
       -The points are moving by translational and rotational velocities.  The combined 
       -relative velocity between the points is found as \citep{Hinrichsen2004, 
       +The nodes move by translational and rotational velocities.  The combined 
       +relative velocity between the nodes is found as \citep[e.g.][]{Hinrichsen2004, 
            Luding2008}:
        \begin{equation}
            \boldsymbol{v}_{i,j} = \boldsymbol{v}_i - \boldsymbol{v}_j +
       -    \frac{d_{i,j}}{2} \times \omega_i +
       -    \frac{d_{i,j}}{2} \times \omega_j
       +    \frac{\boldsymbol{d}_{i,j}}{2} \times \boldsymbol{\omega}_i +
       +    \frac{\boldsymbol{d}_{i,j}}{2} \times \boldsymbol{\omega}_j
       +\end{equation}
       +The velocity can be decomposed into spatial components relative to the bond 
       +orientation, e.g.\ the bond-parallel and bond-shear velocity, respectively:
       +\begin{equation}
       +    v^\text{p}_{i,j} = \boldsymbol{v}_{i,j} \cdot \boldsymbol{n}_{i,j}
       +\end{equation}
       +\begin{equation}
       +    \boldsymbol{v}^\text{s}_{i,j} = \boldsymbol{v}_{i,j} - \boldsymbol{n}_{i,j}
       +    \left(
       +        \boldsymbol{v}_{i,j}
       +        \cdot
       +        \boldsymbol{n}_{i,j}
       +    \right)
        \end{equation}
        
       +The axial strain is the bond-parallel deformation and is determined as the 
       +change in inter-point length relative to the initial distance:
       +\begin{equation}
       +    \epsilon_a = \frac{
       +        (\boldsymbol{d}_{i,j} - \boldsymbol{d}^0_{i,j}) \cdot n_{i,j}}
       +        {||\boldsymbol{d}^0_{i,j}||}
       +\end{equation}
       +The cross-sectional area of a bond ($A_{i,j}$) varies with axial strain 
       +($\epsilon_a$) scaled by Poissons ratio $\nu$:
       +\begin{equation}
       +    A_{i,j} = A^0_{i,j}
       +    - A^0_{i,j}
       +    \left(
       +        1 -
       +        \left(
       +            1 + \epsilon_a
       +        \right)^{-\nu}
       +    \right)
       +\end{equation}
       +The mass of point $i$ is defined as the half of the mass of each of its bonds:
       +\begin{equation}
       +    m_i = \frac{\rho}{2} \sum^{N_c}_j A^0_{i,j} ||\boldsymbol{d}^0_{i,j}||
       +\end{equation}
       +The density ($\rho$) is adjusted so that the total mass of all nodes matches the 
       +desired value.
        
        
       -
       -\subsection{Bond tension and compression}
       +\subsection{Resistance to tension and compression}
       +Bond tension and compression takes place when the relative translational 
       +distance between a pair of bonded nodes changes, and is the most important 
       +deformational mode in this model.  The current axial strain is determined with a 
       +second-order central difference scheme.  It is determined from the previous 
       +point positions and projected future positions:
       +\begin{equation}
       +    \Delta d^t_{i,j} = \frac{d_{i,j}^{*,t+\Delta t} - d_{i,j}^{t-\Delta t}}{2}
       +\end{equation}
       +The future point distance in the above ($d_{i,j}^{*,t+\Delta}$) is found by 
       +applying a second-order Taylor expansion:
       +\begin{equation}
       +    \boldsymbol{p}_i^{*,t+\Delta t} =
       +    \boldsymbol{p}_i^{t} +
       +    \boldsymbol{v}_i^{t} \Delta t +
       +    \frac{1}{2}\boldsymbol{a}_i^{t} \Delta t^2
       +\end{equation}
        
        
       -\subsection{Bond shear}
        
       -\subsection{Bond twist}
       +The bond-parallel force is determined from Young's modulus ($E$) and the 
       +cross-sectional area ($A_{i,j}$) of the bond:
       +\begin{equation}
       +    \boldsymbol{f}^{i,j}_\text{p} =
       +    \frac{E A_{i,j}}{|| \boldsymbol{d}^0_{i,j} ||}
       +    \left(
       +        \boldsymbol{d}_{i,j} -
       +        \boldsymbol{d}^0_{i,j}
       +    \right)
       +\end{equation}
        
       -\subsection{Bond bend}
       +\subsection{Shear resistance}
       +The bond-shear force is determined incrementally for the duration of the 
       +interaction:
       +\begin{equation}
       +    \boldsymbol{f}^{i,j}_\text{s} = \int^t \Delta \boldsymbol{f}^{i,j}_\text{s} 
       +    %\, dt
       +\end{equation}
       +where the increment in shear force is determined from the shear modulus ($G$),
       +the cross-sectional area ($A_{i,j}$) of the bond, and the
       +\begin{equation}
       +    \Delta \boldsymbol{f}^{i,j}_\text{s} =
       +    \frac{G A_{i,j}}{||\boldsymbol{d}^{i,j}||}
       +    \Delta \boldsymbol{d}^{i,j}_\text{s}
       +\end{equation}
        
       -\subsection{Temporal integration}
       +\subsection{Twisting resistance}
        
       +\subsection{Bending resistance}
        
       +\subsection{Temporal integration}
       +Once the force and torque sum components at time $t$ have been determined, the 
       +kinematic degrees of freedom at time $t+\Delta t$ can be found by explicit 
       +temporal integration of moment balance equations~\ref{eq:n2-tran} 
       +and~\ref{eq:n2-ang}.
       +We use an integration scheme based on the third-order Taylor expansion, which 
       +results in a truncation error on the order of $O(\Delta t^4)$ for positions and 
       +$O(\Delta t^3)$ for velocities.  This scheme includes changes in acceleration as 
       +the highest order term, which are approximated by backwards differences.  For 
       +the translational degrees of freedom:
       +\begin{equation}
       +    \boldsymbol{p}^i_{t+\Delta t} =
       +    \boldsymbol{p}^i_{t} +
       +    \boldsymbol{v}^i_{t} \Delta t +
       +    \frac{1}{2} \boldsymbol{a}^i_{t} \Delta t^2 +
       +    \frac{1}{6} \frac{\boldsymbol{a}^i_{t}
       +        - \boldsymbol{a}^i_{t - \Delta t}}{\Delta t} \Delta t^3
       +\end{equation}
       +\begin{equation}
       +    \boldsymbol{v}^i_{t+\Delta t} =
       +    \boldsymbol{v}^i_{t} +
       +    \boldsymbol{a}^i_{t} \Delta t +
       +    \frac{1}{2} \frac{\boldsymbol{a}^i_{t}
       +        - \boldsymbol{a}^i_{t - \Delta t}}{\Delta t} \Delta t^2
       +\end{equation}
       +At $t=0$ the acceleration change term is defined as zero.  The angular degrees 
       +of freedom are found correspondingly:
       +\begin{equation}
       +    \boldsymbol{\Omega}^i_{t+\Delta t} =
       +    \boldsymbol{\Omega}^i_{t} +
       +    \boldsymbol{\omega}^i_{t} \Delta t +
       +    \frac{1}{2} \boldsymbol{\alpha}^i_{t} \Delta t^2 +
       +    \frac{1}{6} \frac{\boldsymbol{\alpha}^i_{t}
       +        - \boldsymbol{\alpha}^i_{t - \Delta t}}{\Delta t} \Delta t^3
       +\end{equation}
       +\begin{equation}
       +    \boldsymbol{\omega}^i_{t+\Delta t} =
       +    \boldsymbol{\omega}^i_{t} +
       +    \boldsymbol{\alpha}^i_{t} \Delta t +
       +    \frac{1}{2} \frac{\boldsymbol{\alpha}^i_{t}
       +        - \boldsymbol{\alpha}^i_{t - \Delta t}}{\Delta t} \Delta t^2
       +\end{equation}
        
       +The numerical time step $\Delta t$ is found by considering the largest elastic 
       +stiffness in the system relative to the smallest mass:
       +\begin{equation}
       +    \Delta t =
       +    \epsilon
       +    \left[
       +        \min (m_i)^{-1}
       +        \max \left(
       +            \max \left(
       +                \frac{E A_{i,j}}{||\boldsymbol{d}_{0}^{i,j}||}
       +            \right)
       +            ,
       +            \max \left(
       +                \frac{G A_{i,j}}{||\boldsymbol{d}^{i,j}||}
       +            \right)
       +        \right)
       +    \right]^{-1/2}
       +\end{equation}
       +where $\epsilon$ is a safety factor related to the geometric structure of the 
       +bonded network.  We use $\epsilon = 0.07$.
       +
       +The total force ($\boldsymbol{f}$) and torque ($\boldsymbol{t}$) on two nodes 
       +($i$ and $j$) with translational ($\boldsymbol{p}$) and angular 
       +($\boldsymbol{\Omega}$) positions  interconnected with a three-dimensional 
       +elastic beam can be expressed as the following set of equations.  The 
       +interaction accounts for resistance to tension and compression, shear, torsion, 
       +and bending.  The symmetrical matrix on the right hand side constitutes the 
       +\emph{stiffness matrix} \citep{Schlangen1996, Austrell2004}:
       +\begin{equation}
       +    \begin{bmatrix}
       +        f_\text{x}^i\\[0.6em]
       +        f_\text{y}^i\\[0.6em]
       +        f_\text{z}^i\\[0.6em]
       +        t_\text{x}^i\\[0.6em]
       +        t_\text{y}^i\\[0.6em]
       +        t_\text{z}^i\\[0.6em]
       +        f_\text{x}^j\\[0.6em]
       +        f_\text{y}^j\\[0.6em]
       +        f_\text{z}^j\\[0.6em]
       +        t_\text{x}^j\\[0.6em]
       +        t_\text{y}^j\\[0.6em]
       +        t_\text{z}^j\\
       +    \end{bmatrix}
       +    =
       +    \begin{bmatrix}
       +        \frac{EA}{L} & 0 & 0 & 0 & 0 & 0 & \frac{-EA}{L} & 0 & 0 & 0 & 0 & 0\\[0.5em]
       +        0 & \frac{12EI_\text{z}}{L^3} & 0 & 0 & 0 & \frac{6EI_\text{z}}{L^2} & 0 & \frac{-12EI_\text{z}}{L^3} & 0 & 0 & 0 & \frac{6EI_\text{z}}{L^2}\\[0.5em]
       +        0 & 0 & \frac{12EI_\text{y}}{L^3} & 0 & \frac{-6EI_\text{y}}{L^2} & 0 & 0 & 0 & \frac{-12EI_\text{y}}{L^3} & 0 & \frac{-6EI_\text{y}}{L^2} & 0\\[0.5em]
       +        0 & 0 & 0 & \frac{GK_\text{v}}{L} & 0 & 0 & 0 & 0 & 0 & \frac{-GK_\text{v}}{L} & 0 & 0\\[0.5em]
       +        0 & 0 & \frac{-6EI_\text{y}}{L^2} & 0 & \frac{4EI_\text{y}}{L} & 0 & 0 & 0 & \frac{6EI_\text{y}}{L^2} & 0 & \frac{2EI_\text{y}}{L} & 0\\[0.5em]
       +        0 & \frac{6EI_\text{z}}{L^2} & 0 & 0 & 0 & \frac{4EI_\text{z}}{L} & 0 & \frac{-6EI_\text{z}}{L^2} & 0 & 0 & 0 & \frac{2EI_\text{z}}{L}\\[0.5em]
       +        \frac{-EA}{L} & 0 & 0 & 0 & 0 & 0 & \frac{EA}{L} & 0 & 0 & 0 & 0 & 0\\[0.5em]
       +        0 & \frac{-12EI_\text{z}}{L^3} & 0 & 0 & 0 & \frac{-6EI_\text{z}}{L^2} & 0 & \frac{12EI_\text{z}}{L^3} & 0 & 0 & 0 & \frac{-6EI_\text{z}}{L^2}\\[0.5em]
       +        0 & 0 & \frac{-12EI_\text{y}}{L^3} & 0 & \frac{-6EI_\text{y}}{L^2} & 0 & 0 & 0 & \frac{12EI_\text{y}}{L^3} & 0 & \frac{6EI_\text{y}}{L^2} & 0\\[0.5em]
       +        0 & 0 & 0 & \frac{-GK_\text{v}}{L} & 0 & 0 & 0 & 0 & 0 & \frac{GK_\text{v}}{L} & 0 & 0\\[0.5em]
       +        0 & 0 & \frac{-6EI_\text{y}}{L^2} & 0 & \frac{2EI_\text{y}}{L} & 0 & 0 & 0 & \frac{6EI_\text{y}}{L^2} & 0 & \frac{4EI_\text{y}}{L} & 0\\[0.5em]
       +        0 & \frac{6EI_\text{z}}{L^2} & 0 & 0 & 0 & \frac{2EI_\text{z}}{L} & 0 & \frac{-6EI_\text{z}}{L^2} & 0 & 0 & 0 & \frac{4EI_\text{z}}{L}\\
       +    \end{bmatrix}
       +    \begin{bmatrix}
       +        p_\text{x}^i\\[0.6em]
       +        p_\text{y}^i\\[0.6em]
       +        p_\text{z}^i\\[0.6em]
       +        \Omega_\text{x}^i\\[0.6em]
       +        \Omega_\text{y}^i\\[0.6em]
       +        \Omega_\text{z}^i\\[0.6em]
       +        p_\text{x}^j\\[0.6em]
       +        p_\text{y}^j\\[0.6em]
       +        p_\text{z}^j\\[0.6em]
       +        \Omega_\text{x}^j\\[0.6em]
       +        \Omega_\text{y}^j\\[0.6em]
       +        \Omega_\text{z}^j\\
       +    \end{bmatrix}
       +\end{equation}
       +$E$ is Young's modulus, $G$ is the shear stiffnes, $A$ is the beam 
       +cross-sectional area, and $L$ is the original beam length. $I_\text{y}$ is the 
       +moment of inertia normal to the beam in the $\bar{y}$-direction, and 
       +$I_\text{z}$ is the moment of inertia normal to the beam in the 
       +$\bar{z}$-direction.  $K_\text{v}$ is the Saint-Venant torsional stiffness.
       +
       +% Torsional constant:
       +% https://en.wikipedia.org/wiki/Torsion_constant
       +% http://mathworld.wolfram.com/TorsionalRigidity.html
       +% http://physics.stackexchange.com/questions/83148/where-i-can-find-a-torsional-stiffness-table-for-different-types-of-stainless-st
       +% St Venant torsion: K_v = 1/G  (Austrell et al. 2004, table 3) Does it make sense?
        
        
        
 (DIR) diff --git a/slidergrid/slider.h b/slidergrid/slider.h
       t@@ -31,6 +31,10 @@ typedef struct {
            // moment of inertia [kg m*m]
            Float moment_of_inertia;
        
       +    // Macroscopic mechanical properties
       +    Float youngs_modulus;
       +    Float shear_modulus;
       +
            // inter-slider bond-parallel Kelvin-Voigt contact model parameters
            Float bond_parallel_kv_stiffness;  // Hookean elastic stiffness [N/m]
            Float bond_parallel_kv_viscosity;  // viscosity [N/(m*s)]