write_chemistry_diagnostics_header Subroutine

public subroutine write_chemistry_diagnostics_header(params, flow)

Initialize chemistry workload diagnostics CSV.

Arguments

Type IntentOptional Attributes Name
type(case_params_t), intent(in) :: params
type(flow_mpi_t), intent(in) :: flow

Source Code

   subroutine write_chemistry_diagnostics_header(params, flow)
      type(case_params_t), intent(in) :: params
      type(flow_mpi_t), intent(in) :: flow

      integer :: unit_id, ios
      character(len=1024) :: filename

      if (.not. params%enable_reactions) return
      if (.not. params%write_diagnostics) return
      if (flow%rank /= 0) return

      call execute_command_line('mkdir -p ' // trim(params%output_dir) // '/diagnostics')
      filename = trim(params%output_dir) // '/diagnostics/chemistry_diagnostics.csv'
      open(newunit=unit_id, file=trim(filename), status='replace', action='write', iostat=ios)
      if (ios /= 0) then
         write(output_unit,'(a,a)') 'warning: could not create chemistry diagnostics file: ', trim(filename)
         return
      end if

      write(unit_id,'(a)') 'step,chemistry_dt,nprocs,owned_cells,active_cells,skipped_cells,reactor_calls,'// &
                           'active_cells_min_rank,active_cells_max_rank,skipped_cells_min_rank,skipped_cells_max_rank,'// &
                           'total_time_min,total_time_max,total_time_avg,reactor_time_min,reactor_time_max,'// &
                           'reactor_time_avg,reactor_time_per_call_avg,max_dT_chem,max_dY_chem,'// &
                           'max_rel_drho_chem,min_source_alpha,raw_max_dT_chem,raw_max_dY_chem,raw_max_rel_drho_chem,'// &
                           'max_qdot_exact,integrated_qdot_exact,energy_enabled'
      close(unit_id)
   end subroutine write_chemistry_diagnostics_header