Skip to content
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 stdout / stdin processing for VASP 6.4.1+ #48

Open
4 tasks
alchem0x2A opened this issue May 4, 2023 · 1 comment
Open
4 tasks

New stdout / stdin processing for VASP 6.4.1+ #48

alchem0x2A opened this issue May 4, 2023 · 1 comment
Assignees
Labels
bug Something isn't working enhancement New feature or request

Comments

@alchem0x2A
Copy link
Collaborator

Starting VASP 6.4.1 there are huge changes to the INPOS subroutine which basically breaks the current vasp-interactive workflow. #47

There are quite a few TODOs though

  • Detect whether POSITIONS AND LATTICE: read from stdin are got from raw out (--> 6.4.1+) or POSITIONS: read from stdin
  • Modify method to send POSCAR format to stdin
  • What about extra lines from VASP output?
  • Use more flexible isif=2 or isif=3 switch (i.e. let VaspInteractive calculator deside if lattice change is acceptable)
@alchem0x2A alchem0x2A added bug Something isn't working enhancement New feature or request labels May 4, 2023
@alchem0x2A alchem0x2A self-assigned this May 4, 2023
@Alexyjones
Copy link

Just played again with this problem. I couldn't find a way to make the supply of lattice and positions work in one shot. So I removed the isif = 3 condition.
Turned out, that even then it was broken. It seems the number of lines needed for stdin has changed. I could get it to work again by removing the lines to write New scaled positions and Old scaled position. I added to read one line, where VASP gives the amount of atoms and coordinates.

Starting from line 464 my vasp.interactive looks like this now (sorry, very messy):

        #self._stdout("New scaled positions\n", out=out)
        #for i in range(len(atoms)):
        #    self._stdout(self.process.stdout.readline(), out=out)
        #self._stdout("Old scaled positions\n", out=out)
        #for i in range(len(atoms)):
        #    self._stdout(self.process.stdout.readline(), out=out)
        text = self.process.stdout.readline()      # Added by AG
        self._stdout(text, out=out)                      # Added by AG

I think this would likely break things for other VASP versions. Maybe one could use the POSITIONS AND LATTICE line to distinguish on how to read and write to the respective vasp version. Hope to be able to try that soon.

The vasp.out looks like this now:

`POSITIONS: reading from stdin
Inputting positions...
5 15
POSITIONS: read from stdin
LATTICE: reading from stdin
New direct lattice vectors reciprocal lattice vectors
11.2582360 0.0000000 0.0000000 0.0888239 0.0000000 0.0000000
0.0000000 11.2582360 0.0000000 0.0000000 0.0888239 0.0000000
0.0000000 0.0000000 11.2582360 0.0000000 0.0000000 0.0888239

Old direct lattice vectors reciprocal lattice vectors
11.2582360 0.0000000 0.0000000 0.0888239 0.0000000 0.0000000
0.0000000 11.2582360 0.0000000 0.0000000 0.0888239 0.0000000
0.0000000 0.0000000 11.2582360 0.0000000 0.0000000 0.0888239

LATTICE: read from stdin`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants