@@ -250,6 +250,7 @@ void TimeFrac::setSeconds(R8 Seconds) { // [in] floating point seconds
250250 I8 N; // numerator
251251 I8 D; // denominator
252252 R8 F = 0.0 ;
253+ I4 I = 0 ;
253254 do {
254255 // Compute next convergent N/D
255256 A = (I8)R;
@@ -382,8 +383,12 @@ void TimeFrac::getHMS(I4 &Hours, // [out] integer hours
382383R8 TimeFrac::getSeconds (void ) const { // \result Time in real seconds
383384
384385 // check for divide-by-zero
385- if (Denom == 0 )
386- ABORT_ERROR (" TimeMgr: TimeFrac::getSeconds encountered 0 denominator." );
386+ I4 Err{0 };
387+ if (Denom == 0 ) {
388+ Err = 1 ;
389+ LOG_ERROR (" TimeMgr: encountered 0 denominator." );
390+ return 0.0 ;
391+ }
387392
388393 // convert integer fractional seconds to real result
389394 return (R8)Whole + (R8)Numer / (R8)Denom;
@@ -397,8 +402,12 @@ R8 TimeFrac::getSeconds(void) const { // \result Time in real seconds
397402R8 TimeFrac::getHours (void ) const { // \result Time in real hours
398403
399404 // check for divide-by-zero
400- if (Denom == 0 )
401- ABORT_ERROR (" TimeMgr: TimeFrac::getHours encountered 0 denominator." );
405+ I4 Err{0 };
406+ if (Denom == 0 ) {
407+ Err = 1 ;
408+ LOG_ERROR (" TimeMgr: encountered 0 denominator." );
409+ return 0.0 ;
410+ }
402411
403412 // make local copy for manipulation
404413 TimeFrac TmpTime = *this ;
@@ -420,8 +429,12 @@ R8 TimeFrac::getHours(void) const { // \result Time in real hours
420429R8 TimeFrac::getMinutes (void ) const { // \result Time in real minutes
421430
422431 // check for divide-by-zero
423- if (Denom == 0 )
424- ABORT_ERROR (" TimeMgr: TimeFrac::getMinutes encountered 0 denominator." );
432+ int Err{0 };
433+ if (Denom == 0 ) {
434+ Err = 1 ;
435+ LOG_ERROR (" TimeMgr: encountered 0 denominator." );
436+ return 0.0 ;
437+ }
425438
426439 // make local copy for manipulation
427440 TimeFrac TmpTime = *this ;
@@ -1012,13 +1025,11 @@ std::unique_ptr<Calendar> Calendar::OmegaCal = nullptr;
10121025// -------------------------------------------------------------------------
10131026// Calendar::get - retrieves pointer to model calendar
10141027Calendar *Calendar::get () {
1015-
1016- // Check for valid calendar
1017- if (!isDefined ())
1018- ABORT_ERROR (" TimeMgr: Attempt to retrieve undefined calendar" );
1019-
1020- return Calendar::OmegaCal.get ();
1021-
1028+ if (isDefined ()) {
1029+ return Calendar::OmegaCal.get ();
1030+ } else {
1031+ LOG_CRITICAL (" Attempt to retrieve undefined calendar" );
1032+ }
10221033} // end retrieve calendar pointer
10231034
10241035// ------------------------------------------------------------------------------
@@ -1044,15 +1055,16 @@ CalendarKind Calendar::getKind() {
10441055std::vector<I4> Calendar::getDaysPerMonth () {
10451056
10461057 // check if calendar defined
1047- if (!isDefined ())
1048- ABORT_ERROR (" TimeMgr: Cannot retrieve DaysPerMonth"
1049- " - Calendar not initialized" );
1050-
1051- // also check for valid vector
1052- if (Calendar::OmegaCal->DaysPerMonth .size () < 1 )
1053- ABORT_ERROR (" TimeMgr: Invalid DaysPerMonth vector in Calendar" );
1054-
1055- return Calendar::OmegaCal->DaysPerMonth ;
1058+ if (isDefined) {
1059+ // also check for valid vector
1060+ if (Calendar::OmegaCal->DaysPerMonth .size () > 0 ) {
1061+ return Calendar::OmegaCal->DaysPerMonth ;
1062+ } else {
1063+ LOG_CRITICAL (" Invalid DaysPerMonth vector" );
1064+ }
1065+ } else {
1066+ LOG_CRITICAL (" Cannot retrieve calendar props - Calendar not initialized" );
1067+ }
10561068}
10571069
10581070I4 Calendar::getMonthsPerYear () {
@@ -1381,6 +1393,7 @@ TimeFrac Calendar::getElapsedTime(
13811393 // initialize the basetime result, and common temps
13821394 TimeFrac Result (0 , 0 , 1 );
13831395 I8 ResultWhole{0 }; // whole seconds for result
1396+ I8 DayOfYear{0 }; // day since beginning of year
13841397 I8 JD{0 }; // Julian Day used for many conversions
13851398 I8 HourTmp{0 }; // For half-day JD conversions
13861399 I4 FebDays{0 }; // For tracking leap days
@@ -1979,18 +1992,19 @@ TimeInterval::TimeInterval(
19791992 Units = InUnits;
19801993 IsCalendar = false ;
19811994 CalInterval = 0 ;
1995+ I4 Err{0 };
19821996
19831997 // Now set values based on input units
19841998 I8 Length = InLength;
19851999 switch (Units) {
19862000 case TimeUnits::Seconds:
1987- Interval.set (Length, 0 , 1 );
2001+ Err = Interval.set (Length, 0 , 1 );
19882002 break ;
19892003 case TimeUnits::Minutes:
1990- Interval.setHMS (0 , Length, 0 );
2004+ Err = Interval.setHMS (0 , Length, 0 );
19912005 break ;
19922006 case TimeUnits::Hours:
1993- Interval.setHMS (Length, 0 , 0 );
2007+ Err = Interval.setHMS (Length, 0 , 0 );
19942008 break ;
19952009 case TimeUnits::Years: // these three are all calendar
19962010 case TimeUnits::Months: // intervals with the input length
@@ -2019,17 +2033,18 @@ TimeInterval::TimeInterval(
20192033 Units = InUnits;
20202034 IsCalendar = false ;
20212035 CalInterval = 0 ;
2036+ I4 Err{0 };
20222037
20232038 // Now set values based on input units
20242039 switch (InUnits) {
20252040 case TimeUnits::Seconds:
2026- Interval.set (Length, 0 , 1 );
2041+ Err = Interval.set (Length, 0 , 1 );
20272042 break ;
20282043 case TimeUnits::Minutes:
2029- Interval.setHMS (0 , Length, 0 );
2044+ Err = Interval.setHMS (0 , Length, 0 );
20302045 break ;
20312046 case TimeUnits::Hours:
2032- Interval.setHMS (Length, 0 , 0 );
2047+ Err = Interval.setHMS (Length, 0 , 0 );
20332048 break ;
20342049 case TimeUnits::Years: // these three are all calendar
20352050 case TimeUnits::Months: // intervals with the input length
@@ -2060,17 +2075,18 @@ TimeInterval::TimeInterval(
20602075 Units = InUnits;
20612076 IsCalendar = false ;
20622077 CalInterval = 0 ;
2078+ I4 Err{0 };
20632079
20642080 // Now set values based on input units
20652081 switch (InUnits) {
20662082 case TimeUnits::Seconds:
2067- Interval.setSeconds (Length); // TimeFrac set
2083+ Err = Interval.setSeconds (Length); // TimeFrac set
20682084 break ;
20692085 case TimeUnits::Minutes:
2070- Interval.setMinutes (Length); // TimeFrac set
2086+ Err = Interval.setMinutes (Length); // TimeFrac set
20712087 break ;
20722088 case TimeUnits::Hours:
2073- Interval.setHours (Length); // TimeFrac set
2089+ Err = Interval.setHours (Length); // TimeFrac set
20742090 break ;
20752091 case TimeUnits::Years: // these three are all calendar
20762092 case TimeUnits::Months: // intervals with the input length
@@ -3030,10 +3046,10 @@ bool TimeInterval::isPositive(void) {
30303046 // make sure fraction is in proper form, particularly that the
30313047 // whole and fraction have same sign and numerator and denomintator
30323048 // have the same sign.
3033- Interval.simplify ();
3049+ I4 Err = Interval.simplify ();
30343050
30353051 // now retrieve fractional seconds and check components
3036- Interval.get (W, N, D);
3052+ Err = Interval.get (W, N, D);
30373053 if (W >= 0 ) { // whole part of seconds non-negative
30383054 // only need check the numerator with simplified form
30393055 if (N > 0 )
@@ -3513,10 +3529,9 @@ std::string TimeInstant::getString(
35133529 const char *FormatStr = Tmp.c_str ();
35143530
35153531 // now use sprintf to print to C string
3516- I4 NChars =
3517- sprintf (TimeStr, FormatStr, Year, Month, Day, Hour, Minute, Second);
3518- if (NChars < 0 )
3519- ABORT_ERROR (" TimeMgr: TimeInstant::getString error in sprintf" );
3532+ Err = sprintf (TimeStr, FormatStr, Year, Month, Day, Hour, Minute, Second);
3533+ if (Err < 0 )
3534+ LOG_ERROR (" TimeMgr: TimeInstant::getString error in sprintf" );
35203535
35213536 // now convert C string to std::string for result
35223537 std::string Result (TimeStr);
0 commit comments