Move write_message to error module (break geometry -> output dependence)

This commit is contained in:
Paul Romano 2017-12-11 14:35:31 +07:00
parent fa89104350
commit 3431ebd8fe
19 changed files with 82 additions and 84 deletions

View file

@ -644,7 +644,7 @@ contains
subroutine compute_dhat()
use constants, only: CMFD_NOACCEL, ZERO
use output, only: write_message
use error, only: write_message
use string, only: to_str
integer :: nx ! maximum number of cells in x direction

View file

@ -366,7 +366,7 @@ contains
subroutine cmfd_tally_reset()
use output, only: write_message
use error, only: write_message
integer :: i ! loop counter

View file

@ -41,8 +41,7 @@ contains
subroutine read_cmfd_xml()
use constants, only: ZERO, ONE
use error, only: fatal_error, warning
use output, only: write_message
use error, only: fatal_error, warning, write_message
use string, only: to_lower
use xml_interface
use, intrinsic :: ISO_FORTRAN_ENV

View file

@ -5,12 +5,14 @@ module error
use constants
use message_passing
use settings, only: verbosity
implicit none
private
public :: fatal_error
public :: warning
public :: write_message
! Error codes
integer(C_INT), public, bind(C) :: E_UNASSIGNED = -1
@ -192,4 +194,59 @@ contains
end subroutine fatal_error
!===============================================================================
! WRITE_MESSAGE displays an informational message to the log file and the
! standard output stream.
!===============================================================================
subroutine write_message(message, level)
character(*), intent(in) :: message ! message to write
integer, intent(in), optional :: level ! verbosity level
integer :: i_start ! starting position
integer :: i_end ! ending position
integer :: line_wrap ! length of line
integer :: length ! length of message
integer :: last_space ! index of last space (relative to start)
! Set length of line
line_wrap = 80
! Only allow master to print to screen
if (.not. master .and. present(level)) return
if (.not. present(level) .or. level <= verbosity) then
! Determine length of message
length = len_trim(message)
i_start = 0
do
if (length - i_start < line_wrap + 1) then
! Remainder of message will fit on line
write(OUTPUT_UNIT, fmt='(1X,A)') message(i_start+1:length)
exit
else
! Determine last space in current line
last_space = index(message(i_start+1:i_start+line_wrap), &
' ', BACK=.true.)
if (last_space == 0) then
i_end = min(length + 1, i_start+line_wrap) - 1
write(OUTPUT_UNIT, fmt='(1X,A)') message(i_start+1:i_end)
else
i_end = i_start + last_space
write(OUTPUT_UNIT, fmt='(1X,A)') message(i_start+1:i_end-1)
end if
! Write up to last space
! Advance starting position
i_start = i_end
if (i_start > length) exit
end if
end do
end if
end subroutine write_message
end module error

View file

@ -1,16 +1,14 @@
module geometry
use constants
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use geometry_header
use output, only: write_message
use particle_header, only: LocalCoord, Particle
use simulation_header
use settings
use surface_header
use stl_vector, only: VectorInt
use string, only: to_str
use tally_header
implicit none

View file

@ -10,7 +10,7 @@ module initialize
use bank_header, only: Bank
use constants
use set_header, only: SetInt
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use geometry_header, only: Cell, Universe, Lattice, RectLattice, HexLattice,&
root_universe
use hdf5_interface, only: file_open, read_attribute, file_close, &
@ -19,7 +19,7 @@ module initialize
use material_header, only: Material
use message_passing
use mgxs_data, only: read_mgxs, create_macro_xs
use output, only: print_version, write_message, print_usage
use output, only: print_version, print_usage
use random_lcg, only: openmc_set_seed
use settings
#ifdef _OPENMP

View file

@ -10,7 +10,7 @@ module input_xml
use distribution_multivariate
use distribution_univariate
use endf, only: reaction_name
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use geometry, only: calc_offsets, maximum_levels, count_instance, &
neighbor_lists
use geometry_header
@ -23,7 +23,7 @@ module input_xml
use mgxs_header
use multipole, only: multipole_read
use nuclide_header
use output, only: write_message, title, header, print_plot
use output, only: title, header, print_plot
use plot_header
use random_lcg, only: prn, openmc_set_seed
use surface_header

View file

@ -3,13 +3,12 @@ module mgxs_data
use constants
use algorithm, only: find
use dict_header, only: DictCharInt
use error, only: fatal_error
use error, only: fatal_error, write_message
use geometry_header, only: get_temperatures, cells
use hdf5_interface
use material_header, only: Material, materials, n_materials
use mgxs_header
use nuclide_header, only: n_nuclides
use output, only: write_message
use set_header, only: SetChar
use settings
use stl_vector, only: VectorReal

View file

