コード例 #1
0
ファイル: main.py プロジェクト: athlonshi/RMG-Py
			else:
				raise ValueError('Invalid format for wall time; should be HH:MM:SS.')
		except ValueError, e:
			raise ValueError('Invalid format for wall time; should be HH:MM:SS.')

	# Save initialization time
	settings.initializationTime = time.time()

	# Set up log (uses stdout and a file)
	logging.initialize(options.verbose, os.path.join(settings.outputDirectory,'RMG.log'))

	# Log start timestamp
	logging.info('RMG execution initiated at ' + time.asctime() + '\n')
	
	# Print out RMG header
	logging.logHeader()
	
	# Make output subdirectories
	plotDir = os.path.join(settings.outputDirectory, 'plot')
	if os.path.exists(plotDir):
		for f in os.listdir(plotDir):
			os.remove(plotDir + '/' + f)
		os.rmdir(plotDir)
	os.mkdir(plotDir)

	specDir = os.path.join(settings.outputDirectory, 'species')
	if os.path.exists(specDir):
		for f in os.listdir(specDir):
			os.remove(specDir + '/' + f)
		os.rmdir(specDir)
	os.mkdir(specDir)
コード例 #2
0
ファイル: unirxn.py プロジェクト: athlonshi/RMG-Py
def execute(inputFile, options):

	# Set directories
	settings.libraryDirectory = options.libraryDirectory

	# Set up log (uses stdout and a file)
	logging.initialize(options.verbose, os.path.join(settings.outputDirectory,'RMG.log'))

	# Log start timestamp
	logging.info('RMG execution initiated at ' + time.asctime() + '\n')

	# Print out RMG header
	logging.logHeader()

	# Read input file
	network, Tlist, Plist, grainSize, numGrains, method, model = io.readInputFile(inputFile)

	# Shift network such that lowest-energy isomer has a ground state of 0.0
	logging.info('Zeroing lowest energy isomer...')
	network.shiftToZeroEnergy()

	# Determine energy grains
	logging.info('Determining energy grains...')
	Elist = network.determineEnergyGrains(grainSize, numGrains, max(Tlist))

	# Calculate density of states for all isomers in network
	logging.info('Calculating densities of states...')
	network.calculateDensitiesOfStates(Elist)

#	# DEBUG: Plot densities of states
#	import pylab
#	legend = []
#	for isomer in network.isomers:
#		if isomer.densStates is not None:
#			pylab.semilogy(Elist / 1000.0, isomer.densStates, '-')
#			#legend.append(str(isomer))
#	pylab.xlabel('Energy (kJ/mol)')
#	pylab.ylabel('Density of states (mol/J)')
#	#pylab.legend(legend, loc=4)
#	pylab.show()

	# Determine phenomenological rate coefficients
	logging.info('Calculating phenomenological rate coefficients...')
	K = network.calculateRateCoefficients(Tlist, Plist, Elist, method)

	# Create net reaction objects
	network.netReactions = []
	index = 0
	for i, reactantIsomer in enumerate(network.isomers):
		for j, productIsomer in enumerate(network.isomers[0:i]):
			netReaction = reaction.PDepReaction(reactantIsomer.species, productIsomer.species, network, None)
			netReaction.id = 'netReaction%i' % (index+1)
			index += 1
			network.netReactions.append(netReaction)
			# Fit interpolation model
			if model[0].lower() == 'chebyshev':
				modelType, degreeT, degreeP = model
				chebyshev = kinetics.ChebyshevKinetics()
				chebyshev.fitToData(Tlist, Plist, K[:,:,j,i], degreeT, degreeP)
				netReaction.kinetics = [chebyshev]
			elif model.lower() == 'pdeparrhenius':
				pDepArrhenius = kinetics.PDepArrheniusKinetics()
				pDepArrhenius.fitToData(Tlist, Plist, K[:,:,j,i])
				netReaction.kinetics = [pDepArrhenius]
			else:
				pass

	# Save results to file
	logging.info('Saving results...')
	outputFile = os.path.join(os.path.dirname(inputFile), 'output.xml')
	io.writeOutputFile(outputFile, network, Tlist, Plist, Elist, method, model)

	logging.info('')

	# Log end timestamp
	logging.info('RMG execution terminated at ' + time.asctime())