2011-06-22 Paul Romano <romano7@mit.edu>

	* .gitignore: Specifies intentionally untracked files for git
	version control
	* src/ace.f90: Added capability to read unresolved resonance
	probability tables.
	* src/global.f90: Added log file unit.
	* src/logging.f90: Added module for handling a log file.
	* src/main.f90: Added call to create log.
	* src/types.f90: Extended AceContinuous to handle unresolved
	resonance probability table data.

2011-04-25 Paul Romano <romano7@mit.edu>

	* ace.f90: Fixed indentation of get_int and get_real. Added
	subroutine get_macro_xs.
	* fileio.f90: Added ability to read tally cards through read_tally
	subroutine. Changed ERROR_CODE to ERROR_INT.
	* global.f90: Added variables for tallies. Changed ERROR_CODE to
	ERROR_INT and added ERROR_REAL.
	* input_sample: Added tally card.
	* main.f90: Use tallies_on variable when appropriate.
	* output.f90: Add preliminary tally printing capabilites through
	print_tally subroutine.
	* physics.f90: Add call to score_tally for tallies. Changed
	Sigma_t to Sigam_rxn.
	* score.f90: Added score_tally and add_to_score subroutine.
	* search.f90: Added interpolate subroutine.
	* string.f90: Added is_number function.
	* tallies.f90: CHANGED NAME TO score.f90
	* types.f90: Added list of tallies to Universe, Lattice and
	Cell. Modified Tally type.

2011-04-22 Paul Romano <romano7@mit.edu>

	* geometry.f90: Deallocated count lists in neighbor_lists.
	* global.f90: Deallocate arrays that were not previously
	deallocated (xs_continuous, xs_thermal, e_grid, lattices).
	* mpi_routines.f90: Added variable p_sample to lessen calculation
	inside of sampling loop.
	* physics.f90: Commented warning about low particle energy.
	* source.f90: Changed source and fission banks to be allocated
	maxwork instead of n_particles.

2011-04-21 Paul Romano <romano7@mit.edu>

	* main.f90: Moved RN_init_particle at end of cycle to
	synchronize_bank routine.
	* mcnp_random.f90: Added RN_skip subroutine since RN_skip_ahead
	was private and needed a specific seed. RN_skip is used in
	synchronize_bank.
	* mpi_routines.f90: Dramatically overhauled the fission bank
	synchronization algorithm. The algorithm was non-scalable due to
	each processor needing to iterate over the global list of fission
	sites when sampling. This has been modified so that each processor
	samples sites locally without knowledge of how many sites other
	processors have sampled. Essentially, this requires an extra
	MPI_EXSCAN and MPI_BCAST, but should be much faster than what was
	there before.
	* source.f90: Set uid of particle during get_source_particle

2011-04-21 Paul Romano <romano7@mit.edu>

	* geometry.f90: Removed level on calls to message().
	* global.f90: Adjustments to make necessary integers into 8-byte
	integers. Changed PI to non-compiler dependent constant.
	* lattice_sample: Changed lattice to 20 x 20.
	* main.f90: New timing data from fission bank synchronization
	* mpi_routines.f90: Switching to 8-byte integers, more comments,
	changed timing variables.
	* output.f90: Made the level argument in message subroutine
	optional.
	* physics.f90: Fixed bug in sample_angle whereby mu could possibly
	be greater than one (very rarely). This caused rotate_angle to
	fail when given mu>1. Removed level from message calls.
	* source.f90: Change necessary variables to integer(8)
	* tallies.f90: Change MPI_REDUCE to use MPI_INTEGER8
	* types.f90: Change Bank type to use integer(8) for uid.

2011-04-13 Paul Romano <romano7@mit.edu>

	* main.f90: Simple timing for total time elapsed and bank
	synchronization.
	* Makefile: Added USE_MPI flag and ifeq block.
	* mpi_routines.f90: Timing of fission bank synchronization.

