aims_project_windows 0.3.1
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.
- data/README +5 -0
- data/bin/AimsCalc +367 -0
- data/bin/AimsProject +88 -0
- data/bin/AimsProjectManager +39 -0
- data/lib/aims_project/aims_project_exception.rb +42 -0
- data/lib/aims_project/aims_project_geometry.rb +52 -0
- data/lib/aims_project/app_controller.rb +245 -0
- data/lib/aims_project/atom.rb +95 -0
- data/lib/aims_project/calculation.rb +406 -0
- data/lib/aims_project/calculation_tree.rb +65 -0
- data/lib/aims_project/calculation_window.rb +141 -0
- data/lib/aims_project/crystal_viewer.rb +994 -0
- data/lib/aims_project/crystal_viewer_options.rb +103 -0
- data/lib/aims_project/geometry_console.rb +155 -0
- data/lib/aims_project/geometry_editor.rb +83 -0
- data/lib/aims_project/geometry_file.rb +183 -0
- data/lib/aims_project/geometry_window.rb +160 -0
- data/lib/aims_project/green_arrow.jpg +0 -0
- data/lib/aims_project/inspector.rb +183 -0
- data/lib/aims_project/material.rb +30 -0
- data/lib/aims_project/octree.rb +5 -0
- data/lib/aims_project/pan.gif +0 -0
- data/lib/aims_project/project.rb +102 -0
- data/lib/aims_project/project_tree.rb +62 -0
- data/lib/aims_project/rotate.gif +0 -0
- data/lib/aims_project/thread_callback_event.rb +19 -0
- data/lib/aims_project/zoom.gif +0 -0
- data/lib/aims_project.rb +158 -0
- data/skeleton/Capfile +37 -0
- data/skeleton/config/aims.sh +58 -0
- data/skeleton/config/tasks.rb +145 -0
- data/skeleton/config/user_variables.rb +37 -0
- data/skeleton/control/example.erb +41 -0
- data/skeleton/geometry/example +1 -0
- metadata +137 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
# ====================================================
|
4
|
+
# These are capistrano tasks to help with queueing calculations
|
5
|
+
# on a remote computing-cluster, tracking their status
|
6
|
+
# and retreiving calculation outputs.
|
7
|
+
# ====================================================
|
8
|
+
|
9
|
+
def _cset(name, *args, &block)
|
10
|
+
unless exists?(name)
|
11
|
+
set(name, *args, &block)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# logs the command then executes it locally.
|
16
|
+
# returns the command output as a string
|
17
|
+
def run_locally(cmd)
|
18
|
+
logger.trace "executing locally: #{cmd.inspect}" if logger
|
19
|
+
output_on_stdout = nil
|
20
|
+
elapsed = Benchmark.realtime do
|
21
|
+
output_on_stdout = `#{cmd}`
|
22
|
+
end
|
23
|
+
if $?.to_i > 0 # $? is command exit code (posix style)
|
24
|
+
raise Capistrano::LocalArgumentError, "Command #{cmd} returned status code #{$?}"
|
25
|
+
end
|
26
|
+
logger.trace "command finished in #{(elapsed * 1000).round}ms" if logger
|
27
|
+
output_on_stdout
|
28
|
+
end
|
29
|
+
|
30
|
+
# =========================================================================
|
31
|
+
# These variables must be set in the client Capfile. Failure to set them
|
32
|
+
# will result in an error.
|
33
|
+
# =========================================================================
|
34
|
+
_cset(:project_name) {abort "Please specify the project name, set :project_name, 'foo'"}
|
35
|
+
_cset(:remote_project_dir) {abort "Please specify the name of the remote directory for this project, set :remote_project_dir, 'foo'"}
|
36
|
+
# _cset(:staging_dir) {}
|
37
|
+
# _cset(:qsub) {abort "Please specify the queue submission script to use for each calculation, set :qsub, 'foo'"}
|
38
|
+
|
39
|
+
# =========================================================================
|
40
|
+
# These variables may be set in the client capfile if their default values
|
41
|
+
# are not sufficient.
|
42
|
+
# =========================================================================
|
43
|
+
_cset :aims_script, "aims.sh"
|
44
|
+
|
45
|
+
# =========================================================================
|
46
|
+
# These variables should NOT be changed unless you are very confident in
|
47
|
+
# what you are doing. Make sure you understand all the implications of your
|
48
|
+
# changes if you do decide to muck with these!
|
49
|
+
# =========================================================================
|
50
|
+
|
51
|
+
namespace :aims do
|
52
|
+
|
53
|
+
desc <<-DESC
|
54
|
+
Up-sync project with data transfer server
|
55
|
+
DESC
|
56
|
+
task :upsync, :roles => :data_transfer do
|
57
|
+
# Verify this AimsProject can be loaded
|
58
|
+
project = AimsProject::Project.load(project_name)
|
59
|
+
find_servers(:roles => :data_transfer).each do |s|
|
60
|
+
# Upsync to remote directory
|
61
|
+
puts "Upsyncing project to #{s}..."
|
62
|
+
run_locally "rsync -auvz #{project.full_path} #{s}:#{remote_project_dir}/"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
desc <<-DESC
|
67
|
+
Down-sync project with data transfer server
|
68
|
+
DESC
|
69
|
+
task :downsync, :roles => :data_transfer do
|
70
|
+
# Verify this AimsProject can be loaded
|
71
|
+
project = AimsProject::Project.load(project_name)
|
72
|
+
|
73
|
+
find_servers(:roles => :data_transfer).each do |s|
|
74
|
+
# Downsync from remote directory
|
75
|
+
puts "Retreiving new data from #{s}"
|
76
|
+
run_locally "rsync -auvz #{s}:#{remote_project_dir}/#{project.relative_path}/ #{project.full_path}/"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
desc <<-DESC
|
81
|
+
Synchronize with the remote computation cluster.
|
82
|
+
DESC
|
83
|
+
task :synchronize, :roles => :data_transfer do
|
84
|
+
# Verify this AimsProject can be loaded
|
85
|
+
project = AimsProject::Project.load(project_name)
|
86
|
+
upsync
|
87
|
+
downsync
|
88
|
+
end
|
89
|
+
|
90
|
+
task :env, :roles => :queue_submission do
|
91
|
+
run "env"
|
92
|
+
end
|
93
|
+
|
94
|
+
task :qstat, :roles => :queue_submission do
|
95
|
+
find_servers(:roles => :queue_submission).each do |s|
|
96
|
+
# Upsync to remote directory
|
97
|
+
stream qstat_cmd
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
# Trigger a synchronize before enqueue
|
103
|
+
before "aims:enqueue", "aims:synchronize"
|
104
|
+
|
105
|
+
desc <<-DESC
|
106
|
+
Enqueue all staged calculations.
|
107
|
+
This task will:
|
108
|
+
1) Customize and upload the script aims.sh to the remote server
|
109
|
+
2) cd to the calculation directory on the remote host
|
110
|
+
3) execute the "qsub" command as defined in Capfile
|
111
|
+
|
112
|
+
Example usage:
|
113
|
+
cap aims:enqueue
|
114
|
+
DESC
|
115
|
+
task :enqueue, :roles => :queue_submission do
|
116
|
+
|
117
|
+
# Load the project
|
118
|
+
project = AimsProject::Project.load(project_name)
|
119
|
+
|
120
|
+
# Enqueue all staged calculations
|
121
|
+
project.calculations.find_all{|calc|
|
122
|
+
calc.status == AimsProject::STAGED
|
123
|
+
}.each do |calc|
|
124
|
+
|
125
|
+
# Define the remote calculation directory
|
126
|
+
remote_calc_dir = "#{remote_project_dir}/#{project.relative_path}/#{calc.relative_path}"
|
127
|
+
|
128
|
+
# Upload the aims.sh script to the calculation directory
|
129
|
+
upload File.join(AimsProject::CONFIG_DIR, aims_script), File.join(remote_calc_dir, aims_script)
|
130
|
+
|
131
|
+
|
132
|
+
run <<-CMD
|
133
|
+
cd #{remote_calc_dir};
|
134
|
+
#{qsub}
|
135
|
+
CMD
|
136
|
+
|
137
|
+
# TODO, do this first, and then revert inside rollback
|
138
|
+
calc.status = AimsProject::QUEUED
|
139
|
+
calc.save
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# Put user defined variables here
|
4
|
+
# These variables will be evaulated and used when
|
5
|
+
# generating geometry.in and control.in for calculations.
|
6
|
+
#
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# An example usage is
|
10
|
+
#
|
11
|
+
# @lattice_const = 5.9
|
12
|
+
# @k_grid = "2 2 2"
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# Then include these in any geometry file using embedded ruby
|
16
|
+
#
|
17
|
+
# lattice_vector <%= [@lattice_const/2, @lattice_const/2, 0].join(" ") %>
|
18
|
+
# lattice_vector <%= [@lattice_const/2, 0, @lattice_const/2].join(" ") %>
|
19
|
+
# lattice_vector <%= [0, @lattice_const/2, @lattice_const/2].join(" ") %>
|
20
|
+
#
|
21
|
+
# And in any control.in file
|
22
|
+
#
|
23
|
+
# k_grid <%= @k_grid %>
|
24
|
+
#
|
25
|
+
# The <%= %> start and end tags can contain any ruby code
|
26
|
+
# Use <% %> start and end tags for ruby code whose output should be suppressed
|
27
|
+
# Note the '@' at the front of all variables. This is necessary in the user_variables file
|
28
|
+
#
|
29
|
+
# Parameters can be specified on the command line of AimsCalc as follows:
|
30
|
+
#
|
31
|
+
# AimsCalc create some_geometry_file some_control_file lattice_const=5.7 k_grid="2 2 2"
|
32
|
+
#
|
33
|
+
# The root calculation directory will then have a sub directory with the calculation named
|
34
|
+
# lattice_const=5.7,k_grid=2_2_2
|
35
|
+
# Notice that variables are concatenated with a comma and spaces are replaced with underscores.
|
36
|
+
# Only variables specified on the command line generate calculation sub-directories. This
|
37
|
+
# is to enable
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# This is an example control file
|
3
|
+
#
|
4
|
+
|
5
|
+
# Keywords understood by aims can be specified like normal
|
6
|
+
<% control_defaults %>
|
7
|
+
xc pbe
|
8
|
+
spin none
|
9
|
+
relativistic atomic_zora scalar
|
10
|
+
charge 0.
|
11
|
+
|
12
|
+
#
|
13
|
+
# Mixing Parameters
|
14
|
+
#
|
15
|
+
occupation_type gaussian 0.1
|
16
|
+
mixer pulay
|
17
|
+
preconditioner kerker 1.0
|
18
|
+
n_max_pulay 10
|
19
|
+
charge_mix_param 0.2
|
20
|
+
|
21
|
+
#
|
22
|
+
# Convergence Accuracy
|
23
|
+
#
|
24
|
+
sc_accuracy_rho 1E-4
|
25
|
+
sc_accuracy_eev 1E-2
|
26
|
+
sc_accuracy_etot 1E-5
|
27
|
+
sc_accuracy_forces 1E-3
|
28
|
+
sc_iter_limit 100
|
29
|
+
|
30
|
+
|
31
|
+
#
|
32
|
+
# Relaxation
|
33
|
+
#
|
34
|
+
#
|
35
|
+
relax_geometry bfgs 2.e-2
|
36
|
+
restart_relaxations .true.
|
37
|
+
<%= relax_geometry true %>
|
38
|
+
|
39
|
+
# Include species like this
|
40
|
+
<%= species 15, "light" %>
|
41
|
+
<%= species 49, "light" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
atom 0 0 0 Si
|
metadata
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aims_project_windows
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Joshua Shapiro
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-05-30 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: wxruby-ruby19
|
16
|
+
requirement: &5625090 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *5625090
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: ruby-opengl
|
27
|
+
requirement: &5624860 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.60.3
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *5624860
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: aims
|
38
|
+
requirement: &5624630 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.3.0
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *5624630
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: highline
|
49
|
+
requirement: &5624400 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.6.11
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *5624400
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: capistrano
|
60
|
+
requirement: &5624170 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.11.2
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *5624170
|
69
|
+
description: This gem simplifies and streamlines the calculation pipeline for FHI-AIMS.
|
70
|
+
email: joshua.shapiro@gmail.com
|
71
|
+
executables:
|
72
|
+
- AimsProjectManager
|
73
|
+
- AimsCalc
|
74
|
+
- AimsProject
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- lib/aims_project/aims_project_exception.rb
|
79
|
+
- lib/aims_project/aims_project_geometry.rb
|
80
|
+
- lib/aims_project/app_controller.rb
|
81
|
+
- lib/aims_project/atom.rb
|
82
|
+
- lib/aims_project/calculation.rb
|
83
|
+
- lib/aims_project/calculation_tree.rb
|
84
|
+
- lib/aims_project/calculation_window.rb
|
85
|
+
- lib/aims_project/crystal_viewer.rb
|
86
|
+
- lib/aims_project/crystal_viewer_options.rb
|
87
|
+
- lib/aims_project/geometry_console.rb
|
88
|
+
- lib/aims_project/geometry_editor.rb
|
89
|
+
- lib/aims_project/geometry_file.rb
|
90
|
+
- lib/aims_project/geometry_window.rb
|
91
|
+
- lib/aims_project/inspector.rb
|
92
|
+
- lib/aims_project/material.rb
|
93
|
+
- lib/aims_project/octree.rb
|
94
|
+
- lib/aims_project/project.rb
|
95
|
+
- lib/aims_project/project_tree.rb
|
96
|
+
- lib/aims_project/thread_callback_event.rb
|
97
|
+
- lib/aims_project.rb
|
98
|
+
- lib/aims_project/pan.gif
|
99
|
+
- lib/aims_project/rotate.gif
|
100
|
+
- lib/aims_project/zoom.gif
|
101
|
+
- lib/aims_project/green_arrow.jpg
|
102
|
+
- skeleton/Capfile
|
103
|
+
- skeleton/config/aims.sh
|
104
|
+
- skeleton/config/tasks.rb
|
105
|
+
- skeleton/config/user_variables.rb
|
106
|
+
- skeleton/control/example.erb
|
107
|
+
- skeleton/geometry/example
|
108
|
+
- README
|
109
|
+
- bin/AimsProjectManager
|
110
|
+
- bin/AimsCalc
|
111
|
+
- bin/AimsProject
|
112
|
+
homepage: https://github.com/jns/AimsProject
|
113
|
+
licenses: []
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options: []
|
116
|
+
require_paths:
|
117
|
+
- lib
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.9.2
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
requirements: []
|
131
|
+
rubyforge_project:
|
132
|
+
rubygems_version: 1.8.17
|
133
|
+
signing_key:
|
134
|
+
specification_version: 3
|
135
|
+
summary: This gem simplifies and streamlines the calculation pipeline for FHI-AIMS.
|
136
|
+
test_files: []
|
137
|
+
has_rdoc:
|