@@ -312,7 +312,6 @@ class SpinerEOSDependsRhoT : public EosBase<SpinerEOSDependsRhoT> {
312312
313313 int numRho_, numT_;
314314 Real lRhoMin_, lRhoMax_, rhoMax_;
315- Real lRhoMinSearch_;
316315 Real lTMin_, lTMax_, TMax_;
317316 Real PMin_;
318317 Real rhoNormal_, TNormal_, sieNormal_, PNormal_;
@@ -494,9 +493,6 @@ inline herr_t SpinerEOSDependsRhoT::loadDataboxes_(const std::string &matid_str,
494493 TMax_ = from_log (lTMax_, lTOffset_);
495494
496495 Real rhoMin = from_log (lRhoMin_, lRhoOffset_);
497- Real rhoMinSearch = std::max (
498- rhoMin, std::max (std::abs (robust::EPS ()) * 10 , std::abs (robust::EPS () * rhoMin)));
499- lRhoMinSearch_ = to_log (rhoMinSearch, lRhoOffset_);
500496
501497 // bulk modulus can be wrong in the tables. Use FLAG's approach to
502498 // fix the table.
@@ -920,40 +916,38 @@ template <typename Indexer_t>
920916PORTABLE_INLINE_FUNCTION Real SpinerEOSDependsRhoT::lRhoFromPlT_ (
921917 const Real P, const Real lT, TableStatus &whereAmI, Indexer_t &&lambda) const {
922918 RootFinding1D::Status status = RootFinding1D::Status::SUCCESS ;
919+ Real rhopmin = lRho_ (rho_at_pmin_.interpToReal (lT));
923920
924921 Real lRho;
925- Real lRhoGuess = reproducible_ ? lRhoMax_ : 0.5 * (lRhoMin_ + lRhoMax_);
922+ Real lRhoGuess = reproducible_ ? lRhoMax_ : 0.5 * (rhopmin + lRhoMax_);
926923 // Real lRhoGuess = lRhoMin_ + 0.9*(lRhoMax_ - lRhoMin_);
927924 const RootFinding1D::RootCounts *pcounts =
928925 (memoryStatus_ == DataStatus::OnDevice) ? nullptr : &counts;
929926
930927 Real lRho_cache;
931928 IndexerUtils::SafeGet<IndexableTypes::LogDensity>(lambda, Lambda::lRho, lRho_cache);
932- if ((lRhoMin_ <= lRho_cache) && (lRho_cache <= lRhoMax_)) {
929+ if ((rhopmin <= lRho_cache) && (lRho_cache <= lRhoMax_)) {
933930 lRhoGuess = lRho_cache;
934931 }
935932
936933 if (lT <= lTMin_) { // cold curve
937934 whereAmI = TableStatus::OffBottom;
938935 const callable_interp::interp PFunc (PCold_);
939- status =
940- SP_ROOT_FINDER (PFunc, P, lRhoGuess,
941- // lRhoMin_, lRhoMax_,
942- lRhoMinSearch_, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
936+ status = SP_ROOT_FINDER (PFunc, P, lRhoGuess,
937+ // lRhoMin_, lRhoMax_,
938+ rhopmin, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
943939 } else if (lT >= lTMax_) { // ideal gas
944940 whereAmI = TableStatus::OffTop;
945941 const callable_interp::prod_interp_1d PFunc (gm1Max_, dEdTMax_, lT);
946- status =
947- SP_ROOT_FINDER (PFunc, P, lRhoGuess,
948- // lRhoMin_, lRhoMax_,
949- lRhoMinSearch_, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
942+ status = SP_ROOT_FINDER (PFunc, P, lRhoGuess,
943+ // lRhoMin_, lRhoMax_,
944+ rhopmin, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
950945 } else { // on table
951946 whereAmI = TableStatus::OnTable;
952947 const callable_interp::l_interp PFunc (P_ , lT);
953- status =
954- SP_ROOT_FINDER (PFunc, P, lRhoGuess,
955- // lRhoMin_, lRhoMax_,
956- lRhoMinSearch_, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
948+ status = SP_ROOT_FINDER (PFunc, P, lRhoGuess,
949+ // lRhoMin_, lRhoMax_,
950+ rhopmin, lRhoMax_, ROOT_THRESH , ROOT_THRESH , lRho, pcounts);
957951 }
958952 if (status != RootFinding1D::Status::SUCCESS ) {
959953#if SPINER_EOS_VERBOSE
0 commit comments