Fix store/local

I discovered the following examples inside the documentation to fix bpm/rotational:

   bond_style bpm/rotational myfix 1000 time id1 id2
   fix myfix all store/local 1000 3
   dump 1 all local 1000 dump.broken f_myfix[1] f_myfix[2] f_myfix[3]
   dump_modify 1 write_header no

I didn’t see fix store/local in the documentation, so I dug further. However, the fix store/local line above throws an error. I have several questions:

  1. Is the documentation for fix bpm/rotational supposed to contain the “fix myfix all store/local” line? (i.e., should that fix style work?)
  2. The file fix_store_local.h contains the line
    FixStyle(STORE_LOCAL,FixStoreLocal);
    instead of something like
    FixStyle(store/local,FixStoreLocal);
    I assume this is not a typo, given that there are other similar fix headers (e.g., fix_dummy.h, fix_store.h, fix_srp.h, fix_group.h) that have similar syntax in them, which leads me to my question, What do the fix styles that have all-caps styles in the headers do? Is there some way to “unlock” them?
  3. Are things like “fix 1 all DUMMY” and “fix 2 all STORE_LOCAL 1000 3” supposed to proceed without error? They seem to work for me.

Thanks (and I realize I’m digging around under the proverbial hood a bit here).

No. This example is incorrect. It contradicts the remainder of the documentation, it should be:

   bond_style bpm/rotational store/local myfix 1000 time id1 id2
   dump 1 all local 1000 dump.broken f_myfix[1] f_myfix[2] f_myfix[3]

You can see this in the examples/bpm/impact folder inputs

By convention they are “internal” commands, i.e. used internally to realized redundant functionality like storing intermediate data.

It seems that nobody so far has bothered to ask this question but rather the assumption is that nobody will use undocumented commands unless as a developer internally (since the “documentation” of those commands in only in the comments).
We could probably add a warning or throw an error if an uppercase style of anything is requested in the input. Will have to discuss with @sjplimp if that is a good idea or whether we should leave this as is.

That makes sense—thank you!

I spoke too soon; I meant that the second and third answers make sense. The first, however…should it perhaps be the following (based on the documentation elsewhere):

bond_style bpm/rotational store/local myfix 1000 time id1 id2
dump 1 all local 1000 dump.broken f_myfix[1] f_myfix[2] f_myfix[3]
dump_modify 1 write_header no

(i.e., the dump line was fine, it was the bond_style line that was erroneous, and the fix line should have been omitted)?

That was my cut-n-paste mistake. I had copied the correct change, but the first line came to be on the same line as the “```” marker and thus was ignored by the typesetting engine. I have corrected that. This change - i.e. the same that you indicated - is already included in a pending pull request that is refactoring a related fix (and will change fix STORE_LOCAL to be consistent with that). Split internal fix STORE command into fix STORE/GLOBAL and fix STORE/PERATOM by akohlmey · Pull Request #3379 · lammps/lammps · GitHub