diff --git a/large_media b/large_media index 195da419f5a3..3cd818f6f1ab 160000 --- a/large_media +++ b/large_media @@ -1 +1 @@ -Subproject commit 195da419f5a3b5a0890da69f3cbb04e34dccba59 +Subproject commit 3cd818f6f1ab70dd30c7d68c8aea6ba6f5251a6b diff --git a/tutorials/darcy_thermo_mech/doc/content/workshop/intro/moose_multiphysics.md b/tutorials/darcy_thermo_mech/doc/content/workshop/intro/moose_multiphysics.md index 841c2444811b..6a5a0b4f5997 100644 --- a/tutorials/darcy_thermo_mech/doc/content/workshop/intro/moose_multiphysics.md +++ b/tutorials/darcy_thermo_mech/doc/content/workshop/intro/moose_multiphysics.md @@ -6,7 +6,7 @@ - Scientists are adept at creating applications in their domain - What about collaborating across research groups and/or disciplines? - - Head in the sand? + - Iterating between design teams? - Development of "coupling" codes? - Is there something better? diff --git a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_overview.md b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_overview.md index 20c15ac1cd2c..12cff8cf95dc 100644 --- a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_overview.md +++ b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_overview.md @@ -229,7 +229,7 @@ Write in inner product notation. Each term of the equation will inherit from an !style! fontsize=60% !row! -!col! width=20% +!col! width=15% !listing test/tests/kernels/2d_diffusion/2d_diffusion_neumannbc_test.i block=Kernels remove=Kernels/active !col-end! @@ -237,7 +237,7 @@ Write in inner product notation. Each term of the equation will inherit from an $\quad$ !col-end! -!col! width=20% +!col! width=15% !listing test/tests/kernels/2d_diffusion/2d_diffusion_neumannbc_test.i block=BCs remove=BCs/active BCs/left !col-end! @@ -245,7 +245,7 @@ $\quad$ $\quad$ !col-end! -!col! width=20% +!col! width=15% !listing test/tests/dgkernels/1d_advection_dg/1d_advection_dg.i block=Kernels remove=Kernels/time_u !col-end! @@ -253,7 +253,7 @@ $\quad$ $\quad$ !col-end! -!col! width=20% +!col! width=15% !listing test/tests/bcs/nodal_normals/circle_tris.i block=Kernels remove=Kernels/diff !col-end! diff --git a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_shape.md b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_shape.md index fcf48bde5b59..5f64b85ec486 100644 --- a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_shape.md +++ b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_shape.md @@ -107,17 +107,17 @@ $\psi_8$ is associated to the "center" node, it is symmetric and $\geq 0$ on the !row! !col! width=33% -!media darcy_thermo_mech/fem_quad9_phi0.png style=width:100% caption= $\psi_0$ prefix='' +!media darcy_thermo_mech/fem_quad9_phi0.png style=width:100% caption= $\psi_0$ prefix=' ' !col-end! !col! width=33% !col width=33% -!media darcy_thermo_mech/fem_quad9_phi4.png style=width:100%; caption= $\psi_4$ prefix='' +!media darcy_thermo_mech/fem_quad9_phi4.png style=width:100%; caption= $\psi_4$ prefix=' ' !col-end! !col! width=33% !col width=33% -!media darcy_thermo_mech/fem_quad9_phi8.png style=width:100%; caption= $\psi_8$ prefix='' +!media darcy_thermo_mech/fem_quad9_phi8.png style=width:100%; caption= $\psi_8$ prefix=' ' !col-end! !row-end! diff --git a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_solve.md b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_solve.md index 81fde1351236..9943d921dafc 100644 --- a/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_solve.md +++ b/tutorials/darcy_thermo_mech/doc/content/workshop/numerical/fem_solve.md @@ -42,7 +42,7 @@ Gaussian Quadrature can exactly integrate polynomials of order $2n-1$ with $n$ q !--- -Quadrature applied to [ref_elems] yields an equation that can be analyzed numerically: +Applying the quadrature to [ref_elems] we can simply compute: !equation \sum_e \int_{\hat{\Omega}_e} f(\vec{\xi}) \left|\mathcal{J}_e\right| \;\text{d}\vec{\xi} \approx @@ -208,9 +208,9 @@ Some examples: - LU : form the actual Jacobian inverse, useful for small to medium problems but does not scale well - Hypre BoomerAMG : algebraic multi-grid, works well for diffusive problems -- jacobi : preconditions with the diagonal of Jacobian +- Jacobi : preconditions with the diagonal, row sum, or row max of Jacobian -Can also combine pre-conditioners using sub-preconditioning with option `-sub_pc_type`. +For parallel preconditioners, the sub-block (on-process) preconditioners can be controlled with the PETSc option `-sub_pc_type`. E.g. for a parallel block Jacobi preconditioner (-pc_type bjacobi) the sub-block preconditioner could be set to ILU or LU etc. with `-sub_pc_type ilu`, `-sub_pc_type lu`, etc. !--- @@ -227,7 +227,7 @@ Integrals are computed numerically using quadrature. Newton's method provides a mechanism for solving a system of nonlinear equations. -The Preconditioned Jacobian Free Newton Krylov (JFNK) method allows us to avoid explicitly forming +The Preconditioned Jacobian Free Newton Krylov (PJFNK) method allows us to avoid explicitly forming the Jacobian matrix while still computing its action. !--- @@ -286,6 +286,12 @@ Thus, the $i^{th}$ component of the residual vector is: !--- +!equation +\begin{aligned} +\vec{R}_i(u_h) = \left(\nabla\psi_i, k\nabla u_h \right) - \langle\psi_i, k\nabla u_h\cdot \hat{n} \rangle + +\left(\psi_i, \vec{\beta} \cdot \nabla u_h\right) - \left(\psi_i, f\right) +\end{aligned} + Using the previously-defined rules in [diff_u] and [grad_u] for $\frac{\partial u_h}{\partial u_j}$ and $\frac{\partial \left(\nabla u_h\right)}{\partial u_j}$, the $(i,j)$ entry of the Jacobian is then: diff --git a/tutorials/darcy_thermo_mech/doc/content/workshop/problem/step01.md b/tutorials/darcy_thermo_mech/doc/content/workshop/problem/step01.md index 34bdb92d5232..2b26de24d52a 100644 --- a/tutorials/darcy_thermo_mech/doc/content/workshop/problem/step01.md +++ b/tutorials/darcy_thermo_mech/doc/content/workshop/problem/step01.md @@ -21,8 +21,8 @@ where $\psi_i$ are the test functions and $u_h$ is the finite element solution. ## Input File(s) -All capabilities of MOOSE, modules, and your application are compiled into a single executable. -An input file is used to define which capabilities are used to perform a simulation. +An input file is used to represent the problem in MOOSE. It follows a very standardized +syntax. MOOSE uses the "hierarchical input text" (hit) format. @@ -37,7 +37,7 @@ A basic MOOSE input file requires six parts, each of which will be covered in gr - `[Kernels]`: Define the equation(s) to solve - `[BCs]`: Define the boundary condition(s) of the problem - `[Executioner]`: Define how the problem will be solved -- `[Outputs]`: Define how the solution will be written +- `[Outputs]`: Define how the solution will be returned !--- @@ -49,6 +49,9 @@ A basic MOOSE input file requires six parts, each of which will be covered in gr ## Step 1: Run +An executable is produced by compiling an application or a MOOSE module. It can be used +to run input files. + ```bash cd ~/projects/moose/tutorials/darcy-thermo_mech/step01_diffusion make -j 12 # use number of processors for your system