write_json_output Subroutine

public subroutine write_json_output(output_data)

THE single entry point for all JSON output

Dispatches to the appropriate JSON writer based on output_mode. This is the ONLY place in the codebase where JSON files are written.

Arguments

Type IntentOptional Attributes Name
type(json_output_data_t), intent(in) :: output_data

Calls

proc~~write_json_output~~CallsGraph proc~write_json_output write_json_output error error proc~write_json_output->error proc~write_gmbe_pie_json_impl write_gmbe_pie_json_impl proc~write_json_output->proc~write_gmbe_pie_json_impl proc~write_mbe_breakdown_json_impl write_mbe_breakdown_json_impl proc~write_json_output->proc~write_mbe_breakdown_json_impl proc~write_unfragmented_json_impl write_unfragmented_json_impl proc~write_json_output->proc~write_unfragmented_json_impl proc~write_vibrational_json_impl write_vibrational_json_impl proc~write_json_output->proc~write_vibrational_json_impl proc~write_gmbe_pie_json_impl->error add add proc~write_gmbe_pie_json_impl->add create_array create_array proc~write_gmbe_pie_json_impl->create_array create_object create_object proc~write_gmbe_pie_json_impl->create_object destroy destroy proc~write_gmbe_pie_json_impl->destroy info info proc~write_gmbe_pie_json_impl->info initialize initialize proc~write_gmbe_pie_json_impl->initialize proc~get_basename get_basename proc~write_gmbe_pie_json_impl->proc~get_basename proc~get_output_json_filename get_output_json_filename proc~write_gmbe_pie_json_impl->proc~get_output_json_filename proc~write_mbe_breakdown_json_impl->error proc~write_mbe_breakdown_json_impl->add proc~write_mbe_breakdown_json_impl->create_array proc~write_mbe_breakdown_json_impl->create_object proc~write_mbe_breakdown_json_impl->destroy proc~write_mbe_breakdown_json_impl->info proc~write_mbe_breakdown_json_impl->initialize proc~write_mbe_breakdown_json_impl->proc~get_basename proc~get_frag_level_name get_frag_level_name proc~write_mbe_breakdown_json_impl->proc~get_frag_level_name proc~write_mbe_breakdown_json_impl->proc~get_output_json_filename warning warning proc~write_mbe_breakdown_json_impl->warning proc~write_unfragmented_json_impl->error proc~write_unfragmented_json_impl->add proc~write_unfragmented_json_impl->create_object proc~write_unfragmented_json_impl->destroy proc~write_unfragmented_json_impl->info proc~write_unfragmented_json_impl->initialize proc~write_unfragmented_json_impl->proc~get_basename proc~write_unfragmented_json_impl->proc~get_output_json_filename proc~write_vibrational_json_impl->error proc~write_vibrational_json_impl->add proc~write_vibrational_json_impl->create_object proc~write_vibrational_json_impl->destroy proc~write_vibrational_json_impl->info proc~write_vibrational_json_impl->initialize proc~write_vibrational_json_impl->proc~get_basename proc~write_vibrational_json_impl->proc~get_output_json_filename

Called by

proc~~write_json_output~~CalledByGraph proc~write_json_output write_json_output proc~run_calculation run_calculation proc~run_calculation->proc~write_json_output proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->proc~run_calculation proc~run_multi_molecule_calculations run_multi_molecule_calculations proc~run_multi_molecule_calculations->proc~run_calculation program~main main program~main->proc~run_calculation program~main->proc~run_multi_molecule_calculations

Source Code

   subroutine write_json_output(output_data)
      !! THE single entry point for all JSON output
      !!
      !! Dispatches to the appropriate JSON writer based on output_mode.
      !! This is the ONLY place in the codebase where JSON files are written.
      type(json_output_data_t), intent(in) :: output_data

      select case (output_data%output_mode)
      case (OUTPUT_MODE_UNFRAGMENTED)
         if (output_data%has_vibrational) then
            call write_vibrational_json_impl(output_data)
         else
            call write_unfragmented_json_impl(output_data)
         end if

      case (OUTPUT_MODE_MBE)
         if (output_data%has_vibrational) then
            call write_vibrational_json_impl(output_data)
         else
            call write_mbe_breakdown_json_impl(output_data)
         end if

      case (OUTPUT_MODE_GMBE_PIE)
         if (output_data%has_vibrational) then
            call write_vibrational_json_impl(output_data)
         else
            call write_gmbe_pie_json_impl(output_data)
         end if

      case default
         call logger%error("Unknown output mode in write_json_output")
      end select

   end subroutine write_json_output