7 character(len=NEKO_FNAME_LEN) :: inputchar, mesh_fname, fld_fname, output_fname
8 type(file_t) ::
fld_file, part_file, output_file
9 real(kind=rp) :: start_time
10 type(fld_file_data_t) :: fld_data, fld_data_avg
13 character(len=LOG_SIZE) :: log_buf
15 argc = command_argument_count()
17 if ((argc .lt. 3) .or. (argc .gt. 3))
then
18 if (pe_rank .eq. 0)
then
19 write(*,*)
'Usage: ./average_fields_in_time field_series_name.fld start_time output_name.fld'
20 write(*,*)
'Example command: ./average_fields_in_time mean_field104.fld 103.2 mean_field_avg.fld'
21 write(*,*)
'Computes the average field over the fld files described in mean_field104.nek5000'
22 write(*,*)
'The start time is the time at which the first file startsto collect stats'
23 write(*,*)
'The files need to be aranged chronological order.'
24 write(*,*)
'The average field is then stored in a fld series, i.e. output_name.nek5000 and output_name.f00000'
31 call get_command_argument(1, inputchar)
32 read(inputchar, *) fld_fname
34 call get_command_argument(2, inputchar)
35 read(inputchar, *) start_time
36 call get_command_argument(3, inputchar)
37 read(inputchar, *) output_fname
40 call fld_data_avg%init()
44 write (log_buf,
'(A, g0)')
"dt: ", fld_data_avg%time - start_time
45 call neko_log%message(log_buf)
47 call fld_data_avg%scale(fld_data_avg%time-start_time)
49 do i = 1, fld_data_avg%meta_nsamples-1
51 call fld_data%scale(fld_data%time-fld_data_avg%time)
52 call fld_data_avg%add(fld_data)
54 write (log_buf,
'(A, g0)')
"dt: ", fld_data%time - fld_data_avg%time
55 call neko_log%message(log_buf)
57 fld_data_avg%time = fld_data%time
59 call fld_data_avg%scale(1.0_rp/(fld_data_avg%time-start_time))
61 call output_file%init(trim(output_fname))
63 call neko_log%message(
'Writing file: ' // trim(output_fname))
64 call output_file%write(fld_data_avg, fld_data_avg%time)
65 call neko_log%message(
'Done')
program average_fields_in_time
Program to sum up averaged fields computed for statistics and mean field Martin Karp 27/01-23.