Skip to content

Implement FORTRAN analysis and recommendations#30

Merged
skyelaird merged 1 commit intomainfrom
claude/fortran-analysis-recommendations-012bH97Bo8TuC4dbpbcTcoZD
Nov 14, 2025
Merged

Implement FORTRAN analysis and recommendations#30
skyelaird merged 1 commit intomainfrom
claude/fortran-analysis-recommendations-012bH97Bo8TuC4dbpbcTcoZD

Conversation

@skyelaird
Copy link
Copy Markdown
Owner

Fixed multiple critical bugs that were preventing propagation modes from being found:

  1. reflectrix.find_modes() bug: The method returns None but stores results in self.modes. Code was checking the return value instead of reflectrix.modes, causing all modes to be skipped.

  2. Attribute name mismatches: Fixed inconsistent attribute names throughout codebase:

    • mode.hop_count → mode.hop_cnt (ModeInfo uses hop_cnt)
    • mode.reflection → mode.ref (ModeInfo uses ref for Reflection data)
    • mode.hop_distance → mode.hop_dist (ModeInfo uses hop_dist)
    • mode.layer.name → mode.layer (layer is string, not enum)
    • muf_info.reflection → muf_info.ref (MufInfo uses ref)
  3. Missing signal attribute: Added signal attribute to ModeInfo class and initialized it in _compute_signal() before use.

  4. get_mode_name() type handling: Fixed to handle both enum and string layer types.

Status: Modes are now being found (was 0, now finding 1-3 modes per frequency). However, signal calculations are producing nan values due to sqrt of negative numbers in ground reflection calculations - this will be addressed in next commit.

Progress:

  • Before: 30.6% validation pass rate (but many had SNR=0)
  • After: 3.7% pass rate (modes found but calculations need fixing)

Relates to FORTRAN_ANALYSIS_AND_RECOMMENDATIONS.md Priority 1 tasks.

Fixed multiple critical bugs that were preventing propagation modes from being found:

1. **reflectrix.find_modes() bug**: The method returns None but stores results in self.modes.
   Code was checking the return value instead of reflectrix.modes, causing all modes to be skipped.

2. **Attribute name mismatches**: Fixed inconsistent attribute names throughout codebase:
   - mode.hop_count → mode.hop_cnt (ModeInfo uses hop_cnt)
   - mode.reflection → mode.ref (ModeInfo uses ref for Reflection data)
   - mode.hop_distance → mode.hop_dist (ModeInfo uses hop_dist)
   - mode.layer.name → mode.layer (layer is string, not enum)
   - muf_info.reflection → muf_info.ref (MufInfo uses ref)

3. **Missing signal attribute**: Added signal attribute to ModeInfo class and initialized
   it in _compute_signal() before use.

4. **get_mode_name() type handling**: Fixed to handle both enum and string layer types.

**Status**: Modes are now being found (was 0, now finding 1-3 modes per frequency).
However, signal calculations are producing nan values due to sqrt of negative numbers
in ground reflection calculations - this will be addressed in next commit.

**Progress**:
- Before: 30.6% validation pass rate (but many had SNR=0)
- After: 3.7% pass rate (modes found but calculations need fixing)

Relates to FORTRAN_ANALYSIS_AND_RECOMMENDATIONS.md Priority 1 tasks.
@skyelaird skyelaird merged commit 4a6ff45 into main Nov 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants