Пример #1
0
def testzb():
    """ Tries and writes a gulp file. """
    from numpy import array, abs, all
    from pylada.crystal.binary import zinc_blende
    from pylada.crystal.write import gulp

    a = zinc_blende()
    string = [u.rstrip().lstrip() for u in gulp(a).splitlines()]
    string = [u for u in string if len(u) > 0]
    assert string[0] == "name"
    assert string[1] == "Zinc-Blende"
    assert string[2] == "vectors"
    assert all(abs(array(string[3].split(), dtype="float64") - [0, 0.5, 0.5]) < 1e-8)
    assert all(abs(array(string[4].split(), dtype="float64") - [0.5, 0, 0.5]) < 1e-8)
    assert all(abs(array(string[5].split(), dtype="float64") - [0.5, 0.5, 0]) < 1e-8)
    assert string[6] == "cartesian"
    assert string[7].split()[:2] == ["A", "core"]
    assert all(abs(array(string[7].split()[2:], dtype="float64")) < 1e-8)
    assert string[8].split()[:2] == ["B", "core"]
    assert all(abs(array(string[8].split()[2:], dtype="float64") - [0.25, 0.25, 0.25]) < 1e-8)

    string2 = gulp(a, symmgroup=216).splitlines()
    string2 = [u.rstrip().lstrip() for u in string2]
    string2 = [u for u in string2 if len(u) > 0]
    assert string2[:6] == string[:6]
    assert string2[6] == "spacegroup"
    assert string2[7] == "216"
    assert string2[8:] == string[6:]

    a.symmgroup = 216
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2 == string

    a[0].asymmetric = True
    a[1].asymmetric = False
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2[:-1] == string
    del a[0].asymmetric
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2 == string
    del a[1].asymmetric

    a[1].type = "A"
    a.symmgroup = 227
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2[:7] == string[:7]
    assert string[7] == "227"
    assert string2[8:-1] == string[8:]
Пример #2
0
def test_write_gulp_zinc_blende():
  """ Tries and writes a gulp file. """
  from numpy import array, abs, all
  from pylada.crystal.binary import zinc_blende
  from pylada.crystal.write import gulp

  a = zinc_blende() 
  string = [u.rstrip().lstrip() for u in gulp(a).splitlines()]
  string = [u for u in string if len(u) > 0]
  assert string[0] == 'name'
  assert string[1] == 'Zinc-Blende'
  assert string[2] == 'vectors'
  assert all(abs(array(string[3].split(), dtype='float64') - [0, 0.5, 0.5]) < 1e-8)
  assert all(abs(array(string[4].split(), dtype='float64') - [0.5, 0, 0.5]) < 1e-8)
  assert all(abs(array(string[5].split(), dtype='float64') - [0.5, 0.5, 0]) < 1e-8)
  assert string[6] == 'cartesian'
  assert string[7].split()[:2] == ['A', 'core']
  assert all(abs(array(string[7].split()[2:], dtype='float64')) < 1e-8)
  assert string[8].split()[:2] == ['B', 'core']
  assert all(abs(array(string[8].split()[2:], dtype='float64') - [0.25, 0.25, 0.25]) < 1e-8)

  string2 = gulp(a, symmgroup=216).splitlines()
  string2 = [u.rstrip().lstrip() for u in string2]
  string2 = [u for u in string2 if len(u) > 0]
  assert string2[:6] == string[:6]
  assert string2[6] == 'spacegroup'
  assert string2[7] == '216'
  assert string2[8:] == string[6:]
  
  a.symmgroup = 216
  string = gulp(a).splitlines()
  string = [u.rstrip().lstrip() for u in string]
  string = [u for u in string if len(u) > 0]
  assert string2 == string
  
  a[0].asymmetric = True
  a[1].asymmetric = False
  string = gulp(a).splitlines()
  string = [u.rstrip().lstrip() for u in string]
  string = [u for u in string if len(u) > 0]
  assert string2[:-1] == string
  del a[0].asymmetric
  string = gulp(a).splitlines()
  string = [u.rstrip().lstrip() for u in string]
  string = [u for u in string if len(u) > 0]
  assert string2 == string
  del a[1].asymmetric

  a[1].type = 'A'
  a.symmgroup = 227
  string = gulp(a).splitlines()
  string = [u.rstrip().lstrip() for u in string]
  string = [u for u in string if len(u) > 0]
  assert string2[:7] == string[:7]
  assert string[7] == '227'
  assert string2[8:-1] == string[8:]
