How to find out invoke process

Dear friends:

I have been working on LAMMPS software for a while.

Since I want to study some new phenomena in petro industry, I may need to write new program into LAMMPS system.
But I got lost when I try to find out what really happened in the system.

For example, when I study the file " in.flow.pois" in example/flow directory, for input script command “atom_style atomic”,
the soft ware first invoke function " atom::create_avec " in “atom.cpp”, then goes to the destructor in " atom_vec.cpp", then back to “AtomVec *atom::new_avec” in “atom.cpp” .
But I could not find which file directs such route.

Could you give me some idea that how to find out who decides the real route the system goes? Is there any document I can read to learn?

Thank you very much,

Zhou

Dear friends:

I have been working on LAMMPS software for a while.

Since I want to study some new phenomena in petro industry, I may need to
write new program into LAMMPS system.

what kind of "program"? and what kind of phenomena?

But I got lost when I try to find out what really happened in the system.

For example, when I study the file " in.flow.pois" in example/flow
directory, for input script command "atom_style atomic",
the soft ware first invoke function " atom::create_avec " in "atom.cpp",
then goes to the destructor in " atom_vec.cpp", then back to "AtomVec
*atom::new_avec" in "atom.cpp" .
But I could not find which file directs such route.

how LAMMPS processes input and how the flow control works, is
explained - to a different level of detail - in the manual, the
developer's guide and selected presentations given at workshops and
tutorials. they are all linked to or stored on the LAMMPS homepage.

the very basic flow of control is the following:
- in "main.cpp" an instance of the LAMMPS class is created (which sets
up all of the internal class instances that perform different
operations) and then the input is being processed via the Input::file
method
- Input::file will now read either from a file or from stdin and
process each command. one after the other. commands are either defined
in "input.cpp" directly or as external command styles. in the latter
case, and instance of the command style is created and the
XXX::command() method is called.
- commands perform various operations and modifications to the system
or add computes, fixes, variables to their respective list of active
items
- for the main MD or minimization calculations, there are the run
command and the minimize command, which will then perform time
integration according to the active integrate style in the former case
or a minimization according to the active min style through invoking
the respective XXX::run() methods.

Could you give me some idea that how to find out who decides the real route
the system goes? Is there any document I can read to learn?

outside of the material pointed out above, the definitive document is
the source code. mind you, most people that need to add functionality
to LAMMPS do not need to have this detailed an insight into the inner
workings of LAMMPS. how much you need to know depends very much on
what kind of modification/extension you need to program.

axel.