@ -202,61 +202,6 @@ contains
end subroutine print_usage
!===============================================================================
! WRITE_MESSAGE displays an informational message to the log file and the
! standard output stream.
!===============================================================================
subroutine write_message(message, level)
character(*), intent(in) :: message ! message to write
integer, intent(in), optional :: level ! verbosity level
integer :: i_start ! starting position
integer :: i_end ! ending position
integer :: line_wrap ! length of line
integer :: length ! length of message
integer :: last_space ! index of last space (relative to start)
! Set length of line
line_wrap = 80
! Only allow master to print to screen
if (.not. master .and. present(level)) return
if (.not. present(level) .or. level <= verbosity) then
! Determine length of message
length = len_trim(message)
i_start = 0
do
if (length - i_start < line_wrap + 1) then
! Remainder of message will fit on line
write(ou, fmt='(1X,A)') message(i_start+1:length)
exit
else
! Determine last space in current line
last_space = index(message(i_start+1:i_start+line_wrap), &
' ', BACK=.true.)
if (last_space == 0) then
i_end = min(length + 1, i_start+line_wrap) - 1
write(ou, fmt='(1X,A)') message(i_start+1:i_end)
else
i_end = i_start + last_space
write(ou, fmt='(1X,A)') message(i_start+1:i_end-1)
end if
! Write up to last space
! Advance starting position
i_start = i_end
if (i_start > length) exit
end if
end do
end if
end subroutine write_message
!===============================================================================
! PRINT_PARTICLE displays the attributes of a particle
!===============================================================================

View file

@ -4,10 +4,11 @@ module particle_restart
use bank_header, only: Bank
use constants
use error, only: write_message
use hdf5_interface, only: file_open, file_close, read_dataset
use mgxs_header, only: energy_bin_avg
use nuclide_header, only: micro_xs, n_nuclides
use output, only: write_message, print_particle
use output, only: print_particle
use particle_header, only: Particle
use random_lcg, only: set_particle_seed
use settings

View file

@ -4,13 +4,12 @@ module physics
use constants
use cross_section, only: elastic_xs_0K
use endf, only: reaction_name
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use material_header, only: Material, materials
use math
use mesh_header, only: meshes
use message_passing
use nuclide_header
use output, only: write_message
use particle_header, only: Particle
use physics_common
use random_lcg, only: prn, advance_prn_seed, prn_set_stream

View file

@ -4,14 +4,13 @@ module physics_mg
use bank_header
use constants
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use material_header, only: Material, materials
use math, only: rotate_angle
use mesh_header, only: meshes
use mgxs_header
use message_passing
use nuclide_header, only: material_xs
use output, only: write_message
use particle_header, only: Particle
use physics_common
use random_lcg, only: prn

View file

@ -5,11 +5,11 @@ module plot
use hdf5
use constants
use error, only: fatal_error
use error, only: fatal_error, write_message
use geometry, only: find_cell, check_cell_overlap
use geometry_header, only: Cell, root_universe, cells
use hdf5_interface
use output, only: write_message, time_stamp
use output, only: time_stamp
use material_header, only: materials
use particle_header, only: LocalCoord, Particle
use plot_header

View file

@ -16,12 +16,12 @@ module simulation
#ifdef _OPENMP
use eigenvalue, only: join_bank_from_threads
#endif
use error, only: fatal_error
use error, only: fatal_error, write_message
use geometry_header, only: n_cells
use message_passing
use mgxs_header, only: energy_bins, energy_bin_avg
use nuclide_header, only: micro_xs, n_nuclides
use output, only: write_message, header, print_columns, &
use output, only: header, print_columns, &
print_batch_keff, print_generation, print_runtime, &
print_results, print_overlap_check, write_tallies
use particle_header, only: Particle

View file

@ -19,13 +19,13 @@ module state_point
use constants
use eigenvalue, only: openmc_get_keff
use endf, only: reaction_name
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use hdf5_interface
use mesh_header, only: RegularMesh, meshes, n_meshes
use message_passing
use mgxs_header, only: nuclides_MG
use nuclide_header, only: nuclides
use output, only: write_message, time_stamp
use output, only: time_stamp
use random_lcg, only: seed
use settings
use simulation_header

View file

@ -4,6 +4,7 @@ module summary
use constants
use endf, only: reaction_name
use error, only: write_message
use geometry_header
use hdf5_interface
use material_header, only: Material, n_materials
@ -11,7 +12,7 @@ module summary
use message_passing
use mgxs_header, only: nuclides_MG
use nuclide_header
use output, only: time_stamp, write_message
use output, only: time_stamp
use settings, only: run_CE
use surface_header
use string, only: to_str

View file

@ -8,8 +8,8 @@ module trigger
use constants
use eigenvalue, only: openmc_get_keff
use error, only: warning, write_message
use string, only: to_str
use output, only: warning, write_message
use mesh_header, only: RegularMesh, meshes
use message_passing, only: master
use settings

View file

@ -2,11 +2,10 @@ module tracking
use constants
use cross_section, only: calculate_xs
use error, only: fatal_error, warning
use error, only: fatal_error, warning, write_message
use geometry_header, only: cells
use geometry, only: find_cell, distance_to_boundary, cross_lattice, &
check_cell_overlap
use output, only: write_message
use message_passing
use mgxs_header
use nuclide_header

View file

@ -8,11 +8,12 @@ module volume_calc
#endif
use constants
use error, only: write_message
use geometry, only: find_cell
use geometry_header, only: universes, cells
use hdf5_interface, only: file_create, file_close, write_attribute, &
create_group, close_group, write_dataset
use output, only: write_message, header, time_stamp
use output, only: header, time_stamp
use material_header, only: materials
use message_passing
use nuclide_header, only: nuclides