# Fortran i Maguyva: kodegrafer for vitenskapelige kodebaser

Canonical source: https://maguyva.ai/nb/languages/fortran

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva støtter Fortran med AST, symboler og graf, slik at AI-agenter kan følge subrutiner, moduler og avledede typer før de endrer numerisk kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .f, .f03, .f08, .f90, .f95, .for, +1 til
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- Forsknings-, ingeniør- og HPC-team som vedlikeholder Fortran-løsere, simuleringer eller numeriske biblioteker som er eldre enn dagens team.
- Repositorier der `.f`-filer i fast format ligger ved siden av `.f90` og nyere moduler i fritt format, ofte sammen med wrappere i C eller Python.
- Agentstøttede gjennomganger der første steg er å finne ut hvilke subrutiner som berører en delt modul før numerikken endres.

## Agent-arbeidsflyter

- Spore hvilke subrutiner og funksjoner som kaller en løserrutine før argumentene eller enhetene endres.
- Liste modulene en programenhet henter inn med `use`, og følge dem til definisjonene.
- Finne hvor en avledet type er deklarert, og hvilke prosedyrer som jobber med den.

## Hvorfor Fortran trenger struktur, ikke strengmatching

Fortran-kodebaser er ofte gamle, store og skrevet av fageksperter heller enn programvareteam. Rutiner som heter `SOLVE`, `Solve` og `solve` er samme rutine. Moduler deles av hundrevis av filer, og biblioteket av innebygde prosedyrer er så stort at en naiv kalliste for det meste består av `SQRT`, `SUM` og `WRITE`.

En agent som bare greper, drukner i den støyen. Maguyva gir den strukturen først: hvilke programenheter som finnes, hvilke moduler de bruker, og hvilke egne rutiner som kaller hverandre.

## Hva Maguyva henter ut i Fortran

Maguyva dekker kildekode i fast og fritt format (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funksjoner og subrutiner hentes ut som kallbare symboler, og avledede typer kan velges som typedefinisjoner i strukturelt søk.

Symbolmatchingen skiller ikke mellom store og små bokstaver, akkurat som Fortran selv. Importrelasjoner kommer fra `use` og `include`; nøkkelordet fjernes slik at grafen lagrer modulnavnet. Kall, lesinger, tilordninger, typereferanser og arv fra utvidede avledede typer er også med i grafen.

Relasjonsfilteret fjerner rundt 165 innebygde prosedyrer (I/O-setninger og rutiner for matematikk, tabeller, strenger, typekonvertering og bitoperasjoner), slik at kantene som gjenstår peker på din egen kode.

## Eksempler på prompter for agenter

- «Hvilke subrutiner kaller `compute_flux`, og hvilke moduler bruker de?» (`find_symbol`, deretter `dependency_search` incoming)
- «Spor hvordan randbetingelser brukes i løserens løkke.» (`get_task_context`)
- «Finn alle programenheter som bruker modulen `constants`.» (`text_pattern_search` etter `use constants`, deretter `find_symbol`)

## Kjente begrensninger

- Fortran har verken dekoratorer eller unntakshåndtering, så disse relasjonstypene er merket som ikke aktuelle.
- Typebundne prosedyrer deler de samme nodene som vanlige funksjoner og subrutiner. Bruk forhåndsinnstillingen `functions` i `structural_search`; forhåndsinnstillingen `methods` velger ingen Fortran-noder.
- Kall til filtrerte innebygde prosedyrer vises ikke som kanter i grafen. Bruk `text_pattern_search` når du trenger hver `WRITE` eller `OPEN`.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter hele støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). Hvis Fortran-koden din ligger ved siden av limkode i C, bør du også lese [veiledningen for C](/nb/languages/c).

## Motordetaljer

- Fortran-støtten dekker kildekode i fast og fritt format: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` og `.f08`.
- Funksjoner og subrutiner er kallbare symboler, symbolmatchingen skiller ikke mellom store og små bokstaver, og `use` og `include` blir importrelasjoner.
- Rundt 165 innebygde prosedyrer (rutiner for I/O, matematikk, tabeller, strenger, typekonvertering og biter) filtreres ut av relasjonene. Dekorator- og unntaksrelasjoner er merket som ikke aktuelle.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Start med navnet på subrutinen, funksjonen eller modulen; matchingen ignorerer store og små bokstaver, akkurat som Fortran.
- `dependency_search`: Bruk incoming-traversering på en løser- eller delt modulrutine for å se alle kallere før en numerisk endring.
- `get_task_context`: Bruk det til prompter som «spor hvordan randbetingelser brukes i løserens løkke».
