Skip to content

Commit

Permalink
v3.1 (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
TLCFEM authored Sep 1, 2023
1 parent cccf101 commit bf57767
Show file tree
Hide file tree
Showing 34 changed files with 351 additions and 37 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ jobs:
- run: git config --global user.name "Theodore Chang"
- run: git config --global user.email "tlcfem@gmail.com"
- run: git pull
- run: mike deploy 3.0
- run: mike deploy 3.1
- run: git push origin gh-pages
17 changes: 17 additions & 0 deletions docs/Collection/Configure/analyze.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,20 @@ All steps will be analysed. It is possible to define subsequent steps after perf
analyze
analyse
```

[available from v3.1]

Before executing the analysis, the application checks if there are any warnings or errors.
If any, the analysis will not be performed.

It is possible to ignore warnings and errors by using the `--ignore-warnings` or `--ignore-errors` option.
Given that errors generally imply that the model is incorrect, it is not recommended to ignore errors.

Use the following syntax to ignore warnings and errors.

## Syntax

```
analyze [--ignore-warnings] [--ignore-errors]
analyse [--ignore-warnings] [--ignore-errors]
```
117 changes: 117 additions & 0 deletions docs/Collection/Process/lis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Iterative Solver

[available from v3.1]

To use iterative solvers, one shall use the following settings:

```text
set sparse_mat true
set system_solver lis [1]
# [1] string, lis solver options
```

The [`Lis`](https://www.ssisc.org/lis/) library is used to provide the functionality.

Please note that although `Lis` provides a wide variety of iterative solvers and preconditioners, not all would yield a
good performance.
Whether it is faster than direct solvers depends on different problems.

All possible options, which are copied directly from `Lis` documentation, are listed below.

For example, if one wants to use the `BiCGSTAB` solver with `ILU(2)` preconditioner, and wants to print statistics, the
settings would be:

```text
set sparse_mat true
set system_solver lis -i bicgstab -p ilu -ilu_fill 2 -print out
```

## Solver Related Options

| Solver | Option | Auxiliary Options | |
|--------------|---------------------|-------------------|-----------------------------|
| CG | `-i {cg\|1}` | | |
| BiCG | `-i {bicg\|2}` | | |
| CGS | `-i {cgs\|3}` | | |
| BiCGSTAB | `-i {bicgstab\|4}` | | |
| BiCGSTAB(l) | `-i {bicgstabl\|5}` | `-ell [2]` | The degree $$l$$ |
| GPBiCG | `-i {gpbicg\|6}` | | |
| TFQMR | `-i {tfqmr\|7}` | | |
| Orthomin(m) | `-i {orthomin\|8}` | `-restart [40]` | The restart value $$m$$ |
| GMRES(m) | `-i {gmres\|9}` | `-restart [40]` | The restart value $$m$$ |
| Jacobi | `-i {jacobi\|10}` | | |
| Gauss-Seidel | `-i {gs\|11}` | | |
| SOR | `-i {sor\|12}` | `-omega [1.9]` | The relaxation coefficient |
| | | | $$\omega$$ ($$0<\omega<2$$) |
| BiCGSafe | `-i {bicgsafe\|13}` | | |
| CR | `-i {cr\|14}` | | |
| BiCR | `-i {bicr\|15}` | | |
| CRS | `-i {crs\|16}` | | |
| BiCRSTAB | `-i {bicrstab\|17}` | | |
| GPBiCR | `-i {gpbicr\|18}` | | |
| BiCRSafe | `-i {bicrsafe\|19}` | | |
| FGMRES(m) | `-i {fgmres\|20}` | `-restart [40]` | The restart value $$m$$ |
| IDR(s) | `-i {idrs\|21}` | `-irestart [2]` | The restart value $$s$$ |
| IDR(1) | `-i {idr1\|22}` | | |
| MINRES | `-i {minres\|23}` | | |
| COCG | `-i {cocg\|24}` | | |
| COCR | `-i {cocr\|25}` | | |

## Preconditioner Related Options

| Preconditioner | Option | Auxiliary Options | |
|----------------|------------------|-----------------------------|-------------------------------------------------------------------|
| None | `-p {none\|0}` | | |
| Jacobi | `-p {jacobi\|1}` | | |
| ILU(k) | `-p {ilu\|2}` | `-ilu_fill [0]` | The fill level $$k$$ |
| SSOR | `-p {ssor\|3}` | `-ssor_omega [1.0]` | The relaxation coefficient $$\omega$$ ($$0<\omega<2$$) |
| Hybrid | `-p {hybrid\|4}` | `-hybrid_i [sor]` | The linear solver |
| | | `-hybrid_maxiter [25]` | The maximum number of iterations |
| | | `-hybrid_tol [1.0e-3]` | The convergence tolerance |
| | | `-hybrid_omega [1.5]` | The relaxation coefficient $$\omega$$ of the SOR ($$0<\omega<2$$) |
| | | `-hybrid_ell [2]` | The degree $$l$$ of the BiCGSTAB(l) |
| | | `-hybrid_restart [40]` | The restart values of the GMRES and Orthomin |
| I+S | `-p {is\|5}` | `-is_alpha [1.0]` | The parameter $$\alpha$$ of $$I+\alpha S^{(m)}$$ |
| | | `-is_m [3]` | The parameter $$m$$ of $$I+\alpha S^{(m)}$$ |
| SAINV | `-p {sainv\|6}` | `-sainv_drop [0.05]` | The drop criterion |
| SA-AMG | `-p {saamg\|7}` | `-saamg_unsym [false]` | Select the unsymmetric version |
| | | | (The matrix structure must be |
| | | | symmetric) |
| | | `-saamg_theta [0.05\|0.12]` | The drop criterion $$a^2_{ij}\le\theta^2\|a_{ii}\|\|a_{jj}\|$$ |
| | | | (symmetric or unsymmetric) |
| Crout ILU | `-p {iluc\|8}` | `-iluc_drop [0.05]` | The drop criterion |
| | | `-iluc_rate [5.0]` | The ratio of the maximum fill-in |
| ILUT | `-p {ilut\|9}` | | |
| Additive | `-adds true` | `-adds_iter [1]` | The number of iterations |
| Schwarz | | | |

## Other Options

| Option | |
|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `-maxiter [1000]` | The maximum number of iterations |
| `-tol [1.0e-12]` | The convergence tolerance $$tol$$ |
| `-tol_w [1.0]` | The convergence tolerance $$tol_w$$ |
| `-print [0]` | The output of the residual history |
| | `-print {none\|0}` None |
| | `-print {mem\|1}` Save the residual history |
| | `-print {out\|2}` Output it to the standard output |
| | `-print {all\|3}` Save the residual history and output it to the standard output |
| `-scale [0]` | The scaling |
| | (The result will overwrite the original matrix and vectors) |
| | `-scale {none\|0}` No scaling |
| | `-scale {jacobi\|1}` The Jacobi scaling $$D^{-1}Ax=D^{-1}b$$ ($$D$$ represents the diagonal of $$A=(a_{ij})$$) |
| | `-scale {symm_diag\|2}` The diagonal scaling $$D^{-1/2}AD^{-1/2}x=D^{-1/2}b$$ ($$D^{-1/2}$$ represents the diagonal matrix with $$1/\sqrt{a_{ii}}$$ as the diagonal) |
| `-initx_zeros [1]` | The behavior of the initial vector $$x_{0}$$ |
| | `-initx_zeros {false\|0}` The components are given by the argument `x` of the function `lis_solve()` |
| | `-initx_zeros {true\|1}` All the components are set to $$0$$ |
| `-conv_cond [0]` | The convergence condition |
| | `-conv_cond {nrm2_r\|0}` $$\|\|b-Ax\|\|_2 \le tol * \|\|b-Ax_0\|\|_2$$ |
| | `-conv_cond {nrm2_b\|1}` $$\|\|b-Ax\|\|_2 \le tol * \|\|b\|\|_2$$ |
| | `-conv_cond {nrm1_b\|2}` $$\|\|b-Ax\|\|_1 \le tol_w * \|\|b\|\|_1 + tol$$ |
| `-omp_num_threads [t]` | The number of threads (`t` represents the maximum number of threads) |
| `-storage [0]` | The matrix storage format |
| `-storage_block [2]` | The block size of the BSR and BSC formats |
| `-f [0]` | The precision of the linear solver |
| | `-f {double\|0}` Double precision |
| | `-f {quad\|1}` Double-double (quadruple) precision |
4 changes: 2 additions & 2 deletions docs/Collection/Process/materialtestbyload.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ materialTestByLoad3D (1) (2...7) (8) [9...]

## Remarks

1. The Newton-Raphson method is implemented to solve the corresponding strain increments. Thus softening models should
not be tested in this way.
1. The Newton-Raphson method is implemented to solve the corresponding strain increments.
Thus, softening models should not be tested in this way.
47 changes: 47 additions & 0 deletions docs/Collection/Process/sectiontest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# sectiontest

This command category can be used to test sections without establishing a FE model.

## Syntax

```text
sectionTest1D (1) (2) (3) [4...]
# (1) int, unique tag of the section model to use
# (2) double, size of per deformation increment
# (3) int, number of steps along increment direction
# [4...] int, optional numbers of steps for deformation history
sectionTest2D (1) (2...3) (4) [5...]
# (1) int, unique tag of the section model to use
# (2...3) double, size of per deformation increment
# (4) int, number of steps along increment direction
# [5...] int, optional numbers of steps for deformation history
sectionTest3D (1) (2...4) (5) [6...]
# (1) int, unique tag of the section model to use
# (2...4) double, size of per deformation increment
# (5) int, number of steps along increment direction
# [6...] int, optional numbers of steps for deformation history
```

## Remarks

1. The increment size could be either positive or negative.
2. The loading direction reverses after given numbers of steps.
3. The strain-stress history would be saved to `RESULT.txt`. If `HDF5` is used, the result would be additionally saved
to `RESULT.h5`.
4. The deformation vector consists of axial deformation, rotation about strong axis, rotation about weak axis. 1D, 2D
and 3D sections have the first, first two and all three components respectively.

## Example

```text
material Bilinear1D 1 29 0.05 0.01
section US2D W21X68 1 1
sectiontest2d 1 1E-3 0 100
```

For the above example, a W21X68 section is defined with the bilinear hardening model. It is loaded with 100 increments
of $\num{1E-3}$ axial deformation while the rotation is zero.
3 changes: 3 additions & 0 deletions docs/Collection/Process/set.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,9 @@ set tolerance (1)
# (1) double, tolerance of the iterative solver
```

Alternatively, there is a dedicated matrix storage which employs the [`Lis`](https://www.ssisc.org/lis/) library.
See [here](lis.md) for more details.

## Parallel Matrix Assembling

For dense matrix storage schemes, the global matrix is stored in a consecutive chunk of memory. Assembling global matrix
Expand Down
8 changes: 8 additions & 0 deletions docs/Library/Element/Beam/NMB21.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
* Number of Nodes: 2
* Number of DoFs: 3 (Translation, Translation, Rotation)

## Reference

1. [10.1061/JSENDH/STENG-12176](http://dx.doi.org/10.1061/JSENDH/STENG-12176)

## Syntax

```
Expand All @@ -21,6 +25,8 @@ element NMB21 (1) (2) (3) (4) [5]
Only `NM2D*` sections are supported. There is no validation of section attached, analysts shall make sure proper
sections are used.

See [SectionNM](../../Section/SectionNM/SectionNM.md) for more information about the section.

## Output Type

The `NMB21` element additional support recording element deformation and resistance via the `BEAME` and `BEAMS` tokens.
Expand All @@ -33,3 +39,5 @@ hdf5recorder (1) Element BEAMS (2...)
# (1) int, unique recorder tag
# (2...) int, tags of elements to record
```

Those are local deformation and resistance (with respect to the local coordinate system) of the element.
8 changes: 8 additions & 0 deletions docs/Library/Element/Beam/NMB21E.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
* Number of Nodes: 2
* Number of DoFs: 3 (Translation, Translation, Rotation)

## Reference

1. [10.1061/JSENDH/STENG-12176](http://dx.doi.org/10.1061/JSENDH/STENG-12176)

## Syntax

```
Expand All @@ -27,6 +31,8 @@ The `NMB21EL` element releases the moment at low node `i` and the `NMB21EH` elem

A non-iterative algorithm is used.

See [SectionNM](../../Section/SectionNM/SectionNM.md) for more information about the section.

## Output Type

The `NMB21E` element additional support recording element deformation and resistance via the `BEAME` and `BEAMS` tokens.
Expand All @@ -39,3 +45,5 @@ hdf5recorder (1) Element BEAMS (2...)
# (1) int, unique recorder tag
# (2...) int, tags of elements to record
```

Those are local deformation and resistance (with respect to the local coordinate system) of the element.
8 changes: 8 additions & 0 deletions docs/Library/Element/Beam/NMB31.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
* Number of Nodes: 2
* Number of DoFs: 6 (Translation, Translation, Translation, Rotation, Rotation, Rotation)

## Reference

1. [10.1061/JSENDH/STENG-12176](http://dx.doi.org/10.1061/JSENDH/STENG-12176)

## Syntax

```
Expand All @@ -26,6 +30,8 @@ element NMB31 (1) (2) (3) (4) (5)
usual are computed and stored, the first five are sent to section for computation of response, the torsion response
is assumed to be elastic.

See [SectionNM](../../Section/SectionNM/SectionNM.md) for more information about the section.

## Output Type

The `NMB31` element additional support recording element deformation and resistance via the `BEAME` and `BEAMS` tokens.
Expand All @@ -38,3 +44,5 @@ hdf5recorder (1) Element BEAMS (2...)
# (1) int, unique recorder tag
# (2...) int, tags of elements to record
```

Those are local deformation and resistance (with respect to the local coordinate system) of the element.
3 changes: 3 additions & 0 deletions docs/Library/Element/Beam/Orientation.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ orientation (1) (2) (3) (4) (5)
formulation) available.
2. The `B3DC` formulation is based on Crisfield's work with modifications. See de Souza's
[thesis](https://books.google.co.nz/books/about/Force_based_Finite_Element_for_Large_Dis.html?id=YZ5NAQAAMAAJ).
3. For brevity, the mass distribution does not follow the corotational formulation, implying that the mass matrix is
always a constant matrix. This is often sufficient for applications in earthquake engineering. However, it is not
recommended for other applications. An energy-reserving corotational formulation is required, see Crisfield's work.
3 changes: 2 additions & 1 deletion docs/Library/Element/Special/Damper01.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ element Damper03 (1) (2) (3) (4)

## Remarks

Both viscous and nonviscous material can be used for this element, see [Viscosity](../../Material/Material1D/Viscosity).
Both viscous and nonviscous material can be used for this element,
see [Viscosity](../../Material/Material1D/Viscosity/NonlinearViscosity.md).
3 changes: 1 addition & 2 deletions docs/Library/Material/Material3D/Concrete/CDP.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ Concrete Damage Plasticity Model

The CDP model supports stiffness degradation. The backbone envelops are defined as exponential functions in terms of
plastic strain [4]. Apart from the listed references, readers can also refer to the corresponding section
in [Constitutive Modelling Cookbook](https://github.com/TLCFEM/constitutive-modelling-cookbook/releases/download/latest/COOKBOOK.pdf)
.
in [Constitutive Modelling Cookbook](https://github.com/TLCFEM/constitutive-modelling-cookbook/releases/download/latest/COOKBOOK.pdf).

## Syntax

Expand Down
Loading

0 comments on commit bf57767

Please sign in to comment.