3 #include "ScaleSTL/FortranTestMacros.h"
8 use scalestl_vec_flt_m, vec_flt=>scalestl_vec_flt
9 use scalestl_vec_int_m, vec_int=>scalestl_vec_int
14 use origen_testpaths_m
15 use iso_fortran_env
, only: error_unit, output_unit
19 use nemesis_comm
, only: build_types, initialize, finalize, node
25 type(origen_libraryheader) :: lh
26 type(origen_nuclideset) :: nucset
28 type(vec_flt) :: mg_flux, bounds_56g
29 type(vec_int) :: nuclide_list,num_mts,mt_list
31 type(integerlist) :: ilist
35 integer(C_SIZE_T) :: g
37 logical(C_BOOL) :: stat
38 integer,
parameter :: l=c_size_t
42 if(node() /= 0 )
call finalize
51 nind = tm_base % find_nuclide(2,922350)
52 call tm_base % get_nucl(ilist)
53 expect_eq(922350,ilist%at(nind+1))
54 xs_check = tm_base % get_xs(nind+1,18)
55 expect_near(31.2501450,xs_check,1.e-3)
56 write(error_unit,
'(a50,f8.1,"ms")')
'tst.load_transition_matrix',1000*(t2-t1)
58 call bounds_56g % initialize()
59 stat = ff % getBounds_scale6p2_56g(bounds_56g)
61 expect_eq(57_l,bounds_56g%size())
67 call tmu % initialize_storage(bounds_56g)
68 call tmu % load(pwrlib_filepath,jeff252_filepath,yields_filepath)
69 if( .not. tmu%initialized() )
then
70 write(*,*)
'cannot proceed if data sources did not load.'
75 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.load',1000*(t2-t1)
78 call tmu % library_header(lh)
80 call nucset % initialize()
81 call lh % get_nuclide_set(nucset);
82 expect_eq(2237, nucset%total_nuclides() )
83 call nucset % destroy()
88 call mg_flux % initialize()
89 call ff % getUniformFlux(mg_flux,bounds_56g)
90 expect_eq(56_l,mg_flux%size())
91 call bounds_56g % destroy()
93 call tmu % update_mg_flux(mg_flux)
95 call mg_flux % destroy()
97 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.update_mg_flux',1000*(t2-t1)
103 call nuclide_list % initialize()
104 call nuclide_list % push_back(92235)
106 call num_mts % initialize()
107 call num_mts % push_back(1)
109 call mt_list % initialize()
110 call mt_list % push_back(18)
113 call xs % initialize()
115 call tmu % get_xs(
"IZZZAAA",nuclide_list,num_mts,mt_list,xs)
118 expect_eq(1_l, xs%size() )
119 expect_near(1.53126442,xs%at(1_l),1e-5)
120 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.get_xs',1000*(t2-t1)
126 call trx % initialize()
128 call tmu % get_transition_matrix(trx)
131 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.get_transition_matrix',1000*(t2-t1)
134 nind2 = trx % find_nuclide(2,922350)
135 expect_eq(nind,nind2)
136 xs_check = trx % get_xs(nind2+1,18)
139 expect_near(1.53126442,xs_check,1e-5)
140 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixP.get_xs',1000*(t2-t1)
146 call xs % set(1_l,35.0)
148 call tmu % update_user_xs(
"IZZZAAA",nuclide_list,num_mts,mt_list,xs)
151 expect_eq(1_l,xs%size())
152 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.update_user_xs',1000*(t2-t1)
158 call tmu % get_transition_matrix(trx)
160 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixUpdater.get_transition_matrix',1000*(t2-t1)
163 xs_check = trx % get_xs(nind+1,18)
165 write(error_unit,
'(a50,f8.1,"ms")')
'TransitionMatrixP.get_xs',1000*(t2-t1)
171 call tm_base % destroy()
179 character(*),
intent(in) :: path
180 type(origen_library) :: lib
182 type(datacontainer) :: options
185 call lib_io % initialize()
186 call options % initialize()
187 call lib % initialize()
188 status = lib_io % load(lib,path,options)
189 call lib_io % destroy()
190 call lib % newptr_transition_matrix_at(trx,1_c_size_t)
192 call lib_io%destroy()
193 call options%destroy()