Skip to content

Commit ccbd1e9

Browse files
author
Documenter.jl
committed
build based on 284ffe6
1 parent 844503b commit ccbd1e9

File tree

94 files changed

+22099
-47320
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+22099
-47320
lines changed
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-01T14:07:21","documenter_version":"1.7.0"}}
1+
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-05T15:26:47","documenter_version":"1.7.0"}}

previews/PR357/NQCDistributions/overview/index.html

+5-5
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99

1010
velocity = VelocityBoltzmann(300u"K", rand(10), (3, 10))
1111
rand(velocity)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">3×10 Matrix{Float64}:
12-
0.139694 0.00776381 -0.0184636 … 0.0420981 0.0115437 -0.0157918
13-
-0.0723092 -0.0143713 -0.0535546 -0.00301865 0.0153516 -0.0882958
14-
0.00220082 0.0158931 -0.0199797 0.0134671 0.043578 0.0314472</code></pre><p>This can be handed directly to the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.DynamicalDistribution"><code>DynamicalDistribution</code></a> when Boltzmann velocities are required.</p><pre><code class="language-julia hljs">distribution = DynamicalDistribution(velocity, 1, (3, 10))
15-
rand(distribution)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">ComponentVector{Float64}(v = [0.04097042631383982 0.0051706894872132324 … 0.03422632789221363 -0.035202320363929944; 0.037539771403845214 -0.011010307673909245 … 0.09505678424152456 0.017015523064879235; 0.006054790515431037 0.014368190465949286 … -0.08026406045314782 -0.06835143175199765], r = [1.0 1.0 … 1.0 1.0; 1.0 1.0 … 1.0 1.0; 1.0 1.0 … 1.0 1.0])</code></pre><h3 id="Wigner-distributions"><a class="docs-heading-anchor" href="#Wigner-distributions">Wigner distributions</a><a id="Wigner-distributions-1"></a><a class="docs-heading-anchor-permalink" href="#Wigner-distributions" title="Permalink"></a></h3><p>For harmonic oscillator systems, we have implemented the analytic Wigner distribution. These are just mormal distributions of the appropriate width but can be accessed easily as in the following:</p><pre><code class="language-julia-repl hljs" style="display:block;">julia&gt; using NQCDistributions</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; omega = 1.0;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; beta = 1e-3;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; mass = 10;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; dist = PositionHarmonicWigner(omega, beta, mass, centre=0.0)</code><code class="nohighlight hljs ansi" style="display:block;">Distributions.Normal{Float64}(μ=0.0, σ=10.000000416666651)</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; rand(dist)</code><code class="nohighlight hljs ansi" style="display:block;">-6.300725216994434</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; dist = VelocityHarmonicWigner(omega, beta, mass)</code><code class="nohighlight hljs ansi" style="display:block;">Distributions.Normal{Float64}(μ=0.0, σ=10.000000416666651)</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; rand(dist)</code><code class="nohighlight hljs ansi" style="display:block;">-8.99881510867998</code></pre><p>These can also be given to the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.DynamicalDistribution"><code>DynamicalDistribution</code></a> since they are just univariate normal distributions.</p><h3 id="Nuclear-distributions-for-Ring-polymer-simulations"><a class="docs-heading-anchor" href="#Nuclear-distributions-for-Ring-polymer-simulations">Nuclear distributions for Ring polymer simulations</a><a id="Nuclear-distributions-for-Ring-polymer-simulations-1"></a><a class="docs-heading-anchor-permalink" href="#Nuclear-distributions-for-Ring-polymer-simulations" title="Permalink"></a></h3><p>The components making up a <code>DynamicalDistribution</code> can all be adapted for use in Ring Polymer simulations. </p><p>For samplable components based on nuclear configurations, simply use three-dimensional arrays instead of two-dimensional ones. </p><p>Pre-defined distribution functions such as <code>VelocityBoltzmann</code> can be turned into a three-dimensional version using the <code>RingPolymerWrapper</code>:</p><pre><code class="language-julia hljs">velocity = VelocityBoltzmann(300u&quot;K&quot;, rand(10), (3, 10))
12+
-0.000817684 0.0464822 … 0.040197 0.0198341 0.0823015
13+
-0.0277844 -0.019595 0.0139695 0.0620329 0.131928
14+
-0.029749 -0.0327518 -0.00789621 -0.0166434 -0.0758346</code></pre><p>This can be handed directly to the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.DynamicalDistribution"><code>DynamicalDistribution</code></a> when Boltzmann velocities are required.</p><pre><code class="language-julia hljs">distribution = DynamicalDistribution(velocity, 1, (3, 10))
15+
rand(distribution)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">ComponentVector{Float64}(v = [0.02790547693059429 0.04623688273830743 … -0.00743367015855993 0.06030902043054107; -0.002251075861268093 0.01430404714977988 … -0.11356094906604776 0.09444270372786724; -0.014745717912007664 -0.03267833604389514 … -0.0045471096920344034 0.15637974143716413], r = [1.0 1.0 … 1.0 1.0; 1.0 1.0 … 1.0 1.0; 1.0 1.0 … 1.0 1.0])</code></pre><h3 id="Wigner-distributions"><a class="docs-heading-anchor" href="#Wigner-distributions">Wigner distributions</a><a id="Wigner-distributions-1"></a><a class="docs-heading-anchor-permalink" href="#Wigner-distributions" title="Permalink"></a></h3><p>For harmonic oscillator systems, we have implemented the analytic Wigner distribution. These are just mormal distributions of the appropriate width but can be accessed easily as in the following:</p><pre><code class="language-julia-repl hljs" style="display:block;">julia&gt; using NQCDistributions</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; omega = 1.0;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; beta = 1e-3;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; mass = 10;</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; dist = PositionHarmonicWigner(omega, beta, mass, centre=0.0)</code><code class="nohighlight hljs ansi" style="display:block;">Distributions.Normal{Float64}(μ=0.0, σ=10.000000416666651)</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; rand(dist)</code><code class="nohighlight hljs ansi" style="display:block;">3.675286062059462</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; dist = VelocityHarmonicWigner(omega, beta, mass)</code><code class="nohighlight hljs ansi" style="display:block;">Distributions.Normal{Float64}(μ=0.0, σ=10.000000416666651)</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; rand(dist)</code><code class="nohighlight hljs ansi" style="display:block;">-9.853705201850106</code></pre><p>These can also be given to the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.DynamicalDistribution"><code>DynamicalDistribution</code></a> since they are just univariate normal distributions.</p><h3 id="Nuclear-distributions-for-Ring-polymer-simulations"><a class="docs-heading-anchor" href="#Nuclear-distributions-for-Ring-polymer-simulations">Nuclear distributions for Ring polymer simulations</a><a id="Nuclear-distributions-for-Ring-polymer-simulations-1"></a><a class="docs-heading-anchor-permalink" href="#Nuclear-distributions-for-Ring-polymer-simulations" title="Permalink"></a></h3><p>The components making up a <code>DynamicalDistribution</code> can all be adapted for use in Ring Polymer simulations. </p><p>For samplable components based on nuclear configurations, simply use three-dimensional arrays instead of two-dimensional ones. </p><p>Pre-defined distribution functions such as <code>VelocityBoltzmann</code> can be turned into a three-dimensional version using the <code>RingPolymerWrapper</code>:</p><pre><code class="language-julia hljs">velocity = VelocityBoltzmann(300u&quot;K&quot;, rand(10), (3, 10))
1616
velocity_ring_polymer = RingPolymerWrapper(velocity, n_beads, Int[]) # RingPolymerWrapper(Distribution, number of ring-polymer beads, indices of atoms to treat classically)</code></pre><h2 id="Electronic-distributions"><a class="docs-heading-anchor" href="#Electronic-distributions">Electronic distributions</a><a id="Electronic-distributions-1"></a><a class="docs-heading-anchor-permalink" href="#Electronic-distributions" title="Permalink"></a></h2><p>For nonadiabatic dynamics, the initial electronic variables must also be sampled. For this, we can use an <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.ElectronicDistribution"><code>ElectronicDistribution</code></a> which will tell our simulation how we want to sample the initial variables. Currently, two of these are provided, the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.PureState"><code>PureState</code></a> and the <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.MixedState"><code>MixedState</code></a>. The <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.PureState"><code>PureState</code></a> is used for nonequilibrium simulations when the population is confined to a single state, whereas <a href="../../api/NQCDistributions/nqcdistributions/#NQCDistributions.MixedState"><code>MixedState</code></a> allows for a mixed state distribution.</p><pre><code class="language-julia-repl hljs" style="display:block;">julia&gt; using NQCDistributions</code><code class="nohighlight hljs ansi" style="display:block;"></code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; PureState(1, Diabatic())</code><code class="nohighlight hljs ansi" style="display:block;">PureState{Diabatic}(1, Diabatic())</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; PureState(2, Adiabatic())</code><code class="nohighlight hljs ansi" style="display:block;">PureState{Adiabatic}(2, Adiabatic())</code><br/><code class="language-julia-repl hljs" style="display:block;">julia&gt; MixedState([1, 2], Diabatic())</code><code class="nohighlight hljs ansi" style="display:block;">MixedState{Int64, Diabatic}([1, 2], Diabatic())</code></pre><p>These structs contain only the minimal information about the distributions, whereas the sampling of the distribution is handled separately by each of the different methods.</p><h2 id="Product-distributions-Combining-Nuclear-and-electronic-distributions"><a class="docs-heading-anchor" href="#Product-distributions-Combining-Nuclear-and-electronic-distributions">Product distributions - Combining Nuclear and electronic distributions</a><a id="Product-distributions-Combining-Nuclear-and-electronic-distributions-1"></a><a class="docs-heading-anchor-permalink" href="#Product-distributions-Combining-Nuclear-and-electronic-distributions" title="Permalink"></a></h2><p>The initial nuclear and electronic states of a system can be combined in a product distribution, which can be used in place of a purely nuclear distribution for methods considering electronic dynamics.</p><pre><code class="language-julia hljs">nuclear_dist = DynamicalDistribution(velocity, position, (2, 2))
1717
electronic_dist = PureState(2, Adiabatic())
1818

@@ -21,4 +21,4 @@
2121
rand(total_dist.nuclear) # Returns a random nuclear configuration
2222

2323
total_dist.electronic.state # Returns the chosen electronic state.
24-
</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../NQCModels/frictionmodels/">« Electronic friction models</a><a class="docs-footer-nextpage" href="../../initialconditions/ebk/">Semiclassical EBK quantisation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 1 November 2024 14:06">Friday 1 November 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
24+
</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../../NQCModels/frictionmodels/">« Electronic friction models</a><a class="docs-footer-nextpage" href="../../initialconditions/ebk/">Semiclassical EBK quantisation »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Tuesday 5 November 2024 15:26">Tuesday 5 November 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

previews/PR357/NQCModels/analyticmodels/48b7c60f.svg previews/PR357/NQCModels/analyticmodels/1fb44516.svg

+118-118
Loading

0 commit comments

Comments
 (0)