diff --git a/kmcos/__init__.py b/kmcos/__init__.py index 7efbd91da4539e82cd43c2be11cdaa4fdc2acf6d..e97728f9d1bc21f458a0a504f32ef3672073d498 100644 --- a/kmcos/__init__.py +++ b/kmcos/__init__.py @@ -440,6 +440,10 @@ def evaluate_rate_expression(rate_expr, parameters={}): return rate_const +def compile(kmc_model): + import kmcos + kmcos.export(kmc_model.filename + ' -b' + kmc_model.backend) + #kmcos can be invoked directly from the command line in one of the following ways:: # kmcos [help] (all|benchmark|build|edit|export|help|import|rebuild|run|settings-export|shell|version|view|xml) [options] #defining small wrapper functions to call cli if person types kmcos.export("MyFirstModel.xml") etc. Probably should have made an "@" decorator, but that's okay. diff --git a/kmcos/types.py b/kmcos/types.py index 5943a0366ce0b238898507ceb686dbc67090c0cd..dd0057d132d5e28b28059074444ef81d8f86adf6 100644 --- a/kmcos/types.py +++ b/kmcos/types.py @@ -81,14 +81,19 @@ class Project(object): - Processes """ - def __init__(self): + def __init__(self, model_name=None): self.meta = Meta() + if type(model_name)==type(None): + self.model_name = "UntitledModel" + else: + self.model_name = model_name self.layer_list = LayerList() self.lattice = self.layer_list self.parameter_list = ParameterList() self.species_list = SpeciesList() self.process_list = ProcessList() self.output_list = OutputList() + self.filename = self.model_name + ".xml" self.backend = "local_smart" #this is just the default. # Quick'n'dirty define access functions @@ -576,6 +581,7 @@ class Project(object): else: raise UserWarning('Cannot export to file suffix %s' % os.path.splitext(filename)[-1]) + save_model = save def export_xml_file(self, filename, validate=True): f = open(filename, 'w') @@ -1306,16 +1312,24 @@ class Project(object): model_name=None, model_dimension=None, debug=None): - if author is not None: - self.meta.author = author - if email is not None: - self.meta.email = email - if model_name is not None: - self.meta.model_name = model_name - if model_dimension is not None: - self.meta.model_dimension = model_dimension - if debug is not None: - self.meta.debug = debug + if type(author) != type(None): + self.meta.author = str(author) + if type(email) != type(None): + self.meta.email = str(email) + if type(model_name) != type(None): + self.meta.model_name = str(model_name) + if type(model_dimension) != type(None): + self.meta.model_dimension = int(model_dimension) + if type(debug) != type(None): + self.meta.debug = str(debug) + + +def create_kmc_model(model_name=None): + if type(model_name) == type(None): + pt = Project() + else: + pt = Project(model_name) + return pt class Meta(object):