From 6da9f16d298c7c0a4d2f0ad663fca16ba6efaeb6 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Mon, 24 Oct 2016 18:44:51 -0500 Subject: [PATCH] Convert ACE data from MeV to eV --- .travis.yml | 2 +- docs/source/io_formats/mgxs_library.rst | 8 +-- docs/source/io_formats/nuclear_data.rst | 18 +++---- docs/source/io_formats/particle_restart.rst | 2 +- docs/source/usersguide/input.rst | 12 ++--- examples/python/basic/build-xml.py | 4 +- examples/python/pincell/build-xml.py | 2 +- .../python/pincell_multigroup/build-xml.py | 8 +-- examples/xml/basic/tallies.xml | 6 +-- examples/xml/pincell/tallies.xml | 2 +- examples/xml/pincell_multigroup/mgxs.h5 | Bin 61488 -> 16624 bytes openmc/cmfd.py | 4 +- openmc/data/angle_distribution.py | 7 +-- openmc/data/correlated.py | 8 +-- openmc/data/data.py | 7 ++- openmc/data/energy_distribution.py | 31 ++++++----- openmc/data/fission_Q_data_endfb71.h5 | Bin 67543 -> 67543 bytes openmc/data/fission_energy.py | 48 +++++------------- openmc/data/function.py | 13 +++-- openmc/data/kalbach_mann.py | 8 +-- openmc/data/nbody.py | 6 +-- openmc/data/neutron.py | 12 ++--- openmc/data/reaction.py | 24 +++++---- openmc/data/thermal.py | 28 +++++----- openmc/data/urr.py | 12 +++-- openmc/filter.py | 12 ++--- openmc/mgxs/groups.py | 10 ++-- openmc/mgxs/mdgxs.py | 24 ++++----- openmc/mgxs/mgxs.py | 28 +++++----- openmc/particle_restart.py | 2 +- openmc/settings.py | 2 +- src/cmfd_input.F90 | 2 +- src/constants.F90 | 4 +- src/cross_section.F90 | 21 +++----- src/doppler.F90 | 2 +- src/geometry_header.F90 | 2 +- src/input_xml.F90 | 6 +-- src/mgxs_data.F90 | 4 +- src/mgxs_header.F90 | 10 ++-- src/nuclide_header.F90 | 8 +-- src/particle_header.F90 | 2 +- src/physics.F90 | 14 ++--- src/sab_header.F90 | 2 +- src/tally.F90 | 4 +- 44 files changed, 219 insertions(+), 212 deletions(-) diff --git a/.travis.yml b/.travis.yml index 676bfb42f..e922eba6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ install: true before_script: - if [[ ! -e $HOME/nndc_hdf5/cross_sections.xml ]]; then - wget https://anl.box.com/shared/static/fouwc8lh9he2wc97kzq65u4rp8zt9sgq.xz -O - | tar -C $HOME -xvJ; + wget https://anl.box.com/shared/static/1ow880up90hgwynvh91twwfteameuwre.xz -O - | tar -C $HOME -xvJ; fi - export OPENMC_CROSS_SECTIONS=$HOME/nndc_hdf5/cross_sections.xml diff --git a/docs/source/io_formats/mgxs_library.rst b/docs/source/io_formats/mgxs_library.rst index 4e5ea2196..fd00ad8c3 100644 --- a/docs/source/io_formats/mgxs_library.rst +++ b/docs/source/io_formats/mgxs_library.rst @@ -30,7 +30,7 @@ MGXS Library Specification :Attributes: - **groups** (*int*) -- Number of energy groups - **group structure** (*double[]*) -- Monotonically increasing - list of group boundaries, in units of MeV. The length of this + list of group boundaries, in units of eV. The length of this array should be the number of groups plus 1. **//** @@ -77,8 +77,8 @@ data for the nuclide or material that it represents. **//kTs/** -:Datasets: - - **K** (*double*) -- kT values (in MeV) for each Temperature +:Datasets: + - **K** (*double*) -- kT values (in eV) for each temperature TTT (in Kelvin), rounded to the nearest integer **//K/** @@ -161,4 +161,4 @@ Data specific to neutron scattering for the temperature K 1.0) will be assumed. The pre-flattened array is shapes consistent with `scatter_matrix` except the "[Order]" dimension in `scatter_shape` is ignored since - this data is assumed isotropic. \ No newline at end of file + this data is assumed isotropic. diff --git a/docs/source/io_formats/nuclear_data.rst b/docs/source/io_formats/nuclear_data.rst index 060e96c0c..4a9b82b1c 100644 --- a/docs/source/io_formats/nuclear_data.rst +++ b/docs/source/io_formats/nuclear_data.rst @@ -27,14 +27,14 @@ temperature-dependent data set. For example, the data set corresponding to 300 Kelvin would be located at `300K`. :Datasets: - - **K** (*double*) -- kT values (in MeV) for each Temperature + - **K** (*double*) -- kT values (in eV) for each temperature TTT (in Kelvin) **//reactions/reaction_/** :Attributes: - **mt** (*int*) -- ENDF MT reaction number - **label** (*char[]*) -- Name of the reaction - - **Q_value** (*double*) -- Q value in MeV + - **Q_value** (*double*) -- Q value in eV - **center_of_mass** (*int*) -- Whether the reference frame for scattering is center-of-mass (1) or laboratory (0) - **n_product** (*int*) -- Number of reaction products @@ -129,7 +129,7 @@ temperature-dependent data set. For example, the data set corresponding to 300 Kelvin would be located at `300K`. :Datasets: - - **K** (*double*) -- kT values (in MeV) for each Temperature + - **K** (*double*) -- kT values (in eV) for each temperature TTT (in Kelvin) **//elastic/K/** @@ -333,7 +333,7 @@ N-Body Phase Space - **n_particles** (*int*) -- Number of product particles - **atomic_weight_ratio** (*double*) -- Atomic weight ratio of the target nuclide in neutron masses - - **q_value** (*double*) -- Q value for the reaction in MeV + - **q_value** (*double*) -- Q value for the reaction in eV .. _energy_distribution: @@ -346,7 +346,7 @@ Maxwell :Object type: Group :Attributes: - **type** (*char[]*) -- 'maxwell' - - **u** (*double*) -- Restriction energy in MeV + - **u** (*double*) -- Restriction energy in eV :Datasets: - **theta** (:ref:`tabulated <1d_tabulated>`) -- Maxwellian temperature as a function of energy @@ -356,7 +356,7 @@ Evaporation :Object type: Group :Attributes: - **type** (*char[]*) -- 'evaporation' - - **u** (*double*) -- Restriction energy in MeV + - **u** (*double*) -- Restriction energy in eV :Datasets: - **theta** (:ref:`tabulated <1d_tabulated>`) -- Evaporation temperature as a function of energy @@ -366,7 +366,7 @@ Watt Fission Spectrum :Object type: Group :Attributes: - **type** (*char[]*) -- 'watt' - - **u** (*double*) -- Restriction energy in MeV + - **u** (*double*) -- Restriction energy in eV :Datasets: - **a** (:ref:`tabulated <1d_tabulated>`) -- Watt parameter :math:`a` as a function of incident energy - **b** (:ref:`tabulated <1d_tabulated>`) -- Watt parameter :math:`b` @@ -386,7 +386,7 @@ Discrete Photon :Object type: Group :Attributes: - **type** (*char[]*) -- 'discrete_photon' - **primary_flag** (*int*) -- Whether photon is a primary - - **energy** (*double*) -- Photon energy in MeV + - **energy** (*double*) -- Photon energy in eV - **atomic_weight_ratio** (*double*) -- Atomic weight ratio of target nuclide in neutron masses @@ -396,7 +396,7 @@ Level Inelastic :Object type: Group :Attributes: - **type** (*char[]*) -- 'level' - **threshold** (*double*) -- Energy threshold in the laboratory - system in MeV + system in eV - **mass_ratio** (*double*) -- :math:`(A/(A + 1))^2` Continuous Tabular diff --git a/docs/source/io_formats/particle_restart.rst b/docs/source/io_formats/particle_restart.rst index c30eda318..3dee8c47d 100644 --- a/docs/source/io_formats/particle_restart.rst +++ b/docs/source/io_formats/particle_restart.rst @@ -46,7 +46,7 @@ The current revision of the particle restart file format is 1. **/energy** (*double*) - Energy of the particle in MeV for continuous-energy mode, or the energy + Energy of the particle in eV for continuous-energy mode, or the energy group of the particle for multi-group mode. **/xyz** (*double[3]*) diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 74de4caa4..26f3bdc04 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1520,7 +1520,7 @@ The ```` element accepts the following sub-elements: .. code-block:: xml - + then two energy bins will be created, one with energies between 0 and 1 MeV and the other with energies between 1 and 20 MeV. @@ -1535,7 +1535,7 @@ The ```` element accepts the following sub-elements: .. code-block:: xml - + then two post-collision energy bins will be created, one with energies between 0 and 1 MeV and the other with energies between @@ -1854,7 +1854,7 @@ The ```` element accepts the following sub-elements: | |particles. The neutrino energy does not contribute | | |to this response. The prompt and delayed | | |:math:`\gamma`-rays are assumed to deposit their | - | |energy locally. Units are MeV per source particle. | + | |energy locally. Units are eV per source particle. | +----------------------+---------------------------------------------------+ |fission-q-prompt |The prompt fission energy production rate. This | | |energy comes in the form of fission fragment | @@ -1863,7 +1863,7 @@ The ```` element accepts the following sub-elements: | |incident energy and it requires that the nuclear | | |data library contains the optional fission energy | | |release data. Energy is assumed to be deposited | - | |locally. Units are MeV per source particle. | + | |locally. Units are eV per source particle. | +----------------------+---------------------------------------------------+ |fission-q-recoverable |The recoverable fission energy production rate. | | |This energy comes in the form of fission fragment | @@ -1874,7 +1874,7 @@ The ```` element accepts the following sub-elements: | |incident neutron energy and it requires that the | | |nuclear data library contains the optional fission | | |energy release data. Energy is assumed to be | - | |deposited locally. Units are MeV per source | + | |deposited locally. Units are eV per source | | |paticle. | +----------------------+---------------------------------------------------+ |decay-rate |The delayed-nu-fission-weighted decay rate where | @@ -2256,7 +2256,7 @@ attributes/sub-elements: The width of mesh cells in each direction. :energy: - Energy bins [in MeV], listed in ascending order (e.g. 0.0 0.625e-7 20.0) + Energy bins [in eV], listed in ascending order (e.g. 0.0 0.625 20.0e6) for CMFD tallies and acceleration. If no energy bins are listed, OpenMC automatically assumes a one energy group calculation over the entire energy range. diff --git a/examples/python/basic/build-xml.py b/examples/python/basic/build-xml.py index 5a3fae740..4dc1c72e0 100644 --- a/examples/python/basic/build-xml.py +++ b/examples/python/basic/build-xml.py @@ -101,8 +101,8 @@ settings_file.export_to_xml() # Instantiate some tally Filters cell_filter = openmc.CellFilter(100) -energy_filter = openmc.EnergyFilter([0., 20.]) -energyout_filter = openmc.EnergyoutFilter([0., 20.]) +energy_filter = openmc.EnergyFilter([0., 20.e6]) +energyout_filter = openmc.EnergyoutFilter([0., 20.e6]) # Instantiate the first Tally first_tally = openmc.Tally(tally_id=1, name='first tally') diff --git a/examples/python/pincell/build-xml.py b/examples/python/pincell/build-xml.py index 534c3ab82..979614d63 100644 --- a/examples/python/pincell/build-xml.py +++ b/examples/python/pincell/build-xml.py @@ -181,7 +181,7 @@ mesh.lower_left = [-0.62992, -0.62992, -1.e50] mesh.upper_right = [0.62992, 0.62992, 1.e50] # Instantiate some tally Filters -energy_filter = openmc.EnergyFilter([0., 4.e-6, 20.]) +energy_filter = openmc.EnergyFilter([0., 4., 20.e6]) mesh_filter = openmc.MeshFilter(mesh) # Instantiate the Tally diff --git a/examples/python/pincell_multigroup/build-xml.py b/examples/python/pincell_multigroup/build-xml.py index 1dcfc896b..ee74233c1 100644 --- a/examples/python/pincell_multigroup/build-xml.py +++ b/examples/python/pincell_multigroup/build-xml.py @@ -15,8 +15,8 @@ particles = 1000 ############################################################################### # Instantiate the energy group data -groups = openmc.mgxs.EnergyGroups(group_edges=[1E-11, 0.0635E-6, 10.0E-6, - 1.0E-4, 1.0E-3, 0.5, 1.0, 20.0]) +groups = openmc.mgxs.EnergyGroups(group_edges=[ + 1e-5, 0.0635, 10.0, 1.0e2, 1.0e3, 0.5e6, 1.0e6, 20.0e6]) # Instantiate the 7-group (C5G7) cross section data uo2_xsdata = openmc.XSdata('UO2', groups) @@ -156,8 +156,8 @@ mesh.lower_left = [-0.63, -0.63, -1.e50] mesh.upper_right = [0.63, 0.63, 1.e50] # Instantiate some tally Filters -energy_filter = openmc.EnergyFilter([1E-11, 0.0635E-6, 10.0E-6, 1.0E-4, 1.0E-3, - 0.5, 1.0, 20.0]) +energy_filter = openmc.EnergyFilter([1e-5, 0.0635, 10.0, 1.0e2, 1.0e3, 0.5e6, + 1.0e6, 20.0e6]) mesh_filter = openmc.MeshFilter(mesh) # Instantiate the Tally diff --git a/examples/xml/basic/tallies.xml b/examples/xml/basic/tallies.xml index fb1dfbc9c..26e61995d 100644 --- a/examples/xml/basic/tallies.xml +++ b/examples/xml/basic/tallies.xml @@ -8,14 +8,14 @@ - + total scatter nu-scatter absorption fission nu-fission - - + + scatter nu-scatter nu-fission diff --git a/examples/xml/pincell/tallies.xml b/examples/xml/pincell/tallies.xml index 73242b913..f740530cf 100644 --- a/examples/xml/pincell/tallies.xml +++ b/examples/xml/pincell/tallies.xml @@ -9,7 +9,7 @@ - + flux fission nu-fission diff --git a/examples/xml/pincell_multigroup/mgxs.h5 b/examples/xml/pincell_multigroup/mgxs.h5 index fe93c44bfa6b3766155356e34bdcd31e9fdb6af0..77f445c6d0b72916b1598dc267a4a3a52f38da75 100644 GIT binary patch delta 934 zcmY*XYe-XJ7(VCQnrF*&F3{ml+i~hVZl+W5l9*@OA4wyrNVAere}<9_g0lWJ!yhy7 za(tnSh^`ByKMcSC) z-9`{zUKpSn=G^73jawW@Y5I)QTjQeh$qJXzb=^Ji>kZcgU(&9KzH}E^8mn8lr_TT2 zT;NnEcPjPWOWe`Xbu-{1c=Ym}M2b6ar_eN}SIe zRcKnUC_S4ql?bZDzn{wv$d?XoZ>lP83WB+QLMJauy!hSza(g$U-5eKt3@I z6k5#Vg>}&WI7@1w$bf5~j(>+P7VkSzIE6wb;z4V8lE(&@RULA434w~}Za2w$8Pr%N zepQF7Zk7N_?amo4#~#EynTzsZ1-_@CHziBcw(T-6{0?i@!J}P`D4+#p8k6vA$eF=> zrUq4)3PL3bvK{e;P@^m$tHkWJ@bt|JD4SkH!T2_&2RxdrmiP5lQ`WhC$+DKCoT!b; z!a%fC%D%|4y{t-(A^t^pt_6Ab;~1D)Xn(wj8Z)4IEN=NS7qdK27qh&lHe&gKGsv#n N_I!x_hFpoX|3453B<%nI literal 61488 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 Ji%65d{|^$F9uNQk literal 67543 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 SG-w}Vf 0: mt = int(ace.xss[ace.jxs[3] + i_reaction - 1]) rx = cls(mt) # Get Q-value of reaction - rx.q_value = ace.xss[ace.jxs[4] + i_reaction - 1] + rx.q_value = ace.xss[ace.jxs[4] + i_reaction - 1]*EV_PER_MEV # ================================================================== # CROSS SECTION diff --git a/openmc/data/thermal.py b/openmc/data/thermal.py index 90aaa1e6e..23c852f65 100644 --- a/openmc/data/thermal.py +++ b/openmc/data/thermal.py @@ -8,7 +8,7 @@ import h5py import openmc.checkvalue as cv from openmc.mixin import EqualityMixin -from .data import K_BOLTZMANN, ATOMIC_SYMBOL +from .data import K_BOLTZMANN, ATOMIC_SYMBOL, EV_PER_MEV from .ace import Table, get_table from .angle_energy import AngleEnergy from .function import Tabulated1D @@ -69,14 +69,14 @@ class CoherentElastic(EqualityMixin): Parameters ---------- bragg_edges : Iterable of float - Bragg edge energies in MeV + Bragg edge energies in eV factors : Iterable of float Partial sum of structure factors, :math:`\sum\limits_{i=1}^{E_i nuclides(i_nuclide)) ! Check to see if there is multipole data present at this energy use_mp = .false. if (nuc % mp_present) then - if (E >= nuc % multipole % start_E/1.0e6_8 .and. & - E <= nuc % multipole % end_E/1.0e6_8) then + if (E >= nuc % multipole % start_E .and. & + E <= nuc % multipole % end_E) then use_mp = .true. end if end if @@ -585,14 +585,13 @@ contains ! sections in the resolved resonance regions !=============================================================================== - subroutine multipole_eval(multipole, Emev, sqrtkT_, sigT, sigA, sigF) + subroutine multipole_eval(multipole, E, sqrtkT, sigT, sigA, sigF) type(MultipoleArray), intent(in) :: multipole ! The windowed multipole ! object to process. - real(8), intent(in) :: Emev ! The energy at which to + real(8), intent(in) :: E ! The energy at which to ! evaluate the cross section - ! in MeV - real(8), intent(in) :: sqrtkT_ ! The temperature in the form - ! sqrt(kT (in MeV)), at which + real(8), intent(in) :: sqrtkT ! The temperature in the form + ! sqrt(kT), at which ! to evaluate the XS. real(8), intent(out) :: sigT ! Total cross section real(8), intent(out) :: sigA ! Absorption cross section @@ -608,8 +607,6 @@ contains real(8) :: invE ! 1/E, eV real(8) :: dopp ! sqrt(atomic weight ratio / kT) = 1 / (2 sqrt(xi)) real(8) :: temp ! real temporary value - real(8) :: E ! energy, eV - real(8) :: sqrtkT ! sqrt(kT (in eV)) integer :: i_pole ! index of pole integer :: i_poly ! index of curvefit integer :: i_window ! index of window @@ -619,10 +616,6 @@ contains ! ========================================================================== ! Bookkeeping - ! Convert to eV. - E = Emev * 1.0e6_8 - sqrtkT = sqrtkT_ * 1.0e3_8 - ! Define some frequently used variables. sqrtE = sqrt(E) invE = ONE / E diff --git a/src/doppler.F90 b/src/doppler.F90 index 85ab6da3c..56c07c50e 100644 --- a/src/doppler.F90 +++ b/src/doppler.F90 @@ -41,7 +41,7 @@ contains real(8) :: a, b ! values of x(k)-y and x(k+1)-y real(8) :: sigma ! broadened cross section at one point - ! Determine alpha parameter -- have to convert k to MeV/K + ! Determine alpha parameter -- have to convert k to eV/K alpha = A_target/(K_BOLTZMANN * T) ! Allocate memory for x and assign values diff --git a/src/geometry_header.F90 b/src/geometry_header.F90 index 9f4be90b9..60499fcfa 100644 --- a/src/geometry_header.F90 +++ b/src/geometry_header.F90 @@ -144,7 +144,7 @@ module geometry_header integer :: distribcell_index ! Index corresponding to this cell in ! distribcell arrays real(8), allocatable :: sqrtkT(:) ! Square root of k_Boltzmann * - ! temperature in MeV. Multiple for + ! temperature in eV. Multiple for ! distribcell ! Rotation matrix and translation vector diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 2cefd76f6..a402022a1 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -612,8 +612,8 @@ contains allocate(Watt :: external_source(i)%energy) select type(energy => external_source(i)%energy) type is (Watt) - energy%a = 0.988_8 - energy%b = 2.249_8 + energy%a = 0.988e6_8 + energy%b = 2.249e-6_8 end select end if end if @@ -4994,7 +4994,7 @@ contains if (nuclides(i) % grid(1) % energy(size(nuclides(i) % grid(1) % energy)) & == energy_max_neutron) then call write_message("Maximum neutron transport energy: " // & - trim(to_str(energy_max_neutron)) // " MeV for " // & + trim(to_str(energy_max_neutron)) // " eV for " // & trim(adjustl(nuclides(i) % name)), 6) exit end if diff --git a/src/mgxs_data.F90 b/src/mgxs_data.F90 index 857b2ded0..0535adf6c 100644 --- a/src/mgxs_data.F90 +++ b/src/mgxs_data.F90 @@ -200,7 +200,7 @@ contains end subroutine create_macro_xs !=============================================================================== -! GET_MAT_kTs returns a list of temperatures (in MeV) that each +! GET_MAT_kTs returns a list of temperatures (in eV) that each ! material appears at in the model. !=============================================================================== @@ -209,7 +209,7 @@ contains integer :: i, j integer :: i_material ! Index in materials array - real(8) :: kT ! temperature in MeV + real(8) :: kT ! temperature in eV allocate(kTs(size(materials))) diff --git a/src/mgxs_header.F90 b/src/mgxs_header.F90 index feb4d46a8..98b2565c1 100644 --- a/src/mgxs_header.F90 +++ b/src/mgxs_header.F90 @@ -53,7 +53,7 @@ module mgxs_header type, abstract :: Mgxs character(len=MAX_WORD_LEN) :: name ! name of dataset, e.g. UO2 real(8) :: awr ! Atomic Weight Ratio - real(8), allocatable :: kTs(:) ! temperature in MeV (k*T) + real(8), allocatable :: kTs(:) ! temperature in eV (k*T) ! Fission information logical :: fissionable ! mgxs object is fissionable? @@ -242,7 +242,7 @@ module mgxs_header do i = 1, size(dset_names) ! Read temperature value call read_dataset(temps_available(i), kT_group, trim(dset_names(i))) - ! Convert MeV to Kelvin + ! Convert eV to Kelvin temps_available(i) = temps_available(i) / K_BOLTZMANN end do call sort(temps_available) @@ -1239,7 +1239,7 @@ module mgxs_header subroutine mgxsiso_combine(this, temps, mat, nuclides, groups, max_order, & tolerance, method) class(MgxsIso), intent(inout) :: this ! The Mgxs to initialize - type(VectorReal), intent(in) :: temps ! Temperatures to obtain [MeV] + type(VectorReal), intent(in) :: temps ! Temperatures to obtain [eV] type(Material), pointer, intent(in) :: mat ! base material type(MgxsContainer), intent(in) :: nuclides(:) ! List of nuclides to harvest from integer, intent(in) :: groups ! Number of E groups @@ -2079,12 +2079,12 @@ module mgxs_header !=============================================================================== ! MGXS_FIND_TEMPERATURE sets the temperature index for the given -! sqrt(temperature), (with temperature in units of MeV) +! sqrt(temperature), (with temperature in units of eV) !=============================================================================== subroutine mgxs_find_temperature(this, sqrtkT) class(Mgxs), intent(inout) :: this - real(8), intent(in) :: sqrtkT ! Temperature (in units of of MeV) + real(8), intent(in) :: sqrtkT ! Temperature (in units of eV) this % index_temp = minloc(abs(this % kTs - (sqrtkT * sqrtkT)), dim=1) diff --git a/src/nuclide_header.F90 b/src/nuclide_header.F90 index 63bd4417b..e57d7da62 100644 --- a/src/nuclide_header.F90 +++ b/src/nuclide_header.F90 @@ -53,7 +53,7 @@ module nuclide_header integer :: A ! mass number integer :: metastable ! metastable state real(8) :: awr ! Atomic Weight Ratio - real(8), allocatable :: kTs(:) ! temperature in MeV (k*T) + real(8), allocatable :: kTs(:) ! temperature in eV (k*T) ! Fission information logical :: fissionable = .false. ! nuclide is fissionable? @@ -115,8 +115,8 @@ module nuclide_header type Nuclide0K character(10) :: nuclide ! name of nuclide, e.g. U238 character(16) :: scheme = 'ares' ! target velocity sampling scheme - real(8) :: E_min = 0.01e-6_8 ! lower cutoff energy for res scattering - real(8) :: E_max = 1000.0e-6_8 ! upper cutoff energy for res scattering + real(8) :: E_min = 0.01_8 ! lower cutoff energy for res scattering + real(8) :: E_max = 1000.0_8 ! upper cutoff energy for res scattering end type Nuclide0K !=============================================================================== @@ -146,7 +146,7 @@ module nuclide_header ! Information for Doppler broadening real(8) :: last_sqrtkT = ZERO ! Last temperature in sqrt(Boltzmann - ! constant * temperature (MeV)) + ! constant * temperature (eV)) end type NuclideMicroXS !=============================================================================== diff --git a/src/particle_header.F90 b/src/particle_header.F90 index 53a503ce2..32ad6adfc 100644 --- a/src/particle_header.F90 +++ b/src/particle_header.F90 @@ -87,7 +87,7 @@ module particle_header integer :: last_material ! index for last material ! Temperature of the current cell - real(8) :: sqrtkT ! sqrt(k_Boltzmann * temperature) in MeV + real(8) :: sqrtkT ! sqrt(k_Boltzmann * temperature) in eV real(8) :: last_sqrtKT ! last temperature ! Statistical data diff --git a/src/physics.F90 b/src/physics.F90 index a7ace877b..813aadf41 100644 --- a/src/physics.F90 +++ b/src/physics.F90 @@ -47,7 +47,7 @@ contains if (verbosity >= 10 .or. trace) then call write_message(" " // trim(reaction_name(p % event_MT)) & &// " with " // trim(adjustl(nuclides(p % event_nuclide) % name)) & - &// ". Energy = " // trim(to_str(p % E * 1e6_8)) // " eV.") + &// ". Energy = " // trim(to_str(p % E)) // " eV.") end if ! check for very low energy @@ -230,8 +230,8 @@ contains ! Check to see if we are in a windowed multipole range. WMP only supports ! the first fission reaction. if (nuc % mp_present) then - if (E >= nuc % multipole % start_E/1.0e6_8 .and. & - E <= nuc % multipole % end_E/1.0e6_8) then + if (E >= nuc % multipole % start_E .and. & + E <= nuc % multipole % end_E) then i_reaction = nuc % index_fission(1) return end if @@ -322,7 +322,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 - real(8) :: kT ! temperature in MeV + real(8) :: kT ! temperature in eV type(Nuclide), pointer :: nuc ! copy incoming direction @@ -436,7 +436,7 @@ contains subroutine elastic_scatter(i_nuclide, rxn, kT, E, uvw, mu_lab, wgt) integer, intent(in) :: i_nuclide type(Reaction), intent(in) :: rxn - real(8), intent(in) :: kT ! temperature in MeV + real(8), intent(in) :: kT ! temperature in eV real(8), intent(inout) :: E real(8), intent(inout) :: uvw(3) real(8), intent(out) :: mu_lab @@ -785,7 +785,7 @@ contains real(8), intent(in) :: v_neut(3) ! neutron velocity real(8), intent(inout) :: wgt ! particle weight real(8), intent(in) :: xs_eff ! effective elastic xs at temperature T - real(8), intent(in) :: kT ! equilibrium temperature of target in MeV + real(8), intent(in) :: kT ! equilibrium temperature of target in eV real(8) :: awr ! target/neutron mass ratio real(8) :: E_rel ! trial relative energy @@ -1026,7 +1026,7 @@ contains real(8), intent(out) :: v_target(3) real(8), intent(in) :: E real(8), intent(in) :: uvw(3) - real(8), intent(in) :: kT ! equilibrium temperature of target in MeV + real(8), intent(in) :: kT ! equilibrium temperature of target in eV real(8) :: awr ! target/neutron mass ratio real(8) :: alpha ! probability of sampling f2 over f1 diff --git a/src/sab_header.F90 b/src/sab_header.F90 index bf81a5d90..1d64711b8 100644 --- a/src/sab_header.F90 +++ b/src/sab_header.F90 @@ -68,7 +68,7 @@ module sab_header type SAlphaBeta character(150) :: name ! name of table, e.g. lwtr.10t real(8) :: awr ! weight of nucleus in neutron masses - real(8), allocatable :: kTs(:) ! temperatures in MeV (k*T) + real(8), allocatable :: kTs(:) ! temperatures in eV (k*T) character(10), allocatable :: nuclides(:) ! List of valid nuclides integer :: secondary_mode ! secondary mode (equal/skewed/continuous) diff --git a/src/tally.F90 b/src/tally.F90 index c44d5f787..0e0c6dd7e 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -186,12 +186,12 @@ contains ! Score the flux weighted inverse velocity with velocity in units of ! cm/s score = score / material_xs % total & - / (sqrt(TWO * E / (MASS_NEUTRON_MEV)) * C_LIGHT * 100.0_8) * flux + / (sqrt(TWO * E / MASS_NEUTRON_EV) * C_LIGHT * 100.0_8) * flux else ! For inverse velocity, we don't need a cross section. The velocity is ! in units of cm/s. - score = flux / (sqrt(TWO * E / (MASS_NEUTRON_MEV)) * C_LIGHT * 100.0_8) + score = flux / (sqrt(TWO * E / MASS_NEUTRON_EV) * C_LIGHT * 100.0_8) end if