Class: Aims::AimsOutput

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

Constructor Details

#initializeAimsOutput

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_stepsObject

?



225
226
227
# File 'lib/aims/output.rb', line 225

def computational_steps
  @computational_steps
end

#geometry_convergedObject

Boolean, true if the geometry is converged



218
219
220
# File 'lib/aims/output.rb', line 218

def geometry_converged
  @geometry_converged
end

#geometry_stepsObject

Each Aims::GeometryStep geometry relaxation step



209
210
211
# File 'lib/aims/output.rb', line 209

def geometry_steps
  @geometry_steps
end

#k_gridObject

The k-point grid for periodic calculations



212
213
214
# File 'lib/aims/output.rb', line 212

def k_grid
  @k_grid
end

#n_atomsObject

The number of atoms in the computation



228
229
230
# File 'lib/aims/output.rb', line 228

def n_atoms
  @n_atoms
end

#original_fileObject

The name of the calculation output file



215
216
217
# File 'lib/aims/output.rb', line 215

def original_file
  @original_file
end

#timingsObject

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_geometryObject



246
247
248
# File 'lib/aims/output.rb', line 246

def final_geometry
  self.geometry_steps.last.geometry
end

#final_stepObject



250
251
252
# File 'lib/aims/output.rb', line 250

def final_step
  self.geometry_steps.last
end

#geometry_stepObject



254
255
256
# File 'lib/aims/output.rb', line 254

def geometry_step
  self.geometry_steps.last
end

#n_relaxation_stepsObject



258
259
260
# File 'lib/aims/output.rb', line 258

def n_relaxation_steps
  self.geometry_steps.size - 1
end

#n_sc_iterationsObject



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_iterationObject



278
279
280
# File 'lib/aims/output.rb', line 278

def sc_iteration
  self.geometry_step.sc_iteration
end

#total_cpu_timeObject



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_energyObject

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