decc_2050_model 3.5.0 → 3.5.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.
- checksums.yaml +4 -4
- data/README.markdown +3 -3
- data/ext/Rakefile +5 -5
- data/ext/{decc_2050_model.c → model.c} +22 -4
- data/lib/decc_2050_model.rb +6 -7
- data/lib/model.rb +7 -0
- data/lib/{decc_2050_model/decc_2050_model.rb → model/model.rb} +13 -13
- data/lib/{decc_2050_model → model}/model_alternative.rb +0 -0
- data/lib/{decc_2050_model → model}/model_choice.rb +0 -0
- data/lib/{decc_2050_model/decc_2050_model_result.rb → model/model_result.rb} +5 -5
- data/lib/{decc_2050_model → model}/model_structure.rb +3 -3
- data/lib/{decc_2050_model/decc_2050_model_utilities.rb → model/model_utilities.rb} +1 -1
- data/lib/model/model_version.rb +1 -0
- data/test/{create_decc_2050_model_result.rb → create_model_result.rb} +4 -4
- data/test/{test_decc_2050_model.rb → test_model.rb} +6 -6
- data/test/{test_decc_2050_model_result.rb → test_model_result.rb} +4 -4
- metadata +19 -17
- data/lib/decc_2050_model/decc_2050_model_version.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a61c1668f61f916a1a6f625d1222af61b07f9681
|
4
|
+
data.tar.gz: 232abaecae5eae78d80c8a4c2d99f6e16eefd2a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1c32da0e29f3994976ae1fba5fb6768ad87e5d07e52c16ec75f9f92096a907183954a26400ee46e4785d53b4ba5963b41c864a1a187cc2999c4e230ad3d85aa
|
7
|
+
data.tar.gz: e42a747d886b7f24435d48cff62cc3803d85245daea2beb12edd43c7391db7e96c6b7cb66602114a58b5546187fc967d37fbf087cb27ee6ddc22341da93d7fd8
|
data/README.markdown
CHANGED
@@ -30,19 +30,19 @@ First of all, you need to be working on the github version of the code, not the
|
|
30
30
|
|
31
31
|
git clone http://github.com/decc/decc_2050_model
|
32
32
|
|
33
|
-
Then put the new spreadsheet in spreadsheet/
|
33
|
+
Then put the new spreadsheet in spreadsheet/model.xlsx
|
34
34
|
|
35
35
|
Then, from the top directory of the gem:
|
36
36
|
|
37
37
|
bundle
|
38
38
|
bundle exec rake
|
39
39
|
|
40
|
-
The next step is to check whether Rakefile, lib/
|
40
|
+
The next step is to check whether Rakefile, lib/model/_model_result.rb and lib/model/model_structure.rb need to be altered so that they
|
41
41
|
pick up the correct places in the underlying excel.
|
42
42
|
|
43
43
|
The final stage is to build and install the new gem:
|
44
44
|
|
45
|
-
gem build
|
45
|
+
gem build model.gemspec
|
46
46
|
gem install decc_2050_model-<version>.gem
|
47
47
|
|
48
48
|
... where <version> is the version number of the gem file that was created in the folder.
|
data/ext/Rakefile
CHANGED
@@ -6,10 +6,10 @@ COMPILER = "gcc"
|
|
6
6
|
COMPILE_FLAGS = "-fPIC"
|
7
7
|
SHARED_LIBRARY_FLAGS = "-shared -fPIC"
|
8
8
|
|
9
|
-
OUTPUT = FFI.map_library_name "
|
10
|
-
OUTPUT_DIR = "../lib/
|
11
|
-
SOURCE = "
|
12
|
-
OBJECT = "
|
9
|
+
OUTPUT = FFI.map_library_name "model"
|
10
|
+
OUTPUT_DIR = "../lib/model/"
|
11
|
+
SOURCE = "model.c"
|
12
|
+
OBJECT = "model.o"
|
13
13
|
|
14
14
|
task :default => [:build]
|
15
15
|
|
@@ -26,4 +26,4 @@ file OBJECT => SOURCE do
|
|
26
26
|
puts "Building #{SOURCE}"
|
27
27
|
puts "Note that this is a really large c file, it may take tens of minutes to compile."
|
28
28
|
sh "#{COMPILER} #{COMPILE_FLAGS} -o #{OBJECT} -c #{SOURCE}"
|
29
|
-
end
|
29
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// /Users/tamc/Documents/2050/decc_2050_model/spreadsheet/
|
1
|
+
// /Users/tamc/Documents/2050/decc_2050_model/spreadsheet/model.xlsx approximately translated into C
|
2
2
|
// First we have c versions of all the excel functions that we know
|
3
3
|
#include <stdio.h>
|
4
4
|
#include <assert.h>
|
@@ -62,6 +62,7 @@ static ExcelValue hlookup(ExcelValue lookup_value_v,ExcelValue lookup_table_v, E
|
|
62
62
|
static ExcelValue iferror(ExcelValue value, ExcelValue value_if_error);
|
63
63
|
static ExcelValue excel_index(ExcelValue array_v, ExcelValue row_number_v, ExcelValue column_number_v);
|
64
64
|
static ExcelValue excel_index_2(ExcelValue array_v, ExcelValue row_number_v);
|
65
|
+
static ExcelValue excel_isnumber(ExcelValue number);
|
65
66
|
static ExcelValue large(ExcelValue array_v, ExcelValue k_v);
|
66
67
|
static ExcelValue left(ExcelValue string_v, ExcelValue number_of_characters_v);
|
67
68
|
static ExcelValue left_1(ExcelValue string_v);
|
@@ -505,6 +506,14 @@ static ExcelValue not_equal(ExcelValue a_v, ExcelValue b_v) {
|
|
505
506
|
return result;
|
506
507
|
}
|
507
508
|
|
509
|
+
static ExcelValue excel_isnumber(ExcelValue potential_number) {
|
510
|
+
if(potential_number.type == ExcelNumber) {
|
511
|
+
return TRUE;
|
512
|
+
} else {
|
513
|
+
return FALSE;
|
514
|
+
}
|
515
|
+
}
|
516
|
+
|
508
517
|
static ExcelValue excel_if(ExcelValue condition, ExcelValue true_case, ExcelValue false_case ) {
|
509
518
|
CHECK_FOR_PASSED_ERROR(condition)
|
510
519
|
|
@@ -2590,6 +2599,15 @@ int test_functions() {
|
|
2590
2599
|
assert(rank(THREE, rank_2_v, ZERO).type == ExcelError);
|
2591
2600
|
|
2592
2601
|
|
2602
|
+
// Test the ISNUMBER function
|
2603
|
+
assert(excel_isnumber(ONE).type == ExcelBoolean);
|
2604
|
+
assert(excel_isnumber(ONE).number == 1);
|
2605
|
+
assert(excel_isnumber(BLANK).type == ExcelBoolean);
|
2606
|
+
assert(excel_isnumber(BLANK).number == 0);
|
2607
|
+
assert(excel_isnumber(new_excel_string("Hello")).type == ExcelBoolean);
|
2608
|
+
assert(excel_isnumber(new_excel_string("Hello")).number == 0);
|
2609
|
+
assert(excel_isnumber(TRUE).type == ExcelBoolean);
|
2610
|
+
assert(excel_isnumber(TRUE).number == 0);
|
2593
2611
|
|
2594
2612
|
// Release memory
|
2595
2613
|
free_all_allocated_memory();
|
@@ -2605,7 +2623,7 @@ int main() {
|
|
2605
2623
|
// Start of the file specific functions
|
2606
2624
|
|
2607
2625
|
// definitions
|
2608
|
-
static ExcelValue ORIGINAL_EXCEL_FILENAME = {.type = ExcelString, .string = "/Users/tamc/Documents/2050/decc_2050_model/spreadsheet/
|
2626
|
+
static ExcelValue ORIGINAL_EXCEL_FILENAME = {.type = ExcelString, .string = "/Users/tamc/Documents/2050/decc_2050_model/spreadsheet/model.xlsx" };
|
2609
2627
|
static ExcelValue _common0();
|
2610
2628
|
static ExcelValue _common1();
|
2611
2629
|
static ExcelValue _common2();
|
@@ -65187,7 +65205,7 @@ void reset() {
|
|
65187
65205
|
};
|
65188
65206
|
|
65189
65207
|
// starting the value constants
|
65190
|
-
static ExcelValue C1 = {.type = ExcelString, .string = "Version 3.5.
|
65208
|
+
static ExcelValue C1 = {.type = ExcelString, .string = "Version 3.5.1"};
|
65191
65209
|
static ExcelValue C2 = {.type = ExcelString, .string = "Doesn't tackle climate change (All at level 1)"};
|
65192
65210
|
static ExcelValue C3 = {.type = ExcelString, .string = "Maximium demand, no supply"};
|
65193
65211
|
static ExcelValue C4 = {.type = ExcelString, .string = "Maximum supply, no demand"};
|
@@ -211269,7 +211287,7 @@ void set_control_e32(ExcelValue newValue) { variable_set[6276] = 1; control_e32_
|
|
211269
211287
|
ExcelValue control_f32() {
|
211270
211288
|
static ExcelValue result;
|
211271
211289
|
if(variable_set[6277] == 1) { return result;}
|
211272
|
-
result =
|
211290
|
+
result = C46;
|
211273
211291
|
variable_set[6277] = 1;
|
211274
211292
|
return result;
|
211275
211293
|
}
|
data/lib/decc_2050_model.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
require_relative
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require_relative "decc_2050_model/decc_2050_model_version"
|
1
|
+
require_relative 'model'
|
2
|
+
|
3
|
+
Decc2050Model = Model
|
4
|
+
Decc2050ModelShim = ModelShim
|
5
|
+
Decc2050ModelResult = ModelResult
|
6
|
+
|
data/lib/model.rb
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
require_relative "model/model"
|
2
|
+
require_relative "model/model_utilities"
|
3
|
+
require_relative "model/model_result"
|
4
|
+
require_relative "model/model_structure"
|
5
|
+
require_relative "model/model_choice"
|
6
|
+
require_relative "model/model_alternative"
|
7
|
+
require_relative "model/model_version"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'ffi'
|
2
2
|
require 'singleton'
|
3
3
|
|
4
|
-
class
|
4
|
+
class ModelShim
|
5
5
|
|
6
6
|
# WARNING: this is not thread safe
|
7
7
|
def initialize
|
@@ -9,7 +9,7 @@ class Decc2050ModelShim
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def reset
|
12
|
-
|
12
|
+
Model.reset
|
13
13
|
end
|
14
14
|
|
15
15
|
def method_missing(name, *arguments)
|
@@ -23,8 +23,8 @@ class Decc2050ModelShim
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def get(name)
|
26
|
-
return 0 unless
|
27
|
-
ruby_value_from_excel_value(
|
26
|
+
return 0 unless Model.respond_to?(name)
|
27
|
+
ruby_value_from_excel_value(Model.send(name))
|
28
28
|
end
|
29
29
|
|
30
30
|
def ruby_value_from_excel_value(excel_value)
|
@@ -37,11 +37,11 @@ class Decc2050ModelShim
|
|
37
37
|
r = excel_value[:rows]
|
38
38
|
c = excel_value[:columns]
|
39
39
|
p = excel_value[:array]
|
40
|
-
s =
|
40
|
+
s = Model::ExcelValue.size
|
41
41
|
a = Array.new(r) { Array.new(c) }
|
42
42
|
(0...r).each do |row|
|
43
43
|
(0...c).each do |column|
|
44
|
-
a[row][column] = ruby_value_from_excel_value(
|
44
|
+
a[row][column] = ruby_value_from_excel_value(Model::ExcelValue.new(p + (((row*c)+column)*s)))
|
45
45
|
end
|
46
46
|
end
|
47
47
|
return a
|
@@ -54,11 +54,11 @@ class Decc2050ModelShim
|
|
54
54
|
def set(name, ruby_value)
|
55
55
|
name = name.to_s
|
56
56
|
name = "set_#{name[0..-2]}" if name.end_with?('=')
|
57
|
-
return false unless
|
58
|
-
|
57
|
+
return false unless Model.respond_to?(name)
|
58
|
+
Model.send(name, excel_value_from_ruby_value(ruby_value))
|
59
59
|
end
|
60
60
|
|
61
|
-
def excel_value_from_ruby_value(ruby_value, excel_value =
|
61
|
+
def excel_value_from_ruby_value(ruby_value, excel_value = Model::ExcelValue.new)
|
62
62
|
case ruby_value
|
63
63
|
when Numeric
|
64
64
|
excel_value[:type] = :ExcelNumber
|
@@ -82,10 +82,10 @@ class Decc2050ModelShim
|
|
82
82
|
excel_value[:columns] = ruby_value.size
|
83
83
|
end
|
84
84
|
ruby_values = ruby_value.flatten
|
85
|
-
pointer = FFI::MemoryPointer.new(
|
85
|
+
pointer = FFI::MemoryPointer.new(Model::ExcelValue, ruby_values.size)
|
86
86
|
excel_value[:array] = pointer
|
87
87
|
ruby_values.each.with_index do |v,i|
|
88
|
-
excel_value_from_ruby_value(v,
|
88
|
+
excel_value_from_ruby_value(v, Model::ExcelValue.new(pointer[i]))
|
89
89
|
end
|
90
90
|
when Symbol
|
91
91
|
excel_value[:type] = :ExcelError
|
@@ -99,9 +99,9 @@ class Decc2050ModelShim
|
|
99
99
|
end
|
100
100
|
|
101
101
|
|
102
|
-
module
|
102
|
+
module Model
|
103
103
|
extend FFI::Library
|
104
|
-
ffi_lib File.join(File.dirname(__FILE__),FFI.map_library_name('
|
104
|
+
ffi_lib File.join(File.dirname(__FILE__),FFI.map_library_name('model'))
|
105
105
|
ExcelType = enum :ExcelEmpty, :ExcelNumber, :ExcelString, :ExcelBoolean, :ExcelError, :ExcelRange
|
106
106
|
|
107
107
|
class ExcelValue < FFI::Struct
|
File without changes
|
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require_relative '../
|
1
|
+
require_relative '../model'
|
2
2
|
|
3
|
-
class
|
3
|
+
class ModelResult < ModelUtilities
|
4
4
|
attr_accessor :excel, :pathway
|
5
5
|
|
6
6
|
def initialize
|
7
|
-
@excel =
|
7
|
+
@excel = ModelShim.new
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.calculate_pathway(code)
|
@@ -210,13 +210,13 @@ class Decc2050ModelResult < Decc2050ModelUtilities
|
|
210
210
|
end
|
211
211
|
|
212
212
|
if __FILE__ == $0
|
213
|
-
g =
|
213
|
+
g = ModelResult.new
|
214
214
|
|
215
215
|
tests = 100
|
216
216
|
t = Time.now
|
217
217
|
a = []
|
218
218
|
tests.times do
|
219
|
-
a << g.calculate_pathway(
|
219
|
+
a << g.calculate_pathway(ModelResult::CONTROL.map { rand(4)+1 }.join)
|
220
220
|
end
|
221
221
|
te = Time.now - t
|
222
222
|
puts "#{te/tests} seconds per run"
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'model'
|
2
2
|
require 'singleton'
|
3
3
|
|
4
|
-
class ModelStructure <
|
4
|
+
class ModelStructure < ModelUtilities
|
5
5
|
include Singleton
|
6
6
|
|
7
7
|
attr_accessor :excel, :choices
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
@excel =
|
10
|
+
@excel = ModelShim.new
|
11
11
|
@choices = []
|
12
12
|
types.each_with_index do |choice_type,i|
|
13
13
|
case choice_type
|
@@ -0,0 +1 @@
|
|
1
|
+
def Model.last_modified_date() @last_modified_date ||= Time.utc(*[55, 52, 11, 27, 11, 2013, 3, 331, false, "GMT"]); end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# Create a test for
|
3
|
-
require_relative '../lib/
|
2
|
+
# Create a test for model_result
|
3
|
+
require_relative '../lib/model'
|
4
4
|
require 'pp'
|
5
5
|
|
6
6
|
pathway = ARGV[0].strip
|
7
7
|
tests_folder = File.join(File.dirname(__FILE__),"expected_results")
|
8
8
|
|
9
9
|
puts "Creating a copy of the output for pathway #{pathway} and puting it in #{tests_folder}"
|
10
|
-
puts "To compare future versions of the model with this test result, run
|
10
|
+
puts "To compare future versions of the model with this test result, run test_model_result.rb"
|
11
11
|
|
12
|
-
model =
|
12
|
+
model = ModelResult.new
|
13
13
|
File.open(File.join(tests_folder,"#{pathway}.json"),'w') do |f|
|
14
14
|
result = model.calculate_pathway(pathway).pretty_inspect
|
15
15
|
f.puts pathway
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# Test for
|
2
|
+
# Test for model
|
3
3
|
require 'rubygems'
|
4
4
|
gem 'minitest'
|
5
5
|
require 'minitest/autorun'
|
6
|
-
require_relative '../lib/
|
6
|
+
require_relative '../lib/model'
|
7
7
|
|
8
|
-
class
|
8
|
+
class TestModel < Minitest::Test
|
9
9
|
def self.runnable_methods
|
10
10
|
puts 'Overriding minitest to run tests in a defined order'
|
11
11
|
methods = methods_matching(/^test_/)
|
12
12
|
end
|
13
13
|
def worksheet; @worksheet ||= init_spreadsheet; end
|
14
|
-
def init_spreadsheet;
|
15
|
-
def test_control_m1; assert_equal("Version 3.5.
|
14
|
+
def init_spreadsheet; ModelShim.new end
|
15
|
+
def test_control_m1; assert_equal("Version 3.5.1", worksheet.control_m1); end
|
16
16
|
def test_control_m4; assert_equal("Doesn't tackle climate change (All at level 1)", worksheet.control_m4); end
|
17
17
|
def test_control_n4; assert_equal("Maximium demand, no supply", worksheet.control_n4); end
|
18
18
|
def test_control_o4; assert_equal("Maximum supply, no demand", worksheet.control_o4); end
|
@@ -559,7 +559,7 @@ class TestDecc2050Model < Minitest::Test
|
|
559
559
|
def test_control_bq31; assert_equal("By 2050, 20% conventional combustion engine cars, with 32% in plug-in hybrid vehicles and 48% in zero emission vehicles: 22% of bus travel fully electric or fuel cell electric ", worksheet.control_bq31); end
|
560
560
|
def test_control_br31; assert_equal("By 2050 100% electric motor or hydrogen fuel cell; all passenger trains electrified; 50% bus electrified ", worksheet.control_br31); end
|
561
561
|
def test_control_d32; assert_equal("Choice of fuel cells or batteries", worksheet.control_d32); end
|
562
|
-
def test_control_f32;
|
562
|
+
def test_control_f32; assert_equal("D", worksheet.control_f32); end
|
563
563
|
def test_control_h32; assert_equal("100% of zero emission cars use batteries by 2050", worksheet.control_h32); end
|
564
564
|
def test_control_i32; assert_equal("Among zero emission cars, 80% use batteries and 20% use fuel cells by 2050", worksheet.control_i32); end
|
565
565
|
def test_control_j32; assert_equal("Among zero emission cars, 20% use batteries and 80% use fuel cells by 2050", worksheet.control_j32); end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
# Test for
|
2
|
+
# Test for model_result
|
3
3
|
require 'rubygems'
|
4
4
|
gem 'minitest'
|
5
5
|
require 'test/unit'
|
6
|
-
require_relative '../lib/
|
6
|
+
require_relative '../lib/model'
|
7
7
|
require 'pp'
|
8
8
|
|
9
|
-
class
|
9
|
+
class TestModelResult < Test::Unit::TestCase
|
10
10
|
|
11
11
|
def test_results
|
12
|
-
@model =
|
12
|
+
@model = ModelResult.new
|
13
13
|
tests_folder = File.join(File.dirname(__FILE__),"expected_results")
|
14
14
|
Dir[File.join(tests_folder, "*.json")].each do |test|
|
15
15
|
expected = IO.readlines(test)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decc_2050_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Counsell, Department of Energy and Climate Change, Her Majesty's Government,
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -51,11 +51,11 @@ description: "# DECC 2050 CALCULATOR TOOL\n\nA C version and ruby wrapper for th
|
|
51
51
|
10-20 minutes or so\n\n gem install decc_2050_model\n \n## UPDATING TO NEWER
|
52
52
|
VERSIONS OF EXCEL MODEL\n\nFirst of all, you need to be working on the github version
|
53
53
|
of the code, not the rubygem:\n \n git clone http://github.com/decc/decc_2050_model\n\nThen
|
54
|
-
put the new spreadsheet in spreadsheet/
|
54
|
+
put the new spreadsheet in spreadsheet/model.xlsx\n\nThen, from the top directory
|
55
55
|
of the gem:\n \n bundle\n bundle exec rake\n \nThe next step is to check
|
56
|
-
whether Rakefile, lib/
|
57
|
-
|
58
|
-
\ \nThe final stage is to build and install the new gem:\n \n gem build
|
56
|
+
whether Rakefile, lib/model/_model_result.rb and lib/model/model_structure.rb need
|
57
|
+
to be altered so that they\npick up the correct places in the underlying excel.\n
|
58
|
+
\ \nThe final stage is to build and install the new gem:\n \n gem build model.gemspec\n
|
59
59
|
\ gem install decc_2050_model-<version>.gem \n\n... where <version> is the version
|
60
60
|
number of the gem file that was created in the folder.\n \nNow follow the instructions
|
61
61
|
in the twenty-fifty server directory in order to ensure that it is using this new
|
@@ -67,24 +67,25 @@ extensions:
|
|
67
67
|
extra_rdoc_files: []
|
68
68
|
files:
|
69
69
|
- README.markdown
|
70
|
-
- lib/decc_2050_model/decc_2050_model.rb
|
71
|
-
- lib/decc_2050_model/decc_2050_model_result.rb
|
72
|
-
- lib/decc_2050_model/decc_2050_model_utilities.rb
|
73
|
-
- lib/decc_2050_model/decc_2050_model_version.rb
|
74
|
-
- lib/decc_2050_model/model_alternative.rb
|
75
|
-
- lib/decc_2050_model/model_choice.rb
|
76
|
-
- lib/decc_2050_model/model_structure.rb
|
77
70
|
- lib/decc_2050_model.rb
|
78
|
-
-
|
79
|
-
-
|
71
|
+
- lib/model/model.rb
|
72
|
+
- lib/model/model_alternative.rb
|
73
|
+
- lib/model/model_choice.rb
|
74
|
+
- lib/model/model_result.rb
|
75
|
+
- lib/model/model_structure.rb
|
76
|
+
- lib/model/model_utilities.rb
|
77
|
+
- lib/model/model_version.rb
|
78
|
+
- lib/model.rb
|
79
|
+
- ext/model.c
|
80
|
+
- test/create_model_result.rb
|
80
81
|
- test/expected_results/10111111111111110111111001111110111101101101110110111.json
|
81
82
|
- test/expected_results/10111111111111110111111004444440444404203304440420111.json
|
82
83
|
- test/expected_results/40444444444444440444444001111110111101101101110110441.json
|
83
84
|
- test/expected_results/40444444444444440444444004444440444404203304440420441.json
|
84
85
|
- test/expected_results/e0d3jrg221ci12110222112004423220444404202304440420141.json
|
85
86
|
- test/expected_results/i0g2dd2pp1121f1i032211p004314110433304202304320420121.json
|
86
|
-
- test/
|
87
|
-
- test/
|
87
|
+
- test/test_model.rb
|
88
|
+
- test/test_model_result.rb
|
88
89
|
- ext/Rakefile
|
89
90
|
homepage: http://github.com/decc/decc_2050_model
|
90
91
|
licenses:
|
@@ -111,3 +112,4 @@ signing_key:
|
|
111
112
|
specification_version: 4
|
112
113
|
summary: A C version of DECC's 2050 Pathway Excel Spreadsheet
|
113
114
|
test_files: []
|
115
|
+
has_rdoc: false
|
@@ -1 +0,0 @@
|
|
1
|
-
def Decc2050Model.last_modified_date() @last_modified_date ||= Time.utc(*[10, 19, 11, 19, 11, 2013, 2, 323, false, "GMT"]); end
|