gs2crmod 0.11.76 → 0.11.77

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.76
1
+ 0.11.77
data/gs2crmod.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "gs2crmod"
8
- s.version = "0.11.76"
8
+ s.version = "0.11.77"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Edmund Highcock", "Ferdinand van Wyk"]
12
- s.date = "2014-09-25"
12
+ s.date = "2014-10-05"
13
13
  s.description = "GS2 is a gyrokinetic flux tube initial value turbulence code which can be used for fusion or astrophysical plasmas. CodeRunner is a framework for the automated running and analysis of large simulations. This module allows GS2 (and its sister code AstroGK) to harness the power of the CodeRunner framework."
14
14
  s.email = "edmundhighcock@sourceforge.net"
15
15
  s.extensions = ["ext/extconf.rb"]
@@ -77,7 +77,7 @@ Gem::Specification.new do |s|
77
77
  s.licenses = ["GSLv3"]
78
78
  s.require_paths = ["lib"]
79
79
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.1")
80
- s.rubygems_version = "1.8.23"
80
+ s.rubygems_version = "1.8.11"
81
81
  s.summary = "Module to allow CodeRunner to run and analyse the GS2 and AstroGK codes."
82
82
 
83
83
  if s.respond_to? :specification_version then
@@ -666,41 +666,45 @@ end
666
666
  alias :ctehfa :calculate_transient_es_heat_flux_amplifications
667
667
  alias :ctehfa :calculate_transient_es_heat_flux_amplifications
668
668
 
669
+
669
670
  def calculate_transient_amplification(vector, options={})
670
- turning_points = {}
671
- old = vector[0]
672
- i = 0
673
- #for i in i...vector.size
674
- #new = vector[i]
675
- #if new > old
676
- #turning_points[:first_min] = i-1
677
- #ep "First turning point[#{i}]\n"
678
- #break
679
- #end
680
- #old = new
681
- #end
682
-
683
- #for i in i...vector.size
684
- #new = vector[i]
685
- #if new < old
686
- #turning_points[:first_max] = i-1
687
- #ep "Second turning point[#{i}]\n"
688
- #break
689
- #end
690
- #end
691
-
692
- #unless turning_points[:first_max] # and turning_points[:first_min]
693
- #return NaN
694
- #end
695
- ##t = gsl_vector('t')
696
- ##for j in 0...vector.size
697
- ##break if t[j] > 0.2
698
- ##end
699
- #ep "vector[0..5]: #{vector.subvector(0,5)}\n"
700
- #return Math.sqrt(vector[turning_points[:first_max]]/@phiinit)
701
- #return vector.max/@phiinit
702
- vector[0] = 0 # This ensures vector.max does not return 1st point for no transient growth
703
- return vector.max/vector[1]
671
+ t = gsl_vector(:t)
672
+
673
+ #Implement data smoothing through a moving average procedure of 5 surrounding points.
674
+ #This is needed since we need to know the turning points and need calculate gradients
675
+ #to find the points where they change sign. In order to get the actual transient amplification
676
+ #use the original data at the points where the gradient of smoothed data changes sign.
677
+
678
+ vec_smooth = GSL::Vector.alloc(vector.size-2);
679
+ vec_smooth[0] = vector[0]
680
+ vec_smooth[1] = (vector[0] + vector[1] + vector[2])/3
681
+ for i in 2...vector.size-2
682
+ vec_smooth[i] = (vector[i-2] + vector[i-1] + vector[i] + vector[i+1] + vector[i+2])/5
683
+ end
684
+
685
+ #Calculate the gradient of the smoothed function
686
+ grad = GSL::Vector.alloc(vec_smooth.size-1);
687
+ for i in 0...vec_smooth.size-1
688
+ grad[i] = (vec_smooth[i+1] - vec_smooth[i])/(t[i+1]-t[i])
689
+ end
690
+
691
+ #Now find the first two points where the gradient changes sign
692
+ #If your data still oscillates too much this method will not work.
693
+ #You will have to change the order of the data smoothing scheme.
694
+ turning_points = Array.new
695
+ for i in 1...grad.size
696
+ if GSL::sign(grad[i]) != GSL::sign(grad[i-1])
697
+ turning_points.push(i+1)
698
+ end
699
+ end
700
+
701
+ #Now calculate amplification factor using original vector (assuming turning point is roughly the same)
702
+ #by dividing value at max by the value at the min
703
+ if turning_points.empty? or turning_points.size < 2
704
+ return 0
705
+ else
706
+ return vector[turning_points[1]]/vector[turning_points[0]]
707
+ end
704
708
  end
705
709
 
