6 #include "ScaleSTL/FortranTestMacros.h"
11 use nemesis_comm
, only: build_types, initialize, finalize, node
18 integer :: itot,nsteps
19 real(C_DOUBLE),
allocatable :: times(:)
20 real(C_DOUBLE),
allocatable :: conc_buffer1(:),conc_buffer2(:,:)
21 real(C_DOUBLE),
allocatable :: fluxes(:)
22 integer,
parameter :: nnucl0=2
23 real(C_DOUBLE) :: conc0(nnucl0)
24 integer :: nucl0(nnucl0), typ0(nnucl0)
27 integer,
allocatable :: all_nucl_in(:), all_typ_in(:)
28 integer,
allocatable :: all_nucl_ex(:), all_typ_ex(:)
29 real(C_DOUBLE),
allocatable :: conc_in(:,:),conc_ex(:,:)
34 logical :: file_exists
38 if ( node() /=0 )
call finalize
40 inquire(file=ce14_e15_filepath,exist=file_exists)
42 expect_true(file_exists)
46 allocate(times(0:nsteps),fluxes(1:nsteps))
50 times(i)=times(i-1)+dt
58 typ0=[origen_sublib_2ac,origen_sublib_2ac]
62 call libw%initialize(ce14_e15_filepath)
64 call casew1%initialize(libw)
65 itot = casew1 % total_nuclides()
66 call casew1%set_times(times)
67 call casew1%set_fluxes(fluxes)
68 call casew1%set_initial_concentrations(nnucl0,nucl0,conc0,typ0,origen_concentrationunit_gatoms)
69 call casew1%libw%get_nucl(all_nucl_in)
70 call casew1%libw%get_typ_nuc(all_typ_in)
72 call casew1%get_concentrations(conc_in)
77 allocate( conc_ex(0:nsteps,1:itot) )
78 allocate(conc_buffer1(itot))
79 call libw%initialize(ce14_e15_filepath)
82 expect_eq(1,libw%get_pos())
83 call casew2%initialize(libw)
84 itot = casew2 % total_nuclides()
85 call casew2%set_times(times(i-1:i))
86 call casew2%set_fluxes(fluxes(i:i))
92 call casew2%set_initial_concentrations(nnucl0,nucl0,conc0,typ0,origen_concentrationunit_gatoms)
93 call casew2%libw%get_nucl(all_nucl_ex)
94 call casew2%libw%get_typ_nuc(all_typ_ex)
98 conc_buffer1=conc_ex(i-1,1:itot)
99 call casew2%set_initial_concentrations_by_vector(conc_buffer1,origen_concentrationunit_gatoms)
106 call casew2%get_concentrations(conc_buffer2)
107 conc_ex(i-1:i,1:itot)=conc_buffer2
112 call casew1%destroy()
113 call casew2%destroy()
118 expect_eq(all_nucl_in(j), all_nucl_ex(j))
119 expect_eq(all_typ_in(j), all_typ_ex(j))
121 expect_eq(conc_in(i,j), conc_ex(i,j))
128 1001
format(
'*** Error: nuclide ids do not match for nuclide number j=',i5.5,&
129 'internal (',i7,
') vs. external (',i7,
')')
130 1002
format(
'*** Error: nuclide types do not match for nuclide number j=',i5.5,&
131 'internal (',i7,
') vs. external (',i7,
')')
132 1003
format(
'*** Error: nuclide concentrations do not match for time step i=',i5.5,
' nuclide number j=',i5.5,&
133 'internal (',i7,
') vs. external (',i7,
')')