{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:28.675365Z",
"start_time": "2019-10-08T13:04:24.575595Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:18.399694Z",
"iopub.status.busy": "2020-11-30T15:00:18.399056Z",
"iopub.status.idle": "2020-11-30T15:00:20.250676Z",
"shell.execute_reply": "2020-11-30T15:00:20.251215Z"
},
"papermill": {
"duration": 1.89665,
"end_time": "2020-11-30T15:00:20.251540",
"exception": false,
"start_time": "2020-11-30T15:00:18.354890",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/scratch/janssen/pyiron_meltingpoint/.snakemake/conda/9e28c1ea/lib/python3.9/site-packages/sklearn/utils/deprecation.py:143: FutureWarning: The sklearn.neighbors.kde module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.\n",
" warnings.warn(message, FutureWarning)\n"
]
}
],
"source": [
"%matplotlib inline \n",
"import json\n",
"import numpy as np\n",
"import operator\n",
"import os\n",
"import pandas\n",
"import pylab as plt\n",
"import random\n",
"from ase.data import reference_states, atomic_numbers\n",
"from sklearn.neighbors.kde import KernelDensity\n",
"from pyiron.project import Project"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.321184Z",
"iopub.status.busy": "2020-11-30T15:00:20.320553Z",
"iopub.status.idle": "2020-11-30T15:00:20.323392Z",
"shell.execute_reply": "2020-11-30T15:00:20.323889Z"
},
"papermill": {
"duration": 0.038423,
"end_time": "2020-11-30T15:00:20.324043",
"exception": false,
"start_time": "2020-11-30T15:00:20.285620",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"import matplotlib as mpl\n",
"mpl.rc('font', family='Times New Roman')\n",
"plt.rcParams[\"mathtext.fontset\"] = \"stix\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.392916Z",
"iopub.status.busy": "2020-11-30T15:00:20.392281Z",
"iopub.status.idle": "2020-11-30T15:00:20.396023Z",
"shell.execute_reply": "2020-11-30T15:00:20.396519Z"
},
"papermill": {
"duration": 0.040955,
"end_time": "2020-11-30T15:00:20.396674",
"exception": false,
"start_time": "2020-11-30T15:00:20.355719",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"from pyiron.thermodynamics.interfacemethod import freeze_one_half, remove_selective_dynamics, set_server, create_job_template, fix_iso, fix_z_dir, half_velocity, minimize_pos, minimize_vol, next_calc, npt_solid, npt_liquid, next_step_funct, round_temperature_next, strain_circle, analyse_minimized_structure, get_press, get_center_point, get_strain_lst, get_nve_job_name, plot_solid_liquid_ratio, ratio_selection, plot_equilibration, plot_melting_point_prediction, calc_temp_iteration, get_initial_melting_temperature_guess, validate_convergence, initialise_iterators, get_voronoi_volume, check_for_holes"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:29.544782Z",
"start_time": "2019-10-08T13:04:28.677745Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.463452Z",
"iopub.status.busy": "2020-11-30T15:00:20.462824Z",
"iopub.status.idle": "2020-11-30T15:00:20.615132Z",
"shell.execute_reply": "2020-11-30T15:00:20.614417Z"
},
"papermill": {
"duration": 0.186001,
"end_time": "2020-11-30T15:00:20.615326",
"exception": false,
"start_time": "2020-11-30T15:00:20.429325",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"pr = Project('melting')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.684311Z",
"iopub.status.busy": "2020-11-30T15:00:20.683678Z",
"iopub.status.idle": "2020-11-30T15:00:20.686517Z",
"shell.execute_reply": "2020-11-30T15:00:20.687083Z"
},
"papermill": {
"duration": 0.037977,
"end_time": "2020-11-30T15:00:20.687258",
"exception": false,
"start_time": "2020-11-30T15:00:20.649281",
"status": "completed"
},
"tags": [
"parameters"
]
},
"outputs": [],
"source": [
"input_file = os.path.join(pr.path, 'input.json')\n",
"output_file = os.path.join(pr.path, 'output.json')"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.753265Z",
"iopub.status.busy": "2020-11-30T15:00:20.752636Z",
"iopub.status.idle": "2020-11-30T15:00:20.756043Z",
"shell.execute_reply": "2020-11-30T15:00:20.755414Z"
},
"papermill": {
"duration": 0.03717,
"end_time": "2020-11-30T15:00:20.756176",
"exception": false,
"start_time": "2020-11-30T15:00:20.719006",
"status": "completed"
},
"tags": [
"injected-parameters"
]
},
"outputs": [],
"source": [
"# Parameters\n",
"input_file = \"input.json\"\n",
"output_file = \"output.json\"\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:30.547878Z",
"start_time": "2019-10-08T13:04:30.051880Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.824128Z",
"iopub.status.busy": "2020-11-30T15:00:20.823499Z",
"iopub.status.idle": "2020-11-30T15:00:20.835677Z",
"shell.execute_reply": "2020-11-30T15:00:20.835048Z"
},
"papermill": {
"duration": 0.048149,
"end_time": "2020-11-30T15:00:20.835811",
"exception": false,
"start_time": "2020-11-30T15:00:20.787662",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: []"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr.job_table()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.905997Z",
"iopub.status.busy": "2020-11-30T15:00:20.905305Z",
"iopub.status.idle": "2020-11-30T15:00:20.908450Z",
"shell.execute_reply": "2020-11-30T15:00:20.907887Z"
},
"papermill": {
"duration": 0.039604,
"end_time": "2020-11-30T15:00:20.908598",
"exception": false,
"start_time": "2020-11-30T15:00:20.868994",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"if os.path.exists(input_file) and os.stat(input_file).st_size != 0:\n",
" with open(input_file, 'r') as f:\n",
" input_dict = json.load(f)\n",
"else:\n",
" input_dict = {\n",
" \"config\": [\n",
" \"pair_style morse 9.97749\\n\",\n",
" \"pair_coeff * * 0.4174 1.3885 2.845\\n\"\n",
" ],\n",
" \"species\": [\"Al\"],\n",
" \"element\": \"Al\"\n",
" }\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:20.976434Z",
"iopub.status.busy": "2020-11-30T15:00:20.975751Z",
"iopub.status.idle": "2020-11-30T15:00:20.980069Z",
"shell.execute_reply": "2020-11-30T15:00:20.979386Z"
},
"papermill": {
"duration": 0.039029,
"end_time": "2020-11-30T15:00:20.980214",
"exception": false,
"start_time": "2020-11-30T15:00:20.941185",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'config': ['pair_style sw \\n', 'pair_coeff * * Si.sw Si\\n'],\n",
" 'filename': './examples/diaSi//Si.sw',\n",
" 'species': ['Si'],\n",
" 'element': 'Si',\n",
" 'cpu_cores': 8}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"input_dict"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.048714Z",
"iopub.status.busy": "2020-11-30T15:00:21.047311Z",
"iopub.status.idle": "2020-11-30T15:00:21.050744Z",
"shell.execute_reply": "2020-11-30T15:00:21.051536Z"
},
"papermill": {
"duration": 0.039293,
"end_time": "2020-11-30T15:00:21.051764",
"exception": false,
"start_time": "2020-11-30T15:00:21.012471",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"pot_dict = input_dict.copy()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.127957Z",
"iopub.status.busy": "2020-11-30T15:00:21.126913Z",
"iopub.status.idle": "2020-11-30T15:00:21.130202Z",
"shell.execute_reply": "2020-11-30T15:00:21.129541Z"
},
"papermill": {
"duration": 0.04438,
"end_time": "2020-11-30T15:00:21.130339",
"exception": false,
"start_time": "2020-11-30T15:00:21.085959",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"if 'model' not in pot_dict.keys():\n",
" pot_dict['model'] = 'Lammps'\n",
"if 'name' not in pot_dict.keys():\n",
" pot_dict['name'] = 'CustomPotential'\n",
"if 'filename' not in pot_dict.keys():\n",
" pot_path = []\n",
"else:\n",
" pot_path = [os.path.abspath(pot_dict['filename'])]\n",
"potential = pandas.DataFrame({'Config': [pot_dict['config']],\n",
" 'Filename': [pot_path],\n",
" 'Model': [pot_dict['model']],\n",
" 'Name': [pot_dict['name']],\n",
" 'Species': [pot_dict['species']]\n",
" })"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:30.557204Z",
"start_time": "2019-10-08T13:04:30.549236Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.199208Z",
"iopub.status.busy": "2020-11-30T15:00:21.198372Z",
"iopub.status.idle": "2020-11-30T15:00:21.200758Z",
"shell.execute_reply": "2020-11-30T15:00:21.201271Z"
},
"papermill": {
"duration": 0.038673,
"end_time": "2020-11-30T15:00:21.201420",
"exception": false,
"start_time": "2020-11-30T15:00:21.162747",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"project_parameter = {\n",
" 'project': pr,\n",
" 'run_time_steps': 50000,\n",
" 'nvt_run_time_steps': 10000,\n",
" 'nve_run_time_steps': 10000,\n",
" 'temperature_left': 0,\n",
" 'temperature_right': 1000,\n",
" 'strain_run_time_steps': 1000,\n",
" 'convergence_criterion': 1,\n",
" 'potential': potential,\n",
" 'cpu_cores': 1, \n",
" 'job_type': pr.job_type.Lammps,\n",
" 'enable_h5md': False,\n",
" 'points': 21,\n",
" 'boundary_value': 0.25,\n",
" 'ratio_boundary': 0.25,\n",
" 'timestep_lst': [2, 2, 1],\n",
" 'fit_range_lst': [0.05, 0.01, 0.01],\n",
" 'nve_run_time_steps_lst': [25000, 20000, 50000],\n",
" 'number_of_atoms': 8000, \n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.269342Z",
"iopub.status.busy": "2020-11-30T15:00:21.268509Z",
"iopub.status.idle": "2020-11-30T15:00:21.271613Z",
"shell.execute_reply": "2020-11-30T15:00:21.270995Z"
},
"papermill": {
"duration": 0.037476,
"end_time": "2020-11-30T15:00:21.271744",
"exception": false,
"start_time": "2020-11-30T15:00:21.234268",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"for k in input_dict.keys():\n",
" project_parameter[k] = input_dict[k]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.339691Z",
"iopub.status.busy": "2020-11-30T15:00:21.338778Z",
"iopub.status.idle": "2020-11-30T15:00:21.341526Z",
"shell.execute_reply": "2020-11-30T15:00:21.342086Z"
},
"papermill": {
"duration": 0.03829,
"end_time": "2020-11-30T15:00:21.342263",
"exception": false,
"start_time": "2020-11-30T15:00:21.303973",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"if 'crystalstructure' not in project_parameter.keys():\n",
" project_parameter['crystalstructure'] = reference_states[atomic_numbers[project_parameter['element']]]['symmetry']"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.411404Z",
"iopub.status.busy": "2020-11-30T15:00:21.410570Z",
"iopub.status.idle": "2020-11-30T15:00:21.414936Z",
"shell.execute_reply": "2020-11-30T15:00:21.414228Z"
},
"papermill": {
"duration": 0.04084,
"end_time": "2020-11-30T15:00:21.415086",
"exception": false,
"start_time": "2020-11-30T15:00:21.374246",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"59849"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"if 'seed' not in project_parameter.keys():\n",
" project_parameter['seed'] = random.randint(0,99999)\n",
"project_parameter['seed']"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:30.580662Z",
"start_time": "2019-10-08T13:04:30.571110Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.485369Z",
"iopub.status.busy": "2020-11-30T15:00:21.484582Z",
"iopub.status.idle": "2020-11-30T15:00:21.488162Z",
"shell.execute_reply": "2020-11-30T15:00:21.488724Z"
},
"papermill": {
"duration": 0.041461,
"end_time": "2020-11-30T15:00:21.488886",
"exception": false,
"start_time": "2020-11-30T15:00:21.447425",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{}"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Values from a previous calculation can be inserted here to reproduce the results \n",
"step_dict = {}\n",
"if os.path.exists(output_file):\n",
" with open(output_file, 'r') as f:\n",
" step_dict_str = json.load(f)\n",
" for k,v in step_dict_str.items():\n",
" step_dict[int(k)] = v\n",
"step_dict"
]
},
{
"cell_type": "markdown",
"metadata": {
"papermill": {
"duration": 0.031394,
"end_time": "2020-11-30T15:00:21.553831",
"exception": false,
"start_time": "2020-11-30T15:00:21.522437",
"status": "completed"
},
"tags": []
},
"source": [
"# From here on the notebook is automated - no change required !"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.021413Z",
"start_time": "2019-10-08T13:04:31.012101Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.622628Z",
"iopub.status.busy": "2020-11-30T15:00:21.621753Z",
"iopub.status.idle": "2020-11-30T15:00:21.625010Z",
"shell.execute_reply": "2020-11-30T15:00:21.624396Z"
},
"papermill": {
"duration": 0.039897,
"end_time": "2020-11-30T15:00:21.625141",
"exception": false,
"start_time": "2020-11-30T15:00:21.585244",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"step_count = 0\n",
"temperature_next = None\n",
"enable_iteration = True\n",
"convergence_goal_achieved = False"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.033447Z",
"start_time": "2019-10-08T13:04:31.022716Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.694862Z",
"iopub.status.busy": "2020-11-30T15:00:21.694024Z",
"iopub.status.idle": "2020-11-30T15:00:21.697243Z",
"shell.execute_reply": "2020-11-30T15:00:21.696628Z"
},
"papermill": {
"duration": 0.038729,
"end_time": "2020-11-30T15:00:21.697374",
"exception": false,
"start_time": "2020-11-30T15:00:21.658645",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"pr = project_parameter['project']"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.288827Z",
"start_time": "2019-10-08T13:04:31.034782Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:21.777564Z",
"iopub.status.busy": "2020-11-30T15:00:21.776251Z",
"iopub.status.idle": "2020-11-30T15:00:22.088859Z",
"shell.execute_reply": "2020-11-30T15:00:22.088324Z"
},
"papermill": {
"duration": 0.358038,
"end_time": "2020-11-30T15:00:22.089014",
"exception": false,
"start_time": "2020-11-30T15:00:21.730976",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"if 'lattice_constant' in project_parameter.keys():\n",
" basis = pr.create_structure(project_parameter['element'], project_parameter['crystalstructure'].lower(), project_parameter['lattice_constant'])\n",
"elif project_parameter['crystalstructure'] == 'hcp':\n",
" basis = pr.create_ase_bulk(project_parameter['element'], project_parameter['crystalstructure'].lower(), cubic=False)\n",
"else:\n",
" basis = pr.create_ase_bulk(project_parameter['element'], project_parameter['crystalstructure'].lower(), cubic=True)\n",
"basis_lst = [basis.repeat([i, i, i]) for i in range(5,30)]\n",
"basis = basis_lst[np.argmin([np.abs(len(b)-project_parameter['number_of_atoms']/2) for b in basis_lst])]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"execution": {
"iopub.execute_input": "2020-11-30T15:00:22.217077Z",
"iopub.status.busy": "2020-11-30T15:00:22.215625Z",
"iopub.status.idle": "2020-11-30T15:00:23.026900Z",
"shell.execute_reply": "2020-11-30T15:00:23.027603Z"
},
"papermill": {
"duration": 0.875647,
"end_time": "2020-11-30T15:00:23.027846",
"exception": false,
"start_time": "2020-11-30T15:00:22.152199",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{'CommonNeighborAnalysis.counts.OTHER': 4096,\n",
" 'CommonNeighborAnalysis.counts.FCC': 0,\n",
" 'CommonNeighborAnalysis.counts.HCP': 0,\n",
" 'CommonNeighborAnalysis.counts.BCC': 0,\n",
" 'CommonNeighborAnalysis.counts.ICO': 0}"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"basis.analyse_ovito_cna_adaptive()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.515297Z",
"start_time": "2019-10-08T13:04:31.290502Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:23.100422Z",
"iopub.status.busy": "2020-11-30T15:00:23.099413Z",
"iopub.status.idle": "2020-11-30T15:00:23.317389Z",
"shell.execute_reply": "2020-11-30T15:00:23.316686Z"
},
"papermill": {
"duration": 0.253619,
"end_time": "2020-11-30T15:00:23.317572",
"exception": false,
"start_time": "2020-11-30T15:00:23.063953",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ca646e33e8484a10a36133093915aad2",
"version_major": 2,
"version_minor": 0
},
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "75663be9162c4fdb8e5e4ef5e159064a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"NGLWidget()"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"basis.plot3d()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.518804Z",
"start_time": "2019-10-08T13:04:31.516776Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:23.390217Z",
"iopub.status.busy": "2020-11-30T15:00:23.389590Z",
"iopub.status.idle": "2020-11-30T15:00:23.392996Z",
"shell.execute_reply": "2020-11-30T15:00:23.392490Z"
},
"papermill": {
"duration": 0.040737,
"end_time": "2020-11-30T15:00:23.393130",
"exception": false,
"start_time": "2020-11-30T15:00:23.352393",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"# pr.remove_jobs(recursive=True)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:31.531151Z",
"start_time": "2019-10-08T13:04:31.520073Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:23.467012Z",
"iopub.status.busy": "2020-11-30T15:00:23.466302Z",
"iopub.status.idle": "2020-11-30T15:00:23.469589Z",
"shell.execute_reply": "2020-11-30T15:00:23.469008Z"
},
"papermill": {
"duration": 0.041727,
"end_time": "2020-11-30T15:00:23.469741",
"exception": false,
"start_time": "2020-11-30T15:00:23.428014",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"timestep_iter, fit_range_iter, nve_run_time_steps_iter = initialise_iterators(project_parameter)\n",
"timestep = next(timestep_iter)\n",
"fit_range = next(fit_range_iter)\n",
"nve_run_time_steps = next(nve_run_time_steps_iter)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:04:32.021404Z",
"start_time": "2019-10-08T13:04:31.532487Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:23.547237Z",
"iopub.status.busy": "2020-11-30T15:00:23.546622Z",
"iopub.status.idle": "2020-11-30T15:00:23.550584Z",
"shell.execute_reply": "2020-11-30T15:00:23.551280Z"
},
"papermill": {
"duration": 0.046552,
"end_time": "2020-11-30T15:00:23.551496",
"exception": false,
"start_time": "2020-11-30T15:00:23.504944",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: []"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr.job_table()"
]
},
{
"cell_type": "markdown",
"metadata": {
"papermill": {
"duration": 0.034247,
"end_time": "2020-11-30T15:00:23.623490",
"exception": false,
"start_time": "2020-11-30T15:00:23.589243",
"status": "completed"
},
"tags": []
},
"source": [
"# Step 1: set up the solid sample and roughly estimate a melting point"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:06:12.707863Z",
"start_time": "2019-10-08T13:04:32.022971Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:23.696645Z",
"iopub.status.busy": "2020-11-30T15:00:23.695970Z",
"iopub.status.idle": "2020-11-30T15:00:25.462810Z",
"shell.execute_reply": "2020-11-30T15:00:25.462064Z"
},
"papermill": {
"duration": 1.805549,
"end_time": "2020-11-30T15:00:25.462968",
"exception": false,
"start_time": "2020-11-30T15:00:23.657419",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/scratch/janssen/pyiron_meltingpoint/.snakemake/conda/9e28c1ea/lib/python3.9/site-packages/pyiron/lammps/interactive.py:245: UserWarning: e_tol is deprecated as of vers. 0.3.0. It is not guaranteed to be in service in vers. 0.4.0. Use ionic_energy_tolerance instead.\n",
" warnings.warn(\n",
"/scratch/janssen/pyiron_meltingpoint/.snakemake/conda/9e28c1ea/lib/python3.9/site-packages/pyiron/lammps/interactive.py:251: UserWarning: f_tol is deprecated as of vers. 0.3.0. It is not guaranteed to be in service in vers. 0.4.0. Use ionic_force_tolerance instead.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job minimize_pos was saved and received the ID: 1\n"
]
}
],
"source": [
"ham_minimize_pos= minimize_pos(\n",
" structure=basis, \n",
" project_parameter=project_parameter\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:07:54.491128Z",
"start_time": "2019-10-08T13:06:13.279478Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:25.552618Z",
"iopub.status.busy": "2020-11-30T15:00:25.551998Z",
"iopub.status.idle": "2020-11-30T15:00:27.483330Z",
"shell.execute_reply": "2020-11-30T15:00:27.483885Z"
},
"papermill": {
"duration": 1.982902,
"end_time": "2020-11-30T15:00:27.484064",
"exception": false,
"start_time": "2020-11-30T15:00:25.501162",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/scratch/janssen/pyiron_meltingpoint/.snakemake/conda/9e28c1ea/lib/python3.9/site-packages/pyiron/lammps/interactive.py:245: UserWarning: e_tol is deprecated as of vers. 0.3.0. It is not guaranteed to be in service in vers. 0.4.0. Use ionic_energy_tolerance instead.\n",
" warnings.warn(\n",
"/scratch/janssen/pyiron_meltingpoint/.snakemake/conda/9e28c1ea/lib/python3.9/site-packages/pyiron/lammps/interactive.py:251: UserWarning: f_tol is deprecated as of vers. 0.3.0. It is not guaranteed to be in service in vers. 0.4.0. Use ionic_force_tolerance instead.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job minimize_vol was saved and received the ID: 2\n"
]
}
],
"source": [
"ham_minimize_vol = minimize_vol(\n",
" structure=ham_minimize_pos.get_structure(), \n",
" project_parameter=project_parameter\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:21:25.585304Z",
"start_time": "2019-10-08T13:07:54.595319Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:00:27.604008Z",
"iopub.status.busy": "2020-11-30T15:00:27.602297Z",
"iopub.status.idle": "2020-11-30T15:01:50.937093Z",
"shell.execute_reply": "2020-11-30T15:01:50.936049Z"
},
"papermill": {
"duration": 83.409184,
"end_time": "2020-11-30T15:01:50.937326",
"exception": false,
"start_time": "2020-11-30T15:00:27.528142",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_1000 was saved and received the ID: 3\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_2000 was saved and received the ID: 4\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3000 was saved and received the ID: 5\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_4000 was saved and received the ID: 6\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3500_0 was saved and received the ID: 7\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3250_0 was saved and received the ID: 8\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3125_0 was saved and received the ID: 9\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3062_5 was saved and received the ID: 10\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3031_25 was saved and received the ID: 11\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3015_625 was saved and received the ID: 12\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job temp_heating_3023_4375 was saved and received the ID: 13\n"
]
}
],
"source": [
"temperature_next, structure_left = get_initial_melting_temperature_guess(\n",
" project_parameter=project_parameter, \n",
" ham_minimize_vol=ham_minimize_vol, \n",
" temperature_next=temperature_next\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:21:25.634302Z",
"start_time": "2019-10-08T13:21:25.630469Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:01:51.029698Z",
"iopub.status.busy": "2020-11-30T15:01:51.029024Z",
"iopub.status.idle": "2020-11-30T15:01:51.033195Z",
"shell.execute_reply": "2020-11-30T15:01:51.032527Z"
},
"papermill": {
"duration": 0.049086,
"end_time": "2020-11-30T15:01:51.033338",
"exception": false,
"start_time": "2020-11-30T15:01:50.984252",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"3023"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temperature_next # +/- 100K "
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:21:25.798131Z",
"start_time": "2019-10-08T13:21:25.788508Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:01:51.120846Z",
"iopub.status.busy": "2020-11-30T15:01:51.120229Z",
"iopub.status.idle": "2020-11-30T15:01:51.123519Z",
"shell.execute_reply": "2020-11-30T15:01:51.122819Z"
},
"papermill": {
"duration": 0.048251,
"end_time": "2020-11-30T15:01:51.123668",
"exception": false,
"start_time": "2020-11-30T15:01:51.075417",
"status": "completed"
},
"tags": []
},
"outputs": [],
"source": [
"if step_count in step_dict.keys():\n",
" temperature_next = step_dict[step_count]['temperature_next']\n",
"else: \n",
" step_dict[step_count]= {'temperature_next': temperature_next}"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:21:25.824814Z",
"start_time": "2019-10-08T13:21:25.799495Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:01:51.210931Z",
"iopub.status.busy": "2020-11-30T15:01:51.210317Z",
"iopub.status.idle": "2020-11-30T15:01:51.213858Z",
"shell.execute_reply": "2020-11-30T15:01:51.214395Z"
},
"papermill": {
"duration": 0.048622,
"end_time": "2020-11-30T15:01:51.214546",
"exception": false,
"start_time": "2020-11-30T15:01:51.165924",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"{0: {'temperature_next': 3023}}"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"step_dict"
]
},
{
"cell_type": "markdown",
"metadata": {
"papermill": {
"duration": 0.040141,
"end_time": "2020-11-30T15:01:51.296741",
"exception": false,
"start_time": "2020-11-30T15:01:51.256600",
"status": "completed"
},
"tags": []
},
"source": [
"# Step 2: set up the interface structure"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2019-10-08T13:21:26.283490Z",
"start_time": "2019-10-08T13:21:25.826153Z"
},
"execution": {
"iopub.execute_input": "2020-11-30T15:01:51.393761Z",
"iopub.status.busy": "2020-11-30T15:01:51.393140Z",
"iopub.status.idle": "2020-11-30T18:01:21.868355Z",
"shell.execute_reply": "2020-11-30T18:01:21.868896Z"
},
"papermill": {
"duration": 10770.532049,
"end_time": "2020-11-30T18:01:21.869079",
"exception": false,
"start_time": "2020-11-30T15:01:51.337030",
"status": "completed"
},
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_npt_solid_3023 was saved and received the ID: 14\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_npt_liquid_high_4023 was saved and received the ID: 15\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_npt_liquid_low_3023 was saved and received the ID: 16\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:32:01,569 - pyiron_log - WARNING - Job 'ham_nve_0_95_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_95_3023_0 was saved and received the ID: 17\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:34:15,420 - pyiron_log - WARNING - Job 'ham_nve_0_955_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_955_3023_0 was saved and received the ID: 18\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:36:27,490 - pyiron_log - WARNING - Job 'ham_nve_0_96_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_96_3023_0 was saved and received the ID: 19\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:38:37,996 - pyiron_log - WARNING - Job 'ham_nve_0_965_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_965_3023_0 was saved and received the ID: 20\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:40:46,940 - pyiron_log - WARNING - Job 'ham_nve_0_97_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_97_3023_0 was saved and received the ID: 21\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:42:54,169 - pyiron_log - WARNING - Job 'ham_nve_0_975_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_975_3023_0 was saved and received the ID: 22\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:45:00,163 - pyiron_log - WARNING - Job 'ham_nve_0_98_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_98_3023_0 was saved and received the ID: 23\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:47:04,067 - pyiron_log - WARNING - Job 'ham_nve_0_985_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_985_3023_0 was saved and received the ID: 24\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:49:07,046 - pyiron_log - WARNING - Job 'ham_nve_0_99_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_99_3023_0 was saved and received the ID: 25\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:51:08,129 - pyiron_log - WARNING - Job 'ham_nve_0_995_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_0_995_3023_0 was saved and received the ID: 26\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:53:07,683 - pyiron_log - WARNING - Job 'ham_nve_1_0_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_0_3023_0 was saved and received the ID: 27\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:55:06,009 - pyiron_log - WARNING - Job 'ham_nve_1_005_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_005_3023_0 was saved and received the ID: 28\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:57:03,091 - pyiron_log - WARNING - Job 'ham_nve_1_01_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_01_3023_0 was saved and received the ID: 29\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 16:58:59,137 - pyiron_log - WARNING - Job 'ham_nve_1_015_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_015_3023_0 was saved and received the ID: 30\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:00:53,908 - pyiron_log - WARNING - Job 'ham_nve_1_02_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_02_3023_0 was saved and received the ID: 31\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:02:47,505 - pyiron_log - WARNING - Job 'ham_nve_1_025_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_025_3023_0 was saved and received the ID: 32\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:04:39,608 - pyiron_log - WARNING - Job 'ham_nve_1_03_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_03_3023_0 was saved and received the ID: 33\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:06:31,088 - pyiron_log - WARNING - Job 'ham_nve_1_035_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_035_3023_0 was saved and received the ID: 34\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:08:21,903 - pyiron_log - WARNING - Job 'ham_nve_1_04_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_04_3023_0 was saved and received the ID: 35\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:10:19,786 - pyiron_log - WARNING - Job 'ham_nve_1_045_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_045_3023_0 was saved and received the ID: 36\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2020-11-30 17:12:18,215 - pyiron_log - WARNING - Job 'ham_nve_1_05_3023_0' does not exist and cannot be loaded\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nvt_1_05_3023_0 was saved and received the ID: 37\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_95_3023_0 was saved and received the ID: 38\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_955_3023_0 was saved and received the ID: 39\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_96_3023_0 was saved and received the ID: 40\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_965_3023_0 was saved and received the ID: 41\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_97_3023_0 was saved and received the ID: 42\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_975_3023_0 was saved and received the ID: 43\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_98_3023_0 was saved and received the ID: 44\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_985_3023_0 was saved and received the ID: 45\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_99_3023_0 was saved and received the ID: 46\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_0_995_3023_0 was saved and received the ID: 47\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_0_3023_0 was saved and received the ID: 48\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_005_3023_0 was saved and received the ID: 49\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_01_3023_0 was saved and received the ID: 50\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_015_3023_0 was saved and received the ID: 51\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_02_3023_0 was saved and received the ID: 52\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_025_3023_0 was saved and received the ID: 53\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_03_3023_0 was saved and received the ID: 54\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_035_3023_0 was saved and received the ID: 55\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_04_3023_0 was saved and received the ID: 56\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_045_3023_0 was saved and received the ID: 57\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"The job ham_nve_1_05_3023_0 was saved and received the ID: 58\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"