Example: ASE calculator as a pipe workerΒΆ

Download Pipe_ASEWorker.run

#!/bin/sh
# This example uses a Python pipe worker based on ASE to evaluate the Lennard-Jones potential.
# First we do a single-point calculation including the gradients and the stress tensor and then
# a short MD run similar to the Pipe_AMSonAMS example.

export NSCM=1

AMS_JOBNAME=SP "$ADFBIN/ams" << eor
RNGSeed -538839488 972444872 -468448621 535232319 -953628259 777353319 -1036072 387155213

Task SinglePoint

Properties
    Gradients True
    StressTensor True
End

System
    Atoms
        Ar     0.03374714    -0.02579634    -0.03864485
        Ar    -2.47202773    -2.57754100    -0.02505375
        Ar    -2.54465030    -0.00587811    -2.49637860
        Ar    -4.98237672    -2.60930954    -2.49495517
        Ar    -0.03221746    -2.51967081    -2.47883073
        Ar    -2.52675554    -5.12905072    -2.48152312
        Ar    -2.54445364    -2.45619404    -5.02601013
        Ar    -4.95645981    -5.14903666    -4.95752059
    End
    Lattice
           0.00000000     5.00000000     5.00000000
           5.00000000     0.00000000     5.00000000
           5.00000000     5.20000000     0.00000000
    End
End

Engine Pipe
    WorkerCommand "$ADFBIN/startpython" "$TEST_DIRECTORY/ASE-LJ-worker.py"
EndEngine

eor

AMS_JOBNAME=MD "$ADFBIN/ams" << eor
RNGSeed -538839488 972444872 -468448621 535232319 -953628259 777353319 -1036072 387155213

Task MolecularDynamics

MolecularDynamics
    nSteps 200
    TimeStep 5.0
    Thermostat Type=NHC Temperature=298.15 Tau=100
    Trajectory SamplingFreq=20
    InitialVelocities Type=random Temperature=200
End

System
    Atoms
        Ar 0.0 0.0 0.0
        Ar 1.605 0.9266471820493496 2.605
    End
    Lattice
        3.21 0.0 0.0
        1.605 2.779941546148048 0.0
        0.0 0.0 5.21
    End
    SuperCell 4 4 4
End

Engine Pipe
    WorkerCommand "$ADFBIN/startpython" "$TEST_DIRECTORY/ASE-LJ-worker.py"
EndEngine

eor

Download ASE-LJ-worker.py

from scm.amspipe import ASEPipeWorker
from ase.calculators.lj import LennardJones

calculator = LennardJones()
calculator.parameters.epsilon = 0.0102996
calculator.parameters.sigma = 3.4
calculator.parameters.rc = 12.0

engine = ASEPipeWorker(calculator=calculator)
engine.run()