Class: Aims::AimsOutput
- Inherits:
-
Object
- Object
- Aims::AimsOutput
- Defined in:
- lib/aims/output.rb
Overview
An object encapsulating the data that is output from AIMS. This object is generated from Aims::OutputParser.parse(filename)
Instance Attribute Summary collapse
-
#computational_steps ⇒ Object
?.
-
#geometry_converged ⇒ Object
Boolean, true if the geometry is converged.
-
#geometry_steps ⇒ Object
Each Aims::GeometryStep geometry relaxation step.
-
#k_grid ⇒ Object
The k-point grid for periodic calculations.
-
#n_atoms ⇒ Object
The number of atoms in the computation.
-
#original_file ⇒ Object
The name of the calculation output file.
-
#timings ⇒ Object
The detailed time accounting data as a Aims::Timings will be nil if the calculation did not complete.
Instance Method Summary collapse
- #final_geometry ⇒ Object
- #final_step ⇒ Object
- #geometry_step ⇒ Object
-
#initialize ⇒ AimsOutput
constructor
A new instance of AimsOutput.
- #n_relaxation_steps ⇒ Object
- #n_sc_iterations ⇒ Object
- #sc_iteration ⇒ Object
- #total_cpu_time ⇒ Object
-
#total_energy ⇒ Object
Returns the best available value of the total energy.
Constructor Details
#initialize ⇒ AimsOutput
Returns a new instance of AimsOutput.
230 231 232 233 234 |
# File 'lib/aims/output.rb', line 230 def initialize self.geometry_steps = Array.new self.geometry_converged = false self.timings = {} end |
Instance Attribute Details
#computational_steps ⇒ Object
?
225 226 227 |
# File 'lib/aims/output.rb', line 225 def computational_steps @computational_steps end |
#geometry_converged ⇒ Object
Boolean, true if the geometry is converged
218 219 220 |
# File 'lib/aims/output.rb', line 218 def geometry_converged @geometry_converged end |
#geometry_steps ⇒ Object
Each Aims::GeometryStep geometry relaxation step
209 210 211 |
# File 'lib/aims/output.rb', line 209 def geometry_steps @geometry_steps end |
#k_grid ⇒ Object
The k-point grid for periodic calculations
212 213 214 |
# File 'lib/aims/output.rb', line 212 def k_grid @k_grid end |
#n_atoms ⇒ Object
The number of atoms in the computation
228 229 230 |
# File 'lib/aims/output.rb', line 228 def n_atoms @n_atoms end |
#original_file ⇒ Object
The name of the calculation output file
215 216 217 |
# File 'lib/aims/output.rb', line 215 def original_file @original_file end |
#timings ⇒ Object
The detailed time accounting data as a Aims::Timings will be nil if the calculation did not complete
222 223 224 |
# File 'lib/aims/output.rb', line 222 def timings @timings end |
Instance Method Details
#final_geometry ⇒ Object
246 247 248 |
# File 'lib/aims/output.rb', line 246 def final_geometry self.geometry_steps.last.geometry end |
#final_step ⇒ Object
250 251 252 |
# File 'lib/aims/output.rb', line 250 def final_step self.geometry_steps.last end |
#geometry_step ⇒ Object
254 255 256 |
# File 'lib/aims/output.rb', line 254 def geometry_step self.geometry_steps.last end |
#n_relaxation_steps ⇒ Object
258 259 260 |
# File 'lib/aims/output.rb', line 258 def n_relaxation_steps self.geometry_steps.size - 1 end |
#n_sc_iterations ⇒ Object
262 263 264 265 266 |
# File 'lib/aims/output.rb', line 262 def n_sc_iterations self.geometry_steps.inject(0){|total, step| total = total + step.sc_iterations.size } end |
#sc_iteration ⇒ Object
278 279 280 |
# File 'lib/aims/output.rb', line 278 def sc_iteration self.geometry_step.sc_iteration end |
#total_cpu_time ⇒ Object
268 269 270 271 272 273 274 275 276 |
# File 'lib/aims/output.rb', line 268 def total_cpu_time begin self.timings.find{|t| t[:description] =~ /Total time$/}[:cpu_time] rescue self.geometry_steps.inject(0) {|total, step| total = total + step.total_cpu_time } end end |
#total_energy ⇒ Object
Returns the best available value of the total energy
237 238 239 240 241 242 243 244 |
# File 'lib/aims/output.rb', line 237 def total_energy etot = self.geometry_steps.collect{|gs| gs.total_energy }.compact.last if etot.nil? Float::NAN else etot end end |