aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: ba4816f5d4338872e5f0318fb4c051f95434ab79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Installation
## Dependencies
Schroedinger was build and tested using the following dependency list. Any
deviation may result in Schroedinger not working properly

- python 3.12+
- matplotlib 3.8.2
- numpy 2.0.0
- scipy 1.12.0
- pytest (optional, tests)
- build (optional, wheel creation)
- sphinx 5.1.1 (optional, documentation)
- sphix book theme (optional, documentation)

## Compile
To compile schroedinger and generate a wheel package in the `dist` folder run

    python -m build -w

## Documentation
Documentation is stored in the `docs` folder and can be generated by running

    cd docs
    make html

# schrodinger\_solve
Solves the one-dimensional, time independent Schroedinger's equation for a given
system and generates files with the energies, potential, wave functions and
expectation value of the position of the particles. schrodinger\_solve takes a
file describing the parameters to use and the potential (see below for file
format).

## Usage
```text
schrodinger_solve [-h] [-o OUTPUT_DIR] filename
```

## Options
```text
positional arguments:
  filename              File describing the system to solve

options:
  -h, --help            show this help message and exit
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Output directory for the results
```

## Input file format
The input file format consist of a five line header followed by a csv style, two
column table describing the potential. Lines in the header that specify multiple
parameters are separated by whitespace characters (tab or space). Parameters
must be given in a fixed order. Comments discard the rest of the line and
may be added with a `#` character. An empty line is discarded and the next
non-empty line specifies the next parameter. A concrete example is given below.

```text
<mass>
<x-min> <x-max> <n-points>
<first-eigenvalue> <last-eigenvalue>
<interpolation-type>
<n>
<x1> <y1>
<x2> <y2>
...
<xn> <yn>
```

- mass: (real) Mass of the particle
- x-min, x-max: (real) Solution interval
- n-points: (integer) Number of points in the discretization of the solution
                    interval
- first-eigenvalue, last-eigenvalue: (integer) Interval of energy eigenvalues to
                                               generate

Further examples can be found in the subfolders inside `test`

# schrodinger\_plot

Plots the solutions of schrodinger\_solve. Visualises the given potential
together with the eigenstates and the probability density. Also plots the
standard deviation of each energy level.

Solutions of schrodinger_solve must be in a directory together for
schrodinger\_plot to visualise them. Solution files must keep names given by
schrodinger\_solve.

The plot generated by schrodinger_plot can be altered with different scale and
axis limits to better visualize the solution. If no custom scale or limits are
given schrodinger\_solve will limit the plot by the limits of the potential as
well as the energies of the solution for a better initial result.

## Usage
```text
schrodinger_plot.py [-h] [-s SOLUTION_DIR] [-o OUTPUT_DIR] [--show SHOW] [-e EXPORT] [--scale SCALE] [-x XLIM] [-y1 ENERGY_LIM] [-y2 UNCERTAINTY_LIM]
```
## Options
```text
-h, --help            show a help message
-s SOLUTION_DIR --solution_dir
                      the path of the solution directory (default: None)
-o OUTPUT_DIR --output_dir
                      the path where the pdf should be saved (default: None)
--show SHOW           Boolean, if True the plot is shown directly (default:
                      True)
-e EXPORT --export
                      Boolean, if True the plot is exported as a pdf
                      (default: True)
--scale SCALE         Float, scales the wave functions (default: 1.0)
-x XLIM --xlim        Limit of the x-axis of the left plot. None or
                      tuple[float, float] of shape (x_min, x_max)(default:
                      None)
-y1 ENERGY_LIM --energy_lim
                      Limit of the y-axis of the left plot. None or
                      tuple[float, float] of shape (y_min, y_max)(default:
                      None)
-y2 UNCERTAINTY_LIM --uncertainty_lim
                      Limit of the y-axis of the right plot. None or
                      tuple[float, float] of shape (y_min, y_max)(default:
                      None)
```