2011-04-12 Paul Romano <romano7@mit.edu>

	* global.f90: Added ifdef MPI sections
	* main.f90: Added ifdef MPI sections
	* Makefile: Made switching between compiling with or without MPI
	more seamless by adding -DMPI flag on F90FLAGS.
	* mpi_routines.f90: Added ifdef MPI sections
	* tallies.f90: Added ifdef MPI sections

2011-04-12 Paul Romano <romano7@mit.edu>

	* ace.f90: Fixed bug relating to 'use' of str_to_real from wrong
	module
	* cross_section.f90: Fixed bug relating to 'use' of str_to_real
	from wrong module
	* fileio.f90: Fixed bug relating to 'use' of str_to_real from wrong
	module

2011-04-01 Paul Romano <romano7@mit.edu>

	* ace.f90: Added ability to read S(a,b) data through the
	read_ACE_thermal and read_thermal_data subroutines.
	* endf.f90: Replaced many integer values of MTs with constants
	introduced in global module
	* fileio.f90: Added check for no boundary conditions.
	* global.f90: Introduced parameters to represent different
	reactions. Added real_to_str function and moved str_to_real
	function here instead of being in string module.
	* output.f90: Changed printing of real(8)s to use the real_to_str
	function. Changed print_material to show density of each nuclide.
	* physics.f90: Replaced actual integer values of MTs with
	constants introduced in global module
	* string.f90: Moved str_to_real function to global module.

2011-03-30 Paul Romano <romano7@mit.edu>

	* benchmarks: Added boundary conditions to PU-MET-FAST-001, 002,
	and 005.
	* fileio.f90: Added ability to read boundary conditions through
	the new read_bc subroutine and a modification to adjust_indices.
	* global.f90: Added parameter for periodic boundary conditions.
	* input_sample: Added boundary conditions.
	* lattice_sample: Sample lattice geometry file added.
	* output.f90: Modified print_surface to show boundary condition.

2011-03-28 Paul Romano <romano7@mit.edu>

	* fileio.f90: Ability to read lattice entries.
	* geometry.f90: Added lattice capabilities. Changed cross_boundary
	to cross_surface. Added many comments. In many places, changed
	testing of c%fill to c%type instead since fill could be universe
	or lattice.
	* Makefile: Added -traceback
	* output.f90: Added print_lattice, other minor changes. (Fixed
	indentation so looks like everything changed)
	* physics.f90: Call cross_lattice if crossing lattice boundary
	instead of surface.
	* source.f90: Set values for xyz_local, lattice indices
	* types.f90: Extending Lattice type, modified Particle type to
	include local coordinates, current lattice, and lattice indices.

2011-03-25 Paul Romano <romano7@mit.edu>

	* physics.f90: Resample outgoing energy if sampled energy is
	greater than 20 MeV. Some cross sections go up to 150 MeV but
	others do not.
	* source.f90: Resample outgoing energy if >= 20 MeV.

2011-03-25 Paul Romano <romano7@mit.edu>

	* ace.f90: Added ability to read delayed neutron energy
	distributions and precursor yields/constants. Created function
	length_energy_dist from inner section of read_energy_dist so that
	it could used for delayed neutrons as well. Added many comments
	where they were previously missing.
	* fileio.f90: Added many comments.
	* global.f90: Added lattice types
	* physics.f90: Added sampling of delayed neutrons (delayed/prompt,
	precursor group, outgoing energy). Added many comments.
	* types.f90: Moved all delayed neutron precursor data into one
	array. Made delayed neutron energy distribution allocatable (since
	there are 6 groups, each with a dist). Added many comments.

2011-03-24 Paul Romano <romano7@mit.edu>

	* geometry.f90: Fixed significant bug in how quadratic surfaces
	were handled. Changed x**2 to x*x in the interest of efficiency.
	* global.f90: Added more interpolation types to prepare for
	interpolation other than histogram or lin-lin.
	* physics.f90: Fixed bug in E1 and EK energies for Law 4 (used NE
	instead of NP).

