From 10da158b900477243dcc7f45524431e1ee626f02 Mon Sep 17 00:00:00 2001 From: Shyue Ping Ong Date: Fri, 11 Aug 2023 08:02:56 -0700 Subject: [PATCH] Set default fmax for everythng to 0.1. --- examples/Calculating MLIP properties.ipynb | 382 +++++++++++---------- matcalc/elasticity.py | 5 +- matcalc/eos.py | 12 +- matcalc/phonon.py | 12 +- matcalc/relaxation.py | 6 +- tests/test_elasticity.py | 10 +- tests/test_eos.py | 4 +- tests/test_phonon.py | 8 +- 8 files changed, 229 insertions(+), 210 deletions(-) diff --git a/examples/Calculating MLIP properties.ipynb b/examples/Calculating MLIP properties.ipynb index 4662659..ed19f3a 100644 --- a/examples/Calculating MLIP properties.ipynb +++ b/examples/Calculating MLIP properties.ipynb @@ -45,7 +45,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5cccfbc159394505965d38757faa455a", + "model_id": "d51679e3658e4bc5ba8f0c598e73b9f5", "version_major": 2, "version_minor": 0 }, @@ -66,16 +66,7 @@ "execution_count": 4, "id": "cb64eb7b", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/shyue/repos/matgl/matgl/utils/io.py:125: UserWarning: Incompatible model version detected! The code will continue to load the model but it is recommended that you provide a path to an updated model, increment your @model_version in model.json if you are confident that the changes are not problematic, or clear your ~/.matgl cache using `python -c \"import matgl; matgl.clear_cache()\"`\n", - " _check_ver(cls_, v) # Check version of any subclasses too.\n" - ] - } - ], + "outputs": [], "source": [ "up = get_universal_calculator(\"M3GNet\")" ] @@ -87,10 +78,8 @@ "metadata": {}, "outputs": [], "source": [ - "fmax = 0.01\n", - "# Note that the rest of the parameters require a more stringent fmax criterion.\n", + "fmax = 0.1\n", "# The general principle is to do a relaxation first and just reuse the same structure.\n", - "\n", "prop_calcs = [\n", " (\"relax\", RelaxCalc(up, fmax=fmax)),\n", " (\"elastic\", ElasticityCalc(up, fmax=fmax, relax_structure=False)),\n", @@ -110,7 +99,9 @@ "output_type": "stream", "text": [ "/Users/shyue/miniconda3/envs/mavrl/lib/python3.9/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/TensorShape.cpp:3484.)\n", - " return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]\n" + " return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]\n", + "/Users/shyue/miniconda3/envs/mavrl/lib/python3.9/site-packages/phonopy/structure/cells.py:1396: UserWarning: Crystal structure is distorted in a tricky way so that phonopy could not handle the crystal symmetry properly. It is recommended to symmetrize crystal structure well and then re-start phonon calculation from scratch.\n", + " warnings.warn(msg)\n" ] } ], @@ -138,19 +129,20 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "id": "c8137638", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", - "df = pd.DataFrame(data)" + "df = pd.DataFrame(data)\n", + "df[\"time_total\"] = df[\"time_relax\"] + df[\"time_elastic\"] + df[\"time_phonon\"] + df[\"time_eos\"]" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "id": "551ff93b", "metadata": {}, "outputs": [ @@ -183,6 +175,7 @@ " time_eos\n", " time_phonon\n", " properties\n", + " time_total\n", " \n", " \n", " \n", @@ -191,285 +184,306 @@ " mp-1106268\n", " Pr14 Pd6\n", " 20\n", - " 62.569973\n", - " 0.388854\n", - " 16.062428\n", - " 21.788832\n", - " {'relax': {'final_structure': [[-5.19303374 2...\n", + " 3.491403\n", + " 0.380318\n", + " 7.322077\n", + " 5.697545\n", + " {'relax': {'final_structure': [[-5.16210807 2...\n", + " 16.891343\n", " \n", " \n", " 1\n", " mp-974315\n", " Ru2 I2\n", " 4\n", - " 1.416487\n", - " 0.205097\n", - " 4.295082\n", - " 0.839284\n", - " {'relax': {'final_structure': [[ 1.83881118 -1...\n", + " 1.186046\n", + " 0.186275\n", + " 2.222045\n", + " 0.772150\n", + " {'relax': {'final_structure': [[ 1.84401577 -1...\n", + " 4.366516\n", " \n", " \n", " 2\n", " mp-1206714\n", " Al2 Sn1\n", " 3\n", - " 0.470579\n", - " 0.117568\n", - " 0.229159\n", - " 0.251379\n", - " {'relax': {'final_structure': [[1.59917846 1.5...\n", + " 0.206165\n", + " 0.115411\n", + " 0.214473\n", + " 0.243003\n", + " {'relax': {'final_structure': [[1.59992902 1.5...\n", + " 0.779052\n", " \n", " \n", " 3\n", " mp-30339\n", " Er1 Ag2\n", " 3\n", - " 0.732216\n", - " 0.187762\n", - " 2.538878\n", - " 0.458349\n", - " {'relax': {'final_structure': [[4.48158802e-07...\n", + " 0.107142\n", + " 0.157860\n", + " 0.851162\n", + " 0.448134\n", + " {'relax': {'final_structure': [[1.76298403e-08...\n", + " 1.564298\n", " \n", " \n", " 4\n", " mp-696\n", " Si4 Pt4\n", " 8\n", - " 14.738731\n", - " 0.417027\n", - " 23.731089\n", - " 8.059876\n", - " {'relax': {'final_structure': [[0.88065869 3.9...\n", + " 1.267966\n", + " 0.328979\n", + " 9.390587\n", + " 4.059527\n", + " {'relax': {'final_structure': [[0.90113486 3.8...\n", + " 15.047059\n", " \n", " \n", " 5\n", " mp-866222\n", " Ac2 Si6\n", " 8\n", - " 22.017402\n", - " 0.237975\n", - " 5.265661\n", - " 2.303969\n", - " {'relax': {'final_structure': [[-2.05389424e-0...\n", + " 4.062110\n", + " 0.232349\n", + " 2.209232\n", + " 3.439701\n", + " {'relax': {'final_structure': [[6.28503045e-07...\n", + " 9.943392\n", " \n", " \n", " 6\n", " mp-11422\n", " Gd1 Hg1\n", " 2\n", - " 0.287373\n", - " 0.109842\n", - " 0.213693\n", - " 0.168733\n", - " {'relax': {'final_structure': [[5.55001412e-20...\n", + " 0.107994\n", + " 0.101253\n", + " 0.158592\n", + " 0.164619\n", + " {'relax': {'final_structure': [[-6.87059911e-2...\n", + " 0.532458\n", " \n", " \n", " 7\n", " mp-21238\n", " Th4 Si4\n", " 8\n", - " 5.828830\n", - " 0.271988\n", - " 9.576225\n", - " 1.018305\n", - " {'relax': {'final_structure': [[1.08998567 0.7...\n", + " 1.754500\n", + " 0.213880\n", + " 4.111858\n", + " 0.959658\n", + " {'relax': {'final_structure': [[1.08682613 0.7...\n", + " 7.039896\n", " \n", " \n", " 8\n", " mp-1215363\n", " Zr4 Pd1\n", " 5\n", - " 1.707482\n", - " 0.200783\n", - " 7.705117\n", - " 1.222322\n", - " {'relax': {'final_structure': [[ 3.93732368e-0...\n", + " 0.716570\n", + " 0.192944\n", + " 2.823358\n", + " 1.189626\n", + " {'relax': {'final_structure': [[ 6.81788689e-0...\n", + " 4.922498\n", " \n", " \n", " 9\n", " mp-1212658\n", " Ga1 C6\n", " 7\n", - " 2.543793\n", - " 0.235257\n", - " 4.211858\n", - " 1.364123\n", - " {'relax': {'final_structure': [[-9.88259495e-0...\n", + " 1.590856\n", + " 0.213355\n", + " 2.257039\n", + " 0.505926\n", + " {'relax': {'final_structure': [[-1.24073501e-0...\n", + " 4.567176\n", " \n", " \n", " 10\n", " mp-1101922\n", " Eu4 Fe8\n", " 12\n", - " 11.783266\n", - " 0.404428\n", - " 35.907554\n", - " 6.212728\n", - " {'relax': {'final_structure': [[-1.81771003e-0...\n", + " 3.292877\n", + " 0.394121\n", + " 3.696801\n", + " 2.027789\n", + " {'relax': {'final_structure': [[-2.40978836e-0...\n", + " 9.411588\n", " \n", " \n", " 11\n", " mp-1183610\n", " Ca2 Sm6\n", " 8\n", - " 1.549179\n", - " 0.197124\n", - " 3.451078\n", - " 0.369508\n", - " {'relax': {'final_structure': [[3.63712318 2.0...\n", + " 0.567700\n", + " 0.208955\n", + " 1.655389\n", + " 0.839671\n", + " {'relax': {'final_structure': [[3.64054947 2.1...\n", + " 3.271715\n", " \n", " \n", " 12\n", " mp-1187980\n", " Yb6 Pb2\n", " 8\n", - " 3.342118\n", - " 0.260559\n", - " 3.343180\n", - " 0.918367\n", - " {'relax': {'final_structure': [[1.99653039 1.1...\n", + " 1.449158\n", + " 0.217161\n", + " 1.386437\n", + " 0.845664\n", + " {'relax': {'final_structure': [[1.93660796 1.1...\n", + " 3.898420\n", " \n", " \n", " 13\n", " mp-1187953\n", " Yb3 Pb1\n", " 4\n", - " 0.692982\n", - " 0.133875\n", - " 0.204186\n", - " 0.211850\n", - " {'relax': {'final_structure': [[-1.32354508e-0...\n", + " 0.414266\n", + " 0.137839\n", + " 0.237347\n", + " 0.192977\n", + " {'relax': {'final_structure': [[-1.19091051e-0...\n", + " 0.982429\n", " \n", " \n", " 14\n", " mp-1185577\n", " Cs2 Hg6\n", " 8\n", - " 1.416159\n", - " 0.222880\n", - " 2.779173\n", - " 2.014464\n", - " {'relax': {'final_structure': [[1.82452846e-05...\n", + " 0.539796\n", + " 0.196562\n", + " 0.619738\n", + " 1.417854\n", + " {'relax': {'final_structure': [[2.13330065e-05...\n", + " 2.773950\n", " \n", " \n", " 15\n", " mp-570436\n", " Ca2 Ir4\n", " 6\n", - " 0.524104\n", - " 0.298356\n", - " 0.487528\n", - " 0.344077\n", + " 0.436900\n", + " 0.263059\n", + " 0.411296\n", + " 0.325980\n", " {'relax': {'final_structure': [[2.33200465 1.6...\n", + " 1.437235\n", " \n", " \n", " 16\n", " mp-1184183\n", " Cu1 Ge3\n", " 4\n", - " 0.983168\n", - " 0.177530\n", - " 0.339162\n", - " 0.576755\n", - " {'relax': {'final_structure': [[-1.54866517e-0...\n", + " 0.913073\n", + " 0.181196\n", + " 0.338336\n", + " 0.554278\n", + " {'relax': {'final_structure': [[-9.06711170e-0...\n", + " 1.986883\n", " \n", " \n", " 17\n", " mp-1025440\n", " Cu2 Ge6\n", " 8\n", - " 16.191052\n", - " 0.258944\n", - " 6.878546\n", - " 6.582832\n", - " {'relax': {'final_structure': [[2.16285319 1.2...\n", + " 0.287793\n", + " 0.217949\n", + " 1.763743\n", + " 0.572771\n", + " {'relax': {'final_structure': [[2.17255392 1.2...\n", + " 2.842256\n", " \n", " \n", " 18\n", " mp-1184147\n", " Cu2 Ge6\n", " 8\n", - " 5.373700\n", - " 0.390118\n", - " 6.704795\n", - " 4.064360\n", - " {'relax': {'final_structure': [[ 3.42616346 -1...\n", + " 1.524006\n", + " 0.300755\n", + " 0.859215\n", + " 1.305486\n", + " {'relax': {'final_structure': [[ 3.36096815 -1...\n", + " 3.989462\n", " \n", " \n", " 19\n", " mp-1187368\n", " Tb2 Mn6\n", " 8\n", - " 6.511008\n", - " 0.360979\n", - " 8.616223\n", - " 4.884994\n", - " {'relax': {'final_structure': [[3.13320948 1.8...\n", + " 1.859193\n", + " 0.257700\n", + " 2.159064\n", + " 1.281379\n", + " {'relax': {'final_structure': [[2.93975996 1.6...\n", + " 5.557336\n", " \n", " \n", " 20\n", " mp-1184679\n", " Hg1 Bi3\n", " 4\n", - " 0.652660\n", - " 0.167195\n", - " 0.234439\n", - " 0.465418\n", - " {'relax': {'final_structure': [[ 7.96830248e-0...\n", + " 0.372904\n", + " 0.169251\n", + " 0.245386\n", + " 0.457257\n", + " {'relax': {'final_structure': [[ 1.92100391e-0...\n", + " 1.244798\n", " \n", " \n", "\n", "" ], "text/plain": [ - " mid composition nsites time_relax time_elastic time_eos \\\n", - "0 mp-1106268 Pr14 Pd6 20 62.569973 0.388854 16.062428 \n", - "1 mp-974315 Ru2 I2 4 1.416487 0.205097 4.295082 \n", - "2 mp-1206714 Al2 Sn1 3 0.470579 0.117568 0.229159 \n", - "3 mp-30339 Er1 Ag2 3 0.732216 0.187762 2.538878 \n", - "4 mp-696 Si4 Pt4 8 14.738731 0.417027 23.731089 \n", - "5 mp-866222 Ac2 Si6 8 22.017402 0.237975 5.265661 \n", - "6 mp-11422 Gd1 Hg1 2 0.287373 0.109842 0.213693 \n", - "7 mp-21238 Th4 Si4 8 5.828830 0.271988 9.576225 \n", - "8 mp-1215363 Zr4 Pd1 5 1.707482 0.200783 7.705117 \n", - "9 mp-1212658 Ga1 C6 7 2.543793 0.235257 4.211858 \n", - "10 mp-1101922 Eu4 Fe8 12 11.783266 0.404428 35.907554 \n", - "11 mp-1183610 Ca2 Sm6 8 1.549179 0.197124 3.451078 \n", - "12 mp-1187980 Yb6 Pb2 8 3.342118 0.260559 3.343180 \n", - "13 mp-1187953 Yb3 Pb1 4 0.692982 0.133875 0.204186 \n", - "14 mp-1185577 Cs2 Hg6 8 1.416159 0.222880 2.779173 \n", - "15 mp-570436 Ca2 Ir4 6 0.524104 0.298356 0.487528 \n", - "16 mp-1184183 Cu1 Ge3 4 0.983168 0.177530 0.339162 \n", - "17 mp-1025440 Cu2 Ge6 8 16.191052 0.258944 6.878546 \n", - "18 mp-1184147 Cu2 Ge6 8 5.373700 0.390118 6.704795 \n", - "19 mp-1187368 Tb2 Mn6 8 6.511008 0.360979 8.616223 \n", - "20 mp-1184679 Hg1 Bi3 4 0.652660 0.167195 0.234439 \n", + " mid composition nsites time_relax time_elastic time_eos \\\n", + "0 mp-1106268 Pr14 Pd6 20 3.491403 0.380318 7.322077 \n", + "1 mp-974315 Ru2 I2 4 1.186046 0.186275 2.222045 \n", + "2 mp-1206714 Al2 Sn1 3 0.206165 0.115411 0.214473 \n", + "3 mp-30339 Er1 Ag2 3 0.107142 0.157860 0.851162 \n", + "4 mp-696 Si4 Pt4 8 1.267966 0.328979 9.390587 \n", + "5 mp-866222 Ac2 Si6 8 4.062110 0.232349 2.209232 \n", + "6 mp-11422 Gd1 Hg1 2 0.107994 0.101253 0.158592 \n", + "7 mp-21238 Th4 Si4 8 1.754500 0.213880 4.111858 \n", + "8 mp-1215363 Zr4 Pd1 5 0.716570 0.192944 2.823358 \n", + "9 mp-1212658 Ga1 C6 7 1.590856 0.213355 2.257039 \n", + "10 mp-1101922 Eu4 Fe8 12 3.292877 0.394121 3.696801 \n", + "11 mp-1183610 Ca2 Sm6 8 0.567700 0.208955 1.655389 \n", + "12 mp-1187980 Yb6 Pb2 8 1.449158 0.217161 1.386437 \n", + "13 mp-1187953 Yb3 Pb1 4 0.414266 0.137839 0.237347 \n", + "14 mp-1185577 Cs2 Hg6 8 0.539796 0.196562 0.619738 \n", + "15 mp-570436 Ca2 Ir4 6 0.436900 0.263059 0.411296 \n", + "16 mp-1184183 Cu1 Ge3 4 0.913073 0.181196 0.338336 \n", + "17 mp-1025440 Cu2 Ge6 8 0.287793 0.217949 1.763743 \n", + "18 mp-1184147 Cu2 Ge6 8 1.524006 0.300755 0.859215 \n", + "19 mp-1187368 Tb2 Mn6 8 1.859193 0.257700 2.159064 \n", + "20 mp-1184679 Hg1 Bi3 4 0.372904 0.169251 0.245386 \n", "\n", - " time_phonon properties \n", - "0 21.788832 {'relax': {'final_structure': [[-5.19303374 2... \n", - "1 0.839284 {'relax': {'final_structure': [[ 1.83881118 -1... \n", - "2 0.251379 {'relax': {'final_structure': [[1.59917846 1.5... \n", - "3 0.458349 {'relax': {'final_structure': [[4.48158802e-07... \n", - "4 8.059876 {'relax': {'final_structure': [[0.88065869 3.9... \n", - "5 2.303969 {'relax': {'final_structure': [[-2.05389424e-0... \n", - "6 0.168733 {'relax': {'final_structure': [[5.55001412e-20... \n", - "7 1.018305 {'relax': {'final_structure': [[1.08998567 0.7... \n", - "8 1.222322 {'relax': {'final_structure': [[ 3.93732368e-0... \n", - "9 1.364123 {'relax': {'final_structure': [[-9.88259495e-0... \n", - "10 6.212728 {'relax': {'final_structure': [[-1.81771003e-0... \n", - "11 0.369508 {'relax': {'final_structure': [[3.63712318 2.0... \n", - "12 0.918367 {'relax': {'final_structure': [[1.99653039 1.1... \n", - "13 0.211850 {'relax': {'final_structure': [[-1.32354508e-0... \n", - "14 2.014464 {'relax': {'final_structure': [[1.82452846e-05... \n", - "15 0.344077 {'relax': {'final_structure': [[2.33200465 1.6... \n", - "16 0.576755 {'relax': {'final_structure': [[-1.54866517e-0... \n", - "17 6.582832 {'relax': {'final_structure': [[2.16285319 1.2... \n", - "18 4.064360 {'relax': {'final_structure': [[ 3.42616346 -1... \n", - "19 4.884994 {'relax': {'final_structure': [[3.13320948 1.8... \n", - "20 0.465418 {'relax': {'final_structure': [[ 7.96830248e-0... " + " time_phonon properties time_total \n", + "0 5.697545 {'relax': {'final_structure': [[-5.16210807 2... 16.891343 \n", + "1 0.772150 {'relax': {'final_structure': [[ 1.84401577 -1... 4.366516 \n", + "2 0.243003 {'relax': {'final_structure': [[1.59992902 1.5... 0.779052 \n", + "3 0.448134 {'relax': {'final_structure': [[1.76298403e-08... 1.564298 \n", + "4 4.059527 {'relax': {'final_structure': [[0.90113486 3.8... 15.047059 \n", + "5 3.439701 {'relax': {'final_structure': [[6.28503045e-07... 9.943392 \n", + "6 0.164619 {'relax': {'final_structure': [[-6.87059911e-2... 0.532458 \n", + "7 0.959658 {'relax': {'final_structure': [[1.08682613 0.7... 7.039896 \n", + "8 1.189626 {'relax': {'final_structure': [[ 6.81788689e-0... 4.922498 \n", + "9 0.505926 {'relax': {'final_structure': [[-1.24073501e-0... 4.567176 \n", + "10 2.027789 {'relax': {'final_structure': [[-2.40978836e-0... 9.411588 \n", + "11 0.839671 {'relax': {'final_structure': [[3.64054947 2.1... 3.271715 \n", + "12 0.845664 {'relax': {'final_structure': [[1.93660796 1.1... 3.898420 \n", + "13 0.192977 {'relax': {'final_structure': [[-1.19091051e-0... 0.982429 \n", + "14 1.417854 {'relax': {'final_structure': [[2.13330065e-05... 2.773950 \n", + "15 0.325980 {'relax': {'final_structure': [[2.33200465 1.6... 1.437235 \n", + "16 0.554278 {'relax': {'final_structure': [[-9.06711170e-0... 1.986883 \n", + "17 0.572771 {'relax': {'final_structure': [[2.17255392 1.2... 2.842256 \n", + "18 1.305486 {'relax': {'final_structure': [[ 3.36096815 -1... 3.989462 \n", + "19 1.281379 {'relax': {'final_structure': [[2.93975996 1.6... 5.557336 \n", + "20 0.457257 {'relax': {'final_structure': [[ 1.92100391e-0... 1.244798 " ] }, - "execution_count": 8, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -480,33 +494,34 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 18, "id": "4611ebd4", "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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td8Sfe+Ife+o/Zbou7/7fqkzMo2YAAwAAIxGmAEAAEYjzASQ0+nUkiVL5HQ6g11KwHXUvnfUfkv0vSP2vaP2W6Lvwe57yE8ABgAAoY0zMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0w4yfLli3Tddddp8jISMXExGjKlCk6dOiQ1222bdsmh8PR5PW///u/AaraP7Kyspr0IS4uzus2ubm5GjFihLp166b+/fvr17/+dYCq9a/k5ORmj+HcuXObXd/UY56Xl6dJkyYpISFBDodD77zzjsdyy7KUlZWlhIQEhYeHa9y4cfrss88uud+3335bQ4YMkdPp1JAhQ7Rx48Z26oHvvPX9/PnzeuKJJzRs2DB1795dCQkJmjFjhr766iuv+1y7dm2zfwdff/11O/em9S51zGfNmtWk/tGjR19yv6Yfc0nNHjuHw6F/+7d/a3GfJhzz1vyO2fW7Tpjxk9zcXM2dO1e7du1STk6OLly4oAkTJqimpuaS2x46dEgnTpxwv1JTUwNQsX9dc801Hn04cOBAi+sWFxfru9/9rm666Sbl5+frJz/5iRYsWKC33347gBX7x549ezz6nZOTI0m66667vG5n2jGvqanR8OHDtWrVqmaXP/fcc1qxYoVWrVqlPXv2KC4uTrfeeqv72WjN2blzp6ZNm6bp06frz3/+s6ZPn667775bu3fvbq9u+MRb32tra7V//349/fTT2r9/vzZs2KC//vWvmjx58iX3GxUV5fE3cOLECXXr1q09uuCTSx1zSbr99ts96n///fe97jMUjrmkJsftt7/9rRwOh37wgx943a/dj3lrfsds+1230C5KS0stSVZubm6L62zdutWSZJ06dSpwhbWDJUuWWMOHD2/1+osXL7YGDx7s0fbQQw9Zo0eP9nNlgffoo49aAwYMsBoaGppdHgrHXJK1ceNG9/uGhgYrLi7OWr58ubvt66+/tlwul/XrX/+6xf3cfffd1u233+7Rdtttt1n33HOP32v2l4v73pxPPvnEkmQdO3asxXXWrFljuVwu/xbXjprr98yZM60777yzTfsJ1WN+5513WjfffLPXdUw75pbV9HfMzt91zsy0k8rKSklSr169LrluWlqa4uPjdcstt2jr1q3tXVq7KCwsVEJCglJSUnTPPfeoqKioxXV37typCRMmeLTddttt2rt3r86fP9/epbabc+fO6Y033tDs2bMv+VDTUDjmjYqLi1VSUuJxTJ1Op8aOHasdO3a0uF1LfwfetjFBZWWlHA6HevTo4XW96upqJSUlqW/fvrrjjjuUn58fmAL9aNu2bYqJidFVV12lBx98UKWlpV7XD8Vj/re//U2bNm3SnDlzLrmuacf84t8xO3/XCTPtwLIsLVq0SDfeeKOGDh3a4nrx8fF69dVX9fbbb2vDhg0aNGiQbrnlFuXl5QWw2ss3atQorVu3Tps3b9bq1atVUlKiMWPGqKKiotn1S0pKFBsb69EWGxurCxcuqLy8PBAlt4t33nlHp0+f1qxZs1pcJ1SO+beVlJRIUrPHtHFZS9u1dRu7+/rrr/Xkk0/q3nvv9frAvcGDB2vt2rV69913lZ2drW7duik9PV2FhYUBrPbyTJw4Uf/5n/+pjz76SC+88IL27Nmjm2++WXV1dS1uE4rH/PXXX1dkZKSmTp3qdT3Tjnlzv2N2/q6H/FOzg2HevHn69NNP9ac//cnreoMGDdKgQYPc72+44QYdP35czz//vDIyMtq7TL+ZOHGi+7+HDRumG264QQMGDNDrr7+uRYsWNbvNxWcurP9/I+pLndGws9dee00TJ05UQkJCi+uEyjFvTnPH9FLH05dt7Or8+fO655571NDQoF/96lde1x09erTHZNn09HRde+21WrlypX75y1+2d6l+MW3aNPd/Dx06VCNHjlRSUpI2bdrk9Yc9lI65JP32t7/Vfffdd8m5L6Ydc2+/Y3b8rnNmxs/mz5+vd999V1u3blXfvn3bvP3o0aNtm9Rbq3v37ho2bFiL/YiLi2uSyEtLS9WlSxf17t07ECX63bFjx/Thhx/qgQceaPO2ph/zxivXmjumF/9r7OLt2rqNXZ0/f1533323iouLlZOT4/WsTHM6deqk6667zui/g/j4eCUlJXntQygdc0n6+OOPdejQIZ++93Y+5i39jtn5u06Y8RPLsjRv3jxt2LBBH330kVJSUnzaT35+vuLj4/1cXWDV1dXp4MGDLfbjhhtucF/10+iDDz7QyJEjFRYWFogS/W7NmjWKiYnR9773vTZva/oxT0lJUVxcnMcxPXfunHJzczVmzJgWt2vp78DbNnbUGGQKCwv14Ycf+hTILctSQUGB0X8HFRUVOn78uNc+hMoxb/Taa69pxIgRGj58eJu3teMxv9TvmK2/636bStzBPfzww5bL5bK2bdtmnThxwv2qra11r/Pkk09a06dPd79/8cUXrY0bN1p//etfrb/85S/Wk08+aUmy3n777WB0wWePPfaYtW3bNquoqMjatWuXdccdd1iRkZHW0aNHLctq2u+ioiIrIiLC+vGPf2x9/vnn1muvvWaFhYVZb731VrC6cFnq6+utfv36WU888USTZaFyzM+cOWPl5+db+fn5liRrxYoVVn5+vvuKneXLl1sul8vasGGDdeDAASszM9OKj4+3qqqq3PuYPn269eSTT7rfb9++3ercubO1fPly6+DBg9by5cutLl26WLt27Qp4/7zx1vfz589bkydPtvr27WsVFBR4fPfr6urc+7i471lZWdYf//hH68iRI1Z+fr71wx/+0OrSpYu1e/fuYHSxWd76febMGeuxxx6zduzYYRUXF1tbt261brjhBuvKK68M+WPeqLKy0oqIiLBeeeWVZvdh4jFvze+YXb/rhBk/kdTsa82aNe51Zs6caY0dO9b9/tlnn7UGDBhgdevWzerZs6d14403Wps2bQp88Zdp2rRpVnx8vBUWFmYlJCRYU6dOtT777DP38ov7bVmWtW3bNistLc3q2rWrlZyc3OL/IZhg8+bNliTr0KFDTZaFyjFvvKT84tfMmTMty/rmks0lS5ZYcXFxltPptDIyMqwDBw547GPs2LHu9Rv9/ve/twYNGmSFhYVZgwcPtmWo89b34uLiFr/7W7dude/j4r4vXLjQ6tevn9W1a1crOjramjBhgrVjx47Ad84Lb/2ura21JkyYYEVHR1thYWFWv379rJkzZ1pffPGFxz5C8Zg3+s1vfmOFh4dbp0+fbnYfJh7z1vyO2fW77vj/HQAAADASc2YAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAYJTk5WS+99FKwywBgI9wBGIBRysrK1L17d0VEREiSHA6HNm7cqClTpgS3MABB0yXYBQBAW0RHRwe7BAA2wzATgIAbN26cFixYoMWLF6tXr16Ki4tTVlaWe3lWVpb69esnp9OphIQELViwwL3s28NMycnJkqTvf//7cjgc7veS9N5772nEiBHq1q2b+vfvr2eeeUYXLlxo1WcAMAtnZgAExeuvv65FixZp9+7d2rlzp2bNmqX09HRVVlbqxRdf1O9+9ztdc801Kikp0Z///Odm97Fnzx7FxMRozZo1uv3229W5c2dJ0ubNm3X//ffrl7/8pW666SYdOXJEP/rRjyRJS5Ys0VtvvdXqzwBgf8yZARBw48aNU319vT7++GN32/XXX6+bb75ZMTEx+s1vfqO//OUvCgsLa7JtcnKyFi5cqIULF0pqfs5MRkaGJk6cqKeeesrd9sYbb2jx4sX66quvtGLFCq+fAcAsDDMBCIrvfOc7Hu/j4+NVWlqqu+66S2fPnlX//v314IMPauPGjR7DQ62xb98+/fznP9cVV1zhfj344IM6ceKEamtr/fIZAOyDMAMgKC4+I+JwONTQ0KDExEQdOnRI//7v/67w8HA98sgjysjI0Pnz51u974aGBj3zzDMqKChwvw4cOKDCwkJ169bNL58BwD6YMwPAdsLDwzV58mRNnjxZc+fO1eDBg3XgwAFde+21TdYNCwtTfX29R9u1116rQ4cOaeDAgX75DAD2RpgBYCtr165VfX29Ro0apYiICP3Hf/yHwsPDlZSU1Oz6ycnJ2rJli9LT0+V0OtWzZ0/97Gc/0x133KHExETddddd6tSpkz799FMdOHBAv/jFL9r8GQDsjWEmALbSo0cPrV69Wunp6frOd76jLVu26L333lPv3r2bXf+FF15QTk6OEhMTlZaWJkm67bbb9Ic//EE5OTm67rrrNHr0aK1YscIdVtr6GQDsjauZAACA0TgzAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACj/T/xUch45p36EQAAAABJRU5ErkJggg==", + "image/png": "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80aOHKmf/OQnWrJkSbd1K1eu1K5du3T48GFHW3Z2tj744AOVlZX1us+2tja1tbU5PtvtdiUmJqqpqUmRkZHeHQAAAOgXdrtdVqv1gr/fAXPPTUdHh1555RW1tLQoIyOjxz5lZWXKyspyaps9e7YOHDigs2fP9rrvvLw8Wa1Wx5KYmOjV2gEAQODwe7gpLy/XsGHDFBYWpuzsbO3cuVMTJkzosW9tba1iY2Od2mJjY3Xu3Dk1NDT0+h25ublqampyLCdOnPDqGAAAQOAY5O8Cxo8fr4MHD+r06dPKz8/XokWLVFJS0mvAsVgsTp/PX1Xr2v55YWFhCgsL817RAAAgYPk93AwePFjjxo2TJE2dOlXvvvuufvazn+kXv/hFt75xcXGqra11aqurq9OgQYM0atQon9QLAAACm98vS3VlGIbTzb+fl5GRocLCQqe2ffv2aerUqQoNDfVFeQAAIMD5NdysWrVKb775po4dO6by8nI99thjKi4u1te//nVJ/7hX5t5773X0z87O1vHjx5WTk6PDhw/rhRde0JYtW7RixQp/DQEAAAQYv16W+utf/6qFCxeqpqZGVqtVkydP1t69e3XLLbdIkmpqalRdXe3on5ycrD179uihhx7S888/r4SEBK1fv17z58/31xAAAECACbh5bnzB3efkAQBA4Ai6eW4AAAC8gXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMxa/hJi8vT9dee62GDx+umJgY3XHHHaqoqHC5TXFxsSwWS7fl448/9lHVAAAgkPk13JSUlGjp0qV6++23VVhYqHPnzikrK0stLS0X3LaiokI1NTWOJTU11QcVAwCAQDfIn1++d+9ep89bt25VTEyM3nvvPWVmZrrcNiYmRiNGjOjH6gAAQDAKqHtumpqaJEkjR468YN+0tDTFx8dr1qxZKioqctm3ra1NdrvdaQEAAOYUMOHGMAzl5OTohhtu0KRJk3rtFx8fr82bNys/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od/97ndufweAwMc9NwD8bubMmero6NCbb77paLvuuut08803KyYmRr/4xS/00UcfKTQ0tNu2SUlJevDBB/Xggw9K6vmem8zMTM2ZM0e5ubmOtu3bt+uRRx7Rp59+qrVr17r8DgDBhctSAALC5MmTnT7Hx8errq5Od911lz777DOlpKTo/vvv186dO50uJ7njvffe01NPPaVhw4Y5lvvvv181NTVqbW31yncACByEGwABoesZE4vFos7OTiUmJqqiokLPP/+8hgwZon//939XZmamzp496/a+Ozs79eSTT+rgwYOOpby8XJWVlQoPD/fKdwAIHNxzAyDgDRkyRLfddptuu+02LV26VFdccYXKy8t1zTXXdOsbGhqqjo4Op7ZrrrlGFRUVGjdunFe+A0BgI9wACGgvvviiOjo69MUvflERERF6+eWXNWTIEI0dO7bH/klJSfrTn/6k6dOnKywsTJdeeqm+973v6ctf/rISExN111136ZJLLtGHH36o8vJyPf30033+DgCBjctSAALaiBEj9Mtf/lLTp0/X5MmT9ac//Um///3vNWrUqB77P/vssyosLFRiYqLS0tIkSbNnz9Z///d/q7CwUNdee62mTZumtWvXOsJLX78DQGDjaSkAAGAqnLkBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACmQrgBAACm8v8A38i81Yd19MIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" - }, + } + ], + "source": [ + "ax = df.plot(x=\"nsites\", y=\"time_relax\", kind=\"scatter\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "acb20c91", + "metadata": {}, + "outputs": [ { "data": { - "image/png": "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j0lVVlbK4XCooqJCERERwS4HAAC0QGuO36aeMwMAAHA5hBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBphBkAAGBppn9o3pW6+BidysrKIFcCAABa6uJxuyWPw+vwYaaqqkqSFBcXF+RKAABAa1VVVcnhcPhcp8M/AbihoUFffvmlwsPDZbPZglpLZWWl4uLiVFxcfNU9jfhqHfvVOm6JsV+NY79axy0x9rYYu2EYqqqqUmxsrDp18j0rpsOfmenUqZP69u0b7DK8REREXHW/7BddrWO/WsctMfarcexX67glxh7osV/ujMxFTAAGAACWRpgBAACWRphpR3a7XcuWLZPdbg92Ke3uah371TpuibFfjWO/WsctMfZgj73DTwAGAAAdG2dmAACApRFmAACApRFmAACApRFmAACApRFmAmT58uW68cYbFR4erqioKN133306evSoz8/s3r1bNput0fI///M/7VR1YKSlpTUag9Pp9PmZrKwsjR49Wt26ddPAgQP1m9/8pp2qDawBAwY0uQ/nz5/f5PpW3efZ2dm6++67FRsbK5vNpnfffder3zAMpaWlKTY2VqGhoUpOTtaRI0cuu9133nlHQ4cOld1u19ChQ7Vly5Y2GoH/fI39/PnzWrx4sYYPH67u3bsrNjZWjz76qL788kuf23z99deb/D34+uuv23g0LXe5fT579uxG9Y8bN+6y27X6PpfU5L6z2Wz6xS9+0ew2rbDPW3IcM+vfOmEmQLKysjR//nzt379fmZmZunDhglJSUnT27NnLfvbo0aM6deqUZ3G5XO1QcWBdf/31XmPIz89vdt2ioiJ973vf08SJE5Wbm6uf/vSnWrBggd555512rDgwcnJyvMadmZkpSZo2bZrPz1ltn589e1YjR47UmjVrmuxfuXKlMjIytGbNGuXk5MjpdGry5Mmed6M1Zd++fXrwwQc1c+ZMffzxx5o5c6YeeOABHThwoK2G4RdfY6+pqdGhQ4f0s5/9TIcOHdLmzZv1+eef65577rnsdiMiIrx+B06dOqVu3bq1xRD8crl9Lkl33HGHV/3vvfeez212hH0uqdF++93vfiebzabvf//7Prdr9n3ekuOYaf/WDbSJkpISQ5KRlZXV7Dq7du0yJBlnzpxpv8LawLJly4yRI0e2eP1FixYZ1113nVfb3LlzjXHjxgW4svb3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", + "image/png": "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DR8+XP369dNpp52me+65R7FYLNmlebZ161bNnDlTBQUFCgQCWrt2bavnXddVZWWlCgoK1K9fP02dOlV79+5NTrEeddZbNBrVggULdM4556h///4qKCjQTTfdpA8++CB5BXvQ1Xb7qh//+McKBAJasWJFr9XXE93p7fXXX9dll12mAQMGKCcnR+edd17a3CU8ZYJFut6Ova6uTuXl5dq2bZtqa2v1xRdfqLS0VEePpsaNmqxs375d1dXVGj16dLJLMfHZZ59p0qRJCgaDWr9+vf7973/rl7/8ZZd/NdYv7r//fj3yyCNauXKlXn/9dT3wwAP6xS9+od/85jfJLs2zo0ePasyYMVq5cmW7zz/wwAN68MEHtXLlSm3fvl35+fkqKSlpuaFSKuust6amJu3cuVOLFi3Szp079dRTT2nfvn267LLLklCpd11tt+PWrl2rl156qcs/I51Kuurt7bff1uTJkzVy5Eht2bJFr776qhYtWqS+ffv2cqUJ4uUmZIn07W9/273llltajY0cOdJduHBhkipKjEOHDrmS3Lq6umSXYubw4cPuiBEj3NraWnfKlCnu7bffnuySemzBggXu5MmTk11GwsyYMcO9+eabW41deeWV7o033pikimxIctesWdMyHYvF3Pz8fHf58uUtY59//rk7YMAA95FHHklChfE7sbf2vPzyy64k99133+2doox01Nt7773nfuMb33D37NnjDhs2zP3Vr37V67X1VHu9XXvttb5/r3UmJc5YHL8de2lpaavxzm7H7lfHbxs/cODAJFdip7y8XDNmzNDFF1+c7FLMrFu3TsXFxbr66quVl5encePG6dFHH012WWYmT56sv//979q3b58k6dVXX9ULL7ygSy65JMmV2dq/f78++uijVscWx3E0ZcqUtDu2SF8eXwKBQFqcWYvFYpo1a5bmz5+vUaNGJbscM7FYTM8++6zOPPNMTZs2TXl5eTr33HM7vRTkNykRLBoaGtTc3NzmRmannHJKmxue+ZnruqqoqNDkyZNVVFSU7HJMrF69Wjt37tSyZcuSXYqpd955R1VVVRoxYoQ2btyoW265RXPmzNEf//jHZJdmYsGCBbr++us1cuRIBYNBjRs3TnPnztX111+f7NJMHT9+pPuxRZI+//xzLVy4UGVlZb69wdVX3X///crMzNScOXOSXYqpQ4cO6ciRI1q+fLm+973vadOmTfr+97+vK6+8UnV1dckuz0Rct01PFC+3Y/ejW2+9Va+99ppeeOGFZJdi4uDBg7r99tu1adOm9Lk2+P/EYjEVFxdr6dKlkqRx48Zp7969qqqq0k033ZTk6nruiSee0OOPP66amhqNGjVKu3bt0ty5c1VQUKDZs2cnuzxz6X5siUajuu666xSLxfTwww8nu5weq6+v10MPPaSdO3em1XaS1PIF6csvv1zz5s2TJI0dO1YvvviiHnnkEU2ZMiWZ5ZlIiTMW8dyO3W9uu+02rVu3Ts8995yGDBmS7HJM1NfX69ChQxo/frwyMzOVmZmpuro6/frXv1ZmZqaam5uTXWLcBg8erLPPPrvV2FlnneX7LxMfN3/+fC1cuFDXXXedzjnnHM2aNUvz5s1LuzNP+fn5kpTWx5ZoNKprrrlG+/fvV21tbVqcrXj++ed16NAhDR06tOXY8u677+onP/mJTj311GSX1yO5ubnKzMxM6+NLSgSLdL4du+u6uvXWW/XUU0/pH//4h4YPH57sksxcdNFF2r17t3bt2tXyKC4u1g033KBdu3apT58+yS4xbpMmTWrza8H79u0zudleKmhqalJGRuu3f58+fXz566adGT58uPLz81sdW44dO6a6ujrfH1uk/x8q3nzzTW3evFmDBg1KdkkmZs2apddee63VsaWgoEDz58/Xxo0bk11ej2RlZWnChAlpfXxJmUsh6Xo79vLyctXU1Ojpp59WTk5Oy/+cBgwYoH79+iW5up7Jyclp812R/v37a9CgQb7/Dsm8efN0/vnna+nSpbrmmmv08ssvq7q6WtXV1ckuzcTMmTO1ZMkSDR06VKNGjdIrr7yiBx98UDfffHOyS/PsyJEjeuutt1qm9+/fr127dmngwIEaOnSo5s6dq6VLl2rEiBEaMWKEli5dquzsbJWVlSWx6u7prLeCggJdddVV2rlzp/7617+qubm55fgycOBAZWVlJavsbulqu50YkoLBoPLz8/XNb36zt0v1rKve5s+fr2uvvVYXXHCBLrzwQm3YsEHPPPOMtmzZkryiLSX3l1Ja++1vf+sOGzbMzcrKcr/1rW+lxa9kSmr3sWrVqmSXlhDp8uumruu6zzzzjFtUVOQ6juOOHDnSra6uTnZJZsLhsHv77be7Q4cOdfv27euedtpp7l133eVGIpFkl+bZc8891+57bPbs2a7rfvkrp3fffbebn5/vOo7jXnDBBe7u3buTW3Q3ddbb/v37Ozy+PPfcc8kuvUtdbbcT+enXTbvT22OPPeaeccYZbt++fd0xY8a4a9euTV7BxrhtOgAAMJMS37EAAADpgWABAADMECwAAIAZggUAADBDsAAAAGYIFgAAwAzBAgAAmCFYAAAAMwQLAABghmABAADMECwAAIAZggUAADDzf+dB7phSvAQrAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -516,14 +531,13 @@ } ], "source": [ - "df.plot(x=\"nsites\", y=\"time_phonon\", kind=\"scatter\")\n", - "df.plot(x=\"nsites\", y=\"time_relax\", kind=\"scatter\")" + "ax = df[\"time_total\"].hist()" ] }, { "cell_type": "code", "execution_count": null, - "id": "acb20c91", + "id": "9f3bf24e", "metadata": {}, "outputs": [], "source": [] diff --git a/matcalc/elasticity.py b/matcalc/elasticity.py index 80a03d7..ef08336 100644 --- a/matcalc/elasticity.py +++ b/matcalc/elasticity.py @@ -23,16 +23,17 @@ def __init__( calculator: Calculator, norm_strains: float = 0.01, shear_strains: float = 0.01, - relax_structure: bool = True, fmax: float = 0.1, + relax_structure: bool = True, ): """ Args: calculator: ASE Calculator to use. + + fmax: maximum force in the relaxed structure (if relax_structure). norm_strains: strain value to apply to each normal mode. shear_strains: strain value to apply to each shear mode. relax_structure: whether to relax the provided structure with the given calculator. - fmax: maximum force in the relaxed structure (if relax_structure). """ self.calculator = calculator self.norm_strains = norm_strains diff --git a/matcalc/eos.py b/matcalc/eos.py index f7b3143..921533d 100644 --- a/matcalc/eos.py +++ b/matcalc/eos.py @@ -21,22 +21,24 @@ class EOSCalc(PropCalc): def __init__( self, calculator: Calculator, - relax_structure: bool = True, - fmax: float = 0.01, steps: int = 500, max_abs_strain: float = 0.1, n_points: int = 11, + fmax: float = 0.1, + relax_structure: bool = True, ): """ Args: calculator: ASE Calculator to use. - relax_structure: Whether to first relax the structure. Set to False if structures provided are pre-relaxed - with the same calculator. - fmax (float): Max force for relaxation (of structure as well as atoms). + steps (int): Max number of steps for relaxation. max_abs_strain (float): The maximum absolute strain applied to the structure. Defaults to 0.1, i.e., 10% strain. n_points (int): Number of points in which to compute the EOS. Defaults to 11. + + fmax (float): Max force for relaxation (of structure as well as atoms). + relax_structure: Whether to first relax the structure. Set to False if structures provided are pre-relaxed + with the same calculator. """ self.calculator = calculator self.relax_structure = relax_structure diff --git a/matcalc/phonon.py b/matcalc/phonon.py index d7a1634..b5b35e6 100644 --- a/matcalc/phonon.py +++ b/matcalc/phonon.py @@ -24,23 +24,25 @@ def __init__( calculator: Calculator, atom_disp=0.015, supercell_matrix=((2, 0, 0), (0, 2, 0), (0, 0, 2)), - fmax=0.01, - relax_structure=True, t_step=10, t_max=1000, t_min=0, + fmax=0.1, + relax_structure=True, ): """ Args: calculator: ASE Calculator to use. + fmax: Max forces. This criterion is more stringent than for simple relaxation. atom_disp: Atomic displacement supercell_matrix: Supercell matrix to use. Defaults to 2x2x2 supercell. - fmax: Max forces. This criterion is more stringent than for simple relaxation. - relax_structure: Whether to first relax the structure. Set to False if structures provided are pre-relaxed - with the same calculator. + t_step: Temperature step. t_max: Max temperature. t_min: Min temperature. + relax_structure: Whether to first relax the structure. Set to False if structures provided are pre-relaxed + with the same calculator. + """ self.calculator = calculator self.atom_disp = atom_disp diff --git a/matcalc/relaxation.py b/matcalc/relaxation.py index dd202e8..07fe094 100644 --- a/matcalc/relaxation.py +++ b/matcalc/relaxation.py @@ -89,10 +89,10 @@ def __init__( self, calculator: Calculator, optimizer: Optimizer | str = "FIRE", - fmax: float = 0.1, steps: int = 500, traj_file: str | None = None, interval=1, + fmax: float = 0.1, relax_cell=True, ): """ @@ -100,11 +100,11 @@ def __init__( calculator: ASE Calculator to use. optimizer (str or ase Optimizer): the optimization algorithm. Defaults to "FIRE" - fmax (float): Total force tolerance for relaxation convergence. fmax is a sum of force and stress forces. steps (int): Max number of steps for relaxation. traj_file (str): The trajectory file for saving interval (int): The step interval for saving the trajectories. - relax_cell (bool): Whether to relax the cell. + fmax (float): Total force tolerance for relaxation convergence. fmax is a sum of force and stress forces. + relax_cell (bool): Whether to relax the cell (or just atoms). """ self.calculator = calculator self.optimizer: Optimizer = OPTIMIZERS[optimizer] if isinstance(optimizer, str) else optimizer diff --git a/tests/test_elasticity.py b/tests/test_elasticity.py index 85072d6..db24ab6 100644 --- a/tests/test_elasticity.py +++ b/tests/test_elasticity.py @@ -9,12 +9,12 @@ def test_ElasticCalc(LiFePO4, M3GNetUPCalc): """Tests for ElasticCalc class""" calculator = M3GNetUPCalc - ecalc = ElasticityCalc(calculator, norm_strains=0.02, shear_strains=0.04, fmax=0.01) + ecalc = ElasticityCalc(calculator, norm_strains=0.02, shear_strains=0.04, fmax=0.1) # Test LiFePO4 with relaxation results = ecalc.calc(LiFePO4) assert results["elastic_tensor"].shape == (3, 3, 3, 3) - assert results["elastic_tensor"][0][1][1][0] == pytest.approx(0.6441543434291928, rel=0.0001) - assert results["bulk_modulus_vrh"] == pytest.approx(1.109278785217532, rel=0.0001) - assert results["shear_modulus_vrh"] == pytest.approx(0.5946891263210372, rel=0.0001) - assert results["youngs_modulus"] == pytest.approx(1513587180.4865916, rel=0.0001) + assert results["elastic_tensor"][0][1][1][0] == pytest.approx(0.646330702693376, rel=0.1) + assert results["bulk_modulus_vrh"] == pytest.approx(1.109278785217532, rel=0.1) + assert results["shear_modulus_vrh"] == pytest.approx(0.5946891263210372, rel=0.1) + assert results["youngs_modulus"] == pytest.approx(1513587180.4865916, rel=0.1) diff --git a/tests/test_eos.py b/tests/test_eos.py index 4545f8c..612ad35 100644 --- a/tests/test_eos.py +++ b/tests/test_eos.py @@ -10,11 +10,11 @@ def test_PhononCalc(Li2O, LiFePO4, M3GNetUPCalc): """Tests for PhononCalc class""" calculator = M3GNetUPCalc # Note that the fmax is probably too high. This is for testing purposes only. - pcalc = EOSCalc(calculator, fmax=0.01) + pcalc = EOSCalc(calculator, fmax=0.1) results = pcalc.calc(Li2O) assert results["bulk_modulus"] == pytest.approx(69.86879801931632, rel=0.1) results = list(pcalc.calc_many([Li2O, LiFePO4])) assert len(results) == 2 - assert results[1]["bulk_modulus"] == pytest.approx(53.791519828150925, rel=0.1) + assert results[1]["bulk_modulus"] == pytest.approx(60.083102790525366, rel=0.1) diff --git a/tests/test_phonon.py b/tests/test_phonon.py index a9d297a..33dccf5 100644 --- a/tests/test_phonon.py +++ b/tests/test_phonon.py @@ -15,10 +15,10 @@ def test_PhononCalc(Li2O, LiFePO4, M3GNetUPCalc): # Test values at 100 K ind = results["temperatures"].tolist().index(300) - assert results["heat_capacity"][ind] == pytest.approx(59.918928933451305, abs=0.01) - assert results["entropy"][ind] == pytest.approx(51.9081928335805, abs=0.01) - assert results["free_energy"][ind] == pytest.approx(11.892105644441045, abs=0.01) + assert results["heat_capacity"][ind] == pytest.approx(59.91894069664282, rel=0.1) + assert results["entropy"][ind] == pytest.approx(51.9081928335805, rel=0.1) + assert results["free_energy"][ind] == pytest.approx(11.892105644441045, rel=0.1) results = list(pcalc.calc_many([Li2O, LiFePO4])) assert len(results) == 2 - assert results[-1]["heat_capacity"][ind] == pytest.approx(550.6419940551511, abs=0.01) + assert results[-1]["heat_capacity"][ind] == pytest.approx(550.6419940551511, rel=0.1)