abacus-develop
abacus-develop copied to clipboard
Need a formatted file to store some key values of ABACUS,
Background
Currently, most of the key parameters of ABACUS are output in a readable log file or printed on the screen, which is convenient for users to directly obtain this information by reading the log file, but it is not conducive to our post-processing of ABACUS or the connection with other third-party software.
Describe the solution you'd like
It is suggested to add a standard format data storage file, similar to VASP's vasprun.xml or QE's pwscf.xml, to store the key parameters during the calculation process, such as INPUT settings, fft grid points, symmetry, K points, energy, bands, fermi energy, force, stress, coordinate etc. Of course, it doesn't have to be in XML format, JSON format is also very good.
Task list only for developers
- [ ] Notice possible changes of behavior
- [ ] Explain the changes of codes in core modules of ESolver, HSolver, ElecState, Hamilt, Operator or Psi
Notice Possible Changes of Behavior (Reminder only for developers)
No response
Notice any changes of core modules (Reminder only for developers)
No response
Notice Possible Changes of Core Modules (Reminder only for developers)
No response
Additional Context
No response
Task list for Issue attackers (only for developers)
- [ ] Review and understand the proposed feature and its importance.
- [ ] Research on the existing solutions and relevant research articles/resources.
- [ ] Discuss with the team to evaluate the feasibility of implementing the feature.
- [ ] Create a design document outlining the proposed solution and implementation details.
- [ ] Get feedback from the team on the design document.
- [ ] Develop the feature following the agreed design.
- [ ] Write unit tests and integration tests for the feature.
- [ ] Update the documentation to include the new feature.
- [ ] Perform code review and address any issues.
- [ ] Merge the feature into the main branch.
- [ ] Monitor for any issues or bugs reported by users after the feature is released.
- [ ] Address any issues or bugs reported by users and continuously improve the feature.
we need the abacus.json include below contents:
"abacus":{
"comment": "Unless otherwise specified, the unit of energy is Ry and the unit of length is Bohr",
"general_info": {
"version": ,
"commit": ,
"start_time": ,
"end_time": ,
"device": ,
"omp_number": ,
"mpi_number": ,
"out_dir": , # OUT.ABACUS
"log_file": , # running_scf.log
"pseudo_dir": ,
"orbital_dir": ,
"stru_file": ,
"kpt_file": ,
},
"readin": {
"input": { # the values of parameters defined in user's INPUT
},
"stru": {
"label": [],
"element": [],
"cell": [],
"coordinate": [], # cartesian
"mag": [], # mag of each atom
"pp": [], # file name of pseudopotential file
"orb": [], # file name of orbital file
}
},
"init": {
"input": {}, # list the value of all INPUTs
"point_group":,
"point_group_in_space": ,
"nkstot": ,
"nkstot_ibz":,
"nelectron_each_type": [], # electron number of each atom type
"nelectron": , # total electron number
"nband": , # number of bands
"natom": , # the total atom number
},
"output": [
{
"scf": [
{
"energy":, # the contents printted on screen
"ediff":,
"drho":,
"time":
}
], # a list of each scf step
"scf_converge": , # True or False
"energy":,
"e_fermi":,
"force": [[x,y,z],[],...], # nx3 cal_force 1
"stress": [[x,y,z],[],[]], # cal_stress 1
"cell": [[],[],[]],
"coordinate": [[],[],...],
"total_mag": , # double,
"absolute_mag": , # double
"atom_mag": [], # a list of double, the mag of each atom
}
],
"final_stru": {
"energy": ,
"label": ["",],
"cell": ,
"coordinate":,
"relax_converge": , # bool, calculation relax
"dos": [[[[[e,occ]]]]] # The dimension is NSPIN X NK X NBAND X [energy, occupation]
}
}
- add ENABLE_RAPIDJSON option in CMakeLists.txt #3519
- out put general_info in abacus.json #3545