Open sjtuzhanglei opened 2 years ago
Dear CASM developers,
When running the demo MC folder 'grid' for ZrO, I got errors:
Traceback (most recent call last): File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 204, in submit_T_up(T_grid, xi_grid) File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 105, in submit_T_up monte_cmd(tinput) File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 56, in monte_cmd stdout, stderr, returncode = proj.command('monte -s input.json') TypeError: cannot unpack non-iterable NoneType object
Input file is:
import subprocess import json import os import numpy as np import copy from casm.project import Project import sh as pbs
print (""" Running a grid of Monte Carlo calculations (This may take a while)
""")
T_grid = (200, 1000, 100) xi_grid = (-2.2, -1.6, 0.05)
d = { "mode" : "incremental", "dependent_runs" : True, "motif" : { "configname" : "restricted_auto", }, "initial_conditions" : { "param_chem_pot" : { "a" : -3.00 }, "temperature" : 1000.0, "tolerance" : 0.01 }, "final_conditions" : { "param_chem_pot" : { "a" : -3.00 }, "temperature" : 200.0, "tolerance" : 0.01 }, "incremental_conditions" : { "param_chem_pot" : { "a" : 0.0 }, "temperature" : -100.0, "tolerance" : 0.01 } }
proj = None
def monte_cmd(input): global proj if proj is None: proj = Project() stdout, stderr, returncode = proj.command('monte -s input.json') print (stdout)
#
def submit_T_up(T_grid, xi_grid): index = 0 for xi in np.arange(*xi_grid): path = "T_up." + str(index)
tinput = copy.deepcopy(input) tinput['driver'] = d tinput['driver']['initial_conditions']['temperature'] = T_grid[0] tinput['driver']['final_conditions']['temperature'] = T_grid[1] tinput['driver']['incremental_conditions']['temperature'] = T_grid[2] tinput['driver']['initial_conditions']['param_chem_pot']['a'] = xi tinput['driver']['final_conditions']['param_chem_pot']['a'] = xi tinput['driver']['incremental_conditions']['param_chem_pot']['a'] = 0.0 cwd = os.getcwd() if not os.path.exists(path): os.mkdir(path) os.chdir(path) print ("Running:", path) with open('input.json','w') as f: json.dump(tinput, f) monte_cmd(tinput) os.chdir(cwd) index += 1
def submit_T_down(T_grid, xi_grid): index = 0 for xi in np.arange(*xi_grid): path = "T_down." + str(index)
tinput = copy.deepcopy(input) tinput['driver'] = d tinput['driver']['initial_conditions']['temperature'] = T_grid[1] tinput['driver']['final_conditions']['temperature'] = T_grid[0] tinput['driver']['incremental_conditions']['temperature'] = -T_grid[2] tinput['driver']['initial_conditions']['param_chem_pot']['a'] = xi tinput['driver']['final_conditions']['param_chem_pot']['a'] = xi tinput['driver']['incremental_conditions']['param_chem_pot']['a'] = 0.0 cwd = os.getcwd() if not os.path.exists(path): os.mkdir(path) os.chdir(path) print ("Running:", path) with open('input.json','w') as f: json.dump(tinput, f) monte_cmd(tinput) os.chdir(cwd) index += 1
def submit_xi_up(T_grid, xi_grid): index = 0 for T in np.arange(*T_grid): path = "xi_up." + str(index)
tinput = copy.deepcopy(input) tinput['driver'] = d tinput['driver']['initial_conditions']['temperature'] = T tinput['driver']['final_conditions']['temperature'] = T tinput['driver']['incremental_conditions']['temperature'] = 0.0 tinput['driver']['initial_conditions']['param_chem_pot']['a'] = xi_grid[0] tinput['driver']['final_conditions']['param_chem_pot']['a'] = xi_grid[1] tinput['driver']['incremental_conditions']['param_chem_pot']['a'] = xi_grid[2] cwd = os.getcwd() if not os.path.exists(path): os.mkdir(path) os.chdir(path) print ("Running:", path) with open('input.json','w') as f: json.dump(tinput, f) monte_cmd(tinput) os.chdir(cwd) index += 1
def submit_xi_down(T_grid, xi_grid): index = 0 for T in np.arange(*T_grid): path = "xi_down." + str(index)
tinput = copy.deepcopy(input) tinput['driver'] = d tinput['driver']['initial_conditions']['temperature'] = T tinput['driver']['final_conditions']['temperature'] = T tinput['driver']['incremental_conditions']['temperature'] = 0.0 tinput['driver']['initial_conditions']['param_chem_pot']['a'] = xi_grid[1] tinput['driver']['final_conditions']['param_chem_pot']['a'] = xi_grid[0] tinput['driver']['incremental_conditions']['param_chem_pot']['a'] = -xi_grid[2] cwd = os.getcwd() if not os.path.exists(path): os.mkdir(path) os.chdir(path) print ("Running:", path) with open('input.json','w') as f: json.dump(tinput, f) monte_cmd(tinput) os.chdir(cwd) index += 1
with open('metropolis_grand_canonical.json','r') as f: input = json.load(f)
submit_T_up(T_grid, xi_grid) submit_T_down(T_grid, xi_grid) submit_xi_up(T_grid, xi_grid) submit_xi_down(T_grid, xi_grid)
Thanks for the report on this, I'll take a look when I can. In the meantime, it can still serve as a guide to how to grid up thermodynamic space for free energy integration.
Dear CASM developers,
When running the demo MC folder 'grid' for ZrO, I got errors:
Traceback (most recent call last): File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 204, in
submit_T_up(T_grid, xi_grid)
File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 105, in submit_T_up
monte_cmd(tinput)
File "/global/u2/v/voz5005/ZrO/mc/grid/run.py", line 56, in monte_cmd
stdout, stderr, returncode = proj.command('monte -s input.json')
TypeError: cannot unpack non-iterable NoneType object
Input file is:
import subprocess import json import os import numpy as np import copy from casm.project import Project import sh as pbs
print (""" Running a grid of Monte Carlo calculations (This may take a while)
""")
Grid space to run Monte Carlo calculations (min, max, delta)
T_grid = (200, 1000, 100) xi_grid = (-2.2, -1.6, 0.05)
d = { "mode" : "incremental", "dependent_runs" : True, "motif" : { "configname" : "restricted_auto", }, "initial_conditions" : { "param_chem_pot" : { "a" : -3.00 }, "temperature" : 1000.0, "tolerance" : 0.01 }, "final_conditions" : { "param_chem_pot" : { "a" : -3.00 }, "temperature" : 200.0, "tolerance" : 0.01 }, "incremental_conditions" : { "param_chem_pot" : { "a" : 0.0 }, "temperature" : -100.0, "tolerance" : 0.01 } }
proj = None
For submission on personal computer...
def monte_cmd(input): global proj if proj is None: proj = Project() stdout, stderr, returncode = proj.command('monte -s input.json') print (stdout)
For submission on PRISMS cluster...
#
def monte_cmd(input):
jobname = os.path.basename(os.getcwd())
cmd = """
source ~/privatemodules/casm
casm monte -s input.json
"""
job = pbs.PrismsDebugJob(name = jobname,
nodes = "1",
ppn = "1",
walltime = "6:00:00",
pmem = "3800mb",
exetime = None,
message = "a",
email = None,
command = cmd,
auto = False).submit()
def submit_T_up(T_grid, xi_grid): index = 0 for xi in np.arange(*xi_grid): path = "T_up." + str(index)
def submit_T_down(T_grid, xi_grid): index = 0 for xi in np.arange(*xi_grid): path = "T_down." + str(index)
def submit_xi_up(T_grid, xi_grid): index = 0 for T in np.arange(*T_grid): path = "xi_up." + str(index)
def submit_xi_down(T_grid, xi_grid): index = 0 for T in np.arange(*T_grid): path = "xi_down." + str(index)
with open('metropolis_grand_canonical.json','r') as f: input = json.load(f)
submit_T_up(T_grid, xi_grid) submit_T_down(T_grid, xi_grid) submit_xi_up(T_grid, xi_grid) submit_xi_down(T_grid, xi_grid)