diff --git a/example/methods_directory/physical/psp.json b/example/methods_directory/physical/psp.json index eedabf2a8..46c0fb2ec 100644 --- a/example/methods_directory/physical/psp.json +++ b/example/methods_directory/physical/psp.json @@ -1,49 +1,16 @@ { - "name": "PAW Pseudopotential method (VASP)", + "name": "PAW Pseudopotential method", "path": "/qm/wf/psp/paw", + "slug": "pseudopotential", "categories": { "tier1": "qm", "tier2": "wf", "type": "psp", "subtype": "paw" }, - "data": { - "pseudo": [ - { - "hash": "4e058592231fc4e091ac0c92d87797b0", - "apps": ["vasp"], - "element": "Si", - "source": "vasp", - "version": "5.2", - "path": "/export/share/pseudo/si/gga/pbe/vasp/5.2/paw/default/POTCAR", - "type": "paw", - "exchangeCorrelation": { - "approximation": "gga", - "functional": "pbe", - "path": "/pb/qm/dft/ksdft/gga?functional=pbe" - }, - "filename": "POTCAR", - "schemaVersion": "0.2.0", - "name": "pseudopotential", - "valenceConfiguration": [ - { - "orbitalName": "3S", - "orbitalIndex": 1, - "principalNumber": 3, - "angularMomentum": 0, - "occupation": 2 - }, - { - "orbitalName": "3P", - "orbitalIndex": 2, - "principalNumber": 3, - "angularMomentum": 1, - "occupation": 2 - } - ], - "inSet": [], - "tags": [] - } - ] - } + "data": [ + { + "...": "include(psp/file.json)" + } + ] } diff --git a/example/methods_directory/physical/psp/file.json b/example/methods_directory/physical/psp/file.json new file mode 100644 index 000000000..4243aadc8 --- /dev/null +++ b/example/methods_directory/physical/psp/file.json @@ -0,0 +1,49 @@ +{ + "slug": "pseudopotential", + "source": { + "info": {}, + "type": "exabyte" + }, + "data": { + "element": "Ru", + "hash": "3349af97451e04faae570056fb6a110b", + "filename": "ru_pbe_dojo-oncv_0.4.upf", + "path": "/export/share/pseudo/ru/gga/pbe/dojo-oncv/0.4/nc/ru_pbe_dojo-oncv_0.4.upf", + "valenceConfiguration": [ + { + "orbitalName": "4S", + "orbitalIndex": 1, + "principalNumber": 4, + "angularMomentum": 0, + "occupation": 2.0 + }, + { + "orbitalName": "4P", + "orbitalIndex": 2, + "principalNumber": 4, + "angularMomentum": 1, + "occupation": 6.0 + }, + { + "orbitalName": "4D", + "orbitalIndex": 3, + "principalNumber": 4, + "angularMomentum": 2, + "occupation": 7.0 + }, + { + "orbitalName": "5S", + "orbitalIndex": 4, + "principalNumber": 5, + "angularMomentum": 0, + "occupation": 1.0 + } + ], + "apps": ["espresso"], + "exchangeCorrelation": { "functional": "pbe", "approximation": "gga" }, + "name": "pseudopotential", + "source": "dojo-oncv", + "type": "nc", + "version": "0.4" + } +} diff --git a/manifest/models.yaml b/manifest/models.yaml index b5c7d7189..23efb0df5 100644 --- a/manifest/models.yaml +++ b/manifest/models.yaml @@ -69,6 +69,10 @@ slug: pbe reference: doi: https://doi.org/10.1103/PhysRevLett.77.3865 + - name: perdew-burke-ernzerhof-solid + slug: pbesol + reference: + doi: https://doi.org/10.1103/PhysRevLett.100.136406 # modifiers: # type: array # items: diff --git a/schema/method/unit_method.json b/schema/method/unit_method.json index 6765fc3d1..bb0e807da 100644 --- a/schema/method/unit_method.json +++ b/schema/method/unit_method.json @@ -22,13 +22,6 @@ "precision": { "description": "Object showing the actual possible precision based on theory and implementation", "type": "object" - }, - "data": { - "description": "Additional numerically relevant data specific to method, eg. array of pseudopotentials", - "type": "object" } - }, - "required": [ - "categories" - ] + } } diff --git a/schema/methods_directory/physical/psp.json b/schema/methods_directory/physical/psp.json index 927431f75..62cde0bad 100644 --- a/schema/methods_directory/physical/psp.json +++ b/schema/methods_directory/physical/psp.json @@ -13,15 +13,10 @@ "$ref": "../../methods_category/physical/qm/wf/psp.json" }, "data": { - "type": "object", - "properties": { - "pseudo": { - "description": "pseudopotential files", - "type": "array", - "items": { - "$ref": "./psp/file.json" - } - } + "type": "array", + "items": { + "description": "Specific data based on pseudopotential file.", + "$ref": "./psp/file.json" } } }, diff --git a/schema/methods_directory/physical/psp/file.json b/schema/methods_directory/physical/psp/file.json index 736bf8e47..2e2e97e48 100644 --- a/schema/methods_directory/physical/psp/file.json +++ b/schema/methods_directory/physical/psp/file.json @@ -1,77 +1,26 @@ { "$id": "methods-directory/physical/psp/file", "$schema": "http://json-schema.org/draft-04/schema#", - "title": "pseudopotential file", + "title": "Pseudopotential file", "properties": { - "element": { - "type": "string", - "description": "chemical element" - }, - "hash": { - "type": "string", - "description": "MD5 hash of the pseudopotential file" + "slug": { + "enum": ["pseudopotential"] }, - "type": { - "type": "string", - "description": "type of pseudization", - "$ref": "../../../methods_category/physical/qm/wf/enum_options.json#/pseudoSubtypes" + "data": { + "description": "Specific data based on pseudopotential file.", + "$ref": "file_data_item.json" }, "source": { - "type": "string", - "description": "explains where this came from" - }, - "version": { - "type": "string", - "description": "explains the version of where this came from" - }, - "exchangeCorrelation": { "type": "object", + "description": "TODO: remove in the future", "properties": { - "approximation": { - "description": "DFT approximation", - "type": "string" + "info": { + "type": "object" }, - "functional": { - "description": "Exchange correlation functional", + "type": { "type": "string" - }, - "path": { - "description": "DFT model path, e.g. '/pb/qm/dft/ksdft/gga?functional=pbe'", - "$ref": "../../../core/reusable/category_path.json" } } - }, - "valenceConfiguration": { - "type": "array", - "description": "contains pseudo orbital information, including orbital names and occupations", - "items": { - "$ref": "../../../core/reusable/atomic_orbital.json" - } - }, - "path": { - "type": "string", - "description": "location of the pseudopotential file on filesystem" - }, - "apps": { - "type": "array", - "description": "simulation engines that can use this pseudopotential" - }, - "filename": { - "type": "string", - "description": "filename of pseudopotential file on filesystem" - }, - "name": { - "type": "string", - "description": "name of the data category", - "enum": ["pseudopotential"] } - }, - "required": [ - "element", - "type", - "exchangeCorrelation", - "source", - "path", - "apps" - ] + } } diff --git a/schema/methods_directory/physical/psp/file_data_item.json b/schema/methods_directory/physical/psp/file_data_item.json new file mode 100644 index 000000000..1f11b941a --- /dev/null +++ b/schema/methods_directory/physical/psp/file_data_item.json @@ -0,0 +1,77 @@ +{ + "$id": "methods-directory/physical/psp/file-data-item", + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "File data item", + "properties": { + "element": { + "type": "string", + "description": "chemical element" + }, + "hash": { + "type": "string", + "description": "MD5 hash of the pseudopotential file" + }, + "type": { + "type": "string", + "description": "type of pseudization", + "$ref": "../../../methods_category/physical/qm/wf/enum_options.json#/pseudoSubtypes" + }, + "source": { + "type": "string", + "description": "explains where this came from" + }, + "version": { + "type": "string", + "description": "explains the version of where this came from" + }, + "exchangeCorrelation": { + "type": "object", + "properties": { + "approximation": { + "description": "DFT approximation", + "type": "string" + }, + "functional": { + "description": "Exchange correlation functional", + "type": "string" + }, + "path": { + "description": "DFT model path, e.g. '/pb/qm/dft/ksdft/gga?functional=pbe'", + "$ref": "../../../core/reusable/category_path.json" + } + } + }, + "valenceConfiguration": { + "type": "array", + "description": "contains pseudo orbital information, including orbital names and occupations", + "items": { + "$ref": "../../../core/reusable/atomic_orbital.json" + } + }, + "path": { + "type": "string", + "description": "location of the pseudopotential file on filesystem" + }, + "apps": { + "type": "array", + "description": "simulation engines that can use this pseudopotential" + }, + "filename": { + "type": "string", + "description": "filename of pseudopotential file on filesystem" + }, + "name": { + "type": "string", + "description": "name of the data category", + "enum": ["pseudopotential"] + } + }, + "required": [ + "element", + "type", + "exchangeCorrelation", + "source", + "path", + "apps" + ] +} diff --git a/schema/model/mixins/dft/enum_options.json b/schema/model/mixins/dft/enum_options.json index 7f85e13a3..1057440f0 100644 --- a/schema/model/mixins/dft/enum_options.json +++ b/schema/model/mixins/dft/enum_options.json @@ -7,7 +7,8 @@ }, "gga": { "enum": [ - "pbe" + "pbe", + "pbesol" ] }, "mgga": { diff --git a/schema/model/mixins/dft/enum_options.yml b/schema/model/mixins/dft/enum_options.yml index 56d664fd7..943da2c94 100644 --- a/schema/model/mixins/dft/enum_options.yml +++ b/schema/model/mixins/dft/enum_options.yml @@ -3,6 +3,7 @@ lda: - pz gga: - pbe + - pbesol mgga: - scan hybrid: