From 0a3ae01be46dfedbd7023f1eb0b2881880d42638 Mon Sep 17 00:00:00 2001 From: kmlefran Date: Wed, 24 Jul 2024 13:36:39 -0400 Subject: [PATCH] Remove aiida-aimall version of aiida-gaussian --- pyproject.toml | 5 +- src/aiida_aimall/calculations.py | 273 +--- src/aiida_aimall/controllers.py | 8 +- src/aiida_aimall/parsers.py | 191 +-- src/aiida_aimall/workchains.py | 142 +- .../test_gaussianwfxcalculation.py | 148 -- tests/conftest.py | 40 +- .../test_gaussiansubmissioncontroller.py | 16 +- tests/parsers/test_aimqbbaseparser.py | 2 +- .../aimall.gaussianwfx/default/aiida.chk | Bin 0 -> 774144 bytes .../aimall.gaussianwfx/default/aiida.gjf | 15 + .../aimall.gaussianwfx/default/aiida.log | 1405 +++++++++++++++++ .../{aiida.wfx => default/output.wfx} | 0 .../output.wfx} | 0 .../aimall.subparam/gaussianopt/output.wfx | 180 +++ tests/workchains/test_aimreorworkchain.py | 4 +- tests/workchains/test_calcfunctions.py | 13 +- tests/workchains/test_smilestogaussian.py | 9 +- tests/workchains/test_subparamchain.py | 47 +- 19 files changed, 1807 insertions(+), 691 deletions(-) delete mode 100644 tests/calculations/test_gaussianwfxcalculation.py create mode 100644 tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.chk create mode 100644 tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.gjf create mode 100644 tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.log rename tests/workchains/fixtures/aimall.gaussianwfx/{aiida.wfx => default/output.wfx} (100%) rename tests/workchains/fixtures/{aimall.subparam/gaussianopt/aiida.wfx => aimall.gaussianwfx/output.wfx} (100%) create mode 100644 tests/workchains/fixtures/aimall.subparam/gaussianopt/output.wfx diff --git a/pyproject.toml b/pyproject.toml index b9bed1c..eadbdbe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,8 +34,9 @@ dependencies = [ "cclib @ git+https://github.com/cclib/cclib", "multiprocess", "subproptools", - "pymatgen", - "aiida-shell" + "aiida-gaussian", + "pymatgen==2023.12.18", + "aiida-shell", ] [project.urls] diff --git a/src/aiida_aimall/calculations.py b/src/aiida_aimall/calculations.py index 7a3811c..0eb7fa0 100644 --- a/src/aiida_aimall/calculations.py +++ b/src/aiida_aimall/calculations.py @@ -5,20 +5,10 @@ entry point """ -from aiida.common import CalcInfo, CodeInfo, datastructures -from aiida.engine import CalcJob, ExitCode -from aiida.orm import ( - Dict, - Float, - Int, - List, - RemoteData, - SinglefileData, - Str, - StructureData, -) +from aiida.common import datastructures +from aiida.engine import CalcJob +from aiida.orm import Dict, Int, List, SinglefileData from aiida.plugins import DataFactory -from pymatgen.io.gaussian import GaussianInput # pylint: disable=import-error AimqbParameters = DataFactory("aimall.aimqb") @@ -155,260 +145,3 @@ def prepare_for_submission(self, folder): ] return calcinfo - - -class GaussianWFXCalculation(CalcJob): - """AiiDA calculation plugin wrapping Gaussian. Adapted from aiida-gaussian - https://github.com/nanotech-empa/aiida-gaussian, Copyright (c) 2020 Kristjan Eimre. - Additions made to enable providing molecule input as orm.Str, - and wfx files are retrieved by default. We further define another input wfxgroup in which you can provide an - optional group to store the wfx file in and fragment_label as an optional extra to add on the output. - - Args: - structure: StructureData for molecule to be run. Do not provide structure AND structure_str, but provide - at least one - structure_str: Str for molecule to be run. e.g. orm.Str(H 0.0 0.0 0.0\n H -1.0 0.0 0.0) - Do not provide structure AND structure_str, but provide at least one - wfxgroup: Str of a group to add the .wfx files to - parameters: required: Dict of Gaussian parameters, same as from aiida-gaussian. Note that the options provided should - generate a wfx file. See Example - settings: optional, additional input parameters - fragment_label: Str, optional: an extra to add to the wfx file node. Involved in the controllers, - which check extras - parent_calc_folder: RemoteData, optional: the folder of a completed gaussian calculation - - Example: - :: - - builder = GaussianCalculation.get_builder() - builder.structure_str = orm.Str("H 0.0 0.0 0.0 -1.0 0.0 0.0") # needs newline but docs doesn't like - builder.parameters = orm.Dict(dict={ - 'link0_parameters': { - '%chk':'aiida.chk', - "%mem": "3200MB", # Currently set to use 8000 MB in .sh files - "%nprocshared": 4, - }, - 'functional':'wb97xd', - 'basis_set':'aug-cc-pvtz', - 'charge': 0, - 'multiplicity': 1, - 'route_parameters': {'opt': None, 'Output':'WFX'}, - "input_parameters": {"output.wfx": None}, - }) - builder.code = orm.load_code("g16@localhost") - builder.metadata.options.resources = {"num_machines": 1, "tot_num_mpiprocs": 4} - builder.metadata.options.max_memory_kb = int(6400 * 1.25) * 1024 - builder.metadata.options.max_wallclock_seconds = 604800 - submit(builder) - - """ - - # Defaults - INPUT_FILE = "aiida.inp" - OUTPUT_FILE = "aiida.out" - PARENT_FOLDER_NAME = "parent_calc" - # can override in metadata - DEFAULT_PARSER = "aimall.gaussianwfx" - - @classmethod - def define(cls, spec): - super().define(spec) - - # Input parameters - spec.input( - "structure", - valid_type=StructureData, - required=False, - help="Input structure; will be converted to pymatgen object", - ) - spec.input( - "wfxgroup", - valid_type=Str, - required=False, - help="Group label that output wfx will be a member of", - ) - spec.input("structure_str", valid_type=Str, required=False) - spec.input( - "parameters", valid_type=Dict, required=True, help="Input parameters" - ) - spec.input( - "settings", - valid_type=Dict, - required=False, - help="additional input parameters", - ) - spec.input( - "fragment_label", valid_type=Str, required=False, help="smiles of fragment" - ) - spec.input( - "parent_calc_folder", - valid_type=RemoteData, - required=False, - help="the folder of a completed gaussian calculation", - ) - - # Turn mpi off by default - spec.input("metadata.options.withmpi", valid_type=bool, default=False) - - spec.input( # update parser here - "metadata.options.parser_name", - valid_type=str, - default=cls.DEFAULT_PARSER, - non_db=True, - ) - - # Outputs - spec.output( - "output_parameters", - valid_type=Dict, - required=True, - help="The result parameters of the calculation", - ) - spec.output( - "output_structure", - valid_type=StructureData, - required=False, - help="Final optimized structure, if available", - ) - spec.output( - "energy_ev", - valid_type=Float, - required=False, - help="Final energy in electronvolts", - ) - spec.output( - "wfx", - valid_type=SinglefileData, - required=False, - help="wfx file from calculation", - ) - spec.default_output_node = "output_parameters" - spec.outputs.dynamic = True - - # Exit codes - spec.exit_code( - 200, - "ERROR_NO_RETRIEVED_FOLDER", - message="The retrieved folder data node could not be accessed.", - ) - spec.exit_code( - 210, - "ERROR_OUTPUT_MISSING", - message="The retrieved folder did not contain the output file.", - ) - spec.exit_code( - 211, - "ERROR_OUTPUT_LOG_READ", - message="The retrieved output log could not be read.", - ) - spec.exit_code( - 220, - "ERROR_OUTPUT_PARSING", - message="The output file could not be parsed.", - ) - spec.exit_code( - 301, - "ERROR_SCF_FAILURE", - message="The SCF did not converge and the calculation was terminated.", - ) - spec.exit_code( - 302, - "ERROR_ASYTOP", - message="The calculation was terminated due to a logic error in ASyTop.", - ) - spec.exit_code( - 303, - "ERROR_INACCURATE_QUADRATURE_CALDSU", - message="The calculation was terminated due to an inaccurate quadrature in CalDSu.", - ) - spec.exit_code( - 390, - "ERROR_TERMINATION", - message="The calculation was terminated due to an error.", - ) - spec.exit_code( - 391, - "ERROR_NO_NORMAL_TERMINATION", - message="The log did not contain 'Normal termination' (probably out of time).", - ) - spec.exit_code( - 410, - "ERROR_MULTIPLE_INPUT_STRUCTURES", - message="structure and structure_str were both provided as inputs. provide only one", - ) - - # -------------------------------------------------------------------------- - def prepare_for_submission(self, folder): - """ - This is the routine to be called when you want to create - the input files and related stuff with a plugin. - - :param folder: a aiida.common.folders.Folder subclass where - the plugin should put all its files. - """ - - if "structure" in self.inputs and "structure_str" not in self.inputs: - structure = self.inputs.structure.get_pymatgen_molecule() - elif "structure" not in self.inputs and "structure_str" in self.inputs: - structure = self.inputs.structure_str.value - elif "structure" in self.inputs and "structure_str" in self.inputs: - return ExitCode(410) - else: - # If structure is not specified, it is read from the chk file - structure = None - - # Generate the input file - input_string = GaussianWFXCalculation._render_input_string_from_params( - self.inputs.parameters.get_dict(), structure - ) - - with open( - folder.get_abs_path(self.INPUT_FILE), "w", encoding="utf-8" - ) as out_file: - out_file.write(input_string) - - settings = self.inputs.settings.get_dict() if "settings" in self.inputs else {} - - # create code info - codeinfo = CodeInfo() - codeinfo.cmdline_params = settings.pop("cmdline", []) - codeinfo.code_uuid = self.inputs.code.uuid - codeinfo.stdin_name = self.INPUT_FILE - codeinfo.stdout_name = self.OUTPUT_FILE - codeinfo.withmpi = self.inputs.metadata.options.withmpi - - # create calculation info - calcinfo = CalcInfo() - calcinfo.remote_copy_list = [] - calcinfo.local_copy_list = [] - calcinfo.uuid = self.uuid - calcinfo.cmdline_params = codeinfo.cmdline_params - calcinfo.stdin_name = self.INPUT_FILE - calcinfo.stdout_name = self.OUTPUT_FILE - calcinfo.codes_info = [codeinfo] - calcinfo.retrieve_list = [self.OUTPUT_FILE, "output.wfx"] - - # symlink or copy to parent calculation - calcinfo.remote_symlink_list = [] - calcinfo.remote_copy_list = [] - if "parent_calc_folder" in self.inputs: - comp_uuid = self.inputs.parent_calc_folder.computer.uuid - remote_path = self.inputs.parent_calc_folder.get_remote_path() - copy_info = (comp_uuid, remote_path, self.PARENT_FOLDER_NAME) - if self.inputs.code.computer.uuid == comp_uuid: - # if running on the same computer - make a symlink - # if not - copy the folder - calcinfo.remote_symlink_list.append(copy_info) - else: - calcinfo.remote_copy_list.append(copy_info) - - return calcinfo - - @classmethod - def _render_input_string_from_params(cls, parameters, structure_string): - """Generate the Gaussian input file using pymatgen.""" - parameters.setdefault("dieze_tag", "#N") - parameters.setdefault("spin_multiplicity", parameters.pop("multiplicity", None)) - parameters["title"] = "input generated by the aiida-gaussian plugin" - gaussian_input = GaussianInput(structure_string, **parameters) - return gaussian_input.to_str(cart_coords=True) diff --git a/src/aiida_aimall/controllers.py b/src/aiida_aimall/controllers.py index ef9ed74..cebd679 100644 --- a/src/aiida_aimall/controllers.py +++ b/src/aiida_aimall/controllers.py @@ -11,7 +11,7 @@ from aiida_submission_controller import FromGroupSubmissionController AimqbParameters = DataFactory("aimall.aimqb") -GaussianCalculation = CalculationFactory("aimall.gaussianwfx") +GaussianCalculation = CalculationFactory("gaussian") AimqbCalculation = CalculationFactory("aimall.aimqb") @@ -473,7 +473,7 @@ class GaussianSubmissionController(FromGroupSubmissionController): g16_sp_params: dict wfxgroup: str # GaussianWFXCalculation entry point as defined in aiida-aimall pyproject.toml - CALCULATION_ENTRY_POINT = "aimall.gaussianwfx" + CALCULATION_ENTRY_POINT = "gaussian" def __init__( self, @@ -514,11 +514,9 @@ def get_inputs_and_processclass_from_extras(self, extras_values): code = orm.load_code(self.code_label) structure = self.get_parent_node_from_extras(extras_values) inputs = { - "fragment_label": Str(extras_values[0]), "code": code, "parameters": Dict(self.g16_sp_params), - "structure_str": structure, - "wfxgroup": Str(self.wfxgroup), + "structure": structure, "metadata": { "options": { "resources": {"num_machines": 1, "tot_num_mpiprocs": 1}, diff --git a/src/aiida_aimall/parsers.py b/src/aiida_aimall/parsers.py index b04b23c..c1c5914 100644 --- a/src/aiida_aimall/parsers.py +++ b/src/aiida_aimall/parsers.py @@ -4,23 +4,14 @@ Register parsers via the "aiida.parsers" entry point in setup.json. """ -import datetime -import io -import re - -import ase # pylint:disable=import-error -import cclib # pylint:disable=import-error -import numpy as np -from aiida.common import NotExistent, exceptions + +from aiida.common import exceptions from aiida.engine import ExitCode -from aiida.orm import Dict, Float, SinglefileData, StructureData, load_group +from aiida.orm import Dict, SinglefileData from aiida.parsers.parser import Parser from aiida.plugins import CalculationFactory, DataFactory from subproptools import qtaim_extract as qt # pylint: disable=import-error -# from aiida.engine import ExitCode - - AimqbCalculation = CalculationFactory("aimall.aimqb") @@ -136,182 +127,6 @@ def _parse_bcp_props(self, sum_file_string): SinglefileData = DataFactory("core.singlefile") -class GaussianWFXParser(Parser): - """ - Basic AiiDA parser for the output of Gaussian - - Parses default cclib output as 'output_parameters' node and separates final SCF - energy as 'energy_ev' and output structure as 'output_structure' (if applicable) - - Adapted from aiida-gaussian https://github.com/nanotech-empa/aiida-gaussian, Copyright (c) 2020 Kristjan Eimre. - - """ - - def parse(self, **kwargs): - """Receives in input a dictionary of retrieved nodes. Does all the logic here.""" - fname = self.node.process_class.OUTPUT_FILE - - try: - out_folder = self.retrieved - if fname not in out_folder.base.repository.list_object_names(): - return self.exit_codes.ERROR_OUTPUT_MISSING - log_file_string = out_folder.base.repository.get_object_content(fname) - log_file_string = log_file_string.replace("Apple", "") - if "output.wfx" in out_folder.base.repository.list_object_names(): - wfx_file_string = out_folder.base.repository.get_object_content( - "output.wfx" - ) - sfd = SinglefileData(io.BytesIO(wfx_file_string.encode())) - sfd.store() - if "wfxgroup" in self.node.inputs: - out_group = load_group(self.node.inputs.wfxgroup.value) - out_group.add_nodes(sfd) - if "fragment_label" in self.node.inputs: - sfd.base.extras.set("smiles", self.node.inputs.fragment_label.value) - self.out("wfx", sfd) - except NotExistent: - return self.exit_codes.ERROR_NO_RETRIEVED_FOLDER - except OSError: - return self.exit_codes.ERROR_OUTPUT_LOG_READ - - exit_code = self._parse_log(log_file_string, self.node.inputs) - - if exit_code is not None: - return exit_code - - return ExitCode(0) - - def _parse_log(self, log_file_string, inputs): - - # parse with cclib - property_dict = self._parse_log_cclib(log_file_string) - - if property_dict is None: - return self.exit_codes.ERROR_OUTPUT_PARSING - - property_dict.update(self._parse_electron_numbers(log_file_string)) - - # set output nodes - self.out("output_parameters", Dict(dict=property_dict)) - - if "scfenergies" in property_dict: - self.out("energy_ev", Float(property_dict["scfenergies"][-1])) - - self._set_output_structure(inputs, property_dict) - - exit_code = self._final_checks_on_log(log_file_string, property_dict, inputs) - if exit_code is not None: - return exit_code - - return None - - def _parse_electron_numbers(self, log_file_string): - - find_el = re.search( - r"({0})\s*alpha electrons\s*({0}) beta".format( # pylint:disable=consider-using-f-string - NUM_RE - ), # pylint:disable=consider-using-f-string - log_file_string, # pylint:disable=consider-using-f-string - ) - - if find_el is not None: - return {"num_electrons": [int(e) for e in find_el.groups()]} - return {} - - def _parse_log_cclib(self, log_file_string): - - data = cclib.io.ccread(io.StringIO(log_file_string)) - - if data is None: - return None - - property_dict = data.getattributes() - - def make_serializeable(data): - """Recursively go through the dictionary and convert unserializeable values in-place: - - 1) In numpy arrays: - * ``nan`` -> ``0.0`` - * ``inf`` -> large number - 2) datetime.timedelta (introduced in cclib v1.8) -> convert to seconds - - :param data: A mapping of data. - """ - if isinstance(data, dict): - for key, value in data.items(): - data[key] = make_serializeable(value) - elif isinstance(data, list): - for index, item in enumerate(data): - data[index] = make_serializeable(item) - elif isinstance(data, np.ndarray): - np.nan_to_num(data, copy=False) - elif isinstance(data, datetime.timedelta): - data = data.total_seconds() - return data - - make_serializeable(property_dict) - - return property_dict - - def _set_output_structure(self, inputs, property_dict): - # in case of geometry optimization, - # return the last geometry as a separated node - if "atomcoords" in property_dict: - if ( - "opt" in inputs.parameters["route_parameters"] - or len(property_dict["atomcoords"]) > 1 - ): - - opt_coords = property_dict["atomcoords"][-1] - - # The StructureData output node needs a cell, - # even though it is not used in gaussian. - # Set it arbitrarily as double the bounding box + 10 - double_bbox = 2 * np.ptp(opt_coords, axis=0) + 10 - - ase_opt = ase.Atoms( - property_dict["atomnos"], - positions=property_dict["atomcoords"][-1], - cell=double_bbox, - ) - - structure = StructureData(ase=ase_opt) - self.out("output_structure", structure) - - def _final_checks_on_log(self, log_file_string, property_dict, inputs): - # pylint:disable=too-many-return-statements - # if opt and freq in route parameters - # make an extra check that in log file string there should be normal termination - # Error related to the symmetry identification (?). - - if "Logic error in ASyTop." in log_file_string: - return self.exit_codes.ERROR_ASYTOP - - if "Inaccurate quadrature in CalDSu." in log_file_string: - return self.exit_codes.ERROR_INACCURATE_QUADRATURE_CALDSU - - if "Convergence failure -- run terminated." in log_file_string: - return self.exit_codes.ERROR_SCF_FAILURE - - if "Error termination" in log_file_string: - return self.exit_codes.ERROR_TERMINATION - - if ( - "opt" in inputs.parameters["route_parameters"] - and "freq" in inputs.parameters["route_parameters"] - ): - if log_file_string.count("Normal termination") != 2: - return self.exit_codes.ERROR_NO_NORMAL_TERMINATION - - if ( - "success" not in property_dict["metadata"] - or not property_dict["metadata"]["success"] - ): - return self.exit_codes.ERROR_NO_NORMAL_TERMINATION - - return None - - class AimqbGroupParser(AimqbBaseParser): """ Parser class for parsing output of calculation. diff --git a/src/aiida_aimall/workchains.py b/src/aiida_aimall/workchains.py index 64f98d3..e3f534b 100644 --- a/src/aiida_aimall/workchains.py +++ b/src/aiida_aimall/workchains.py @@ -8,12 +8,26 @@ G16OptWorkChain, entry point: g16opt AimAllReor WorkChain, entry point: aimreor """ +import io + # pylint: disable=c-extension-no-member # pylint:disable=no-member import sys +from string import digits +import ase.io from aiida.engine import ToContext, WorkChain, calcfunction -from aiida.orm import Bool, Code, Dict, Int, List, SinglefileData, Str, load_group +from aiida.orm import ( + Bool, + Code, + Dict, + Int, + List, + SinglefileData, + Str, + StructureData, + load_group, +) from aiida.orm.extras import EntityExtras from aiida.plugins.factories import CalculationFactory, DataFactory from aiida_shell import launch_shell_job @@ -25,7 +39,7 @@ old_stdout = sys.stdout # load the needed calculations and data types -GaussianCalculation = CalculationFactory("aimall.gaussianwfx") +GaussianCalculation = CalculationFactory("gaussian") AimqbParameters = DataFactory("aimall.aimqb") AimqbCalculation = CalculationFactory("aimall.aimqb") @@ -42,6 +56,13 @@ def generate_rotated_structure_aiida(FolderData, atom_dict, cc_dict): return Dict(rotate_substituent_aiida(FolderData, atom_dict, cc_dict)) +def remove(in_list): + """Remove digits from a list of strings. e.g. ['O1','H2','H3'] -> ['O','H','H']""" + remove_digits = str.maketrans("", "", digits) + out_list = [i.translate(remove_digits) for i in in_list] + return out_list + + @calcfunction def dict_to_structure(fragment_dict): """Generate a string of xyz coordinates for Gaussian input file @@ -51,8 +72,10 @@ def dict_to_structure(fragment_dict): """ inp_dict = fragment_dict.get_dict() symbols = inp_dict["atom_symbols"] + symbols = remove(symbols) coords = inp_dict["geom"] outstr = "" + outstr += f"{len(symbols)}\n\n" for i, symbol in enumerate(symbols): if i != len(symbols) - 1: outstr = ( @@ -77,7 +100,10 @@ def dict_to_structure(fragment_dict): + " " + str(coords[i][2]) ) - return Str(outstr) + f = io.StringIO(outstr) + struct_data = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() + return struct_data def calc_multiplicity(mol): @@ -207,6 +233,18 @@ def get_substituent_input(smiles: str) -> dict: return out_dict +@calcfunction +def generate_structure_data(structure_Str): + """Take an input xyz string and convert it to StructureData""" + structure_str = structure_Str.value + num_atoms = len(structure_str.split("\n")) + xyz_string = f"{num_atoms}\n\n" + structure_str + f = io.StringIO(xyz_string) + struct_data = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() + return struct_data + + @calcfunction def parameters_with_cm(parameters, smiles_dict): """Add charge and multiplicity keys to Gaussian Input""" @@ -360,12 +398,16 @@ def update_parameters_with_cm(self): self.inputs.gaussian_parameters, self.ctx.smiles_geom ) + def string_to_StructureData(self): + """Convert an xyz string of molecule geometry to StructureData""" + self.ctx.structure = generate_structure_data(self.ctx.smiles_geom["xyz"]) + def submit_gaussian(self): """Submits the gaussian calculation""" builder = GaussianCalculation.get_builder() - builder.structure_str = Str(self.ctx.smiles_geom["xyz"]) + + builder.structure = self.ctx.structure builder.parameters = self.ctx.gaussian_cm_params - builder.fragment_label = self.inputs.smiles builder.code = self.inputs.gaussian_code builder.metadata.options.resources = { "num_machines": 1, @@ -375,8 +417,7 @@ def submit_gaussian(self): int(self.inputs.mem_mb.value * 1.25) * 1024 ) builder.metadata.options.max_wallclock_seconds = self.inputs.time_s.value - if "wfxgroup" in self.inputs: - builder.wfxgroup = self.inputs.wfxgroup + if self.inputs.dry_run.value: return self.inputs node = self.submit(builder) @@ -385,6 +426,11 @@ def submit_gaussian(self): def results(self): """Store our relevant information as output""" + if "wfxgroup" in self.inputs: + wfx_group = load_group(self.inputs.wfxgroup.value) + wfx_group.add_nodes( + self.ctx["opt"].base.links.get_outgoing().get_node_by_label("wfx") + ) self.out( "wfx", self.ctx["opt"].base.links.get_outgoing().get_node_by_label("wfx") ) @@ -412,7 +458,7 @@ def define(cls, spec): spec.input("aim_group", valid_type=Str, required=False) spec.input("reor_group", valid_type=Str, required=False) spec.input("dry_run", valid_type=Bool, default=lambda: Bool(False)) - spec.output("rotated_structure", valid_type=Str) + spec.output("rotated_structure", valid_type=StructureData) spec.outline( cls.aimall, cls.rotate, cls.dict_to_struct_reor, cls.result ) # ,cls.aimall)#, cls.aimall,cls.reorient,cls.aimall) @@ -456,15 +502,15 @@ def rotate(self): def dict_to_struct_reor(self): """generate the gaussian input from rotated structure""" - struct_str = dict_to_structure(self.ctx.rot_struct_dict) - struct_str.store() + structure = dict_to_structure(self.ctx.rot_struct_dict) + structure.store() if "reor_group" in self.inputs: reor_struct_group = load_group(self.inputs.reor_group.value) - reor_struct_group.add_nodes(struct_str) + reor_struct_group.add_nodes(structure) if "frag_label" in self.inputs: - struct_extras = EntityExtras(struct_str) + struct_extras = EntityExtras(structure) struct_extras.set("smiles", self.inputs.frag_label.value) - self.ctx.rot_structure = struct_str + self.ctx.rot_structure = structure def result(self): """Parse results""" @@ -481,7 +527,7 @@ def define(cls, spec): spec.input("g16_opt_params", valid_type=Dict, required=True) spec.input("g16_sp_params", valid_type=Dict, required=True) spec.input("aim_params", valid_type=AimqbParameters, required=True) - spec.input("structure_str", valid_type=Str, required=True) + spec.input("structure", valid_type=StructureData, required=True) spec.input("g16_code", valid_type=Code) spec.input( "frag_label", @@ -500,21 +546,26 @@ def define(cls, spec): # spec.input("frag_label", valid_type=Str) # spec.output("rotated_structure", valid_type=Str) spec.output("parameter_dict", valid_type=Dict) - spec.outline(cls.g16_opt, cls.aim_reor, cls.g16_sp, cls.aim, cls.result) + spec.outline( + cls.g16_opt, + cls.classify_opt_wfx, + cls.aim_reor, + cls.g16_sp, + cls.classify_sp_wfx, + cls.aim, + cls.result, + ) def g16_opt(self): """Submit the Gaussian optimization""" builder = GaussianCalculation.get_builder() - builder.structure_str = self.inputs.structure_str + builder.structure = self.inputs.structure builder.parameters = self.inputs.g16_opt_params - if "frag_label" in self.inputs: - builder.fragment_label = self.inputs.frag_label builder.code = self.inputs.g16_code - if "opt_wfx_group" in self.inputs: - builder.wfxgroup = self.inputs.opt_wfx_group builder.metadata.options.resources = {"num_machines": 1, "tot_num_mpiprocs": 4} builder.metadata.options.max_memory_kb = int(6400 * 1.25) * 1024 builder.metadata.options.max_wallclock_seconds = 604800 + builder.metadata.options.additional_retrieve_list = ["aiida.wfx"] if self.inputs.dry_run.value: return self.inputs process_node = self.submit(builder) @@ -525,11 +576,30 @@ def g16_opt(self): # self.ctx.standard_wfx = process_node.get_outgoing().get_node_by_label("wfx") return ToContext(out_dict) + def classify_opt_wfx(self): + """Add the wavefunction file from the previous step to the correct group and set the extras""" + folder_data = self.ctx.opt.base.links.get_outgoing().get_node_by_label( + "retrieved" + ) + # later scan input parameters for filename + wfx_file = SinglefileData( + io.BytesIO(folder_data.get_object_content("output.wfx").encode()) + ) + wfx_file.store() + self.ctx.opt_wfx = wfx_file + + if "opt_wfx_group" in self.inputs: + opt_wf_group = load_group(self.inputs.opt_wfx_group) + opt_wf_group.add_nodes(wfx_file) + if "frag_label" in self.inputs: + struct_extras = EntityExtras(wfx_file) + struct_extras.set("smiles", self.inputs.frag_label.value) + def aim_reor(self): """Submit the Aimqb calculation and reorientation""" builder = AIMAllReor.get_builder() builder.aim_params = self.inputs.aim_params - builder.file = self.ctx.opt.base.links.get_outgoing().get_node_by_label("wfx") + builder.file = self.ctx.opt_wfx builder.aim_code = self.inputs.aim_code builder.dry_run = self.inputs.dry_run if "frag_label" in self.inputs: @@ -543,20 +613,17 @@ def aim_reor(self): def g16_sp(self): """Run Gaussian Single Point calculation""" builder = GaussianCalculation.get_builder() - builder.structure_str = ( + builder.structure = ( self.ctx.prereor_aim.base.links.get_outgoing().get_node_by_label( "rotated_structure" ) ) builder.parameters = self.inputs.g16_sp_params - if "frag_label" in self.inputs: - builder.fragment_label = self.inputs.frag_label builder.code = self.inputs.g16_code - if "sp_wfx_group" in self.inputs: - builder.wfxgroup = self.inputs.sp_wfx_group builder.metadata.options.resources = {"num_machines": 1, "tot_num_mpiprocs": 4} builder.metadata.options.max_memory_kb = int(6400 * 1.25) * 1024 builder.metadata.options.max_wallclock_seconds = 604800 + builder.metadata.options.additional_retrieve_list = ["output.wfx"] if self.inputs.dry_run.value: return self.inputs process_node = self.submit(builder) @@ -567,11 +634,30 @@ def g16_sp(self): # self.ctx.standard_wfx = process_node.get_outgoing().get_node_by_label("wfx") return ToContext(out_dict) + def classify_sp_wfx(self): + """Add the wavefunction file from the previous step to the correct group and set the extras""" + folder_data = self.ctx.sp.base.links.get_outgoing().get_node_by_label( + "retrieved" + ) + # later scan input parameters for filename + wfx_file = SinglefileData( + io.BytesIO(folder_data.get_object_content("output.wfx").encode()) + ) + wfx_file.store() + self.ctx.sp_wfx = wfx_file + + if "sp_wfx_group" in self.inputs: + sp_wf_group = load_group(self.inputs.sp_wfx_group) + sp_wf_group.add_nodes(wfx_file) + if "frag_label" in self.inputs: + struct_extras = EntityExtras(wfx_file) + struct_extras.set("smiles", self.inputs.frag_label.value) + def aim(self): """Run Final AIM Calculation""" builder = AimqbCalculation.get_builder() builder.parameters = self.inputs.aim_params - builder.file = self.ctx.sp.base.links.get_outgoing().get_node_by_label("wfx") + builder.file = self.ctx.sp_wfx builder.code = self.inputs.aim_code # if "frag_label" in self.inputs: # builder.frag_label = self.inputs.frag_label @@ -580,7 +666,7 @@ def aim(self): num_atoms = len( self.ctx.prereor_aim.base.links.get_outgoing() .get_node_by_label("rotated_structure") - .value.split("\n") + .sites ) # generalize for substrates other than H builder.group_atoms = List([x + 1 for x in range(0, num_atoms) if x != 1]) diff --git a/tests/calculations/test_gaussianwfxcalculation.py b/tests/calculations/test_gaussianwfxcalculation.py deleted file mode 100644 index 9d766ca..0000000 --- a/tests/calculations/test_gaussianwfxcalculation.py +++ /dev/null @@ -1,148 +0,0 @@ -"""tests for AimqbCalculation""" - - -from aiida.common import datastructures -from aiida.engine import ExitCode -from aiida.orm import Dict, Str, StructureData - - -def test_gaussianwfx_default(fixture_sandbox, generate_calc_job, fixture_code): - """Tests that a GaussianWFXCalculation can be instantiated""" - entry_point_name = "aimall.gaussianwfx" - g16_sp_params = { - "functional": "PBE1PBE", - "basis_set": "6-31g", - "charge": 0, - "multiplicity": 2, - "link0_parameters": { - "%chk": "aiida.chk", - "%mem": "1024MB", - "%nprocshared": 4, - }, - "route_parameters": { - "scf": { - "maxcycle": 128, - "cdiis": None, - }, - "nosymm": None, - "output": "wfx", - "opt": "tight", - }, - "input_parameters": {"output.wfx": None}, # appended at the end of the input - } - inputs = { - "fragment_label": Str("H"), - "code": fixture_code("gaussianwfx"), - "parameters": Dict(g16_sp_params), - "structure_str": Str("H 0.0 0.0 0.0"), - "wfxgroup": Str("test"), - "metadata": { - "options": { - "resources": {"num_machines": 1, "tot_num_mpiprocs": 1}, - "max_memory_kb": int(3200 * 1.25) * 1024, - "max_wallclock_seconds": 604800, - } - }, - } - - calc_info = generate_calc_job(fixture_sandbox, entry_point_name, inputs) - assert isinstance(calc_info, datastructures.CalcInfo) - assert isinstance(calc_info.codes_info[0], datastructures.CodeInfo) - - -def test_gaussianwfx_not_both_structure_and_structurestr( - fixture_sandbox, generate_calc_job, fixture_code -): - """Tests that a GaussianWFXCalculation can be instantiated""" - entry_point_name = "aimall.gaussianwfx" - unit_cell = [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]] - - structure = StructureData(cell=unit_cell) - g16_sp_params = { - "functional": "PBE1PBE", - "basis_set": "6-31g", - "charge": 0, - "multiplicity": 2, - "link0_parameters": { - "%chk": "aiida.chk", - "%mem": "1024MB", - "%nprocshared": 4, - }, - "route_parameters": { - "scf": { - "maxcycle": 128, - "cdiis": None, - }, - "nosymm": None, - "output": "wfx", - "opt": "tight", - }, - "input_parameters": {"output.wfx": None}, # appended at the end of the input - } - inputs = { - "fragment_label": Str("H"), - "code": fixture_code("gaussianwfx"), - "parameters": Dict(g16_sp_params), - "structure_str": Str("H 0.0 0.0 0.0"), - "structure": structure, - "wfxgroup": Str("test"), - "metadata": { - "options": { - "resources": {"num_machines": 1, "tot_num_mpiprocs": 1}, - "max_memory_kb": int(3200 * 1.25) * 1024, - "max_wallclock_seconds": 604800, - } - }, - } - - calc_info = generate_calc_job(fixture_sandbox, entry_point_name, inputs) - assert isinstance(calc_info, ExitCode) - assert calc_info.status == 410 - - -def test_gaussianwfx_structureinput(fixture_sandbox, generate_calc_job, fixture_code): - """Tests that a GaussianWFXCalculation can be instantiated""" - entry_point_name = "aimall.gaussianwfx" - unit_cell = [[3.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 3.0]] - - structure = StructureData(cell=unit_cell) - structure.append_atom(position=(0.0, 0.0, 0.0), symbols="Li") - g16_sp_params = { - "functional": "PBE1PBE", - "basis_set": "6-31g", - "charge": 0, - "multiplicity": 2, - "link0_parameters": { - "%chk": "aiida.chk", - "%mem": "1024MB", - "%nprocshared": 4, - }, - "route_parameters": { - "scf": { - "maxcycle": 128, - "cdiis": None, - }, - "nosymm": None, - "output": "wfx", - "opt": "tight", - }, - "input_parameters": {"output.wfx": None}, # appended at the end of the input - } - inputs = { - "fragment_label": Str("H"), - "code": fixture_code("gaussianwfx"), - "parameters": Dict(g16_sp_params), - "structure": structure, - "wfxgroup": Str("test"), - "metadata": { - "options": { - "resources": {"num_machines": 1, "tot_num_mpiprocs": 1}, - "max_memory_kb": int(3200 * 1.25) * 1024, - "max_wallclock_seconds": 604800, - } - }, - } - - calc_info = generate_calc_job(fixture_sandbox, entry_point_name, inputs) - assert isinstance(calc_info, datastructures.CalcInfo) - assert isinstance(calc_info.codes_info[0], datastructures.CodeInfo) diff --git a/tests/conftest.py b/tests/conftest.py index 83a8bbe..fc35457 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,9 +7,19 @@ import shutil from collections.abc import Mapping +import ase.io import pytest from aiida.common import AttributeDict -from aiida.orm import Bool, Dict, FolderData, Int, List, SinglefileData, Str +from aiida.orm import ( + Bool, + Dict, + FolderData, + Int, + List, + SinglefileData, + Str, + StructureData, +) from aiida_shell import ShellCode from aiida_aimall.data import AimqbParameters @@ -461,10 +471,13 @@ def _generate_g16_inputs(fixture_code): "input_parameters": {"output.wfx": None}, } ) + f = io.StringIO( + "5\n\n C -0.1 2.0 -0.02\nH 0.3 1.0 -0.02\nH 0.3 2.5 0.8\nH 0.3 2.5 -0.9\nH -1.2 2.0 -0.02" + ) + struct_data = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() inputs = { - "structure_str": Str( - " C -0.1 2.0 -0.02\nH 0.3 1.0 -0.02\nH 0.3 2.5 0.8\nH 0.3 2.5 -0.9\nH -1.2 2.0 -0.02" - ), + "structure": struct_data, "parameters": gaussian_input, "code": fixture_code("gaussian"), "wfxgroup": Str("testsmi"), @@ -518,7 +531,7 @@ def _generate_workchain_smitog16( "smiles": Str("*C"), "gaussian_parameters": gaussian_input, "gaussian_code": fixture_code("gaussian"), - "wfxgroup": Str("testsmi"), + # "wfxgroup": Str("testsmi"), "nprocs": Int(4), "mem_mb": Int(3200), "time_s": Int(3600), @@ -607,20 +620,23 @@ def _generate_workchain_subparam( "input_parameters": {"output.wfx": None}, } ) + f = io.StringIO( + "5\n\n C -0.1 2.0 -0.02\nH 0.3 1.0 -0.02\nH 0.3 2.5 0.8\nH 0.3 2.5 -0.9\nH -1.2 2.0 -0.02" + ) + struct_data = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() aiminputs = AimqbParameters({"naat": 2, "nproc": 2, "atlaprhocps": True}) inputs = { "g16_opt_params": gaussian_opt_input, "g16_sp_params": gaussian_sp_input, "aim_params": aiminputs, - "structure_str": Str( - " C -0.1 2.0 -0.02\nH 0.3 1.0 -0.02\nH 0.3 2.5 0.8\nH 0.3 2.5 -0.9\nH -1.2 2.0 -0.02" - ), + "structure": struct_data, "g16_code": fixture_code("gaussian"), "frag_label": Str("*C"), - "opt_wfx_group": Str("group1"), - "sp_wfx_group": Str("group2"), - "gaussian_opt_group": Str("group3"), - "gaussian_sp_group": Str("group4"), + # "opt_wfx_group": Str("group1"), + # "sp_wfx_group": Str("group2"), + # "gaussian_opt_group": Str("group3"), + # "gaussian_sp_group": Str("group4"), "aim_code": fixture_code("aimall"), "dry_run": Bool(True), } diff --git a/tests/controllers/test_gaussiansubmissioncontroller.py b/tests/controllers/test_gaussiansubmissioncontroller.py index c543101..e06db79 100644 --- a/tests/controllers/test_gaussiansubmissioncontroller.py +++ b/tests/controllers/test_gaussiansubmissioncontroller.py @@ -1,7 +1,10 @@ """Tests for aiida_aimall.controllers""" +import io + +import ase.io import pytest from aiida.common.exceptions import NotExistent -from aiida.orm import Group, Str +from aiida.orm import Group, StructureData # pylint:disable=no-name-in-module from aiida_aimall.controllers import GaussianSubmissionController @@ -40,17 +43,16 @@ def test_gaussiansubmission_controller(fixture_code): wfxgroup="test", ) assert con.get_extra_unique_keys() == ("smiles",) - struct = Str("C 0.0 0.0 0.0\nH -0.5,0.0,0.0\nC 0.5 0.0 0.0\n H 1.0, 0.0,0.0") + f = io.StringIO("4\n\nC 0.0 0.0 0.0\nH -0.5 0.0 0.0\nC 0.5 0.0 0.0\n H 1.0 0.0 0.0") + struct = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() struct.store() struct.base.extras.set("smiles", "unique") gr.add_nodes(struct) ins, wf = con.get_inputs_and_processclass_from_extras(extras_values=["unique"]) assert isinstance(ins, dict) - assert "fragment_label" in ins - assert "wfxgroup" in ins assert "code" in ins assert "parameters" in ins - assert "structure_str" in ins + assert "structure" in ins assert "metadata" in ins - assert "wfxgroup" in ins - assert wf.get_name() == "GaussianWFXCalculation" + assert wf.get_name() == "GaussianCalculation" diff --git a/tests/parsers/test_aimqbbaseparser.py b/tests/parsers/test_aimqbbaseparser.py index 2d9cd5f..f58901a 100644 --- a/tests/parsers/test_aimqbbaseparser.py +++ b/tests/parsers/test_aimqbbaseparser.py @@ -82,7 +82,7 @@ def test_gaussiannode_returns_error( # pylint:disable=too-many-arguments generate_aimqb_inputs, ): """Test that a Gaussian node returns error on parser""" - entry_point_calc_job = "aimall.gaussianwfx" + entry_point_calc_job = "gaussian" entry_point_parser = "aimall.base" name = "default" node = generate_calc_job_node( diff --git a/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.chk b/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.chk new file mode 100644 index 0000000000000000000000000000000000000000..f0f4255c5988a59b542e75736e8a271da64e2a2f GIT binary patch literal 774144 zcmeF)2Urxz_BUWqOqg?4%sGLgB2bOG=72e2V$Bg$6vLWbvx_XZdEP>x^r;y`y*cet+-okLTGvoT}=o({K0m%=7@-nTfA4=IS?VsNu_4wTaq) zMT#`)W?{8IrpT9(`nz^f+n09zGE#r~wd!}V8@`Ox-`iH*E~x&Ok^0@5sqJq&ei^C% zR#~+@zQ&i4`ll3C+q;+eGE%?aXtmvpoJ4#nnjJQ)BTM;w8DEKhYHxT{?Wg!!^p_O% zx0d1u(QhV>OA#rii2jPl)Ooi^F?}kvy`bh0#eAZl z&bwbWs$LWehNtvJL_ZV9h0b$|Wko+7HyTH= zn&`hF9)I*Wq-ZVrhxb(1rSq6#ZP6bt&ik8EWTKziX+J4CiGF%q(RoI(k?8MtL3R68 zij74-J?^Luid{s1qPVWmdsJq{_Z6a94E3~#C)2Z|d+Kjm~Cptw`?)A?3YTxTdA68*Gabe*GkSoD*- z!$q}zipNAhU3cg@O3_dB)A`y)oWB%5ihjz;nPR5Y>UwnDr}L1amFOo=I!`DT6aBQm zbe*MGUi8!cG!y$rF;etXKB%DTPw}4Ur@VS0wVz^~=%<_>XB6*?e!4Exb&}#=-QLvv z|JVKM(Z&BE009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## 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 Ezm^|jG5`Po literal 0 HcmV?d00001 diff --git a/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.gjf b/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.gjf new file mode 100644 index 0000000..2fb4d05 --- /dev/null +++ b/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.gjf @@ -0,0 +1,15 @@ +%chk=aiida.chk +# opt freq hf/3-21g output=wfx + +Title Card Required + +0 1 + C -0.10355030 2.04124515 -0.02672136 + H 0.25310413 1.03243515 -0.02672136 + H 0.25312254 2.54564334 0.84693014 + H 0.25312254 2.54564334 -0.90037287 + H -1.17355030 2.04125834 -0.02672136 + +aiida.wfx + +aiida.wfx diff --git a/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.log b/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.log new file mode 100644 index 0000000..49c5fc3 --- /dev/null +++ b/tests/workchains/fixtures/aimall.gaussianwfx/default/aiida.log @@ -0,0 +1,1405 @@ + Entering Gaussian System, Link 0=/Users/chemlab/Desktop/g16/g16 + Input=/Users/chemlab/Desktop/junkCalculations/aiida.gjf + Output=/Users/chemlab/Desktop/junkCalculations/aiida.log + Initial command: + /Users/chemlab/Desktop/g16/l1.exe "/Users/chemlab/GaussianScratch/Gau-52069.inp" -scrdir="/Users/chemlab/GaussianScratch/" + Entering Link 1 = /Users/chemlab/Desktop/g16/l1.exe PID= 52070. + + Copyright (c) 1988-2021, Gaussian, Inc. All Rights Reserved. + + This is part of the Gaussian(R) 16 program. It is based on + the Gaussian(R) 09 system (copyright 2009, Gaussian, Inc.), + the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.), + the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.), + the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.), + the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.), + the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.), + the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.), + the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon + University), and the Gaussian 82(TM) system (copyright 1983, + Carnegie Mellon University). Gaussian is a federally registered + trademark of Gaussian, Inc. + + This software contains proprietary and confidential information, + including trade secrets, belonging to Gaussian, Inc. + + This software is provided under written license and may be + used, copied, transmitted, or stored only in accord with that + written license. + + The following legend is applicable only to US Government + contracts under FAR: + + RESTRICTED RIGHTS LEGEND + + Use, reproduction and disclosure by the US Government is + subject to restrictions as set forth in subparagraphs (a) + and (c) of the Commercial Computer Software - Restricted + Rights clause in FAR 52.227-19. + + Gaussian, Inc. + 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492 + + + --------------------------------------------------------------- + Warning -- This program may not be used in any manner that + competes with the business of Gaussian, Inc. or will provide + assistance to any competitor of Gaussian, Inc. The licensee + of this program is prohibited from giving any competitor of + Gaussian, Inc. access to this program. By using this program, + the user acknowledges that Gaussian, Inc. is engaged in the + business of creating and licensing software in the field of + computational chemistry and represents and warrants to the + licensee that it is not a competitor of Gaussian, Inc. and that + it will not use this program in any manner prohibited above. + --------------------------------------------------------------- + + + Cite this work as: + Gaussian 16, Revision C.02, + M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria, + M. A. Robb, J. R. Cheeseman, G. Scalmani, V. Barone, + G. A. Petersson, H. Nakatsuji, X. Li, M. Caricato, A. V. Marenich, + J. Bloino, B. G. Janesko, R. Gomperts, B. Mennucci, H. P. Hratchian, + J. V. Ortiz, A. F. Izmaylov, J. L. Sonnenberg, D. Williams-Young, + F. Ding, F. Lipparini, F. Egidi, J. Goings, B. Peng, A. Petrone, + T. Henderson, D. Ranasinghe, V. G. Zakrzewski, J. Gao, N. Rega, + G. Zheng, W. Liang, M. Hada, M. Ehara, K. Toyota, R. Fukuda, + J. Hasegawa, M. Ishida, T. Nakajima, Y. Honda, O. Kitao, H. Nakai, + T. Vreven, K. Throssell, J. A. Montgomery, Jr., J. E. Peralta, + F. Ogliaro, M. J. Bearpark, J. J. Heyd, E. N. Brothers, K. N. Kudin, + V. N. Staroverov, T. A. Keith, R. Kobayashi, J. Normand, + K. Raghavachari, A. P. Rendell, J. C. Burant, S. S. Iyengar, + J. Tomasi, M. Cossi, J. M. Millam, M. Klene, C. Adamo, R. Cammi, + J. W. Ochterski, R. L. Martin, K. Morokuma, O. Farkas, + J. B. Foresman, and D. J. Fox, Gaussian, Inc., Wallingford CT, 2019. + + ********************************************* + Gaussian 16: M1-G16RevC.02 7-Dec-2021 + 16-Jul-2024 + ********************************************* + %chk=aiida.chk + ------------------------------ + # opt freq hf/3-21g output=wfx + ------------------------------ + 1/18=20,19=15,38=1/1,3; + 2/9=110,12=2,17=6,18=5,40=1/2; + 3/5=5,11=9,25=1,30=1,71=1/1,2,3; + 4//1; + 5/5=2,38=5/2; + 6/7=2,8=2,9=2,10=2,28=1/1; + 7//1,2,3,16; + 1/18=20,19=15/3(2); + 2/9=110/2; + 99/6=200/99; + 2/9=110/2; + 3/5=5,11=9,25=1,30=1,71=1/1,2,3; + 4/5=5,16=3,69=1/1; + 5/5=2,38=5/2; + 7//1,2,3,16; + 1/18=20,19=15/3(-5); + 2/9=110/2; + 6/7=2,8=2,9=2,10=2,19=2,28=1/1; + 99/6=200,9=1/99; + ------------------- + Title Card Required + ------------------- + Symbolic Z-matrix: + Charge = 0 Multiplicity = 1 + C -0.10355 2.04125 -0.02672 + H 0.2531 1.03244 -0.02672 + H 0.25312 2.54564 0.84693 + H 0.25312 2.54564 -0.90037 + H -1.17355 2.04126 -0.02672 + + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + ---------------------------- + ! Initial Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.07 estimate D2E/DX2 ! + ! R2 R(1,3) 1.07 estimate D2E/DX2 ! + ! R3 R(1,4) 1.07 estimate D2E/DX2 ! + ! R4 R(1,5) 1.07 estimate D2E/DX2 ! + ! A1 A(2,1,3) 109.4712 estimate D2E/DX2 ! + ! A2 A(2,1,4) 109.4712 estimate D2E/DX2 ! + ! A3 A(2,1,5) 109.4712 estimate D2E/DX2 ! + ! A4 A(3,1,4) 109.4713 estimate D2E/DX2 ! + ! A5 A(3,1,5) 109.4712 estimate D2E/DX2 ! + ! A6 A(4,1,5) 109.4712 estimate D2E/DX2 ! + ! D1 D(2,1,4,3) -120.0 estimate D2E/DX2 ! + ! D2 D(2,1,5,3) 120.0 estimate D2E/DX2 ! + ! D3 D(2,1,5,4) -120.0 estimate D2E/DX2 ! + ! D4 D(3,1,5,4) 120.0 estimate D2E/DX2 ! + -------------------------------------------------------------------------------- + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 EigMax=2.50D+02 EigMin=1.00D-04 + Number of steps in this run= 24 maximum allowed number of steps= 100. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.103550 2.041245 -0.026721 + 2 1 0 0.253104 1.032435 -0.026721 + 3 1 0 0.253123 2.545643 0.846930 + 4 1 0 0.253123 2.545643 -0.900373 + 5 1 0 -1.173550 2.041258 -0.026721 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 5 + 1 C 0.000000 + 2 H 1.070000 0.000000 + 3 H 1.070000 1.747302 0.000000 + 4 H 1.070000 1.747302 1.747303 0.000000 + 5 H 1.070000 1.747303 1.747303 1.747303 0.000000 + Stoichiometry CH4 + Framework group T[O(C),4C3(H)] + Deg. of freedom 1 + Full point group T NOp 12 + Largest Abelian subgroup D2 NOp 4 + Largest concise Abelian subgroup D2 NOp 4 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000000 -0.000000 0.000000 + 2 1 0 0.617765 0.617765 0.617765 + 3 1 0 -0.617765 -0.617765 0.617765 + 4 1 0 -0.617765 0.617765 -0.617765 + 5 1 0 0.617765 -0.617765 -0.617765 + --------------------------------------------------------------------- + Rotational constants (GHZ): 164.2463796 164.2463796 164.2463796 + Standard basis: 3-21G (6D, 7F) + There are 5 symmetry adapted cartesian basis functions of A symmetry. + There are 4 symmetry adapted cartesian basis functions of B1 symmetry. + There are 4 symmetry adapted cartesian basis functions of B2 symmetry. + There are 4 symmetry adapted cartesian basis functions of B3 symmetry. + There are 5 symmetry adapted basis functions of A symmetry. + There are 4 symmetry adapted basis functions of B1 symmetry. + There are 4 symmetry adapted basis functions of B2 symmetry. + There are 4 symmetry adapted basis functions of B3 symmetry. + 17 basis functions, 27 primitive gaussians, 17 cartesian basis functions + 5 alpha electrons 5 beta electrons + nuclear repulsion energy 13.6865185999 Hartrees. + NAtoms= 5 NActive= 5 NUniq= 2 SFac= 4.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + One-electron integrals computed using PRISM. + NBasis= 17 RedAO= T EigKep= 3.16D-02 NBF= 5 4 4 4 + NBsUse= 17 1.00D-06 EigRej= -1.00D+00 NBFU= 5 4 4 4 + ExpMin= 1.83D-01 ExpMax= 1.72D+02 ExpMxC= 1.72D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00 + Harris functional with IExCor= 205 and IRadAn= 5 diagonalized for initial guess. + HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV= 1 UseB2=F ITyADJ=14 + ICtDFT= 3500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000 + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=T BraDBF=F KetDBF=T FulRan=T + wScrn= 0.000000 ICntrl= 500 IOpCl= 0 I1Cent= 200000004 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + Initial guess orbital symmetries: + Occupied (A) (A) (T) (T) (T) + Virtual (A) (T) (T) (T) (T) (T) (T) (A) (T) (T) (T) (A) + The electronic state of the initial guess is 1-A. + Keep R1 ints in memory in symmetry-blocked form, NReq=817492. + Requested convergence on RMS density matrix=1.00D-08 within 128 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + SCF Done: E(RHF) = -39.9764058482 A.U. after 8 cycles + NFock= 8 Conv=0.25D-09 -V/T= 2.0003 + + ********************************************************************** + + Population analysis using the SCF Density. + + ********************************************************************** + + Orbital symmetries: + Occupied (A) (A) (T) (T) (T) + Virtual (A) (T) (T) (T) (T) (T) (T) (A) (T) (T) (T) (A) + The electronic state is 1-A. + Alpha occ. eigenvalues -- -11.13826 -0.95125 -0.54830 -0.54830 -0.54830 + Alpha virt. eigenvalues -- 0.30001 0.35670 0.35670 0.35670 0.91538 + Alpha virt. eigenvalues -- 0.91538 0.91538 1.35396 1.37170 1.37170 + Alpha virt. eigenvalues -- 1.37170 1.96130 + Condensed to atoms (all electrons): + 1 2 3 4 5 + 1 C 5.313108 0.372312 0.372312 0.372312 0.372312 + 2 H 0.372312 0.505758 -0.026219 -0.026219 -0.026219 + 3 H 0.372312 -0.026219 0.505758 -0.026219 -0.026219 + 4 H 0.372312 -0.026219 -0.026219 0.505758 -0.026219 + 5 H 0.372312 -0.026219 -0.026219 -0.026219 0.505758 + Mulliken charges: + 1 + 1 C -0.802355 + 2 H 0.200589 + 3 H 0.200589 + 4 H 0.200589 + 5 H 0.200589 + Sum of Mulliken charges = -0.00000 + Mulliken charges with hydrogens summed into heavy atoms: + 1 + 1 C -0.000000 + Electronic spatial extent (au): = 34.9949 + Charge= -0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= 0.0000 Y= 0.0000 Z= 0.0000 Tot= 0.0000 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -8.3575 YY= -8.3575 ZZ= -8.3575 + XY= 0.0000 XZ= 0.0000 YZ= -0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= 0.0000 YY= 0.0000 ZZ= -0.0000 + XY= 0.0000 XZ= 0.0000 YZ= -0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= 0.0000 YYY= 0.0000 ZZZ= 0.0000 XYY= -0.0000 + XXY= -0.0000 XXZ= 0.0000 XZZ= -0.0000 YZZ= 0.0000 + YYZ= 0.0000 XYZ= 0.6836 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.0377 YYYY= -15.0377 ZZZZ= -15.0377 XXXY= -0.0000 + XXXZ= -0.0000 YYYX= -0.0000 YYYZ= 0.0000 ZZZX= 0.0000 + ZZZY= 0.0000 XXYY= -4.5929 XXZZ= -4.5929 YYZZ= -4.5929 + XXYZ= 0.0000 YYXZ= -0.0000 ZZXY= -0.0000 + N-N= 1.368651859988D+01 E-N=-1.198200652354D+02 KE= 3.996302504387D+01 + Symmetry A KE= 3.424875328667D+01 + Symmetry B1 KE= 1.904757252399D+00 + Symmetry B2 KE= 1.904757252399D+00 + Symmetry B3 KE= 1.904757252399D+00 + Calling FoFJK, ICntrl= 2127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0. + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 -0.000000000 0.000000000 -0.000000000 + 2 1 0.003263589 -0.009231179 -0.000000008 + 3 1 0.003263763 0.004615526 0.007994401 + 4 1 0.003263750 0.004615535 -0.007994401 + 5 1 -0.009791102 0.000000119 0.000000008 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.009791102 RMS 0.005056103 + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.009791102 RMS 0.005233564 + Search for a local minimum. + Step number 1 out of a maximum of 24 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Mixed Optimization -- RFO/linear search + Second derivative matrix not updated -- first step. + The second derivative matrix: + R1 R2 R3 R4 A1 + R1 0.37230 + R2 0.00000 0.37230 + R3 0.00000 0.00000 0.37230 + R4 0.00000 0.00000 0.00000 0.37230 + A1 0.00000 0.00000 0.00000 0.00000 0.16000 + A2 0.00000 0.00000 0.00000 0.00000 0.00000 + A3 0.00000 0.00000 0.00000 0.00000 0.00000 + A4 0.00000 0.00000 0.00000 0.00000 0.00000 + A5 0.00000 0.00000 0.00000 0.00000 0.00000 + A6 0.00000 0.00000 0.00000 0.00000 0.00000 + D1 0.00000 0.00000 0.00000 0.00000 0.00000 + D2 0.00000 0.00000 0.00000 0.00000 0.00000 + D3 0.00000 0.00000 0.00000 0.00000 0.00000 + D4 0.00000 0.00000 0.00000 0.00000 0.00000 + A2 A3 A4 A5 A6 + A2 0.16000 + A3 0.00000 0.16000 + A4 0.00000 0.00000 0.16000 + A5 0.00000 0.00000 0.00000 0.16000 + A6 0.00000 0.00000 0.00000 0.00000 0.16000 + D1 0.00000 0.00000 0.00000 0.00000 0.00000 + D2 0.00000 0.00000 0.00000 0.00000 0.00000 + D3 0.00000 0.00000 0.00000 0.00000 0.00000 + D4 0.00000 0.00000 0.00000 0.00000 0.00000 + D1 D2 D3 D4 + D1 0.00499 + D2 0.00000 0.00499 + D3 0.00000 0.00000 0.00499 + D4 0.00000 0.00000 0.00000 0.00499 + ITU= 0 + Eigenvalues --- 0.05269 0.05891 0.08766 0.16000 0.16000 + Eigenvalues --- 0.37230 0.37230 0.37230 0.37230 + RFO step: Lambda=-1.02713849D-03 EMin= 5.26881011D-02 + Linear search not attempted -- first point. + Iteration 1 RMS(Cart)= 0.01401867 RMS(Int)= 0.00000000 + Iteration 2 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000 + ClnCor: largest displacement from symmetrization is 1.56D-14 for atom 5. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.02201 0.00979 0.00000 0.02623 0.02623 2.04823 + R2 2.02201 0.00979 0.00000 0.02623 0.02623 2.04823 + R3 2.02201 0.00979 0.00000 0.02623 0.02623 2.04823 + R4 2.02201 0.00979 0.00000 0.02623 0.02623 2.04823 + A1 1.91063 -0.00000 0.00000 -0.00000 0.00000 1.91063 + A2 1.91063 -0.00000 0.00000 -0.00000 0.00000 1.91063 + A3 1.91063 0.00000 0.00000 0.00000 0.00000 1.91063 + A4 1.91063 -0.00000 0.00000 -0.00000 -0.00000 1.91063 + A5 1.91063 0.00000 0.00000 0.00000 0.00000 1.91063 + A6 1.91063 -0.00000 0.00000 0.00000 0.00000 1.91063 + D1 -2.09440 0.00000 0.00000 0.00000 -0.00000 -2.09440 + D2 2.09440 -0.00000 0.00000 -0.00000 0.00000 2.09440 + D3 -2.09440 0.00000 0.00000 0.00000 -0.00000 -2.09440 + D4 2.09440 0.00000 0.00000 0.00000 -0.00000 2.09440 + Item Value Threshold Converged? + Maximum Force 0.009791 0.000450 NO + RMS Force 0.005234 0.000300 NO + Maximum Displacement 0.026227 0.001800 NO + RMS Displacement 0.014019 0.001200 NO + Predicted change in Energy=-5.149861D-04 + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.103550 2.041245 -0.026721 + 2 1 0 0.257730 1.019350 -0.026722 + 3 1 0 0.257749 2.552185 0.858262 + 4 1 0 0.257748 2.552186 -0.911704 + 5 1 0 -1.187429 2.041258 -0.026720 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 5 + 1 C 0.000000 + 2 H 1.083878 0.000000 + 3 H 1.083878 1.769966 0.000000 + 4 H 1.083878 1.769966 1.769966 0.000000 + 5 H 1.083878 1.769966 1.769966 1.769966 0.000000 + Stoichiometry CH4 + Framework group TD[O(C),4C3(H)] + Deg. of freedom 1 + Full point group TD NOp 24 + Omega: Change in point group or standard orientation. + + Old FWG=T [O(C1),4C3(H1)] + New FWG=TD [O(C1),4C3(H1)] + Largest Abelian subgroup D2 NOp 4 + Largest concise Abelian subgroup D2 NOp 4 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000000 0.000000 0.000000 + 2 1 0 0.625778 0.625778 0.625778 + 3 1 0 -0.625778 -0.625778 0.625778 + 4 1 0 -0.625778 0.625778 -0.625778 + 5 1 0 0.625778 -0.625778 -0.625778 + --------------------------------------------------------------------- + Rotational constants (GHZ): 160.0671358 160.0671358 160.0671358 + Standard basis: 3-21G (6D, 7F) + There are 5 symmetry adapted cartesian basis functions of A symmetry. + There are 4 symmetry adapted cartesian basis functions of B1 symmetry. + There are 4 symmetry adapted cartesian basis functions of B2 symmetry. + There are 4 symmetry adapted cartesian basis functions of B3 symmetry. + There are 5 symmetry adapted basis functions of A symmetry. + There are 4 symmetry adapted basis functions of B1 symmetry. + There are 4 symmetry adapted basis functions of B2 symmetry. + There are 4 symmetry adapted basis functions of B3 symmetry. + 17 basis functions, 27 primitive gaussians, 17 cartesian basis functions + 5 alpha electrons 5 beta electrons + nuclear repulsion energy 13.5112701092 Hartrees. + NAtoms= 5 NActive= 5 NUniq= 2 SFac= 4.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + One-electron integrals computed using PRISM. + NBasis= 17 RedAO= T EigKep= 3.31D-02 NBF= 5 4 4 4 + NBsUse= 17 1.00D-06 EigRej= -1.00D+00 NBFU= 5 4 4 4 + Initial guess from the checkpoint file: "aiida.chk" + B after Tr= -0.000000 -0.000000 -0.000000 + Rot= 1.000000 -0.000000 -0.000000 0.000000 Ang= 0.00 deg. + Initial guess orbital symmetries: + Occupied (A1) (A1) (T2) (T2) (T2) + Virtual (A1) (T2) (T2) (T2) (T2) (T2) (T2) (A1) (T2) (T2) + (T2) (A1) + ExpMin= 1.83D-01 ExpMax= 1.72D+02 ExpMxC= 1.72D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00 + Harris functional with IExCor= 205 and IRadAn= 5 diagonalized for initial guess. + HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV= 1 UseB2=F ITyADJ=14 + ICtDFT= 3500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000 + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=T BraDBF=F KetDBF=T FulRan=T + wScrn= 0.000000 ICntrl= 500 IOpCl= 0 I1Cent= 200000004 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + Keep R1 ints in memory in symmetry-blocked form, NReq=817624. + Requested convergence on RMS density matrix=1.00D-08 within 128 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + SCF Done: E(RHF) = -39.9768749251 A.U. after 7 cycles + NFock= 7 Conv=0.75D-08 -V/T= 2.0024 + Calling FoFJK, ICntrl= 2127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0. + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 -0.000000000 0.000000000 0.000000000 + 2 1 -0.000237680 0.000672287 0.000000001 + 3 1 -0.000237693 -0.000336139 -0.000582215 + 4 1 -0.000237692 -0.000336140 0.000582215 + 5 1 0.000713065 -0.000000009 -0.000000001 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.000713065 RMS 0.000368225 + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Using GEDIIS/GDIIS optimizer. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.000713065 RMS 0.000381149 + Search for a local minimum. + Step number 2 out of a maximum of 24 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Mixed Optimization -- En-DIIS/RFO-DIIS + Update second derivatives using D2CorX and points 1 2 + DE= -4.69D-04 DEPred=-5.15D-04 R= 9.11D-01 + TightC=F SS= 1.41D+00 RLast= 5.25D-02 DXNew= 5.0454D-01 1.5736D-01 + Trust test= 9.11D-01 RLast= 5.25D-02 DXMaxT set to 3.00D-01 + The second derivative matrix: + R1 R2 R3 R4 A1 + R1 0.37936 + R2 0.00705 0.37936 + R3 0.00705 0.00705 0.37936 + R4 0.00705 0.00705 0.00705 0.37936 + A1 0.00000 0.00000 0.00000 0.00000 0.16000 + A2 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + A3 0.00000 0.00000 0.00000 0.00000 0.00000 + A4 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + A5 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + A6 0.00000 0.00000 0.00000 0.00000 0.00000 + D1 0.00000 0.00000 0.00000 0.00000 0.00000 + D2 0.00000 0.00000 0.00000 0.00000 0.00000 + D3 0.00000 0.00000 0.00000 0.00000 0.00000 + D4 0.00000 0.00000 0.00000 0.00000 0.00000 + A2 A3 A4 A5 A6 + A2 0.16000 + A3 -0.00000 0.16000 + A4 0.00000 -0.00000 0.16000 + A5 0.00000 -0.00000 0.00000 0.16000 + A6 -0.00000 0.00000 -0.00000 -0.00000 0.16000 + D1 -0.00000 0.00000 -0.00000 -0.00000 0.00000 + D2 -0.00000 0.00000 -0.00000 -0.00000 0.00000 + D3 -0.00000 0.00000 -0.00000 -0.00000 0.00000 + D4 -0.00000 0.00000 -0.00000 -0.00000 0.00000 + D1 D2 D3 D4 + D1 0.00499 + D2 0.00000 0.00499 + D3 0.00000 0.00000 0.00499 + D4 0.00000 0.00000 0.00000 0.00499 + ITU= 1 0 + Use linear search instead of GDIIS. + Eigenvalues --- 0.05269 0.05891 0.08766 0.16000 0.16000 + Eigenvalues --- 0.37230 0.37230 0.37230 0.40052 + RFO step: Lambda= 0.00000000D+00 EMin= 5.26881011D-02 + Quartic linear search produced a step of -0.07040. + Iteration 1 RMS(Cart)= 0.00098688 RMS(Int)= 0.00000000 + Iteration 2 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000 + ClnCor: largest displacement from symmetrization is 2.26D-14 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.04823 -0.00071 -0.00185 -0.00000 -0.00185 2.04639 + R2 2.04823 -0.00071 -0.00185 -0.00000 -0.00185 2.04639 + R3 2.04823 -0.00071 -0.00185 -0.00000 -0.00185 2.04639 + R4 2.04823 -0.00071 -0.00185 0.00000 -0.00185 2.04639 + A1 1.91063 -0.00000 -0.00000 -0.00000 0.00000 1.91063 + A2 1.91063 0.00000 0.00000 0.00000 0.00000 1.91063 + A3 1.91063 0.00000 -0.00000 0.00000 0.00000 1.91063 + A4 1.91063 0.00000 -0.00000 0.00000 0.00000 1.91063 + A5 1.91063 0.00000 0.00000 0.00000 -0.00000 1.91063 + A6 1.91063 -0.00000 -0.00000 -0.00000 0.00000 1.91063 + D1 -2.09440 0.00000 0.00000 0.00000 0.00000 -2.09440 + D2 2.09440 -0.00000 -0.00000 -0.00000 -0.00000 2.09440 + D3 -2.09440 -0.00000 -0.00000 -0.00000 -0.00000 -2.09440 + D4 2.09440 0.00000 0.00000 0.00000 0.00000 2.09440 + Item Value Threshold Converged? + Maximum Force 0.000713 0.000450 NO + RMS Force 0.000381 0.000300 NO + Maximum Displacement 0.001846 0.001800 NO + RMS Displacement 0.000987 0.001200 YES + Predicted change in Energy=-2.535547D-06 + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.103550 2.041245 -0.026721 + 2 1 0 0.257404 1.020271 -0.026722 + 3 1 0 0.257424 2.551725 0.857464 + 4 1 0 0.257422 2.551726 -0.910907 + 5 1 0 -1.186452 2.041258 -0.026720 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 5 + 1 C 0.000000 + 2 H 1.082901 0.000000 + 3 H 1.082901 1.768371 0.000000 + 4 H 1.082901 1.768371 1.768371 0.000000 + 5 H 1.082901 1.768371 1.768371 1.768371 0.000000 + Stoichiometry CH4 + Framework group TD[O(C),4C3(H)] + Deg. of freedom 1 + Full point group TD NOp 24 + Largest Abelian subgroup D2 NOp 4 + Largest concise Abelian subgroup D2 NOp 4 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000000 0.000000 0.000000 + 2 1 0 0.625213 0.625213 0.625213 + 3 1 0 -0.625213 -0.625213 0.625213 + 4 1 0 -0.625213 0.625213 -0.625213 + 5 1 0 0.625213 -0.625213 -0.625213 + --------------------------------------------------------------------- + Rotational constants (GHZ): 160.3560971 160.3560971 160.3560971 + Standard basis: 3-21G (6D, 7F) + There are 5 symmetry adapted cartesian basis functions of A symmetry. + There are 4 symmetry adapted cartesian basis functions of B1 symmetry. + There are 4 symmetry adapted cartesian basis functions of B2 symmetry. + There are 4 symmetry adapted cartesian basis functions of B3 symmetry. + There are 5 symmetry adapted basis functions of A symmetry. + There are 4 symmetry adapted basis functions of B1 symmetry. + There are 4 symmetry adapted basis functions of B2 symmetry. + There are 4 symmetry adapted basis functions of B3 symmetry. + 17 basis functions, 27 primitive gaussians, 17 cartesian basis functions + 5 alpha electrons 5 beta electrons + nuclear repulsion energy 13.5234602235 Hartrees. + NAtoms= 5 NActive= 5 NUniq= 2 SFac= 4.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + One-electron integrals computed using PRISM. + NBasis= 17 RedAO= T EigKep= 3.30D-02 NBF= 5 4 4 4 + NBsUse= 17 1.00D-06 EigRej= -1.00D+00 NBFU= 5 4 4 4 + Initial guess from the checkpoint file: "aiida.chk" + B after Tr= -0.000000 0.000000 0.000000 + Rot= 1.000000 0.000000 0.000000 -0.000000 Ang= 0.00 deg. + Initial guess orbital symmetries: + Occupied (A1) (A1) (T2) (T2) (T2) + Virtual (A1) (T2) (T2) (T2) (T2) (T2) (T2) (A1) (T2) (T2) + (T2) (A1) + Keep R1 ints in memory in symmetry-blocked form, NReq=817624. + Requested convergence on RMS density matrix=1.00D-08 within 128 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + SCF Done: E(RHF) = -39.9768775602 A.U. after 6 cycles + NFock= 6 Conv=0.32D-08 -V/T= 2.0022 + Calling FoFJK, ICntrl= 2127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0. + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 0.000000000 0.000000000 -0.000000000 + 2 1 0.000000032 -0.000000092 -0.000000000 + 3 1 0.000000032 0.000000046 0.000000079 + 4 1 0.000000032 0.000000046 -0.000000079 + 5 1 -0.000000097 0.000000000 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.000000097 RMS 0.000000050 + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Using GEDIIS/GDIIS optimizer. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.000000097 RMS 0.000000052 + Search for a local minimum. + Step number 3 out of a maximum of 24 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Mixed Optimization -- En-DIIS/RFO-DIIS + Swapping is turned off. + Update second derivatives using D2CorX and points 1 2 3 + DE= -2.64D-06 DEPred=-2.54D-06 R= 1.04D+00 + TightC=F SS= 1.41D+00 RLast= 3.69D-03 DXNew= 5.0454D-01 1.1078D-02 + Trust test= 1.04D+00 RLast= 3.69D-03 DXMaxT set to 3.00D-01 + The second derivative matrix: + R1 R2 R3 R4 A1 + R1 0.37579 + R2 0.00349 0.37579 + R3 0.00349 0.00349 0.37579 + R4 0.00349 0.00349 0.00349 0.37579 + A1 0.00000 0.00000 0.00000 0.00000 0.16000 + A2 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + A3 0.00000 0.00000 0.00000 0.00000 0.00000 + A4 0.00000 0.00000 0.00000 0.00000 0.00000 + A5 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + A6 0.00000 0.00000 0.00000 0.00000 0.00000 + D1 -0.00000 -0.00000 -0.00000 -0.00000 -0.00000 + D2 0.00000 0.00000 0.00000 0.00000 0.00000 + D3 0.00000 0.00000 0.00000 0.00000 0.00000 + D4 0.00000 0.00000 0.00000 0.00000 0.00000 + A2 A3 A4 A5 A6 + A2 0.16000 + A3 -0.00000 0.16000 + A4 -0.00000 0.00000 0.16000 + A5 0.00000 -0.00000 -0.00000 0.16000 + A6 -0.00000 0.00000 0.00000 -0.00000 0.16000 + D1 0.00000 -0.00000 -0.00000 0.00000 -0.00000 + D2 -0.00000 0.00000 0.00000 -0.00000 0.00000 + D3 -0.00000 0.00000 0.00000 -0.00000 0.00000 + D4 -0.00000 0.00000 0.00000 -0.00000 0.00000 + D1 D2 D3 D4 + D1 0.00499 + D2 -0.00000 0.00499 + D3 -0.00000 0.00000 0.00499 + D4 -0.00000 0.00000 0.00000 0.00499 + ITU= 1 1 0 + Eigenvalues --- 0.05269 0.05891 0.08766 0.16000 0.16000 + Eigenvalues --- 0.37230 0.37230 0.37230 0.38627 + En-DIIS/RFO-DIIS/Sim-DIIS IScMMF= -3 using points: 3 2 + RFO step: Lambda= 0.00000000D+00. + DidBck=F Rises=F RFO-DIIS coefs: 0.99986 0.00014 + Iteration 1 RMS(Cart)= 0.00000013 RMS(Int)= 0.00000000 + ClnCor: largest displacement from symmetrization is 1.86D-14 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.04639 0.00000 0.00000 -0.00000 0.00000 2.04639 + R2 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + R3 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + R4 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + A1 1.91063 -0.00000 -0.00000 -0.00000 0.00000 1.91063 + A2 1.91063 -0.00000 -0.00000 -0.00000 0.00000 1.91063 + A3 1.91063 0.00000 -0.00000 -0.00000 0.00000 1.91063 + A4 1.91063 0.00000 -0.00000 0.00000 0.00000 1.91063 + A5 1.91063 -0.00000 -0.00000 0.00000 -0.00000 1.91063 + A6 1.91063 0.00000 -0.00000 0.00000 -0.00000 1.91063 + D1 -2.09440 0.00000 0.00000 0.00000 0.00000 -2.09440 + D2 2.09440 -0.00000 0.00000 -0.00000 -0.00000 2.09440 + D3 -2.09440 0.00000 0.00000 0.00000 0.00000 -2.09440 + D4 2.09440 0.00000 0.00000 0.00000 0.00000 2.09440 + Item Value Threshold Converged? + Maximum Force 0.000000 0.000450 YES + RMS Force 0.000000 0.000300 YES + Maximum Displacement 0.000000 0.001800 YES + RMS Displacement 0.000000 0.001200 YES + Predicted change in Energy=-4.879740D-14 + Optimization completed. + -- Stationary point found. + ---------------------------- + ! Optimized Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.0829 -DE/DX = 0.0 ! + ! R2 R(1,3) 1.0829 -DE/DX = 0.0 ! + ! R3 R(1,4) 1.0829 -DE/DX = 0.0 ! + ! R4 R(1,5) 1.0829 -DE/DX = 0.0 ! + ! A1 A(2,1,3) 109.4712 -DE/DX = 0.0 ! + ! A2 A(2,1,4) 109.4712 -DE/DX = 0.0 ! + ! A3 A(2,1,5) 109.4712 -DE/DX = 0.0 ! + ! A4 A(3,1,4) 109.4712 -DE/DX = 0.0 ! + ! A5 A(3,1,5) 109.4712 -DE/DX = 0.0 ! + ! A6 A(4,1,5) 109.4712 -DE/DX = 0.0 ! + ! D1 D(2,1,4,3) -120.0 -DE/DX = 0.0 ! + ! D2 D(2,1,5,3) 120.0 -DE/DX = 0.0 ! + ! D3 D(2,1,5,4) -120.0 -DE/DX = 0.0 ! + ! D4 D(3,1,5,4) 120.0 -DE/DX = 0.0 ! + -------------------------------------------------------------------------------- + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.103550 2.041245 -0.026721 + 2 1 0 0.257404 1.020271 -0.026722 + 3 1 0 0.257424 2.551725 0.857464 + 4 1 0 0.257422 2.551726 -0.910907 + 5 1 0 -1.186452 2.041258 -0.026720 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 5 + 1 C 0.000000 + 2 H 1.082901 0.000000 + 3 H 1.082901 1.768371 0.000000 + 4 H 1.082901 1.768371 1.768371 0.000000 + 5 H 1.082901 1.768371 1.768371 1.768371 0.000000 + Stoichiometry CH4 + Framework group TD[O(C),4C3(H)] + Deg. of freedom 1 + Full point group TD NOp 24 + Largest Abelian subgroup D2 NOp 4 + Largest concise Abelian subgroup D2 NOp 4 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000000 0.000000 0.000000 + 2 1 0 0.625213 0.625213 0.625213 + 3 1 0 -0.625213 -0.625213 0.625213 + 4 1 0 -0.625213 0.625213 -0.625213 + 5 1 0 0.625213 -0.625213 -0.625213 + --------------------------------------------------------------------- + Rotational constants (GHZ): 160.3560971 160.3560971 160.3560971 + + ********************************************************************** + + Population analysis using the SCF Density. + + ********************************************************************** + + Orbital symmetries: + Occupied (A1) (A1) (T2) (T2) (T2) + Virtual (A1) (T2) (T2) (T2) (T2) (T2) (T2) (A1) (T2) (T2) + (T2) (A1) + The electronic state is 1-A1. + Alpha occ. eigenvalues -- -11.14446 -0.94588 -0.54484 -0.54484 -0.54484 + Alpha virt. eigenvalues -- 0.29668 0.35257 0.35257 0.35257 0.92309 + Alpha virt. eigenvalues -- 0.92309 0.92309 1.33329 1.35898 1.35898 + Alpha virt. eigenvalues -- 1.35898 1.95586 + Condensed to atoms (all electrons): + 1 2 3 4 5 + 1 C 5.310653 0.370831 0.370831 0.370831 0.370831 + 2 H 0.370831 0.507841 -0.025722 -0.025722 -0.025722 + 3 H 0.370831 -0.025722 0.507841 -0.025722 -0.025722 + 4 H 0.370831 -0.025722 -0.025722 0.507841 -0.025722 + 5 H 0.370831 -0.025722 -0.025722 -0.025722 0.507841 + Mulliken charges: + 1 + 1 C -0.793976 + 2 H 0.198494 + 3 H 0.198494 + 4 H 0.198494 + 5 H 0.198494 + Sum of Mulliken charges = -0.00000 + Mulliken charges with hydrogens summed into heavy atoms: + 1 + 1 C -0.000000 + Electronic spatial extent (au): = 35.4787 + Charge= -0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= 0.0000 Y= 0.0000 Z= 0.0000 Tot= 0.0000 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -8.3966 YY= -8.3966 ZZ= -8.3966 + XY= 0.0000 XZ= 0.0000 YZ= -0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= -0.0000 YY= -0.0000 ZZ= 0.0000 + XY= 0.0000 XZ= 0.0000 YZ= -0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= 0.0000 YYY= 0.0000 ZZZ= 0.0000 XYY= 0.0000 + XXY= 0.0000 XXZ= 0.0000 XZZ= 0.0000 YZZ= 0.0000 + YYZ= 0.0000 XYZ= 0.7204 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.3377 YYYY= -15.3377 ZZZZ= -15.3377 XXXY= 0.0000 + XXXZ= 0.0000 YYYX= 0.0000 YYYZ= -0.0000 ZZZX= 0.0000 + ZZZY= -0.0000 XXYY= -4.6685 XXZZ= -4.6685 YYZZ= -4.6685 + XXYZ= 0.0000 YYXZ= 0.0000 ZZXY= 0.0000 + N-N= 1.352346022345D+01 E-N=-1.194388681297D+02 KE= 3.988790259578D+01 + Symmetry A KE= 3.423400799510D+01 + Symmetry B1 KE= 1.884631533562D+00 + Symmetry B2 KE= 1.884631533562D+00 + Symmetry B3 KE= 1.884631533562D+00 + Unable to Open any file for archive entry. + 1\1\GINC-PCB4062-103040\FOpt\RHF\3-21G\C1H4\ROOT\16-Jul-2024\0\\# opt + freq hf/3-21g output=wfx\\Title Card Required\\0,1\C,-0.103550289,2.04 + 1245107,-0.026721361\H,0.2574044776,1.0202714819,-0.026722229\H,0.2574 + 237455,2.551724856,0.8574639471\H,0.2574223303,2.551725859,-0.91090666 + 77\H,-1.1864517095,2.0412582311,-0.0267204944\\Version=Apple M1-G16Rev + C.02\State=1-A1\HF=-39.9768776\RMSD=3.210e-09\RMSF=5.013e-08\Dipole=0. + ,0.,0.\Quadrupole=0.,0.,0.,0.,0.,0.\PG=TD [O(C1),4C3(H1)]\\@ + The archive entry for this job was punched. + + Writing a WFNX file to "aiida.wfx" + + + REVOLUTIONS HAVE NEVER LIGHTENED THE BURDEN OF TYRANNY: + THEY HAVE MERELY SHIFTED IT TO OTHER SHOULDERS. + -- G. B. SHAW (1903) + Job cpu time: 0 days 0 hours 0 minutes 0.6 seconds. + Elapsed time: 0 days 0 hours 0 minutes 0.7 seconds. + File lengths (MBytes): RWF= 6 Int= 0 D2E= 0 Chk= 1 Scr= 1 + Normal termination of Gaussian 16 at Tue Jul 16 15:39:49 2024. + Link1: Proceeding to internal job step number 2. + -------------------------------------------------------------- + #N Geom=AllCheck Guess=TCheck SCRF=Check GenChk RHF/3-21G Freq + -------------------------------------------------------------- + 1/10=4,29=7,30=1,38=1,40=1/1,3; + 2/12=2,40=1/2; + 3/5=5,11=1,14=-4,25=1,30=1,70=2,71=2,116=1,140=1/1,2,3; + 4/5=101/1; + 5/5=2,38=6,98=1/2; + 8/6=4,10=90,11=11/1; + 10/13=10,15=4/2; + 11/6=3,8=1,9=11,15=111,16=1/1,2,10; + 10/6=1/2; + 6/7=2,8=2,9=2,10=2,28=1/1; + 7/8=1,10=1,25=1/1,2,3,16; + 1/10=4,30=1/3; + 99/6=200/99; + Structure from the checkpoint file: "aiida.chk" + ------------------- + Title Card Required + ------------------- + Charge = 0 Multiplicity = 1 + Redundant internal coordinates found in file. (old form). + C,0,-0.103550289,2.041245107,-0.026721361 + H,0,0.2574044776,1.0202714819,-0.026722229 + H,0,0.2574237455,2.551724856,0.8574639471 + H,0,0.2574223303,2.551725859,-0.9109066677 + H,0,-1.1864517095,2.0412582311,-0.0267204944 + Recover connectivity data from disk. + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + ---------------------------- + ! Initial Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.0829 calculate D2E/DX2 analytically ! + ! R2 R(1,3) 1.0829 calculate D2E/DX2 analytically ! + ! R3 R(1,4) 1.0829 calculate D2E/DX2 analytically ! + ! R4 R(1,5) 1.0829 calculate D2E/DX2 analytically ! + ! A1 A(2,1,3) 109.4712 calculate D2E/DX2 analytically ! + ! A2 A(2,1,4) 109.4712 calculate D2E/DX2 analytically ! + ! A3 A(2,1,5) 109.4712 calculate D2E/DX2 analytically ! + ! A4 A(3,1,4) 109.4712 calculate D2E/DX2 analytically ! + ! A5 A(3,1,5) 109.4712 calculate D2E/DX2 analytically ! + ! A6 A(4,1,5) 109.4712 calculate D2E/DX2 analytically ! + ! D1 D(2,1,4,3) -120.0 calculate D2E/DX2 analytically ! + ! D2 D(2,1,5,3) 120.0 calculate D2E/DX2 analytically ! + ! D3 D(2,1,5,4) -120.0 calculate D2E/DX2 analytically ! + ! D4 D(3,1,5,4) 120.0 calculate D2E/DX2 analytically ! + -------------------------------------------------------------------------------- + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 EigMax=2.50D+02 EigMin=1.00D-04 + Number of steps in this run= 2 maximum allowed number of steps= 2. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.103550 2.041245 -0.026721 + 2 1 0 0.257404 1.020271 -0.026722 + 3 1 0 0.257424 2.551725 0.857464 + 4 1 0 0.257422 2.551726 -0.910907 + 5 1 0 -1.186452 2.041258 -0.026720 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 5 + 1 C 0.000000 + 2 H 1.082901 0.000000 + 3 H 1.082901 1.768371 0.000000 + 4 H 1.082901 1.768371 1.768371 0.000000 + 5 H 1.082901 1.768371 1.768371 1.768371 0.000000 + Stoichiometry CH4 + Framework group TD[O(C),4C3(H)] + Deg. of freedom 1 + Full point group TD NOp 24 + Largest Abelian subgroup D2 NOp 4 + Largest concise Abelian subgroup D2 NOp 4 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000000 0.000000 0.000000 + 2 1 0 0.625213 0.625213 0.625213 + 3 1 0 -0.625213 -0.625213 0.625213 + 4 1 0 -0.625213 0.625213 -0.625213 + 5 1 0 0.625213 -0.625213 -0.625213 + --------------------------------------------------------------------- + Rotational constants (GHZ): 160.3560971 160.3560971 160.3560971 + Standard basis: 3-21G (6D, 7F) + There are 5 symmetry adapted cartesian basis functions of A symmetry. + There are 4 symmetry adapted cartesian basis functions of B1 symmetry. + There are 4 symmetry adapted cartesian basis functions of B2 symmetry. + There are 4 symmetry adapted cartesian basis functions of B3 symmetry. + There are 5 symmetry adapted basis functions of A symmetry. + There are 4 symmetry adapted basis functions of B1 symmetry. + There are 4 symmetry adapted basis functions of B2 symmetry. + There are 4 symmetry adapted basis functions of B3 symmetry. + 17 basis functions, 27 primitive gaussians, 17 cartesian basis functions + 5 alpha electrons 5 beta electrons + nuclear repulsion energy 13.5234602235 Hartrees. + NAtoms= 5 NActive= 5 NUniq= 2 SFac= 4.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + One-electron integrals computed using PRISM. + NBasis= 17 RedAO= T EigKep= 3.30D-02 NBF= 5 4 4 4 + NBsUse= 17 1.00D-06 EigRej= -1.00D+00 NBFU= 5 4 4 4 + Initial guess from the checkpoint file: "aiida.chk" + B after Tr= 0.000000 0.000000 0.000000 + Rot= 1.000000 0.000000 -0.000000 0.000000 Ang= 0.00 deg. + Initial guess orbital symmetries: + Occupied (A1) (A1) (T2) (T2) (T2) + Virtual (A1) (T2) (T2) (T2) (T2) (T2) (T2) (A1) (T2) (T2) + (T2) (A1) + Keep R1 ints in memory in symmetry-blocked form, NReq=817624. + Requested convergence on RMS density matrix=1.00D-08 within 128 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + SCF Done: E(RHF) = -39.9768775602 A.U. after 1 cycles + NFock= 1 Conv=0.39D-09 -V/T= 2.0022 + Range of M.O.s used for correlation: 1 17 + NBasis= 17 NAE= 5 NBE= 5 NFC= 0 NFV= 0 + NROrb= 17 NOA= 5 NOB= 5 NVA= 12 NVB= 12 + Differentiating once with respect to electric field. + with respect to dipole field. + Electric field/nuclear overlap derivatives assumed to be zero. + Keep R1 ints in memory in symmetry-blocked form, NReq=818299. + There are 3 degrees of freedom in the 1st order CPHF. IDoFFX=0 NUNeed= 3. + 3 vectors produced by pass 0 Test12= 2.00D-15 3.33D-08 XBig12= 2.37D+00 9.12D-01. + AX will form 3 AO Fock derivatives at one time. + 3 vectors produced by pass 1 Test12= 2.00D-15 3.33D-08 XBig12= 2.49D-02 8.40D-02. + 3 vectors produced by pass 2 Test12= 2.00D-15 3.33D-08 XBig12= 9.84D-05 5.63D-03. + 3 vectors produced by pass 3 Test12= 2.00D-15 3.33D-08 XBig12= 1.88D-07 2.45D-04. + 3 vectors produced by pass 4 Test12= 2.00D-15 3.33D-08 XBig12= 1.85D-09 2.20D-05. + 3 vectors produced by pass 5 Test12= 2.00D-15 3.33D-08 XBig12= 1.24D-11 2.23D-06. + 3 vectors produced by pass 6 Test12= 2.00D-15 3.33D-08 XBig12= 2.15D-14 8.64D-08. + InvSVY: IOpt=1 It= 1 EMax= 2.22D-16 + Solved reduced A of dimension 21 with 3 vectors. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + Symmetrizing basis deriv contribution to polar: + IMax=3 JMax=2 DiffMx= 0.00D+00 + G2DrvN: will do 6 centers at a time, making 1 passes. + PxScal for G2LodP: IOpCl= 0 ISclPx=1 IMOff= 1 NMtTot= 4 NTT= 153 ScalPx= 1.14D+00 + Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 0.00D+00. + End of G2Drv F.D. properties file 721 does not exist. + End of G2Drv F.D. properties file 722 does not exist. + End of G2Drv F.D. properties file 788 does not exist. + IDoAtm=11111 + Differentiating once with respect to electric field. + with respect to dipole field. + Differentiating once with respect to nuclear coordinates. + Keep R1 ints in memory in symmetry-blocked form, NReq=818415. + There are 9 degrees of freedom in the 1st order CPHF. IDoFFX=4 NUNeed= 9. + Will reuse 3 saved solutions. + 6 vectors produced by pass 0 Test12= 6.67D-16 1.11D-08 XBig12= 3.15D-02 8.76D-02. + AX will form 6 AO Fock derivatives at one time. + 6 vectors produced by pass 1 Test12= 6.67D-16 1.11D-08 XBig12= 5.77D-04 1.14D-02. + 6 vectors produced by pass 2 Test12= 6.67D-16 1.11D-08 XBig12= 1.92D-06 8.72D-04. + 6 vectors produced by pass 3 Test12= 6.67D-16 1.11D-08 XBig12= 6.87D-09 4.81D-05. + 6 vectors produced by pass 4 Test12= 6.67D-16 1.11D-08 XBig12= 3.38D-11 3.45D-06. + 6 vectors produced by pass 5 Test12= 6.67D-16 1.11D-08 XBig12= 2.65D-13 2.69D-07. + 3 vectors produced by pass 6 Test12= 6.67D-16 1.11D-08 XBig12= 9.31D-16 1.58D-08. + InvSVY: IOpt=1 It= 1 EMax= 6.66D-16 + Solved reduced A of dimension 39 with 6 vectors. + Isotropic polarizability for W= 0.000000 11.45 Bohr**3. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + + ********************************************************************** + + Population analysis using the SCF Density. + + ********************************************************************** + + Orbital symmetries: + Occupied (A1) (A1) (T2) (T2) (T2) + Virtual (A1) (T2) (T2) (T2) (T2) (T2) (T2) (A1) (T2) (T2) + (T2) (A1) + The electronic state is 1-A1. + Alpha occ. eigenvalues -- -11.14446 -0.94588 -0.54484 -0.54484 -0.54484 + Alpha virt. eigenvalues -- 0.29668 0.35257 0.35257 0.35257 0.92309 + Alpha virt. eigenvalues -- 0.92309 0.92309 1.33329 1.35898 1.35898 + Alpha virt. eigenvalues -- 1.35898 1.95586 + Condensed to atoms (all electrons): + 1 2 3 4 5 + 1 C 5.310653 0.370831 0.370831 0.370831 0.370831 + 2 H 0.370831 0.507841 -0.025722 -0.025722 -0.025722 + 3 H 0.370831 -0.025722 0.507841 -0.025722 -0.025722 + 4 H 0.370831 -0.025722 -0.025722 0.507841 -0.025722 + 5 H 0.370831 -0.025722 -0.025722 -0.025722 0.507841 + Mulliken charges: + 1 + 1 C -0.793976 + 2 H 0.198494 + 3 H 0.198494 + 4 H 0.198494 + 5 H 0.198494 + Sum of Mulliken charges = 0.00000 + Mulliken charges with hydrogens summed into heavy atoms: + 1 + 1 C 0.000000 + APT charges: + 1 + 1 C -0.022273 + 2 H 0.005568 + 3 H 0.005568 + 4 H 0.005568 + 5 H 0.005568 + Sum of APT charges = -0.00000 + APT charges with hydrogens summed into heavy atoms: + 1 + 1 C -0.000000 + Electronic spatial extent (au): = 35.4787 + Charge= 0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= 0.0000 Y= 0.0000 Z= 0.0000 Tot= 0.0000 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -8.3966 YY= -8.3966 ZZ= -8.3966 + XY= 0.0000 XZ= 0.0000 YZ= 0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= 0.0000 YY= -0.0000 ZZ= 0.0000 + XY= 0.0000 XZ= 0.0000 YZ= 0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= 0.0000 YYY= 0.0000 ZZZ= 0.0000 XYY= 0.0000 + XXY= 0.0000 XXZ= 0.0000 XZZ= 0.0000 YZZ= 0.0000 + YYZ= 0.0000 XYZ= 0.7204 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.3377 YYYY= -15.3377 ZZZZ= -15.3377 XXXY= -0.0000 + XXXZ= 0.0000 YYYX= -0.0000 YYYZ= 0.0000 ZZZX= 0.0000 + ZZZY= 0.0000 XXYY= -4.6685 XXZZ= -4.6685 YYZZ= -4.6685 + XXYZ= 0.0000 YYXZ= 0.0000 ZZXY= 0.0000 + N-N= 1.352346022345D+01 E-N=-1.194388681487D+02 KE= 3.988790260732D+01 + Symmetry A KE= 3.423400800752D+01 + Symmetry B1 KE= 1.884631533266D+00 + Symmetry B2 KE= 1.884631533266D+00 + Symmetry B3 KE= 1.884631533266D+00 + Exact polarizability: 11.452 0.000 11.452 -0.000 0.000 11.452 + Approx polarizability: 8.794 0.000 8.794 -0.000 0.000 8.794 + Calling FoFJK, ICntrl= 100127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 0 NMat=1 NMatS=1 NMatT=0. + Full mass-weighted force constant matrix: + Low frequencies --- -1.1285 -1.1285 -1.1285 -0.0008 0.0006 0.0006 + Low frequencies --- 1520.3260 1520.3260 1520.3260 + Diagonal vibrational polarizability: + 0.3228304 0.3228304 0.3228304 + Diagonal vibrational hyperpolarizability: + 0.0000000 0.0000000 0.0000000 + Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering + activities (A**4/AMU), depolarization ratios for plane and unpolarized + incident light, reduced masses (AMU), force constants (mDyne/A), + and normal coordinates: + 1 2 3 + T2 T2 T2 + Frequencies -- 1520.3260 1520.3260 1520.3260 + Red. masses -- 1.1821 1.1821 1.1821 + Frc consts -- 1.6099 1.6099 1.6099 + IR Inten -- 21.2675 21.2675 21.2675 + Raman Activ -- 3.1031 3.1031 3.1031 + Depolar (P) -- 0.7500 0.7500 0.7500 + Depolar (U) -- 0.8571 0.8571 0.8571 + Atom AN X Y Z X Y Z X Y Z + 1 6 -0.07 -0.07 -0.07 0.07 0.03 -0.10 0.07 -0.10 0.02 + 2 1 -0.05 -0.05 -0.05 -0.34 -0.14 0.48 -0.36 0.47 -0.12 + 3 1 0.22 0.22 0.48 0.02 0.23 0.11 -0.45 0.38 -0.03 + 4 1 0.22 0.48 0.22 -0.45 -0.03 0.38 0.01 0.11 0.24 + 5 1 0.48 0.22 0.22 -0.08 -0.40 0.22 -0.09 0.20 -0.39 + 4 5 6 + E E A1 + Frequencies -- 1739.7799 1739.7799 3186.7639 + Red. masses -- 1.0078 1.0078 1.0078 + Frc consts -- 1.7973 1.7973 6.0302 + IR Inten -- 0.0000 0.0000 0.0000 + Raman Activ -- 38.8428 38.8428 120.1225 + Depolar (P) -- 0.7500 0.7500 0.0000 + Depolar (U) -- 0.8571 0.8571 0.0000 + Atom AN X Y Z X Y Z X Y Z + 1 6 0.00 0.00 -0.00 0.00 -0.00 0.00 0.00 0.00 0.00 + 2 1 -0.32 -0.06 0.38 -0.26 0.40 -0.15 0.29 0.29 0.29 + 3 1 0.32 0.06 0.38 0.26 -0.40 -0.15 -0.29 -0.29 0.29 + 4 1 0.32 -0.06 -0.38 0.26 0.40 0.15 -0.29 0.29 -0.29 + 5 1 -0.32 0.06 -0.38 -0.26 -0.40 0.15 0.29 -0.29 -0.29 + 7 8 9 + T2 T2 T2 + Frequencies -- 3280.1249 3280.1249 3280.1249 + Red. masses -- 1.0989 1.0989 1.0989 + Frc consts -- 6.9661 6.9661 6.9661 + IR Inten -- 30.0716 30.0716 30.0716 + Raman Activ -- 58.1250 58.1250 58.1250 + Depolar (P) -- 0.7500 0.7500 0.7500 + Depolar (U) -- 0.8571 0.8571 0.8571 + Atom AN X Y Z X Y Z X Y Z + 1 6 -0.05 -0.05 -0.05 -0.06 0.07 -0.01 -0.05 -0.03 0.07 + 2 1 0.50 0.50 0.50 -0.02 0.02 -0.00 -0.01 -0.01 0.02 + 3 1 0.16 0.16 -0.18 -0.08 -0.04 0.06 0.47 0.47 -0.46 + 4 1 0.16 -0.19 0.16 0.43 -0.43 0.44 -0.20 0.18 -0.17 + 5 1 -0.18 0.16 0.16 0.37 -0.37 -0.39 0.28 -0.30 -0.27 + + ------------------- + - Thermochemistry - + ------------------- + Temperature 298.150 Kelvin. Pressure 1.00000 Atm. + Atom 1 has atomic number 6 and mass 12.00000 + Atom 2 has atomic number 1 and mass 1.00783 + Atom 3 has atomic number 1 and mass 1.00783 + Atom 4 has atomic number 1 and mass 1.00783 + Atom 5 has atomic number 1 and mass 1.00783 + Molecular mass: 16.03130 amu. + Principal axes and moments of inertia in atomic units: + 1 2 3 + Eigenvalues -- 11.25458 11.25458 11.25458 + X -0.20998 0.62546 0.75147 + Y -0.05344 0.76011 -0.64759 + Z 0.97624 0.17614 0.12618 + This molecule is a spherical top. + Rotational symmetry number 12. + Rotational temperatures (Kelvin) 7.69588 7.69588 7.69588 + Rotational constants (GHZ): 160.35610 160.35610 160.35610 + Zero-point vibrational energy 126012.7 (Joules/Mol) + 30.11776 (Kcal/Mol) + Vibrational temperatures: 2187.41 2187.41 2187.41 2503.16 2503.16 + (Kelvin) 4585.04 4719.37 4719.37 4719.37 + + Zero-point correction= 0.047996 (Hartree/Particle) + Thermal correction to Energy= 0.050845 + Thermal correction to Enthalpy= 0.051790 + Thermal correction to Gibbs Free Energy= 0.030702 + Sum of electronic and zero-point Energies= -39.928882 + Sum of electronic and thermal Energies= -39.926032 + Sum of electronic and thermal Enthalpies= -39.925088 + Sum of electronic and thermal Free Energies= -39.946176 + + E (Thermal) CV S + KCal/Mol Cal/Mol-Kelvin Cal/Mol-Kelvin + Total 31.906 6.234 44.383 + Electronic 0.000 0.000 0.000 + Translational 0.889 2.981 34.261 + Rotational 0.889 2.981 10.081 + Vibrational 30.129 0.273 0.041 + Q Log10(Q) Ln(Q) + Total Bot 0.755339D-14 -14.121858 -32.516781 + Total V=0 0.900764D+08 7.954611 18.316168 + Vib (Bot) 0.840574D-22 -22.075424 -50.830542 + Vib (V=0) 0.100241D+01 0.001045 0.002407 + Electronic 0.100000D+01 0.000000 0.000000 + Translational 0.252294D+07 6.401907 14.740936 + Rotational 0.356171D+02 1.551659 3.572826 + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 -0.000000000 -0.000000000 -0.000000000 + 2 1 0.000000032 -0.000000092 -0.000000000 + 3 1 0.000000032 0.000000046 0.000000079 + 4 1 0.000000032 0.000000046 -0.000000079 + 5 1 -0.000000097 0.000000000 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.000000097 RMS 0.000000050 + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Internal Forces: Max 0.000000097 RMS 0.000000052 + Search for a local minimum. + Step number 1 out of a maximum of 2 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Second derivative matrix not updated -- analytic derivatives used. + The second derivative matrix: + R1 R2 R3 R4 A1 + R1 0.37684 + R2 0.00350 0.37684 + R3 0.00350 0.00350 0.37684 + R4 0.00350 0.00350 0.00350 0.37684 + A1 0.00250 0.00250 -0.00157 -0.00343 0.02402 + A2 0.00392 -0.00101 0.00436 -0.00727 -0.01048 + A3 0.00766 -0.00615 -0.00681 0.00529 -0.01585 + A4 -0.00101 0.00392 0.00436 -0.00727 -0.01048 + A5 -0.00615 0.00766 -0.00681 0.00529 -0.01585 + A6 -0.00692 -0.00692 0.00646 0.00739 0.02863 + D1 -0.00485 -0.00485 -0.00342 0.01311 -0.01659 + D2 0.00399 0.00399 -0.01026 0.00228 0.01001 + D3 -0.00525 0.00924 -0.00513 0.00114 0.00500 + D4 -0.00924 0.00525 0.00513 -0.00114 -0.00500 + A2 A3 A4 A5 A6 + A2 0.04548 + A3 -0.02753 0.08884 + A4 -0.00219 0.02956 0.04548 + A5 0.02956 -0.04277 -0.02753 0.08884 + A6 -0.03484 -0.03225 -0.03484 -0.03225 0.10555 + D1 -0.01368 0.01817 -0.01368 0.01817 0.00760 + D2 -0.01159 0.00880 -0.01159 0.00880 -0.00443 + D3 -0.01751 -0.00094 0.00592 0.00973 -0.00222 + D4 -0.00592 -0.00973 0.01751 0.00094 0.00222 + D1 D2 D3 D4 + D1 0.03707 + D2 0.00194 0.02303 + D3 0.00097 0.01152 0.02337 + D4 -0.00097 -0.01152 0.01185 0.02337 + ITU= 0 + Eigenvalues --- 0.04698 0.05298 0.08062 0.15957 0.16005 + Eigenvalues --- 0.37480 0.37482 0.37526 0.38733 + Angle between quadratic step and forces= 90.00 degrees. + Linear search not attempted -- first point. + Iteration 1 RMS(Cart)= 0.00000013 RMS(Int)= 0.00000000 + ClnCor: largest displacement from symmetrization is 2.85D-14 for atom 5. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + R2 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + R3 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + R4 2.04639 0.00000 0.00000 0.00000 0.00000 2.04639 + A1 1.91063 0.00000 0.00000 -0.00000 0.00000 1.91063 + A2 1.91063 -0.00000 0.00000 -0.00000 0.00000 1.91063 + A3 1.91063 -0.00000 0.00000 -0.00000 -0.00000 1.91063 + A4 1.91063 -0.00000 0.00000 -0.00000 0.00000 1.91063 + A5 1.91063 0.00000 0.00000 0.00000 0.00000 1.91063 + A6 1.91063 0.00000 0.00000 0.00000 0.00000 1.91063 + D1 -2.09440 0.00000 0.00000 0.00000 0.00000 -2.09440 + D2 2.09440 0.00000 0.00000 0.00000 -0.00000 2.09440 + D3 -2.09440 0.00000 0.00000 0.00000 0.00000 -2.09440 + D4 2.09440 0.00000 0.00000 0.00000 0.00000 2.09440 + Item Value Threshold Converged? + Maximum Force 0.000000 0.000450 YES + RMS Force 0.000000 0.000300 YES + Maximum Displacement 0.000000 0.001800 YES + RMS Displacement 0.000000 0.001200 YES + Predicted change in Energy=-4.876504D-14 + Optimization completed. + -- Stationary point found. + ---------------------------- + ! Optimized Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.0829 -DE/DX = 0.0 ! + ! R2 R(1,3) 1.0829 -DE/DX = 0.0 ! + ! R3 R(1,4) 1.0829 -DE/DX = 0.0 ! + ! R4 R(1,5) 1.0829 -DE/DX = 0.0 ! + ! A1 A(2,1,3) 109.4712 -DE/DX = 0.0 ! + ! A2 A(2,1,4) 109.4712 -DE/DX = 0.0 ! + ! A3 A(2,1,5) 109.4712 -DE/DX = 0.0 ! + ! A4 A(3,1,4) 109.4712 -DE/DX = 0.0 ! + ! A5 A(3,1,5) 109.4712 -DE/DX = 0.0 ! + ! A6 A(4,1,5) 109.4712 -DE/DX = 0.0 ! + ! D1 D(2,1,4,3) -120.0 -DE/DX = 0.0 ! + ! D2 D(2,1,5,3) 120.0 -DE/DX = 0.0 ! + ! D3 D(2,1,5,4) -120.0 -DE/DX = 0.0 ! + ! D4 D(3,1,5,4) 120.0 -DE/DX = 0.0 ! + -------------------------------------------------------------------------------- + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Dipole is zero, so no output in dipole orientation. + + ---------------------------------------------------------------------- + + Electric dipole moment (input orientation): + (Debye = 10**-18 statcoulomb cm , SI units = C m) + (au) (Debye) (10**-30 SI) + Tot 0.000000D+00 0.000000D+00 0.000000D+00 + x 0.000000D+00 0.000000D+00 0.000000D+00 + y 0.000000D+00 0.000000D+00 0.000000D+00 + z 0.000000D+00 0.000000D+00 0.000000D+00 + + Dipole polarizability, Alpha (input orientation). + (esu units = cm**3 , SI units = C**2 m**2 J**-1) + Alpha(0;0): + (au) (10**-24 esu) (10**-40 SI) + iso 0.114523D+02 0.169705D+01 0.188822D+01 + aniso 0.000000D+00 0.000000D+00 0.000000D+00 + xx 0.114523D+02 0.169705D+01 0.188822D+01 + yx 0.000000D+00 0.000000D+00 0.000000D+00 + yy 0.114523D+02 0.169705D+01 0.188822D+01 + zx 0.000000D+00 0.000000D+00 0.000000D+00 + zy 0.000000D+00 0.000000D+00 0.000000D+00 + zz 0.114523D+02 0.169705D+01 0.188822D+01 + + First dipole hyperpolarizability, Beta (input orientation). + ||, _|_ parallel and perpendicular components, (z) with respect to z axis, + vector components x,y,z. Values do not include the 1/n! factor of 1/2. + (esu units = statvolt**-1 cm**4 , SI units = C**3 m**3 J**-2) + Beta(0;0,0): + (au) (10**-30 esu) (10**-50 SI) + || (z) 0.000000D+00 0.000000D+00 0.000000D+00 + _|_(z) 0.000000D+00 0.000000D+00 0.000000D+00 + x 0.000000D+00 0.000000D+00 0.000000D+00 + y 0.000000D+00 0.000000D+00 0.000000D+00 + z 0.000000D+00 0.000000D+00 0.000000D+00 + || 0.000000D+00 0.000000D+00 0.000000D+00 + xxx -0.320901D+02 -0.277233D+00 -0.102892D+00 + xxy 0.777822D-03 0.671977D-05 0.249398D-05 + yxy 0.160448D+02 0.138614D+00 0.514453D-01 + yyy -0.226917D+02 -0.196038D+00 -0.727577D-01 + xxz 0.513634D-04 0.443740D-06 0.164690D-06 + yxz 0.181583D-04 0.156874D-06 0.582220D-07 + yyz -0.514533D-04 -0.444517D-06 -0.164978D-06 + zxz 0.160453D+02 0.138619D+00 0.514470D-01 + zyz 0.226909D+02 0.196032D+00 0.727552D-01 + zzz 0.000000D+00 0.000000D+00 0.000000D+00 + + ---------------------------------------------------------------------- + Unable to Open any file for archive entry. + 1\1\GINC-PCB4062-103040\Freq\RHF\3-21G\C1H4\ROOT\16-Jul-2024\0\\#N Geo + m=AllCheck Guess=TCheck SCRF=Check GenChk RHF/3-21G Freq\\Title Card R + equired\\0,1\C,-0.103550289,2.041245107,-0.026721361\H,0.2574044776,1. + 0202714819,-0.026722229\H,0.2574237455,2.551724856,0.8574639471\H,0.25 + 74223303,2.551725859,-0.9109066677\H,-1.1864517095,2.0412582311,-0.026 + 7204944\\Version=Apple M1-G16RevC.02\State=1-A1\HF=-39.9768776\RMSD=3. + 934e-10\RMSF=5.018e-08\ZeroPoint=0.0479957\Thermal=0.0508454\ETot=-39. + 9260322\HTot=-39.925088\GTot=-39.9461757\Dipole=0.,0.,0.\DipoleDeriv=- + 0.0222729,0.,0.,0.,-0.0222729,0.,0.,0.,-0.0222729,0.0597859,0.0766704, + 0.,0.0766704,-0.1299731,-0.0000002,0.,-0.0000002,0.0868919,0.059783,-0 + .0383367,-0.0664018,-0.0383367,0.0326771,-0.0939036,-0.0664018,-0.0939 + 036,-0.0757555,0.0597832,-0.0383366,0.0664015,-0.0383366,0.0326769,0.0 + 939038,0.0664015,0.0939038,-0.0757555,-0.1570792,0.000003,0.0000002,0. + 000003,0.0868919,0.,0.0000002,0.,0.0868919\Polar=11.452264,0.,11.45226 + 4,0.,0.,11.452264\PolarDeriv=4.945444,-0.0001199,-2.4726796,-0.0000079 + ,-0.0000028,-2.4727644,-0.0001199,-2.4726796,3.4970469,-0.0000028,0.00 + 00079,-3.496927,-0.0000079,-0.0000028,0.0000079,-2.4727644,-3.496927,0 + .,1.2635637,-2.9541166,1.029271,-0.000001,0.0000009,0.6357064,-0.60615 + 53,1.8593687,-7.8757984,0.0000009,-0.0000048,0.198469,0.000001,0.00000 + 09,-0.0000029,1.4658041,-2.1494923,-0.0000052,1.2636867,1.4770795,0.73 + 40968,2.5583632,0.170432,0.930914,0.3031151,1.5642388,2.5220945,0.1704 + 32,2.678863,1.3164754,0.5249778,0.170432,0.6454776,1.761056,2.4904398, + 6.003222,1.2636776,1.4770818,0.7340962,-2.5583592,-0.1704306,0.9309122 + ,0.3031152,1.5642349,2.5221013,-0.1704306,-2.678867,1.3164767,-0.52497 + 38,-0.1704306,-0.6454816,1.7610509,2.4904434,-6.003222,-8.7363732,0.00 + 00751,-0.0247838,0.000005,0.0000005,-0.0247676,0.0000449,-2.5151621,-0 + .6654451,0.0000005,0.0000009,0.6655067,0.000003,0.0000005,-0.0000011,- + 2.515146,0.6655369,0.0000052\HyperPolar=-32.0900613,0.0007778,16.04475 + 56,-22.6916833,0.0000514,0.0000182,-0.0000515,16.0453057,22.6909055,0. + \Quadrupole=0.,0.,0.,0.,0.,0.\PG=TD [O(C1),4C3(H1)]\NImag=0\\0.6110821 + 9,0.,0.61108219,0.,0.,0.61108219,-0.08969900,0.08919090,0.00000008,0.0 + 9213770,0.08919090,-0.31044617,-0.00000021,-0.10065219,0.34125152,0.00 + 000008,-0.00000021,-0.05816647,-0.00000009,0.00000024,0.05655315,-0.08 + 970237,-0.04459721,-0.07724538,0.00458999,0.00593021,0.01282648,0.0921 + 4150,-0.04459721,-0.12123465,-0.10923833,-0.01407391,-0.01652420,-0.03 + 184826,0.05032809,0.12772577,-0.07724538,-0.10923833,-0.24737462,0.001 + 27749,0.00081842,0.00139064,0.08717163,0.12327577,0.27007509,-0.089702 + 12,-0.04459713,0.07724508,0.00458996,0.00593022,-0.01282648,0.00459027 + ,0.00814324,-0.01154959,0.09214122,-0.04459713,-0.12123490,0.10923855, + -0.01407386,-0.01652423,0.03184826,0.00814320,0.01034796,-0.01633313,0 + .05032799,0.12772605,0.07724508,0.10923855,-0.24737462,-0.00127751,-0. + 00081845,0.00139069,0.01154955,0.01633315,-0.02548180,-0.08717129,-0.1 + 2327602,0.27007509,-0.34197870,0.00000344,0.00000023,-0.01161865,-0.00 + 039915,0.,-0.01161939,0.00019980,0.00034584,-0.01161933,0.00019979,-0. + 00034582,0.37683607,0.00000344,-0.05816647,0.,0.03960905,0.00224308,-0 + .00000003,-0.01980429,-0.00031488,0.00147726,-0.01980433,-0.00031488,- + 0.00147723,-0.00000388,0.05655315,0.00000023,0.,-0.05816647,0.00000003 + ,0.,-0.00116801,-0.03430228,0.00147766,0.00139069,0.03430228,-0.001477 + 67,0.00139064,-0.00000026,0.,0.05655315\\0.,0.,0.,-0.00000003,0.000000 + 09,0.,-0.00000003,-0.00000005,-0.00000008,-0.00000003,-0.00000005,0.00 + 000008,0.00000010,0.,0.\\\@ + The archive entry for this job was punched. + + Writing a WFNX file to "aiida.wfx" + + + REVOLUTIONS HAVE NEVER LIGHTENED THE BURDEN OF TYRANNY: + THEY HAVE MERELY SHIFTED IT TO OTHER SHOULDERS. + -- G. B. SHAW (1903) + Job cpu time: 0 days 0 hours 0 minutes 0.3 seconds. + Elapsed time: 0 days 0 hours 0 minutes 0.4 seconds. + File lengths (MBytes): RWF= 6 Int= 0 D2E= 0 Chk= 1 Scr= 1 + Normal termination of Gaussian 16 at Tue Jul 16 15:39:49 2024. diff --git a/tests/workchains/fixtures/aimall.gaussianwfx/aiida.wfx b/tests/workchains/fixtures/aimall.gaussianwfx/default/output.wfx similarity index 100% rename from tests/workchains/fixtures/aimall.gaussianwfx/aiida.wfx rename to tests/workchains/fixtures/aimall.gaussianwfx/default/output.wfx diff --git a/tests/workchains/fixtures/aimall.subparam/gaussianopt/aiida.wfx b/tests/workchains/fixtures/aimall.gaussianwfx/output.wfx similarity index 100% rename from tests/workchains/fixtures/aimall.subparam/gaussianopt/aiida.wfx rename to tests/workchains/fixtures/aimall.gaussianwfx/output.wfx diff --git a/tests/workchains/fixtures/aimall.subparam/gaussianopt/output.wfx b/tests/workchains/fixtures/aimall.subparam/gaussianopt/output.wfx new file mode 100644 index 0000000..b2b829e --- /dev/null +++ b/tests/workchains/fixtures/aimall.subparam/gaussianopt/output.wfx @@ -0,0 +1,180 @@ + + Title Card Required + + + GTO + + + 5 + + + 5 + + + 0 + + + 0 + + + 10 + + + 5 + + + 5 + + + 1 + + + 0 + + + C1 + H2 + H3 + H4 + H5 + + + 6 + 1 + 1 + 1 + 1 + + + 6.000000000000e+00 + 1.000000000000e+00 + 1.000000000000e+00 + 1.000000000000e+00 + 1.000000000000e+00 + + + -0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 1.181482145849e+00 1.181482145849e+00 1.181482145849e+00 + -1.181482145849e+00 -1.181482145849e+00 1.181482145849e+00 + -1.181482145849e+00 1.181482145849e+00 -1.181482145849e+00 + 1.181482145849e+00 -1.181482145849e+00 -1.181482145849e+00 + + + C1 -3.474777423609e-16 -1.617096093728e-15 1.430677600575e-15 + H2 -5.610697462188e-08 -5.610697706437e-08 -5.610697506597e-08 + H3 5.610697861869e-08 5.610697706437e-08 -5.610697861869e-08 + H4 5.610697662028e-08 -5.610697706437e-08 5.610697328962e-08 + H5 -5.610697928482e-08 5.610697750846e-08 5.610697795255e-08 + + + 7.954726975485e-07 + + + 2.002230644946e+00 + + + 27 + + + 1 1 1 1 1 + 1 1 1 1 1 + 1 1 1 1 1 + 2 2 2 3 3 + 3 4 4 4 5 + 5 5 + + + 1 1 1 1 1 + 2 2 3 3 4 + 4 1 2 3 4 + 1 1 1 1 1 + 1 1 1 1 1 + 1 1 + + + 1.722560000000e+02 2.591090000000e+01 5.533350000000e+00 3.664980000000e+00 7.705450000000e-01 + 3.664980000000e+00 7.705450000000e-01 3.664980000000e+00 7.705450000000e-01 3.664980000000e+00 + 7.705450000000e-01 1.958570000000e-01 1.958570000000e-01 1.958570000000e-01 1.958570000000e-01 + 5.447178000000e+00 8.245472400000e-01 1.831915800000e-01 5.447178000000e+00 8.245472400000e-01 + 1.831915800000e-01 5.447178000000e+00 8.245472400000e-01 1.831915800000e-01 5.447178000000e+00 + 8.245472400000e-01 1.831915800000e-01 + + + 2.000000000000e+00 + 2.000000000000e+00 + 2.000000000000e+00 + 2.000000000000e+00 + 2.000000000000e+00 + + + -1.114445915914e+01 + -9.458816854450e-01 + -5.448380573770e-01 + -5.448380573770e-01 + -5.448380573770e-01 + + + Alpha and Beta + Alpha and Beta + Alpha and Beta + Alpha and Beta + Alpha and Beta + + + + 1 + + 2.066116727628e+00 2.898847210121e+00 1.778482355779e+00 -7.425835606458e-02 + 7.080832892802e-02 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -1.517117482618e-02 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -2.210657116597e-04 + -3.105541526307e-04 2.815341105422e-03 -2.210657116597e-04 -3.105541526307e-04 + 2.815341105422e-03 -2.210657116597e-04 -3.105541526307e-04 2.815341105422e-03 + -2.210657116597e-04 -3.105541526307e-04 2.815341105422e-03 + + 2 + + -4.372683030661e-01 -6.135055117980e-01 -3.763940107281e-01 -1.513018992661e-01 + 1.442724458020e-01 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 1.287105819971e-01 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 4.883656346286e-02 + 6.860583430030e-02 4.352316989135e-03 4.883656346286e-02 6.860583430030e-02 + 4.352316989135e-03 4.883656346286e-02 6.860583430030e-02 4.352316989135e-03 + 4.883656346286e-02 6.860583430030e-02 4.352316989135e-03 + + 3 + + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -0.000000000000e+00 + 0.000000000000e+00 6.400291263493e-01 3.316354743381e-01 0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 5.757518164005e-02 0.000000000000e+00 0.000000000000e+00 6.323907468413e-02 + 8.883854987837e-02 2.974314828888e-02 -6.323907468413e-02 -8.883854987837e-02 + -2.974314828888e-02 -6.323907468413e-02 -8.883854987837e-02 -2.974314828888e-02 + 6.323907468413e-02 8.883854987837e-02 2.974314828888e-02 + + 4 + + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 6.400291263493e-01 + 3.316354743381e-01 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 0.000000000000e+00 5.757518164005e-02 0.000000000000e+00 6.323907468413e-02 + 8.883854987837e-02 2.974314828888e-02 -6.323907468413e-02 -8.883854987837e-02 + -2.974314828888e-02 6.323907468413e-02 8.883854987837e-02 2.974314828888e-02 + -6.323907468413e-02 -8.883854987837e-02 -2.974314828888e-02 + + 5 + + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 -0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 0.000000000000e+00 + 0.000000000000e+00 6.400291263493e-01 3.316354743381e-01 0.000000000000e+00 + 0.000000000000e+00 0.000000000000e+00 5.757518164005e-02 6.323907468413e-02 + 8.883854987837e-02 2.974314828888e-02 6.323907468413e-02 8.883854987837e-02 + 2.974314828888e-02 -6.323907468413e-02 -8.883854987837e-02 -2.974314828888e-02 + -6.323907468413e-02 -8.883854987837e-02 -2.974314828888e-02 + + + -3.997687756021e+01 + + + 2.002230625004e+00 + diff --git a/tests/workchains/test_aimreorworkchain.py b/tests/workchains/test_aimreorworkchain.py index f6fcbd0..8e2b4df 100644 --- a/tests/workchains/test_aimreorworkchain.py +++ b/tests/workchains/test_aimreorworkchain.py @@ -2,7 +2,7 @@ # import os from aiida.common import LinkType -from aiida.orm import Dict, SinglefileData, Str +from aiida.orm import Dict, SinglefileData, StructureData # from aiida.plugins import WorkflowFactory from plumpy.utils import AttributesFrozendict @@ -74,6 +74,6 @@ def test_default( assert isinstance(wkchain.ctx.rot_struct_dict, Dict) assert wkchain.dict_to_struct_reor() is None assert "rot_structure" in wkchain.ctx - assert isinstance(wkchain.ctx.rot_structure, Str) + assert isinstance(wkchain.ctx.rot_structure, StructureData) assert wkchain.result() is None assert "rotated_structure" in wkchain.outputs diff --git a/tests/workchains/test_calcfunctions.py b/tests/workchains/test_calcfunctions.py index 581af3e..c8900e7 100644 --- a/tests/workchains/test_calcfunctions.py +++ b/tests/workchains/test_calcfunctions.py @@ -1,13 +1,22 @@ """Tests for calcfunctions in aiida-aimall workchains""" # pylint:disable=no-member import pytest -from aiida.orm import Dict, Int, SinglefileData, Str +from aiida.orm import Dict, Int, SinglefileData, Str, StructureData from rdkit import Chem from subproptools import qtaim_extract as qt from aiida_aimall import workchains as aimw +def test_generate_structure_data(): + """Test generate_structure_data function""" + test_Str = Str( + "C 0.0 0.0 0.0\nH -1.0 0.0 0.0\nH 1.0 1.0 0.0\nH 1.0 -1.0 1.0\n H 1.0 -1.0 -1.0" + ) + structure_data = aimw.generate_structure_data(test_Str) + assert isinstance(structure_data, StructureData) + + def test_calc_multiplicity(): """Tests calc_multiplicity function""" mol1 = Chem.MolFromSmiles("C") @@ -169,4 +178,4 @@ def test_dict_to_structure(): {"atom_symbols": ["H", "H"], "geom": [[-0.5, 0.0, 0.0], [0.5, 0.0, 0.0]]} ) str_str = aimw.dict_to_structure(str_dict) - assert isinstance(str_str, Str) + assert isinstance(str_str, StructureData) diff --git a/tests/workchains/test_smilestogaussian.py b/tests/workchains/test_smilestogaussian.py index 6774eee..ff93fff 100644 --- a/tests/workchains/test_smilestogaussian.py +++ b/tests/workchains/test_smilestogaussian.py @@ -3,7 +3,7 @@ import cclib from aiida.common import LinkType -from aiida.orm import Dict, SinglefileData +from aiida.orm import Dict, SinglefileData, StructureData from plumpy.utils import AttributesFrozendict @@ -27,7 +27,7 @@ def test_default( ): """Test the default inputs of `SmilesToGaussianWorkchain""" entry_point_name = "aimall.smitog16" - entry_point_calc_job = "aimall.gaussianwfx" + entry_point_calc_job = "gaussian" test = "default" name = "default" # create the workchain node @@ -42,6 +42,11 @@ def test_default( assert wkchain.update_parameters_with_cm() is None assert "gaussian_cm_params" in wkchain.ctx assert isinstance(wkchain.ctx.gaussian_cm_params, Dict) + + assert wkchain.string_to_StructureData() is None + assert "structure" in wkchain.ctx + assert isinstance(wkchain.ctx.structure, StructureData) + # Try the submit gaussian step, as dry_run which returns the inputs gaussian_inputs = wkchain.submit_gaussian() assert isinstance(gaussian_inputs, AttributesFrozendict) diff --git a/tests/workchains/test_subparamchain.py b/tests/workchains/test_subparamchain.py index 8858b30..4fd40a5 100644 --- a/tests/workchains/test_subparamchain.py +++ b/tests/workchains/test_subparamchain.py @@ -1,6 +1,9 @@ """Tests for aiida_aimall.workchains.SubstituentParameterWorkchain""" +import io + +import ase.io from aiida.common import LinkType -from aiida.orm import Dict, SinglefileData, Str +from aiida.orm import Dict, StructureData from plumpy.utils import AttributesFrozendict @@ -16,17 +19,14 @@ def test_setup(generate_workchain_subparam, generate_workchain_aimreor): def test_default( generate_workchain_subparam, fixture_localhost, - generate_workchain_folderdata, generate_workchain_aimreor, generate_g16_inputs, generate_calc_job_node, fixture_code, ): """Test the default inputs of `SubstituentParameterWorkchain""" - entry_point_name = "aimall.subparam" entry_point_calc_job_aim = "aimall.aimqb" entry_point_calc_job_gauss = "aimall.gaussianwfx" - gaussianopttest = "gaussianopt" name = "default" # create the workchain node wkchain = generate_workchain_subparam(generate_workchain_aimreor) @@ -35,21 +35,21 @@ def test_default( assert isinstance(gaussian_inputs, AttributesFrozendict) # Generate mock CalcJobNodes and needed outputs for the gaussian optimization g16_node = generate_calc_job_node( - entry_point_calc_job_gauss, - fixture_localhost, - name, - generate_g16_inputs(fixture_code), + entry_point_name=entry_point_calc_job_gauss, + computer=fixture_localhost, + test_name=name, + inputs=generate_g16_inputs(fixture_code), test_folder_type="workchains", ) g16_node.store() wkchain.ctx.opt = g16_node - gaussian_folder = generate_workchain_folderdata(entry_point_name, gaussianopttest) - with gaussian_folder.open("aiida.wfx", "rb") as handle: - output_node = SinglefileData(file=handle) - output_node.base.links.add_incoming( - g16_node, link_type=LinkType.CREATE, link_label="wfx" - ) - output_node.store() + # gaussian_folder = generate_workchain_folderdata(entry_point_name, gaussianopttest) + # gaussian_folder.base.links.add_incoming( + # g16_node, link_type=LinkType.CREATE, link_label="retrieved" + # ) + # gaussian_folder.store() + assert wkchain.classify_opt_wfx() is None + assert "opt_wfx" in wkchain.ctx # Run dry_run aim_reor aim_reor_inputs = wkchain.aim_reor() assert isinstance(aim_reor_inputs, AttributesFrozendict) @@ -57,13 +57,16 @@ def test_default( aim_reor_node = generate_workchain_aimreor() wkchain.ctx.prereor_aim = aim_reor_node.node # dummy roughly tetrahedral methane string - structure_node = Str( - "C 0.0 0.0 0.0\nH-1.0 0.0 0.0\nH 1.0 1.0 0.0\nH 1.0 -1.0 1.0\nH 1.0 -1.0 -1.0" + f = io.StringIO( + "5\n\n C -0.1 2.0 -0.02\nH 0.3 1.0 -0.02\nH 0.3 2.5 0.8\nH 0.3 2.5 -0.9\nH -1.2 2.0 -0.02" ) + structure_node = StructureData(ase=ase.io.read(f, format="xyz")) + f.close() structure_node.store() structure_node.base.links.add_incoming( aim_reor_node.node, link_type=LinkType.RETURN, link_label="rotated_structure" ) + # Test gaussian single point g16_sp_inputs = wkchain.g16_sp() assert isinstance(g16_sp_inputs, AttributesFrozendict) @@ -76,13 +79,9 @@ def test_default( test_folder_type="workchains", ) wkchain.ctx.sp = g16_sp_node - gaussian_folder = generate_workchain_folderdata(entry_point_name, gaussianopttest) - with gaussian_folder.open("aiida.wfx", "rb") as handle: - output_node = SinglefileData(file=handle) - output_node.base.links.add_incoming( - g16_sp_node, link_type=LinkType.CREATE, link_label="wfx" - ) - output_node.store() + + assert wkchain.classify_sp_wfx() is None + assert "sp_wfx" in wkchain.ctx # Test aim aim_inputs = wkchain.aim() assert isinstance(aim_inputs, AttributesFrozendict)