Пример #3
0
def test():
  """ Tests writing out gulp files. """
  from numpy import array, all, abs
  from pylada.dftcrystal import Crystal
  from pylada.crystal.write import gulp

  a = Crystal(136, 4.63909875, 2.97938395, \
              ifhr=0, \
              shift=0)\
             .add_atom(0, 0, 0, 'Ti')\
             .add_atom(0.306153, 0.306153, 0, 'O')

  string = gulp(a).splitlines()
  assert string[0] == 'vectors'
  assert all(abs(array(string[1].split(), dtype='float64') - [4.63909875, 0, 0]) < 1e-5) 
  assert all(abs(array(string[2].split(), dtype='float64') - [0, 4.63909875, 0]) < 1e-5) 
  assert all(abs(array(string[3].split(), dtype='float64') - [0, 0, 2.97938395]) < 1e-5) 
  assert string[4] == 'spacegroup'
  assert string[5] == '136'
  assert string[6].rstrip().lstrip() == 'cartesian'
  assert string[7].split()[:2] == ['Ti', 'core']
  assert all(abs(array(string[7].split()[2:], dtype='float64')) < 1e-5)
  assert string[8].split()[:2] == ['O', 'core']
  assert all(abs(array(string[8].split()[2:], dtype='float64') - [1.420274, 1.420274, 0]) < 1e-5)
Пример #4
0
def test_write_gulp_zinc_blende():
    """ Tries and writes a gulp file. """
    from numpy import array, abs, all
    from pylada.crystal.binary import zinc_blende
    from pylada.crystal.write import gulp

    a = zinc_blende()
    string = [u.rstrip().lstrip() for u in gulp(a).splitlines()]
    string = [u for u in string if len(u) > 0]
    assert string[0] == 'name'
    assert string[1] == 'Zinc-Blende'
    assert string[2] == 'vectors'
    assert all(
        abs(array(string[3].split(), dtype='float64') - [0, 0.5, 0.5]) < 1e-8)
    assert all(
        abs(array(string[4].split(), dtype='float64') - [0.5, 0, 0.5]) < 1e-8)
    assert all(
        abs(array(string[5].split(), dtype='float64') - [0.5, 0.5, 0]) < 1e-8)
    assert string[6] == 'cartesian'
    assert string[7].split()[:2] == ['A', 'core']
    assert all(abs(array(string[7].split()[2:], dtype='float64')) < 1e-8)
    assert string[8].split()[:2] == ['B', 'core']
    assert all(
        abs(
            array(string[8].split()[2:], dtype='float64') -
            [0.25, 0.25, 0.25]) < 1e-8)

    string2 = gulp(a, symmgroup=216).splitlines()
    string2 = [u.rstrip().lstrip() for u in string2]
    string2 = [u for u in string2 if len(u) > 0]
    assert string2[:6] == string[:6]
    assert string2[6] == 'spacegroup'
    assert string2[7] == '216'
    assert string2[8:] == string[6:]

    a.symmgroup = 216
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2 == string

    a[0].asymmetric = True
    a[1].asymmetric = False
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2[:-1] == string
    del a[0].asymmetric
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2 == string
    del a[1].asymmetric

    a[1].type = 'A'
    a.symmgroup = 227
    string = gulp(a).splitlines()
    string = [u.rstrip().lstrip() for u in string]
    string = [u for u in string if len(u) > 0]
    assert string2[:7] == string[:7]
    assert string[7] == '227'
    assert string2[8:-1] == string[8:]