Skip to content

Enable compute metatomic#46

Open
GardevoirX wants to merge 14 commits into
metatomicfrom
compute
Open

Enable compute metatomic#46
GardevoirX wants to merge 14 commits into
metatomicfrom
compute

Conversation

@GardevoirX

@GardevoirX GardevoirX commented Mar 12, 2026

Copy link
Copy Markdown

Summary

This PR aims to allow lammps to use AtomisticModels to compute properties

Usage

compute <ID> <group-ID> metatomic <model_path> <property_name/[variant]> unit <unit> device <device> check_consistency <on/off> extensions_directory <extensions_directory> shape <scalar or vector> <vector_shape if shape == vector> types <type1> <type2> ...

Example

lmp -i in.compute_metatomic

Regarding determining the output shape

It is no longer feasible to determine it with a dummy system, because different outputs have different requirements on the system... e.g. heat flux need a system with PBC on, and the box size must be larger than the model's interactive range. Thus here I require the user to specify the shape (scalar/vector) and the size (if it's a vector) of their required properties. For users' convenience, we can later have a registry for standard outputs, so that users don't need to input the shape and size for standard outputs.

Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.h
Comment thread src/ML-METATOMIC/compute_metatomic.h
Comment thread src/ML-METATOMIC/compute_metatomic.h Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.h Outdated
} else {
error->all(FLERR, "the model requested an unsupported dtype '{}'", mta_data->capabilities->dtype());
}
auto system = this->system_adaptor->system_from_lmp(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should deal with requested inputs directly

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idk if the current version is what you want

Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
@GardevoirX GardevoirX changed the title Compute Enable compute metatomic Mar 12, 2026
@GardevoirX GardevoirX marked this pull request as ready for review March 28, 2026 19:29
@GardevoirX GardevoirX marked this pull request as draft June 22, 2026 18:54
@GardevoirX

Copy link
Copy Markdown
Author

Will be ready when #49 is merged

@GardevoirX GardevoirX marked this pull request as ready for review July 1, 2026 08:50
Comment thread examples/PACKAGES/metatomic/create-lj-nickel.py Outdated
Comment thread examples/PACKAGES/metatomic/in.compute_metatomic Outdated
Comment thread examples/PACKAGES/metatomic/in.compute_metatomic Outdated
Comment thread examples/PACKAGES/metatomic/in.compute_metatomic Outdated
Comment thread src/ML-METATOMIC/compute_metatomic.h
Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
Comment on lines +134 to +154
} else if (strcmp(arg[iarg], "shape") == 0) {
iarg += 1;
if (iarg == narg) {
error->one(FLERR, "expected <scalar/vector> after 'shape' in compute metatomic, got nothing");
} else if (strcmp(arg[iarg], "scalar") == 0) {
shape = arg[iarg];
shape_is_set = true;
iarg += 1;
} else if (strcmp(arg[iarg], "vector") == 0) {
shape = arg[iarg];
shape_is_set = true;
iarg += 1;
if (iarg == narg) {
error->one(FLERR, "expected <size> after 'vector' in compute metatomic, got nothing");
}
output_size = std::stoi(arg[iarg]);
output_size_is_set = true;
iarg += 1;
} else {
error->one(FLERR, "expected <scalar/vector> after 'shape' in compute metatomic, got '{}'", arg[iarg]);
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was not used in the example intputs, is it still relevant?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's needed until metatensor/metatomic#271

Comment thread src/ML-METATOMIC/compute_metatomic.cpp Outdated
"the model requested an unsupported dtype '" + capabilities->dtype() + "'"
);
}
auto model_outputs = capabilities->outputs();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this automatically pick a variant? Like we do for energy & co

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just found that we can specify the variant in the requested output name, see the updated example input

Comment on lines +299 to +304
if (result_kind == RESULT_GLOBAL_VECTOR) {
memory->destroy(vector);
} else if (result_kind == RESULT_PERATOM_SCALAR) {
memory->destroy(vector_atom);
} else if (result_kind == RESULT_PERATOM_VECTOR) {
memory->destroy(array_atom);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess these are defined by LAMMPS in the Compute class?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no they don't destory

GardevoirX and others added 2 commits July 1, 2026 21:27
Co-authored-by: Guillaume Fraux <luthaf@luthaf.fr>
Co-authored-by: Guillaume Fraux <luthaf@luthaf.fr>
@GardevoirX

Copy link
Copy Markdown
Author

Hm after removing the system energy output, we currently don't have a test for the global scalar output, what can be suitable?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants