diff --git a/reference/linelist.c17 b/reference/linelist.c17 index 9ac68bf..7e8561d 100644 --- a/reference/linelist.c17 +++ b/reference/linelist.c17 @@ -157,11 +157,12 @@ C 2 2326.93A Stout, 2 4 Blnd 1335.00A Blend: "C 2 1334.53A"+"C 2 1335.66A"+"C 2 1335.71A"+"C 2R 1335.00A" # no inwd -#C 2 1334.53A Stout, 1 7 -#C 2 1335.66A Stout, 2 7 -#C 2 1335.71A Stout, 2 6 +C 2 1334.53A Stout, 1 7 +C 2 1335.66A Stout, 2 7 +C 2 1335.71A Stout, 2 6 Blnd 977.000A Blend: "C 3 977.020A"+"C 3R 977.000A" +# no inwd C 3 977.020A Stout, 1 5 Blnd 1909.00A Blend: "C 3 1908.73A"+"C 3 1906.68A"+"C 3R 1909.00A"+"C 3H 1909.00A" @@ -236,9 +237,9 @@ O 1 1306.03A Blnd 8446.00A Blend: "O 1 8446.25A"+"O 1 8446.36A"+"O 1 8446.76A" # no inwd -#O 1 8446.25A -#O 1 8446.36A -#O 1 8446.76A +O 1 8446.25A +O 1 8446.36A +O 1 8446.76A Blnd 1666.00A Blend: "O 3 1666.15A"+"O 3 1660.81A"+"O 3H 1665.00A"+"O 3A 1665.00A" # no inwd diff --git a/src/agn.hpp b/src/agn.hpp index 6881a38..0523688 100644 --- a/src/agn.hpp +++ b/src/agn.hpp @@ -281,22 +281,37 @@ agn::cloudy_grid agn::read_cloudy_grid(std::ifstream& inputfile) { agn::gridcoordlist::iterator coords = coordlist.begin(); while(grid.size() < coordlist.size()) { + bool failmode = false; agn::cloudy_result point; point.hden = coords->first; point.phi = coords->second; seek_string = "Intrinsic line intensities"; + std::string fail_string = "PROBLEM DISASTER"; if(agn::debug) std::cout << "Grabbing header and cautions."; std::string header=""; std::list cautions; while (inputline.find(seek_string) == std::string::npos) { getline(inputfile,inputline); + if (inputline.find(fail_string) != std::string::npos) { + if(agn::debug) std::cout + << " Found broken model."; + failmode = true; + break; + } header.append(inputline); header.append("\n"); if((inputline[1] == 'C' && inputline[2] == '-') || (inputline[1] == ' ' && inputline[2] == '!' )) cautions.push_back(inputline); } + if (failmode) { + grid[*coords] = point; + coords++; + //agn::seek_to("c ======================",inputfile); + //agn::seek_to("c ======================",inputfile); + continue; + } point.header = header; point.cautions = cautions; std::stringstream headerstr; diff --git a/src/spectral_lines.hpp b/src/spectral_lines.hpp index 908c389..d5e07df 100644 --- a/src/spectral_lines.hpp +++ b/src/spectral_lines.hpp @@ -283,6 +283,9 @@ std::ostream& agn::operator<< ( std::ostream& outstream, agn::line_list agn::read_line_list(std::ifstream& inputfile) { line_list list; + line_list nfnulist; + line_list inwtlist; + line_list inwclist; inputfile.clear(); inputfile.seekg(0); std::string line,label; @@ -301,16 +304,19 @@ agn::line_list agn::read_line_list(std::ifstream& inputfile) { << " to capture list.\n"; std::string applabel = label.substr(4); if (label.substr(0,4).compare(std::string("nFnu")) == 0) { - list.push_back(std::string("nFnu").append(applabel)); + nfnulist.push_back(std::string("nFnu").append(applabel)); //list.push_back(std::string("nInu").append(applabel)); - list.push_back(std::string("InwT").append(applabel)); - list.push_back(std::string("InwC").append(applabel)); + inwtlist.push_back(std::string("InwT").append(applabel)); + inwclist.push_back(std::string("InwC").append(applabel)); continue; } list.push_back(label); //if (label.substr(0,4) != "Inci" && applabel != " 0 ") // list.push_back(std::string("Inwd").append(applabel)); } + list.insert(list.end(),nfnulist.begin(),nfnulist.end()); + list.insert(list.end(),inwtlist.begin(),inwtlist.end()); + list.insert(list.end(),inwclist.begin(),inwclist.end()); return list; } @@ -388,7 +394,7 @@ std::list agn::compile_eqwidth_tables(agn::cloudy_grid grid, label == "Blnd 2326.00A" || label == "Blnd 2798.00A" || label == "Blnd 1335.00A" || - label == "C 3 977.000A" || + label == "Blnd 977.000A" || label == "Blnd 1909.00A" || label == "Blnd 1176.00A" || label == "Blnd 2141.00A" ||