2011-03-22 Paul Romano <romano7@mit.edu>

	* benchmarks: Added PU-MET-FAST-002 and PU-MET-FAST-005 benchmark
	problems.
	* mpi_routines.f90: Added check for no fission bank sites.
	* output.f90: Changed error subroutine to work when run in
	parallel.
	* physics.f90: Fixed sampling of seconary angle for elastic
	scattering. Changed sampling of reaction. Changed n_gamma to
	n_absorption and now includes (n,p), etc. Reverted sample_angle
	routine to arguments u,v,w,mu.

2011-03-22 Paul Romano <romano7@mit.edu>

	* cross_section.f90: Calculation of material total cross section
	was completely wrong -- fixed it up.
	* global.f90: Added default keff.
	* mpi_routines.f90: Fixed major bug in how MPI_BANK type was
	created. Solution should be machine independent. Parallel fission
	bank now works.
	* physics.f90: Combined level_scatter into inelastic_scatter since
	the physics is the same. Simplifying sampling of angle (isotropic
	cases handled inside sample_angle). Fixed interpolation in many
	places (f and (1-f) were swapped). Fixed distance to
	collision. Fixed major bug in evaporation spectrum (restriction
	energy was wrong).
	* source.f90: Moved initial sampling of Watt spectrum for first
	cycle particles to init_source inside of being in physics module.
	* tallies.f90: Initial addition of tallies module. Only has one
	routine, calculate_keff, that is used to do end-of-cycle keff
	calculations. This will probably change significantly.
	* unittest.f90: Added test_mpi_bank useful for debugging the
	MPI_BANK type.

2011-03-21 Paul Romano <romano7@mit.edu>

	* ace.f90: Adjusted locators energy and angle distributions for
	Law 61.
	* global.f90: Added 'work' variable.
	* main.f90: History loop is generalized. Added call to
	synchronize_bank.
	* mpi_routines.f90: Added fission bank synchronization from prior
	code. Introduced MPI_bank type in setup_mpi.
	* physics.f90: Added ability to simulate (n,xn), inelastic
	scattering reactions. Further extended energy sampling to include
	Law 61 (correlated energy-angle distributions). Fixed cases where
	nu values outside of array for binary_search are treated
	correctly. Fixed bugs in energy sampling (changed %energy to
	%data).
	* source.f90: Changed init_source to work in parallel. Minor
	changes to get_source_particle. Added copy_from_bank for fission
	bank synchronization.

2011-03-18 Paul Romano <romano7@mit.edu>

	* ace.f90: Added ability to read nu data through the read_nu_data
	subroutine. Changed names of subroutines with 'parse' to
	'read'. Change 'size' variable to 'length' to prevent conflict
	with SIZE intrinsic. Adjusted angle and energy distributions to
	fit new types. Adjusted locator arrays within energy and angle
	distribution data array.
	* fileio.f90: Can now read verbosity from input file rather than
	setting it arbitrarily in my source.
	* geometry.f90: Set current pointers particle attributes in
	find_cell.
	* global.f90: Added keff, bank indices, parallel processing
	variables, nu types.  Moved default verbosity to set_defults.
	* mpi_routines.f90: First addition on MPI parallelization
	* output.f90: Added print_particle and print_reaction routines,
	moved ou and eu to be module variables so that every routine
	doesn't have to define them.
	* physics.f90: Added n_fission and level_scatter
	subroutines. Fixed bugs in sample_angle subroutine. Changed
	rotate_angle to operate on particle. Added sample_energy
	subroutine -- currently includes tabular equiprobable bins,
	inelastic level scattering, continuous tabular distribution,
	Maxwell spectrum, evaporation spectrum, Watt spectrum, and
	Kalbach-Mann correlated scattering.
	* source.f90: Added default values for source particles. Temporary
	add_bank_sites routine written -- not sure if it will be used here
	or elsewhere.
	* types.f90: Added n_coll attribite to particle. Extended Bank
	type to include direction and energy. Added AceDistAngle and
	AceDistEnergy types and changed AceReaction accordingly. Changed
	how nu data is stored in AceContinuous.

