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

IMC Pull Request #105

Open
wants to merge 386 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
386 commits
Select commit Hold shift + click to select a range
17ad889
Photons that transform into materials can transform back into photons…
AlexBland343 Sep 17, 2022
ff37a75
Changes for pull request
AlexBland343 Sep 17, 2022
5f19626
Changes to input files as suggested in pull request
AlexBland343 Sep 17, 2022
5437eb3
Fixed a few inconsistencies
AlexBland343 Sep 17, 2022
6296c18
Various changes to materialMenu_mod
AlexBland343 Sep 17, 2022
204e439
Fixed spelling
AlexBland343 Sep 17, 2022
301e9f7
Deleted unnecessary comments
AlexBland343 Sep 17, 2022
70482fe
No longer require IMCSource in input file. Can specify 'limit' to siz…
AlexBland343 Sep 17, 2022
ba4c526
Removed old lines
AlexBland343 Sep 17, 2022
9f876b9
Changed comment
AlexBland343 Sep 17, 2022
d7662e9
Changed input files to no longer have imcSource
AlexBland343 Sep 18, 2022
607004d
A few minor changes to comments
AlexBland343 Sep 20, 2022
7a0ce39
Merged with ImplicitMC branch
AlexBland343 Sep 20, 2022
0e2eea1
Deleted unnecessary input file lines
AlexBland343 Sep 25, 2022
e31b4da
Added planck opacity
AlexBland343 Sep 26, 2022
5426896
Removed unnecessary lines
AlexBland343 Sep 26, 2022
4714120
Various changes to cross-section data handling, still a few issues to…
AlexBland343 Sep 26, 2022
22cc3a7
Fixed typo
AlexBland343 Sep 27, 2022
a4498a4
Stripped away a lot of unnecessary scattering elements
AlexBland343 Sep 27, 2022
df4cc47
Lots of changes to get rid of annoying initProps subroutine. T and V …
AlexBland343 Sep 27, 2022
dd3f222
Changed input files to new opacity inputs and removing some scatterin…
AlexBland343 Sep 28, 2022
6552e34
Added option to change alpha setting
AlexBland343 Sep 28, 2022
9284f33
Moved effective scattering into elastic instead of inelastic, as curr…
AlexBland343 Sep 28, 2022
51d5a19
Merged with ImplicitMC branch
AlexBland343 Sep 28, 2022
7d8184a
Allowed collision processor to infer calculation type without needing…
AlexBland343 Sep 28, 2022
71be74b
Change missed from merge
AlexBland343 Sep 28, 2022
b66c975
Removed unnecessary lines
AlexBland343 Sep 28, 2022
02acd37
Correctly calculates initial properties for ISMC
AlexBland343 Sep 28, 2022
66e9087
Deleted print line
AlexBland343 Sep 28, 2022
bd5b81c
Trying out a way to limit particle numbers
AlexBland343 Sep 29, 2022
9fadc5a
Comment on particle weight assignment
AlexBland343 Sep 29, 2022
5aabe37
Small change with source numbers, not finished
AlexBland343 Sep 30, 2022
f87d747
Removed appendIMC subroutine, instead put in IMCSource_class by overr…
AlexBland343 Oct 4, 2022
3a60611
Temporary change to avoid compiler error
AlexBland343 Oct 4, 2022
2953676
Fixed comment
AlexBland343 Oct 5, 2022
66121a0
Changed surfaceSource to correctly read N
AlexBland343 Oct 5, 2022
4aa2c93
Fixed incorrect position assignment
AlexBland343 Oct 5, 2022
ab6db49
Changed material to get time step from physics package call
AlexBland343 Oct 5, 2022
8bc32a5
Merge with ImplicitMC branch
AlexBland343 Oct 5, 2022
8d4689e
Fixed major issue where total energy was being incorrectly used inste…
AlexBland343 Oct 5, 2022
a0903d9
Removed a few comments
AlexBland343 Oct 6, 2022
f3ef7ac
Changed to a use either DT or ST depending on opacities
AlexBland343 Oct 10, 2022
582c674
Dealt with a few numerical issues for 0 temperature regions
AlexBland343 Oct 10, 2022
6018c45
Added simple temperature output file for testing, may remove later
AlexBland343 Oct 10, 2022
934a914
Fixed error that was being called incorrectly
AlexBland343 Oct 10, 2022
1112dc7
Removed print line
AlexBland343 Oct 10, 2022
36e495f
Added check for 0 solution
AlexBland343 Oct 10, 2022
383853b
Changed test for particle proximity, still needs work
AlexBland343 Oct 10, 2022
2865cdf
Fixed typo
AlexBland343 Oct 10, 2022
86cc1a3
Fixed another typo
AlexBland343 Oct 10, 2022
cd08dff
Fixed particle leakage causing errors
AlexBland343 Oct 11, 2022
4a258bd
Fixed major issue where incorrect particles were being overridden whe…
AlexBland343 Oct 12, 2022
8b5e6a1
Fixed ambiguity in if statement
AlexBland343 Oct 12, 2022
b910fca
New output file with particle populations in each material, may remov…
AlexBland343 Oct 12, 2022
fcdf554
Removed unused variable
AlexBland343 Oct 12, 2022
961d257
Changed a few commented lines, work in progress
AlexBland343 Oct 14, 2022
8ac2885
Changed sampling of direction, work in progress
AlexBland343 Oct 14, 2022
951a72a
Added option for cutoff to be specified in input file dictionary
AlexBland343 Oct 15, 2022
fa03598
Trialling out new algorithm for making delta tracking more efficient,…
AlexBland343 Oct 16, 2022
2d3051a
Working on subroutine to reduce particle populations, work in progress
AlexBland343 Oct 16, 2022
ce96d8a
Changed tracking to use new majorants
AlexBland343 Oct 17, 2022
53f9b22
Changed to only test majorants once at the start of calculation, by s…
AlexBland343 Oct 17, 2022
20984b6
Cleaned up files with comments and deletions
AlexBland343 Oct 19, 2022
69cce0c
Added missing parameters
AlexBland343 Oct 19, 2022
4c597cf
Added a few new fatalErrors
AlexBland343 Oct 19, 2022
b3b612d
Cleaned up a few lines
AlexBland343 Oct 27, 2022
daca8d9
Added geom as an optional input to init, for now needed for transport…
AlexBland343 Oct 27, 2022
5a40fe8
Changed marshakWave64 to be used for ISMC calculations, will update a…
AlexBland343 Oct 27, 2022
508fa48
Changed inputs to capture and scatter instead of sigmaA and sigmaS
AlexBland343 Oct 28, 2022
5f9e3bf
A few minor fixes
AlexBland343 Oct 28, 2022
d89d3e3
Deleted duplicated function
AlexBland343 Oct 28, 2022
8358b09
Deleted option of printing sum of quantity, rarely useful except tota…
AlexBland343 Oct 28, 2022
6df7142
Reverted old change
AlexBland343 Oct 28, 2022
b8456e9
Changed particle type check function to be more robust
AlexBland343 Oct 28, 2022
af11c36
Deleted tab
AlexBland343 Oct 28, 2022
202d108
Changed particle time to absolute time rather than time within timestep
AlexBland343 Oct 31, 2022
2717925
Deleted unneccessary property
AlexBland343 Oct 31, 2022
53c7b97
Added option for turning on and off printing of material updates, and…
AlexBland343 Oct 31, 2022
1d6f1ca
Changed a lot of IMC physics package to say 'steps' instead of 'cycles'
AlexBland343 Oct 31, 2022
7f4298d
Deleted some unneccessary lines and moved files in line
AlexBland343 Oct 31, 2022
d496d24
Changed TIME_FATE to AGED_FATE
AlexBland343 Oct 31, 2022
81bc8bf
Updated some comments
AlexBland343 Oct 31, 2022
505c619
Changed dungeons in physics package from allocatable to pointer
AlexBland343 Oct 31, 2022
1ddc09c
Added missing line to increase particle time
AlexBland343 Nov 2, 2022
6ecc45b
Lots of changes to transport operator to make it more general. Also n…
AlexBland343 Nov 2, 2022
07c6aac
Changed cutoff to be consistent with transportOperatorHT_class, and d…
AlexBland343 Nov 2, 2022
4ccf587
Deleted test file which was never meant to exist
AlexBland343 Nov 2, 2022
3218566
Merge with ImplicitMC branch
AlexBland343 Nov 3, 2022
5a223d9
Changed cycles to steps and dungeons to pointers to be in line with I…
AlexBland343 Nov 3, 2022
e2c56fe
Changed particle time to absolute time to be consistent with IMCPhysi…
AlexBland343 Nov 3, 2022
48d3ec5
A few changes to the way that particle time is sampled and some new e…
AlexBland343 Nov 3, 2022
91cb1a3
Changes to transport operator for consistency with other modules
AlexBland343 Nov 3, 2022
bc3a1c1
Made notes of a few errors that are occuring. Yet to figure out solut…
AlexBland343 Nov 12, 2022
1fa6c40
Changed marshakWave64 to new settings, will change other input files …
AlexBland343 Nov 12, 2022
30973b8
Working on subroutine to reduce particle populations, unfinished but …
AlexBland343 Nov 12, 2022
74b3471
More work on dungeon, not yet finished
AlexBland343 Nov 12, 2022
1e05eec
More particle dungeon work
AlexBland343 Nov 13, 2022
985d5ed
Changed names of subroutines
AlexBland343 Nov 13, 2022
8788546
Temporary fix to a very weird issue, not yet sure of the cause
AlexBland343 Nov 13, 2022
69814ae
Added option to specifiy how many material updates are printed
AlexBland343 Nov 14, 2022
11d8436
Removed incorrect line that was throwing off particle times and givin…
AlexBland343 Nov 14, 2022
e8e6f2d
Removed duplicated line that was increasing particle time too much an…
AlexBland343 Nov 14, 2022
736c892
Deleted old code, added comments and docs, moved getDistance from par…
AlexBland343 Nov 15, 2022
d04b9b4
Reduces size accordingly, and added new error for particle times
AlexBland343 Nov 15, 2022
3c32fdc
Removed notes about an error that were caused by previously duplicate…
AlexBland343 Nov 15, 2022
1b8a5f8
Changed TIME_FATE to AGED_FATE
AlexBland343 Nov 15, 2022
dcfd46e
Changed a lot. Had made a mistake where DT was using sigmaLocal inste…
AlexBland343 Nov 15, 2022
dad5b42
Same changes as in ISMC branch. Fixed a few things and then moved loo…
AlexBland343 Nov 15, 2022
6f00c73
Merged some changes with ImplicitMC
AlexBland343 Nov 15, 2022
271fd05
Added argument to init and moved a few declarations to be in line
AlexBland343 Nov 15, 2022
17433b9
Moved some variables to be in line
AlexBland343 Nov 15, 2022
6394942
Removed some unused variables
AlexBland343 Nov 15, 2022
0d2bb9b
A few changes to work with VOID_MAT
AlexBland343 Nov 17, 2022
132ed4b
Renamed surfaceSource_class to bbSurfaceSource_class
AlexBland343 Nov 17, 2022
310bad5
Source no longer requires timestep in the input dictionary, instead i…
AlexBland343 Nov 17, 2022
90c18a4
Changed input files to reflect new settings
AlexBland343 Nov 17, 2022
91cfe07
Big simplification to IMC material source, now samples particles only…
AlexBland343 Nov 17, 2022
8801682
Changed marshak input files to use new name for bbSurfaceSource
AlexBland343 Nov 17, 2022
ffc4871
N particles from material and N particles from source are now given i…
AlexBland343 Nov 17, 2022
12f5d08
Changed temperatures for MW64
AlexBland343 Nov 20, 2022
5c23209
Fixed typo
AlexBland343 Nov 23, 2022
21ba922
Changed weightResponse_class to also work with IMCMaterial
AlexBland343 Nov 23, 2022
ae08872
Deleted imcWeightClerk and made new clerk to tally absorptions, quite…
AlexBland343 Nov 23, 2022
a646467
Simplified reset subroutine
AlexBland343 Nov 23, 2022
3a957f6
Changed physics package to automatically work with new clerk
AlexBland343 Nov 23, 2022
b714486
Fixed a few typos
AlexBland343 Nov 23, 2022
2d4907c
Deleted reference to material menu mod
AlexBland343 Nov 23, 2022
de57569
Merge with Implicit MC
AlexBland343 Nov 23, 2022
c2bc146
Changed ISMC Physics package to work with new tally
AlexBland343 Nov 23, 2022
d3870fe
Another change to bring ISMC phys package in line with IMC PP
AlexBland343 Nov 23, 2022
e3f5d28
Changed a logical expression to a different order, was evaluating str…
AlexBland343 Nov 24, 2022
d3d935a
Fixed incorrect tally name
AlexBland343 Nov 24, 2022
0400d24
Removed a few unneeded lines and comments
AlexBland343 Nov 24, 2022
abb6d89
Added workaround for issue where an infinite cross section (due to 0 …
AlexBland343 Nov 24, 2022
57af019
Added a way to switch from DT to ST mid calculation. Also fixed error…
AlexBland343 Nov 24, 2022
eb707d9
Fixed error where dColl was being used instead of dTime in DT. Silly me.
AlexBland343 Nov 24, 2022
3220194
Changed source to use numer of particles in input file instead of giv…
AlexBland343 Nov 24, 2022
76381c8
Some input file changes during testing
AlexBland343 Nov 28, 2022
9dac7cf
Fix to input file
AlexBland343 Nov 29, 2022
9a9da31
A few minor changes
AlexBland343 Nov 29, 2022
9ca9438
Changed particle generation to be proportional to energy, and open a …
AlexBland343 Nov 29, 2022
88a30c9
Added new term to fleck factor, think it may have been wrong before w…
AlexBland343 Nov 29, 2022
0d57c89
Changes to input files
AlexBland343 Nov 29, 2022
0a03855
Merge with ImplicitMC
AlexBland343 Nov 29, 2022
48a366d
Added some commented lines to for using transportOperatorIMC in this …
AlexBland343 Dec 1, 2022
1dfd41c
Moved a couple of lines to get rid of duplicated line and fixed incor…
AlexBland343 Dec 1, 2022
64da15a
Added comment
AlexBland343 Dec 1, 2022
8b2ce72
Changed comments and errors, moved things in line, and added sampleWe…
AlexBland343 Dec 23, 2022
83624c6
Changed a few lines of comments
AlexBland343 Dec 23, 2022
35ef100
Changed temperatures to be correct
AlexBland343 Dec 23, 2022
d9d2216
Fixed incorrect exponent
AlexBland343 Dec 23, 2022
caf864b
Fixed equation
AlexBland343 Dec 26, 2022
3cfaaba
Fixed equation
AlexBland343 Dec 26, 2022
c985e41
Temporary changes to input file numbers
AlexBland343 Dec 26, 2022
daab741
Temporary change to number in input file
AlexBland343 Dec 26, 2022
cbacaca
Another temporary change
AlexBland343 Dec 26, 2022
06bfeab
Fixed particle direction sampling, had an older version committed
AlexBland343 Dec 27, 2022
b3d14ef
Change to mat class to be similar to other branch
AlexBland343 Dec 30, 2022
689ceea
Merge with ImplicitMC branch
AlexBland343 Dec 30, 2022
82613c6
Merge with main branch to include parallel functionality on this branch
AlexBland343 Jan 3, 2023
0777e7f
Made PP mostly parallel, and changed to only output temps at end of s…
AlexBland343 Jan 5, 2023
88a83cc
Made IMC material source parallel
AlexBland343 Jan 5, 2023
1c1e583
Tried to add parallel for bbSurfaceSource but for some reason can't g…
AlexBland343 Jan 6, 2023
c78a3aa
Changed to only print temperature, most of the other things printed w…
AlexBland343 Jan 7, 2023
a2cf72b
Experimenting with an overlaid geometry grid for hybrid tracking
AlexBland343 Jan 7, 2023
21e71d8
Working on new class for a simple grid overlaid on geometry for hybri…
AlexBland343 Jan 11, 2023
400c7b4
Various fixes
AlexBland343 Jan 11, 2023
d5cb429
Changed some names and fixed a few oversights
AlexBland343 Jan 11, 2023
69a4827
Changes to transport operator to use new grid
AlexBland343 Jan 11, 2023
0ec9e8c
Added isPresent check to dynamicArray class and some changes to PP
AlexBland343 Jan 11, 2023
09f2ae7
Fixes to some issues on grid cell boundaries
AlexBland343 Jan 12, 2023
f0e2d84
Changed the way some things are calculated, took inspiration from lat…
AlexBland343 Jan 15, 2023
22ae4c0
Deleted reference to older prototype file
AlexBland343 Jan 15, 2023
b876a4a
Added parallel loop to subroutine
AlexBland343 Jan 16, 2023
a781c7f
Deleted old file and changed trans op to be able to switch form delta…
AlexBland343 Jan 16, 2023
36f424b
Temporary changes to input files while testing
AlexBland343 Jan 16, 2023
9048a0e
Avoid reobtaining sigmaT unnecessarily
AlexBland343 Jan 16, 2023
988e257
Renamed variables to be consistent with latUniverse
AlexBland343 Jan 16, 2023
ae4ebad
Changed an oversight that prevented from working in parallel
AlexBland343 Jan 17, 2023
182b37e
Redid a lot of bbSurfaceSource
AlexBland343 Jan 17, 2023
7600fc2
Fixed issue causing incorrect dGrid after cycle DTLoop, and added not…
AlexBland343 Jan 23, 2023
73f33fc
Fixed grammar
AlexBland343 Jan 25, 2023
c73bf36
Fixed issue causing isPresent to be incorrect due to checking element…
AlexBland343 Jan 27, 2023
08f0b1e
Increases distance by surface tolerance, not sure yet if this is actu…
AlexBland343 Jan 28, 2023
08fa1f3
Removed calulcation type from universal variables and put into materi…
AlexBland343 Feb 2, 2023
c2fdd55
Merge branch 'parallel' into ImplicitMC
AlexBland343 Feb 2, 2023
e5efe0b
Changed input files to work with changes to source class
AlexBland343 Feb 2, 2023
23d486b
New module for splitting geometry into a uniform grid to avoid having…
AlexBland343 Feb 7, 2023
b4a1301
Changed PP to work with new module, can be cleaned up a lot by removi…
AlexBland343 Feb 7, 2023
b220942
Allowed IMCSource to sample particles using dimensions of lattice whe…
AlexBland343 Feb 8, 2023
6007c93
Removed unused variables and a few other small changes
AlexBland343 Feb 9, 2023
559dce9
Lots of changes to make file a bit nicer looking and easier to follow
AlexBland343 Feb 10, 2023
3750e4a
Moved around input files
AlexBland343 Feb 10, 2023
f3bfa31
A couple of changes for when void is present in geometry
AlexBland343 Mar 14, 2023
64cba5e
Changes to how material bounds are calculated in source to (hopefully…
AlexBland343 Mar 14, 2023
3d2c6f4
Input file for hohlraum benchmark, not yet using correct units
AlexBland343 Mar 14, 2023
9d04f44
Lots of changes to make transop more readable. Also moved grid into t…
AlexBland343 Mar 21, 2023
cbfed02
Correctly return 0 when searching for void mat xs
AlexBland343 Mar 23, 2023
942eecb
Moved grid into TO_inter to allow PP to access it to update it, fixes…
AlexBland343 Mar 23, 2023
06016ef
Updated bbSurfaceSource to be on track with main implicitMC branch. F…
AlexBland343 Mar 24, 2023
354d517
A few minor changes
AlexBland343 Mar 25, 2023
03aeaad
Moved around some lines to make more logical, added some comments
AlexBland343 May 15, 2023
2f6b5ff
Renamed simpleGrid to trackingGrid and put it into transport operator…
AlexBland343 May 15, 2023
c97cf53
Reorganised some input files
AlexBland343 May 17, 2023
4fbb608
Cleaned up a lot of PP by moving some material-related things into mg…
AlexBland343 May 21, 2023
a066e46
Redid most of IMCSource_class, including removing some sourcing calcu…
AlexBland343 May 22, 2023
022d7a1
Fixed a few oversights relating to void regions in lattice and also l…
AlexBland343 May 23, 2023
58ff981
Merge with hybridTransport branch
AlexBland343 May 24, 2023
49a0721
Merge with ImplicitMC branch
AlexBland343 May 24, 2023
14bc4a1
Cleaned up material class, using IMCSource for ISMC as well as very s…
AlexBland343 May 26, 2023
19a284c
ISMC now working correctly
AlexBland343 May 26, 2023
61fe3cc
Renamed IMCSource to materialSource
AlexBland343 May 27, 2023
4fe46e8
No longer incorrectly places material particles that are close to voi…
AlexBland343 Jun 15, 2023
dfdf310
Deleted ISMC source class as uses more general material class instead
AlexBland343 Jun 21, 2023
033c3ca
No longer need to specify number of particles from bbSurfaceSource in…
AlexBland343 Jun 28, 2023
7dfc2f3
Combined IMC and ISMC into single PP. Simplified a lot of code with n…
AlexBland343 Jul 3, 2023
b7b0192
Deleted old PPs, added comments, removed unnecessary code, improved a…
AlexBland343 Jul 10, 2023
b3d9621
Automatically tell source if we are using IMC or ISMC
AlexBland343 Jul 10, 2023
0d4a2f8
Various things to do with reducing dungeon size for ISMC (since absor…
AlexBland343 Jul 10, 2023
2f45617
Redid temperature calculation to integrate numerically, rather than i…
AlexBland343 Jul 12, 2023
781c4c7
Commented out surface tol checks for tracking grid, and instead nudge…
AlexBland343 Jul 12, 2023
a526aa7
Lots of changes towards making IMC multi-frequency. Work in progress.
AlexBland343 Jul 15, 2023
0476d48
Various changes for MG work'
AlexBland343 Jul 21, 2023
302ffa7
Changes to multi-frequency
AlexBland343 Aug 28, 2023
9cfeeb8
Reordered a lot of material class for easier reading, and changed sou…
AlexBland343 Aug 28, 2023
d079dba
More multigroup work
AlexBland343 Aug 29, 2023
218400e
Redid black body source class
AlexBland343 Aug 31, 2023
a2adeca
Redid tally class to be more name-accurate and to also tally radiatio…
AlexBland343 Aug 31, 2023
51d65b9
Added comments
AlexBland343 Aug 31, 2023
d238725
Added some comments
AlexBland343 Aug 31, 2023
6ad0e40
Fixed some issues preventing hohlraum benchmark from working
AlexBland343 Sep 1, 2023
853a36d
Added new geometry class, allowed simplification of particle sourcing
AlexBland343 Oct 8, 2023
b713710
Finished (hopefully?) new geom class
AlexBland343 Oct 11, 2023
a37f88f
IMC and ISMC now working on multifrequency benchmarks
AlexBland343 Oct 26, 2023
4564037
Allow multiplication of cv and sigma by a constant without needing to…
AlexBland343 Oct 27, 2023
3c3078c
Deleted some unnecessary things, confined some functions to be only w…
AlexBland343 Nov 11, 2023
a0fa62f
Allow printing of material updates if requested
AlexBland343 Nov 11, 2023
5499152
Simple ST transport operator for perfoming IMC simulations without hy…
AlexBland343 Dec 17, 2023
6ae930f
Added way option to specify units as ns in input file to avoid having…
AlexBland343 Dec 20, 2023
f00e54d
Cleaned up input file folder
AlexBland343 Dec 20, 2023
548daaa
Redid hybrid tracking bits, needs a few more comments but otherwise w…
AlexBland343 Dec 31, 2023
946a2fc
Finally got olson benchmark working, deleted particle combination att…
AlexBland343 Jan 1, 2024
ee38a86
Allowed transportOperatorHT_class to work with multigroup, fixed some…
AlexBland343 Jan 4, 2024
fe2b5a5
Fixed numerical issue causing errors when a virtual mat sat entirely …
AlexBland343 Jan 5, 2024
ac9de16
Removed unnecessary function
AlexBland343 Jan 5, 2024
60cd1a3
Attempted merge... still yet to try to compile which I'm sure will be…
AlexBland343 Jan 5, 2024
ef00ba1
Fixed CMakeLists
AlexBland343 Jan 5, 2024
610a995
Fixed remaining errors from merge, code now compiling and running
AlexBland343 Jan 5, 2024
b48c57e
Minor input file changes
AlexBland343 Jan 5, 2024
5b26118
Adjusted alignment slightly
AlexBland343 Jan 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ list(APPEND CMAKE_PREFIX_PATH $ENV{LAPACK_INSTALL})
find_package(LAPACK REQUIRED )
message(STATUS ${LAPACK_LIBRARIES})

set(BLAS_LIBS /home/ajb343/BLAS/BLAS-3.10.0/Build)
find_package(BLAS REQUIRED)

# Dependencies for BUILD_TESTS
if (BUILD_TESTS)
# FIND PYTHON INTERPRETER
Expand Down
5 changes: 3 additions & 2 deletions CollisionOperator/CollisionProcessors/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
add_sources( ./collisionProcessor_inter.f90
./collisionProcessorFactory_func.f90
./neutronCEstd_class.f90
./neutronCEimp_class.f90
./neutronMGstd_class.f90)
./neutronCEimp_class.f90
./neutronMGstd_class.f90
./IMCMGstd_class.f90)
227 changes: 227 additions & 0 deletions CollisionOperator/CollisionProcessors/IMCMGstd_class.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
module IMCMGstd_class

use numPrecision
use endfConstants
use universalVariables, only : VOID_MAT
use genericProcedures, only : fatalError, rotateVector, numToChar
use dictionary_class, only : dictionary
use RNG_class, only : RNG

! Particle types
use particle_class, only : particle, particleState, printType, P_PHOTON, P_MATERIAL
use particleDungeon_class, only : particleDungeon

! Abstract interface
use collisionProcessor_inter, only : collisionProcessor, collisionData ,init_super => init

! Nuclear Data Interface
use nuclearDataReg_mod, only : ndReg_getIMCMG => getIMCMG
use nuclearDatabase_inter, only : nuclearDatabase
use mgIMCDatabase_inter, only : mgIMCDatabase
use mgIMCMaterial_inter, only : mgIMCMaterial, mgIMCMaterial_CptrCast
use reactionHandle_inter, only : reactionHandle

implicit none
private

!!
!! Standard (default) scalar collision processor for MG IMC
!! Determines type of collision as either absorption or effective scattering
!!
!! Settings:
!! NONE
!!
!! Sample dictionary input:
!! collProcName {
!! type IMCMGstd;
!! }
!!
type, public, extends(collisionProcessor) :: IMCMGstd
private
class(mgIMCDatabase), pointer, public :: xsData => null()
class(mgIMCMaterial), pointer, public :: mat => null()
contains
! Initialisation procedure
procedure :: init

! Implementation of customisable procedures
procedure :: sampleCollision
procedure :: implicit
procedure :: elastic
procedure :: inelastic
procedure :: capture
procedure :: fission
procedure :: cutoffs
end type IMCMGstd

contains

!!
!! Initialise from dictionary
!!
subroutine init(self, dict)
class(IMCMGstd), intent(inout) :: self
class(dictionary), intent(in) :: dict
character(100), parameter :: Here = 'init (IMCMGstd_class.f90)'

! Call superclass
call init_super(self, dict)

end subroutine init

!!
!! Samples collision
!!
!! Absorption with probability equal to fleck factor, otherwise
!! effective scattering
!!
!! Physical scattering is omitted as in reference paper "Four Decades of Implicit Monte Carlo"
!! (Allan B Wollaber) but may be included later if desired
!!
subroutine sampleCollision(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle
real(defReal) :: r, fleck
character(100),parameter :: Here =' sampleCollision (IMCMGstd_class.f90)'

! Verify that particle is MG PHOTON
if( .not. p % isMG .or. p % type /= P_PHOTON) then
call fatalError(Here, 'Supports only MG PHOTON. Was given NEUTRON or MATERIAL and/or CE '&
&//printType(p % type))
end if

! Verify and load nuclear data pointer
self % xsData => ndReg_getIMCMG()
if(.not.associated(self % xsData)) call fatalError(Here, "Failed to get active database for MG IMC")

! Confirm that particle is in valid material
if (p % matIdx() == VOID_MAT) call fatalError(Here, 'Collision in void material')

! Get and verify material pointer
self % mat => mgIMCMaterial_CptrCast(self % xsData % getMaterial(p % matIdx()))
if(.not.associated(self % mat)) call fatalError(Here, "Failed to get MG IMC Material")

r = p % pRNG % get()

fleck = self % mat % getFleck()

if( r < fleck ) then
! Effective absoprtion
collDat % MT = macroCapture
else
! Effective scattering
collDat % MT = macroAllScatter
end if

end subroutine sampleCollision

!!
!! Perform implicit treatment
!!
subroutine implicit(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle

! Do nothing.

end subroutine implicit

!!
!! Effective scattering - currently only elastic (constant energy-weight)
!!
subroutine elastic(self, p , collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle
real(defReal) :: phi, mu
real(defReal), dimension(3) :: dir
character(100), parameter :: Here = 'elastic (IMCMGstd_class.f90)'

! Assign MT number
collDat % MT = macroAllScatter

! Sample direction - chosen uniformly inside unit sphere
mu = 2 * p % pRNG % get() - 1
phi = p % pRNG % get() * 2*pi
dir(1) = mu
dir(2) = sqrt(1-mu**2) * cos(phi)
dir(3) = sqrt(1-mu**2) * sin(phi)

call p % point(dir)

! Sample new frequency
p % G = self % xsData % sampleEnergyGroup(p % matIdx(), p % pRNG)

end subroutine elastic

!!
!! Inelastic scattering - Not currently supported
!!
subroutine inelastic(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle
character(100),parameter :: Here = "inelastic (IMCMGstd_class.f90)"

! Do nothing. Should not be called

call fatalError(Here, "Inelastic subroutine should not be called")

end subroutine inelastic

!!
!! Perform capture
!!
subroutine capture(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle

p % type = P_MATERIAL

end subroutine capture

!!
!! Perform fission
!!
subroutine fission(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle
character(100), parameter :: Here = 'fission (IMCMGstd_class.f90)'

! Do nothing. Should not be called

call fatalError(Here, "Fission subroutine should not be called")

end subroutine fission

!!
!! Apply cutoffs or post-collision implicit treatment
!!
subroutine cutoffs(self, p, collDat, thisCycle, nextCycle)
class(IMCMGstd), intent(inout) :: self
class(particle), intent(inout) :: p
type(collisionData), intent(inout) :: collDat
class(particleDungeon),intent(inout) :: thisCycle
class(particleDungeon),intent(inout) :: nextCycle

! Do nothing

end subroutine cutoffs

end module IMCMGstd_class
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module collisionProcessorFactory_func
use neutronCEstd_class, only : neutronCEstd
use neutronCEimp_class, only : neutronCEimp
use neutronMGstd_class, only : neutronMGstd
use IMCMGstd_class, only : IMCMGstd

implicit none
private
Expand All @@ -23,7 +24,8 @@ module collisionProcessorFactory_func
! For now it is necessary to adjust trailing blanks so all enteries have the same length
character(nameLen),dimension(*),parameter :: AVALIBLE_collisionProcessors = [ 'neutronCEstd',&
'neutronCEimp',&
'neutronMGstd']
'neutronMGstd',&
'IMCMGstd ']

contains

Expand Down Expand Up @@ -54,6 +56,9 @@ subroutine new_collisionProcessor(new,dict)
case('neutronMGstd')
allocate(neutronMGstd :: new)

case('IMCMGstd')
allocate(IMCMGstd :: new)

case default
print *, AVALIBLE_collisionProcessors
call fatalError(Here, 'Unrecognised type of collisionProcessor: ' // trim(type))
Expand Down
5 changes: 5 additions & 0 deletions CollisionOperator/collisionOperator_class.f90
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@ subroutine init(self, dict)
self % lookupTable(P_MG, P_NEUTRON) = 2
end if

if(dict % isPresent('photonMG')) then
call new_collisionProcessor(self % physicsTable(3) % proc, dict % getDictPtr('photonMG'))
self % lookupTable(P_MG, P_PHOTON) = 3
end if

end subroutine init

!!
Expand Down
18 changes: 18 additions & 0 deletions DataStructures/dynArray_class.f90
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ module dynArray_class
procedure :: pop => pop_shortInt
procedure :: empty => empty_shortInt
procedure :: kill => kill_shortInt
procedure :: isPresent => isPresent_shortInt

! Private procedures

Expand Down Expand Up @@ -248,4 +249,21 @@ pure subroutine kill_shortInt(self)

end subroutine kill_shortInt

!!
!! Checks if item is present in array
!!
pure function isPresent_shortInt(self, item) result(isPresent)
class(dynIntArray), intent(in) :: self
integer(shortInt), intent(in) :: item
logical(defBool) :: isPresent

isPresent = .false.

! Return false if array is empty
if (self % mySize == 0) return

if (any(self % array(1:self % mySize) == item)) isPresent = .true.

end function isPresent_shortInt

end module dynArray_class
2 changes: 2 additions & 0 deletions Geometry/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ add_sources( ./csg_class.f90
./geometry_inter.f90
./geometryStd_class.f90
./geometryReg_mod.f90
./discretiseGeom_class.f90
./geometryGrid_class.f90
./geometryFactory_func.f90
./fieldFactory_func.f90
)
Expand Down
4 changes: 2 additions & 2 deletions Geometry/Cells/cellShelf_class.f90
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ module cellShelf_class
!! Interface:
!! init -> Initialise from a dictionary & surfaceShelf
!! getPtr -> Get pointer to a cell given by its index
!! getIdx -> Return index of a cell fivent its ID
!! getIdx -> Return index of a cell given its ID
!! getID -> Return cell ID given its index
!! getFill -> Return content of the cell. If -ve it is universe ID. If +ve it is matIdx.
!! getSize -> Return the number of cells (max cellIdx)
!! kill -> Return to uninitialised state
!!
!! NOTE: Becouse cells are stored as pointers, calling `kill` is crucial to prevent
!! NOTE: Because cells are stored as pointers, calling `kill` is crucial to prevent
!! memory leaks. TODO: Add `final` procedure here ?
!!
type, public :: cellShelf
Expand Down
12 changes: 12 additions & 0 deletions Geometry/Universes/latUniverse_class.f90
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ module latUniverse_class
procedure :: distance
procedure :: cross
procedure :: cellOffset
procedure :: getSizeN
end type latUniverse

contains
Expand Down Expand Up @@ -342,6 +343,17 @@ function cellOffset(self, coords) result (offset)

end function cellOffset

!!
!! Return dimensions of lattice
!!
function getSizeN(self) result(sizeN)
class(latUniverse), intent(in) :: self
integer(shortInt), dimension(3) :: sizeN

sizeN = self % sizeN

end function getSizeN

!!
!! Return to uninitialised state
!!
Expand Down
Loading