Skip to content

Commit

Permalink
TPD solver documentation (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
joglekara authored Sep 15, 2024
1 parent 69cae76 commit d489391
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 8 deletions.
6 changes: 0 additions & 6 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,6 @@ ADEPT

**ADEPT** is a set of **A** utomatic **D** ifferentation **E** nabled **P** lasma **T** ransport solvers.

So far, we have implemented the following solvers

1. Vlasov-Poisson-Fokker-Planck 1D1V
2. Two fluid - Poisson system in 1D
3. Zakharov Equations for Two Plasmon Decay in 2D
4. Vlasov-Poisson-Fokker-Planck (spherical harmonic decomposition) 1D3V

Examples
----------
Expand Down
2 changes: 2 additions & 0 deletions docs/source/solvers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ The solvers that we have implemented (and documented) so far are

.. toctree::
solvers/vlasov1d1v
solvers/lpse2d
solvers/vfp1d
:maxdepth: 3
:caption: Implemented solvers:
41 changes: 41 additions & 0 deletions docs/source/solvers/datamodels/lpse2d.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Configuration Options
======================
``ADEPT`` needs a ``yaml`` file with the following datamodel to run the simulation. The datamodel is defined in the following class.

.. autoclass:: adept._lpse2d.datamodel.ConfigModel
:members: __init__

Each of the objects used to initialize this datamodel can be treated just like dictionaries. Each dictionary needs to be compiled into a megadictionary that is passed to the solver.
The ``yaml`` configs accomplish this because a ``yaml`` is also a nested dictionary. The following documents those classes

High Level
-----------
These are the high level configuration options for the LPSE2D solver. Each of these either contains a fundamental type such as
``bool``, ``int``, ``float``, or ``str`` or is another nested ``datamodel`` which can be treated just like a dictionary.

.. autoclass:: adept._lpse2d.datamodel.UnitsModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.DensityModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.GridModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.SaveModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.MLFlowModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.DriverModel
:members: __init__

.. autoclass:: adept._lpse2d.datamodel.TermsModel
:members: __init__


Low Level
----------

The documentation for the nested datamodels is still TBD. To investigate them further, go to the source code.
44 changes: 44 additions & 0 deletions docs/source/solvers/lpse2d.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
Enveloped equations in Cartesian 2D
====================================



Equations and Quantities
-------------------------
These equations model the evolution and interaction of the complex envelopes of light waves and plasma waves. This is faster than modeling the plasma waves using a fluid or kinetic solver along with modeling the light waves

Note on pump depletion
^^^^^^^^^^^^^^^^^^^^^^^^
One can solve these equations with or without "pump depletion". "Pump depletion" is the effect of the plasma waves on the light waves. We do not currently have this implemented, so we have light waves that behave as external drivers for the plasma waves and we only model the plasma wave response.
This approach is adequate for modeling laser plasma instabilities below the absolute instability threshold.

Electron Plasma Waves
^^^^^^^^^^^^^^^^^^^^^^^

.. math::
\nabla \cdot \left[ i \left(\frac{\partial}{\partial t} + \nu_e^{\circ} \right) + \frac{3 v_{te}^2}{2 \omega_{p0}} \nabla^2 + \frac{\omega_{p0}}{2}\left(1-\frac{n_b(x)}{n_0}\right) \right] \textbf{E}_h = S_{TPD} + S_h
Two Plasmon Decay
^^^^^^^^^^^^^^^^^^^^

.. math::
S_{\text{TPD}} \equiv \frac{e}{8 \omega_{p0} m_e} \frac{n_b(x)}{n_0} \nabla \cdot [\nabla (\textbf{E}_0 \cdot \textbf{E}_h^*) - \textbf{E}_0 \nabla\cdot \textbf{E}_h^*] e^{-i (\omega_0 - 2 \omega_{p0})t}
Laser Driver
^^^^^^^^^^^^^^^
We only have a plane wave implementation for now

.. math::
E_0(t, x, y) = \sum_j^{N_c} A_j ~ \exp(-i k_0 x - i \omega_0 \Delta\omega_j ~ t + \phi_j)
Configuration Options
----------------------

As with all other solvers, the configuration is passed in via a ``yaml`` file. The datamodel for the configuration is documented below

.. toctree::
datamodels/lpse2d
:maxdepth: 3
:caption: Configuration Options:
10 changes: 10 additions & 0 deletions docs/source/solvers/vfp1d.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Implicit Cartesian-Spherical Harmonics Vlasov-Fokker-Planck in 1D3V
=====================================================================

This set of solvers is usually used to model electron transport over hydrodynamic / collisional time-scales while the other Vlasov solvers in ``ADEPT`` are for
modeling over electron plasma wave time-scales.

Equations and Quantities
-------------------------

TODO
4 changes: 2 additions & 2 deletions docs/source/solvers/vlasov1d1v.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Vlasov 1D1V
=================
Explicit Cartesian-Cartesian Vlasov 1D1V
=========================================

Equations and Quantities
-------------------------
Expand Down

0 comments on commit d489391

Please sign in to comment.