Skip to content

Commit

Permalink
Merge pull request #103 from ytdHuang/dev/HEOMsolve
Browse files Browse the repository at this point in the history
Introduce `HEOMsolve` and `TimeEvolutionHEOMSol`
  • Loading branch information
ytdHuang authored Sep 15, 2024
2 parents 015f597 + cb272f5 commit e386770
Show file tree
Hide file tree
Showing 35 changed files with 731 additions and 835 deletions.
2 changes: 1 addition & 1 deletion docs/src/ADOs.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ In `HierarchicalEOM.jl`, we express all the auxiliary density operators into a s

[`struct ADOs`](@ref ADOs),

which is usually obtained after solving the time [evolution](@ref doc-Time-Evolution) or [stationary state](@ref doc-Stationary-State) by a given [HEOM Liouvillian superoperator Matrix](@ref doc-HEOMLS-Matrix).
which is usually obtained after solving the [time evolution](@ref doc-Time-Evolution) or [stationary state](@ref doc-Stationary-State) by a given [HEOM Liouvillian superoperator Matrix](@ref doc-HEOMLS-Matrix).

## Fields
The fields of the structure [`ADOs`](@ref) are as follows:
Expand Down
2 changes: 1 addition & 1 deletion docs/src/ODE_solvers.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ using OrdinaryDiffEq ## or "using DifferentialEquations"

(click [here](https://docs.sciml.ai/DiffEqDocs/stable/solvers/ode_solve/) to see the full solver list provided by `DifferentialEquations.jl`)

For any extra solver options, we can add it in the function `evolution` with keyword arguments. These keyword arguments will be directly pass to the solvers in `DifferentialEquations`
For any extra solver options, we can add it in the function `HEOMsolve` with keyword arguments. These keyword arguments will be directly pass to the solvers in `DifferentialEquations`
(click [here](https://docs.sciml.ai/DiffEqDocs/stable/basics/common_solver_opts/) to see the documentation for the common solver options)

### DP5 (Default solver)
Expand Down
6 changes: 3 additions & 3 deletions docs/src/extensions/CUDA.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,18 +69,18 @@ ados_ss = steadystate(M_even_cpu);
```

!!! note "Note"
This extension does not support for solving [stationary state](@ref doc-Stationary-State) on GPU since it is not efficient and might get wrong solutions. If you really want to obtain the stationary state with GPU, you can repeatedly solve the [`evolution`](@ref doc-Time-Evolution) until you find it.
This extension does not support for solving [stationary state](@ref doc-Stationary-State) on GPU since it is not efficient and might get wrong solutions. If you really want to obtain the stationary state with GPU, you can repeatedly solve the [time evolution](@ref doc-Time-Evolution) until you find it.

### Solving time evolution with CPU

```julia
ados_list_cpu = evolution(M_even_cpu, ρ0, tlist)
ados_list_cpu = HEOMsolve(M_even_cpu, ρ0, tlist)
```

### Solving time evolution with GPU

```julia
ados_list_gpu = evolution(M_even_gpu, ρ0, tlist)
ados_list_gpu = HEOMsolve(M_even_gpu, ρ0, tlist)
```

### Solving Spectrum with CPU
Expand Down
2 changes: 1 addition & 1 deletion docs/src/heom_matrix/M_Boson.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ The fields of the structure [`M_Boson`](@ref) are as follows:
- `bath::Vector{BosonBath}` : the vector which stores all [`BosonBath`](@ref doc-Bosonic-Bath) objects
- `hierarchy::HierarchyDict`: the object which contains all [dictionaries](@ref doc-Hierarchy-Dictionary) for boson-bath-ADOs hierarchy.

One obtain the value of each fields as follows:
One can obtain the value of each fields as follows:
```julia
M::M_Boson

Expand Down
2 changes: 1 addition & 1 deletion docs/src/heom_matrix/M_Boson_Fermion.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The fields of the structure [`M_Boson_Fermion`](@ref) are as follows:
- `Fbath::Vector{FermionBath}` : the vector which stores all [`FermionBath`](@ref doc-Fermionic-Bath) objects
- `hierarchy::MixHierarchyDict`: the object which contains all [dictionaries](@ref doc-Hierarchy-Dictionary) for mixed-bath-ADOs hierarchy.

One obtain the value of each fields as follows:
One can obtain the value of each fields as follows:
```julia
M::M_Boson_Fermion

Expand Down
2 changes: 1 addition & 1 deletion docs/src/heom_matrix/M_Fermion.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ The fields of the structure [`M_Fermion`](@ref) are as follows:
- `bath::Vector{FermionBath}` : the vector which stores all [`FermionBath`](@ref doc-Fermionic-Bath) objects
- `hierarchy::HierarchyDict`: the object which contains all [dictionaries](@ref doc-Hierarchy-Dictionary) for fermion-bath-ADOs hierarchy.

One obtain the value of each fields as follows:
One can obtain the value of each fields as follows:
```julia
M::M_Fermion

Expand Down
2 changes: 1 addition & 1 deletion docs/src/heom_matrix/schrodinger_eq.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ The fields of the structure [`M_S`](@ref) are as follows:
- `sup_dim` : the dimension of system superoperator
- `parity::AbstractParity` : the [parity](@ref doc-Parity) label of the operator which HEOMLS is acting on.

One obtain the value of each fields as follows:
One can obtain the value of each fields as follows:
```julia
M::M_S

Expand Down
7 changes: 4 additions & 3 deletions docs/src/libraryAPI.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,14 @@ getIndexEnsemble
```

## [Time Evolution](@id lib-Time-Evolution)
There are six function definitions of `evolution`, which depend on different input types and methods to solve the time evolution:
There are two function definitions of `HEOMsolve`, which depend on different methods to solve the time evolution:
```@docs
evolution
HEOMsolve
TimeEvolutionHEOMSol
```

## Stationary State
There are three function definitions of `steadystate`, which depend on different input types and methods to solve the stationary state:
There are two function definitions of `steadystate`, which depend on different methods to solve the stationary state:
```@docs
steadystate
```
Expand Down
Loading

2 comments on commit e386770

@ytdHuang
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/115214

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v2.2.0 -m "<description of version>" e386770cf996190218e3fca4b95e34c83ae3abfe
git push origin v2.2.0

Please sign in to comment.