|
| 1 | +.. Proteus documentation master file. This file generates the Proteus homepage (index.html) and serves as the root of the toctree |
| 2 | +
|
| 3 | +.. _intro-sec: |
| 4 | + |
| 5 | +Introduction |
| 6 | +============ |
| 7 | + |
| 8 | +Proteus is a Python package for rapidly developing computer models and |
| 9 | +numerical methods. It is focused on models of continuum mechanical |
| 10 | +processes described by partial differential equations and on |
| 11 | +discretizations and solvers for computing approximate solutions to |
| 12 | +these equations. Proteus consists of a collection of Python modules |
| 13 | +and scripts. Proteus also uses several C, C++, and Fortran libraries, |
| 14 | +which are either external open source packages or part of Proteus, and |
| 15 | +several open source Python packages. |
| 16 | + |
| 17 | +The design of Proteus is organized around two goals: |
| 18 | + |
| 19 | +* Make it easy to solve new model equations with existing numerical methods |
| 20 | +* Make it easy to solve existing model equations with new numerical methods |
| 21 | + |
| 22 | +We want to improve the development process for models *and* |
| 23 | +methods. Proteus is not intended to be an expert system for solving |
| 24 | +partial differential equations. In fact, effective numerical methods |
| 25 | +are often physics-based. Nevertheless many physical models are |
| 26 | +mathematically represented by the same small set of differential |
| 27 | +operators, and effective numerical methods can be developed with minor |
| 28 | +adjustments to existing methods. The problem with much existing |
| 29 | +software is that the physics and numerics are completely intertwined, |
| 30 | +which makes it difficult to extend (and maintain). In Proteus the |
| 31 | +description of the physical model and initial-boundary value problems |
| 32 | +are nearly "method agnostic". This approach has been used in the |
| 33 | +developement of a variety of mathematical models and numerical |
| 34 | +methods, both of which are described in more detail below |
| 35 | +(:ref:`capabilities-sec`). |
| 36 | + |
| 37 | +.. _obtaining-sec: |
| 38 | + |
| 39 | +Obtaining and Installing Proteus |
| 40 | +================================ |
| 41 | + |
| 42 | +For learning and experimenting there is a |
| 43 | +`Docker image <https://cloud.docker.com/u/erdc/repository/docker/erdc/proteus>`_. |
| 44 | +Proteus can be installed through conda with::: |
| 45 | + |
| 46 | + % conda install proteus -c conda-forge |
| 47 | + |
| 48 | +Proteus is available as source from our public |
| 49 | +`GitHub <https://github.com/erdc/proteus>`_ |
| 50 | +repository. For a development installation, the installation of |
| 51 | +dependencies and the compilation of Proteus from source is done with::: |
| 52 | + |
| 53 | + % git clone https://github.com/erdc/proteus |
| 54 | + % cd proteus |
| 55 | + % conda env create -f environment-dev.yml |
| 56 | + % conda activate proteus-dev |
| 57 | + % pip install -v -e . |
| 58 | + |
| 59 | +Alternatively, if you already have compilers (C,C++, and Fortran!) |
| 60 | +installed on your system, you can install Proteus through hashdist |
| 61 | +with the following commands::: |
| 62 | + |
| 63 | + % git clone https://github.com/erdc/proteus |
| 64 | + % cd proteus |
| 65 | + % make develop |
| 66 | + % make test |
| 67 | + |
| 68 | +More information is available on our `Wiki <https://github.com/erdc/proteus/wiki>`_, and you can ask for help on |
| 69 | +the `Developers' Mailing List <https://groups.google.com/forum/#!forum/proteus-dev>`_. |
| 70 | + |
| 71 | +.. _running-sec: |
| 72 | + |
| 73 | +Running |
| 74 | +======= |
| 75 | + |
| 76 | +If you have successfully compiled and tested Proteus then you should be able to do:: |
| 77 | + |
| 78 | + % cd $PROTEUS/tests/ci |
| 79 | + % $PROTEUS_PREFIX/bin/parun poisson_3d_p.py poisson_3d_c0p1_n.py |
| 80 | + |
| 81 | +The solution will be saved in a file ending in .xmf, which can be |
| 82 | +opened with ParaView or Ensight. |
| 83 | + |
| 84 | +.. _capabilities-sec: |
| 85 | + |
| 86 | +Capabilities |
| 87 | +============ |
| 88 | + |
| 89 | +Test problems and some analytical solutions have been implemented for |
| 90 | + |
| 91 | +* Poisson's equation |
| 92 | +* The heat equation |
| 93 | +* Linear advection-diffusion-reaction equations |
| 94 | +* Singly degenerate nonlinear advection-diffusion-reaction equations (including various forms of Burger's equation) |
| 95 | +* Doubly degenerate nonlinear advection-diffusion-reaction equations |
| 96 | +* The eikonal (signed distance) equation |
| 97 | +* The diffusive wave equations for overland flow |
| 98 | +* 1D and 2D Shallow Water Equations |
| 99 | +* 2D Dispersive Shallow Water Equations |
| 100 | +* Richards' equation (mass conservative head- and saturation-based) |
| 101 | +* Two-phase flow in porous media with diffuse interface (fully coupled and IMPES formulations) |
| 102 | +* Two-phase flow in porous media with a sharp interface (level set formulation) |
| 103 | +* Stokes equations |
| 104 | +* Navier-Stokes equations |
| 105 | +* Reynolds-Averged Navier-Stokes equations |
| 106 | +* Two-phase Stokes/Navier-Stokes/RANS flow with a sharp interface (level set/VOF formulation) |
| 107 | +* Linear elasticity |
| 108 | + |
| 109 | +These problems are solved on unstructured simplicial meshes. Simple |
| 110 | +meshes can be generated with tools included with Proteus, and more |
| 111 | +complex meshes can by imported from other mesh generators. The finite |
| 112 | +elements implemented are |
| 113 | + |
| 114 | +Classical methods with various types of stabilization (entropy viscosity, variational multiscale, and algebraic methods) |
| 115 | + |
| 116 | +* :math:`C_0 P_1` |
| 117 | +* :math:`C_0 P_2` |
| 118 | +* :math:`C_0 Q_1` |
| 119 | +* :math:`C_0 Q_2` |
| 120 | + |
| 121 | +Discontinuous Galerkin methods |
| 122 | + |
| 123 | +* :math:`C_{-1} P_0` |
| 124 | +* :math:`C_{-1} P_1` (Lagrange Basis) |
| 125 | +* :math:`C_{-1} P_2` (Lagrange Basis) |
| 126 | +* :math:`C_{-1} P_k` (Monomial Basis) |
| 127 | + |
| 128 | +Non-conforming and mixed methods |
| 129 | + |
| 130 | +* :math:`P_1` non-conforming |
| 131 | +* :math:`C_0 P_1 C_0 P_2` Taylor-Hood |
| 132 | + |
| 133 | +The time integration methods are |
| 134 | + |
| 135 | +* Backward Euler |
| 136 | +* Forward Euler |
| 137 | +* :math:`\Theta` Methods |
| 138 | +* Strong Stability Preserving Runge-Kutta Methods |
| 139 | +* Adaptive BDF Methods |
| 140 | +* Pseudo-transient continuation |
| 141 | + |
| 142 | +The linear solvers are |
| 143 | + |
| 144 | +* Jacobi |
| 145 | +* Gauss-Seidel |
| 146 | +* Alternating Schwarz |
| 147 | +* Full Multigrid |
| 148 | +* Wrappers to LAPACK, SuperLU, and PETSc |
| 149 | + |
| 150 | +The nonlinear solvers are |
| 151 | + |
| 152 | +* Jacobi |
| 153 | +* Gauss-Seidel |
| 154 | +* Alternating Schwarz |
| 155 | +* Newton's method |
| 156 | +* Nonlinear Multigrid (Full Approximation Scheme) |
| 157 | +* Fast Marching and Fast Sweeping |
| 158 | + |
| 159 | +Additional tools are included for pre- and post-processings meshes and |
| 160 | +solutions files generated by Proteus and other models, including methods for |
| 161 | +obtaining locally-conservative velocity fields from :math:`C_0` finite |
| 162 | +elements. |
| 163 | + |
| 164 | +.. _release-sec: |
| 165 | + |
| 166 | +Release Policy |
| 167 | +============== |
| 168 | + |
| 169 | +The releases are numbered major.minor.revision |
| 170 | + |
| 171 | +* A revision increment indicates a bug fix or extension that shouldn't break any models working with the same major.minor number. |
| 172 | +* A minor increment introduces significant new functionality but is mostly backward compatible |
| 173 | +* A major increment may require changes to input files and significantly change the underlying Proteus implementation. |
| 174 | + |
| 175 | +These are not hard and fast rules, and there is no time table for releases. |
| 176 | + |
| 177 | +References |
| 178 | +========== |
| 179 | + |
| 180 | +* `Robust explicit relaxation technique for solving the Green-Naghdi equations |
| 181 | + <https://doi.org/10.1016/j.jcp.2019.108917>`_ (2019) J.-L. Guermond, |
| 182 | + B. Popov, E. Tovar, C.E. Kees, *Journal of Computational Physics* |
| 183 | +* `An Unstructured Finite Element Model for Incompressible Two-Phase |
| 184 | + Flow Based on a Monolithic Conservative Level Set Method |
| 185 | + <https://arxiv.org/abs/1903.06919>`_ |
| 186 | + (2019) M. Quezada de Luna, J. H. Collins, and C.E. Kees. |
| 187 | +* Preconditioners for Two-Phase Incompressible Navier-Stokes |
| 188 | + Flow (2019) N. Bootland, C.E. Kees, A. Wathen, |
| 189 | + A. Bentley *SIAM Journal on Scientific Computing*, In Press. |
| 190 | +* `Modeling Sediment Transport in Three-Phase Surface Water Systems |
| 191 | + <https://doi.org/10.1080/00221686.2019.1581673>`_ (2019) |
| 192 | + C.T. Miller, W.G. Gray, C.E. Kees, I.V. Rybak, B.J. Shepherd, |
| 193 | + *Journal of Hydraulic Engineering* |
| 194 | +* `Fast Random Wave Generation in Numerical Tanks |
| 195 | + <https://doi.org/10.1680/jencm.17.00016>`_ (2019) A. Dimakopoulos, T. de |
| 196 | + Lataillade, C.E. Kees, *Proceedings of the Institution of Civil |
| 197 | + Engineers - Engineering and Computational Mechanics*, 1-29. |
| 198 | +* `A Partition of Unity Approach to Adaptivity and Limiting in |
| 199 | + Continuous Finite Element Methods |
| 200 | + <https://doi.org/10.1016/j.camwa.2019.03.021>`_ (2019) D. Kuzmin, M. Quezada |
| 201 | + de Luna, C.E. Kees, *Computers and Mathematics with Applications*. |
| 202 | +* `Simulating Oscillatory and Sliding Displacements of Caisson |
| 203 | + Breakwaters Using a Coupled Approach |
| 204 | + <https://doi.org/10.1061/(ASCE)WW.1943-5460.0000504>`_ (2019) G. Cozzuto, |
| 205 | + A. Dimakopoulos, T. de Lataillade, P.O. Morillas, and C.E. Kees, |
| 206 | + *Journal of Waterway, Port, Coastal, and Ocean Engineering*. |
| 207 | +* `A Monolithic Conservative Level Set Method with Built-In |
| 208 | + Redistancing |
| 209 | + <https://doi.org/10.1016/j.jcp.2018.11.044>`_ (2019) M. Quezada de |
| 210 | + Luna, D. Kuzmin, C.E. Kees, *Journal of Computational Physics*, 379, |
| 211 | + 262-278. |
| 212 | +* `Computational Model for Wave Attenuation by Flexible Vegetation |
| 213 | + <https://doi.org/10.1061/(ASCE)WW.1943-5460.0000487>`_ (2018) |
| 214 | + S.A. Mattis, C.E. Kees, M.V. Wei, A. Dimakopoulos, and C.N. Dawson, |
| 215 | + *Journal of Waterway, Port, Coastal, and Ocean Engineering* 145(1), |
| 216 | + p.04018033. |
| 217 | +* `Well-Balanced Second-Order Finite Element Approximation of the |
| 218 | + Shallow Water Equations with Friction |
| 219 | + <https://doi.org/10.1137/17M1156162>`_ (2018) J.L. Guermond, M.Q. de |
| 220 | + Luna, B. Popov, C.E. Kees, and M.W. Farthing *SIAM Journal on |
| 221 | + Scientific Computing* 40(6), A3873-A3901. |
| 222 | +* `Dual-Scale Galerkin Methods for Darcy Flow |
| 223 | + <https://doi.org/10.1016/j.jcp.2017.10.047>`_ (2018) G. Wang, G. Scovazzi, L. Nouveau, |
| 224 | + C.E. Kees, Simone Rossi, O. Colomes, and A. Main (2018) *Journal of |
| 225 | + Computational Physics* 354, 111-134. |
| 226 | +* `Implementation details of the level set two-phase Navier-Stokes |
| 227 | + equations in Proteus |
| 228 | + <https://www.clemson.edu/science/departments/math-stat/documents/technical-reports/TR2017_10_ab.nb.aw.ck.pdf>`_ (2017) A. Bentley, N. Bootland, A. Wathen, C. Kees, |
| 229 | + *Technical-Report-TR2017-10-ab.nb.aw.ck*. |
| 230 | +* `Evaluation of Galerkin and Petrov-Galerkin Model Reduction for |
| 231 | + Finite Element Approximations of the Shallow Water Equations |
| 232 | + <https://doi.org/10.1016/j.cma.2017.01.027>`_ (2017) A. Lozovsky, M. W. Farthing, |
| 233 | + and C.E. Kees, *Computational Methods in Applied Mechanics and |
| 234 | + Engineering* 318, 537-571. |
| 235 | +* `POD-Based Model Reduction for Stabilized Finite Element |
| 236 | + Approximations of Shallow Water Flows |
| 237 | + <https://doi.org/10.1016/j.cam.2016.01.029>`_ (2016) A. Lozovskiy, |
| 238 | + M.W. Farthing, C.E. Kees, E. Gildin *Journal of Computational and |
| 239 | + Applied Mathematics*, 302, 50-70. |
| 240 | +* `An Immersed Structure Approach for Fluid-Vegetation Interaction |
| 241 | + <https://doi.org/10.1016/j.advwatres.2015.02.014>`_ (2015) |
| 242 | + S.A. Mattis, C.N. Dawson, C.E. Kees, M.W. Farthing, *Advances in |
| 243 | + Water Resources*, 80,1-16. |
| 244 | +* `Finite Element Methods for Variable Density Flow And Solute |
| 245 | + Transport <https://doi.org/10.1007/s10596-012-9330-2>`_ (2013) |
| 246 | + T.J. Povich, C.N. Dawson, M.W. Farthing, C.E. Kees *Computational |
| 247 | + Geosciences* 17(3), 529-549. |
| 248 | +* `Numerical simulation of water resources problems: Models, methods, |
| 249 | + and trends |
| 250 | + <https://doi.org/10.1016/j.advwatres.2012.05.008>`_ (2013) |
| 251 | + Cass T. Miller, Clint N. Dawson, Matthew W. Farthing, Thomas Y. Hou, |
| 252 | + Jingfang Huang, Christopher E. Kees, C.T. Kelley, and Hans Petter |
| 253 | + Langtangen *Advances in Water Resources*, 51, 405-437, |
| 254 | +* `Numerical modeling of drag for flow through vegetated domains and |
| 255 | + porous structures |
| 256 | + <http://dx.doi.org/10.1016/j.advwatres.2012.01.002>`_ (2012) |
| 257 | + S.A. Mattis, C. N. Dawson, C. E. Kees, and M. W. Farthing, *Advances |
| 258 | + in Water Resources*, 39, pp44-59 |
| 259 | +* `Parallel Computational Methods and Simulation for Coastal and |
| 260 | + Hydraulic Applications Using the Proteus Toolkit |
| 261 | + <http://www.dlr.de/sc/en/Portaldata/15/Resources/dokumente/pyhpc2011/submissions/pyhpc2011_submission_11.pdf>`_ |
| 262 | + (2011) C. E. Kees and M. W. Farthing (2011) *Supercomputing11: |
| 263 | + Proceedings of the PyHPC11 Workshop* |
| 264 | +* `A Conservative Level Set Method for Variable-Order Approximations |
| 265 | + and Unstructured Meshes |
| 266 | + <http://dx.doi.org/10.1016/j.jcp.2011.02.030>`_ (2011) C.E. Kees, |
| 267 | + I. Akkerman, Y. Bazilevs, and M. W. Farthing *Journal of |
| 268 | + Computational Physics* 230(12), pp4536–4558 |
| 269 | +* `Locally Conservative, Stabilized Finite Element Methods For |
| 270 | + Variably Saturated Flow |
| 271 | + <http://dx.doi.org/10.1016/j.cma.2008.06.005>`_ (2008) Kees, C.E., |
| 272 | + M. W. Farthing, and C. N. Dawson, *Computer Methods in Applied |
| 273 | + Mechanics and Engineering*, 197, pp4610-4625 |
| 274 | +* `Locally Conservative, Stabilized Finite Element Methods for a Class |
| 275 | + of Variable Coefficient Navier-Stokes Equations |
| 276 | + <http://chl.erdc.usace.army.mil/ERDC-CHL-TR-09-12>`_ (2009) |
| 277 | + C. E. Kees, M. W. Farthing, and M. T. Fong, *ERDC/CHL TR-09-12* |
| 278 | +* `Evaluating Finite Element Methods for the Level Set Equation |
| 279 | + <http://chl.erdc.usace.army.mil/ERDC-CHL-TR-09-11>`_ (2009) |
| 280 | + M. W. Farthing and C. E. Kees, *ERDC/CHL TR-09-11* |
| 281 | +* `A Review of Methods for Moving Boundary Problems |
| 282 | + <http://chl.erdc.usace.army.mil/ERDC-CHL-TR-09-10>`_ (2009) |
| 283 | + C. E. Kees, M. W. Farthing, T. C. Lackey, and R. C. Berger, |
| 284 | + *ERDC/CHL TR-09-10* |
| 285 | +* `Implementation of Discontinuous Galerkin Methods for the Level Set |
| 286 | + Equation on Unstructured Meshes |
| 287 | + <http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/chetn-xiii-2.pdf>`_ |
| 288 | + (2008) M. W. Farthing and C. E. Kees, *ERDC/CHL CHETN-XIII-2* |
| 289 | + |
| 290 | +Indices and tables |
| 291 | +================== |
| 292 | + |
| 293 | +* :ref:`genindex` |
| 294 | +* :ref:`modindex` |
| 295 | +* :ref:`search` |
| 296 | + |
| 297 | +Source Code Documentation |
| 298 | +========================= |
| 299 | + |
| 300 | +.. toctree:: |
| 301 | + :maxdepth: 1 |
| 302 | + :caption: General |
| 303 | + :name: sec-general |
| 304 | + |
| 305 | + API docs <apicapi> |
| 306 | + |
| 307 | +.. toctree:: |
| 308 | + :maxdepth: 1 |
| 309 | + :caption: Tools |
| 310 | + :name: sec-tools |
| 311 | + |
| 312 | + tools/boundary_conditions |
| 313 | + tools/spatial_tools |
| 314 | + tools/two_phase_flow |
| 315 | + tools/wave_tools |
| 316 | + |
| 317 | +.. toctree:: |
| 318 | + :maxdepth: 1 |
| 319 | + :caption: Models |
| 320 | + :name: sec-models |
| 321 | + |
| 322 | + models/body_dynamics |
| 323 | + models/free_surface |
| 324 | + models/mesh_adaptivity |
| 325 | + models/mesh_motion |
| 326 | + models/navier_stokes |
| 327 | + models/SWFlows |
0 commit comments