ode 0.1.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,9 @@
1
+ require_relative "ode/version"
2
+ require_relative "ode/solver"
3
+ require_relative "ode/methods"
4
+ require_relative "ode.so"
5
+
6
+ module Ode
7
+ module Methods
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ module Ode
2
+ module Methods
3
+ def self.default_opts(name)
4
+ {
5
+ :lsoda => {
6
+ itol: 1, # both atol and rtol are scalar
7
+ rtol: 1e-4,
8
+ atol: 1e-6,
9
+ ml: nil,
10
+ mu: nil
11
+ }
12
+ }[name]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,42 @@
1
+ module Ode
2
+ class Solver
3
+ def initialize(f, jac=nil)
4
+ @f = f
5
+ @t = 0
6
+ @y = 0
7
+ @jac = jac
8
+ @fargs = nil
9
+ @opts = nil
10
+ @method = :lsoda
11
+ end
12
+
13
+ def init(t0, y0)
14
+ @t = t0
15
+ @y = y0
16
+ self
17
+ end
18
+
19
+ def method(name)
20
+ if Ode::Methods.respond_to?(name)
21
+ @method = name
22
+ else
23
+ raise NameError, "Ode do not have an implementation of the method named" + name.to_s + "."
24
+ end
25
+ self
26
+ end
27
+
28
+ def f_args(args)
29
+ @fargs=args
30
+ self
31
+ end
32
+
33
+ def integrate(t_out)
34
+ @opts ||= Ode::Methods.default_opts(@method)
35
+ @y = Ode::Methods.send(@method, t_out, @f, @jac, @t, @y, @fargs, @opts)
36
+ @t = t_out
37
+ self
38
+ end
39
+
40
+ attr_reader :t, :y
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module Ode
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ode/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ode"
8
+ spec.version = Ode::VERSION
9
+ spec.authors = ["domitry"]
10
+ spec.email = ["domitry@gmail.com"]
11
+ spec.summary = %q{A ODE solver package for Ruby users.}
12
+ spec.description = %q{A ODE solver package for Ruby users.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT and SciPy license"
15
+ spec.extensions = %w[ext/ode/extconf.rb]
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ end
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ode
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - domitry
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A ODE solver package for Ruby users.
42
+ email:
43
+ - domitry@gmail.com
44
+ executables: []
45
+ extensions:
46
+ - ext/ode/extconf.rb
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - MIT-License.txt
53
+ - README.md
54
+ - Rakefile
55
+ - SciPy-License.txt
56
+ - ext/ode/extconf.rb
57
+ - ext/ode/ode.c
58
+ - ext/ode/odepack.h
59
+ - ext/ode/odepack/blkdta000.f
60
+ - ext/ode/odepack/bnorm.f
61
+ - ext/ode/odepack/cfode.f
62
+ - ext/ode/odepack/ewset.f
63
+ - ext/ode/odepack/fnorm.f
64
+ - ext/ode/odepack/intdy.f
65
+ - ext/ode/odepack/lsoda.f
66
+ - ext/ode/odepack/prja.f
67
+ - ext/ode/odepack/readme
68
+ - ext/ode/odepack/solsy.f
69
+ - ext/ode/odepack/srcma.f
70
+ - ext/ode/odepack/stoda.f
71
+ - ext/ode/odepack/vmnorm.f
72
+ - ext/ode/odepack/vode.f
73
+ - ext/ode/odepack/xerrwv.f
74
+ - ext/ode/odepack/zvode.f
75
+ - lib/ode.rb
76
+ - lib/ode/methods.rb
77
+ - lib/ode/solver.rb
78
+ - lib/ode/version.rb
79
+ - ode.gemspec
80
+ homepage: ''
81
+ licenses:
82
+ - MIT and SciPy license
83
+ metadata: {}
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ required_rubygems_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 2.2.2
101
+ signing_key:
102
+ specification_version: 4
103
+ summary: A ODE solver package for Ruby users.
104
+ test_files: []
105
+ has_rdoc: