Geometry Optimization with External Force


I want to do a relaxation of a crystal with a target force on each atom. So far I cannot find the right input variable. I’m looking for something like strtarget but for fcart. so fcart_target.

Am I missing something, or is there a quick modification I could do to files before compiling? It feels it should be simple

Any help is appreciated!

PS. this is not related to applied electric fields.

Are you sure that strtarget isn’t what you’re looking for? This wlll provide a stress on the cell to relax towards (default is zero stress but can be non zero, can simulate both hydrostatic pressure and anisotropic stress loads). The resulting optimized (stressed) cell will include forces on some of the atoms, depending of course on their local point symmetry (atoms on high symmetry positions never have forces on them regardless of the stress on the cell).

I’m sure its not stress I’m looking for. The optimized stressed cell will have no forces on the atoms as ionmov will always go to zero for fcart. I want to apply a force profile and see how the crystal changes. By force profile I mean 1eV/ang on atom 1 in the z direction, 0.25 eV/ang on atom 2 in the x+y direction, etc.

I work with switching paths between configurations of a material, mostly metallic.

So in other words you want to force the ions to drift? I’m not sure what an “optimization” would look like in that scenario, since I think the “optimized” scenario would be some kind of steady state motion. I think the way I’d attack this is by moving the atoms slightly by hand in the xred definition (xcart is probably the easier variable here) and then running a ground state calculation at this new fixed distorted geometry. The output will include the forces on every atom. You could move only the atoms of interest in the direction of the forces you want to apply, and see what size of change is necessary to create a force of the size you’re interested in. You could also, for each distorted geometry, allow all other atoms to relax using ionmov 2 (say), optcell 0, and the iatfix variable to freeze some but not all of the atoms.

Yet another approach might be the nudged elastic band method, see imgmov 5.