コード例 #1
0
ファイル: wf.py プロジェクト: georgeyumnam/pylada
def test():
  from tempfile import mkdtemp
  from shutil import rmtree
  from os.path import join, exists
  from os import mkdir
  from pylada.dftcrystal import Crystal, Functional, Shell
  from pylada.dftcrystal.properties import Properties
  from pylada import default_comm

  functional = Functional()
  functional.basis['Si'] = [
      Shell('s', a0=[16120.0, 0.001959],
                 a1=[2426.0, 0.01493], 
                 a2=[553.9, 0.07285],
                 a3=[156.3, 0.2461], 
                 a4=[50.07, 0.4859],
                 a5=[17.02, 0.325]),
      Shell('sp', a0=[292.7, -0.002781, 0.004438],
                  a1=[69.87, -0.03571, 0.03267],
                  a2=[22.34, -0.115, 0.1347],
                  a3=[8.15, 0.09356, 0.3287],
                  a4=[3.135, 0.603, 0.4496]), 
      Shell('sp', 4.0, a0=[1.22, 1.0, 1.0]),
      Shell('sp', 0.0, a0=[0.55, 1.0, 1.0]),
      Shell('sp', 0.0, a0=[0.27, 1.0, 1.0]) ]

  functional.dft.pbe0 = True
  functional.fmixing = 30
  functional.shrink = 8, 16
  functional.levshift = 5, True
  functional.maxcycle = 600
  functional.dft.spin = True

  crystal = Crystal(227, 5.43).add_atom(0.125, 0.125, 0.125, 'Si')
  directory =  mkdtemp() 
  if directory == '/tmp/test/':
    rmtree(directory)
    mkdir(directory)
  firstdir, seconddir = join(directory, '0'), join(directory, '1')
  try: 
     si = functional(crystal, outdir=firstdir, comm=default_comm)
     assert exists(join(firstdir, 'crystal.f9'))
     assert not exists(join(directory, 'crystal.f98'))
     properties = Properties(si)
     properties.rdfmwf = True
     result = properties(outdir=directory, workdir=join(directory, 'try0'))
     assert result.success
     assert exists(join(directory, 'crystal.f9'))
     assert not exists(join(directory, 'crystal.f98'))
     properties = Properties(directory)
     properties.fmwf = True
     result = properties(outdir=directory, workdir=join(directory, 'try1'))
     assert not exists(join(directory, 'crystal.f98'))
     result = properties(outdir=directory, workdir=join(directory, 'try1'), overwrite=True)
     assert result.success
     assert exists(join(directory, 'crystal.f98'))

  finally: 
    if directory != '/tmp/test/': rmtree(directory)
コード例 #2
0
ファイル: keywords.py プロジェクト: georgeyumnam/pylada
def test_rdfmwf():
  from collections import namedtuple
  from shutil import rmtree
  from tempfile import mkdtemp
  from os.path import join, exists
  from os import remove
  from pylada.dftcrystal.properties import Properties
  from pylada.error import IOError

  Extract = namedtuple('Extract', ['directory'])
  try: 
    indir = mkdtemp()
    outdir = mkdtemp()

    extract = Extract(indir)
    a = Properties(input=extract)
    assert a.rdfmwf is None
    assert len(a.output_map(filework=False)) == 0
    assert len(a.print_input(filework=False)) == 0
    try: a.output_map(filework=True, workdir=outdir)
    except IOError: pass
    else: raise Exception()

    a.rdfmwf = True
    assert len(a.output_map(filework=False)) == 1
    assert a.output_map(filework=False)['rdfmwf'] == True
    try: a.output_map(filework=True, workdir=outdir)
    except IOError: pass
    else: raise Exception()

    a.rdfmwf = False
    assert len(a.output_map(filework=False)) == 0
    try: a.output_map(filework=True, workdir=outdir)
    except IOError: pass
    else: raise Exception()

    # now with .f98 file
    with open(join(indir, 'crystal.f98'), 'w') as file: file.write('hello')
    a.rdfmwf = None
    assert len(a.output_map(filework=False)) == 1
    assert a.output_map(filework=False)['rdfmwf'] == True
    assert not exists(join(outdir, 'fort.98'))
    # should fail
    a.rdfmwf = False
    try: a.output_map(filework=True, workdir=outdir)
    except IOError: pass
    else: raise Exception()
    # now check writing
    a.rdfmwf = None
    assert not exists(join(outdir, 'fort.98'))
    assert a.output_map(filework=True, workdir=outdir)['rdfmwf'] == True
    assert exists(join(outdir, 'fort.98'))
    remove(join(outdir, 'fort.98'))
    a.rdfmwf = True
    assert not exists(join(outdir, 'fort.98'))
    assert a.output_map(filework=True, workdir=outdir)['rdfmwf'] == True
    assert exists(join(outdir, 'fort.98'))
    remove(join(indir, 'crystal.f98'))
    remove(join(outdir, 'fort.98'))
    with open(join(outdir, 'crystal.f98'), 'w') as file: file.write('hello')
    assert exists(join(outdir, 'crystal.f98'))
    assert not exists(join(outdir, 'fort.98'))
    assert a.output_map(filework=True, workdir=outdir, outdir=outdir)['rdfmwf'] == True
    assert exists(join(outdir, 'fort.98'))
    remove(join(outdir, 'fort.98'))
    
    # now for .f9
    with open(join(indir, 'crystal.f9'), 'w') as file: file.write('hello')
    a.rdfmwf = None
    assert len(a.output_map(filework=False)) == 0
    assert not exists(join(outdir, 'fort.9'))
    # should fail
    a.rdfmwf = True
    try: a.output_map(filework=True, workdir=outdir)
    except IOError: pass
    else: raise Exception()
    # now check writing
    a.rdfmwf = None
    assert not exists(join(outdir, 'fort.9'))
    assert len(a.output_map(filework=True, workdir=outdir)) == 0
    assert exists(join(outdir, 'fort.9'))
    remove(join(outdir, 'fort.9'))
    a.rdfmwf = False
    assert not exists(join(outdir, 'fort.9'))
    assert len(a.output_map(filework=True, workdir=outdir)) == 0
    assert exists(join(outdir, 'fort.9'))
    remove(join(indir, 'crystal.f9'))
    remove(join(outdir, 'fort.9'))
    with open(join(outdir, 'crystal.f9'), 'w') as file: file.write('hello')
    assert not exists(join(outdir, 'fort.9'))
    assert exists(join(outdir, 'crystal.f9'))
    assert len(a.output_map(filework=True, workdir=outdir, outdir=outdir)) == 0
    assert exists(join(outdir, 'fort.9'))
    remove(join(outdir, 'fort.9'))

  finally:
    try: rmtree(indir)
    except: pass
    try: rmtree(outdir)
    except: pass