706
710
  def ctan
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gs2crmod
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.76
4
+ version: 0.11.77
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-09-25 00:00:00.000000000 Z
13
+ date: 2014-10-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderunner
17
- requirement: !ruby/object:Gem::Requirement
17
+ requirement: &10066420 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,15 +22,10 @@ dependencies:
22
22
  version: 0.14.15
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: 0.14.15
25
+ version_requirements: *10066420
31
26
  - !ruby/object:Gem::Dependency
32
27
  name: rubyhacks
33
- requirement: !ruby/object:Gem::Requirement
28
+ requirement: &10065380 !ruby/object:Gem::Requirement
34
29
  none: false
35
30
  requirements:
36
31
  - - ! '>='
@@ -38,15 +33,10 @@ dependencies:
38
33
  version: 0.1.2
39
34
  type: :runtime
40
35
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: 0.1.2
36
+ version_requirements: *10065380
47
37
  - !ruby/object:Gem::Dependency
48
38
  name: ruby-netcdf-updated
49
- requirement: !ruby/object:Gem::Requirement
39
+ requirement: &10064080 !ruby/object:Gem::Requirement
50
40
  none: false
51
41
  requirements:
52
42
  - - ! '>='
@@ -54,31 +44,21 @@ dependencies:
54
44
  version: 0.6.6.1
55
45
  type: :runtime
56
46
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: 0.6.6.1
47
+ version_requirements: *10064080
63
48
  - !ruby/object:Gem::Dependency
64
49
  name: shoulda
65
- requirement: !ruby/object:Gem::Requirement
50
+ requirement: &10062880 !ruby/object:Gem::Requirement
66
51
  none: false
67
52
  requirements:
68
- - - '='
53
+ - - =
69
54
  - !ruby/object:Gem::Version
70
55
  version: 3.0.1
71
56
  type: :development
72
57
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - '='
77
- - !ruby/object:Gem::Version
78
- version: 3.0.1
58
+ version_requirements: *10062880
79
59
  - !ruby/object:Gem::Dependency
80
60
  name: rdoc
81
- requirement: !ruby/object:Gem::Requirement
61
+ requirement: &10061120 !ruby/object:Gem::Requirement
82
62
  none: false
83
63
  requirements:
84
64
  - - ~>
@@ -86,15 +66,10 @@ dependencies:
86
66
  version: '3.12'
87
67
  type: :development
88
68
  prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ~>
93
- - !ruby/object:Gem::Version
94
- version: '3.12'
69
+ version_requirements: *10061120
95
70
  - !ruby/object:Gem::Dependency
96
71
  name: bundler
97
- requirement: !ruby/object:Gem::Requirement
72
+ requirement: &10074460 !ruby/object:Gem::Requirement
98
73
  none: false
99
74
  requirements:
100
75
  - - ! '>'
@@ -102,15 +77,10 @@ dependencies:
102
77
  version: 1.0.0
103
78
  type: :development
104
79
  prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>'
109
- - !ruby/object:Gem::Version
110
- version: 1.0.0
80
+ version_requirements: *10074460
111
81
  - !ruby/object:Gem::Dependency
112
82
  name: jeweler
113
- requirement: !ruby/object:Gem::Requirement
83
+ requirement: &10072140 !ruby/object:Gem::Requirement
114
84
  none: false
115
85
  requirements:
116
86
  - - ! '>='
@@ -118,15 +88,10 @@ dependencies:
118
88
  version: 1.8.4
119
89
  type: :development
120
90
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: 1.8.4
91
+ version_requirements: *10072140
127
92
  - !ruby/object:Gem::Dependency
128
93
  name: minitest
129
- requirement: !ruby/object:Gem::Requirement
94
+ requirement: &10070740 !ruby/object:Gem::Requirement
130
95
  none: false
131
96
  requirements:
132
97
  - - ~>
@@ -134,12 +99,7 @@ dependencies:
134
99
  version: '4'
135
100
  type: :development
136
101
  prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
140
- - - ~>
141
- - !ruby/object:Gem::Version
142
- version: '4'
102
+ version_requirements: *10070740
143
103
  description: GS2 is a gyrokinetic flux tube initial value turbulence code which can
144
104
  be used for fusion or astrophysical plasmas. CodeRunner is a framework for the automated
145
105
  running and analysis of large simulations. This module allows GS2 (and its sister
@@ -227,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
187
  version: '0'
228
188
  requirements: []
229
189
  rubyforge_project:
230
- rubygems_version: 1.8.23
190
+ rubygems_version: 1.8.11
231
191
  signing_key:
232
192
  specification_version: 3
233
193
  summary: Module to allow CodeRunner to run and analyse the GS2 and AstroGK codes.