|
4 | 4 | * or gnuplot. |
5 | 5 | */ |
6 | 6 |
|
7 | | -#include <string> |
8 | | -#include <vector> |
9 | 7 | #include <algorithm> |
10 | | -#include <fstream> |
11 | | -#include <map> |
12 | 8 | #include <cstdlib> |
13 | 9 | #include <cstring> |
| 10 | +#include <exception> |
| 11 | +#include <fstream> |
14 | 12 | #include <iomanip> |
| 13 | +#include <map> |
| 14 | +#include <string> |
| 15 | +#include <vector> |
15 | 16 |
|
16 | 17 | #ifdef PXRMP_TABLE_GEN_HAS_OPENMP |
17 | 18 | #include <omp.h> |
@@ -769,51 +770,58 @@ std::string parse_file_name_prefix(std::map<std::string, std::string>& args){ |
769 | 770 |
|
770 | 771 | int main(int argc, char** argv) |
771 | 772 | { |
772 | | - handle_help_argument(argc, argv); |
773 | | - auto args = read_arg_pairs(argc, argv); |
774 | | - |
775 | | - const auto precision = parse_precision(args); |
776 | | - const auto table_type = parse_table_type(args); |
777 | | - const auto file_name_prefix = parse_file_name_prefix(args); |
778 | | - |
779 | | - if(table_type == TableType::breit_wheeler_table){ |
780 | | - if(precision == Precision::double_precision){ |
781 | | - auto params = parse_breit_wheeler_params<double>(args); |
782 | | - do_breit_wheeler< |
783 | | - double, px_bw::generation_policy::regular>( |
784 | | - params, file_name_prefix); |
785 | | - } |
786 | | - else if(precision == Precision::single_precision){ |
787 | | - auto params = parse_breit_wheeler_params<float>(args); |
788 | | - do_breit_wheeler< |
789 | | - float, px_bw::generation_policy::regular>( |
| 773 | + try{ |
| 774 | + handle_help_argument(argc, argv); |
| 775 | + auto args = read_arg_pairs(argc, argv); |
| 776 | + |
| 777 | + const auto precision = parse_precision(args); |
| 778 | + const auto table_type = parse_table_type(args); |
| 779 | + const auto file_name_prefix = parse_file_name_prefix(args); |
| 780 | + |
| 781 | + if(table_type == TableType::breit_wheeler_table){ |
| 782 | + if(precision == Precision::double_precision){ |
| 783 | + auto params = parse_breit_wheeler_params<double>(args); |
| 784 | + do_breit_wheeler< |
| 785 | + double, px_bw::generation_policy::regular>( |
| 786 | + params, file_name_prefix); |
| 787 | + } |
| 788 | + else if(precision == Precision::single_precision){ |
| 789 | + auto params = parse_breit_wheeler_params<float>(args); |
| 790 | + do_breit_wheeler< |
| 791 | + float, px_bw::generation_policy::regular>( |
790 | 792 | params, file_name_prefix); |
| 793 | + } |
| 794 | + else if(precision == Precision::single_prec_out_double_prec_comp){ |
| 795 | + auto params = parse_breit_wheeler_params<float>(args); |
| 796 | + do_breit_wheeler< |
| 797 | + float, px_bw::generation_policy::force_internal_double>( |
| 798 | + params, file_name_prefix); |
| 799 | + } |
791 | 800 | } |
792 | | - else if(precision == Precision::single_prec_out_double_prec_comp){ |
793 | | - auto params = parse_breit_wheeler_params<float>(args); |
794 | | - do_breit_wheeler< |
795 | | - float, px_bw::generation_policy::force_internal_double>( |
796 | | - params, file_name_prefix); |
| 801 | + else if(table_type == TableType::quantum_synchrotron_table){ |
| 802 | + if(precision == Precision::double_precision){ |
| 803 | + auto params = parse_quantum_sync_params<double>(args); |
| 804 | + do_quantum_sync< |
| 805 | + double, px_qs::generation_policy::regular>( |
| 806 | + params, file_name_prefix); |
| 807 | + } |
| 808 | + else if(precision == Precision::single_precision){ |
| 809 | + auto params = parse_quantum_sync_params<float>(args); |
| 810 | + do_quantum_sync< |
| 811 | + float, px_qs::generation_policy::regular>( |
| 812 | + params, file_name_prefix); |
| 813 | + } |
| 814 | + else if(precision == Precision::single_prec_out_double_prec_comp){ |
| 815 | + auto params = parse_quantum_sync_params<float>(args); |
| 816 | + do_quantum_sync< |
| 817 | + float, px_qs::generation_policy::force_internal_double>( |
| 818 | + params, file_name_prefix); |
| 819 | + } |
797 | 820 | } |
798 | 821 | } |
799 | | - else if(table_type == TableType::quantum_synchrotron_table){ |
800 | | - if(precision == Precision::double_precision){ |
801 | | - auto params = parse_quantum_sync_params<double>(args); |
802 | | - do_quantum_sync< |
803 | | - double, px_qs::generation_policy::regular>( |
804 | | - params, file_name_prefix); |
805 | | - } |
806 | | - else if(precision == Precision::single_precision){ |
807 | | - auto params = parse_quantum_sync_params<float>(args); |
808 | | - do_quantum_sync< |
809 | | - float, px_qs::generation_policy::regular>( |
810 | | - params, file_name_prefix); |
811 | | - } |
812 | | - else if(precision == Precision::single_prec_out_double_prec_comp){ |
813 | | - auto params = parse_quantum_sync_params<float>(args); |
814 | | - do_quantum_sync< |
815 | | - float, px_qs::generation_policy::force_internal_double>( |
816 | | - params, file_name_prefix); |
817 | | - } |
| 822 | + catch(const std::exception& e){ |
| 823 | + std::cerr << e.what(); |
| 824 | + exit(EXIT_FAILURE); |
818 | 825 | } |
| 826 | + exit(EXIT_SUCCESS); |
819 | 827 | } |
0 commit comments