487 integer,
intent(in) :: t_step
490 character(LEN=4*name_len),
dimension(num_procs) :: meshnames
491 integer,
dimension(num_procs) :: meshtypes
494 integer :: extents_size
512 out%spatial_extents(:,0) = (/minval(
x_cb), maxval(
x_cb)/)
520 write (meshnames(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:rectilinear_grid'
523 meshtypes = db_quad_rect
525 err = dbset2dstrlen(len(meshnames(1)))
526 err = dbmkoptlist(2,
out%optlist)
527 extents_size =
size(
out%spatial_extents, 1)
528 err = dbaddiopt(
out%optlist, dbopt_extents_size, extents_size)
529 err = dbadddopt(
out%optlist, dbopt_extents,
out%spatial_extents)
530 err = dbputmmesh(
out%dbroot,
'rectilinear_grid', 16,
num_procs, meshnames, len_trim(meshnames), meshtypes, &
532 err = dbfreeoptlist(
out%optlist)
550 err = dbmkoptlist(2,
out%optlist)
551 err = dbaddiaopt(
out%optlist, dbopt_lo_offset,
size(
out%lo_offset),
out%lo_offset)
552 err = dbaddiaopt(
out%optlist, dbopt_hi_offset,
size(
out%hi_offset),
out%hi_offset)
553# 473 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
554 if (precision == 1)
then
555# 474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
557 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
y_cb_s,
z_cb_s, &
558# 476 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
559 &
x_cb_s,
out%dims, 3, db_float, db_collinear,
out%optlist, ierr)
560# 477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
562 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb_s,
y_cb_s, &
563# 479 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
564 &
z_cb_s,
out%dims, 3, db_float, db_collinear,
out%optlist, ierr)
565# 480 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
568# 473 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
569 if (precision == 2)
then
570# 474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
572 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
y_cb,
z_cb, &
573# 476 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
574 &
x_cb,
out%dims, 3, db_double, db_collinear,
out%optlist, ierr)
575# 477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
577 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb,
y_cb, &
578# 479 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
579 &
z_cb,
out%dims, 3, db_double, db_collinear,
out%optlist, ierr)
580# 480 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
583# 483 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
584 err = dbfreeoptlist(
out%optlist)
586 err = dbmkoptlist(2,
out%optlist)
587 err = dbaddiaopt(
out%optlist, dbopt_lo_offset,
size(
out%lo_offset),
out%lo_offset)
588 err = dbaddiaopt(
out%optlist, dbopt_hi_offset,
size(
out%hi_offset),
out%hi_offset)
589# 489 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
590 if (precision == 1)
then
591# 490 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
592 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb_s,
y_cb_s, &
593# 491 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
594 & db_f77null,
out%dims, 2, db_float, db_collinear,
out%optlist, ierr)
595# 492 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
597# 489 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
598 if (precision == 2)
then
599# 490 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
600 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb,
y_cb, &
601# 491 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
602 & db_f77null,
out%dims, 2, db_double, db_collinear,
out%optlist, ierr)
603# 492 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
605# 494 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
606 err = dbfreeoptlist(
out%optlist)
608 err = dbmkoptlist(2,
out%optlist)
609 err = dbaddiaopt(
out%optlist, dbopt_lo_offset,
size(
out%lo_offset),
out%lo_offset)
610 err = dbaddiaopt(
out%optlist, dbopt_hi_offset,
size(
out%hi_offset),
out%hi_offset)
611# 500 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
612 if (precision == 1)
then
613# 501 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
614 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb_s, db_f77null, &
615# 502 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
616 & db_f77null,
out%dims, 1, db_float, db_collinear,
out%optlist, ierr)
617# 503 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
619# 500 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
620 if (precision == 2)
then
621# 501 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
622 err = dbputqm(
out%dbfile,
'rectilinear_grid', 16,
'x', 1,
'y', 1,
'z', 1,
x_cb, db_f77null, &
623# 502 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
624 & db_f77null,
out%dims, 1, db_double, db_collinear,
out%optlist, ierr)
625# 503 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
627# 505 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
628 err = dbfreeoptlist(
out%optlist)
637 if (output_partial_domain)
then
648 if (output_partial_domain)
then
659 write (
out%dbfile) real(
x_cb, sp)
661 if (output_partial_domain)
then
678 if (output_partial_domain)
then
693 character(LEN=*),
intent(in) :: varname
694 integer,
intent(in) :: t_step
697 character(LEN=4*name_len),
dimension(num_procs) :: varnames
698 integer,
dimension(num_procs) :: vartypes
701 integer :: extents_size
708 out%data_extents(:,0) = (/minval(
out%q_sf), maxval(
out%q_sf)/)
713 write (varnames(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:' // trim(varname)
716 vartypes = db_quadvar
718 err = dbset2dstrlen(len(varnames(1)))
719 err = dbmkoptlist(2,
out%optlist)
720 extents_size =
size(
out%data_extents, 1)
721 err = dbaddiopt(
out%optlist, dbopt_extents_size, extents_size)
722 err = dbadddopt(
out%optlist, dbopt_extents,
out%data_extents)
723 err = dbputmvar(
out%dbroot, trim(varname), len_trim(varname),
num_procs, varnames, len_trim(varnames), vartypes, &
725 err = dbfreeoptlist(
out%optlist)
733 out%q_sf_s(i,
j,
k) = real(
out%q_sf(i,
j,
k), sp)
757 else if (wp == sp)
then
776# 654 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
777 if (precision == 1)
then
778# 655 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
781 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16, &
782 &
out%cyl_q_sf_s,
out%dims - 1, 3, db_f77null, 0, db_float, db_zonecent, &
783# 659 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
786 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf_s, &
787# 662 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
788 &
out%dims - 1, 3, db_f77null, 0, db_float, db_zonecent, db_f77null, ierr)
789# 663 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
792 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf_s, &
793# 666 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
794 &
out%dims - 1, 2, db_f77null, 0, db_float, db_zonecent, db_f77null, ierr)
795# 667 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
797 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf_s, &
798# 669 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
799 &
out%dims - 1, 1, db_f77null, 0, db_float, db_zonecent, db_f77null, ierr)
800# 670 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
803# 654 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
804 if (precision == 2)
then
805# 655 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
808 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16, &
809 &
out%cyl_q_sf,
out%dims - 1, 3, db_f77null, 0, db_double, db_zonecent, &
810# 659 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
813 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf, &
814# 662 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
815 &
out%dims - 1, 3, db_f77null, 0, db_double, db_zonecent, db_f77null, ierr)
816# 663 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
819 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf, &
820# 666 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
821 &
out%dims - 1, 2, db_f77null, 0, db_double, db_zonecent, db_f77null, ierr)
822# 667 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
824 err = dbputqv1(
out%dbfile, trim(varname), len_trim(varname),
'rectilinear_grid', 16,
out%q_sf, &
825# 669 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
826 &
out%dims - 1, 1, db_f77null, 0, db_double, db_zonecent, db_f77null, ierr)
827# 670 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
830# 673 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
835 write (
out%dbfile) varname, real(
out%q_sf, wp)
837 write (
out%dbfile) varname,
out%q_sf
846 out%q_root_sf(:,:,:) =
out%q_sf(:,:,:)
851 write (
out%dbroot) varname, real(
out%q_root_sf, wp)
853 write (
out%dbroot) varname,
out%q_root_sf
864 integer,
intent(in) :: t_step
865 character(len=len_trim(case_dir) + 3*name_len) :: file_loc
869 real(wp),
dimension(20) :: inputvals
870 real(wp) :: time_real
871 integer,
dimension(MPI_STATUS_SIZE) :: status
872 integer(KIND=MPI_OFFSET_KIND) :: disp
874 logical :: file_exist
875 integer,
dimension(2) :: gsizes, lsizes, start_idx_part
878 real(wp) :: file_time, file_dt
879 integer :: file_num_procs, file_tot_part
881 integer,
dimension(:),
allocatable :: proc_bubble_counts
882 real(wp),
dimension(1:1,1:lag_io_vars) :: lag_io_null
887 write (file_loc,
'(A,I0,A)')
'lag_bubbles_', t_step,
'.dat'
888 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
891 inquire (file=trim(file_loc), exist=file_exist)
892 if (.not. file_exist)
then
893 call s_mpi_abort(
'Restart file ' // trim(file_loc) //
' does not exist!')
896 if (.not. parallel_io)
return
899 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
900 call s_check_mpi_file_open(ierr, file_loc)
902 call mpi_file_read(ifile, file_tot_part, 1, mpi_integer, status, ierr)
903 call mpi_file_read(ifile, file_time, 1, mpi_p, status, ierr)
904 call mpi_file_read(ifile, file_dt, 1, mpi_p, status, ierr)
905 call mpi_file_read(ifile, file_num_procs, 1, mpi_integer, status, ierr)
907 call mpi_file_close(ifile, ierr)
910 call mpi_bcast(file_tot_part, 1, mpi_integer, 0, mpi_comm_world, ierr)
911 call mpi_bcast(file_time, 1, mpi_p, 0, mpi_comm_world, ierr)
912 call mpi_bcast(file_dt, 1, mpi_p, 0, mpi_comm_world, ierr)
913 call mpi_bcast(file_num_procs, 1, mpi_integer, 0, mpi_comm_world, ierr)
914 time_real = file_time
916 allocate (proc_bubble_counts(file_num_procs))
919 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
920 call s_check_mpi_file_open(ierr, file_loc)
923 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs), mpi_offset_kind)
924 call mpi_file_seek(ifile, disp, mpi_seek_set, ierr)
925 call mpi_file_read(ifile, proc_bubble_counts, file_num_procs, mpi_integer, status, ierr)
927 call mpi_file_close(ifile, ierr)
930 call mpi_bcast(proc_bubble_counts, file_num_procs, mpi_integer, 0, mpi_comm_world, ierr)
932 if (file_tot_part > 0)
then
933 gsizes(1) = file_tot_part
935 lsizes(1) = file_tot_part
937 start_idx_part(1) = 0
938 start_idx_part(2) = 0
940 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, mpi_order_fortran, mpi_p, view, ierr)
941 call mpi_type_commit(view, ierr)
943 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
944 call s_check_mpi_file_open(ierr, file_loc)
946 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
947 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
948 call mpi_file_set_view(ifile, disp, mpi_p, view,
'native', mpi_info_null, ierr)
954 write (file_loc,
'(A,I0,A)')
'lag_bubbles_post_process_', t_step,
'.dat'
955 file_loc = trim(case_dir) //
'/lag_bubbles_post_process/' // trim(file_loc)
958 open (unit=29, file=file_loc, form=
'formatted', position=
'rewind')
961 write (29,
'(A)', advance=
'no')
962 if (lag_id_wrt)
write (29,
'(A8)', advance=
'no')
'id, '
963 if (lag_pos_wrt)
write (29,
'(3(A17))', advance=
'no')
'px, ',
'py, ',
'pz, '
964 if (lag_pos_prev_wrt)
write (29,
'(3(A17))', advance=
'no')
'pvx, ',
'pvy, ',
'pvz, '
965 if (lag_vel_wrt)
write (29,
'(3(A17))', advance=
'no')
'vx, ',
'vy, ',
'vz, '
966 if (lag_rad_wrt)
write (29,
'(A17)', advance=
'no')
'radius, '
967 if (lag_rvel_wrt)
write (29,
'(A17)', advance=
'no')
'rvel, '
968 if (lag_r0_wrt)
write (29,
'(A17)', advance=
'no')
'r0, '
969 if (lag_rmax_wrt)
write (29,
'(A17)', advance=
'no')
'rmax, '
970 if (lag_rmin_wrt)
write (29,
'(A17)', advance=
'no')
'rmin, '
971 if (lag_dphidt_wrt)
write (29,
'(A17)', advance=
'no')
'dphidt, '
972 if (lag_pres_wrt)
write (29,
'(A17)', advance=
'no')
'pressure, '
973 if (lag_mv_wrt)
write (29,
'(A17)', advance=
'no')
'mv, '
974 if (lag_mg_wrt)
write (29,
'(A17)', advance=
'no')
'mg, '
975 if (lag_betat_wrt)
write (29,
'(A17)', advance=
'no')
'betaT, '
976 if (lag_betac_wrt)
write (29,
'(A17)', advance=
'no')
'betaC, '
977 write (29,
'(A15)')
'time'
980 do i = 1, file_tot_part
984 write (29,
'(100(A))', advance=
'no')
''
985 if (lag_id_wrt)
write (29,
'(I6, A)', advance=
'no') id,
', '
986 if (lag_pos_wrt)
write (29,
'(3(E15.7, A))', advance=
'no') inputvals(1),
', ', inputvals(2),
', ', &
988 if (lag_pos_prev_wrt)
write (29,
'(3(E15.7, A))', advance=
'no') inputvals(4),
', ', inputvals(5),
', ', &
990 if (lag_vel_wrt)
write (29,
'(3(E15.7, A))', advance=
'no') inputvals(7),
', ', inputvals(8),
', ', &
992 if (lag_rad_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(10),
', '
993 if (lag_rvel_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(11),
', '
994 if (lag_r0_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(12),
', '
995 if (lag_rmax_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(13),
', '
996 if (lag_rmin_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(14),
', '
997 if (lag_dphidt_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(15),
', '
998 if (lag_pres_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(16),
', '
999 if (lag_mv_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(17),
', '
1000 if (lag_mg_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(18),
', '
1001 if (lag_betat_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(19),
', '
1002 if (lag_betac_wrt)
write (29,
'(E15.7, A)', advance=
'no') inputvals(20),
', '
1003 write (29,
'(E15.7)') time_real
1011 call s_mpi_barrier()
1013 call mpi_file_close(ifile, ierr)
1015 call mpi_type_contiguous(0, mpi_p, view, ierr)
1016 call mpi_type_commit(view, ierr)
1018 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
1019 call s_check_mpi_file_open(ierr, file_loc)
1021 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
1022 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
1023 call mpi_file_set_view(ifile, disp, mpi_p, view,
'native', mpi_info_null, ierr)
1025 call mpi_file_read_all(ifile, lag_io_null, 0, mpi_p, status, ierr)
1027 call mpi_file_close(ifile, ierr)
1028 call mpi_type_free(view, ierr)
1037 integer,
intent(in) :: t_step
1038 character(len=len_trim(case_dir) + 3*name_len) :: file_loc
1042 real(wp) :: time_real
1043 integer,
dimension(MPI_STATUS_SIZE) :: status
1044 integer(KIND=MPI_OFFSET_KIND) :: disp
1046 logical :: file_exist
1047 integer,
dimension(2) :: gsizes, lsizes, start_idx_part
1048 integer :: ifile, ierr, nbub
1049 real(wp) :: file_time, file_dt
1050 integer :: file_num_procs, file_tot_part
1051 integer,
dimension(:),
allocatable :: proc_bubble_counts
1052 real(wp),
dimension(1:1,1:lag_io_vars) :: dummy
1053 character(LEN=4*name_len),
dimension(num_procs) :: meshnames
1054 integer,
dimension(num_procs) :: meshtypes
1055 real(wp) :: dummy_data
1057 real(wp),
dimension(:),
allocatable :: bub_id
1058 real(wp),
dimension(:),
allocatable :: px, py, pz, ppx, ppy, ppz, vx, vy, vz
1059 real(wp),
dimension(:),
allocatable :: radius, rvel, rnot, rmax, rmin, dphidt
1060 real(wp),
dimension(:),
allocatable :: pressure, mv, mg, betat, betac
1066 write (file_loc,
'(A,I0,A)')
'lag_bubbles_', t_step,
'.dat'
1067 file_loc = trim(case_dir) //
'/restart_data' // trim(mpiiofs) // trim(file_loc)
1070 inquire (file=trim(file_loc), exist=file_exist)
1071 if (.not. file_exist)
then
1072 call s_mpi_abort(
'Restart file ' // trim(file_loc) //
' does not exist!')
1075 if (.not. parallel_io)
return
1078 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
1079 call s_check_mpi_file_open(ierr, file_loc)
1081 call mpi_file_read(ifile, file_tot_part, 1, mpi_integer, status, ierr)
1082 call mpi_file_read(ifile, file_time, 1, mpi_p, status, ierr)
1083 call mpi_file_read(ifile, file_dt, 1, mpi_p, status, ierr)
1084 call mpi_file_read(ifile, file_num_procs, 1, mpi_integer, status, ierr)
1086 call mpi_file_close(ifile, ierr)
1089 call mpi_bcast(file_tot_part, 1, mpi_integer, 0, mpi_comm_world, ierr)
1090 call mpi_bcast(file_time, 1, mpi_p, 0, mpi_comm_world, ierr)
1091 call mpi_bcast(file_dt, 1, mpi_p, 0, mpi_comm_world, ierr)
1092 call mpi_bcast(file_num_procs, 1, mpi_integer, 0, mpi_comm_world, ierr)
1093 time_real = file_time
1095 allocate (proc_bubble_counts(file_num_procs))
1098 call mpi_file_open(mpi_comm_self, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
1099 call s_check_mpi_file_open(ierr, file_loc)
1102 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs), mpi_offset_kind)
1103 call mpi_file_seek(ifile, disp, mpi_seek_set, ierr)
1104 call mpi_file_read(ifile, proc_bubble_counts, file_num_procs, mpi_integer, status, ierr)
1106 call mpi_file_close(ifile, ierr)
1109 call mpi_bcast(proc_bubble_counts, file_num_procs, mpi_integer, 0, mpi_comm_world, ierr)
1113 nbub = proc_bubble_counts(
proc_rank + 1)
1115 start_idx_part(1) = 0
1117 start_idx_part(1) = start_idx_part(1) + proc_bubble_counts(i)
1120 start_idx_part(2) = 0
1124 gsizes(1) = file_tot_part
1128# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1129 allocate (bub_id(nbub))
1130# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1131# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1133# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1134# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1136# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1137# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1139# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1140# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1141 allocate (ppx(nbub))
1142# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1143# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1144 allocate (ppy(nbub))
1145# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1146# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1147 allocate (ppz(nbub))
1148# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1149# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1151# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1152# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1154# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1155# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1157# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1158# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1159 allocate (radius(nbub))
1160# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1161# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1162 allocate (rvel(nbub))
1163# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1164# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1165 allocate (rnot(nbub))
1166# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1167# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1168 allocate (rmax(nbub))
1169# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1170# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1171 allocate (rmin(nbub))
1172# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1173# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1174 allocate (dphidt(nbub))
1175# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1176# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1177 allocate (pressure(nbub))
1178# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1179# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1181# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1182# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1184# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1185# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1186 allocate (betat(nbub))
1187# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1188# 973 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1189 allocate (betac(nbub))
1190# 974 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1191# 975 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1194 call mpi_type_create_subarray(2, gsizes, lsizes, start_idx_part, mpi_order_fortran, mpi_p, view, ierr)
1195 call mpi_type_commit(view, ierr)
1197 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
1198 call s_check_mpi_file_open(ierr, file_loc)
1201 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
1202 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
1203 call mpi_file_set_view(ifile, disp, mpi_p, view,
'native', mpi_info_int, ierr)
1207 call mpi_file_close(ifile, ierr)
1208 call mpi_type_free(view, ierr)
1211# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1213# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1214# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1216# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1217# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1219# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1220# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1222# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1223# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1225# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1226# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1228# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1229# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1231# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1232# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1234# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1235# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1237# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1238# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1240# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1241# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1243# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1244# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1246# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1247# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1249# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1250# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1252# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1253# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1255# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1256# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1258# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1259# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1261# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1262# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1264# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1265# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1267# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1268# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1270# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1271# 998 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1273# 999 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1274# 1000 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1281 write (meshnames(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:lag_bubbles'
1282 meshtypes(i) = db_pointmesh
1284 err = dbset2dstrlen(len(meshnames(1)))
1285 err = dbputmmesh(
out%dbroot,
'lag_bubbles', 16,
num_procs, meshnames, len_trim(meshnames), meshtypes, db_f77null, &
1289 err = dbputpm(
out%dbfile,
'lag_bubbles', 11, 3, px, py, pz, nbub, db_double, db_f77null, ierr)
1292 if (lag_vel_wrt)
then
1309 deallocate (bub_id, px, py, pz, ppx, ppy, ppz, vx, vy, vz, radius, rvel, rnot, rmax, rmin, dphidt, pressure, mv, mg, &
1313 call mpi_type_contiguous(0, mpi_p, view, ierr)
1314 call mpi_type_commit(view, ierr)
1316 call mpi_file_open(mpi_comm_world, file_loc, mpi_mode_rdonly, mpi_info_int, ifile, ierr)
1317 call s_check_mpi_file_open(ierr, file_loc)
1320 disp = int(sizeof(file_tot_part) + 2*sizeof(file_time) + sizeof(file_num_procs) &
1321 & + file_num_procs*sizeof(proc_bubble_counts(1)), mpi_offset_kind)
1322 call mpi_file_set_view(ifile, disp, mpi_p, view,
'native', mpi_info_int, ierr)
1324 call mpi_file_read_all(ifile, dummy, 0, mpi_p, status, ierr)
1326 call mpi_file_close(ifile, ierr)
1327 call mpi_type_free(view, ierr)
1331 write (meshnames(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:lag_bubbles'
1332 meshtypes(i) = db_pointmesh
1334 err = dbset2dstrlen(len(meshnames(1)))
1335 err = dbputmmesh(
out%dbroot,
'lag_bubbles', 16,
num_procs, meshnames, len_trim(meshnames), meshtypes, db_f77null, &
1339 err = dbsetemptyok(1)
1340 err = dbputpm(
out%dbfile,
'lag_bubbles', 11, 3, dummy_data, dummy_data, dummy_data, 0, db_double, db_f77null, ierr)
1343 if (lag_vel_wrt)
then
1367 character(len=*),
intent(in) :: varname
1368 integer,
intent(in) :: t_step
1369 real(wp),
dimension(1:),
intent(in),
optional :: data
1370 integer,
intent(in),
optional :: nBubs
1371 character(len=64),
dimension(num_procs) :: var_names
1372 integer,
dimension(num_procs) :: var_types
1373 real(wp) :: dummy_data
1379 if (
present(nbubs) .and.
present(data))
then
1382 write (var_names(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:' // trim(varname)
1383 var_types(i) = db_pointvar
1385 err = dbset2dstrlen(len(var_names(1)))
1386 err = dbputmvar(
out%dbroot, trim(varname), len_trim(varname),
num_procs, var_names, len_trim(var_names), &
1387 & var_types, db_f77null, ierr)
1390 err = dbputpv1(
out%dbfile, trim(varname), len_trim(varname),
'lag_bubbles', 11,
data, nbubs, db_double, db_f77null, &
1395 write (var_names(i),
'(A,I0,A,I0,A)')
'../p', i - 1,
'/', t_step,
'.silo:' // trim(varname)
1396 var_types(i) = db_pointvar
1398 err = dbset2dstrlen(len(var_names(1)))
1399 err = dbsetemptyok(1)
1400 err = dbputmvar(
out%dbroot, trim(varname), len_trim(varname),
num_procs, var_names, len_trim(var_names), &
1401 & var_types, db_f77null, ierr)
1404 err = dbsetemptyok(1)
1405 err = dbputpv1(
out%dbfile, trim(varname), len_trim(varname),
'lag_bubbles', 11, dummy_data, 0, db_double, db_f77null, &
1414 character(len=len_trim(case_dir) + 4*name_len) :: in_file, out_file, file_loc
1415 integer :: iu_in, ios, i, rec_id
1416 integer,
allocatable,
dimension(:) :: iu_out
1417 real(wp) :: rec_time
1418 real(wp),
dimension(3) :: rec_force, rec_torque
1419 real(wp),
dimension(3) :: rec_vel, rec_angular_vel
1420 real(wp),
dimension(3) :: rec_angles, rec_centroid
1422 file_loc = trim(case_dir) //
'/D'
1424 in_file = trim(file_loc) //
'/ib_state.dat'
1425 open (newunit=iu_in, file=trim(in_file), form=
'unformatted', access=
'stream', status=
'old', action=
'read', iostat=ios)
1427 call s_mpi_abort(
'Cannot open IB state input file: ' // trim(in_file))
1430 allocate (iu_out(num_ibs))
1432 write (out_file,
'(A,I0,A)') trim(file_loc) //
'/ib_', i,
'.txt'
1433 open (newunit=iu_out(i), file=trim(out_file), form=
'formatted', status=
'replace', action=
'write', iostat=ios)
1435 call s_mpi_abort(
'Cannot open IB state output file: ' // trim(out_file))
1438 &
'(A)')
'mytime fx fy fz Tau_x Tau_y Tau_z vx vy vz omega_x omega_y omega_z angle_x angle_y angle_z x_c y_c z_c'
1442 read (iu_in, iostat=ios) rec_time, rec_id, rec_force, rec_torque, rec_vel, rec_angular_vel, rec_angles, &
1443 & rec_centroid(1), rec_centroid(2), rec_centroid(3)
1446 if (rec_id >= 1 .and. rec_id <= num_ibs)
then
1447 write (iu_out(rec_id),
'(19(ES24.16E3,1X))') rec_time, rec_force(1), rec_force(2), rec_force(3), rec_torque(1), &
1448 & rec_torque(2), rec_torque(3), rec_vel(1), rec_vel(2), rec_vel(3), rec_angular_vel(1), &
1449 & rec_angular_vel(2), rec_angular_vel(3), rec_angles(1), rec_angles(2), rec_angles(3), rec_centroid(1), &
1450 & rec_centroid(2), rec_centroid(3)
1552 real(wp) :: elk, egk, elp, egint, eg_phase, vb, vl, pres_av, et
1553 real(wp) :: rho, pres, dv, tmp, gamma, pi_inf, qv, maxma, maxma_glb, maxvel, c, ma
1554 real(wp),
dimension(num_vels) :: vel
1555 real(wp),
dimension(num_fluids) ::
adv, alpha_rho
1556 integer :: i,
j,
k,
l, s
1577 pres = q_prim_vf(eqn_idx%E)%sf(i,
j,
k)
1579 vel(s) = q_prim_vf(num_fluids + s)%sf(i,
j,
k)
1580 egk = egk + 0.5_wp*q_prim_vf(eqn_idx%E + 2)%sf(i,
j,
k)*q_prim_vf(2)%sf(i,
j,
k)*vel(s)*vel(s)*dv
1581 elk = elk + 0.5_wp*q_prim_vf(eqn_idx%E + 1)%sf(i,
j,
k)*q_prim_vf(1)%sf(i,
j,
k)*vel(s)*vel(s)*dv
1582 if (abs(vel(s)) > maxvel)
then
1583 maxvel = abs(vel(s))
1586 do l = 1, num_fluids
1587 adv(
l) = q_prim_vf(eqn_idx%E +
l)%sf(i,
j,
k)
1588 alpha_rho(
l) = q_prim_vf(
l)%sf(i,
j,
k)
1592 egint = egint + eg_phase*dv
1599 if (ma > maxma .and. (
adv(1) > (1.0_wp - 1.0e-10_wp)))
then
1604 pres_av = pres_av +
adv(1)*pres*dv
1611 call s_mpi_allreduce_sum(tmp, pres_av)
1613 call s_mpi_allreduce_sum(tmp, vl)
1615 call s_mpi_allreduce_max(maxma, maxma_glb)
1617 call s_mpi_allreduce_sum(tmp, elk)
1619 call s_mpi_allreduce_sum(tmp, egint)
1621 call s_mpi_allreduce_sum(tmp, egk)
1623 call s_mpi_allreduce_sum(tmp, vb)
1625 call s_mpi_allreduce_sum(tmp, et)
1629 write (251,
'(10X, 8F24.8)') elp, egint, elk, egk, et, vb, vl, maxma_glb
1637 integer,
intent(in) :: t_step
1638 character(len=len_trim(case_dir) + 3*name_len) :: file_loc
1641 integer,
parameter :: nfields_per_ib = 20
1642 real(wp) :: ib_buf(nfields_per_ib)
1643 real(wp),
dimension(:,:),
allocatable :: ib_data
1644 logical :: file_exist
1645 character(LEN=4*name_len),
dimension(num_procs) :: meshnames
1646 integer,
dimension(num_procs) :: meshtypes
1647 integer :: i, ios, file_unit
1648 integer :: ierr, nbodies
1649 integer :: r, nlocal, gbl_id
1650 character(len=10) :: t_step_string
1651 real(wp),
dimension(:),
allocatable :: px, py, pz
1652 real(wp),
dimension(:),
allocatable :: force_x, force_y, force_z
1653 real(wp),
dimension(:),
allocatable :: torque_x, torque_y, torque_z
1654 real(wp),
dimension(:),
allocatable :: vel_x, vel_y, vel_z
1655 real(wp),
dimension(:),
allocatable :: omega_x, omega_y, omega_z
1656 real(wp),
dimension(:),
allocatable :: angle_x, angle_y, angle_z
1657 real(wp),
dimension(:),
allocatable :: ib_diameter
1658 real(sp),
dimension(:),
allocatable :: px_s, py_s, pz_s
1659 logical,
dimension(:),
allocatable :: keep
1666 if (nbodies > 0)
then
1667 allocate (ib_data(nbodies, nfields_per_ib))
1668 allocate (px(nbodies), py(nbodies), pz(nbodies))
1669 allocate (force_x(nbodies), force_y(nbodies), force_z(nbodies))
1670 allocate (torque_x(nbodies), torque_y(nbodies), torque_z(nbodies))
1671 allocate (vel_x(nbodies), vel_y(nbodies), vel_z(nbodies))
1672 allocate (omega_x(nbodies), omega_y(nbodies), omega_z(nbodies))
1673 allocate (angle_x(nbodies), angle_y(nbodies), angle_z(nbodies))
1674 allocate (ib_diameter(nbodies))
1676 if (file_per_process)
then
1680 write (file_loc,
'(A,I0,A,i7.7,A)')
'ib_state_', t_step,
'_', r,
'.dat'
1681 file_loc = trim(case_dir) //
'/restart_data/lustre_' // trim(t_step_string) //
'/' // trim(file_loc)
1683 inquire (file=trim(file_loc), exist=file_exist)
1684 if (.not. file_exist)
call s_mpi_abort(
'Restart file ' // trim(file_loc) //
' does not exist!')
1686 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'old', iostat=ios)
1687 if (ios /= 0)
call s_mpi_abort(
'Cannot open IB state file: ' // trim(file_loc))
1689 read (file_unit, iostat=ios) nlocal
1690 if (ios /= 0)
call s_mpi_abort(
'Error reading IB state file header: ' // trim(file_loc))
1693 read (file_unit, iostat=ios) gbl_id
1694 if (ios /= 0)
call s_mpi_abort(
'Error reading IB patch ID: ' // trim(file_loc))
1695 read (file_unit, iostat=ios) ib_buf
1696 if (ios /= 0)
call s_mpi_abort(
'Error reading IB state data: ' // trim(file_loc))
1697 ib_data(gbl_id,:) = ib_buf(:)
1704 write (file_loc,
'(A,I0,A)')
'/restart_data/ib_state_', t_step,
'.dat'
1705 file_loc = trim(case_dir) // trim(file_loc)
1707 inquire (file=trim(file_loc), exist=file_exist)
1708 if (.not. file_exist)
call s_mpi_abort(
'Restart file ' // trim(file_loc) //
' does not exist!')
1710 open (newunit=file_unit, file=trim(file_loc), form=
'unformatted', access=
'stream', status=
'old', iostat=ios)
1711 if (ios /= 0)
call s_mpi_abort(
'Cannot open IB state file: ' // trim(file_loc))
1714 read (file_unit, iostat=ios) ib_buf
1715 if (ios /= 0)
call s_mpi_abort(
'Error reading IB state file')
1716 ib_data(i,:) = ib_buf(:)
1723 force_x(i) = ib_data(i, 2); force_y(i) = ib_data(i, 3); force_z(i) = ib_data(i, 4)
1724 torque_x(i) = ib_data(i, 5); torque_y(i) = ib_data(i, 6); torque_z(i) = ib_data(i, 7)
1725 vel_x(i) = ib_data(i, 8); vel_y(i) = ib_data(i, 9); vel_z(i) = ib_data(i, 10)
1726 omega_x(i) = ib_data(i, 11); omega_y(i) = ib_data(i, 12); omega_z(i) = ib_data(i, 13)
1727 angle_x(i) = ib_data(i, 14); angle_y(i) = ib_data(i, 15); angle_z(i) = ib_data(i, 16)
1728 px(i) = ib_data(i, 17); py(i) = ib_data(i, 18); pz(i) = ib_data(i, 19)
1729 ib_diameter(i) = ib_data(i, 20)*2.0_wp
1735 if (output_partial_domain)
then
1736 allocate (keep(nbodies))
1739 r_ib = 0.5_wp*ib_diameter(i)
1740 keep(i) = (px(i) + r_ib >=
x_output%beg) .and. (px(i) - r_ib <=
x_output%end)
1741 if (n > 0) keep(i) = keep(i) .and. (py(i) + r_ib >=
y_output%beg) .and. (py(i) - r_ib <=
y_output%end)
1742 if (p > 0) keep(i) = keep(i) .and. (pz(i) + r_ib >=
z_output%beg) .and. (pz(i) - r_ib <=
z_output%end)
1747 if (nkept < nbodies)
then
1748# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1749 px(1:nkept) = pack(px(1:nbodies), keep)
1750# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1751# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1752 py(1:nkept) = pack(py(1:nbodies), keep)
1753# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1754# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1755 pz(1:nkept) = pack(pz(1:nbodies), keep)
1756# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1757# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1758 ib_diameter(1:nkept) = pack(ib_diameter(1:nbodies), keep)
1759# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1760# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1761 force_x(1:nkept) = pack(force_x(1:nbodies), keep)
1762# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1763# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1764 force_y(1:nkept) = pack(force_y(1:nbodies), keep)
1765# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1766# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1767 force_z(1:nkept) = pack(force_z(1:nbodies), keep)
1768# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1769# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1770 torque_x(1:nkept) = pack(torque_x(1:nbodies), keep)
1771# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1772# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1773 torque_y(1:nkept) = pack(torque_y(1:nbodies), keep)
1774# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1775# 1474 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1776 torque_z(1:nkept) = pack(torque_z(1:nbodies), keep)
1777# 1475 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1778# 1476 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1779# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1780 vel_x(1:nkept) = pack(vel_x(1:nbodies), keep)
1781# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1782# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1783 vel_y(1:nkept) = pack(vel_y(1:nbodies), keep)
1784# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1785# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1786 vel_z(1:nkept) = pack(vel_z(1:nbodies), keep)
1787# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1788# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1789 omega_x(1:nkept) = pack(omega_x(1:nbodies), keep)
1790# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1791# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1792 omega_y(1:nkept) = pack(omega_y(1:nbodies), keep)
1793# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1794# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1795 omega_z(1:nkept) = pack(omega_z(1:nbodies), keep)
1796# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1797# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1798 angle_x(1:nkept) = pack(angle_x(1:nbodies), keep)
1799# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1800# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1801 angle_y(1:nkept) = pack(angle_y(1:nbodies), keep)
1802# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1803# 1477 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1804 angle_z(1:nkept) = pack(angle_z(1:nbodies), keep)
1805# 1478 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1806# 1479 "/home/runner/work/MFC/MFC/src/post_process/m_data_output.fpp"
1813 write (meshnames(1),
'(A,I0,A)')
'../p0/', t_step,
'.silo:ib_bodies'
1814 meshtypes(1) = db_pointmesh
1815 err = dbset2dstrlen(len(meshnames(1)))
1816 err = dbputmmesh(
out%dbroot,
'ib_bodies', 16, 1, meshnames, len_trim(meshnames), meshtypes, db_f77null, ierr)
1821 allocate (px_s(nbodies), py_s(nbodies), pz_s(nbodies))
1822 px_s(1:nbodies) = real(px(1:nbodies), sp)
1823 py_s(1:nbodies) = real(py(1:nbodies), sp)
1824 pz_s(1:nbodies) = real(pz(1:nbodies), sp)
1825 err = dbputpm(
out%dbfile,
'ib_bodies', 9, 3, px_s, py_s, pz_s, nbodies, db_float, db_f77null, ierr)
1826 deallocate (px_s, py_s, pz_s)
1828 err = dbputpm(
out%dbfile,
'ib_bodies', 9, 3, px, py, pz, nbodies, db_double, db_f77null, ierr)
1848 deallocate (ib_data, px, py, pz, force_x, force_y, force_z)
1849 deallocate (torque_x, torque_y, torque_z, vel_x, vel_y, vel_z)
1850 deallocate (omega_x, omega_y, omega_z, angle_x, angle_y, angle_z)
1851 deallocate (ib_diameter)