diff --git a/doc/config.yml b/doc/config.yml index 3af13ec49c5..06edf77729d 100644 --- a/doc/config.yml +++ b/doc/config.yml @@ -25,6 +25,7 @@ Extensions: Installation: getting_started/installation.md Using Zapdos: getting_started/using_zapdos.md Generating Meshes: getting_started/zapdos_meshing.md + Tutorial Slides: tutorial/index.md Documentation: Zapdos Input Syntax: syntax/zapdos_only.md Complete Code Syntax: syntax/index.md diff --git a/doc/content/bib/documentation.bib b/doc/content/bib/documentation.bib index ed3008408d3..ba8437b4c82 100644 --- a/doc/content/bib/documentation.bib +++ b/doc/content/bib/documentation.bib @@ -22,3 +22,35 @@ @article{Gogolides1992 issn = {0009-2509}, doi = {10.1016/0009-2509(92)85133-V} } + +@article{lieberman1994principles, + title={Principles of plasma discharges and materials processing}, + author={Lieberman, Michael A and Lichtenberg, Allan J}, + journal={MRS Bulletin}, + volume={30}, + number={12}, + pages={899--901}, + year={1994} +} + +@article{mcmillin1995two, + title={Two-dimensional argon metastable density measurements in a radio frequency plasma reactor by planar laser-induced fluorescence imaging}, + author={McMillin, Brian K and Zachariah, Michael R}, + journal={Journal of applied physics}, + volume={77}, + number={11}, + pages={5538--5544}, + year={1995}, + publisher={American Institute of Physics} +} + +@article{greenberg1993electron, + title={Electron and metastable densities in parallel-plate radio-frequency discharges}, + author={Greenberg, KE and Hebner, GA}, + journal={Journal of applied physics}, + volume={73}, + number={12}, + pages={8126--8133}, + year={1993}, + publisher={American Institute of Physics} +} diff --git a/doc/tutorial_config.yml b/doc/tutorial_config.yml new file mode 100644 index 00000000000..ea84c4b9d4e --- /dev/null +++ b/doc/tutorial_config.yml @@ -0,0 +1,44 @@ +Content: + tutorial: + root_dir: ${ROOT_DIR}/doc/workshops + moose: + root_dir: ${MOOSE_DIR}/framework/doc/content + content: + - ../../../tutorials/darcy_thermo_mech/doc/content/workshop/intro/moose_introduction.md + +Executioner: + type: MooseDocs.base.Serial + +Renderer: + type: MooseDocs.base.RevealRenderer + theme: simple + +Extensions: + disable_defaults: True + MooseDocs.extensions.reveal: + translate: tutorial/index.md + background_image: ncsu_slide_background.png + MooseDocs.extensions.comment: default + MooseDocs.extensions.command: default + MooseDocs.extensions.bibtex: default + MooseDocs.extensions.alert: default + MooseDocs.extensions.core: default + MooseDocs.extensions.config: default + MooseDocs.extensions.media: default + MooseDocs.extensions.floats: default + MooseDocs.extensions.include: default + MooseDocs.extensions.style: default + MooseDocs.extensions.autolink: default + MooseDocs.extensions.materialicon: default + MooseDocs.extensions.heading: default + MooseDocs.extensions.shortcut: default + MooseDocs.extensions.table: default + MooseDocs.extensions.layout: default + MooseDocs.extensions.content: default + MooseDocs.extensions.modal: default + MooseDocs.extensions.listing: default + MooseDocs.extensions.datetime: default + MooseDocs.extensions.katex: + macros: + included: !include ${MOOSE_DIR}/modules/doc/katex_macros.yml + \pf: "\\frac{\\partial #1}{\\partial #2}" diff --git a/doc/workshops/tutorial/content/examples/global_model_visualization.md b/doc/workshops/tutorial/content/examples/global_model_visualization.md new file mode 100644 index 00000000000..2737bded384 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/global_model_visualization.md @@ -0,0 +1,36 @@ +# Visualizing results from a 0D model + +# style=margin-top:3em; + +The results shown here are from Tutorial 2 + +!--- + +!media media/tutorial2_visualization/step1.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=After applying the results from your simulation, select the "Select Points On" icon. + +!--- + +!media media/tutorial2_visualization/step2.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=Then, you will need to draw a box that contains at least a part of the singular element in order to select it. + +!--- + +!media media/tutorial2_visualization/step3.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=After your box selection, you should see at least one of the ends of the element highlighted. + + +!--- + +!media media/tutorial2_visualization/step4.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=To see the time evolution of the system, select the "Plot Selection Over Time" button. + +!--- + +!media media/tutorial2_visualization/step5.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=As you advance in time, you should see something that looks like this. diff --git a/doc/workshops/tutorial/content/examples/helpful_resources.md b/doc/workshops/tutorial/content/examples/helpful_resources.md new file mode 100644 index 00000000000..a8b95026f53 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/helpful_resources.md @@ -0,0 +1,14 @@ +# Zapdos Resources style=margin-bottom:2em; + +As a user of Zapdos, you have access to some support from developers and other users via the community discussions forum on GitHub: + +[https://github.com/shannon-lab/zapdos/discussions](https://github.com/shannon-lab/zapdos/discussions) + + +If you are struggling with an issue, search to see if someone else has run into the same problem. If they haven't, start a new discussion! You're also welcome to start a discussion about how to contribute any functionality you have developed so others can use it, to share new ideas, or even show off new results! + +Finally, if you encounter a replicable bug in Zapdos code or would like to request a new feature be developed, you can visit our issues page: + +[https://github.com/shannon-lab/zapdos/issues](https://github.com/shannon-lab/zapdos/issues) + +We do not have time to develop all requested features, but we are happy to help others get started in developing and contributing the features they need for their work. Reach out! :) diff --git a/doc/workshops/tutorial/content/examples/lineplot_visualization.md b/doc/workshops/tutorial/content/examples/lineplot_visualization.md new file mode 100644 index 00000000000..cae0d34b738 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/lineplot_visualization.md @@ -0,0 +1,36 @@ +# Visualizing 1D results + +# style=margin-top:3em; + +The results shown here are from Tutorial 1 + +!--- + +!media media/lineplot_visualization/step1.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=After opening an exodus file, the first step is always to click "Apply" or the eye icon. + +!--- + +!media media/lineplot_visualization/step2.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=Once the results are loaded, select the "Plot Over Line" option to visualize a 1D result. + +!--- + +!media media/lineplot_visualization/step3.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=The line plot also needs to be applied, so you can also use "Apply" or the eye icon here. + + +!--- + +!media media/lineplot_visualization/step4.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=Finally, you can navigate through time with the green triangle icons on the top of the page. + +!--- + +!media media/lineplot_visualization/step5.png + style=width:100%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto; + caption=As you advance, you should see something that looks like this. diff --git a/doc/workshops/tutorial/content/examples/tutorial1.md b/doc/workshops/tutorial/content/examples/tutorial1.md new file mode 100644 index 00000000000..b2e180d1e62 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial1.md @@ -0,0 +1,69 @@ +# Tutorial 1 - Diffusion + Constant Source + +!--- + +# Problem Statement + +Consider a one dimensional single species, $i$, plasma on the domain $x\in\left[-\frac{l}{2}, \frac{l}{2}\right]$. Additionally, consider that this is a purely diffusive system with a constant source term due to a constant background gas density $n_g$. This system takes the following form + +\begin{equation} + - + \nabla + \cdot + \left( + D \nabla n_i + \right) + = + k + n_g +\end{equation} + + +Where $D$ is a constant diffusion coefficient, $n_i$ is the species density, and $k$ is a constant first order reaction rate. Additionally, a zero-density boundary condition will be imposed + +\begin{equation} + n_i + \left( + \pm \frac{l}{2} + \right) + = + 0 +\end{equation} + +!--- + +# style=margin-top:1em; + +### Explore what happens as the diffusion coefficient is varied. + +!listing tutorial/tutorial01-Diffusion/diffusion-only.i block=Materials/gas_species_0 + +### Explore what happens as the reaction rate is varied. + +!listing tutorial/tutorial01-Diffusion/diffusion-only.i block=Materials/FirstOrder_Reaction + +!--- + +# Analytic Solution + +!media media/tutorial1.png + style=width:300px;padding-left:20px;float:right;clear:right; + caption=Diffusive Species Solution. + +# style=margin-top:3em; + +\begin{equation} + n_i(x) + = + \frac{ + k n_g l^2 + }{ + 8 D + } + \left[ + 1 - + \left( + \frac{2x}{l} + \right)^2 + \right] +\end{equation} diff --git a/doc/workshops/tutorial/content/examples/tutorial2.md b/doc/workshops/tutorial/content/examples/tutorial2.md new file mode 100644 index 00000000000..bbd095f749b --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial2.md @@ -0,0 +1,105 @@ +# Tutorial 2 - Reaction Network + +!--- + +# Problem Statement + +Consider a system of 3 species, $A, B, C$. + +- $A$ decays at a rate of $k_a$ into species $B$ +- $B$ decays at a rate of $k_b$ into species $C$ +- Species $C$ is a stable species + +The initial condition for this system is given by + +\begin{equation} + n_A(0) = n_{A_0} +\end{equation} + +\begin{equation} + n_B(0) = n_C(0) = 0 +\end{equation} + +!--- + +# System of Equations + +\begin{equation} + \pf{n_A}{t} + = + - k_A + n_A +\end{equation} + +\begin{equation} + \pf{n_B}{t} + = + k_A n_A + - + k_B n_B +\end{equation} + +\begin{equation} + \pf{n_C}{t} + = + k_B n_B +\end{equation} + +!--- + +### How would the reaction rates need to change to decrease the decay of $A$ and increase the growth of $B$? + +!listing tutorial/tutorial02-ReactionNetwork/transient-kinetics.i block=Reactions/Gas + + +!--- + +# Analytic Solution + +!media media/tutorial2.png + style=width:300px;padding-left:20px;float:right;clear:right; + caption=Species evolution over time. + + +# style=margin-top:2.5em; + +\begin{equation} + n_A(t) = + n_{A_0} + e^{-k_A t} +\end{equation} + +\begin{equation} + n_B(t) = + n_{A_0} + \frac{ + k_A + }{ + k_B - k_A + } + \left( + e^{-k_A t} + - + e^{-k_B t} + \right) +\end{equation} + + +\begin{equation} + n_C(t) + = + n_{A_0} + \left[ + 1 + + \frac{1}{ + k_A - k_B + } + \left( + k_B + e^{-k_A t} + - + k_A e^{-k_B t} + \right) + \right] +\end{equation} + diff --git a/doc/workshops/tutorial/content/examples/tutorial3-fenix.md b/doc/workshops/tutorial/content/examples/tutorial3-fenix.md new file mode 100644 index 00000000000..f249643f872 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial3-fenix.md @@ -0,0 +1,102 @@ +# Tutorial 3 - Kinetic Implementation using FENIX + +!media media/FENIX_logo_blue.png + style=width:30%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto;box-shadow:none; + +!style fontsize=130% halign=center +[https://mooseframework.inl.gov/fenix/](https://mooseframework.inl.gov/fenix/) + +!--- + +# style=margin-top:1em; + +# FENIX Intro + +As commercial interest in fusion energy has increased, the need for high-fidelity, multiphysics simulations of fusion devices has also increased. To address this, Idaho National Laboratory, North Carolina State University, the University of Illinois at Urbana-Champaign, and the United Kingdom Atomic Energy Authority are developing an open source application, the Fusion ENergy Integrated multiphys-X (FENIX) framework, for modeling plasma facing components. FENIX is built on the MOOSE framework and couples MOOSE ecosystem capabilities as well as external codes: + + +- [TMAP8](https://mooseframework.inl.gov/TMAP8/) (Tritium migration) +- [Cardinal](https://cardinal.cels.anl.gov) + + - Monte-Carlo Neutronics via [OpenMC](https://openmc.org) + - Computational Fluid Dynamics via [NekRS](https://nek5000.mcs.anl.gov) + +- [Electromagnetics Module](https://mooseframework.inl.gov/modules/electromagnetics/) +- [Ray Tracing Module](https://mooseframework.inl.gov/modules/ray_tracing/) (Kinetic Plasma Foundation) +- [Heat Transfer](https://mooseframework.inl.gov/modules/heat_transfer/index.html) +- [Solid Mechanics](https://mooseframework.inl.gov/modules/solid_mechanics/index.html) +- [Thermal Hydraulics](https://mooseframework.inl.gov/modules/thermal_hydraulics/index.html) + +!--- + +# style=margin-top:1em; + +# PIC in FENIX + + + +In [!cite](lieberman1994principles), this tutorial problem is solved with a PIC code, a core capability of FENIX still in-development. As a very basic benchmarking problem, the PIC example presented in [!cite](lieberman1994principles) has been replicated in FENIX. + + +- 100 Macroparticles are placed on a 100 element mesh +- Each particle is initially placed exactly in the center of each cell +- Leap Frog particle stepping is used +- $\Delta t$ = $1\times 10^{-9} [\text{s}]$ +- Total simulation time of $2.5\times 10^{-8} [\text{s}]$ +- The potential is represented with first order nodal basis functions + +# style=margin-top:1em; + + + +!--- + +# Results Comparison + +All figures show FENIX results superimposed on figures 2.2.a, 2.2.b, and 2.2.c from [!cite](lieberman1994principles). Results from [!cite](lieberman1994principles) are in black and grey while FENIX results are in color. + +!row! + +!media media/lieberman-particles.png + style=width:93%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto; + caption=Particle Population Evolution + +!media media/lieberman-potential.png + style=width:100%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto; + caption=Electrostatic Potential Evolution + +!media media/lieberman-vdf.png + style=width:100%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto; + caption=Particle Phase Space Evolution +!row-end! + +!--- + +# Current PIC Status + +### Verified Capabilities + +- Leap frog and Boris particle stepping +- Electrostatic capabilities using all first order finite elements in libMesh. +- Uniform random particle initialization for all first order finite elements in libMesh. + + - Bounding box particle initialization. + +### Under Development + +- Particle based current density source calculations. +- Particle collision capabilities. + +!--- + +# Future PIC Work + +- Continued verification efforts by replicating Kinetic instabilities + + - Landau Damping + - Two Stream + - Dory-Ghast-Haris Instability + +- Replicating more complex analytic plasma solutions +- Benchmarking against other codes +- Validation by replicating experimental conditions and data diff --git a/doc/workshops/tutorial/content/examples/tutorial3.md b/doc/workshops/tutorial/content/examples/tutorial3.md new file mode 100644 index 00000000000..d0bb3d6c423 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial3.md @@ -0,0 +1,80 @@ +# Tutorial 3 - Electric Field Driven Ion Loss + +!--- + +# style=margin-top:2em; + +# Problem Statement + +Consider a single species plasma, an ionic Argon plasma, in a one-dimensional system on the domain $x\in[0, l]$. In this system + +- There is an initial uniform distribution of singly charged Argon ions; +- The ion-only plasma is subject to the electric field generated by its own charge density; and +- The walls of this system destroy (or remove) ions. + +This is the same problem as described on page 26-27 of [!cite](lieberman1994principles). + +# style=margin-top:3.75em; + + +!--- + +# Sytem of Equations + +# style=margin-top:2em; + +\begin{equation} + \pf{n_i}{t} + + \nabla \cdot + \left[ + \left( + \mu_i + \nabla + \phi + \right) + n_i + - + D_i + \nabla + n_i + \right] + = + 0 +\end{equation} + + +\begin{equation} + - \nabla^2 + \phi + = + \frac{e n_i}{\varepsilon_0} +\end{equation} + +\begin{equation} + n_i(x, 0) = n_{i0} +\end{equation} + +\begin{equation} + n_i(0, t) = + n_i(l, t) = + 0 +\end{equation} + +!--- + +# style=margin-top:2em; + +### What would happen to the rate of the potential decay as pressure changes? + +!listing tutorial/tutorial03-PotentialWithIonLoss/ion-loss-for-IonOnlyPlasma.i block=Materials/GasBasics + +!style halign=left +!alert note +The ion mobility and diffusivity $\mu_i$ and $D_i$ are inversly proportional to the pressure. + +!--- + +# Solution Demonstration + +!media media/tutorial3.mp4 + style=width:35%;display:block;margin-top:1.5em;margin-left:auto;margin-right:auto;box-shadow:none; diff --git a/doc/workshops/tutorial/content/examples/tutorial4.md b/doc/workshops/tutorial/content/examples/tutorial4.md new file mode 100644 index 00000000000..e05b01e3097 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial4.md @@ -0,0 +1,35 @@ +# Tutorial 4 - Pressure versus Electron Temperature Parametric Study + +!--- + +# Problem Statement + +Consider an Argon capacitively coupled plasma (CCP). Utilize the [MOOSE Postprocessor system](syntax/Postprocessors/index.md) to calculate the volume-averaged electron temperature. + +!--- + +### How is the average electron temperature affected as the pressure is varied? + +!alert note +The background gas density, pressure in the electron material block, and ion mobility and diffusivity coefficients must all be changed for this study + +Background Gas Density + +!listing tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i block=AuxKernels/Ar_val + +!--- + +Pressure in the electron material block, and ion mobility and diffusivity coefficients. + +!listing tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i block=Materials start=[GasBasics] end=[gas_species_2] + +!--- + +# style=margin-top:1em; + +# Expected Output + +# style=margin-top:1em; + +!media media/tutorial4-out.png + style=width:50%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto; diff --git a/doc/workshops/tutorial/content/examples/tutorial5.md b/doc/workshops/tutorial/content/examples/tutorial5.md new file mode 100644 index 00000000000..19bf424fb14 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/tutorial5.md @@ -0,0 +1,24 @@ +# Tutorial 5 - Plasma-Water Interface + +!--- + +# Problem Statement + +Consider an Argon DC discharge over water. Within Zapdos, users can model material surface interfaces of plasma processes (in this case, electrons diffusing into a water’s surface). This is done using what is called the Interface System within Zapdos/MOOSE. + +!--- + +# style=margin-top:1.5em; + +!style fontsize=120% +The current input file assumes that all of the electrons enter the water. What will happen if we change the reflection coefficients at the boundary of the water for the electrons and the electron mean energy? + +!listing tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i block=BCs start=[em_physical_right] end=[mean_en_physical_right] + + +!--- + +# Expected Output + +!media media/tutorial5-out.png + style=width:30%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto; diff --git a/doc/workshops/tutorial/content/examples/visualization.md b/doc/workshops/tutorial/content/examples/visualization.md new file mode 100644 index 00000000000..5c9ac21c893 --- /dev/null +++ b/doc/workshops/tutorial/content/examples/visualization.md @@ -0,0 +1,9 @@ +# Brief Visualization Overivew + +!--- + +!include lineplot_visualization.md + +!--- + +!include global_model_visualization.md diff --git a/doc/workshops/tutorial/content/intro/capability_demo.md b/doc/workshops/tutorial/content/intro/capability_demo.md new file mode 100644 index 00000000000..9e603190245 --- /dev/null +++ b/doc/workshops/tutorial/content/intro/capability_demo.md @@ -0,0 +1,50 @@ +# Some selected results + +!--- + +# Electron Oscillation + +!media media/gec_reference.gif + style=width:75%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto;box-shadow:none; + caption=2D Electron Oscilation in the GEC reference cell + + +!--- + +# Experimental Validation: Metastable Profiles + +### Argon Ground To Plate [!cite](mcmillin1995two) style=margin-top:1em; + +# style=margin-top:-1em; + +!row! +!col! small=10 medium=4 large=4 icon=flash_on +!media media/100mTorr_75pp.png + style=width:58%;display:block;margin-top:0.5em;margin-left;auto;margin-bottom:0em;margin-top:3em; + caption=$\hspace{2em}$75 \[V\] peak to peak at 100 \[mTorr\] +!col-end! + +!col! small=12 medium=4 large=4 icon=flash_on +!media media/1Torr_75pp.png + style=width:95%;display:block;margin-top:0.5em;margin-left:-15em;margin-bottom:0em;margin-top:3em; + caption=$\hspace{2em}$75 \[V\] peak to peak at 100 \[Torr\] +!col-end! +!row-end! + +!--- + +# style=margin-top:0.5em; + +# MOOSE Electromagnetics + +!media media/dipole_antenna.mp4 + style=width:50%;display:block;margin-top:0.5em;margin-left:auto;margin-right:auto;box-shadow:none; + caption=The 2D electric field radiation pattern of a dipole antenna, modeled using the [Electromagnetics Module](https://mooseframework.inl.gov/modules/electromagnetics/index.html) + +!--- + +# Cost Jet Gas Mixing style=margin-top:1em + +!media media/cost_helium.mp4 + style=width:55%;display:block;margin-top:0.5em;margin-left:auto;margin-bottom:0em;margin-right:auto; + caption=Helium impinging on a plate in an Oxygen atmosphere diff --git a/doc/workshops/tutorial/content/intro/getting_started.md b/doc/workshops/tutorial/content/intro/getting_started.md new file mode 100644 index 00000000000..9dfa7b47432 --- /dev/null +++ b/doc/workshops/tutorial/content/intro/getting_started.md @@ -0,0 +1,13 @@ +# Getting started + ++Required for upcoming hands-on+ + +[Installing MOOSE](https://mooseframework.inl.gov/getting_started/installation/index.html) + +[Installing Zapdos](https://shannon-lab.github.io/zapdos/getting_started/installation.html) + +[Installing a text editor with input file syntax auto-complete (VSCode)](https://mooseframework.inl.gov/help/development/VSCode.html) + +[Installing visualization software (Paraview)](https://www.paraview.org/download/) + + diff --git a/doc/workshops/tutorial/content/intro/multi_fluid.md b/doc/workshops/tutorial/content/intro/multi_fluid.md new file mode 100644 index 00000000000..6307233527d --- /dev/null +++ b/doc/workshops/tutorial/content/intro/multi_fluid.md @@ -0,0 +1,506 @@ +# Zapdos Multi-fluid Equations + +!--- + +# Logarithmic and Logarithmic-Molar Form + +# style=margin-top:2em; + +In Zapdos, the logarithmic form or the logarithmic-molar form is used to calculate the species density. This is done for numerical stability and to prevent the calculation of nonphysical, negative densities by the numerical solver. The logarithmic form is given by + +\begin{equation} + N_i = \ln \left( n_i \right) +\end{equation} + +and the logarithmic-molar form is given by + +\begin{equation} + N_i = \ln \left( + \frac{n_i}{N_a} +\right) +\end{equation} + +Where $n_i$ is the traditional species density, $N_i$ is the modified species density, and $N_a$ is Avogadro's number + +!--- + +# Governing Equations + +!--- + +# Drift-Diffusion Approximation + +# style=margin-top:2em; + +\begin{equation} + \pf{n_i}{t} + + + \nabla \cdot \Gamma_i + = + \sum_j + S_{j,n} +\end{equation} + +where $i$ and $j$ denote some particle species, $n$ denotes the number of bodies in the source term, and $S_{j}$ denotes sources of species $j$ from chemical reactions. + +\begin{equation} + \Gamma_{\alpha} = + \mu_{\alpha} + \nabla \phi\; + n_\alpha + - + D_\alpha + \nabla n_\alpha +\end{equation} + +where $\mu_\alpha$ and $D_\alpha$ are the mobility and diffusivity of species $\alpha$ respectively, and $\phi$ is the electric potential. + +\begin{equation} + \Gamma_\beta = + - + D_\beta + \nabla n_\beta +\end{equation} + +where $\alpha$ denotes charged particles and $\beta$ denotes neutral particles. + +!--- + +# Source Terms (from [Crane](https://github.com/lcpp-org/crane)) + +# style=margin-top:1em; + +\begin{equation} + S_{i,1} + = + \nu k n_1 +\end{equation} + +\begin{equation} + S_{i, 2} + = + \nu k n_1 n_2 +\end{equation} + +\begin{equation} + S_{i, 3} + = + \nu k n_1 n_2 n_3 +\end{equation} + +Where $\nu$ is the stoichiometric coefficient of the reaction, $k$ is the reaction rate, and $n_i$ is the density of species $i$. + +!--- + +# Electromagnetic Field Calculations + +When evaluating an electrostatic system, Poisson's equation is used to calculate the electrostatic potential, + +\begin{equation} + - \nabla^2 \phi + = + \frac{\rho}{\varepsilon_0}, +\end{equation} + +where $e$ is the elementary charge, $\varepsilon_0$ is the permitivity of free space, and $\rho$ is the charge density in the system. + +Additionally, Zapdos is capable of calculating an effective electric field using the form + +\begin{equation} + \pf{\vec{E}_\text{eff}}{t} + = + \nu_\text{ion} + \left( + \vec{E} - \vec{E}_\text{eff} + \right). +\end{equation} + + +In cases where electromagnetic systems are considered, MOOSE's [Electromagnetics Module](https://mooseframework.inl.gov/modules/electromagnetics/) is used to perform field calculations. + +!--- + +# Energy Conservation + +# style=margin-top:2em; + +\begin{equation} + \pf{n_e \varepsilon}{t} + + + \nabla \cdot \Gamma_\varepsilon + = + - e \Gamma_e + \cdot + \nabla + \phi + - + 3 + \frac{m_e}{m_i} + n_e n_g + k_\text{elastic} + T_e + - + \sum_i E_i K_i +\end{equation} + +\begin{equation} + \Gamma_\epsilon + = + \frac{5}{3} + \left( + \epsilon + \Gamma_e + - + n_e + D_e + \nabla n_e + \right) +\end{equation} + +!--- + +# style=margin-top:4em; + +# Boundary Conditions (BCs) + +# style=margin-top:4em; + +!alert note +$\partial \Omega$ represents a boundary of the domain + +!--- + +# Electrostatic Potential Boundary Conditions + +# style=margin-top:2em; + +\begin{equation} + \phi + \left( + \partial \Omega + \right) + = + \phi_0 + \sin + \left( + 2 \pi + f t + \right) +\end{equation} + +\begin{equation} + \phi + \left( + \partial \Omega + \right) + = 0 +\end{equation} + +\begin{equation} + e \Gamma_i + \left( + \partial \Omega + \right) + - + e \Gamma_e + \left( + \partial \Omega + \right) + + + \varepsilon_0 + \pf{}{t} + \left( + \nabla \phi + \left( + \partial \Omega + \right) + \right) + = + \frac{\varepsilon_i}{d_i} + \pf{ + }{t} + \left( + \nabla \phi + \left( + \partial \Omega + \right) + \right) +\end{equation} + +!--- + +# Flux Boundary Conditions: Type 1 + +# style=margin-top:2em; + +\begin{equation} + \Gamma_i + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + -\mu_i + n_i + \nabla \phi + \left( + \partial \Omega + \right) + \cdot + \hat{n} +\end{equation} + +\begin{equation} + \Gamma_e + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + k_s n_e + \left( + \partial \Omega + \right) + \cdot + \hat{n} + - + \gamma + \Gamma_i + \left( + \partial \Omega + \right) +\end{equation} + +\begin{equation} + T_e + \left( + \partial \Omega + \right) + = C_0 +\end{equation} + + +!--- + +# Flux Boundary Conditions: Type 2 + +# style=margin-top:2em; + +\begin{equation} + \Gamma_i + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + -\mu_i + n_i + \nabla \phi_\text{eff} + \left( + \partial \Omega + \right) + \cdot + \hat{n} +\end{equation} + +\begin{equation} + \Gamma_e + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + \frac{1}{4} + \nu_\text{th,e} + n_e + \left( + \partial \Omega + \right) + \cdot + \hat{n} + - + \gamma + \Gamma_i + \left( + \partial \Omega + \right) +\end{equation} + +\begin{equation} + \Gamma_\varepsilon + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + \frac{1}{4} + \nu_\text{th,e} + \frac{5}{3} + \varepsilon + n_e + \left( + \partial \Omega + \right) + \cdot + \hat{n} + - + \frac{5}{3} + \varepsilon_{se} + \gamma + \Gamma_i + \left( + \partial \Omega + \right) +\end{equation} + +!--- + +# Flux Boundary Conditions: Type 3 + +# style=margin-top:2em; + +\begin{equation} + \Gamma_i + \left( + \partial \Omega + \right) + \cdot \hat{n} + = + \frac{ + 1 - r_i + }{ + 1 + r_i + } + \left[ + \left( + 2 a_i - 1 + \right) + \mu_i + n_i + \left( + \partial \Omega + \right) + \nabla \phi + \left( + \partial \Omega + \right) + \cdot + \hat{n} + + + \frac{1}{2} + \nu_\text{th, i} + n_i + \left( + \partial \Omega + \right) + \right] +\end{equation} + +\begin{equation} + \Gamma_e + \left( + \partial \Omega + \right) + \cdot \hat{n} + = + \frac{ + 1 - r_\text{dens} + }{ + 1 + r_\text{dens} + } + \left[ + - + \left( + 2 a_e - 1 + \right) + \mu_e + \left( + n_e + \left( + \partial \Omega + \right) + - n_\gamma + \left( + \partial \Omega + \right) + \right) + \nabla \phi + \left( + \partial \Omega + \right) + \cdot + \hat{n} + + + \frac{1}{2} + \nu_\text{th,e} + \left( + n_e \left( \partial \Omega \right) + - n_\gamma \left( \partial \Omega \right) + \right) + \right] +\end{equation} + +\begin{equation} + - + \left( + 1 - a_e + \right) + \gamma_p + \Gamma_p + \left( \partial \Omega \right) + \cdot + \hat{n} +\end{equation} + +\begin{equation} + \Gamma_\varepsilon + \left( + \partial \Omega + \right) + \cdot + \hat{n} + = + \frac{ + 1 - r_\text{en} + }{ + 1 + r_\text{en} + } + \left[ + - + \left( + 2 a_e - 1 + \right) + \frac{5}{3} + \mu_e + \left( + \varepsilon n_e \left( \partial \Omega \right) - + \varepsilon_\gamma n_\gamma \left( \partial \Omega \right) + \right) + \nabla \phi \left( \partial \Omega \right) + + + \frac{5}{6} + \nu_\text{th,e} + \left( + \varepsilon n_e \left( \partial \Omega \right) - + \varepsilon_\gamma n_\gamma \left( \partial \Omega \right) + \right) + \right] +\end{equation} + +\begin{equation} + - + \frac{5}{3} + \varepsilon_\gamma + \left( + 1 - a_e + \right) + \gamma_p + \Gamma_p \left( \partial \Omega \right) + \cdot + \hat{n} +\end{equation} diff --git a/doc/workshops/tutorial/content/intro/plasma_models.md b/doc/workshops/tutorial/content/intro/plasma_models.md new file mode 100644 index 00000000000..521e211353b --- /dev/null +++ b/doc/workshops/tutorial/content/intro/plasma_models.md @@ -0,0 +1,58 @@ +# Computational Plasma Models + +!--- + +!style halign=center +!media media/plasma_models.png + +!--- + +# Global Models + +- Volume Averaged and Simplified Kinetics + +- Spatially independent simulations provide: + + - Volume-averaged plasma parameters. + - Energy-dependent coefficients. + + +!--- + +# Fuild Models (Zapdos) + +- Local Field Approximation (LFA). +- Local Mean Energy Approximation (LMEA). +- Monte Carlo Fluids (MCF). + +- Typically utilizes the first two or three moments of the Boltzmann equation +- Particle species are represented as continuous fluids. + + - Various assumptions can be used for energy-dependent phenomena. + + +!--- + +# Higher Order and Hybrid Models + + +- Higher order fluid models +- Hybrid particle-fluid models + + +- Higher order models utilize higher order moments of the Boltzmann equation. +- Hybrid models represent a fraction of a species, a single species, or multiple species in a fully-kinetic manner. + +!--- + +# Kinetic Particle Methods + +- Direct Kinetic Methods +- Molecular Dynamics (MD) +- Particle In Cell (PIC) with Monte Carlo Collisions (MCC) + +- Individual particles or groups of particles are tracked. + + - Direct Kinetic Models explicity solve the Boltzmann equation. + - In MD models, inter-molecular forces between particles are calculated and used to update paricle data. + - In PIC-MCC models, individual particles are traced and are subject to macroscopic fields and particle-particle Monte Carlo collisions. diff --git a/doc/workshops/tutorial/content/intro/zapdos.md b/doc/workshops/tutorial/content/intro/zapdos.md new file mode 100644 index 00000000000..6d3425fdca3 --- /dev/null +++ b/doc/workshops/tutorial/content/intro/zapdos.md @@ -0,0 +1,50 @@ +# Zapdos Introduction + +!--- + +# Zapdos Overview + +- Zapdos is an open source multi-fluid plasma code, that: + + - Utilizes the finite element method, and + - Solves for species densities in log-molar form. + + +- As a MOOSE-based application, Zapdos can take advantage of: + + - Scalable parallel computing, and + - Flexible multiphysics coupling. + +!--- + +# Current Research Efforts style=margin-top:1em; + +- Validation and Verification + + - Modeling physical systems and comparing to experimental results. + - Utilizing the Method of Manufactured Solutions (MMS) to ensure correct implementation. + +!row! +!col! small=12 medium=4 large=4 icon=flash_on +!media media/experimental.png + style=width:40%;display:block;margin-top:-0.5em;margin-left:3em;margin-right:auto; + caption=Experimental Comparison with results from [!cite](greenberg1993electron). + +!col-end! + +!col! small=12 medium=4 large=4 icon=flash_on +!media media/mms.png + style=width:37%;display:block;margin-top:-0.5em;margin-left:-5em;margin-right:auto; + caption=1D MMS Convergence study results for a single ionic species, electrons and mean electron energy. + +!col-end! +!row-end! + +!--- + +# Code Development + +- Improving physics +- Electromagnetic coupling +- Improving the user interface +- Finite volume implementation diff --git a/doc/workshops/tutorial/content/media/100mTorr_150pp.png b/doc/workshops/tutorial/content/media/100mTorr_150pp.png new file mode 100644 index 00000000000..a9ad8b0e986 Binary files /dev/null and b/doc/workshops/tutorial/content/media/100mTorr_150pp.png differ diff --git a/doc/workshops/tutorial/content/media/100mTorr_75pp.png b/doc/workshops/tutorial/content/media/100mTorr_75pp.png new file mode 100644 index 00000000000..e2f9ab9e5d3 Binary files /dev/null and b/doc/workshops/tutorial/content/media/100mTorr_75pp.png differ diff --git a/doc/workshops/tutorial/content/media/1Torr_150pp.png b/doc/workshops/tutorial/content/media/1Torr_150pp.png new file mode 100644 index 00000000000..54c310b07c5 Binary files /dev/null and b/doc/workshops/tutorial/content/media/1Torr_150pp.png differ diff --git a/doc/workshops/tutorial/content/media/1Torr_75pp.png b/doc/workshops/tutorial/content/media/1Torr_75pp.png new file mode 100644 index 00000000000..d3061590e99 Binary files /dev/null and b/doc/workshops/tutorial/content/media/1Torr_75pp.png differ diff --git a/doc/workshops/tutorial/content/media/FENIX_logo_blue.png b/doc/workshops/tutorial/content/media/FENIX_logo_blue.png new file mode 100644 index 00000000000..03d1d097274 Binary files /dev/null and b/doc/workshops/tutorial/content/media/FENIX_logo_blue.png differ diff --git a/doc/workshops/tutorial/content/media/cost_helium.mp4 b/doc/workshops/tutorial/content/media/cost_helium.mp4 new file mode 100644 index 00000000000..b6ee6261775 Binary files /dev/null and b/doc/workshops/tutorial/content/media/cost_helium.mp4 differ diff --git a/doc/workshops/tutorial/content/media/cost_velocity.mp4 b/doc/workshops/tutorial/content/media/cost_velocity.mp4 new file mode 100644 index 00000000000..79df0a9364a Binary files /dev/null and b/doc/workshops/tutorial/content/media/cost_velocity.mp4 differ diff --git a/doc/workshops/tutorial/content/media/dipole_antenna.mp4 b/doc/workshops/tutorial/content/media/dipole_antenna.mp4 new file mode 100644 index 00000000000..02309b4f608 Binary files /dev/null and b/doc/workshops/tutorial/content/media/dipole_antenna.mp4 differ diff --git a/doc/workshops/tutorial/content/media/experimental.png b/doc/workshops/tutorial/content/media/experimental.png new file mode 100644 index 00000000000..8dbb9fbc78f Binary files /dev/null and b/doc/workshops/tutorial/content/media/experimental.png differ diff --git a/doc/workshops/tutorial/content/media/gec_reference.gif b/doc/workshops/tutorial/content/media/gec_reference.gif new file mode 100644 index 00000000000..85d363f0d10 Binary files /dev/null and b/doc/workshops/tutorial/content/media/gec_reference.gif differ diff --git a/doc/workshops/tutorial/content/media/lieberman-particles.png b/doc/workshops/tutorial/content/media/lieberman-particles.png new file mode 100644 index 00000000000..e5b072f5a65 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lieberman-particles.png differ diff --git a/doc/workshops/tutorial/content/media/lieberman-potential.png b/doc/workshops/tutorial/content/media/lieberman-potential.png new file mode 100644 index 00000000000..45f4a6bde7d Binary files /dev/null and b/doc/workshops/tutorial/content/media/lieberman-potential.png differ diff --git a/doc/workshops/tutorial/content/media/lieberman-vdf.png b/doc/workshops/tutorial/content/media/lieberman-vdf.png new file mode 100644 index 00000000000..13cff4771fa Binary files /dev/null and b/doc/workshops/tutorial/content/media/lieberman-vdf.png differ diff --git a/doc/workshops/tutorial/content/media/lineplot_visualization/step1.png b/doc/workshops/tutorial/content/media/lineplot_visualization/step1.png new file mode 100644 index 00000000000..90559051cf8 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lineplot_visualization/step1.png differ diff --git a/doc/workshops/tutorial/content/media/lineplot_visualization/step2.png b/doc/workshops/tutorial/content/media/lineplot_visualization/step2.png new file mode 100644 index 00000000000..5c6ef818b15 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lineplot_visualization/step2.png differ diff --git a/doc/workshops/tutorial/content/media/lineplot_visualization/step3.png b/doc/workshops/tutorial/content/media/lineplot_visualization/step3.png new file mode 100644 index 00000000000..0e1761d84d6 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lineplot_visualization/step3.png differ diff --git a/doc/workshops/tutorial/content/media/lineplot_visualization/step4.png b/doc/workshops/tutorial/content/media/lineplot_visualization/step4.png new file mode 100644 index 00000000000..9ad1fc1c2e1 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lineplot_visualization/step4.png differ diff --git a/doc/workshops/tutorial/content/media/lineplot_visualization/step5.png b/doc/workshops/tutorial/content/media/lineplot_visualization/step5.png new file mode 100644 index 00000000000..0cab41cd1e2 Binary files /dev/null and b/doc/workshops/tutorial/content/media/lineplot_visualization/step5.png differ diff --git a/doc/workshops/tutorial/content/media/mms.png b/doc/workshops/tutorial/content/media/mms.png new file mode 100644 index 00000000000..c3e0a10916d Binary files /dev/null and b/doc/workshops/tutorial/content/media/mms.png differ diff --git a/doc/workshops/tutorial/content/media/ncsu_slide_background.png b/doc/workshops/tutorial/content/media/ncsu_slide_background.png new file mode 100644 index 00000000000..c440f25abee Binary files /dev/null and b/doc/workshops/tutorial/content/media/ncsu_slide_background.png differ diff --git a/doc/workshops/tutorial/content/media/plasma_models.png b/doc/workshops/tutorial/content/media/plasma_models.png new file mode 100644 index 00000000000..fc206640a47 Binary files /dev/null and b/doc/workshops/tutorial/content/media/plasma_models.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial1.png b/doc/workshops/tutorial/content/media/tutorial1.png new file mode 100644 index 00000000000..5685addb05e Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial1.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2.png b/doc/workshops/tutorial/content/media/tutorial2.png new file mode 100644 index 00000000000..788f8274a86 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2_visualization/step1.png b/doc/workshops/tutorial/content/media/tutorial2_visualization/step1.png new file mode 100644 index 00000000000..178083c49f5 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2_visualization/step1.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2_visualization/step2.png b/doc/workshops/tutorial/content/media/tutorial2_visualization/step2.png new file mode 100644 index 00000000000..fdbaccf129f Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2_visualization/step2.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2_visualization/step3.png b/doc/workshops/tutorial/content/media/tutorial2_visualization/step3.png new file mode 100644 index 00000000000..8c6c3de3c9e Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2_visualization/step3.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2_visualization/step4.png b/doc/workshops/tutorial/content/media/tutorial2_visualization/step4.png new file mode 100644 index 00000000000..8899a5d4407 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2_visualization/step4.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial2_visualization/step5.png b/doc/workshops/tutorial/content/media/tutorial2_visualization/step5.png new file mode 100644 index 00000000000..8ba64c6d97c Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial2_visualization/step5.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial3.gif b/doc/workshops/tutorial/content/media/tutorial3.gif new file mode 100644 index 00000000000..4a1fb4388f3 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial3.gif differ diff --git a/doc/workshops/tutorial/content/media/tutorial3.mp4 b/doc/workshops/tutorial/content/media/tutorial3.mp4 new file mode 100644 index 00000000000..db11f608c37 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial3.mp4 differ diff --git a/doc/workshops/tutorial/content/media/tutorial4-out.png b/doc/workshops/tutorial/content/media/tutorial4-out.png new file mode 100644 index 00000000000..e2198c61047 Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial4-out.png differ diff --git a/doc/workshops/tutorial/content/media/tutorial5-out.png b/doc/workshops/tutorial/content/media/tutorial5-out.png new file mode 100644 index 00000000000..59c45d95a8e Binary files /dev/null and b/doc/workshops/tutorial/content/media/tutorial5-out.png differ diff --git a/doc/workshops/tutorial/index.md b/doc/workshops/tutorial/index.md new file mode 100644 index 00000000000..497680f9e61 --- /dev/null +++ b/doc/workshops/tutorial/index.md @@ -0,0 +1,69 @@ +# Zapdos Workshop + +!style halign=center fontsize=150% +!datetime today format=%B %Y + +!style halign=center +[https://shannon-lab.github.io/zapdos/](index.md exact=True) + +!--- + +!include intro/plasma_models.md + +!--- + +!include workshop/intro/moose_introduction.md + +!--- + +!include intro/zapdos.md + +!--- + +!include intro/capability_demo.md + +!--- + +!include intro/multi_fluid.md + +!--- + +!include intro/getting_started.md + +!--- + +!include examples/visualization.md + + +!--- + +!include examples/tutorial1.md + +!--- + +!include examples/tutorial2.md + +!--- + +!include helpful_resources.md + +!--- + +!include examples/tutorial3.md + +!--- + +!include examples/tutorial3-fenix.md + + +!--- + +!include examples/tutorial4.md + +!--- + +!include examples/tutorial5.md + +!--- + +!bibtex bibliography diff --git a/tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i b/tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i index f57e0af79fd..f6bdb863d54 100644 --- a/tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i +++ b/tutorial/tutorial04-PressureVsTe/RF_Plasma_WithOut_Metastables-1Torr.i @@ -255,8 +255,8 @@ dom0Scale = 1.0 mobility = 0.144409938 diffusivity = 6.428571e-3 [] - #The material properties of the background gas [gas_species_2] + #The material properties of the background gas type = ADHeavySpecies heavy_species_name = Ar heavy_species_mass = 6.64e-26 diff --git a/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i b/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i index bec10c908a7..f45463de315 100644 --- a/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i +++ b/tutorial/tutorial05-PlasmaWaterInterface/DC_argon-With-Water.i @@ -308,9 +308,8 @@ dom1Scale = 1e-7 r = 0 position_units = ${dom0Scale} [] - - #Mean electron energy on the plasma-liquid interface [mean_en_physical_right] + #Mean electron energy on the plasma-liquid interface type = HagelaarEnergyBC variable = mean_en boundary = 'master0_interface'