Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dead code removal #39

Merged
merged 9 commits into from
Apr 12, 2023
Merged

Dead code removal #39

merged 9 commits into from
Apr 12, 2023

Conversation

imrn99
Copy link
Collaborator

@imrn99 imrn99 commented Apr 12, 2023

  • Removed code that is likely not to be used in the future
  • Fused two match statements in the mc_segment_outcome module

@imrn99 imrn99 merged commit 4cbf3bb into dev Apr 12, 2023
@imrn99 imrn99 deleted the dead-code-removal branch April 12, 2023 14:05
imrn99 added a commit that referenced this pull request Apr 18, 2023
* new tests and documentation

* input file parsing rewrite: now uses macros; removed unused
constructors

* input file parsing test done

* parse_input_file now returns a result with a vector containing all block errors; it will detect bad blocks while check_parameters_integrity will detect missing blocks

* montecarlo structure skeleton

* skeleton & documentation part 1/?

* skeleton & documentation 2/?

* skeleton & documentation 3/?

* skeleton & documentation 4/? may be done at the next commit

* skeleton & documentation 5/6

* skeleton & documentation 6/6

* dev_impl_skeleton -> dev (#1)

* function skeleton: montecarlo & sendqueue

* function skeleton: tallies

* function skeleton: mc_domain, energy_spectrum, bulk_storage; also added new structs

* refactored f64 -> num::Float before code gets too long

* function skeleton: some more empty implementations; mc_base_particle will notably differ from the original c++ code

* function skeleton: mc_particle, mc_time_info, mc_vector

* function skeleton: vaults, nuclear data; used PhantomData for energy_spectrum & MeshPartition

* basic main

* main skeleton & fast timer implem

* fmt & small changes to main/init_mc

* filled up main function

* format

* skeleton of an alternative MC_Particle_Buffer; need to check if it's necessary

* basic skeleton done for the buffer

* function skeleton: decomposition_object & global_fcc_grid

* function skeleton: collisison_event, physical_constants

* function skeleton: macroscopic_cross_section, mc_facet_crossing_event, mc_load_particle (moved in mc_utils with mc_source_now)

* function skeleton: mc_nearest_facet, mc_segment_outcome, mct

* function skeleton: facet_pair, grid_assignment_object

* formatting

* function skeleton: rng; need to add some documentation

* function skeleton: mc_distance_to_facet; documentation 1/?

* documentation 2/?

* documentation 3/?

* documentation 4/?

* documentation 5/5

* dev_mcvector -> dev (#2)

* first implementation of mc_vector

* added simple tests for operations; need to check for potential floating-point errors

* added tests for other methods of the struct

* cargo fmt

* more benchmark related stuff; putting it on hold for now

* cleanup benchmarks, additional method for approximate comparison of MCVectors

* update toml

* dev_particles -> dev (#3)

* completed MCParticle functions; removed getters

* cargo fmt

* completed MCBaseParticle functions; removed getters and unused/undefined functions

* completed particle_vault functions; many differs from the original implem so comparing behavior will be mandatory

* completed functions of particle_vault_container

* completed funcions of mc_particle_buffer but it might be interesting to totally dismiss the structure

* cargo fmt

* converted particle vault to model invalidate particle with value None

* added a new enum to model particle species

* load_particle complete

* cleanup and cargo fmt

* started testing vaults; collapse() not working

* added dummy test function to identify the issue; second vault/vector keeps its initial value

* fixed the collapse function; the second vault was updated using the new length of the first one (==fill_size)

* more testing

* more tests and cleanup

* cargo fmt

* final test for vaults; cleanup and note on pop_... behavior

* format before merge

* dev_data -> dev (#4)

* completed energy_spectrum

* completed polynomial and NuclearDataReaction; sample collision will need testing as its behavior was unclear in the original code

* completing NuclearData

* completed nuclear_data; is the species field useless in QS?

* cargo fmt

* material_database complete

* started to complete tallies; goodbye bulkstorage?

* cargo fmt

* tallies continued; scalar_flux_sum readability is questionable

* workaround for usage of consts

* workaround for usage of consts 2/2

* converted Fluene in a struct, implemented Fluence::compute()

* Tallies:print_summary done; changed timer functions to use enums directly

* cargo fmt

* Tallies:cycle_finalize done

* Tallies:initialize_tallies() done

* format & cleanup

* SendQueue done; None of a queue's properties are used, maybe replace it?

* added some test for SendQueue; need to cleanup the structure

* cleanup & update of SendQueue

* cargo fmt

* Dev computation (#5)

* RNG State done, need to test the hashing algorithm to compare results with original function

* DirectionCosine::sample_isotropic done

* DirectionCosine done; need to compare the computed values with original code

* doc

* started to complete macro_cross_section.rs; replaced the usage of a magic value by adding a separate method

* cargo fmt

* completed macro_cross_section functions

* added test to compare results; the pseuo hash function of mc_rng_state gives a different result

* fiex mc_rng_state, the generator now yields the same numbers

* added test for sample_isotropic; added c files used to test original code

* added rotation test; all functions seems to give the same results

* cargo fmt

* computation test can be run using --nocapture to compare results with the original functions

* update_trajectory() done

* finished collision_event

* cargo fmt

* finished segment_outcome

* cargo fmt

* added rust test for update trajectory & needed c++ files

* wrote test in c files; need to add a makefile and check results

* velocity & direction cosine differ

* corrected test, update_trajectory ok

* very simple makefile

* added internal functions of mct.rs; this module needs refactor asap

* started implementation of mct.rs function; lots of refactoring to do on this file

* completed generate_coordinate_3dg; updating functions signature

* cargo fmt

* finished public mct functions; cleanup needed

* cargo fmt

* mct functions continued; will cleanup after mct & facet_crossing_event are completed

* mct completed; cleanup todo

* completed facet_crossing_event

* cargo fmt

* mct cleanup 1/?

* mct cleanup 2/2; updated MCLocation to avoid magic values

* cargo fmt

* added test for volume computation & move particle

* all test added; the belongs_or_return macro has diverging results

* test passed; fixed a mistake in the C code

* cleanup & format

* dev_geometry -> dev (#6)

* completed mc_cell_state, mc_distance_to_facet, mc_facet_adjacency; updated structures to work around magic values

* completed mc_facet_geometry, mc_location, mc_nearest_facet, facet_pair; leaving refactor for later

* grid_assignment_object.rs 1/2

* grid_assignment_object.rs 2/2

* mesh_partition.rs 1/?

* added a communication object

* mesh partition 2/?; fixed the comm object and build_cell_idx_map method

* cargo fmt

* mesh_partition.rs 3/?

* mesh_partition.rs 4/4

* cargo fmt

* global_fcc_grid.rs 1/?

* global_fcc_grid.rs 2/?

* global_fcc_grid.rs 3/3

* cargo fmt

* completed decomposition_object.rs; removed the debug mode for now

* mc_domain.rs 1/?

* mcdomain.rs 2/?

* cargo fmt

* mcdomain.rs 3/?

* mcdomain.rs 4/4

* cleanup & format

* Dev sim (#11)

* skeleton init_mc

* init_mc: completed init_nuclear_data

* init_mc: completed init_mesh; nedd to complete its internal functions

* init_mc: init_mesh fully completed

* init_mc: initialize_tallies refactor to reduce unnecessary borrows

* init_mc: check_cross_sections 1/2

* cargo fmt

* init_mc: completed

* montecarlo.rs completed; dirty refactor of MCParticleBuffer to delete the mcco reference field

* cargo fmt

* population_control.rs 1/?

* population_control.rs 2/?

* population_control.rs 3/3

* swapped generic float T for f64 in mc_time_info

* mc_utils: source_now completed

* cycle_tracking.rs 1/?; light refactor of generate_coordinate_3dg

* cycle_tracking.rs: 2/2

* making the program run 1/?

* making the program run 2/?

* making the program run 3/?

* making the program run 4/?

* making the program run 5/?

* making the program run 6/?; very strange oob error

* making the program run 7/?; maps behave differently in c++ and rust :)

* cargo fmt

* making the program run 8/?

* making the program run 9/?; might pause this to remove Rc<RefCell> pattern

* making the program run 10/?

* removing RcRefCell pattern 1/?

* Removing RcRefCell pattern 2/2

* cargo fmt

* making the program run 11/?; working around the borrow system by passing indexes instead of references

* making the program run 12/?

* making the program run 13/?

* infinite looping in cycle_tracking

* fixed test to move on next iteration; used # of of processing vaults instead of # of processing particles

* program runs; need to check outputs now

* particles aren't counted in energy spectrum

* add_processing_particle is never called

* particles are now created

* making the program run 14/?

* some structures arent initialized correctly?

* making the program run 15/?

* fixed collision event

* cargo fmt

* fixed get_first_empty_vault

* add_processing_particle not working

* cargo fmt

* problem with processing/valid particles?

* need to update collapse functions to work with options

* add processing particles not called for n_particles == 1,000 but called for 10,000

* particles disappear during tracking

* particles dont reach census / arent counted as processed

* load_particle always return None; particle are set as none without going into processed ?

* particles are here but are never loaded

* vault access issue in load_particle

* found issue: new particles are pushed, making the vault twice its correct size; the first half is None hence the weird behavior

* fix introduced a new issue

* fixed the vaults; infinite loop after loading a particle

* infinite loop is inconsistent; floating point errors?

* infinite loop happens on collision events

* starting cross section seems incorrect

* fixed the loop to mimic a do-while idiom; cross sections values are still incorrect

* fixed collapse method of vaults & added a debugger config file

* cell material is never set; adding function to fix this

* cells are still all made of default material

* source material is overwritten by box material

* reversed the search for material; should behave like QS

* fixed the cross section values

* refactor of constants for future addition

* adding a trait CustomFloat 1/?

* adding a trait CustomFloat 2/?

* adding a trait CustomFloat 3/?

* adding a trait CustomFloat 4/?

* adding a trait CustomFloat 5/5

* cargo fmt

* cleanup CustomFloat

* transit off processor(domain) isn't working

* fixed collapse method; fill_size was the amount of free space, not the total vault size

* refactoring vaults to suit Option type

* vault capacity gets modified at some point

* the capacity change occurs in cycle_tracking

* erratum: modifications to capacity happens in roulette function

* fixed test to fit behavior/usage of original function

* fixed the vault capacity change; AllEscape execution completes

* print cleanup; changes to timer to mimic originals

* timers done

* cargo fmt

* high number of collision vs 0 in QS; issue in segment outcome?

* fixed a wrong computation in seg outcome; now census # is incoherent

* missing term in distance to facet computation; back to off-domain transit issue

* init seems to be correct

* fixed duplicating neighbor domain in the comm object

* some facet crossing event are incoherent with original code because of a difference in the foreman value of cells

* may have found where the froeman issue comes from

* CellInfo isn't initialized correctly

* in QS, comm object takes a reference to the partitions; are the used partition not updated but a duplicate object is instead?

* alternative mesh building

* fix introduces inconsistency

* issues is created by inconsistencies between comm object and partition used to init domains; need to find a solution

* possible fix for inconsistency; need to workaround the borrow system

* mesh consistency fixed?

* mesh inconsistency still here

* adding unit tests 1/?

* adding unit tests 2/?

* adding unit tests 3/?

* Some minor improvements (#7)

* Propagate CustomFloat to file parsing

Avoid from_f64.

* Grouping functions as Parameters methods

* Decreasing code duplication

* Adding preliminary unit tests for ParticleVault

* moved mc_domain tests to source file

* better defined behavior of vault functions

* added a capacity function to ParticleVault to clear ambiguity

* Unittests do not require to make methods public (#8)

* modified map insert to not overwrite already present keys

* fixed GridAssignmentObject init

* adding unit test for GridAssignmentObject

* Add caching for github actions (#10)

* Add caching for github actions

* Always run CI

* Simplify CI

* We should not push directly on main branch

* format

* format

---------

Co-authored-by: imrn99 <95699343+imrn99@users.noreply.github.com>

* deleted bulk_storage.rs

* update lib.rs

* Dev test (#15)

* cleanup in mc_init

* added snap turtle test

* moved partition test from mc_domain.rs to mesh_partition.rs

* fused for loop in mesh_partition init

* fixed wrong init in partition test

* remote cells seem to be incorrect; same gid as the partition they were identified from

* the remote cells gids are coherent; gid 0 and gid max are duplicated for some reason

* added description of remote cells; the remote_n_idx value in build_cell_idx_map is incorrect

* completed test in mesh_partition.rs; need to implement the fix in init.mc

* updated init_mc; the issue is still here; confirmed there are cells not initialized in QS

* map is now correctly overwritten

* cleanup

* Cleanup clippy (#16)

* mc_domain.rs cleaned

* init_mc.rs cleaned

* init_mc.rs cleaned 2/2

* mc_utils.rs & particle_vault.rs cleaned

* mesh_partition.rs & global_fcc_grid.rs cleaned

* GAO and comm_object.rs cleaned

* misc cleanup

* energy_spectrum.rs & mct.rs cleaned

* montecarlo.rs cleaned

* misc cleanup

* population_control.rs cleaned

* tallies.rs cleaned

* bench cleanup & improvements in tallies field init

* Dev debug (#17)

* fixed wrong indexing in material list

* fixed mistake in vault function

* particles are rr'ed instead of split; scalar flux sum seems to miss a reset between steps

* removed unused fucntions

* fixed wrong balance value

* Value testing (#18)

* updated computation tests with hardcoded values

* particles were never invalidated; only set as processed

* AllEscape & AllAbsorb run correctly

* NoCollision seems correct; AllScattering is ambiguous

* better tallies summary

* better timer report

* Check consistency (#19)

* NonFlatXC crashes; does not run correctly either in QS

* NonFlatXC examples: incorrect managment of extra particles

* updated extra particle processing

* inconsistencies of parameters with boolean entries

* updated test for boolean parameters; not fixed yet

* fixed fetching of boolean parameters

* unwanted rr in population_control_guts

* fixed mistake when treating boolean parameters

* minor adjustments

* NoFission, AllScattering: the number of particles reaching census increases whenit should stay somewhat constant

* added code to check the cause of increasing census; need to compare results to QS

* fixed log omission

* average energy level goes down instead of being constant; # of particles reaching census increases; malfunction in roulettte ?

* numerical values used in low-weight RR and scattering event seems correct

* Fix census (#20)

* replaced TINY_FLOAT comparison to direct zero comparison

* added unit test for speed-energy conversion; fixed corresponding function & omission in mc_utils

* divergence with QS starts after the first step; scattering computation are incorrect?

* diverging number of split particles after the first step

* fixed energy spectrum update; probably still missing a reset

* cleanup main for readability

* fixed cross section out

* fixed update to particles in the cycle tracking function

* cleanup; there are still discrepancies in simulation

* AllScattering runs correctly; NoFission & Homogeneous still have issues with RR

* NoFission & Homogeneous examples now run correctly; need to cleanup & double check every example

* added figure of merit to timer

* Clean up (#21)

* removed extracted c++ code

* small issue in timer; incorrect power of 10 in CycleTracking section & figure of merit

* added mesh-specific constants for better flexibility

* cleanup comments & adding the new constants to code

* moved computation tests to source files

* cleanup & comments 1/?

* cleanup & comments 2/?

* cleanup & comments 3/?

* cleaner output files

* replaced some explicit default implementations with attribute

* more relevant timer names

* added efficiency rating

* removed some useless arguments from methods

* fixed figure of merit value

* cleaned timers; compare the value of the total column to QS' report

* better printing

* documentation for constants module & verbose consistency refactor

* verbose consistency refactor 2/?

* rand_n -> rand_f reafctor

* verbose consistency refactor 3/3

* Pre release refactor (#23)

* removed unused code facet_pair.rs

* refactor arguments of add_isotope method of NuclearData

* moved TupleX aliases to constants module

* moved geometrical offsets to constants module

* removed dead code from per-cycle timer report

* removed dead code from particle objects

* file structure: added simulation mod

* moved source function to population control file, load particle is in its own file now

* file structure: finished reorganizing files & imports; need to correct imports in tests

* fixed imports in tests

* removed more dead code & cleanup

* fixed test in doc

* Bench rng (#24)

* added skeleton for rng functions benchmark

* simple bench for rng functions completed; may need to test other generators of rand

* added bench for other rand Rng types

* removed dummy benchmark

* update cargo toml

* Benchmark examples (#25)

* added support for coralBenchmark values

* first test function + updated arguments

* all test added besides fluence

* added fluence test

* added support for different synthax in simulation block

* CTS benchmark seems functionnal but performances are much worse than QS

* added compiling options to speed up exec time; time spent in cycle tracking grows as the cycles passes

* prep work for refactor

* update sendqueue

* removed incorrect/useless code related to sendqueue/buffer; might be able to remove buffer

* extra prep work for refactor

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* update gitignore

* removed unnecessary vault overwrite

* removed dead code related to particle buffer

* added skeleton for the vault replacement

* impl done for particle container

* MCParticle -> MCBaseParticle conversion

* tweaked cycle tracking to make use of the Species attribute of particles

* reverted QS input files to their original state (beside errors) (#29)

* Documentation (#30)

* added crate-level doc

* fixed doc & fused impl block for Parameters

* crate-level Quickstart section

* crate-level Example section

* added module-level doc for constants

* parameter module: geometry parameter done

* parameter module: material parameter done

* parameter module: XS parameter done

* parameter module: simulation parameter done

* parameter module done

* montecarlo module-level documentation done

* moved summaries back to their respective module file

* simulation module: module-level, mct and population control done

* simulation module: segment outcome done

* simulation module: facet crossing event & collision event done

* simulation module done

* data module: direction cosine & energy spectrum done

* data module: mc vector done; not doing sendqueue because its structure will change

* data module: tallies done; reorganized the file & inlined a one line function

* data module: nuclear data done

* data module done; sendqueue doc will be added later

* geometry module: globalfccgrid, gao & cellstate done

* geometry module: facet done

* geometry module: mc_location & mesh partition done

* geometry module done; may group some code in a single file later

* utils module: module-level, commobject & benchmark correctness done

* utils module done

* fixed mc_vector example

* Refactor load particle (#33)

* Refactor branch catch-up (#32)

* Readme and License (#12)

* Small readme.

* Add licence.

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* reverted QS input files to their original state (beside errors) (#29)

* First release (#28)

* new tests and documentation

* input file parsing rewrite: now uses macros; removed unused
constructors

* input file parsing test done

* parse_input_file now returns a result with a vector containing all block errors; it will detect bad blocks while check_parameters_integrity will detect missing blocks

* montecarlo structure skeleton

* skeleton & documentation part 1/?

* skeleton & documentation 2/?

* skeleton & documentation 3/?

* skeleton & documentation 4/? may be done at the next commit

* skeleton & documentation 5/6

* skeleton & documentation 6/6

* dev_impl_skeleton -> dev (#1)

* function skeleton: montecarlo & sendqueue

* function skeleton: tallies

* function skeleton: mc_domain, energy_spectrum, bulk_storage; also added new structs

* refactored f64 -> num::Float before code gets too long

* function skeleton: some more empty implementations; mc_base_particle will notably differ from the original c++ code

* function skeleton: mc_particle, mc_time_info, mc_vector

* function skeleton: vaults, nuclear data; used PhantomData for energy_spectrum & MeshPartition

* basic main

* main skeleton & fast timer implem

* fmt & small changes to main/init_mc

* filled up main function

* format

* skeleton of an alternative MC_Particle_Buffer; need to check if it's necessary

* basic skeleton done for the buffer

* function skeleton: decomposition_object & global_fcc_grid

* function skeleton: collisison_event, physical_constants

* function skeleton: macroscopic_cross_section, mc_facet_crossing_event, mc_load_particle (moved in mc_utils with mc_source_now)

* function skeleton: mc_nearest_facet, mc_segment_outcome, mct

* function skeleton: facet_pair, grid_assignment_object

* formatting

* function skeleton: rng; need to add some documentation

* function skeleton: mc_distance_to_facet; documentation 1/?

* documentation 2/?

* documentation 3/?

* documentation 4/?

* documentation 5/5

* dev_mcvector -> dev (#2)

* first implementation of mc_vector

* added simple tests for operations; need to check for potential floating-point errors

* added tests for other methods of the struct

* cargo fmt

* more benchmark related stuff; putting it on hold for now

* cleanup benchmarks, additional method for approximate comparison of MCVectors

* update toml

* dev_particles -> dev (#3)

* completed MCParticle functions; removed getters

* cargo fmt

* completed MCBaseParticle functions; removed getters and unused/undefined functions

* completed particle_vault functions; many differs from the original implem so comparing behavior will be mandatory

* completed functions of particle_vault_container

* completed funcions of mc_particle_buffer but it might be interesting to totally dismiss the structure

* cargo fmt

* converted particle vault to model invalidate particle with value None

* added a new enum to model particle species

* load_particle complete

* cleanup and cargo fmt

* started testing vaults; collapse() not working

* added dummy test function to identify the issue; second vault/vector keeps its initial value

* fixed the collapse function; the second vault was updated using the new length of the first one (==fill_size)

* more testing

* more tests and cleanup

* cargo fmt

* final test for vaults; cleanup and note on pop_... behavior

* format before merge

* dev_data -> dev (#4)

* completed energy_spectrum

* completed polynomial and NuclearDataReaction; sample collision will need testing as its behavior was unclear in the original code

* completing NuclearData

* completed nuclear_data; is the species field useless in QS?

* cargo fmt

* material_database complete

* started to complete tallies; goodbye bulkstorage?

* cargo fmt

* tallies continued; scalar_flux_sum readability is questionable

* workaround for usage of consts

* workaround for usage of consts 2/2

* converted Fluene in a struct, implemented Fluence::compute()

* Tallies:print_summary done; changed timer functions to use enums directly

* cargo fmt

* Tallies:cycle_finalize done

* Tallies:initialize_tallies() done

* format & cleanup

* SendQueue done; None of a queue's properties are used, maybe replace it?

* added some test for SendQueue; need to cleanup the structure

* cleanup & update of SendQueue

* cargo fmt

* Dev computation (#5)

* RNG State done, need to test the hashing algorithm to compare results with original function

* DirectionCosine::sample_isotropic done

* DirectionCosine done; need to compare the computed values with original code

* doc

* started to complete macro_cross_section.rs; replaced the usage of a magic value by adding a separate method

* cargo fmt

* completed macro_cross_section functions

* added test to compare results; the pseuo hash function of mc_rng_state gives a different result

* fiex mc_rng_state, the generator now yields the same numbers

* added test for sample_isotropic; added c files used to test original code

* added rotation test; all functions seems to give the same results

* cargo fmt

* computation test can be run using --nocapture to compare results with the original functions

* update_trajectory() done

* finished collision_event

* cargo fmt

* finished segment_outcome

* cargo fmt

* added rust test for update trajectory & needed c++ files

* wrote test in c files; need to add a makefile and check results

* velocity & direction cosine differ

* corrected test, update_trajectory ok

* very simple makefile

* added internal functions of mct.rs; this module needs refactor asap

* started implementation of mct.rs function; lots of refactoring to do on this file

* completed generate_coordinate_3dg; updating functions signature

* cargo fmt

* finished public mct functions; cleanup needed

* cargo fmt

* mct functions continued; will cleanup after mct & facet_crossing_event are completed

* mct completed; cleanup todo

* completed facet_crossing_event

* cargo fmt

* mct cleanup 1/?

* mct cleanup 2/2; updated MCLocation to avoid magic values

* cargo fmt

* added test for volume computation & move particle

* all test added; the belongs_or_return macro has diverging results

* test passed; fixed a mistake in the C code

* cleanup & format

* dev_geometry -> dev (#6)

* completed mc_cell_state, mc_distance_to_facet, mc_facet_adjacency; updated structures to work around magic values

* completed mc_facet_geometry, mc_location, mc_nearest_facet, facet_pair; leaving refactor for later

* grid_assignment_object.rs 1/2

* grid_assignment_object.rs 2/2

* mesh_partition.rs 1/?

* added a communication object

* mesh partition 2/?; fixed the comm object and build_cell_idx_map method

* cargo fmt

* mesh_partition.rs 3/?

* mesh_partition.rs 4/4

* cargo fmt

* global_fcc_grid.rs 1/?

* global_fcc_grid.rs 2/?

* global_fcc_grid.rs 3/3

* cargo fmt

* completed decomposition_object.rs; removed the debug mode for now

* mc_domain.rs 1/?

* mcdomain.rs 2/?

* cargo fmt

* mcdomain.rs 3/?

* mcdomain.rs 4/4

* cleanup & format

* Dev sim (#11)

* skeleton init_mc

* init_mc: completed init_nuclear_data

* init_mc: completed init_mesh; nedd to complete its internal functions

* init_mc: init_mesh fully completed

* init_mc: initialize_tallies refactor to reduce unnecessary borrows

* init_mc: check_cross_sections 1/2

* cargo fmt

* init_mc: completed

* montecarlo.rs completed; dirty refactor of MCParticleBuffer to delete the mcco reference field

* cargo fmt

* population_control.rs 1/?

* population_control.rs 2/?

* population_control.rs 3/3

* swapped generic float T for f64 in mc_time_info

* mc_utils: source_now completed

* cycle_tracking.rs 1/?; light refactor of generate_coordinate_3dg

* cycle_tracking.rs: 2/2

* making the program run 1/?

* making the program run 2/?

* making the program run 3/?

* making the program run 4/?

* making the program run 5/?

* making the program run 6/?; very strange oob error

* making the program run 7/?; maps behave differently in c++ and rust :)

* cargo fmt

* making the program run 8/?

* making the program run 9/?; might pause this to remove Rc<RefCell> pattern

* making the program run 10/?

* removing RcRefCell pattern 1/?

* Removing RcRefCell pattern 2/2

* cargo fmt

* making the program run 11/?; working around the borrow system by passing indexes instead of references

* making the program run 12/?

* making the program run 13/?

* infinite looping in cycle_tracking

* fixed test to move on next iteration; used # of of processing vaults instead of # of processing particles

* program runs; need to check outputs now

* particles aren't counted in energy spectrum

* add_processing_particle is never called

* particles are now created

* making the program run 14/?

* some structures arent initialized correctly?

* making the program run 15/?

* fixed collision event

* cargo fmt

* fixed get_first_empty_vault

* add_processing_particle not working

* cargo fmt

* problem with processing/valid particles?

* need to update collapse functions to work with options

* add processing particles not called for n_particles == 1,000 but called for 10,000

* particles disappear during tracking

* particles dont reach census / arent counted as processed

* load_particle always return None; particle are set as none without going into processed ?

* particles are here but are never loaded

* vault access issue in load_particle

* found issue: new particles are pushed, making the vault twice its correct size; the first half is None hence the weird behavior

* fix introduced a new issue

* fixed the vaults; infinite loop after loading a particle

* infinite loop is inconsistent; floating point errors?

* infinite loop happens on collision events

* starting cross section seems incorrect

* fixed the loop to mimic a do-while idiom; cross sections values are still incorrect

* fixed collapse method of vaults & added a debugger config file

* cell material is never set; adding function to fix this

* cells are still all made of default material

* source material is overwritten by box material

* reversed the search for material; should behave like QS

* fixed the cross section values

* refactor of constants for future addition

* adding a trait CustomFloat 1/?

* adding a trait CustomFloat 2/?

* adding a trait CustomFloat 3/?

* adding a trait CustomFloat 4/?

* adding a trait CustomFloat 5/5

* cargo fmt

* cleanup CustomFloat

* transit off processor(domain) isn't working

* fixed collapse method; fill_size was the amount of free space, not the total vault size

* refactoring vaults to suit Option type

* vault capacity gets modified at some point

* the capacity change occurs in cycle_tracking

* erratum: modifications to capacity happens in roulette function

* fixed test to fit behavior/usage of original function

* fixed the vault capacity change; AllEscape execution completes

* print cleanup; changes to timer to mimic originals

* timers done

* cargo fmt

* high number of collision vs 0 in QS; issue in segment outcome?

* fixed a wrong computation in seg outcome; now census # is incoherent

* missing term in distance to facet computation; back to off-domain transit issue

* init seems to be correct

* fixed duplicating neighbor domain in the comm object

* some facet crossing event are incoherent with original code because of a difference in the foreman value of cells

* may have found where the froeman issue comes from

* CellInfo isn't initialized correctly

* in QS, comm object takes a reference to the partitions; are the used partition not updated but a duplicate object is instead?

* alternative mesh building

* fix introduces inconsistency

* issues is created by inconsistencies between comm object and partition used to init domains; need to find a solution

* possible fix for inconsistency; need to workaround the borrow system

* mesh consistency fixed?

* mesh inconsistency still here

* adding unit tests 1/?

* adding unit tests 2/?

* adding unit tests 3/?

* Some minor improvements (#7)

* Propagate CustomFloat to file parsing

Avoid from_f64.

* Grouping functions as Parameters methods

* Decreasing code duplication

* Adding preliminary unit tests for ParticleVault

* moved mc_domain tests to source file

* better defined behavior of vault functions

* added a capacity function to ParticleVault to clear ambiguity

* Unittests do not require to make methods public (#8)

* modified map insert to not overwrite already present keys

* fixed GridAssignmentObject init

* adding unit test for GridAssignmentObject

* Add caching for github actions (#10)

* Add caching for github actions

* Always run CI

* Simplify CI

* We should not push directly on main branch

* format

* format

---------

Co-authored-by: imrn99 <95699343+imrn99@users.noreply.github.com>

* deleted bulk_storage.rs

* update lib.rs

* Dev test (#15)

* cleanup in mc_init

* added snap turtle test

* moved partition test from mc_domain.rs to mesh_partition.rs

* fused for loop in mesh_partition init

* fixed wrong init in partition test

* remote cells seem to be incorrect; same gid as the partition they were identified from

* the remote cells gids are coherent; gid 0 and gid max are duplicated for some reason

* added description of remote cells; the remote_n_idx value in build_cell_idx_map is incorrect

* completed test in mesh_partition.rs; need to implement the fix in init.mc

* updated init_mc; the issue is still here; confirmed there are cells not initialized in QS

* map is now correctly overwritten

* cleanup

* Cleanup clippy (#16)

* mc_domain.rs cleaned

* init_mc.rs cleaned

* init_mc.rs cleaned 2/2

* mc_utils.rs & particle_vault.rs cleaned

* mesh_partition.rs & global_fcc_grid.rs cleaned

* GAO and comm_object.rs cleaned

* misc cleanup

* energy_spectrum.rs & mct.rs cleaned

* montecarlo.rs cleaned

* misc cleanup

* population_control.rs cleaned

* tallies.rs cleaned

* bench cleanup & improvements in tallies field init

* Dev debug (#17)

* fixed wrong indexing in material list

* fixed mistake in vault function

* particles are rr'ed instead of split; scalar flux sum seems to miss a reset between steps

* removed unused fucntions

* fixed wrong balance value

* Value testing (#18)

* updated computation tests with hardcoded values

* particles were never invalidated; only set as processed

* AllEscape & AllAbsorb run correctly

* NoCollision seems correct; AllScattering is ambiguous

* better tallies summary

* better timer report

* Check consistency (#19)

* NonFlatXC crashes; does not run correctly either in QS

* NonFlatXC examples: incorrect managment of extra particles

* updated extra particle processing

* inconsistencies of parameters with boolean entries

* updated test for boolean parameters; not fixed yet

* fixed fetching of boolean parameters

* unwanted rr in population_control_guts

* fixed mistake when treating boolean parameters

* minor adjustments

* NoFission, AllScattering: the number of particles reaching census increases whenit should stay somewhat constant

* added code to check the cause of increasing census; need to compare results to QS

* fixed log omission

* average energy level goes down instead of being constant; # of particles reaching census increases; malfunction in roulettte ?

* numerical values used in low-weight RR and scattering event seems correct

* Fix census (#20)

* replaced TINY_FLOAT comparison to direct zero comparison

* added unit test for speed-energy conversion; fixed corresponding function & omission in mc_utils

* divergence with QS starts after the first step; scattering computation are incorrect?

* diverging number of split particles after the first step

* fixed energy spectrum update; probably still missing a reset

* cleanup main for readability

* fixed cross section out

* fixed update to particles in the cycle tracking function

* cleanup; there are still discrepancies in simulation

* AllScattering runs correctly; NoFission & Homogeneous still have issues with RR

* NoFission & Homogeneous examples now run correctly; need to cleanup & double check every example

* added figure of merit to timer

* Clean up (#21)

* removed extracted c++ code

* small issue in timer; incorrect power of 10 in CycleTracking section & figure of merit

* added mesh-specific constants for better flexibility

* cleanup comments & adding the new constants to code

* moved computation tests to source files

* cleanup & comments 1/?

* cleanup & comments 2/?

* cleanup & comments 3/?

* cleaner output files

* replaced some explicit default implementations with attribute

* more relevant timer names

* added efficiency rating

* removed some useless arguments from methods

* fixed figure of merit value

* cleaned timers; compare the value of the total column to QS' report

* better printing

* documentation for constants module & verbose consistency refactor

* verbose consistency refactor 2/?

* rand_n -> rand_f reafctor

* verbose consistency refactor 3/3

* Pre release refactor (#23)

* removed unused code facet_pair.rs

* refactor arguments of add_isotope method of NuclearData

* moved TupleX aliases to constants module

* moved geometrical offsets to constants module

* removed dead code from per-cycle timer report

* removed dead code from particle objects

* file structure: added simulation mod

* moved source function to population control file, load particle is in its own file now

* file structure: finished reorganizing files & imports; need to correct imports in tests

* fixed imports in tests

* removed more dead code & cleanup

* fixed test in doc

* Bench rng (#24)

* added skeleton for rng functions benchmark

* simple bench for rng functions completed; may need to test other generators of rand

* added bench for other rand Rng types

* removed dummy benchmark

* update cargo toml

* Benchmark examples (#25)

* added support for coralBenchmark values

* first test function + updated arguments

* all test added besides fluence

* added fluence test

* added support for different synthax in simulation block

* CTS benchmark seems functionnal but performances are much worse than QS

* added compiling options to speed up exec time; time spent in cycle tracking grows as the cycles passes

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* reverted QS input files to their original state (beside errors) (#29)

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* Documentation (#30)

* added crate-level doc

* fixed doc & fused impl block for Parameters

* crate-level Quickstart section

* crate-level Example section

* added module-level doc for constants

* parameter module: geometry parameter done

* parameter module: material parameter done

* parameter module: XS parameter done

* parameter module: simulation parameter done

* parameter module done

* montecarlo module-level documentation done

* moved summaries back to their respective module file

* simulation module: module-level, mct and population control done

* simulation module: segment outcome done

* simulation module: facet crossing event & collision event done

* simulation module done

* data module: direction cosine & energy spectrum done

* data module: mc vector done; not doing sendqueue because its structure will change

* data module: tallies done; reorganized the file & inlined a one line function

* data module: nuclear data done

* data module done; sendqueue doc will be added later

* geometry module: globalfccgrid, gao & cellstate done

* geometry module: facet done

* geometry module: mc_location & mesh partition done

* geometry module done; may group some code in a single file later

* utils module: module-level, commobject & benchmark correctness done

* utils module done

* fixed mc_vector example

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* added doc for sendqueue & moved tests back to source file

* removed dead code: mc_particle_buffer

* added init code for new containers

* updated function signatures

* non-functionnal: introduced new containers to cycle init code

* non-functionnal: introduced new containers to cycle tracking code

* non-functionnal: introduced new containers to cycle finalyze code

* warning cleanup; population control functions look erroneous

* not working; population control functions seem correct

* not working; low weight rr seem correct

* added timers back although their value is unexpected

* added missing code back; refactor is working

* cleanup of old code

* added extra_capacity computations

* removed ParticleVaultContainer from MonteCarlo object

* removed load particle

* doc particles module

* removed old vaults/containers

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* Particle rework (#35)

* modifications to particle structures done; need to update the rest of the code

* update to population control & mct module

* update to collision & facet crossing events modules

* update cycletracking & segment outcome modules

* removed useless usage of full particle in population control

* changed direction cosine structure to used MCVector & operators definition

* cleanup commented code

* Function cleanup (#36)

* updated coral_benchmark_correctness signature

* replaced partial cross products in mct.rs; need to write a small bench to see if the performance loss is negligible

* added benchmark for full cross product; partial product is much faster but may be less prone to parallelization?

* reverted cross product in mct.rs to partial form

* removed useless return from facet crossing event function

* modified cycle finalize functions to remove unnecessary nested calls

* removed internal timer pause of CycleFinalize as its results are misleading

* comment cleanup & init_mc module renamed

* Facet module (#37)

* fixed doc warning

* moved distance to facet to new module

* moved mc_facet_geometry to new module

* moved mc_nearest_facet to new module

* moved mc_facet_adjacency to new module

* fixed doc warning in send_queue

* misc doc and comments for facets module

* Code cleanup (#38)

* simpler sendqueue tests

* renamed a variable in source_now for readability

* replaced some numerical values with constants in mct.rs

* tallies summary header rewrite

* removed some misused/unused code for future CLI update

* CLI & Parameters update; further modifications will be done when introducing parallelism

* added basic code for MCProcessorInfo

* added skeleton for execution modes in main

* doc update

* Dead code removal (#39)

* removed useless constructor/default implem for Material structure

* removed unused get_cell method & added comments for future changes

* removed unused/unobtainable enum value of ReactionType

* removed unused/unobtainable enum value of MCTallyEvent

* removed unused/unobtainable enum value of MCSegmentOutcome

* fused match arms in segment outcome function

* removed unused parameter f_max & some fields of MCTimeInfo

* removed unused field task of MCParticle

* removed unused Display impl for MCParticle

* Tallies rep (#44)

* removed scalar flux replication

* removed cell tally replication

* removed balance tally replication & index usage

* removed replication fields in Tallies

* removed replication fields in SimulationParameters

* removed replication fields of the CLI

* doc update

* Loop rewrite (#45)

* ScalarFluxDomain & CellTallyDomain 'add' rewrite

* scalar flux sum rewrite

* modified Fluence to accomodate for loop rewrite

* fluence computation rewrite; need testing to make sure the new code yield the same results

* cleanup Fluence type

* small changes to mc_domain; need to simplify sourcing function

* implemetned direct cell tally update in source_now

* deleted size() method from sendqueue

* Profiling (#46)

* replaced unsigned int of timers by a Duration

* fixed timer report

* corrections of existing profiling summaries + base file for current version

* added report & flamegraphs for homogeneous test

* added CTS2 benchmark flamegraph & report

* typo

* update QS flamegraph with better sample frequency

* added f64/f32 comparison skeleton to summary; program crashes when using f32; probably because of const conversion

* Fix f32 (#47)

* workaround float type specific constant

* replaced old constants execpt in tests

* f32 non-functionnal; f64 still good

* f32 ok; fixed unwanted behavior with -0 value and .is_sign_negative() method

* swapped all .is_sign_negative() call to regular comparison

* CTS bench doesn't run with f32; need to test with specific examples

* fixed AllEscape for f32; AllScattering not working

* all specific tests ok; tracking kernel never finishes for CTS

* CTS loops in the collision_event function

* starting X-section is NaN

* reaction X-section are sometimes NaN

* Scatter reaction XS is NaN

* Scatter reaction XS computation in init reach number too big for f32

* changed the XS init to use f64 and then convert to desired float type

* switched back to f64 & added doc for the constants

* added flamegraph & timer report for CTS bench

* added figure of merit comparison to the profiling data

* prettier doc

* Tweaks before release (#49)

* removed duplicated comments of tallies.rs

* removed num_points field from MCFacetAdjacency

* removed PartialEq implem of MCParticle

* better float constants management

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>
imrn99 added a commit that referenced this pull request Apr 19, 2023
* new tests and documentation

* input file parsing rewrite: now uses macros; removed unused
constructors

* input file parsing test done

* parse_input_file now returns a result with a vector containing all block errors; it will detect bad blocks while check_parameters_integrity will detect missing blocks

* montecarlo structure skeleton

* skeleton & documentation part 1/?

* skeleton & documentation 2/?

* skeleton & documentation 3/?

* skeleton & documentation 4/? may be done at the next commit

* skeleton & documentation 5/6

* skeleton & documentation 6/6

* dev_impl_skeleton -> dev (#1)

* function skeleton: montecarlo & sendqueue

* function skeleton: tallies

* function skeleton: mc_domain, energy_spectrum, bulk_storage; also added new structs

* refactored f64 -> num::Float before code gets too long

* function skeleton: some more empty implementations; mc_base_particle will notably differ from the original c++ code

* function skeleton: mc_particle, mc_time_info, mc_vector

* function skeleton: vaults, nuclear data; used PhantomData for energy_spectrum & MeshPartition

* basic main

* main skeleton & fast timer implem

* fmt & small changes to main/init_mc

* filled up main function

* format

* skeleton of an alternative MC_Particle_Buffer; need to check if it's necessary

* basic skeleton done for the buffer

* function skeleton: decomposition_object & global_fcc_grid

* function skeleton: collisison_event, physical_constants

* function skeleton: macroscopic_cross_section, mc_facet_crossing_event, mc_load_particle (moved in mc_utils with mc_source_now)

* function skeleton: mc_nearest_facet, mc_segment_outcome, mct

* function skeleton: facet_pair, grid_assignment_object

* formatting

* function skeleton: rng; need to add some documentation

* function skeleton: mc_distance_to_facet; documentation 1/?

* documentation 2/?

* documentation 3/?

* documentation 4/?

* documentation 5/5

* dev_mcvector -> dev (#2)

* first implementation of mc_vector

* added simple tests for operations; need to check for potential floating-point errors

* added tests for other methods of the struct

* cargo fmt

* more benchmark related stuff; putting it on hold for now

* cleanup benchmarks, additional method for approximate comparison of MCVectors

* update toml

* dev_particles -> dev (#3)

* completed MCParticle functions; removed getters

* cargo fmt

* completed MCBaseParticle functions; removed getters and unused/undefined functions

* completed particle_vault functions; many differs from the original implem so comparing behavior will be mandatory

* completed functions of particle_vault_container

* completed funcions of mc_particle_buffer but it might be interesting to totally dismiss the structure

* cargo fmt

* converted particle vault to model invalidate particle with value None

* added a new enum to model particle species

* load_particle complete

* cleanup and cargo fmt

* started testing vaults; collapse() not working

* added dummy test function to identify the issue; second vault/vector keeps its initial value

* fixed the collapse function; the second vault was updated using the new length of the first one (==fill_size)

* more testing

* more tests and cleanup

* cargo fmt

* final test for vaults; cleanup and note on pop_... behavior

* format before merge

* dev_data -> dev (#4)

* completed energy_spectrum

* completed polynomial and NuclearDataReaction; sample collision will need testing as its behavior was unclear in the original code

* completing NuclearData

* completed nuclear_data; is the species field useless in QS?

* cargo fmt

* material_database complete

* started to complete tallies; goodbye bulkstorage?

* cargo fmt

* tallies continued; scalar_flux_sum readability is questionable

* workaround for usage of consts

* workaround for usage of consts 2/2

* converted Fluene in a struct, implemented Fluence::compute()

* Tallies:print_summary done; changed timer functions to use enums directly

* cargo fmt

* Tallies:cycle_finalize done

* Tallies:initialize_tallies() done

* format & cleanup

* SendQueue done; None of a queue's properties are used, maybe replace it?

* added some test for SendQueue; need to cleanup the structure

* cleanup & update of SendQueue

* cargo fmt

* Dev computation (#5)

* RNG State done, need to test the hashing algorithm to compare results with original function

* DirectionCosine::sample_isotropic done

* DirectionCosine done; need to compare the computed values with original code

* doc

* started to complete macro_cross_section.rs; replaced the usage of a magic value by adding a separate method

* cargo fmt

* completed macro_cross_section functions

* added test to compare results; the pseuo hash function of mc_rng_state gives a different result

* fiex mc_rng_state, the generator now yields the same numbers

* added test for sample_isotropic; added c files used to test original code

* added rotation test; all functions seems to give the same results

* cargo fmt

* computation test can be run using --nocapture to compare results with the original functions

* update_trajectory() done

* finished collision_event

* cargo fmt

* finished segment_outcome

* cargo fmt

* added rust test for update trajectory & needed c++ files

* wrote test in c files; need to add a makefile and check results

* velocity & direction cosine differ

* corrected test, update_trajectory ok

* very simple makefile

* added internal functions of mct.rs; this module needs refactor asap

* started implementation of mct.rs function; lots of refactoring to do on this file

* completed generate_coordinate_3dg; updating functions signature

* cargo fmt

* finished public mct functions; cleanup needed

* cargo fmt

* mct functions continued; will cleanup after mct & facet_crossing_event are completed

* mct completed; cleanup todo

* completed facet_crossing_event

* cargo fmt

* mct cleanup 1/?

* mct cleanup 2/2; updated MCLocation to avoid magic values

* cargo fmt

* added test for volume computation & move particle

* all test added; the belongs_or_return macro has diverging results

* test passed; fixed a mistake in the C code

* cleanup & format

* dev_geometry -> dev (#6)

* completed mc_cell_state, mc_distance_to_facet, mc_facet_adjacency; updated structures to work around magic values

* completed mc_facet_geometry, mc_location, mc_nearest_facet, facet_pair; leaving refactor for later

* grid_assignment_object.rs 1/2

* grid_assignment_object.rs 2/2

* mesh_partition.rs 1/?

* added a communication object

* mesh partition 2/?; fixed the comm object and build_cell_idx_map method

* cargo fmt

* mesh_partition.rs 3/?

* mesh_partition.rs 4/4

* cargo fmt

* global_fcc_grid.rs 1/?

* global_fcc_grid.rs 2/?

* global_fcc_grid.rs 3/3

* cargo fmt

* completed decomposition_object.rs; removed the debug mode for now

* mc_domain.rs 1/?

* mcdomain.rs 2/?

* cargo fmt

* mcdomain.rs 3/?

* mcdomain.rs 4/4

* cleanup & format

* Dev sim (#11)

* skeleton init_mc

* init_mc: completed init_nuclear_data

* init_mc: completed init_mesh; nedd to complete its internal functions

* init_mc: init_mesh fully completed

* init_mc: initialize_tallies refactor to reduce unnecessary borrows

* init_mc: check_cross_sections 1/2

* cargo fmt

* init_mc: completed

* montecarlo.rs completed; dirty refactor of MCParticleBuffer to delete the mcco reference field

* cargo fmt

* population_control.rs 1/?

* population_control.rs 2/?

* population_control.rs 3/3

* swapped generic float T for f64 in mc_time_info

* mc_utils: source_now completed

* cycle_tracking.rs 1/?; light refactor of generate_coordinate_3dg

* cycle_tracking.rs: 2/2

* making the program run 1/?

* making the program run 2/?

* making the program run 3/?

* making the program run 4/?

* making the program run 5/?

* making the program run 6/?; very strange oob error

* making the program run 7/?; maps behave differently in c++ and rust :)

* cargo fmt

* making the program run 8/?

* making the program run 9/?; might pause this to remove Rc<RefCell> pattern

* making the program run 10/?

* removing RcRefCell pattern 1/?

* Removing RcRefCell pattern 2/2

* cargo fmt

* making the program run 11/?; working around the borrow system by passing indexes instead of references

* making the program run 12/?

* making the program run 13/?

* infinite looping in cycle_tracking

* fixed test to move on next iteration; used # of of processing vaults instead of # of processing particles

* program runs; need to check outputs now

* particles aren't counted in energy spectrum

* add_processing_particle is never called

* particles are now created

* making the program run 14/?

* some structures arent initialized correctly?

* making the program run 15/?

* fixed collision event

* cargo fmt

* fixed get_first_empty_vault

* add_processing_particle not working

* cargo fmt

* problem with processing/valid particles?

* need to update collapse functions to work with options

* add processing particles not called for n_particles == 1,000 but called for 10,000

* particles disappear during tracking

* particles dont reach census / arent counted as processed

* load_particle always return None; particle are set as none without going into processed ?

* particles are here but are never loaded

* vault access issue in load_particle

* found issue: new particles are pushed, making the vault twice its correct size; the first half is None hence the weird behavior

* fix introduced a new issue

* fixed the vaults; infinite loop after loading a particle

* infinite loop is inconsistent; floating point errors?

* infinite loop happens on collision events

* starting cross section seems incorrect

* fixed the loop to mimic a do-while idiom; cross sections values are still incorrect

* fixed collapse method of vaults & added a debugger config file

* cell material is never set; adding function to fix this

* cells are still all made of default material

* source material is overwritten by box material

* reversed the search for material; should behave like QS

* fixed the cross section values

* refactor of constants for future addition

* adding a trait CustomFloat 1/?

* adding a trait CustomFloat 2/?

* adding a trait CustomFloat 3/?

* adding a trait CustomFloat 4/?

* adding a trait CustomFloat 5/5

* cargo fmt

* cleanup CustomFloat

* transit off processor(domain) isn't working

* fixed collapse method; fill_size was the amount of free space, not the total vault size

* refactoring vaults to suit Option type

* vault capacity gets modified at some point

* the capacity change occurs in cycle_tracking

* erratum: modifications to capacity happens in roulette function

* fixed test to fit behavior/usage of original function

* fixed the vault capacity change; AllEscape execution completes

* print cleanup; changes to timer to mimic originals

* timers done

* cargo fmt

* high number of collision vs 0 in QS; issue in segment outcome?

* fixed a wrong computation in seg outcome; now census # is incoherent

* missing term in distance to facet computation; back to off-domain transit issue

* init seems to be correct

* fixed duplicating neighbor domain in the comm object

* some facet crossing event are incoherent with original code because of a difference in the foreman value of cells

* may have found where the froeman issue comes from

* CellInfo isn't initialized correctly

* in QS, comm object takes a reference to the partitions; are the used partition not updated but a duplicate object is instead?

* alternative mesh building

* fix introduces inconsistency

* issues is created by inconsistencies between comm object and partition used to init domains; need to find a solution

* possible fix for inconsistency; need to workaround the borrow system

* mesh consistency fixed?

* mesh inconsistency still here

* adding unit tests 1/?

* adding unit tests 2/?

* adding unit tests 3/?

* Some minor improvements (#7)

* Propagate CustomFloat to file parsing

Avoid from_f64.

* Grouping functions as Parameters methods

* Decreasing code duplication

* Adding preliminary unit tests for ParticleVault

* moved mc_domain tests to source file

* better defined behavior of vault functions

* added a capacity function to ParticleVault to clear ambiguity

* Unittests do not require to make methods public (#8)

* modified map insert to not overwrite already present keys

* fixed GridAssignmentObject init

* adding unit test for GridAssignmentObject

* Add caching for github actions (#10)

* Add caching for github actions

* Always run CI

* Simplify CI

* We should not push directly on main branch

* format

* format

---------

Co-authored-by: imrn99 <95699343+imrn99@users.noreply.github.com>

* deleted bulk_storage.rs

* update lib.rs

* Dev test (#15)

* cleanup in mc_init

* added snap turtle test

* moved partition test from mc_domain.rs to mesh_partition.rs

* fused for loop in mesh_partition init

* fixed wrong init in partition test

* remote cells seem to be incorrect; same gid as the partition they were identified from

* the remote cells gids are coherent; gid 0 and gid max are duplicated for some reason

* added description of remote cells; the remote_n_idx value in build_cell_idx_map is incorrect

* completed test in mesh_partition.rs; need to implement the fix in init.mc

* updated init_mc; the issue is still here; confirmed there are cells not initialized in QS

* map is now correctly overwritten

* cleanup

* Cleanup clippy (#16)

* mc_domain.rs cleaned

* init_mc.rs cleaned

* init_mc.rs cleaned 2/2

* mc_utils.rs & particle_vault.rs cleaned

* mesh_partition.rs & global_fcc_grid.rs cleaned

* GAO and comm_object.rs cleaned

* misc cleanup

* energy_spectrum.rs & mct.rs cleaned

* montecarlo.rs cleaned

* misc cleanup

* population_control.rs cleaned

* tallies.rs cleaned

* bench cleanup & improvements in tallies field init

* Dev debug (#17)

* fixed wrong indexing in material list

* fixed mistake in vault function

* particles are rr'ed instead of split; scalar flux sum seems to miss a reset between steps

* removed unused fucntions

* fixed wrong balance value

* Value testing (#18)

* updated computation tests with hardcoded values

* particles were never invalidated; only set as processed

* AllEscape & AllAbsorb run correctly

* NoCollision seems correct; AllScattering is ambiguous

* better tallies summary

* better timer report

* Check consistency (#19)

* NonFlatXC crashes; does not run correctly either in QS

* NonFlatXC examples: incorrect managment of extra particles

* updated extra particle processing

* inconsistencies of parameters with boolean entries

* updated test for boolean parameters; not fixed yet

* fixed fetching of boolean parameters

* unwanted rr in population_control_guts

* fixed mistake when treating boolean parameters

* minor adjustments

* NoFission, AllScattering: the number of particles reaching census increases whenit should stay somewhat constant

* added code to check the cause of increasing census; need to compare results to QS

* fixed log omission

* average energy level goes down instead of being constant; # of particles reaching census increases; malfunction in roulettte ?

* numerical values used in low-weight RR and scattering event seems correct

* Fix census (#20)

* replaced TINY_FLOAT comparison to direct zero comparison

* added unit test for speed-energy conversion; fixed corresponding function & omission in mc_utils

* divergence with QS starts after the first step; scattering computation are incorrect?

* diverging number of split particles after the first step

* fixed energy spectrum update; probably still missing a reset

* cleanup main for readability

* fixed cross section out

* fixed update to particles in the cycle tracking function

* cleanup; there are still discrepancies in simulation

* AllScattering runs correctly; NoFission & Homogeneous still have issues with RR

* NoFission & Homogeneous examples now run correctly; need to cleanup & double check every example

* added figure of merit to timer

* Clean up (#21)

* removed extracted c++ code

* small issue in timer; incorrect power of 10 in CycleTracking section & figure of merit

* added mesh-specific constants for better flexibility

* cleanup comments & adding the new constants to code

* moved computation tests to source files

* cleanup & comments 1/?

* cleanup & comments 2/?

* cleanup & comments 3/?

* cleaner output files

* replaced some explicit default implementations with attribute

* more relevant timer names

* added efficiency rating

* removed some useless arguments from methods

* fixed figure of merit value

* cleaned timers; compare the value of the total column to QS' report

* better printing

* documentation for constants module & verbose consistency refactor

* verbose consistency refactor 2/?

* rand_n -> rand_f reafctor

* verbose consistency refactor 3/3

* Pre release refactor (#23)

* removed unused code facet_pair.rs

* refactor arguments of add_isotope method of NuclearData

* moved TupleX aliases to constants module

* moved geometrical offsets to constants module

* removed dead code from per-cycle timer report

* removed dead code from particle objects

* file structure: added simulation mod

* moved source function to population control file, load particle is in its own file now

* file structure: finished reorganizing files & imports; need to correct imports in tests

* fixed imports in tests

* removed more dead code & cleanup

* fixed test in doc

* Bench rng (#24)

* added skeleton for rng functions benchmark

* simple bench for rng functions completed; may need to test other generators of rand

* added bench for other rand Rng types

* removed dummy benchmark

* update cargo toml

* Benchmark examples (#25)

* added support for coralBenchmark values

* first test function + updated arguments

* all test added besides fluence

* added fluence test

* added support for different synthax in simulation block

* CTS benchmark seems functionnal but performances are much worse than QS

* added compiling options to speed up exec time; time spent in cycle tracking grows as the cycles passes

* prep work for refactor

* update sendqueue

* removed incorrect/useless code related to sendqueue/buffer; might be able to remove buffer

* extra prep work for refactor

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* update gitignore

* removed unnecessary vault overwrite

* removed dead code related to particle buffer

* added skeleton for the vault replacement

* impl done for particle container

* MCParticle -> MCBaseParticle conversion

* tweaked cycle tracking to make use of the Species attribute of particles

* reverted QS input files to their original state (beside errors) (#29)

* Documentation (#30)

* added crate-level doc

* fixed doc & fused impl block for Parameters

* crate-level Quickstart section

* crate-level Example section

* added module-level doc for constants

* parameter module: geometry parameter done

* parameter module: material parameter done

* parameter module: XS parameter done

* parameter module: simulation parameter done

* parameter module done

* montecarlo module-level documentation done

* moved summaries back to their respective module file

* simulation module: module-level, mct and population control done

* simulation module: segment outcome done

* simulation module: facet crossing event & collision event done

* simulation module done

* data module: direction cosine & energy spectrum done

* data module: mc vector done; not doing sendqueue because its structure will change

* data module: tallies done; reorganized the file & inlined a one line function

* data module: nuclear data done

* data module done; sendqueue doc will be added later

* geometry module: globalfccgrid, gao & cellstate done

* geometry module: facet done

* geometry module: mc_location & mesh partition done

* geometry module done; may group some code in a single file later

* utils module: module-level, commobject & benchmark correctness done

* utils module done

* fixed mc_vector example

* Refactor load particle (#33)

* Refactor branch catch-up (#32)

* Readme and License (#12)

* Small readme.

* Add licence.

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* reverted QS input files to their original state (beside errors) (#29)

* First release (#28)

* new tests and documentation

* input file parsing rewrite: now uses macros; removed unused
constructors

* input file parsing test done

* parse_input_file now returns a result with a vector containing all block errors; it will detect bad blocks while check_parameters_integrity will detect missing blocks

* montecarlo structure skeleton

* skeleton & documentation part 1/?

* skeleton & documentation 2/?

* skeleton & documentation 3/?

* skeleton & documentation 4/? may be done at the next commit

* skeleton & documentation 5/6

* skeleton & documentation 6/6

* dev_impl_skeleton -> dev (#1)

* function skeleton: montecarlo & sendqueue

* function skeleton: tallies

* function skeleton: mc_domain, energy_spectrum, bulk_storage; also added new structs

* refactored f64 -> num::Float before code gets too long

* function skeleton: some more empty implementations; mc_base_particle will notably differ from the original c++ code

* function skeleton: mc_particle, mc_time_info, mc_vector

* function skeleton: vaults, nuclear data; used PhantomData for energy_spectrum & MeshPartition

* basic main

* main skeleton & fast timer implem

* fmt & small changes to main/init_mc

* filled up main function

* format

* skeleton of an alternative MC_Particle_Buffer; need to check if it's necessary

* basic skeleton done for the buffer

* function skeleton: decomposition_object & global_fcc_grid

* function skeleton: collisison_event, physical_constants

* function skeleton: macroscopic_cross_section, mc_facet_crossing_event, mc_load_particle (moved in mc_utils with mc_source_now)

* function skeleton: mc_nearest_facet, mc_segment_outcome, mct

* function skeleton: facet_pair, grid_assignment_object

* formatting

* function skeleton: rng; need to add some documentation

* function skeleton: mc_distance_to_facet; documentation 1/?

* documentation 2/?

* documentation 3/?

* documentation 4/?

* documentation 5/5

* dev_mcvector -> dev (#2)

* first implementation of mc_vector

* added simple tests for operations; need to check for potential floating-point errors

* added tests for other methods of the struct

* cargo fmt

* more benchmark related stuff; putting it on hold for now

* cleanup benchmarks, additional method for approximate comparison of MCVectors

* update toml

* dev_particles -> dev (#3)

* completed MCParticle functions; removed getters

* cargo fmt

* completed MCBaseParticle functions; removed getters and unused/undefined functions

* completed particle_vault functions; many differs from the original implem so comparing behavior will be mandatory

* completed functions of particle_vault_container

* completed funcions of mc_particle_buffer but it might be interesting to totally dismiss the structure

* cargo fmt

* converted particle vault to model invalidate particle with value None

* added a new enum to model particle species

* load_particle complete

* cleanup and cargo fmt

* started testing vaults; collapse() not working

* added dummy test function to identify the issue; second vault/vector keeps its initial value

* fixed the collapse function; the second vault was updated using the new length of the first one (==fill_size)

* more testing

* more tests and cleanup

* cargo fmt

* final test for vaults; cleanup and note on pop_... behavior

* format before merge

* dev_data -> dev (#4)

* completed energy_spectrum

* completed polynomial and NuclearDataReaction; sample collision will need testing as its behavior was unclear in the original code

* completing NuclearData

* completed nuclear_data; is the species field useless in QS?

* cargo fmt

* material_database complete

* started to complete tallies; goodbye bulkstorage?

* cargo fmt

* tallies continued; scalar_flux_sum readability is questionable

* workaround for usage of consts

* workaround for usage of consts 2/2

* converted Fluene in a struct, implemented Fluence::compute()

* Tallies:print_summary done; changed timer functions to use enums directly

* cargo fmt

* Tallies:cycle_finalize done

* Tallies:initialize_tallies() done

* format & cleanup

* SendQueue done; None of a queue's properties are used, maybe replace it?

* added some test for SendQueue; need to cleanup the structure

* cleanup & update of SendQueue

* cargo fmt

* Dev computation (#5)

* RNG State done, need to test the hashing algorithm to compare results with original function

* DirectionCosine::sample_isotropic done

* DirectionCosine done; need to compare the computed values with original code

* doc

* started to complete macro_cross_section.rs; replaced the usage of a magic value by adding a separate method

* cargo fmt

* completed macro_cross_section functions

* added test to compare results; the pseuo hash function of mc_rng_state gives a different result

* fiex mc_rng_state, the generator now yields the same numbers

* added test for sample_isotropic; added c files used to test original code

* added rotation test; all functions seems to give the same results

* cargo fmt

* computation test can be run using --nocapture to compare results with the original functions

* update_trajectory() done

* finished collision_event

* cargo fmt

* finished segment_outcome

* cargo fmt

* added rust test for update trajectory & needed c++ files

* wrote test in c files; need to add a makefile and check results

* velocity & direction cosine differ

* corrected test, update_trajectory ok

* very simple makefile

* added internal functions of mct.rs; this module needs refactor asap

* started implementation of mct.rs function; lots of refactoring to do on this file

* completed generate_coordinate_3dg; updating functions signature

* cargo fmt

* finished public mct functions; cleanup needed

* cargo fmt

* mct functions continued; will cleanup after mct & facet_crossing_event are completed

* mct completed; cleanup todo

* completed facet_crossing_event

* cargo fmt

* mct cleanup 1/?

* mct cleanup 2/2; updated MCLocation to avoid magic values

* cargo fmt

* added test for volume computation & move particle

* all test added; the belongs_or_return macro has diverging results

* test passed; fixed a mistake in the C code

* cleanup & format

* dev_geometry -> dev (#6)

* completed mc_cell_state, mc_distance_to_facet, mc_facet_adjacency; updated structures to work around magic values

* completed mc_facet_geometry, mc_location, mc_nearest_facet, facet_pair; leaving refactor for later

* grid_assignment_object.rs 1/2

* grid_assignment_object.rs 2/2

* mesh_partition.rs 1/?

* added a communication object

* mesh partition 2/?; fixed the comm object and build_cell_idx_map method

* cargo fmt

* mesh_partition.rs 3/?

* mesh_partition.rs 4/4

* cargo fmt

* global_fcc_grid.rs 1/?

* global_fcc_grid.rs 2/?

* global_fcc_grid.rs 3/3

* cargo fmt

* completed decomposition_object.rs; removed the debug mode for now

* mc_domain.rs 1/?

* mcdomain.rs 2/?

* cargo fmt

* mcdomain.rs 3/?

* mcdomain.rs 4/4

* cleanup & format

* Dev sim (#11)

* skeleton init_mc

* init_mc: completed init_nuclear_data

* init_mc: completed init_mesh; nedd to complete its internal functions

* init_mc: init_mesh fully completed

* init_mc: initialize_tallies refactor to reduce unnecessary borrows

* init_mc: check_cross_sections 1/2

* cargo fmt

* init_mc: completed

* montecarlo.rs completed; dirty refactor of MCParticleBuffer to delete the mcco reference field

* cargo fmt

* population_control.rs 1/?

* population_control.rs 2/?

* population_control.rs 3/3

* swapped generic float T for f64 in mc_time_info

* mc_utils: source_now completed

* cycle_tracking.rs 1/?; light refactor of generate_coordinate_3dg

* cycle_tracking.rs: 2/2

* making the program run 1/?

* making the program run 2/?

* making the program run 3/?

* making the program run 4/?

* making the program run 5/?

* making the program run 6/?; very strange oob error

* making the program run 7/?; maps behave differently in c++ and rust :)

* cargo fmt

* making the program run 8/?

* making the program run 9/?; might pause this to remove Rc<RefCell> pattern

* making the program run 10/?

* removing RcRefCell pattern 1/?

* Removing RcRefCell pattern 2/2

* cargo fmt

* making the program run 11/?; working around the borrow system by passing indexes instead of references

* making the program run 12/?

* making the program run 13/?

* infinite looping in cycle_tracking

* fixed test to move on next iteration; used # of of processing vaults instead of # of processing particles

* program runs; need to check outputs now

* particles aren't counted in energy spectrum

* add_processing_particle is never called

* particles are now created

* making the program run 14/?

* some structures arent initialized correctly?

* making the program run 15/?

* fixed collision event

* cargo fmt

* fixed get_first_empty_vault

* add_processing_particle not working

* cargo fmt

* problem with processing/valid particles?

* need to update collapse functions to work with options

* add processing particles not called for n_particles == 1,000 but called for 10,000

* particles disappear during tracking

* particles dont reach census / arent counted as processed

* load_particle always return None; particle are set as none without going into processed ?

* particles are here but are never loaded

* vault access issue in load_particle

* found issue: new particles are pushed, making the vault twice its correct size; the first half is None hence the weird behavior

* fix introduced a new issue

* fixed the vaults; infinite loop after loading a particle

* infinite loop is inconsistent; floating point errors?

* infinite loop happens on collision events

* starting cross section seems incorrect

* fixed the loop to mimic a do-while idiom; cross sections values are still incorrect

* fixed collapse method of vaults & added a debugger config file

* cell material is never set; adding function to fix this

* cells are still all made of default material

* source material is overwritten by box material

* reversed the search for material; should behave like QS

* fixed the cross section values

* refactor of constants for future addition

* adding a trait CustomFloat 1/?

* adding a trait CustomFloat 2/?

* adding a trait CustomFloat 3/?

* adding a trait CustomFloat 4/?

* adding a trait CustomFloat 5/5

* cargo fmt

* cleanup CustomFloat

* transit off processor(domain) isn't working

* fixed collapse method; fill_size was the amount of free space, not the total vault size

* refactoring vaults to suit Option type

* vault capacity gets modified at some point

* the capacity change occurs in cycle_tracking

* erratum: modifications to capacity happens in roulette function

* fixed test to fit behavior/usage of original function

* fixed the vault capacity change; AllEscape execution completes

* print cleanup; changes to timer to mimic originals

* timers done

* cargo fmt

* high number of collision vs 0 in QS; issue in segment outcome?

* fixed a wrong computation in seg outcome; now census # is incoherent

* missing term in distance to facet computation; back to off-domain transit issue

* init seems to be correct

* fixed duplicating neighbor domain in the comm object

* some facet crossing event are incoherent with original code because of a difference in the foreman value of cells

* may have found where the froeman issue comes from

* CellInfo isn't initialized correctly

* in QS, comm object takes a reference to the partitions; are the used partition not updated but a duplicate object is instead?

* alternative mesh building

* fix introduces inconsistency

* issues is created by inconsistencies between comm object and partition used to init domains; need to find a solution

* possible fix for inconsistency; need to workaround the borrow system

* mesh consistency fixed?

* mesh inconsistency still here

* adding unit tests 1/?

* adding unit tests 2/?

* adding unit tests 3/?

* Some minor improvements (#7)

* Propagate CustomFloat to file parsing

Avoid from_f64.

* Grouping functions as Parameters methods

* Decreasing code duplication

* Adding preliminary unit tests for ParticleVault

* moved mc_domain tests to source file

* better defined behavior of vault functions

* added a capacity function to ParticleVault to clear ambiguity

* Unittests do not require to make methods public (#8)

* modified map insert to not overwrite already present keys

* fixed GridAssignmentObject init

* adding unit test for GridAssignmentObject

* Add caching for github actions (#10)

* Add caching for github actions

* Always run CI

* Simplify CI

* We should not push directly on main branch

* format

* format

---------

Co-authored-by: imrn99 <95699343+imrn99@users.noreply.github.com>

* deleted bulk_storage.rs

* update lib.rs

* Dev test (#15)

* cleanup in mc_init

* added snap turtle test

* moved partition test from mc_domain.rs to mesh_partition.rs

* fused for loop in mesh_partition init

* fixed wrong init in partition test

* remote cells seem to be incorrect; same gid as the partition they were identified from

* the remote cells gids are coherent; gid 0 and gid max are duplicated for some reason

* added description of remote cells; the remote_n_idx value in build_cell_idx_map is incorrect

* completed test in mesh_partition.rs; need to implement the fix in init.mc

* updated init_mc; the issue is still here; confirmed there are cells not initialized in QS

* map is now correctly overwritten

* cleanup

* Cleanup clippy (#16)

* mc_domain.rs cleaned

* init_mc.rs cleaned

* init_mc.rs cleaned 2/2

* mc_utils.rs & particle_vault.rs cleaned

* mesh_partition.rs & global_fcc_grid.rs cleaned

* GAO and comm_object.rs cleaned

* misc cleanup

* energy_spectrum.rs & mct.rs cleaned

* montecarlo.rs cleaned

* misc cleanup

* population_control.rs cleaned

* tallies.rs cleaned

* bench cleanup & improvements in tallies field init

* Dev debug (#17)

* fixed wrong indexing in material list

* fixed mistake in vault function

* particles are rr'ed instead of split; scalar flux sum seems to miss a reset between steps

* removed unused fucntions

* fixed wrong balance value

* Value testing (#18)

* updated computation tests with hardcoded values

* particles were never invalidated; only set as processed

* AllEscape & AllAbsorb run correctly

* NoCollision seems correct; AllScattering is ambiguous

* better tallies summary

* better timer report

* Check consistency (#19)

* NonFlatXC crashes; does not run correctly either in QS

* NonFlatXC examples: incorrect managment of extra particles

* updated extra particle processing

* inconsistencies of parameters with boolean entries

* updated test for boolean parameters; not fixed yet

* fixed fetching of boolean parameters

* unwanted rr in population_control_guts

* fixed mistake when treating boolean parameters

* minor adjustments

* NoFission, AllScattering: the number of particles reaching census increases whenit should stay somewhat constant

* added code to check the cause of increasing census; need to compare results to QS

* fixed log omission

* average energy level goes down instead of being constant; # of particles reaching census increases; malfunction in roulettte ?

* numerical values used in low-weight RR and scattering event seems correct

* Fix census (#20)

* replaced TINY_FLOAT comparison to direct zero comparison

* added unit test for speed-energy conversion; fixed corresponding function & omission in mc_utils

* divergence with QS starts after the first step; scattering computation are incorrect?

* diverging number of split particles after the first step

* fixed energy spectrum update; probably still missing a reset

* cleanup main for readability

* fixed cross section out

* fixed update to particles in the cycle tracking function

* cleanup; there are still discrepancies in simulation

* AllScattering runs correctly; NoFission & Homogeneous still have issues with RR

* NoFission & Homogeneous examples now run correctly; need to cleanup & double check every example

* added figure of merit to timer

* Clean up (#21)

* removed extracted c++ code

* small issue in timer; incorrect power of 10 in CycleTracking section & figure of merit

* added mesh-specific constants for better flexibility

* cleanup comments & adding the new constants to code

* moved computation tests to source files

* cleanup & comments 1/?

* cleanup & comments 2/?

* cleanup & comments 3/?

* cleaner output files

* replaced some explicit default implementations with attribute

* more relevant timer names

* added efficiency rating

* removed some useless arguments from methods

* fixed figure of merit value

* cleaned timers; compare the value of the total column to QS' report

* better printing

* documentation for constants module & verbose consistency refactor

* verbose consistency refactor 2/?

* rand_n -> rand_f reafctor

* verbose consistency refactor 3/3

* Pre release refactor (#23)

* removed unused code facet_pair.rs

* refactor arguments of add_isotope method of NuclearData

* moved TupleX aliases to constants module

* moved geometrical offsets to constants module

* removed dead code from per-cycle timer report

* removed dead code from particle objects

* file structure: added simulation mod

* moved source function to population control file, load particle is in its own file now

* file structure: finished reorganizing files & imports; need to correct imports in tests

* fixed imports in tests

* removed more dead code & cleanup

* fixed test in doc

* Bench rng (#24)

* added skeleton for rng functions benchmark

* simple bench for rng functions completed; may need to test other generators of rand

* added bench for other rand Rng types

* removed dummy benchmark

* update cargo toml

* Benchmark examples (#25)

* added support for coralBenchmark values

* first test function + updated arguments

* all test added besides fluence

* added fluence test

* added support for different synthax in simulation block

* CTS benchmark seems functionnal but performances are much worse than QS

* added compiling options to speed up exec time; time spent in cycle tracking grows as the cycles passes

* Dev-profiling (#27)

* skeleton files

* added data for the Naive version of fastiron

* added data for QS

* reverted QS input files to their original state (beside errors) (#29)

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* Documentation (#30)

* added crate-level doc

* fixed doc & fused impl block for Parameters

* crate-level Quickstart section

* crate-level Example section

* added module-level doc for constants

* parameter module: geometry parameter done

* parameter module: material parameter done

* parameter module: XS parameter done

* parameter module: simulation parameter done

* parameter module done

* montecarlo module-level documentation done

* moved summaries back to their respective module file

* simulation module: module-level, mct and population control done

* simulation module: segment outcome done

* simulation module: facet crossing event & collision event done

* simulation module done

* data module: direction cosine & energy spectrum done

* data module: mc vector done; not doing sendqueue because its structure will change

* data module: tallies done; reorganized the file & inlined a one line function

* data module: nuclear data done

* data module done; sendqueue doc will be added later

* geometry module: globalfccgrid, gao & cellstate done

* geometry module: facet done

* geometry module: mc_location & mesh partition done

* geometry module done; may group some code in a single file later

* utils module: module-level, commobject & benchmark correctness done

* utils module done

* fixed mc_vector example

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* added doc for sendqueue & moved tests back to source file

* removed dead code: mc_particle_buffer

* added init code for new containers

* updated function signatures

* non-functionnal: introduced new containers to cycle init code

* non-functionnal: introduced new containers to cycle tracking code

* non-functionnal: introduced new containers to cycle finalyze code

* warning cleanup; population control functions look erroneous

* not working; population control functions seem correct

* not working; low weight rr seem correct

* added timers back although their value is unexpected

* added missing code back; refactor is working

* cleanup of old code

* added extra_capacity computations

* removed ParticleVaultContainer from MonteCarlo object

* removed load particle

* doc particles module

* removed old vaults/containers

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>

* Particle rework (#35)

* modifications to particle structures done; need to update the rest of the code

* update to population control & mct module

* update to collision & facet crossing events modules

* update cycletracking & segment outcome modules

* removed useless usage of full particle in population control

* changed direction cosine structure to used MCVector & operators definition

* cleanup commented code

* Function cleanup (#36)

* updated coral_benchmark_correctness signature

* replaced partial cross products in mct.rs; need to write a small bench to see if the performance loss is negligible

* added benchmark for full cross product; partial product is much faster but may be less prone to parallelization?

* reverted cross product in mct.rs to partial form

* removed useless return from facet crossing event function

* modified cycle finalize functions to remove unnecessary nested calls

* removed internal timer pause of CycleFinalize as its results are misleading

* comment cleanup & init_mc module renamed

* Facet module (#37)

* fixed doc warning

* moved distance to facet to new module

* moved mc_facet_geometry to new module

* moved mc_nearest_facet to new module

* moved mc_facet_adjacency to new module

* fixed doc warning in send_queue

* misc doc and comments for facets module

* Code cleanup (#38)

* simpler sendqueue tests

* renamed a variable in source_now for readability

* replaced some numerical values with constants in mct.rs

* tallies summary header rewrite

* removed some misused/unused code for future CLI update

* CLI & Parameters update; further modifications will be done when introducing parallelism

* added basic code for MCProcessorInfo

* added skeleton for execution modes in main

* doc update

* Dead code removal (#39)

* removed useless constructor/default implem for Material structure

* removed unused get_cell method & added comments for future changes

* removed unused/unobtainable enum value of ReactionType

* removed unused/unobtainable enum value of MCTallyEvent

* removed unused/unobtainable enum value of MCSegmentOutcome

* fused match arms in segment outcome function

* removed unused parameter f_max & some fields of MCTimeInfo

* removed unused field task of MCParticle

* removed unused Display impl for MCParticle

* Tallies rep (#44)

* removed scalar flux replication

* removed cell tally replication

* removed balance tally replication & index usage

* removed replication fields in Tallies

* removed replication fields in SimulationParameters

* removed replication fields of the CLI

* doc update

* Loop rewrite (#45)

* ScalarFluxDomain & CellTallyDomain 'add' rewrite

* scalar flux sum rewrite

* modified Fluence to accomodate for loop rewrite

* fluence computation rewrite; need testing to make sure the new code yield the same results

* cleanup Fluence type

* small changes to mc_domain; need to simplify sourcing function

* implemetned direct cell tally update in source_now

* deleted size() method from sendqueue

* Profiling (#46)

* replaced unsigned int of timers by a Duration

* fixed timer report

* corrections of existing profiling summaries + base file for current version

* added report & flamegraphs for homogeneous test

* added CTS2 benchmark flamegraph & report

* typo

* update QS flamegraph with better sample frequency

* added f64/f32 comparison skeleton to summary; program crashes when using f32; probably because of const conversion

* Fix f32 (#47)

* workaround float type specific constant

* replaced old constants execpt in tests

* f32 non-functionnal; f64 still good

* f32 ok; fixed unwanted behavior with -0 value and .is_sign_negative() method

* swapped all .is_sign_negative() call to regular comparison

* CTS bench doesn't run with f32; need to test with specific examples

* fixed AllEscape for f32; AllScattering not working

* all specific tests ok; tracking kernel never finishes for CTS

* CTS loops in the collision_event function

* starting X-section is NaN

* reaction X-section are sometimes NaN

* Scatter reaction XS is NaN

* Scatter reaction XS computation in init reach number too big for f32

* changed the XS init to use f64 and then convert to desired float type

* switched back to f64 & added doc for the constants

* added flamegraph & timer report for CTS bench

* added figure of merit comparison to the profiling data

* prettier doc

* Tweaks before release (#49)

* removed duplicated comments of tallies.rs

* removed num_points field from MCFacetAdjacency

* removed PartialEq implem of MCParticle

* better float constants management

* cleanup & update package version (#50)

---------

Co-authored-by: Cédric Chevalier <cedric.chevalier@cea.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant