| 873 | |
| 874 | template<class TStream> |
| 875 | void print_internal(TStream& out, const DomainModalProperties& dmp) |
| 876 | { |
| 877 | // utils |
| 878 | auto print_vec = [&out](const Vector& x, const char* fchar = DMP_OUT_BLANK) { |
| 879 | double tol = getTolerance(x); |
| 880 | out << fchar; |
| 881 | for (int i = 0; i < x.Size(); ++i) |
| 882 | out << DMP_OUT_FLOAT(cleanFloat(x(i), tol)); |
| 883 | out << "\n"; |
| 884 | }; |
| 885 | auto print_mat = [&out](const Matrix& x, double scale = 1.0, const char *fchar = DMP_OUT_BLANK) { |
| 886 | double tol = getTolerance(x); |
| 887 | for (int j = 0; j < x.noRows(); ++j) { |
| 888 | out << fchar << DMP_OUT_GEN(j + 1); |
| 889 | for (int i = 0; i < x.noCols(); ++i) |
| 890 | out << DMP_OUT_FLOAT(scale * cleanFloat(x(j, i), tol)); |
| 891 | out << "\n"; |
| 892 | } |
| 893 | }; |
| 894 | auto print_svec = [&out](const std::vector<std::string>& x, const char* fchar = DMP_OUT_BLANK) { |
| 895 | out << fchar; |
| 896 | for (int i = 0; i < x.size(); ++i) |
| 897 | out << DMP_OUT_GEN(x[i]); |
| 898 | out << "\n"; |
| 899 | }; |
| 900 | |
| 901 | // labels |
| 902 | static std::vector<std::string> lab_freq = { "MODE", "LAMBDA", "OMEGA", "FREQUENCY", "PERIOD" }; |
| 903 | static std::vector<std::string> lab_mass_1d = { "MX" }; |
| 904 | static std::vector<std::string> lab_mass_2d = { "MX", "MY", "RMZ" }; |
| 905 | static std::vector<std::string> lab_mass_3d = { "MX", "MY", "MZ", "RMX", "RMY", "RMZ" }; |
| 906 | static std::vector<std::string> lab_efmass_1d = { "MODE", "MX" }; |
| 907 | static std::vector<std::string> lab_efmass_2d = { "MODE", "MX", "MY", "RMZ" }; |
| 908 | static std::vector<std::string> lab_efmass_3d = { "MODE", "MX", "MY", "MZ", "RMX", "RMY", "RMZ" }; |
| 909 | static std::vector<std::string> lab_pos_1d = { "X" }; |
| 910 | static std::vector<std::string> lab_pos_2d = { "X", "Y" }; |
| 911 | static std::vector<std::string> lab_pos_3d = { "X", "Y", "Z" }; |
| 912 | static std::vector<std::string> lab_sep_1 = { DMP_OUT_HLINE }; |
| 913 | static std::vector<std::string> lab_sep_2 = { DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 914 | static std::vector<std::string> lab_sep_3 = { DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 915 | static std::vector<std::string> lab_sep_4 = { DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 916 | static std::vector<std::string> lab_sep_5 = { DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 917 | static std::vector<std::string> lab_sep_6 = { DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 918 | static std::vector<std::string> lab_sep_7 = { DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE, DMP_OUT_HLINE }; |
| 919 | |
| 920 | // header |
| 921 | out << DMP_OUT_COMMENT << " MODAL ANALYSIS REPORT\n\n"; |
| 922 | |
| 923 | // problem size |
| 924 | int ndm = dmp.centerOfMass().Size(); |
| 925 | out << DMP_OUT_RECORD << " 1. DOMAIN SIZE:\n" |
| 926 | << DMP_OUT_COMMENT << " This is the size of the problem: 1 for 1D problems, 2 for 2D problems, 3 for 3D problems.\n" |
| 927 | << ndm << "\n\n\n"; |
| 928 | |
| 929 | // eigenvalues and derived quantities |
| 930 | out << DMP_OUT_RECORD << " 2. EIGENVALUE ANALYSIS:\n"; |
| 931 | print_svec(lab_freq, DMP_OUT_COMMENT); |
| 932 | print_svec(lab_sep_5, DMP_OUT_COMMENT); |
no test coverage detected