coderunner 0.11.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Rakefile +3 -0
- data/VERSION +1 -1
- data/coderunner.gemspec +89 -0
- data/ext/code_runner_ext.c +17 -0
- data/ext/extconf.rb +9 -0
- data/ext/graph_kit.c +647 -0
- data/include/code_runner_ext.h +76 -0
- data/include/graph_kit.h +3 -0
- data/lib/code_runner_extension.rb +1 -0
- metadata +76 -4
data/Gemfile
CHANGED
@@ -2,6 +2,10 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
+
gem "graphkit", ">= 0.2.0"
|
6
|
+
gem "rubyhacks", ">= 0.1.0"
|
7
|
+
gem "gsl", ">= 1.12.0"
|
8
|
+
gem "ruby-netcdf", ">= 0.6.6"
|
5
9
|
|
6
10
|
# Add dependencies to develop your gem here.
|
7
11
|
# Include everything needed to run rake, tests, features, etc.
|
data/Rakefile
CHANGED
@@ -22,6 +22,8 @@ Jeweler::Tasks.new do |gem|
|
|
22
22
|
gem.description = %Q{CodeRunner is a framework for the automated running and analysis of simulations. It automatically generates any necessary input files, organises the output data and analyses it. Because it is a modular system, it can easily be customised to work with any system and any simulation code. One of its greatest strengths is that it is independent of any one simulation code; thus it can easily plot and compare the data from different codes.}
|
23
23
|
gem.email = "edmundhighcock@sourceforge.net"
|
24
24
|
gem.authors = ["Edmund Highcock"]
|
25
|
+
gem.extensions = "ext/extconf.rb"
|
26
|
+
gem.files.include('ext/*.c', 'include/*.h', 'ext/*.rb')
|
25
27
|
# dependencies defined in Gemfile
|
26
28
|
end
|
27
29
|
Jeweler::RubygemsDotOrgTasks.new
|
@@ -33,6 +35,7 @@ Rake::TestTask.new(:test) do |test|
|
|
33
35
|
test.verbose = true
|
34
36
|
end
|
35
37
|
|
38
|
+
|
36
39
|
#require 'rcov/rcovtask'
|
37
40
|
#Rcov::RcovTask.new do |test|
|
38
41
|
#test.libs << 'test'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.11.
|
1
|
+
0.11.1
|
data/coderunner.gemspec
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "coderunner"
|
8
|
+
s.version = "0.11.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Edmund Highcock"]
|
12
|
+
s.date = "2012-10-08"
|
13
|
+
s.description = "CodeRunner is a framework for the automated running and analysis of simulations. It automatically generates any necessary input files, organises the output data and analyses it. Because it is a modular system, it can easily be customised to work with any system and any simulation code. One of its greatest strengths is that it is independent of any one simulation code; thus it can easily plot and compare the data from different codes."
|
14
|
+
s.email = "edmundhighcock@sourceforge.net"
|
15
|
+
s.extensions = ["ext/extconf.rb"]
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"LICENSE.txt",
|
18
|
+
"README.md",
|
19
|
+
"README.rdoc"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
"Gemfile",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.md",
|
26
|
+
"README.rdoc",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"coderunner.gemspec",
|
30
|
+
"ext/code_runner_ext.c",
|
31
|
+
"ext/extconf.rb",
|
32
|
+
"ext/graph_kit.c",
|
33
|
+
"include/code_runner_ext.h",
|
34
|
+
"include/graph_kit.h",
|
35
|
+
"lib/code_runner_extension.rb",
|
36
|
+
"lib/coderunner.rb",
|
37
|
+
"lib/coderunner/class_methods.rb",
|
38
|
+
"lib/coderunner/fortran_namelist.rb",
|
39
|
+
"lib/coderunner/graphs_and_films.rb",
|
40
|
+
"lib/coderunner/heuristic_run_methods.rb",
|
41
|
+
"lib/coderunner/instance_methods.rb",
|
42
|
+
"lib/coderunner/interactive_methods.rb",
|
43
|
+
"lib/coderunner/long_regexen.rb",
|
44
|
+
"lib/coderunner/merged_code_runner.rb",
|
45
|
+
"lib/coderunner/run.rb",
|
46
|
+
"test/helper.rb",
|
47
|
+
"test/test_coderunner.rb"
|
48
|
+
]
|
49
|
+
s.homepage = "http://coderunner.sourceforge.net"
|
50
|
+
s.licenses = ["GPLv3"]
|
51
|
+
s.require_paths = ["lib"]
|
52
|
+
s.rubyforge_project = "coderunner"
|
53
|
+
s.rubygems_version = "1.8.24"
|
54
|
+
s.summary = "A framework for the automated running and analysis of simulations."
|
55
|
+
|
56
|
+
if s.respond_to? :specification_version then
|
57
|
+
s.specification_version = 3
|
58
|
+
|
59
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
60
|
+
s.add_runtime_dependency(%q<graphkit>, [">= 0.2.0"])
|
61
|
+
s.add_runtime_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
62
|
+
s.add_runtime_dependency(%q<gsl>, [">= 1.12.0"])
|
63
|
+
s.add_runtime_dependency(%q<ruby-netcdf>, [">= 0.6.6"])
|
64
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
65
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
66
|
+
s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
|
67
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
68
|
+
else
|
69
|
+
s.add_dependency(%q<graphkit>, [">= 0.2.0"])
|
70
|
+
s.add_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
71
|
+
s.add_dependency(%q<gsl>, [">= 1.12.0"])
|
72
|
+
s.add_dependency(%q<ruby-netcdf>, [">= 0.6.6"])
|
73
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
74
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
75
|
+
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
76
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
77
|
+
end
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<graphkit>, [">= 0.2.0"])
|
80
|
+
s.add_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
81
|
+
s.add_dependency(%q<gsl>, [">= 1.12.0"])
|
82
|
+
s.add_dependency(%q<ruby-netcdf>, [">= 0.6.6"])
|
83
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
84
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
85
|
+
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
86
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#include "code_runner_ext.h"
|
2
|
+
|
3
|
+
|
4
|
+
static VALUE code_runner_ext_hello_world()
|
5
|
+
{
|
6
|
+
printf("Hello world");
|
7
|
+
return Qnil;
|
8
|
+
}
|
9
|
+
void Init_code_runner_ext()
|
10
|
+
{
|
11
|
+
/*printf("HERE!!!");*/
|
12
|
+
ccode_runner_ext = rb_define_class("CodeRunnerExt", rb_cObject);
|
13
|
+
rb_define_method(ccode_runner_ext, "hello_world", code_runner_ext_hello_world, 0);
|
14
|
+
Init_graph_kit();
|
15
|
+
}
|
16
|
+
|
17
|
+
/*printf("HERE!!!");*/
|
data/ext/extconf.rb
ADDED
data/ext/graph_kit.c
ADDED
@@ -0,0 +1,647 @@
|
|
1
|
+
#include "code_runner_ext.h"
|
2
|
+
|
3
|
+
/* RANKS:*/
|
4
|
+
/*0 --> [1]*/
|
5
|
+
/*1 --> [1, 1]*/
|
6
|
+
/*2 --> [1, 1, 1]*/
|
7
|
+
/*3 --> [1, 1, 2]*/
|
8
|
+
/*4 --> [2, 2, 2]*/
|
9
|
+
/*5 --> [2, 2, 2, 2]*/
|
10
|
+
/*6 --> [1, 1, 1, 1]*/
|
11
|
+
/*7 --> [1, 1, 2, 2]*/
|
12
|
+
/*8 --> [1, 1, 1, 3]*/
|
13
|
+
/*9 --> [3, 3, 3, 3]*/
|
14
|
+
|
15
|
+
inline int rank_switch(VALUE data_kit){
|
16
|
+
return FIX2INT(RFCALL_10_ON(
|
17
|
+
data_kit, "rank_c_switch"));
|
18
|
+
}
|
19
|
+
|
20
|
+
void get_data_pointer(VALUE data_kit, VALUE * dp){
|
21
|
+
/*VALUE * dp;*/
|
22
|
+
VALUE * axes;
|
23
|
+
int i, nranks;
|
24
|
+
|
25
|
+
nranks = FIX2INT(RFCALL_10_ON(
|
26
|
+
RFCALL_10_ON(data_kit,"ranks"),
|
27
|
+
"size"));
|
28
|
+
/*dp = ALLOC_N(VALUE, nranks);*/
|
29
|
+
axes = RARRAY_PTR(RFCALL_10_ON(data_kit, "axes_array"));
|
30
|
+
for (i=0;i<nranks;i++)
|
31
|
+
dp[i] = RFCALL_10_ON(axes[i], "data");
|
32
|
+
return;
|
33
|
+
}
|
34
|
+
|
35
|
+
enum tasks {
|
36
|
+
PRINT_POINTS,
|
37
|
+
COUNT_CELLS,
|
38
|
+
PRINT_CELLS,
|
39
|
+
COUNT_CELL_TYPES,
|
40
|
+
PRINT_CELL_TYPES,
|
41
|
+
PRINT_POINT_DATA,
|
42
|
+
PRINT_DIMENSIONS
|
43
|
+
};
|
44
|
+
|
45
|
+
|
46
|
+
void vtk_legacy_data_kit_loop(enum tasks task, FILE * file, VALUE data_kit, int *cell_count, int *number_count){
|
47
|
+
VALUE * data_ptr, *shape_last, *axes, *ranks;
|
48
|
+
int * c_shape_last;
|
49
|
+
int i, j, k, data_size;
|
50
|
+
int ni, nj, nk, nc;
|
51
|
+
int nranks, rank_last;
|
52
|
+
int cell_size;
|
53
|
+
int cell_type;
|
54
|
+
/*int cell_points[8];*/
|
55
|
+
|
56
|
+
axes = RARRAY_PTR(RFCALL_10_ON(data_kit, "axes_array"));
|
57
|
+
ranks = RARRAY_PTR(RFCALL_10_ON(data_kit, "ranks"));
|
58
|
+
/*nranks = FIX2INT(RFCALL_10_ON(ranks,"size"));*/
|
59
|
+
/*nranks = sizeof(ranks)/sizeof(VALUE);*/
|
60
|
+
nranks = FIX2INT(RFCALL_10_ON(
|
61
|
+
RFCALL_10_ON(data_kit,"ranks"),
|
62
|
+
"size"));
|
63
|
+
data_ptr = ALLOCA_N(VALUE, nranks);
|
64
|
+
get_data_pointer(data_kit, data_ptr);
|
65
|
+
/*nranks = sizeof(data_ptr)/sizeof(VALUE);*/
|
66
|
+
/*CR_PINT2("nranks", nranks);*/
|
67
|
+
shape_last = RARRAY_PTR(
|
68
|
+
RFCALL_10_ON(axes[nranks-1], "shape"));
|
69
|
+
CR_INT_ARY_R2C_STACK(
|
70
|
+
RFCALL_10_ON(axes[nranks-1], "shape"),
|
71
|
+
c_shape_last);
|
72
|
+
ni = c_shape_last[0];
|
73
|
+
nj = c_shape_last[1];
|
74
|
+
nk = c_shape_last[2];
|
75
|
+
rank_last = FIX2INT(ranks[nranks-1]);
|
76
|
+
/*CR_PINT2("rank_last", rank_last);*/
|
77
|
+
|
78
|
+
data_size = 1;
|
79
|
+
for(i=0;i<nranks;i++)
|
80
|
+
data_size *= c_shape_last[i];
|
81
|
+
|
82
|
+
|
83
|
+
/*CR_PINT2("data_size", data_size);*/
|
84
|
+
switch(task){
|
85
|
+
case PRINT_POINTS:
|
86
|
+
switch(rank_switch(data_kit)){
|
87
|
+
case 0:
|
88
|
+
for(i=0;i<data_size;i++)
|
89
|
+
fprintf(file, "0 %d %e\n", i,
|
90
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[0], "[]", INT2FIX(i))));
|
91
|
+
break;
|
92
|
+
case 1:
|
93
|
+
for(i=0;i<data_size;i++)
|
94
|
+
fprintf(file, "0 %e %e\n",
|
95
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[0], "[]", INT2FIX(i))),
|
96
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[1], "[]", INT2FIX(i)))
|
97
|
+
);
|
98
|
+
break;
|
99
|
+
case 2: /*[1,1,1]*/
|
100
|
+
case 6: /*[1,1,1,1]*/
|
101
|
+
for(i=0;i<data_size;i++)
|
102
|
+
fprintf(file, "%e %e %e\n",
|
103
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[0], "[]", INT2FIX(i))),
|
104
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[1], "[]", INT2FIX(i))),
|
105
|
+
NUM2DBL( RFCALL_11_ON( data_ptr[2], "[]", INT2FIX(i)))
|
106
|
+
);
|
107
|
+
break;
|
108
|
+
case 3: /*[1,1,2]*/
|
109
|
+
case 7: /*[1,1,2,2]*/
|
110
|
+
for(i=0;i<c_shape_last[0];i++)
|
111
|
+
for(j=0;j<c_shape_last[1];j++)
|
112
|
+
fprintf(file, "%e %e %e\n",
|
113
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[0], i)),
|
114
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[1], j)),
|
115
|
+
NUM2DBL(CR_TELMT_R2(data_ptr[2], i, j))
|
116
|
+
);
|
117
|
+
break;
|
118
|
+
case 4: /*[2,2,2]*/
|
119
|
+
case 5: /*[2,2,2,2]*/
|
120
|
+
for(i=0;i<c_shape_last[0];i++)
|
121
|
+
for(j=0;j<c_shape_last[1];j++)
|
122
|
+
fprintf(file, "%e %e %e\n",
|
123
|
+
NUM2DBL(CR_TELMT_R2(data_ptr[0],i,j)),
|
124
|
+
NUM2DBL(CR_TELMT_R2(data_ptr[1],i,j)),
|
125
|
+
NUM2DBL(CR_TELMT_R2(data_ptr[2],i,j))
|
126
|
+
);
|
127
|
+
break;
|
128
|
+
case 8: /*[1,1,1,3]*/
|
129
|
+
for(i=0;i<c_shape_last[0];i++)
|
130
|
+
for(j=0;j<c_shape_last[1];j++)
|
131
|
+
for(k=0;k<c_shape_last[2];k++)
|
132
|
+
fprintf(file, "%e %e %e\n",
|
133
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[0], i)),
|
134
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[1], j)),
|
135
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[2], k))
|
136
|
+
);
|
137
|
+
break;
|
138
|
+
case 9: /*[3,3,3,3]*/
|
139
|
+
for(i=0;i<c_shape_last[0];i++)
|
140
|
+
for(j=0;j<c_shape_last[1];j++)
|
141
|
+
for(k=0;k<c_shape_last[2];k++)
|
142
|
+
fprintf(file, "%e %e %e\n",
|
143
|
+
NUM2DBL(CR_TELMT_R3(data_ptr[0],i,j,k)),
|
144
|
+
NUM2DBL(CR_TELMT_R3(data_ptr[1],i,j,k)),
|
145
|
+
NUM2DBL(CR_TELMT_R3(data_ptr[2],i,j,k))
|
146
|
+
);
|
147
|
+
break;
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
}
|
152
|
+
break; /*switch(task)*/
|
153
|
+
case COUNT_CELLS:
|
154
|
+
switch (rank_switch(data_kit)){
|
155
|
+
case 0: /*[1]*/
|
156
|
+
case 1: /*[1,1]*/
|
157
|
+
case 2: /*[1,1,1]*/
|
158
|
+
case 6: /*[1,1,1,1]*/
|
159
|
+
*cell_count += c_shape_last[0]-1;
|
160
|
+
*number_count += 3*(c_shape_last[0]-1);
|
161
|
+
break;
|
162
|
+
case 3: /*[1,1,2]*/
|
163
|
+
case 4: /*[2,2,2]*/
|
164
|
+
case 7: /*[1,1,2,2]*/
|
165
|
+
case 5: /*[2,2,2,2]*/
|
166
|
+
cell_size=1;
|
167
|
+
if (ni>1) cell_size*=2;
|
168
|
+
if (nj>1) cell_size*=2;
|
169
|
+
for(i=0;i<c_shape_last[0];i++)
|
170
|
+
for(j=0;j<c_shape_last[1];j++){
|
171
|
+
if (
|
172
|
+
!(
|
173
|
+
(ni == 1 || (i+1) < ni)
|
174
|
+
&&
|
175
|
+
(nj == 1 || (j+1) < nj)
|
176
|
+
)
|
177
|
+
) continue;
|
178
|
+
*cell_count+=1;
|
179
|
+
*number_count+= cell_size;
|
180
|
+
*number_count+=1;
|
181
|
+
|
182
|
+
}
|
183
|
+
break;
|
184
|
+
case 8: /*[1,1,1,3]*/
|
185
|
+
case 9: /*[3,3,3,3]*/
|
186
|
+
cell_size=1;
|
187
|
+
if (ni>1) cell_size*=2;
|
188
|
+
if (nj>1) cell_size*=2;
|
189
|
+
if (nk>1) cell_size*=2;
|
190
|
+
for(i=0;i<c_shape_last[0];i++)
|
191
|
+
for(j=0;j<c_shape_last[1];j++)
|
192
|
+
for(k=0;k<c_shape_last[2];k++){
|
193
|
+
if (
|
194
|
+
!(
|
195
|
+
(ni == 1 || (i+1) < ni)
|
196
|
+
&&
|
197
|
+
(nj == 1 || (j+1) < nj)
|
198
|
+
&&
|
199
|
+
(nk == 1 || (k+1) < nk)
|
200
|
+
)
|
201
|
+
) continue;
|
202
|
+
*cell_count+=1;
|
203
|
+
*number_count+= cell_size;
|
204
|
+
*number_count+=1;
|
205
|
+
|
206
|
+
}
|
207
|
+
break;
|
208
|
+
|
209
|
+
|
210
|
+
}
|
211
|
+
break;
|
212
|
+
case PRINT_CELLS:
|
213
|
+
/*CR_PSTR("HERE!");*/
|
214
|
+
switch (rank_switch(data_kit)){
|
215
|
+
case 0: /*[1]*/
|
216
|
+
case 1: /*[1,1]*/
|
217
|
+
case 2: /*[1,1,1]*/
|
218
|
+
case 6: /*[1,1,1,1]*/
|
219
|
+
for (i=0;i<c_shape_last[0]-1;i++){
|
220
|
+
fprintf(file, "2 %d %d\n", *number_count, ++*number_count);
|
221
|
+
*number_count+=1;
|
222
|
+
}
|
223
|
+
/**cell_count += c_shape_last[0]-1;*/
|
224
|
+
/**number_count += 3*(c_shape_last[0]-1);*/
|
225
|
+
break;
|
226
|
+
case 3: /*[1,1,2]*/
|
227
|
+
case 4: /*[2,2,2]*/
|
228
|
+
case 7: /*[1,1,2,2]*/
|
229
|
+
case 5: /*[2,2,2,2]*/
|
230
|
+
/*cell_size = (ni>1?(nj>1?4:2):1);*/
|
231
|
+
cell_size=1;
|
232
|
+
if (ni>1) cell_size*=2;
|
233
|
+
if (nj>1) cell_size*=2;
|
234
|
+
nc = *number_count;
|
235
|
+
for(i=0;i<c_shape_last[0];i++)
|
236
|
+
for(j=0;j<c_shape_last[1];j++){
|
237
|
+
*number_count+=1;
|
238
|
+
if (
|
239
|
+
!(
|
240
|
+
(ni == 1 || (i+1) < ni)
|
241
|
+
&&
|
242
|
+
(nj == 1 || (j+1) < nj)
|
243
|
+
)
|
244
|
+
) continue;
|
245
|
+
/**cell_count+=1;*/
|
246
|
+
/**number_count+= cell_size; */
|
247
|
+
if (ni>1){
|
248
|
+
if (nj>1)
|
249
|
+
fprintf(file,
|
250
|
+
"4 %d %d %d %d\n",
|
251
|
+
i*nj+j+nc,
|
252
|
+
i*(nj)+j+1+nc,
|
253
|
+
(i+1)*nj+j+1+nc,
|
254
|
+
(i+1)*nj+j+nc);
|
255
|
+
else
|
256
|
+
fprintf(file,
|
257
|
+
"2 %d %d\n",
|
258
|
+
i*nj+j+nc,
|
259
|
+
(i+1)*nj+j+nc);
|
260
|
+
}
|
261
|
+
else{
|
262
|
+
if (nj>1)
|
263
|
+
fprintf(file,
|
264
|
+
"2 %d %d\n",
|
265
|
+
i*nj+j+nc,
|
266
|
+
i*(nj)+j+1+nc);
|
267
|
+
else
|
268
|
+
fprintf(file, "1 %d\n", i*nj+j+nc);
|
269
|
+
}
|
270
|
+
|
271
|
+
}
|
272
|
+
break;
|
273
|
+
case 8: /*[1,1,1,3]*/
|
274
|
+
case 9: /*[3,3,3,3]*/
|
275
|
+
/*CR_PSTR("HERE!2");*/
|
276
|
+
cell_size=1;
|
277
|
+
if (ni>1) cell_size*=2;
|
278
|
+
if (nj>1) cell_size*=2;
|
279
|
+
if (nk>1) cell_size*=2;
|
280
|
+
nc = *number_count;
|
281
|
+
/*CR_PINT2("nc", nc);*/
|
282
|
+
/*nc = 0;*/
|
283
|
+
for(i=0;i<c_shape_last[0];i++)
|
284
|
+
for(j=0;j<c_shape_last[1];j++)
|
285
|
+
for(k=0;k<c_shape_last[2];k++){
|
286
|
+
*number_count+=1;
|
287
|
+
if (
|
288
|
+
!(
|
289
|
+
(ni == 1 || (i+1) < ni)
|
290
|
+
&&
|
291
|
+
(nj == 1 || (j+1) < nj)
|
292
|
+
&&
|
293
|
+
(nk == 1 || (k+1) < nk)
|
294
|
+
)
|
295
|
+
) continue;
|
296
|
+
/**cell_count+=1;*/
|
297
|
+
/**number_count+=1;*/
|
298
|
+
if(ni>1){
|
299
|
+
if(nj>1){
|
300
|
+
if(nk>1)
|
301
|
+
fprintf(file,
|
302
|
+
"8 %d %d %d %d %d %d %d %d\n",
|
303
|
+
i*(nj*nk)+j*nk+k+nc,
|
304
|
+
i*(nj*nk)+j*nk+k+1+nc,
|
305
|
+
i*(nj*nk)+(j+1)*nk+k+nc,
|
306
|
+
i*(nj*nk)+(j+1)*nk+k+1+nc,
|
307
|
+
(i+1)*(nj*nk)+j*nk+k+nc,
|
308
|
+
(i+1)*(nj*nk)+j*nk+k+1+nc,
|
309
|
+
(i+1)*(nj*nk)+(j+1)*nk+k+nc,
|
310
|
+
(i+1)*(nj*nk)+(j+1)*nk+k+1+nc
|
311
|
+
);
|
312
|
+
else
|
313
|
+
fprintf(file,
|
314
|
+
"4 %d %d %d %d\n",
|
315
|
+
i*(nj*nk)+j*nk+k+nc,
|
316
|
+
i*(nj*nk)+(j+1)*nk+k+nc,
|
317
|
+
|
318
|
+
(i+1)*(nj*nk)+(j+1)*nk+k+nc,
|
319
|
+
(i+1)*(nj*nk)+j*nk+k+nc
|
320
|
+
);
|
321
|
+
}
|
322
|
+
else{
|
323
|
+
if(nk>1)
|
324
|
+
fprintf(file,
|
325
|
+
"4 %d %d %d %d\n",
|
326
|
+
i*(nj*nk)+j*nk+k+nc,
|
327
|
+
i*(nj*nk)+j*nk+k+1+nc,
|
328
|
+
|
329
|
+
(i+1)*(nj*nk)+j*nk+k+1+nc,
|
330
|
+
(i+1)*(nj*nk)+j*nk+k+nc
|
331
|
+
);
|
332
|
+
else
|
333
|
+
fprintf(file,
|
334
|
+
"2 %d %d\n",
|
335
|
+
i*(nj*nk)+j*nk+k+nc,
|
336
|
+
(i+1)*(nj*nk)+j*nk+k+nc
|
337
|
+
);
|
338
|
+
}
|
339
|
+
}
|
340
|
+
else{
|
341
|
+
if(nj>1){
|
342
|
+
if(nk>1)
|
343
|
+
fprintf(file,
|
344
|
+
"4 %d %d %d %d\n",
|
345
|
+
i*(nj*nk)+j*nk+k+nc,
|
346
|
+
i*(nj*nk)+j*nk+k+1+nc,
|
347
|
+
|
348
|
+
i*(nj*nk)+(j+1)*nk+k+1+nc,
|
349
|
+
i*(nj*nk)+(j+1)*nk+k+nc
|
350
|
+
);
|
351
|
+
else
|
352
|
+
fprintf(file,
|
353
|
+
"2 %d %d\n",
|
354
|
+
i*(nj*nk)+j*nk+k+nc,
|
355
|
+
i*(nj*nk)+(j+1)*nk+k+nc
|
356
|
+
);
|
357
|
+
}
|
358
|
+
else{
|
359
|
+
if(nk>1)
|
360
|
+
fprintf(file,
|
361
|
+
"2 %d %d\n",
|
362
|
+
i*(nj*nk)+j*nk+k+nc,
|
363
|
+
i*(nj*nk)+j*nk+k+1+nc
|
364
|
+
);
|
365
|
+
else
|
366
|
+
fprintf(file,
|
367
|
+
"1 %d\n",
|
368
|
+
i*(nj*nk)+j*nk+k+nc
|
369
|
+
);
|
370
|
+
}
|
371
|
+
}
|
372
|
+
|
373
|
+
}
|
374
|
+
break;
|
375
|
+
|
376
|
+
|
377
|
+
} /* end switch(rank_switch))*/
|
378
|
+
break;
|
379
|
+
case PRINT_CELL_TYPES:
|
380
|
+
switch (rank_switch(data_kit)){
|
381
|
+
case 0: /*[1]*/
|
382
|
+
case 1: /*[1,1]*/
|
383
|
+
case 2: /*[1,1,1]*/
|
384
|
+
case 6: /*[1,1,1,1]*/
|
385
|
+
for (i=0;i<c_shape_last[0]-1;i++)
|
386
|
+
fprintf(file, "3\n");
|
387
|
+
/**cell_count += c_shape_last[0]-1;*/
|
388
|
+
/**number_count += 3*(c_shape_last[0]-1);*/
|
389
|
+
break;
|
390
|
+
case 3: /*[1,1,2]*/
|
391
|
+
case 4: /*[2,2,2]*/
|
392
|
+
case 7: /*[1,1,2,2]*/
|
393
|
+
case 5: /*[2,2,2,2]*/
|
394
|
+
/*cell_size = (ni>1?(nj>1?4:2):1);*/
|
395
|
+
cell_size=1;
|
396
|
+
if (ni>1) cell_size*=2;
|
397
|
+
if (nj>1) cell_size*=2;
|
398
|
+
switch(cell_size){
|
399
|
+
case 4:
|
400
|
+
cell_type = 7; break;
|
401
|
+
case 2:
|
402
|
+
cell_type = 3; break;
|
403
|
+
case 1:
|
404
|
+
cell_type = 1; break;
|
405
|
+
}
|
406
|
+
|
407
|
+
|
408
|
+
for(i=0;i<c_shape_last[0];i++)
|
409
|
+
for(j=0;j<c_shape_last[1];j++){
|
410
|
+
if (
|
411
|
+
!(
|
412
|
+
(ni == 1 || (i+1) < ni)
|
413
|
+
&&
|
414
|
+
(nj == 1 || (j+1) < nj)
|
415
|
+
)
|
416
|
+
) continue;
|
417
|
+
/**cell_count+=1;*/
|
418
|
+
/**number_count+= cell_size; */
|
419
|
+
/**number_count+=1;*/
|
420
|
+
fprintf(file, "%d\n", cell_type);
|
421
|
+
|
422
|
+
}
|
423
|
+
break;
|
424
|
+
case 8: /*[1,1,1,3]*/
|
425
|
+
case 9: /*[3,3,3,3]*/
|
426
|
+
cell_size=1;
|
427
|
+
if (ni>1) cell_size*=2;
|
428
|
+
if (nj>1) cell_size*=2;
|
429
|
+
if (nk>1) cell_size*=2;
|
430
|
+
switch(cell_size){
|
431
|
+
case 8:
|
432
|
+
cell_type = 11; break; /*3D cells, see www.vtk.org/VTK/img/file-formats.pdf*/
|
433
|
+
case 4:
|
434
|
+
cell_type = 7; break; /*Polygons*/
|
435
|
+
case 2:
|
436
|
+
cell_type = 3; break; /*Lines*/
|
437
|
+
case 1:
|
438
|
+
cell_type = 1; break; /*Points*/
|
439
|
+
}
|
440
|
+
for(i=0;i<c_shape_last[0];i++)
|
441
|
+
for(j=0;j<c_shape_last[1];j++)
|
442
|
+
for(k=0;k<c_shape_last[2];k++){
|
443
|
+
if (
|
444
|
+
!(
|
445
|
+
(ni == 1 || (i+1) < ni)
|
446
|
+
&&
|
447
|
+
(nj == 1 || (j+1) < nj)
|
448
|
+
&&
|
449
|
+
(nk == 1 || (k+1) < nk)
|
450
|
+
)
|
451
|
+
) continue;
|
452
|
+
fprintf(file, "%d\n", cell_type);
|
453
|
+
|
454
|
+
}
|
455
|
+
break;
|
456
|
+
|
457
|
+
|
458
|
+
} /*end switch rank_switch*/
|
459
|
+
break;
|
460
|
+
case PRINT_POINT_DATA:
|
461
|
+
switch (rank_switch(data_kit)){
|
462
|
+
case 0: /*[1]*/
|
463
|
+
case 1: /*[1,1]*/
|
464
|
+
case 2: /*[1,1,1]*/
|
465
|
+
for (i=0;i<c_shape_last[0]-1;i++)
|
466
|
+
fprintf(file, "%d\n", 0);
|
467
|
+
break;
|
468
|
+
case 6: /*[1,1,1,1]*/
|
469
|
+
for (i=0;i<c_shape_last[0]-1;i++)
|
470
|
+
fprintf(file, "%e\n",
|
471
|
+
NUM2DBL(CR_TELMT_R1(data_ptr[3], i)));
|
472
|
+
break;
|
473
|
+
case 3: /*[1,1,2]*/
|
474
|
+
case 4: /*[2,2,2]*/
|
475
|
+
for(i=0;i<c_shape_last[0];i++)
|
476
|
+
for(j=0;j<c_shape_last[1];j++)
|
477
|
+
fprintf(file, "%d\n", 0);
|
478
|
+
break;
|
479
|
+
case 7: /*[1,1,2,2]*/
|
480
|
+
case 5: /*[2,2,2,2]*/
|
481
|
+
|
482
|
+
for(i=0;i<c_shape_last[0];i++)
|
483
|
+
for(j=0;j<c_shape_last[1];j++)
|
484
|
+
fprintf(file, "%e\n",
|
485
|
+
NUM2DBL(CR_TELMT_R2(data_ptr[3],i,j)));
|
486
|
+
|
487
|
+
|
488
|
+
break;
|
489
|
+
case 8: /*[1,1,1,3]*/
|
490
|
+
case 9: /*[3,3,3,3]*/
|
491
|
+
for(i=0;i<c_shape_last[0];i++)
|
492
|
+
for(j=0;j<c_shape_last[1];j++)
|
493
|
+
for(k=0;k<c_shape_last[2];k++)
|
494
|
+
fprintf(file, "%e\n",
|
495
|
+
NUM2DBL(CR_TELMT_R3(data_ptr[3],i,j,k))
|
496
|
+
);
|
497
|
+
|
498
|
+
break;
|
499
|
+
|
500
|
+
|
501
|
+
} /*end switch rank_switch*/
|
502
|
+
break;
|
503
|
+
case PRINT_DIMENSIONS:
|
504
|
+
switch (rank_switch(data_kit)){
|
505
|
+
case 8: /*[1,1,1,3]*/
|
506
|
+
case 9: /*[3,3,3,3]*/
|
507
|
+
fprintf(file, "DIMENSIONS %d %d %d\n", ni, nj, nj);
|
508
|
+
} /*end switch rank_switch*/
|
509
|
+
|
510
|
+
} /* end switch(task)*/
|
511
|
+
|
512
|
+
return;
|
513
|
+
}
|
514
|
+
|
515
|
+
static VALUE graph_kit_to_vtk_legacy_2(VALUE graph_kit, VALUE options_hash)
|
516
|
+
{
|
517
|
+
VALUE file_name;
|
518
|
+
VALUE data;
|
519
|
+
char * c_file_name;
|
520
|
+
int npoints, data_size;
|
521
|
+
int i, j, k;
|
522
|
+
int cell_count, number_count, dummy;
|
523
|
+
FILE *file;
|
524
|
+
VALUE dirname;
|
525
|
+
VALUE data_kit0;
|
526
|
+
|
527
|
+
/*CR_PSTR("Calling graph_kit_to_vtk_legacy_2");*/
|
528
|
+
Check_Type(options_hash, T_HASH);
|
529
|
+
file_name = CR_HKS(options_hash, "file_name");
|
530
|
+
Check_Type(file_name, T_STRING);
|
531
|
+
|
532
|
+
data = RFCALL_10_ON(graph_kit, "data");
|
533
|
+
data_size = FIX2INT(RFCALL_10_ON(data, "size"));
|
534
|
+
npoints = 0;
|
535
|
+
|
536
|
+
for (i=0;i<data_size;i++){
|
537
|
+
/*rb_p(RARRAY_PTR(data)[i]);*/
|
538
|
+
npoints = npoints +
|
539
|
+
FIX2INT(
|
540
|
+
RFCALL_10_ON(
|
541
|
+
RARRAY_PTR(data)[i], "vtk_legacy_size"
|
542
|
+
)
|
543
|
+
);
|
544
|
+
}
|
545
|
+
|
546
|
+
/*CR_PINT2("npoints", npoints);*/
|
547
|
+
|
548
|
+
/*dirname = rb_funcall(*/
|
549
|
+
/*RGET_CLASS_TOP("File"),*/
|
550
|
+
/*rb_intern("dirname"),*/
|
551
|
+
/*file_name);*/
|
552
|
+
|
553
|
+
/*if (!RTEST(*/
|
554
|
+
/*(rb_funcall(*/
|
555
|
+
/*RGET_CLASS_TOP("FileTest"),*/
|
556
|
+
/*rb_intern("exist?"),*/
|
557
|
+
/*dirname*/
|
558
|
+
/*))*/
|
559
|
+
/*))*/
|
560
|
+
/*rb_raise(RGET_CLASS_TOP("StandardError"), "Directory does not exist");*/
|
561
|
+
|
562
|
+
|
563
|
+
c_file_name = RSTRING_PTR(file_name);
|
564
|
+
file = fopen(c_file_name, "w");
|
565
|
+
fprintf(file, "# vtk DataFile Version 3.0\n");
|
566
|
+
fprintf(file, "vtk output\n");
|
567
|
+
fprintf(file, "ASCII\n");
|
568
|
+
|
569
|
+
if (0 && data_size==1)
|
570
|
+
/* Can write smaller, more efficient files,
|
571
|
+
* but not possible to volume render them
|
572
|
+
* -- work in progress!
|
573
|
+
* Would also need to make x vary fastest
|
574
|
+
* in output*/
|
575
|
+
{
|
576
|
+
data_kit0 = RARRAY_PTR(data)[0];
|
577
|
+
switch(rank_switch(data_kit0)){
|
578
|
+
case 9: /* [3,3,3,3]*/
|
579
|
+
fprintf(file, "DATASET STRUCTURED_GRID\n");
|
580
|
+
vtk_legacy_data_kit_loop(
|
581
|
+
PRINT_DIMENSIONS,
|
582
|
+
file, data_kit0, &dummy, &dummy);
|
583
|
+
cell_count = 0;
|
584
|
+
number_count = 0;
|
585
|
+
vtk_legacy_data_kit_loop(
|
586
|
+
COUNT_CELLS,
|
587
|
+
file, data_kit0, &cell_count, &dummy);
|
588
|
+
fprintf(file, "POINTS %d float\n", npoints);
|
589
|
+
vtk_legacy_data_kit_loop(
|
590
|
+
PRINT_POINTS,
|
591
|
+
file, data_kit0, &dummy, &dummy);
|
592
|
+
fprintf(file, "\nCELL_DATA %d\n", cell_count);
|
593
|
+
}
|
594
|
+
}
|
595
|
+
else /*Have to treat the most general case*/
|
596
|
+
{
|
597
|
+
fprintf(file, "DATASET UNSTRUCTURED_GRID\n");
|
598
|
+
fprintf(file, "POINTS %d float\n", npoints);
|
599
|
+
for (i=0;i<data_size;i++)
|
600
|
+
vtk_legacy_data_kit_loop(
|
601
|
+
PRINT_POINTS,
|
602
|
+
file, RARRAY_PTR(data)[i],
|
603
|
+
&dummy, &dummy);
|
604
|
+
cell_count = 0;
|
605
|
+
number_count = 0;
|
606
|
+
for (i=0;i<data_size;i++)
|
607
|
+
vtk_legacy_data_kit_loop(
|
608
|
+
COUNT_CELLS,
|
609
|
+
file, RARRAY_PTR(data)[i],
|
610
|
+
&cell_count, &number_count);
|
611
|
+
fprintf(file, "\nCELLS %d %d\n", cell_count, number_count);
|
612
|
+
number_count = 0;
|
613
|
+
for (i=0;i<data_size;i++)
|
614
|
+
vtk_legacy_data_kit_loop(
|
615
|
+
PRINT_CELLS,
|
616
|
+
file, RARRAY_PTR(data)[i],
|
617
|
+
&dummy, &number_count);
|
618
|
+
fprintf(file, "\nCELL_TYPES %d\n", cell_count);
|
619
|
+
for (i=0;i<data_size;i++)
|
620
|
+
vtk_legacy_data_kit_loop(
|
621
|
+
PRINT_CELL_TYPES,
|
622
|
+
file, RARRAY_PTR(data)[i],
|
623
|
+
&dummy, &dummy);
|
624
|
+
}
|
625
|
+
fprintf(file, "\nPOINT_DATA %d\n", npoints);
|
626
|
+
fprintf(file, "SCALARS myvals float\n");
|
627
|
+
fprintf(file, "LOOKUP_TABLE default\n");
|
628
|
+
for (i=0;i<data_size;i++)
|
629
|
+
vtk_legacy_data_kit_loop(
|
630
|
+
PRINT_POINT_DATA,
|
631
|
+
file, RARRAY_PTR(data)[i],
|
632
|
+
&dummy, &dummy);
|
633
|
+
fclose(file);
|
634
|
+
return Qnil;
|
635
|
+
}
|
636
|
+
|
637
|
+
|
638
|
+
void Init_graph_kit()
|
639
|
+
{
|
640
|
+
ID graph_kit_class_id;
|
641
|
+
graph_kit_class_id = rb_intern("GraphKit");
|
642
|
+
cgraph_kit = rb_const_get(rb_cObject, graph_kit_class_id);
|
643
|
+
/*cgraph_kit = rb_define_class("GraphKit", rb_cObject);*/
|
644
|
+
/*("GraphKit", rb_cObject);*/
|
645
|
+
rb_define_method(cgraph_kit, "to_vtk_legacy_fast", graph_kit_to_vtk_legacy_2, 1);
|
646
|
+
|
647
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#include "ruby/ruby.h"
|
2
|
+
#include "graph_kit.h"
|
3
|
+
|
4
|
+
#define RGET_CLASS(class_over, x) (rb_const_get(class_over, rb_intern(x)))
|
5
|
+
#define RGET_CLASS_TOP(x) (RGET_CLASS(rb_cObject, x))
|
6
|
+
|
7
|
+
/* Call ruby functions with 0, 1, 2 etc arguments*/
|
8
|
+
#define RFCALL_10(name) (rb_funcall(self, rb_intern(name), 0))
|
9
|
+
#define RFCALL_10_ON(obj, name) (rb_funcall(obj, rb_intern(name), 0))
|
10
|
+
#define RFCALL_11(name, arg1) (rb_funcall(self, rb_intern(name), 1, arg1))
|
11
|
+
#define RFCALL_11_ON(obj, name, arg1) (rb_funcall(obj, rb_intern(name), 1, arg1))
|
12
|
+
#define RFCALL_12(name, arg1, arg2) (rb_funcall(self, rb_intern(name), 1, arg1, arg2))
|
13
|
+
#define RFCALL_12_ON(obj, name, arg1, arg2) (rb_funcall(obj, rb_intern(name), 1, arg1, arg2))
|
14
|
+
|
15
|
+
/* Access an element of an array or hash*/
|
16
|
+
#define CR_ELEMENT_ACCESS(recvr, key) ( \
|
17
|
+
RFCALL_11_ON(recvr, "[]", key) \
|
18
|
+
)
|
19
|
+
|
20
|
+
/* Get element of hash corresponding to a key which is a symbol made from cstr*/
|
21
|
+
#define CR_HKS(hash, cstr) (CR_ELEMENT_ACCESS(hash, ID2SYM(rb_intern(cstr))))
|
22
|
+
|
23
|
+
/* Get element of a rank 1,2 or 3 tensor respectively */
|
24
|
+
#define CR_TELMT_R1(tensor, i)(rb_funcall(tensor, rb_intern("[]"), 1, INT2FIX(i)))
|
25
|
+
#define CR_TELMT_R2(tensor, i, j)(rb_funcall(tensor, rb_intern("[]"), 2, INT2FIX(i), INT2FIX(j)))
|
26
|
+
#define CR_TELMT_R3(tensor, i, j, k)(rb_funcall(tensor, rb_intern("[]"), 3, INT2FIX(i), INT2FIX(j), INT2FIX(k)))
|
27
|
+
|
28
|
+
/*Constructors for ruby ranges*/
|
29
|
+
#define CR_RANGE_INC(start, end) (rb_funcall(RGET_CLASS_TOP("Range"), rb_intern("new"), 2, INT2FIX(start), INT2FIX(end)))
|
30
|
+
#define CR_RANGE_EXC(start, end) (rb_funcall(RGET_CLASS_TOP("Range"), rb_intern("new"), 3, INT2FIX(start), INT2FIX(end), Qtrue))
|
31
|
+
|
32
|
+
/*Allocates an integer array on the heap
|
33
|
+
with values of array. int_ptr should be
|
34
|
+
an unallocated int*. array should not
|
35
|
+
contain anything except ints. */
|
36
|
+
#define CR_INT_ARY_R2C_STACK( array,int_ptr)\
|
37
|
+
{ int cr_internal_xaa12; \
|
38
|
+
cr_internal_xaa12 = RARRAY_LEN(array); \
|
39
|
+
int_ptr = ALLOCA_N(int, cr_internal_xaa12);\
|
40
|
+
int cr_internal_xaa11;\
|
41
|
+
for (cr_internal_xaa11=0;\
|
42
|
+
cr_internal_xaa11< cr_internal_xaa12;\
|
43
|
+
cr_internal_xaa11++)\
|
44
|
+
int_ptr[cr_internal_xaa11] = \
|
45
|
+
FIX2INT(RARRAY_PTR(array)[cr_internal_xaa11]);\
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
/*Allocates an integer array on the heap
|
50
|
+
with values of array. int_ptr should be
|
51
|
+
an unallocated int*. array should not
|
52
|
+
contain anything except ints; this is
|
53
|
+
checked in this macro. */
|
54
|
+
#define CR_INT_ARY_R2C_STACK_TCHECK( array,int_ptr)\
|
55
|
+
{ int cr_internal_xaa12; \
|
56
|
+
cr_internal_xaa12 = RARRAY_LEN(array); \
|
57
|
+
int_ptr = ALLOCA_N(int, cr_internal_xaa12);\
|
58
|
+
int cr_internal_xaa11;\
|
59
|
+
for (cr_internal_xaa11=0;\
|
60
|
+
cr_internal_xaa11< cr_internal_xaa12;\
|
61
|
+
cr_internal_xaa11++)\
|
62
|
+
int_ptr[cr_internal_xaa11] = \
|
63
|
+
NUM2INT(RARRAY_PTR(array)[cr_internal_xaa11]);\
|
64
|
+
}
|
65
|
+
|
66
|
+
#define CR_STR(c_str)(rb_str_new2(c_str))
|
67
|
+
#define CR_PSTR(c_str)(rb_p(CR_STR(c_str)))
|
68
|
+
#define CR_PINT(integer)(rb_p(INT2FIX(integer)));
|
69
|
+
#define CR_PINT2(name, integer){CR_PSTR(name);rb_p(INT2FIX(integer));};
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
static VALUE ccode_runner;
|
74
|
+
static VALUE ccode_runner_gs2;
|
75
|
+
static VALUE ccode_runner_ext;
|
76
|
+
/*void Init_code_runner_ext();*/
|
data/include/graph_kit.h
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require('code_runner_ext')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coderunner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,72 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: graphkit
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.2.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.2.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rubyhacks
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.1.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.1.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: gsl
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.12.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.12.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: ruby-netcdf
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.6
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.6
|
14
78
|
- !ruby/object:Gem::Dependency
|
15
79
|
name: shoulda
|
16
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +147,8 @@ description: CodeRunner is a framework for the automated running and analysis of
|
|
83
147
|
the data from different codes.
|
84
148
|
email: edmundhighcock@sourceforge.net
|
85
149
|
executables: []
|
86
|
-
extensions:
|
150
|
+
extensions:
|
151
|
+
- ext/extconf.rb
|
87
152
|
extra_rdoc_files:
|
88
153
|
- LICENSE.txt
|
89
154
|
- README.md
|
@@ -96,6 +161,13 @@ files:
|
|
96
161
|
- README.rdoc
|
97
162
|
- Rakefile
|
98
163
|
- VERSION
|
164
|
+
- coderunner.gemspec
|
165
|
+
- ext/code_runner_ext.c
|
166
|
+
- ext/extconf.rb
|
167
|
+
- ext/graph_kit.c
|
168
|
+
- include/code_runner_ext.h
|
169
|
+
- include/graph_kit.h
|
170
|
+
- lib/code_runner_extension.rb
|
99
171
|
- lib/coderunner.rb
|
100
172
|
- lib/coderunner/class_methods.rb
|
101
173
|
- lib/coderunner/fortran_namelist.rb
|
@@ -123,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
195
|
version: '0'
|
124
196
|
segments:
|
125
197
|
- 0
|
126
|
-
hash: -
|
198
|
+
hash: -4053468436435077135
|
127
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
200
|
none: false
|
129
201
|
requirements:
|