2011-03-10 Paul Romano <romano7@mit.edu>

	* types.f90: The major changes are that the n_items and
	boundary_list attributes of 'Cell' are now n_surfaces and
	surfaces. Even though this doesn't quite make sense since
	parentheses and union operators are not surfaces per-se, it is
	easier to understand within other modules with these names. The
	'Neutron' type is now called 'Particle' and will be used for all
	different particles (eventually).
	* fileio.f90: Changed aforementioned names.
	* geometry.f90: Changed aforementioned names.
	* global.f90: Changed aforementioned names.
	* main.f90: Changed aforementioned names.
	* output.f90: Changed aforementioned names.
	* physics.f90: Changed aforementioned names.
	* source.f90: Changed aforementioned names.

2011-03-04 Paul Romano <romano7@mit.edu>

	* fileio.f90: Added build_universe routine which sets pointers
	betweens cells and parent cells and determines level of each
	universe. Added stub for read_lattice.
	* geometry.f90: Changed cross_boundary and dist_to_boundary to
	take into account universe boundaries as well as cell boundaries.
	* global.f90: Added initial variables for lattices.
	* output.f90: Added print_surface and print_material.
	* physics.f90: Added find_energy_index routine.
	* types.f90: Initial Lattice type.

2011-02-27 Paul Romano <romano7@mit.edu>

	* ace.f90: Fixed minor bugs associated with reading angular
	distributions.
	* data_structures.f90: Added dict_keys routines.
	* fileio.f90: Considerably changed read_count and read_cell to be
	able to handle universes.
	* geometry.f90: Added universe logic to find_cell and allowed it
	to be recursively called.
	* global.f90: Added universe array and dictionary, cell types,
	pointer to lowest universe, angular distribution types,
	interpolation types, as well as ERROR_CODE and adjusted str_to_int
	to return ERROR_CODE on error.
	* output.f90: Added print_cell, print_universe, and print_summary
	subroutines. Need a few more useful routines like this!
	* physics.f90: Added ability to sample cosine of scattering angle
	from a 32-equiprobable bin distribution or a tabular
	distribution. This is done by the sample_energy routine. The
	rotate_angle subroutine takes a particles direction and applies
	that scattering angle to it. Also added some logic for universes.
	* types.f90: Changed some attributes in the Neutron structure,
	added type to angular distribution within AceReaction.

2011-02-22 Paul Romano <romano7@mit.edu>

	* ace.f90: Added read_angular_dist and read_energy_dist
	subroutines that read the energy and angle distributions for
	secondary neutrons for reactions with MT < 100. Note that these
	routines don't actually parse the distributions since their form
	will depend on the secondary law is for that particle reaction.
	* global.f90: Incremented minor version
	* types.f90: Put angular and energy distribution information
	within AceReaction since it is unique to each reaction

2011-02-13 Paul Romano <romano7@mit.edu>

	* ace.f90: Fixed xs_continuous allocation again -- cross sections
	were not being assigned correctly to materials. Added elastic
	scattering in list of reactions. Changed name of rxn %
	energy_index to IE.
	* endf.f90: New module. Includes subroutine reaction_name which
	returns the name of a reaction for a given ENDF MT value.
	* geometry.f90: Fixed bug in dist_to_boundary (the 'w' in uvw was
	actually being set to 'z', not 'w'). Changed 0's and 1's to ZEROs
	and ONEs.
	* global.f90: Added ZERO and ONE.
	* physics.f90: Can now sample reactions once nuclide is
	selected. Added subroutines elastic_scatter, level_inelastic, and
	n_gamma (level_inelastic is just a stub), and significantly
	changed elastic scattering (currently based on stationary target).
	* types.f90: Added n_reaction attribute on AceContinuous, changed
	AceReaction % energy_index to IE.

