aims 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,40 @@
1
+ require 'aims'
2
+ include Aims
3
+
4
+ describe Atom do
5
+
6
+ a = Atom.new(0,0,0,"Atom")
7
+ a_copy = a.copy
8
+
9
+ it "Should not be constrained" do
10
+ a.constrained?.should be_false
11
+ end
12
+
13
+ it "constrained should be TRUE" do
14
+ a.constrain = true
15
+ a.constrained?.should be_true
16
+ end
17
+
18
+ it "constrained should be '.true.'" do
19
+ a.constrain = ".true."
20
+ a.constrained?.should be_true
21
+ end
22
+
23
+ it "should == its copy" do
24
+ (a == a_copy).should be_true
25
+ end
26
+
27
+ it "should have the same hash as its copy" do
28
+ a.hash.should eq(a_copy.hash)
29
+ end
30
+
31
+ it "should eql? its copy" do
32
+ (a.eql?(a_copy)).should be_true
33
+ end
34
+
35
+ context "An array of duplicates" do
36
+ it "should have one element when uniq" do
37
+ [a, a_copy].uniq.size.should eq(1)
38
+ end
39
+ end
40
+ end
File without changes
@@ -0,0 +1,42 @@
1
+ require 'aims'
2
+ include Aims
3
+
4
+ describe OutputParser do
5
+
6
+ updated_geometry_non_periodic =<<-EOL
7
+ x [A] y [A] z [A]
8
+ atom 0.00000000 -0.07326332 0.00000000 O
9
+ atom 0.76740638 -0.67036834 0.00000000 H
10
+ atom -0.76740638 -0.67036834 0.00000000 H
11
+ ------------------------------------------------------------
12
+ EOL
13
+
14
+ updated_geometry_periodic =<<-EOL
15
+ x [A] y [A] z [A]
16
+ lattice_vector 1.99266923 1.99264227 -0.00253414
17
+ lattice_vector -0.00256109 1.99264197 1.99264198
18
+ lattice_vector 1.99266921 -0.00253413 1.99264226
19
+
20
+ atom 0.00000000 0.00000000 0.00000000 Al
21
+
22
+ Fractional coordinates:
23
+ L1 L2 L3
24
+ atom_frac 0.00000000 0.00000000 0.00000000 Al
25
+ EOL
26
+
27
+ it "should have 3 atoms" do
28
+ g = OutputParser.parse_updated_geometry(StringIO.new(updated_geometry_non_periodic), 3)
29
+ g.atoms[0].should eq(Atom.new(0,-0.07326332, 0, "O"))
30
+ g.atoms[1].should eq(Atom.new(0.76740638, -0.67036834, 0, "H"))
31
+ g.atoms[2].should eq(Atom.new(-0.76740638, -0.67036834, 0, "H"))
32
+ end
33
+
34
+ it "should have 3 lattice vectors and 1 atom" do
35
+ g = OutputParser.parse_updated_geometry(StringIO.new(updated_geometry_periodic), 3)
36
+ g.lattice_vectors[0].should eq(Vector[1.99266923, 1.99264227, -0.00253414])
37
+ g.lattice_vectors[1].should eq(Vector[-0.00256109, 1.99264197, 1.99264198])
38
+ g.lattice_vectors[2].should eq(Vector[ 1.99266921, -0.00253413, 1.99264226])
39
+ g.atoms[0].should eq(Atom.new(0,0,0,"Al"))
40
+ end
41
+
42
+ end
@@ -0,0 +1,63 @@
1
+
2
+ require 'aims'
3
+ include Aims
4
+
5
+ describe ZincBlende do
6
+
7
+ zb = ZincBlende.new("Cation", "Anion", 5.75)
8
+
9
+ context "Bulk Geometry" do
10
+ bulk = zb.get_bulk
11
+ it "should have 2 atoms" do
12
+ bulk.atoms.size.should eq(2)
13
+ end
14
+ end
15
+
16
+ context "001 Slab" do
17
+ (1..6).each do |i|
18
+ context "#{i} layers" do
19
+ s = zb.get_001_surface(i, 20)
20
+ it "should have #{i} atoms" do
21
+ s.atoms.size.should eq(i)
22
+ end
23
+
24
+ it "should have 0 constrained atoms" do
25
+ s.atoms.find_all{|a| a.constrained?}.size.should eq(0)
26
+ end
27
+ end
28
+ end
29
+
30
+ 6.times do |i|
31
+ context "#{i} constrained layers" do
32
+ s = zb.get_001_surface(6, 20, i)
33
+ it "should have 6 atoms" do
34
+ s.atoms.size.should eq(6)
35
+ end
36
+
37
+ it "should have i constrained atoms" do
38
+ s.atoms.find_all{|a| a.constrained?}.size.should eq(i)
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ context "110 Slab" do
45
+
46
+ (1..5).each do |i|
47
+ s = zb.get_110_surface(i, 20)
48
+ it "should have #{i*2} atoms" do
49
+ # The 110 surface has 2 atoms per monolayer
50
+ s.atoms.size.should eq(i*2)
51
+ end
52
+ end
53
+
54
+ 5.times do |i|
55
+ it "Should have #{i*2} constrained atoms" do
56
+ s = zb.get_110_surface(5, 20, i)
57
+ s.atoms.find_all{|a| a.constrained? }.size.should eq(i*2)
58
+ end
59
+ end
60
+ end
61
+
62
+
63
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aims
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Joshua Shapiro
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-03 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &3812490 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *3812490
25
+ description: Support for generation and parsing of input and output files for FHI-AIMS
26
+ DFT package
27
+ email: joshua.shapiro@gmail.com
28
+ executables:
29
+ - aims_output.rb
30
+ - aims_summary.rb
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - bin/aims_output.rb
35
+ - bin/aims_summary.rb
36
+ - lib/aims/atom.rb
37
+ - lib/aims/bond.rb
38
+ - lib/aims/cube.rb
39
+ - lib/aims/geometry.rb
40
+ - lib/aims/geometry_parser.rb
41
+ - lib/aims/output.rb
42
+ - lib/aims/plane.rb
43
+ - lib/aims/vectorize.rb
44
+ - lib/aims/volume.rb
45
+ - lib/aims/wurtzite.rb
46
+ - lib/aims/zinc_blende.rb
47
+ - lib/aims.rb
48
+ - README.rdoc
49
+ - spec/atom_spec.rb
50
+ - spec/bond_spec.rb
51
+ - spec/output_spec.rb
52
+ - spec/zinc_blende_spec.rb
53
+ homepage: https://github.com/jns/Aims
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 1.8.17
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: This gem offers support for parsing and generating geometry and control files, and
77
+ parsing output files for the FHI-AIMS DFT code.
78
+ test_files:
79
+ - spec/atom_spec.rb
80
+ - spec/bond_spec.rb
81
+ - spec/output_spec.rb
82
+ - spec/zinc_blende_spec.rb