-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor System class #4816
Refactor System class #4816
Conversation
Remove the non-bonded IA parameters global variable. Replace upper triangular matrix with lower triangular matrix indexing, which is more efficient and doesn't require re-ordering stored objects when resizing the container. Store the actual particle type in global variable max_seen_particle_type.
Remove partCfg singleton. Rewrite the remaining analysis methods that ran only on MPI rank 0 to run in parallel, or to stream only the relevant data structures to MPI rank 0 (instead of the entire particle data).
Give each member of ScriptInterface::System a handle to the core System class. Refactor AutoParameters serialization. The System class can now handle checkpointing of its ObjectHandle members.
f44ac07
to
7a01c10
Compare
CellStructure::set_verlet_skina call of may lead to a situaoitn, where the ParticleDecompositoin needs to be rebuild, or at least the Verlet list becomes invalid. Can we safeguard, that this is not called without hte necessary steps being taken? |
As I understand it, there is code in src/core/energy.cpp that implements member functions of the System class. Should we move all files that direclty contribute to the system class into a common directory src/core/system or the like? |
void integrator_sanity_checks() should probably check for time_step <= 0 |
Could you please add some notes as to the purpose of code in leaf.hpp |
Aside form previous commens, LGTM. This PR is a big step towards getting rid of globals and allowing more than one system in a script. Thanks alot. |
Dependency inversion: let CellStructure manage the Verlet skin and the on_verlet_skin_change() event. Encapsulation: the core System class now has access to its own shared_ptr and can bind Leaf objects during construction. Remove the EspressoSystemStandAlone class, which is now redundant.
Done.
Done. I also took this opportunity to move the Verlet skin management and ghost update logic to
Done. Can be found in a self-contained .dox file that generates
I thought about it, in fact pressure, forces and tuning also implement |
Description of changes:
System
classSystem
classSystem
classSystem
classEspressoSystemStandAlone
classespressomd.galilei.GalileiTransform
is now a member of theSystem
class, accessible viasystem.galilei