2011-02-09 Paul Romano <romano7@mit.edu>

	* ace.f90: Fixed bug in the way xs_continuous was allocated. If,
	e.g., 92235.03c was listed twice in a file, two spots would be
	allocated in the array instead of one.
	* cross_section.f90: Added calculation of total material
	cross-section.
	* data_structures.f90: Added list routines for each different
	type (integer, real, key/value pairs) and an interface for
	them. Dictionaries can now take character keys or integer
	keys. New hash function for integers is simple mod function.
	* energy_grid.f90: Removed grid_count since we now have a generic
	list_size routine in data_structures. Added original_indices
	routine in order to do SERPENT-style double-indexing.
	* fileio.f90: Fixed normalize_ao routine to include calculations
	based on atom or gram density (this should probably be moved to
	different module). Added get_next_line routine that reads a full
	line of input including any continuation lines marked by an
	ampersand.
	* global.f90: Added separate dictionary types (CI and II), added
	pointers for current cell, surface, and material. Added e_grid and
	n_grid
	* physics.f90: Neutron energy sampled at beginning of
	transport. Added watt_spectrum and maxwell_spectrum
	routines. Changed collision routine so that actual nuclide is
	sampled.
	* search.f90: Fixed binary_search routine
	* string.f90: Changed concatenate subroutine into a function
	* types.f90: Moved List and Dictionary types from data_structures
	to here (including new types). LinkedListGrid is now ListReal.

2011-02-03 Paul Romano <romano7@mit.edu>

	* ace.f90: Added initial routines for reading continuous-energy
	ACE cross section tables. No secondary energy/angle distributions
	or nu data is read.
	* cross_section.f90: Added read_xsdata routine which reads
	information from an xsdata file from SERPENT.
	* data_structures.f90: Moved derived types to the types module and
	change dict_create so that one doesn't need to add a (key,value)
	pair on initialization.
	* energy_grid.f90: First routines for energy grid unionization
	based on insertion sorts.
	* fileio.f90: Added routines for reading integer and real data,
	particularly from cross-section libraries. Made an interface so
	that a single routine can be called regardless of type. Ability to
	read material cards and added subroutine for normalization of
	atom/weight percents.
	* Makefile: Added 'unittest' target
	* output.f90: Fixed bug in get_today subroutine whereby the day
	was displayed wrong.
	* search.f90: Added binary search which will eventually be used
	for energy grid searches
	* unittest.f90: Added this program for unit testing.

2011-01-26 Paul Romano <romano7@mit.edu>

	* physics.f90: Added collision routine, still segfaults though.
	* geometry.f90: Added messages for high verbosities
	* global.f90: Added verbosity parameter, key length for
	dictionaries
	* output.f90: Implemented verbosity for messages.
	* data_structures.f90: Added implementations of linked list and
	dictionaries based on the flib open source package

2011-01-23 Paul Romano <romano7@mit.edu>

	* types.f90: Added cell, surface, and alive attributes to Neutron
	* fileio.f90: External source no longer array
	* geometry.f90: Changed cell_contains slightly so that it can
	evaluate simple cell logical expressions. Added find_cell and
	cross_boundary subroutines. Changed dist_to_boundary to also give
	back closest surface
	* global.f90: Added set_defaults subroutine
	* source.f90: Isotropic angle is now sampled in init_source, fixed
	sampling in box, checks for external source type. Added
	get_source_particle function.

2011-01-22 Paul Romano <romano7@mit.edu>

	* input_sample: Added a sample input file
	* main.f90: Added run_problem subroutine
	* mcnp_random.f90: Added random number generator based on MCNP's
	linear congruential generator
	* fileio.f90: Completely changed how cells, surfaces, and
	materials are allocated. Now there is a first pass through the
	input file made by read_count which allows the arrays to be
	pre-allocated, then read_input actually parses the input data.
	* geometry.f90: Only formatting changes
	* output.f90: Added the echo_input subroutine, made formatting
	changes
	* string.f90: Moved int_to_str to the global module, changed
	string splitting to recognize tab characters
	* types.f90: Deleted List types, added Isotope, Material, and
	Source
	* source.f90: Added init_source routine which initializes source
	particles
