mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Renaming Nuclide_* to Nuclide*
This commit is contained in:
parent
86d5600eb2
commit
4d27f7eab0
12 changed files with 145 additions and 145 deletions
18
src/ace.F90
18
src/ace.F90
|
|
@ -54,7 +54,7 @@ contains
|
|||
character(12) :: name ! name of isotope, e.g. 92235.03c
|
||||
character(12) :: alias ! alias of nuclide, e.g. U-235.03c
|
||||
type(Material), pointer :: mat
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
type(SAlphaBeta), pointer :: sab
|
||||
type(SetChar) :: already_read
|
||||
|
||||
|
|
@ -265,7 +265,7 @@ contains
|
|||
character(10) :: mat ! material identifier
|
||||
character(70) :: comment ! comment for ACE table
|
||||
character(MAX_FILE_LEN) :: filename ! path to ACE cross section library
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
type(SAlphaBeta), pointer :: sab
|
||||
type(XsListing), pointer :: listing
|
||||
|
||||
|
|
@ -422,7 +422,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_esz(nuc, data_0K)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
logical, intent(in) :: data_0K ! are we reading 0K data?
|
||||
|
||||
integer :: NE ! number of energy points for total and elastic cross sections
|
||||
|
|
@ -510,7 +510,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_nu_data(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: i ! loop index
|
||||
integer :: JXS2 ! location for fission nu data
|
||||
|
|
@ -714,7 +714,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_reactions(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: i ! loop indices
|
||||
integer :: i_fission ! index in nuc % index_fission
|
||||
|
|
@ -894,7 +894,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_angular_dist(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: LOCB ! location of angular distribution for given MT
|
||||
integer :: NE ! number of incoming energies
|
||||
|
|
@ -998,7 +998,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_energy_dist(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: i ! loop index
|
||||
integer :: n
|
||||
|
|
@ -1386,7 +1386,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine read_unr_res(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: JXS23 ! location of URR data
|
||||
integer :: lc ! locator
|
||||
|
|
@ -1474,7 +1474,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine generate_nu_fission(nuc)
|
||||
type(Nuclide_CE), intent(inout) :: nuc
|
||||
type(NuclideCE), intent(inout) :: nuc
|
||||
|
||||
integer :: i ! index on nuclide energy grid
|
||||
real(8) :: E ! energy
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ contains
|
|||
integer :: i_low ! lower logarithmic mapping index
|
||||
integer :: i_high ! upper logarithmic mapping index
|
||||
real(8) :: f ! interp factor on nuclide energy grid
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
type(Material), pointer :: mat
|
||||
|
||||
! Set pointer to nuclide and material
|
||||
|
|
@ -367,7 +367,7 @@ contains
|
|||
real(8) :: inelastic ! inelastic cross section
|
||||
logical :: same_nuc ! do we know the xs for this nuclide at this energy?
|
||||
type(UrrData), pointer :: urr
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
micro_xs(i_nuclide) % use_ptable = .true.
|
||||
|
||||
|
|
@ -534,7 +534,7 @@ contains
|
|||
|
||||
pure function elastic_xs_0K(E, nuc) result(xs_out)
|
||||
real(8), intent(in) :: E ! trial energy
|
||||
type(Nuclide_CE), intent(in) :: nuc ! target nuclide at temperature
|
||||
type(NuclideCE), intent(in) :: nuc ! target nuclide at temperature
|
||||
real(8) :: xs_out ! 0K xs at trial energy
|
||||
|
||||
integer :: i_grid ! index on nuclide energy grid
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ contains
|
|||
integer :: i ! index in nuclides array
|
||||
integer :: j ! index in materials array
|
||||
type(ListReal) :: list
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
type(Material), pointer :: mat
|
||||
|
||||
call write_message("Creating unionized energy grid...", 5)
|
||||
|
|
@ -70,7 +70,7 @@ contains
|
|||
real(8) :: E_max ! Maximum energy in MeV
|
||||
real(8) :: E_min ! Minimum energy in MeV
|
||||
real(8), allocatable :: umesh(:) ! Equally log-spaced energy grid
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
! Set minimum/maximum energies
|
||||
E_max = energy_max_neutron
|
||||
|
|
@ -179,7 +179,7 @@ contains
|
|||
integer :: index_e ! index on union energy grid
|
||||
real(8) :: union_energy ! energy on union grid
|
||||
real(8) :: energy ! energy on nuclide grid
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
type(Material), pointer :: mat
|
||||
|
||||
do k = 1, n_materials
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
module fission
|
||||
|
||||
use nuclide_header, only: Nuclide_CE
|
||||
use nuclide_header, only: NuclideCE
|
||||
use constants
|
||||
use error, only: fatal_error
|
||||
use interpolation, only: interpolate_tab1
|
||||
|
|
@ -16,7 +16,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
pure function nu_total(nuc, E) result(nu)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
type(NuclideCE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
real(8), intent(in) :: E ! energy of incoming neutron
|
||||
real(8) :: nu ! number of total neutrons emitted per fission
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
pure function nu_prompt(nuc, E) result(nu)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
type(NuclideCE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
real(8), intent(in) :: E ! energy of incoming neutron
|
||||
real(8) :: nu ! number of prompt neutrons emitted per fission
|
||||
|
||||
|
|
@ -86,7 +86,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
pure function nu_delayed(nuc, E) result(nu)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
type(NuclideCE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
real(8), intent(in) :: E ! energy of incoming neutron
|
||||
real(8) :: nu ! number of delayed neutrons emitted per fission
|
||||
|
||||
|
|
@ -109,7 +109,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
pure function yield_delayed(nuc, E, g) result(yield)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
type(NuclideCE), intent(in) :: nuc ! nuclide from which to find nu
|
||||
real(8), intent(in) :: E ! energy of incoming neutron
|
||||
real(8) :: yield ! delayed neutron precursor yield
|
||||
integer, intent(in) :: g ! the delayed neutron precursor group
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ module global
|
|||
! CONTINUOUS-ENERGY CROSS SECTION RELATED VARIABLES
|
||||
|
||||
! Cross section arrays
|
||||
type(Nuclide_CE), allocatable, target :: nuclides(:) ! Nuclide cross-sections
|
||||
type(NuclideCE), allocatable, target :: nuclides(:) ! Nuclide cross-sections
|
||||
type(SAlphaBeta), allocatable, target :: sab_tables(:) ! S(a,b) tables
|
||||
|
||||
integer :: n_sab_tables ! Number of S(a,b) thermal scattering tables
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ module initialize
|
|||
hdf5_tallyresult_t, hdf5_integer8_t
|
||||
use input_xml, only: read_input_xml, cells_in_univ_dict, read_plots_xml
|
||||
use material_header, only: Material
|
||||
use mgxs_data, only: read_mgxs, same_nuclide_mg_list, create_macro_xs
|
||||
use mgxs_data, only: read_mgxs, same_NuclideMG_list, create_macro_xs
|
||||
use output, only: title, header, print_version, write_message, &
|
||||
print_usage, write_xs_summary, print_plot
|
||||
use random_lcg, only: initialize_prng
|
||||
|
|
@ -126,7 +126,7 @@ contains
|
|||
if (run_CE) then
|
||||
call same_nuclide_list()
|
||||
else
|
||||
call same_nuclide_mg_list()
|
||||
call same_NuclideMG_list()
|
||||
end if
|
||||
|
||||
! Construct information needed for nuclear data
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ module macroxs
|
|||
use material_header, only: Material
|
||||
use math
|
||||
use nuclide_header, only: find_angle, MaterialMacroXS, NuclideMicroXS, &
|
||||
Nuclide_MG, NuclideMGContainer
|
||||
NuclideMG, NuclideMGContainer
|
||||
use random_lcg, only: prn
|
||||
use scattdata_header
|
||||
use search
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ contains
|
|||
integer :: i ! loop index over nuclides
|
||||
integer :: gin, gout ! group indices
|
||||
real(8) :: atom_density ! atom density of a nuclide
|
||||
! class(Nuclide_Base), pointer :: nuc ! current nuclide
|
||||
! class(NuclideBase), pointer :: nuc ! current nuclide
|
||||
integer :: imu
|
||||
real(8) :: norm
|
||||
integer :: mat_max_order, order, l
|
||||
|
|
@ -239,7 +239,7 @@ contains
|
|||
|
||||
! Perform our operations which depend upon the type
|
||||
select type(nuc => nuclides(mat % nuclide(i)) % obj)
|
||||
type is (Nuclide_Iso)
|
||||
type is (NuclideIso)
|
||||
|
||||
! Add contributions to total, absorption, and fission data (if necessary)
|
||||
this % total = this % total + atom_density * nuc % total
|
||||
|
|
@ -305,9 +305,9 @@ contains
|
|||
nuc % mult(gout,gin)
|
||||
end do
|
||||
end do
|
||||
type is (Nuclide_Angle)
|
||||
type is (NuclideAngle)
|
||||
error_code = 1
|
||||
error_text = "Invalid Passing of Nuclide_Angle to MacroXS_Iso Object"
|
||||
error_text = "Invalid Passing of NuclideAngle to MacroXS_Iso Object"
|
||||
return
|
||||
end select
|
||||
end do
|
||||
|
|
@ -393,12 +393,12 @@ contains
|
|||
error_text = ''
|
||||
|
||||
! Get the number of each polar and azi angles and make sure all the
|
||||
! Nuclide_Angle types have the same number of these angles
|
||||
! NuclideAngle types have the same number of these angles
|
||||
npol = -1
|
||||
nazi = -1
|
||||
do i = 1, mat % n_nuclides
|
||||
select type(nuc => nuclides(mat % nuclide(i)) % obj)
|
||||
type is (Nuclide_Angle)
|
||||
type is (NuclideAngle)
|
||||
if (npol == -1) then
|
||||
npol = nuc % Npol
|
||||
nazi = nuc % Nazi
|
||||
|
|
@ -522,11 +522,11 @@ contains
|
|||
|
||||
! Perform our operations which depend upon the type
|
||||
select type(nuc => nuclides(mat % nuclide(i)) % obj)
|
||||
type is (Nuclide_Iso)
|
||||
type is (NuclideIso)
|
||||
error_code = 1
|
||||
error_text = "Invalid Passing of Nuclide_Iso to MacroXS_Angle Object"
|
||||
error_text = "Invalid Passing of NuclideIso to MacroXS_Angle Object"
|
||||
return
|
||||
type is (Nuclide_Angle)
|
||||
type is (NuclideAngle)
|
||||
! Add contributions to total, absorption, and fission data (if necessary)
|
||||
this % total = this % total + atom_density * nuc % total
|
||||
this % absorption = this % absorption + &
|
||||
|
|
|
|||
|
|
@ -119,13 +119,13 @@ contains
|
|||
! Now allocate accordingly
|
||||
select case(representation)
|
||||
case(MGXS_ISOTROPIC)
|
||||
allocate(Nuclide_Iso :: nuclides_MG(i_nuclide) % obj)
|
||||
allocate(NuclideIso :: nuclides_MG(i_nuclide) % obj)
|
||||
case(MGXS_ANGLE)
|
||||
allocate(Nuclide_Angle :: nuclides_MG(i_nuclide) % obj)
|
||||
allocate(NuclideAngle :: nuclides_MG(i_nuclide) % obj)
|
||||
end select
|
||||
|
||||
! Now read in the data specific to the type we just declared
|
||||
call nuclide_mg_init(nuclides_MG(i_nuclide) % obj, node_xsdata, &
|
||||
call NuclideMG_init(nuclides_MG(i_nuclide) % obj, node_xsdata, &
|
||||
energy_groups, get_kfiss, get_fiss, error_code, &
|
||||
error_text)
|
||||
|
||||
|
|
@ -175,7 +175,7 @@ contains
|
|||
! in multiple entries in the nuclides array for a single zaid number.
|
||||
!===============================================================================
|
||||
|
||||
subroutine same_nuclide_mg_list()
|
||||
subroutine same_NuclideMG_list()
|
||||
|
||||
integer :: i ! index in nuclides array
|
||||
integer :: j ! index in nuclides array
|
||||
|
|
@ -188,15 +188,15 @@ contains
|
|||
end do
|
||||
end do
|
||||
|
||||
end subroutine same_nuclide_mg_list
|
||||
end subroutine same_NuclideMG_list
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_*_INIT reads in the data from the XML file, as already accessed
|
||||
!===============================================================================
|
||||
|
||||
subroutine nuclide_mg_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
subroutine NuclideMG_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
error_code, error_text)
|
||||
class(Nuclide_MG), intent(inout) :: this ! Working Object
|
||||
class(NuclideMG), intent(inout) :: this ! Working Object
|
||||
type(Node), pointer, intent(in) :: node_xsdata ! Data from data.xml
|
||||
integer, intent(in) :: groups ! Number of Energy groups
|
||||
logical, intent(in) :: get_kfiss ! Need Kappa-Fission?
|
||||
|
|
@ -296,19 +296,19 @@ contains
|
|||
end if
|
||||
|
||||
select type(this)
|
||||
type is (Nuclide_Iso)
|
||||
call nuclide_iso_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
type is (NuclideIso)
|
||||
call NuclideIso_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
error_code, error_text)
|
||||
type is (Nuclide_Angle)
|
||||
call nuclide_angle_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
type is (NuclideAngle)
|
||||
call NuclideAngle_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
error_code, error_text)
|
||||
end select
|
||||
|
||||
end subroutine nuclide_mg_init
|
||||
end subroutine NuclideMG_init
|
||||
|
||||
subroutine nuclide_iso_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
subroutine NuclideIso_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
error_code, error_text)
|
||||
class(Nuclide_Iso), intent(inout) :: this ! Working Object
|
||||
class(NuclideIso), intent(inout) :: this ! Working Object
|
||||
type(Node), pointer, intent(in) :: node_xsdata ! Data from data.xml
|
||||
integer, intent(in) :: groups ! Number of Energy groups
|
||||
logical, intent(in) :: get_kfiss ! Need Kappa-Fission?
|
||||
|
|
@ -435,11 +435,11 @@ contains
|
|||
this % mult = ONE
|
||||
end if
|
||||
|
||||
end subroutine nuclide_iso_init
|
||||
end subroutine NuclideIso_init
|
||||
|
||||
subroutine nuclide_angle_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
subroutine NuclideAngle_init(this, node_xsdata, groups, get_kfiss, get_fiss, &
|
||||
error_code, error_text)
|
||||
class(Nuclide_Angle), intent(inout) :: this ! Working Object
|
||||
class(NuclideAngle), intent(inout) :: this ! Working Object
|
||||
type(Node), pointer, intent(in) :: node_xsdata ! Data from data.xml
|
||||
integer, intent(in) :: groups ! Number of Energy groups
|
||||
logical, intent(in) :: get_kfiss ! Need Kappa-Fission?
|
||||
|
|
@ -627,7 +627,7 @@ contains
|
|||
this % mult = ONE
|
||||
end if
|
||||
|
||||
end subroutine nuclide_angle_init
|
||||
end subroutine NuclideAngle_init
|
||||
|
||||
|
||||
!===============================================================================
|
||||
|
|
@ -675,9 +675,9 @@ contains
|
|||
! how we allocate the scatter object within macroxs
|
||||
legendre_mu_points = nuclides_MG(mat % nuclide(1)) % obj % legendre_mu_points
|
||||
select type(nuc => nuclides_MG(mat % nuclide(1)) % obj)
|
||||
type is (Nuclide_Iso)
|
||||
type is (NuclideIso)
|
||||
representation = MGXS_ISOTROPIC
|
||||
type is (Nuclide_Angle)
|
||||
type is (NuclideAngle)
|
||||
representation = MGXS_ANGLE
|
||||
end select
|
||||
scatt_type = nuclides_MG(mat % nuclide(1)) % obj % scatt_type
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ module nuclide_header
|
|||
implicit none
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_BASE contains the base nuclidic data for a nuclide, which does not depend
|
||||
! NuclideBase contains the base nuclidic data for a nuclide, which does not depend
|
||||
! upon how the nuclear data is represented (i.e., CE, or any variant of MG).
|
||||
! The extended types, Nuclide_CE and Nuclide_MG deal with the rest
|
||||
! The extended types, NuclideCE and NuclideMG deal with the rest
|
||||
!===============================================================================
|
||||
|
||||
type, abstract :: Nuclide_Base
|
||||
type, abstract :: NuclideBase
|
||||
character(12) :: name ! name of nuclide, e.g. 92235.03c
|
||||
integer :: zaid ! Z and A identifier, e.g. 92235
|
||||
real(8) :: awr ! Atomic Weight Ratio
|
||||
|
|
@ -31,26 +31,26 @@ module nuclide_header
|
|||
logical :: fissionable ! nuclide is fissionable?
|
||||
|
||||
contains
|
||||
procedure(nuclide_base_clear_), deferred, pass :: clear ! Deallocates Nuclide
|
||||
procedure(print_nuclide_), deferred, pass :: print ! Writes nuclide info
|
||||
end type Nuclide_Base
|
||||
procedure(nuclidebase_clear_), deferred, pass :: clear ! Deallocates Nuclide
|
||||
procedure(print_nuclide_), deferred, pass :: print ! Writes nuclide info
|
||||
end type NuclideBase
|
||||
|
||||
abstract interface
|
||||
|
||||
subroutine nuclide_base_clear_(this)
|
||||
import Nuclide_Base
|
||||
class(Nuclide_Base), intent(inout) :: this
|
||||
end subroutine nuclide_base_clear_
|
||||
subroutine nuclidebase_clear_(this)
|
||||
import NuclideBase
|
||||
class(NuclideBase), intent(inout) :: this
|
||||
end subroutine nuclidebase_clear_
|
||||
|
||||
subroutine print_nuclide_(this, unit)
|
||||
import Nuclide_Base
|
||||
class(Nuclide_Base),intent(in) :: this
|
||||
import NuclideBase
|
||||
class(NuclideBase),intent(in) :: this
|
||||
integer, optional, intent(in) :: unit
|
||||
end subroutine print_nuclide_
|
||||
|
||||
end interface
|
||||
|
||||
type, extends(Nuclide_Base) :: Nuclide_CE
|
||||
type, extends(NuclideBase) :: NuclideCE
|
||||
! Energy grid information
|
||||
integer :: n_grid ! # of nuclide grid points
|
||||
integer, allocatable :: grid_index(:) ! log grid mapping indices
|
||||
|
|
@ -108,29 +108,29 @@ module nuclide_header
|
|||
|
||||
! Type-Bound procedures
|
||||
contains
|
||||
procedure, pass :: clear => nuclide_ce_clear
|
||||
procedure, pass :: print => nuclide_ce_print
|
||||
end type Nuclide_CE
|
||||
procedure, pass :: clear => nuclidece_clear
|
||||
procedure, pass :: print => nuclidece_print
|
||||
end type NuclideCE
|
||||
|
||||
type, abstract, extends(Nuclide_Base) :: Nuclide_MG
|
||||
type, abstract, extends(NuclideBase) :: NuclideMG
|
||||
! Scattering Order Information
|
||||
integer :: order ! Order of data (Scattering for Nuclide_Iso,
|
||||
! Number of angles for all in Nuclide_Angle)
|
||||
integer :: order ! Order of data (Scattering for NuclideIso,
|
||||
! Number of angles for all in NuclideAngle)
|
||||
integer :: scatt_type ! either legendre, histogram, or tabular.
|
||||
integer :: legendre_mu_points ! Number of tabular points to use to represent
|
||||
! Legendre distribs, -1 if sample with the
|
||||
! Legendres themselves
|
||||
! Type-Bound procedures
|
||||
contains
|
||||
procedure(nuclide_mg_get_xs_), deferred, pass :: get_xs ! Get the xs
|
||||
procedure(nuclide_calc_f_), deferred, pass :: calc_f ! Calculates f, given mu
|
||||
end type Nuclide_MG
|
||||
procedure(nuclidemg_get_xs), deferred, pass :: get_xs ! Get the xs
|
||||
procedure(nuclide_calc_f_), deferred, pass :: calc_f ! Calculates f, given mu
|
||||
end type NuclideMG
|
||||
|
||||
abstract interface
|
||||
function nuclide_mg_get_xs_(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
function nuclidemg_get_xs(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
result(xs)
|
||||
import Nuclide_MG
|
||||
class(Nuclide_MG), intent(in) :: this
|
||||
import NuclideMG
|
||||
class(NuclideMG), intent(in) :: this
|
||||
integer, intent(in) :: g ! Incoming Energy group
|
||||
character(*), intent(in) :: xstype ! Cross Section Type
|
||||
integer, optional, intent(in) :: gout ! Outgoing Group
|
||||
|
|
@ -139,11 +139,11 @@ module nuclide_header
|
|||
integer, optional, intent(in) :: i_azi ! Azimuthal Index
|
||||
integer, optional, intent(in) :: i_pol ! Polar Index
|
||||
real(8) :: xs ! Resultant xs
|
||||
end function nuclide_mg_get_xs_
|
||||
end function nuclidemg_get_xs
|
||||
|
||||
pure function nuclide_calc_f_(this, gin, gout, mu, uvw, i_azi, i_pol) result(f)
|
||||
import Nuclide_MG
|
||||
class(Nuclide_MG), intent(in) :: this
|
||||
import NuclideMG
|
||||
class(NuclideMG), intent(in) :: this
|
||||
integer, intent(in) :: gin ! Incoming Energy Group
|
||||
integer, intent(in) :: gout ! Outgoing Energy Group
|
||||
real(8), intent(in) :: mu ! Angle of interest
|
||||
|
|
@ -156,11 +156,11 @@ module nuclide_header
|
|||
end interface
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_ISO contains the base MGXS data for a nuclide specifically for
|
||||
! NuclideIso contains the base MGXS data for a nuclide specifically for
|
||||
! isotropically weighted MGXS
|
||||
!===============================================================================
|
||||
|
||||
type, extends(Nuclide_MG) :: Nuclide_Iso
|
||||
type, extends(NuclideMG) :: NuclideIso
|
||||
|
||||
! Microscopic cross sections
|
||||
real(8), allocatable :: total(:) ! total cross section
|
||||
|
|
@ -174,18 +174,18 @@ module nuclide_header
|
|||
|
||||
! Type-Bound procedures
|
||||
contains
|
||||
procedure, pass :: clear => nuclide_iso_clear ! Deallocates Nuclide
|
||||
procedure, pass :: print => nuclide_iso_print ! Writes nuclide info
|
||||
procedure, pass :: get_xs => nuclide_iso_get_xs ! Gets Size of Data w/in Object
|
||||
procedure, pass :: calc_f => nuclide_mg_iso_calc_f ! Calcs f given mu
|
||||
end type Nuclide_Iso
|
||||
procedure, pass :: clear => nuclideiso_clear ! Deallocates Nuclide
|
||||
procedure, pass :: print => nuclideiso_print ! Writes nuclide info
|
||||
procedure, pass :: get_xs => nuclideiso_get_xs ! Gets Size of Data w/in Object
|
||||
procedure, pass :: calc_f => nuclideiso_calc_f ! Calcs f given mu
|
||||
end type NuclideIso
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_ANGLE contains the base MGXS data for a nuclide specifically for
|
||||
! NuclideAngle contains the base MGXS data for a nuclide specifically for
|
||||
! explicit angle-dependent weighted MGXS
|
||||
!===============================================================================
|
||||
|
||||
type, extends(Nuclide_MG) :: Nuclide_Angle
|
||||
type, extends(NuclideMG) :: NuclideAngle
|
||||
|
||||
! Microscopic cross sections. Dimensions are: (Npol, Nazi, Nl, Ng, Ng)
|
||||
real(8), allocatable :: total(:,:,:) ! total cross section
|
||||
|
|
@ -205,23 +205,23 @@ module nuclide_header
|
|||
|
||||
! Type-Bound procedures
|
||||
contains
|
||||
procedure, pass :: clear => nuclide_angle_clear ! Deallocates Nuclide
|
||||
procedure, pass :: print => nuclide_angle_print ! Gets Size of Data w/in Object
|
||||
procedure, pass :: get_xs => nuclide_angle_get_xs ! Gets Size of Data w/in Object
|
||||
procedure, pass :: calc_f => nuclide_mg_angle_calc_f ! Calcs f given mu
|
||||
end type Nuclide_Angle
|
||||
procedure, pass :: clear => nuclideangle_clear ! Deallocates Nuclide
|
||||
procedure, pass :: print => nuclideangle_print ! Gets Size of Data w/in Object
|
||||
procedure, pass :: get_xs => nuclideangle_get_xs ! Gets Size of Data w/in Object
|
||||
procedure, pass :: calc_f => nuclideangle_calc_f ! Calcs f given mu
|
||||
end type NuclideAngle
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDEMGCONTAINER pointer array for storing Nuclides
|
||||
!===============================================================================
|
||||
|
||||
type NuclideMGContainer
|
||||
class(Nuclide_MG), pointer :: obj
|
||||
class(NuclideMG), pointer :: obj
|
||||
end type NuclideMGContainer
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE0K temporarily contains all 0K cross section data and other parameters
|
||||
! needed to treat resonance scattering before transferring them to NUCLIDE_CE
|
||||
! needed to treat resonance scattering before transferring them to NuclideCE
|
||||
!===============================================================================
|
||||
|
||||
type Nuclide0K
|
||||
|
|
@ -297,13 +297,13 @@ module nuclide_header
|
|||
contains
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_*_CLEAR resets and deallocates data in Nuclide_Base, Nuclide_Iso
|
||||
! or Nuclide_Angle
|
||||
! NUCLIDE_*_CLEAR resets and deallocates data in NuclideBase, NuclideIso
|
||||
! or NuclideAngle
|
||||
!===============================================================================
|
||||
|
||||
subroutine nuclide_ce_clear(this)
|
||||
subroutine nuclidece_clear(this)
|
||||
|
||||
class(Nuclide_CE), intent(inout) :: this ! The Nuclide object to clear
|
||||
class(NuclideCE), intent(inout) :: this ! The Nuclide object to clear
|
||||
|
||||
integer :: i ! Loop counter
|
||||
|
||||
|
|
@ -317,11 +317,11 @@ module nuclide_header
|
|||
|
||||
call this % reaction_index % clear()
|
||||
|
||||
end subroutine nuclide_ce_clear
|
||||
end subroutine nuclidece_clear
|
||||
|
||||
subroutine nuclide_iso_clear(this)
|
||||
subroutine nuclideiso_clear(this)
|
||||
|
||||
class(Nuclide_Iso), intent(inout) :: this ! The Nuclide object to clear
|
||||
class(NuclideIso), intent(inout) :: this ! The Nuclide object to clear
|
||||
|
||||
! Cler the extended information
|
||||
if (allocated(this % total)) then
|
||||
|
|
@ -340,11 +340,11 @@ module nuclide_header
|
|||
deallocate(this % mult)
|
||||
end if
|
||||
|
||||
end subroutine nuclide_iso_clear
|
||||
end subroutine nuclideiso_clear
|
||||
|
||||
subroutine nuclide_angle_clear(this)
|
||||
subroutine nuclideangle_clear(this)
|
||||
|
||||
class(Nuclide_Angle), intent(inout) :: this ! The Nuclide object to clear
|
||||
class(NuclideAngle), intent(inout) :: this ! The Nuclide object to clear
|
||||
|
||||
! Cler the extended information
|
||||
if (allocated(this % total)) then
|
||||
|
|
@ -370,15 +370,15 @@ module nuclide_header
|
|||
deallocate(this % mult)
|
||||
end if
|
||||
|
||||
end subroutine nuclide_angle_clear
|
||||
end subroutine nuclideangle_clear
|
||||
|
||||
!===============================================================================
|
||||
! PRINT_NUCLIDE_* displays information about a continuous-energy neutron
|
||||
! cross_section table and its reactions and secondary angle/energy distributions
|
||||
!===============================================================================
|
||||
|
||||
subroutine nuclide_ce_print(this, unit)
|
||||
class(Nuclide_CE), intent(in) :: this
|
||||
subroutine nuclidece_print(this, unit)
|
||||
class(NuclideCE), intent(in) :: this
|
||||
integer, intent(in), optional :: unit
|
||||
|
||||
integer :: i ! loop index over nuclides
|
||||
|
|
@ -451,10 +451,10 @@ module nuclide_header
|
|||
|
||||
! Blank line at end of nuclide
|
||||
write(unit_,*)
|
||||
end subroutine nuclide_ce_print
|
||||
end subroutine nuclidece_print
|
||||
|
||||
subroutine nuclide_mg_print(this, unit_)
|
||||
class(Nuclide_MG), intent(in) :: this
|
||||
subroutine nuclidemg_print(this, unit_)
|
||||
class(NuclideMG), intent(in) :: this
|
||||
integer, intent(in) :: unit_
|
||||
|
||||
character(MAX_LINE_LEN) :: temp_str
|
||||
|
|
@ -484,11 +484,11 @@ module nuclide_header
|
|||
end if
|
||||
write(unit_,*) ' Fissionable = ', this % fissionable
|
||||
|
||||
end subroutine nuclide_mg_print
|
||||
end subroutine nuclidemg_print
|
||||
|
||||
subroutine nuclide_iso_print(this, unit)
|
||||
subroutine nuclideiso_print(this, unit)
|
||||
|
||||
class(Nuclide_Iso), intent(in) :: this
|
||||
class(NuclideIso), intent(in) :: this
|
||||
integer, optional, intent(in) :: unit
|
||||
|
||||
integer :: unit_ ! unit to write to
|
||||
|
|
@ -502,7 +502,7 @@ module nuclide_header
|
|||
end if
|
||||
|
||||
! Write Basic Nuclide Information
|
||||
call nuclide_mg_print(this, unit_)
|
||||
call nuclidemg_print(this, unit_)
|
||||
|
||||
! Determine size of mgxs and scattering matrices
|
||||
size_scattmat = (size(this % scatter) + size(this % mult)) * 8
|
||||
|
|
@ -524,11 +524,11 @@ module nuclide_header
|
|||
! Blank line at end of nuclide
|
||||
write(unit_,*)
|
||||
|
||||
end subroutine nuclide_iso_print
|
||||
end subroutine nuclideiso_print
|
||||
|
||||
subroutine nuclide_angle_print(this, unit)
|
||||
subroutine nuclideangle_print(this, unit)
|
||||
|
||||
class(Nuclide_Angle), intent(in) :: this
|
||||
class(NuclideAngle), intent(in) :: this
|
||||
integer, optional, intent(in) :: unit
|
||||
|
||||
integer :: unit_ ! unit to write to
|
||||
|
|
@ -542,7 +542,7 @@ module nuclide_header
|
|||
end if
|
||||
|
||||
! Write Basic Nuclide Information
|
||||
call nuclide_mg_print(this, unit_)
|
||||
call nuclidemg_print(this, unit_)
|
||||
write(unit_,*) ' # of Polar Angles = ' // trim(to_str(this % Npol))
|
||||
write(unit_,*) ' # of Azimuthal Angles = ' // trim(to_str(this % Nazi))
|
||||
|
||||
|
|
@ -567,15 +567,15 @@ module nuclide_header
|
|||
write(unit_,*)
|
||||
|
||||
|
||||
end subroutine nuclide_angle_print
|
||||
end subroutine nuclideangle_print
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_*_GET_XS Returns the requested data type
|
||||
!===============================================================================
|
||||
|
||||
function nuclide_iso_get_xs(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
function nuclideiso_get_xs(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
result(xs)
|
||||
class(Nuclide_Iso), intent(in) :: this
|
||||
class(NuclideIso), intent(in) :: this
|
||||
integer, intent(in) :: g ! Incoming Energy group
|
||||
character(*), intent(in) :: xstype ! Cross Section Type
|
||||
integer, optional, intent(in) :: gout ! Outgoing Group
|
||||
|
|
@ -622,11 +622,11 @@ module nuclide_header
|
|||
xs = this % total(g) - this % absorption(g)
|
||||
end select
|
||||
end if
|
||||
end function nuclide_iso_get_xs
|
||||
end function nuclideiso_get_xs
|
||||
|
||||
function nuclide_angle_get_xs(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
function nuclideangle_get_xs(this, g, xstype, gout, uvw, mu, i_azi, i_pol) &
|
||||
result(xs)
|
||||
class(Nuclide_Angle), intent(in) :: this
|
||||
class(NuclideAngle), intent(in) :: this
|
||||
integer, intent(in) :: g ! Incoming Energy group
|
||||
character(*), intent(in) :: xstype ! Cross Section Type
|
||||
integer, optional, intent(in) :: gout ! Outgoing Group
|
||||
|
|
@ -685,16 +685,16 @@ module nuclide_header
|
|||
end select
|
||||
end if
|
||||
|
||||
end function nuclide_angle_get_xs
|
||||
end function nuclideangle_get_xs
|
||||
|
||||
!===============================================================================
|
||||
! NUCLIDE_*_CALC_F Finds the value of f(mu), the scattering angle probability,
|
||||
! given mu
|
||||
!===============================================================================
|
||||
|
||||
pure function nuclide_mg_iso_calc_f(this, gin, gout, mu, uvw, i_azi, i_pol) &
|
||||
pure function nuclideiso_calc_f(this, gin, gout, mu, uvw, i_azi, i_pol) &
|
||||
result(f)
|
||||
class(Nuclide_Iso), intent(in) :: this
|
||||
class(NuclideIso), intent(in) :: this
|
||||
integer, intent(in) :: gin ! Incoming Energy Group
|
||||
integer, intent(in) :: gout ! Outgoing Energy Group
|
||||
real(8), intent(in) :: mu ! Angle of interest
|
||||
|
|
@ -737,11 +737,11 @@ module nuclide_header
|
|||
|
||||
end if
|
||||
|
||||
end function nuclide_mg_iso_calc_f
|
||||
end function nuclideiso_calc_f
|
||||
|
||||
pure function nuclide_mg_angle_calc_f(this, gin, gout, mu, uvw, i_azi, &
|
||||
pure function nuclideangle_calc_f(this, gin, gout, mu, uvw, i_azi, &
|
||||
i_pol) result(f)
|
||||
class(Nuclide_Angle), intent(in) :: this
|
||||
class(NuclideAngle), intent(in) :: this
|
||||
integer, intent(in) :: gin ! Incoming Energy Group
|
||||
integer, intent(in) :: gout ! Outgoing Energy Group
|
||||
real(8), intent(in) :: mu ! Angle of interest
|
||||
|
|
@ -791,7 +791,7 @@ module nuclide_header
|
|||
|
||||
end if
|
||||
|
||||
end function nuclide_mg_angle_calc_f
|
||||
end function nuclideangle_calc_f
|
||||
|
||||
!===============================================================================
|
||||
! find_angle finds the closest angle on the data grid and returns that index
|
||||
|
|
|
|||
|
|
@ -350,10 +350,10 @@ contains
|
|||
call sab_tables(i) % print(unit=unit_xs)
|
||||
end do SAB_TABLES_LOOP
|
||||
else
|
||||
NUCLIDE_MG_LOOP: do i = 1, n_nuclides_total
|
||||
NuclideMG_LOOP: do i = 1, n_nuclides_total
|
||||
! Print information about nuclide
|
||||
call nuclides_mg(i) % obj % print(unit=unit_xs)
|
||||
end do NUCLIDE_MG_LOOP
|
||||
end do NuclideMG_LOOP
|
||||
end if
|
||||
|
||||
! Close cross section summary file
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ contains
|
|||
integer :: i_nuclide ! index in nuclides array
|
||||
integer :: i_nuc_mat ! index in material's nuclides array
|
||||
integer :: i_reaction ! index in nuc % reactions array
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
call sample_nuclide(p, 'total ', i_nuclide, i_nuc_mat)
|
||||
|
||||
|
|
@ -198,7 +198,7 @@ contains
|
|||
real(8) :: f
|
||||
real(8) :: prob
|
||||
real(8) :: cutoff
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
! Get pointer to nuclide
|
||||
nuc => nuclides(i_nuclide)
|
||||
|
|
@ -296,7 +296,7 @@ contains
|
|||
real(8) :: uvw_new(3) ! outgoing uvw for iso-in-lab scattering
|
||||
real(8) :: uvw_old(3) ! incoming uvw for iso-in-lab scattering
|
||||
real(8) :: phi ! azimuthal angle for iso-in-lab scattering
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
! copy incoming direction
|
||||
uvw_old(:) = p % coord(1) % uvw
|
||||
|
|
@ -411,7 +411,7 @@ contains
|
|||
real(8) :: v_cm(3) ! velocity of center-of-mass
|
||||
real(8) :: v_t(3) ! velocity of target nucleus
|
||||
real(8) :: uvw_cm(3) ! directional cosines in center-of-mass
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
! get pointer to nuclide
|
||||
nuc => nuclides(i_nuclide)
|
||||
|
|
@ -737,7 +737,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine sample_target_velocity(nuc, v_target, E, uvw, v_neut, wgt, xs_eff)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! target nuclide at temperature T
|
||||
type(NuclideCE), intent(in) :: nuc ! target nuclide at temperature T
|
||||
real(8), intent(out) :: v_target(3) ! target velocity
|
||||
real(8), intent(in) :: v_neut(3) ! neutron velocity
|
||||
real(8), intent(in) :: E ! particle energy
|
||||
|
|
@ -982,7 +982,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine sample_cxs_target_velocity(nuc, v_target, E, uvw)
|
||||
type(Nuclide_CE), intent(in) :: nuc ! target nuclide at temperature
|
||||
type(NuclideCE), intent(in) :: nuc ! target nuclide at temperature
|
||||
real(8), intent(out) :: v_target(3)
|
||||
real(8), intent(in) :: E
|
||||
real(8), intent(in) :: uvw(3)
|
||||
|
|
@ -1070,7 +1070,7 @@ contains
|
|||
real(8) :: phi ! fission neutron azimuthal angle
|
||||
real(8) :: weight ! weight adjustment for ufs method
|
||||
logical :: in_mesh ! source site in ufs mesh?
|
||||
type(Nuclide_CE), pointer :: nuc
|
||||
type(NuclideCE), pointer :: nuc
|
||||
|
||||
! Get pointers
|
||||
nuc => nuclides(i_nuclide)
|
||||
|
|
@ -1180,7 +1180,7 @@ contains
|
|||
|
||||
function sample_fission_energy(nuc, rxn, p) result(E_out)
|
||||
|
||||
type(Nuclide_CE), intent(in) :: nuc
|
||||
type(NuclideCE), intent(in) :: nuc
|
||||
type(Reaction), intent(in) :: rxn
|
||||
type(Particle), intent(inout) :: p ! Particle causing fission
|
||||
real(8) :: E_out ! outgoing energy of fission neutron
|
||||
|
|
@ -1293,7 +1293,7 @@ contains
|
|||
!===============================================================================
|
||||
|
||||
subroutine inelastic_scatter(nuc, rxn, p)
|
||||
type(Nuclide_CE), intent(in) :: nuc
|
||||
type(NuclideCE), intent(in) :: nuc
|
||||
type(Reaction), intent(in) :: rxn
|
||||
type(Particle), intent(inout) :: p
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue