First, I'm happy to see that VASP has implemented LATTICE_CONSTRAINTS into >6.4.3, so that we no longer need to recompile separate versions of the code for doing strain response or 2D materials.
However, I am noticing a few cases where convergence isn't met when I use LATTICE_CONSTRAINTS. I am not sure if I am missing an additional flag or if there is some bug in how the threshold is called. I have included the examples discussed below in the attachment. I am running the GPU standard version of 6.4.3.
For GaAs, I have done a regular relaxation first without this flag for comparison. Then I did one where it was set to LATTICE_CONSTRAINTS = .TRUE. .TRUE. .TRUE. and gotten the same result. When I set LATTICE_CONSTRAINTS = .FALSE. .FALSE. .FALSE., the code keeps iterating over the ionic steps until NSW is reached. If I do some combination for strain, it does stop after a finite number of steps.
In a more complicated system (more similar to what I am working on for research), I have noticed that sometimes when straining the system, the code keeps iterating as well. In this case, I was trying to reproduce some results from a recent paper on orbital ordering in Sr2CrO4 when clamped to the substrate lattice constant (LATTICE_CONSTRAINTS = .FALSE. .FALSE. .TRUE.). It keeps going despite the forces being significantly below EDIFFG. For this test, I did an initial run to generate WAVECAR/CHGCAR (not included), a subsequent NSW = 3 run to get timings, and then one with NSW = 20. In this case, the external pressure is still larger in magnitude than 1 kB, but I'm not sure if that is the issue. Here, I started from an initially fully relaxed structure before adding the strain and constraint.
Thank you for any insight that you can provide.