diff --git a/notebooks/first_steps.ipynb b/notebooks/first_steps.ipynb index c3debc4..0f237d6 100644 --- a/notebooks/first_steps.ipynb +++ b/notebooks/first_steps.ipynb @@ -121,7 +121,7 @@ "id": "38c184fb", "metadata": {}, "source": [ - "Here, as we chose the parameter randomly, the Curie temperature is somewhat higher than what it is supposed to be. In addition, since the system is relatively small, the total magnetization after the transition does not completely vanish." + "Here, as we chose the Heisenberg parameter randomly, the Curie temperature is somewhat higher than the experimental value of 1,043 K. In addition, since the system is relatively small, the total magnetization after the transition does not completely vanish. The residual magnetization values above the Curie temperature can therefore vary each time you run the simulation. The unit if the magnetization is given by the Heisenberg parameter." ] }, { @@ -132,6 +132,14 @@ "## Thermodynamic integration" ] }, + { + "cell_type": "markdown", + "id": "ef3e00f3-6e53-44d7-ab4e-3ebd60133215", + "metadata": {}, + "source": [ + "Let's now take a look at the energy difference of iron in the two most prominent phases: Face-Centered-Cubic (fcc) and Body-Centered-Cubic (bcc). The energy difference can be calculated using [Thermodynamic Integration](https://en.wikipedia.org/wiki/Thermodynamic_integration), where we vary the $\\lambda$ parameter (cf. [Wikipedia](https://en.wikipedia.org/wiki/Thermodynamic_integration#Derivation)) and integrate over the measured potential energies." + ] + }, { "cell_type": "code", "execution_count": 37, @@ -228,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 18, "id": "b70a0bb0", "metadata": {}, "outputs": [ @@ -236,12 +244,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "The free energy difference between bcc and fcc at 300 K is 0.956543594612767\n" + "The free energy difference between bcc and fcc at 300 K is 0.9558411678020047 eV\n" ] } ], "source": [ - "print(\"The free energy difference between bcc and fcc at 300 K is\", E_diff.sum() * np.diff(ti_lambda).mean())" + "print(\"The free energy difference between bcc and fcc at 300 K is\", E_diff.sum() * np.diff(ti_lambda).mean(), \"eV\")" ] }, { @@ -252,6 +260,14 @@ "## Metadynamics" ] }, + { + "cell_type": "markdown", + "id": "a992c792-8fe8-41be-ba54-cc8f726cee5f", + "metadata": {}, + "source": [ + "[Metadynamics](https://en.wikipedia.org/wiki/Metadynamics) is a simulation method which allows for the free energy distribution along a collective variable defined by the user. In mamonca, you can use the total magnetization as the collective variable, meaning you can obtain the free energy distribution along the total magnetization. For this, you only need to call `set_metadynamics` before `run`, where you must also specify the maximum magnetization value. In order to obtain a reliable result, you should also test the robustness by varying `energy_increment` and `length_scale` (cf. [Wikipedia](https://en.wikipedia.org/wiki/Metadynamics#Algorithm), where `energy_increment` is called $\\omega$ and `length_scale` is called $\\sigma$)" + ] + }, { "cell_type": "code", "execution_count": 54, @@ -316,10 +332,18 @@ "plt.plot(meta[\"magnetization\"], meta[\"free_energy\"])" ] }, + { + "cell_type": "markdown", + "id": "b8bf7959-f89f-43a1-ba9f-ca4e30678c2d", + "metadata": {}, + "source": [ + "The free energy minimum shows the most stable state. In this case it is around 0.5. Metadynamics, however, often requires a meticulous sampling, meaning with the standard energy increment of 0.001, you might overshoot and miss the global minimum. For a real measurement, it is recommended to make it as small as possible, meaning you should estimate the amount of time needed to run your calculation with Metadynamics with a small energy increment value and see what would be an acceptable total computation time." + ] + }, { "cell_type": "code", "execution_count": null, - "id": "55339279", + "id": "9bf9c044-1a27-45b1-a582-cf72fddc5bb8", "metadata": {}, "outputs": [], "source": [] @@ -341,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.6" + "version": "3.11.8" } }, "nbformat": 4,