-
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
New integration tests framework #3999
Conversation
Fix a few issues in the Langevin RNG check.
Move checks with long runtime into separate files.
Test backported from 4.3, with slight changes to the system.time_step and to error tolerances. The test runs faster thanks to the smaller number of integration steps in the IBM checks. Co-authored-by: Rudolf Weeber <[email protected]>
Move the elastic forces descriptions from the advanced methods page to the bonded interactions page. Mention which figures in kruger12a provide schematics for the bonds. Update doxygen comments.
The per-particle temperature, gamma and gamma_rot must be defined if BROWNIAN_PER_PARTICLE is enabled.
Check the RNG with ROTATION and per-particle gamma/temperature.
Use similar filenames and class structures. Add the missing call to `acc.finalize()` for Correlator objects. Check pickling of the MeanVariance object.
This checkpointing function was only used in the Tcl interface.
The alternative code was never used. Variable names have diverged.
Exclude statistical tests (e.g. thermostat tests where velocity distributions require a lot of sampling) and deterministic tests with long runtime from CI jobs where coverage or sanitizers are enabled.
Here is the summary for the python testsuite, using the same CI runner when possible:
The complete pipeline runtime went from 72 min to 38 min. The Clang job completes in 35 min instead of 50 min. @RudolfWeeber your plan in #3883 (comment) was really good, however I had to deviate from it slightly:
Other remarks:
|
Also skip the slow diffusion and trajectory tests in coverage builds.
Write checks for NpT integrator. Move checks for SD integrator to a test file that isn't skipped in coverage jobs.
The slowest tests are now:
|
This reverts partially commit 51f30d5.
@@ -35,8 +35,8 @@ class ElcTest(ut.TestCase): | |||
def test_finite_potential_drop(self): | |||
s = self.system | |||
|
|||
p1 = s.part.add(pos=GAP + [0, 0, 1], q=+1) | |||
p2 = s.part.add(pos=GAP + [0, 0, 9], q=-1) | |||
p1 = s.part.add(pos=[0, 0, 1], q=+1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought it doesn't matter, where in the system the gap is? @reinaual
Did this change influence the test outcome?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change did not alter the numerical result. I think the gap is always at the higher value of the z-axis:
espresso/src/core/electrostatics_magnetostatics/elc.hpp
Lines 92 to 93 in 127ad4e
/** Up to where particles can be found. */ | |
double h; |
elc_params.h = box_geo.length()[2] - gap_size; |
If particles enter the gap, they are misclassified as particles from the dielectric contrast when calculating the forces and energies. The documentation warns against using ELC without walls to block particles from entering the gap:
espresso/doc/sphinx/electrostatics.rst
Lines 254 to 259 in 127ad4e
* The method relies on a slab of the simulation box perpendicular to the | |
z-direction not to contain particles. The size in z-direction of this slab | |
is controlled by the ``gap_size`` parameter. The user has to ensure that | |
no particles enter this region by means of constraints or by fixing the | |
particles' z-coordinate. When there is no empty slab of the specified size, | |
the method will silently produce wrong results. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In theory it should not matter, to my knowledge in the implementation it does. The lower interface is assumed at z=0
and the upper one at z=h
, which is relevant for the error-estimation and the placement of the image charges.
To my understanding the testcase should be correct for every given prefactor, however setting it to 1e-100
allows to explicitly test the potential difference contribution but hides the misplaced particles in this case.
Fixes #3883
Description of changes: