Skip to content

The autotests is not rich enough, we still can find out some error case not in them. #503

@dyzheng

Description

@dyzheng

Background

$ABACUS_PATH/tests/Integrate is an example of the stability test of the program.
The goal is to run all the code of the program through fast calculation, so as to detect whether there are bugs in the existing code and whether the newly added code will affect the calculation results of the existing code.

new test case norm

  1. Read the "readme.md" file in integrate folder and clarify the naming criteria of examples.
  2. The new example should contain the minimum necessary files, the pseudopotential and orbital files in tools/PP_ORB/
  3. The running time of the new example should be as short as possible on the premise of achieving the test purpose, generally less than 10s, and the longest is no more than 5min
    a. In the case of plane wave calculation, the efficiency of program can be optimized by reducing the number of K points (222) and "ecutwfc" parameter (20 Ry).
    b. Atomic orbital base group can optimize program efficiency by reducing base group size (DZP), orbital radius truncation value (6 A.U.) and "ecutwfc" parameter (20-50ry).
    c. We can set nstep =2 for relax/md/cell-relax examples, but if charge_extrap = second-order, we need nstep=3;
    d. The plane wave example needs to set "seed = 1", which can generate the same random number seed of the initial wave function.
    e. If the calculation example is not easy to converge, you can increase "ecutwfc" or k-points, or read in from the charge density close to convergence for further calculation. If all above can't help, set niter = 2, but be careful.
  4. After adding the example, remember to add the name of the example in the corresponding position of CASES.
  5. Generate the result.ref, and the script for the reference is $ABACUS_PATH/tests/integrate/tools/catch_properties.sh, calls attention:
    a. A blank space is required for result.ref, and the script needs the first parameter as the filename.
    b. Note that the suffix in the INPUT should be named as autotest. Otherwise, the script cannot find the "running*" file.
    c. If you need to add checks on any output, go ahead and modify the script.
  6. We need to write an additional one-line file named JD as the job description output when this example is called.

Metadata

Metadata

Assignees

Labels

Feature DiscussedThe features will be discussed first but will not be implemented soon

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions