-
Notifications
You must be signed in to change notification settings - Fork 1
ev.x
mathias-driesse edited this page Aug 12, 2020
·
2 revisions
ev.x is a terminal-based command. The wrapper for this works using pexpect and multiple simulations.
Here's the code that runs the commands in the terminal:
child = pexpect.spawn('ev.x')
And then a series of
child.expect('expect_text')
child.sendline('more_text')
ending in
child.wait()
which gives the program enough time to run. Without this, you'll run into problems getting any out put from the command.
Another feature of ev.x is it uses multiple simulations. So the structure of _run is as following:
session._run(simulation = [sim, sim2, etc...], prefix = 'si', command_type = "ev.x", calculation_type = '1')
The calculation type in this case is the equation of state being used: 1 = birch1, 2 = birch2, 3 = keane, 4 = murnaghan.
The cuds structure required to run an ev.x simulation is the following:
- Cuds object:
type: qe.QEWrapper
|_Relationship qe.HAS_PART:
- qe.Simulation cuds object:
|_Relationship qe.HAS_PART:
- qe.Cell cuds object:
. |_Relationship qe.HAS_PART:
. - qe.Volume cuds object:
. value: 22.0
. unit: au^3
- qe.TotalEnergy cuds object:
value: -434.0
unit: Ry
- qe.Simulation cuds object:
|_Relationship qe.HAS_PART:
- qe.Cell cuds object:
. |_Relationship qe.HAS_PART:
. - qe.Volume cuds object:
. value: 23.0
. unit: au^3
- qe.TotalEnergy cuds object:
value: -433.0
unit: Ry