Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vlasov1D documentation update #64

Merged
merged 1 commit into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
# ADEPT

![ADEPT](./docs/source/adept-logo.png)

ADEPT is an **A**utomatic **D**ifferentation **E**nabled **P**lasma **T**ransport code.

## Installation
Expand Down
3 changes: 3 additions & 0 deletions adept/vlasov1d/solvers/vector_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ class TimeIntegrator:
This is the base class for all time integrators. This makes it so that we dont have to
load the electric field solver and the Vlasov pushers in every time integrator

The available solvers for E df/dv are "exponential" and "cubic-spline"
The only solver for v df/dx is "exponential"

:param cfg: Dict

"""
Expand Down
5 changes: 5 additions & 0 deletions docs/source/solvers/datamodels/vlasov1d.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

Each of these items is actually a dictionary. These dictionaries, once initialized, need to be compiled into a megadictionary that is passed to the solver. This is basically the contents of the ``yaml`` files that are in the repo.

.. automodule:: adept.vlasov1d.datamodel
:members:
48 changes: 44 additions & 4 deletions docs/source/solvers/vlasov1d1v.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,48 @@ The electric field can be "driven" using :math:`E_D` which is a user defined fun

Solver Options
================
This is where we should have a list of the different solvers that can be chosen including the collision operator. #TODO

Configuration parameters
========================
This is where there should be a line by line explanation of everything in a config file... #TODO
Velocity space advection
=========================
1. ``exponential`` - This solver (incorrectly) assumes periodic boundaries in the velocity direction and uses a direct exponential solve such that

.. math::
f^{n+1} = f^n \times \exp(A*dt)

where :math:`A` is the advection operator. This is a much faster solver than the cubic-spline solver, but is less accurate. Use this if you are confident that the distribution function will be well behaved in the tails

2. ``cubic-spline`` - This is a semi-Lagrangian solver that uses a cubic-spline interpolator to advect the distribution function in velocity space. Use this if you have trouble with the exponential solver.


Spatial advection
=================
1. ``exponential`` - This is the only solver that is available. We only have periodic boundaries implemented in space (for the plasma) so this is perfectly fine. It is also very fast.


Field solver
============

1. ``poisson`` - This is the only field solver that is available. It uses a spectral solver to solve the Poisson equation. This is the fastest and most accurate solver available.
2. ``hampere`` - This solver uses a Hamiltonian formulation of the Vlasov-Ampere system that conserves energy exactly. This is the 2nd most reliable solver.
3. ``ampere`` - This solver uses the Ampere's law to solve for the electric field.

Collisions
==========
1. ``none`` - No collisions are included in the simulation
2. ``lenard-bernstein`` - This solver uses the Lenard-Bernstein collision operator to include collisions in the simulation.
3. ``daugherty`` - This solver uses the Daugherty collision operator to include collisions in the simulation.


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.vlasov1d.datamodel.ConfigModel
:members: __init__

Each of the objects used to initialize this datamodel are defined in the following classes.

.. toctree::
datamodels/vlasov1d
:maxdepth: 1
:caption: Configuration Options: