diff --git a/.gitignore b/.gitignore index 1c33f9854ab4bb4318b036bbafd133ab26c135c3..7ae6a1b5b05cf2694ccdd30607523eedd02514e3 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,4 @@ lib/ env/ # Egg -parser/parser-big-dft/bigdftparser.egg-info/ +bigdftparser.egg-info/ diff --git a/parser/parser-big-dft/bigdftparser/__init__.py b/parser/parser-big-dft/bigdftparser/__init__.py deleted file mode 100644 index 02cd8c4b45ffc6e9253db791086a5e2690eddfa1..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from bigdftparser.parser import BigDFTParser diff --git a/parser/parser-big-dft/bigdftparser/generic/__init__.py b/parser/parser-big-dft/bigdftparser/generic/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/parser/parser-big-dft/bigdftparser/generic/libxc_codes.py b/parser/parser-big-dft/bigdftparser/generic/libxc_codes.py deleted file mode 100644 index 3bfa682cbe8feb78015de10d4ad7a510bff26016..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/generic/libxc_codes.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -LIB_XC_MAPPING = { - "001": "LDA_X", - "002": "LDA_C_WIGNER", - "003": "LDA_C_RPA", - "004": "LDA_C_HL", - "005": "LDA_C_GL", - "006": "LDA_C_XALPHA", - "007": "LDA_C_VWN", - "008": "LDA_C_VWN_RPA", - "009": "LDA_C_PZ", - "010": "LDA_C_PZ_MOD", - "011": "LDA_C_OB_PZ", - "012": "LDA_C_PW", - "013": "LDA_C_PW_MOD", - "014": "LDA_C_OB_PW", - "015": "LDA_C_2D_AMGB", - "016": "LDA_C_2D_PRM", - "017": "LDA_C_vBH", - "018": "LDA_C_1D_CSC", - "019": "LDA_X_2D", - "020": "LDA_XC_TETER93", - "021": "LDA_X_1D", - "101": "GGA_X_PBE", - "102": "GGA_X_PBE_R", - "103": "GGA_X_B86", - "104": "GGA_X_B86_R", - "105": "GGA_X_B86_MGC", - "106": "GGA_X_B88", - "107": "GGA_X_G96", - "108": "GGA_X_PW86", - "109": "GGA_X_PW91", - "110": "GGA_X_OPTX", - "111": "GGA_X_DK87_R1", - "112": "GGA_X_DK87_R2", - "113": "GGA_X_LG93", - "114": "GGA_X_FT97_A", - "115": "GGA_X_FT97_B", - "116": "GGA_X_PBE_SOL", - "117": "GGA_X_RPBE", - "118": "GGA_X_WC", - "119": "GGA_X_mPW91", - "120": "GGA_X_AM05", - "121": "GGA_X_PBEA", - "122": "GGA_X_MPBE", - "123": "GGA_X_XPBE", - "124": "GGA_X_2D_B86_MGC", - "125": "GGA_X_BAYESIAN", - "126": "GGA_X_PBE_JSJR", - "127": "GGA_X_2D_B88", - "128": "GGA_X_2D_B86", - "129": "GGA_X_2D_PBE", - "130": "GGA_C_PBE", - "131": "GGA_C_LYP", - "132": "GGA_C_P86", - "133": "GGA_C_PBE_SOL", - "134": "GGA_C_PW91", - "135": "GGA_C_AM05", - "136": "GGA_C_XPBE", - "137": "GGA_C_LM", - "138": "GGA_C_PBE_JRGX", - "139": "GGA_X_OPTB88_VDW", - "140": "GGA_X_PBEK1_VDW", - "141": "GGA_X_OPTPBE_VDW", - "160": "GGA_XC_LB", - "161": "GGA_XC_HCTH_93", - "162": "GGA_XC_HCTH_120", - "163": "GGA_XC_HCTH_147", - "164": "GGA_XC_HCTH_407", - "165": "GGA_XC_EDF1", - "166": "GGA_XC_XLYP", - "167": "GGA_XC_B97", - "168": "GGA_XC_B97_1", - "169": "GGA_XC_B97_2", - "170": "GGA_XC_B97_D", - "171": "GGA_XC_B97_K", - "172": "GGA_XC_B97_3", - "173": "GGA_XC_PBE1W", - "174": "GGA_XC_MPWLYP1W", - "175": "GGA_XC_PBELYP1W", - "176": "GGA_XC_SB98_1a", - "177": "GGA_XC_SB98_1b", - "178": "GGA_XC_SB98_1c", - "179": "GGA_XC_SB98_2a", - "180": "GGA_XC_SB98_2b", - "181": "GGA_XC_SB98_2c", - "401": "HYB_GGA_XC_B3PW91", - "402": "HYB_GGA_XC_B3LYP", - "403": "HYB_GGA_XC_B3P86", - "404": "HYB_GGA_XC_O3LYP", - "405": "HYB_GGA_XC_mPW1K", - "406": "HYB_GGA_XC_PBEH", - "407": "HYB_GGA_XC_B97", - "408": "HYB_GGA_XC_B97_1", - "410": "HYB_GGA_XC_B97_2", - "411": "HYB_GGA_XC_X3LYP", - "412": "HYB_GGA_XC_B1WC", - "413": "HYB_GGA_XC_B97_K", - "414": "HYB_GGA_XC_B97_3", - "415": "HYB_GGA_XC_mPW3PW", - "416": "HYB_GGA_XC_B1LYP", - "417": "HYB_GGA_XC_B1PW91", - "418": "HYB_GGA_XC_mPW1PW", - "419": "HYB_GGA_XC_mPW3LYP", - "420": "HYB_GGA_XC_SB98_1a", - "421": "HYB_GGA_XC_SB98_1b", - "422": "HYB_GGA_XC_SB98_1c", - "423": "HYB_GGA_XC_SB98_2a", - "424": "HYB_GGA_XC_SB98_2b", - "425": "HYB_GGA_XC_SB98_2c", - "201": "MGGA_X_LTA", - "202": "MGGA_X_TPSS", - "203": "MGGA_X_M06L", - "204": "MGGA_X_GVT4", - "205": "MGGA_X_TAU_HCTH", - "206": "MGGA_X_BR89", - "207": "MGGA_X_BJ06", - "208": "MGGA_X_TB09", - "209": "MGGA_X_RPP09", - "231": "MGGA_C_TPSS", - "232": "MGGA_C_VSXC", - "301": "LCA_OMC", - "302": "LCA_LCH", -} diff --git a/parser/parser-big-dft/bigdftparser/parser.py b/parser/parser-big-dft/bigdftparser/parser.py deleted file mode 100644 index 3fcc7728960257792fef5d75db688afd176130c9..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/parser.py +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import re -import logging -import importlib -from nomadcore.baseclasses import ParserInterface - - -class BigDFTParser(ParserInterface): - """This class handles the initial setup before any parsing can happen. It - determines which version of BigDFT was used to generate the output and then - sets up a correct main parser. - - After the implementation has been setup, you can parse the files with - parse(). - """ - def __init__( - self, metainfo_to_keep=None, backend=None, default_units=None, - metainfo_units=None, debug=True, logger=None, log_level=logging.ERROR, - store=True - ): - super(BigDFTParser, self).__init__( - metainfo_to_keep, backend, default_units, - metainfo_units, debug, log_level, store - ) - - if logger is not None: - self.logger = logger - self.logger.debug('received logger') - else: - self.logger = logging.getLogger(__name__) - - def setup_version(self): - """Setups the version by looking at the output file and the version - specified in it. - """ - # Search for the BigDFT version specification. The correct parser is - # initialized based on this information. - regex_version = re.compile(" Version Number\s+: (\d\.\d)") - version_id = None - with open(self.parser_context.main_file, 'r') as outputfile: - header = outputfile.read(50*80) - for line in header.split("\n"): - - # Look for version definition - result_version = regex_version.match(line) - if result_version: - version_id = result_version.group(1).replace('.', '') - - if version_id is None: - msg = "Could not find a version specification from the given main file." - self.logger.exception(msg) - raise RuntimeError(msg) - - # Setup the root folder to the fileservice that is used to access files - dirpath, filename = os.path.split(self.parser_context.main_file) - dirpath = os.path.abspath(dirpath) - self.parser_context.file_service.setup_root_folder(dirpath) - self.parser_context.file_service.set_file_id(filename, "output") - - # Setup the correct main parser based on the version id. If no match - # for the version is found, use the main parser for NWChem 6.6 - self.setup_main_parser(version_id) - - def get_metainfo_filename(self): - return "big_dft.nomadmetainfo.json" - - def get_parser_info(self): - return {'name': 'big-dft-parser', 'version': '1.0'} - - def setup_main_parser(self, version_id): - # Currently the version id is a pure integer, so it can directly be mapped - # into a package name. - base = "bigdftparser.versions.bigdft{}.mainparser".format(version_id) - parser_module = None - parser_class = None - try: - parser_module = importlib.import_module(base) - except ImportError: - self.logger.warning("Could not find a parser for version '{}'. Trying to default to the base implementation for BigDFT 1.8.0".format(version_id)) - base = "bigdftparser.versions.bigdft18.mainparser" - try: - parser_module = importlib.import_module(base) - except ImportError: - self.logger.exception("Could not find the module '{}'".format(base)) - raise - try: - class_name = "BigDFTMainParser" - parser_class = getattr(parser_module, class_name) - except AttributeError: - self.logger.exception("A parser class '{}' could not be found in the module '[]'.".format(class_name, parser_module)) - raise - self.main_parser = parser_class(self.parser_context) diff --git a/parser/parser-big-dft/bigdftparser/scalainterface.py b/parser/parser-big-dft/bigdftparser/scalainterface.py deleted file mode 100644 index 8eed13cdba07377b9f7d35f08b840edb55b0ebc7..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/scalainterface.py +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -This is the access point to the parser for the scala layer in the -nomad project. -""" -from __future__ import absolute_import -import sys -import setup_paths -from nomadcore.parser_backend import JsonParseEventsWriterBackend -from bigdftparser import BigDFTParser - - -if __name__ == "__main__": - - # Initialise the parser with the main filename and a JSON backend - main_file = sys.argv[1] - parser = BigDFTParser(backend=JsonParseEventsWriterBackend) - parser.parse(main_file) diff --git a/parser/parser-big-dft/bigdftparser/setup_paths.py b/parser/parser-big-dft/bigdftparser/setup_paths.py deleted file mode 100644 index 8e38ba90b421612cc821ab63a79cd4b2ae67f339..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/setup_paths.py +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Setups the python-common library in the PYTHONPATH system variable. -""" -import sys -import os -import os.path - -baseDir = os.path.dirname(os.path.abspath(__file__)) -commonDir = os.path.normpath(os.path.join(baseDir, "../../../../../python-common/common/python")) -parserDir = os.path.normpath(os.path.join(baseDir, "../../parser-big-dft")) - -# Using sys.path.insert(1, ...) instead of sys.path.insert(0, ...) based on -# this discusssion: -# http://stackoverflow.com/questions/10095037/why-use-sys-path-appendpath-instead-of-sys-path-insert1-path -if commonDir not in sys.path: - sys.path.insert(1, commonDir) - sys.path.insert(1, parserDir) diff --git a/parser/parser-big-dft/bigdftparser/tools/__init__.py b/parser/parser-big-dft/bigdftparser/tools/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/parser/parser-big-dft/bigdftparser/versions/__init__.py b/parser/parser-big-dft/bigdftparser/versions/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/parser/parser-big-dft/bigdftparser/versions/bigdft18/__init__.py b/parser/parser-big-dft/bigdftparser/versions/bigdft18/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/parser/parser-big-dft/bigdftparser/versions/bigdft18/mainparser.py b/parser/parser-big-dft/bigdftparser/versions/bigdft18/mainparser.py deleted file mode 100644 index f0997aeaa70e0eafb2583973a1900d3f44a24932..0000000000000000000000000000000000000000 --- a/parser/parser-big-dft/bigdftparser/versions/bigdft18/mainparser.py +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -import numpy as np -from yaml import Loader, YAMLError -from yaml import ScalarNode, SequenceNode, MappingNode, MappingEndEvent -from nomadcore.baseclasses import AbstractBaseParser -from bigdftparser.generic.libxc_codes import LIB_XC_MAPPING -LOGGER = logging.getLogger("nomad") - - -class BigDFTMainParser(AbstractBaseParser): - """The main parser class that is called for all run types. Parses the NWChem - output file. - """ - def __init__(self, parser_context): - """ - """ - super(BigDFTMainParser, self).__init__(parser_context) - - # Map keys in the output to funtions that handle the values - self.key_to_funct_map = { - "Version Number": lambda x: self.backend.addValue("program_version", x), - "Atomic structure": self.atomic_structure, - "Sizes of the simulation domain": self.simulation_domain, - "Atomic System Properties": self.atomic_system_properties, - "dft": self.dft, - "DFT parameters": self.dft_parameters, - "Ground State Optimization": self.ground_state_optimization, - "Atomic Forces (Ha/Bohr)": self.atomic_forces, - "Energy (Hartree)": lambda x: self.backend.addRealValue("energy_total", float(x), unit="hartree"), - } - - def parse(self, filepath): - """The output file of a BigDFT run is a YAML document. Here we directly - parse this document with an existing YAML library, and push its - contents into the backend. This function will read the document in - smaller pieces, thus preventing the parser from opening too large files - directly into memory. - """ - self.prepare() - self.print_json_header() - with open(filepath, "r") as fin: - try: - # Open default sections and output default information - section_run_id = self.backend.openSection("section_run") - section_system_id = self.backend.openSection("section_system") - section_method_id = self.backend.openSection("section_method") - section_scc_id = self.backend.openSection("section_single_configuration_calculation") - self.backend.addValue("program_name", "BigDFT") - self.backend.addValue("electronic_structure_method", "DFT") - self.backend.addValue("program_basis_set_type", "real-space grid") - self.backend.addValue("single_configuration_calculation_to_system_ref", section_system_id) - self.backend.addValue("single_configuration_to_calculation_method_ref", section_method_id) - - loader = Loader(fin) - generator = self.generate_root_nodes(loader) - - # Go through all the keys in the mapping, and call an appropriate - # function on the value. - for key, value in generator: - - function = self.key_to_funct_map.get(key) - if function is not None: - function(value) - - # Close default sections - self.backend.closeSection("section_single_configuration_calculation", section_scc_id) - self.backend.closeSection("section_method", section_method_id) - self.backend.closeSection("section_system", section_system_id) - self.backend.closeSection("section_run", section_run_id) - except YAMLError: - raise Exception("There was a syntax error in the BigDFT YAML output file.") - - self.print_json_footer() - - def generate_root_nodes(self, loader): - # Ignore the first two events - loader.get_event() # StreamStarEvetn - loader.get_event() # DocumentStartEvent - start_event = loader.get_event() # MappingStartEvent - tag = start_event.tag - - # This is the root mapping that contains everything - node = MappingNode(tag, [], - start_event.start_mark, None, - flow_style=start_event.flow_style) - - while not loader.check_event(MappingEndEvent): - key = loader.construct_scalar(loader.compose_node(node, None)) - value = loader.compose_node(node, key) - if isinstance(value, MappingNode): - value = loader.construct_mapping(value, deep=True) - elif isinstance(value, SequenceNode): - value = loader.construct_sequence(value, deep=True) - elif isinstance(value, ScalarNode): - value = loader.construct_scalar(value) - yield (key, value) - - #=========================================================================== - # The following functions handle the different sections in the output - def ground_state_optimization(self, value): - subspace_optimization = value[0]["Hamiltonian Optimization"] - subspace_optimization = subspace_optimization[0]["Subspace Optimization"] - wavefunction_iterations = subspace_optimization["Wavefunctions Iterations"] - n_iterations = len(wavefunction_iterations) - self.backend.addValue("number_of_scf_iterations", n_iterations) - for iteration in wavefunction_iterations: - - scf_id = self.backend.openSection("section_scf_iteration") - energies = iteration["Energies"] - # ekin = energies["Ekin"] - # epot = energies["Epot"] - # enl = energies["Enl"] - # eh = energies["EH"] - # gradient = iteration["gnrm"] - exc = energies.get("EXC") # Use get instead, because this value is not always present - evxc = energies.get("EvXC") # Use get instead, because this value is not always present - etotal = iteration["EKS"] - energy_change = iteration["D"] - self.backend.addRealValue("energy_total_scf_iteration", etotal, unit="hartree") - if exc is not None: - self.backend.addRealValue("energy_XC_scf_iteration", exc, unit="hartree") - if evxc is not None: - self.backend.addRealValue("energy_XC_potential_scf_iteration", evxc, unit="hartree") - self.backend.addRealValue("energy_change_scf_iteration", energy_change, unit="hartree") - self.backend.closeSection("section_scf_iteration", scf_id) - - def atomic_structure(self, value): - np_positions = [] - np_labels = [] - positions = value["Positions"] - for position in positions: - np_positions.append(*position.values()) - np_labels.append(*position.keys()) - np_positions = np.array(np_positions) - np_labels = np.array(np_labels) - self.backend.addArrayValues("atom_positions", np_positions, unit="angstrom") - self.backend.addArrayValues("atom_labels", np_labels) - - def simulation_domain(self, value): - simulation_cell = np.diag(value["Angstroem"]) - self.backend.addArrayValues("simulation_cell", simulation_cell, unit="angstrom") - - def atomic_system_properties(self, value): - # Number of atoms - n_atoms = value["Number of atoms"] - self.backend.addValue("number_of_atoms", n_atoms) - - # Periodicity - boundary = value["Boundary Conditions"] - if boundary == "Free": - periodic_dimensions = np.array([False, False, False]) - elif boundary == "Periodic": - periodic_dimensions = np.array([True, True, True]) - elif boundary == "Surface": - periodic_dimensions = np.array([True, False, True]) - else: - raise Exception("Unknown boundary condtions.") - self.backend.addArrayValues("configuration_periodic_dimensions", periodic_dimensions) - - def dft(self, value): - # Total_charge - charge = value["qcharge"] - self.backend.addValue("total_charge", charge) - - # SCF options - max_iter = value["itermax"] - self.backend.addValue("scf_max_iteration", max_iter) - - # Spin channels - n_spin = value["nspin"] - self.backend.addValue("number_of_spin_channels", n_spin) - - def atomic_forces(self, value): - forces = [] - for force in value: - forces.append(*force.values()) - forces = np.array(forces) - self.backend.addArrayValues("atom_forces", forces, unit="hartree/bohr") - - def dft_parameters(self, value): - # XC functional - exchange_settings = value["eXchange Correlation"] - xc_id = exchange_settings["XC ID"] - - # LibXC codes, see http://bigdft.org/Wiki/index.php?title=XC_codes - if xc_id < 0: - xc_parts = [] - xc_id_str = str(xc_id)[1:] - xc_id_str_len = len(xc_id_str) - if xc_id_str_len <= 3: - xc_id_str = "0"*(3-xc_id_str_len)+xc_id_str - xc_parts.append(xc_id_str) - elif xc_id_str_len == 6: - xc_parts.append(xc_id_str[:3]) - xc_parts.append(xc_id_str[3:]) - - xc = [] - for part in xc_parts: - xc1 = LIB_XC_MAPPING.get(part) - if xc1 is not None: - xc.append(xc1) - else: - raise Exception("Unknown LibXC functional number: '{}'".format(part)) - # ABINIT codes, see - # http://www.tddft.org/programs/octopus/wiki/index.php/Developers_Manual:ABINIT - # and - # http://bigdft.org/Wiki/index.php?title=XC_codes - else: - mapping = { - 1: ["LDA_XC_TETER93"], - # 2: ["LDA_C_PZ"], # Not really sure... - # 3: Unknown - # 4: ["LDA_C_WIGNER"], # Not really sure... - # 5: ["LDA_C_HL"], # Not really sure... - # 6: ["LDA_C_XALPHA"], # Not really sure... - # 7: ["LDA_XC_PW"], # Not really sure... - # 8: ["LDA_X_PW"], # Not really sure... - # 9: ["LDA_X_PW", "LDA_C_RPA"], # Not really sure... - # 10: Internal - 11: ["GGA_C_PBE", "GGA_X_PBE"], - 12: ["GGA_X_PBE"], - # 13: ["GGA_C_PBE","GGA_X_LB"], # Not really sure... - # 14: ["GGA_C_PBE","GGA_X_PBE_R"], # Not really sure... - 15: ["GGA_C_PBE", "GGA_X_RPBE"], - 16: ["GGA_XC_HCTH_93"], - 17: ["GGA_XC_HCTH_120"], - # 20: Unknown - # 21: Unknown - # 22: Unknown - # 23: ["GGA_X_WC"], # Not really sure... - # 24: ["GGA_X_C09X"], # Not really sure... - # 25: Internal - 26: ["GGA_XC_HCTH_147"], - 27: ["GGA_XC_HCTH_407"], - # 28: Internal - 100: ["HF_X"], - } - xc = mapping.get(xc_id) - - # Create the XC sections and a summary - if xc is None: - raise Exception("Unknown functional number: '{}'".format(xc_id)) - sorted_xc = sorted(xc) - summary = "" - n_names = len(sorted_xc) - for i_name, name in enumerate(sorted_xc): - weight = 1.0 - xc_id = self.backend.openSection("section_XC_functionals") - self.backend.addValue("XC_functional_name", name) - self.backend.addValue("XC_functional_weight", weight) - self.backend.closeSection("section_XC_functionals", xc_id) - summary += "{}*{}".format(weight, name) - if i_name+1 != n_names: - summary += "_" - self.backend.addValue("XC_functional", summary) diff --git a/setup.py b/setup.py index 73fe959ff5adecbcdfbdc5074e4246a41bf3a2f3..f99c752d5a090cd3b1a92e83a2e76db19ae4e301 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,11 @@ # Copyright 2016-2018 Lauri Himanen, Fawzi Mohamed -# +# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 -# +# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,7 +23,7 @@ def main(): author="Lauri Himanen", author_email="lauri.himanen@aalto.fi", license="GPL3", - package_dir={'': 'parser/parser-big-dft'}, + package_dir={'': './'}, packages=find_packages(), install_requires=[ 'nomadcore',