# Fortran i Maguyva: kodegrafer til videnskabelige kodebaser

Canonical source: https://maguyva.ai/da/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 understøtter Fortran med AST, symboler og graf, så AI-agenter kan følge subrutiner, moduler og afledte typer, før de ændrer numerisk kode.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .f, .f03, .f08, .f90, .f95, .for, +1 flere
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- Forsknings-, ingeniør- og HPC-teams, der vedligeholder Fortran-solvere, simuleringer eller numeriske biblioteker, som er ældre end det nuværende team.
- Repositories, hvor `.f`-filer i fast format ligger ved siden af `.f90` og nyere moduler i frit format, ofte sammen med wrappers i C eller Python.
- Agentunderstøttede reviews, hvor første skridt er at finde ud af, hvilke subrutiner der berører et delt modul, før numerikken ændres.

## Agent-arbejdsgange

- Spore, hvilke subrutiner og funktioner der kalder en solver-rutine, før dens argumenter eller enheder ændres.
- Liste de moduler, en programenhed henter ind med `use`, og følge dem til deres definitioner.
- Finde, hvor en afledt type er erklæret, og hvilke procedurer der arbejder med den.

## Hvorfor Fortran har brug for struktur, ikke strengmatchning

Fortran-kodebaser er ofte gamle, store og skrevet af domæneeksperter frem for softwareteams. Rutiner med navnene `SOLVE`, `Solve` og `solve` er den samme rutine. Moduler deles af hundredvis af filer, og biblioteket af indbyggede procedurer er så stort, at en naiv kaldliste mest består af `SQRT`, `SUM` og `WRITE`.

En agent, der kun greper, drukner i den støj. Maguyva giver den strukturen først: hvilke programenheder der findes, hvilke moduler de bruger, og hvilke egne rutiner der kalder hinanden.

## Hvad Maguyva udtrækker i Fortran

Maguyva dækker kildekode i fast og frit format (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funktioner og subrutiner udtrækkes som kaldbare symboler, og afledte typer kan vælges som typedefinitioner i strukturel søgning.

Symbolmatchningen skelner ikke mellem store og små bogstaver, ligesom Fortran selv. Importrelationer kommer fra `use` og `include`; nøgleordet fjernes, så grafen gemmer modulnavnet. Kald, læsninger, tildelinger, typereferencer og nedarvning fra udvidede afledte typer indgår også i grafen.

Relationsfilteret fjerner omkring 165 indbyggede procedurer (I/O-sætninger samt rutiner til matematik, arrays, strenge, typekonvertering og bitoperationer), så de kanter, der er tilbage, peger på din egen kode.

## Eksempler på prompts til agenter

- "Hvilke subrutiner kalder `compute_flux`, og hvilke moduler bruger de?" (`find_symbol`, derefter `dependency_search` incoming)
- "Spor, hvordan randbetingelser anvendes i solverens løkke." (`get_task_context`)
- "Find alle programenheder, der bruger modulet `constants`." (`text_pattern_search` efter `use constants`, derefter `find_symbol`)

## Kendte begrænsninger

- Fortran har hverken dekoratorer eller undtagelseshåndtering, så de relationstyper er markeret som ikke relevante.
- Typebundne procedurer deler de samme noder som almindelige funktioner og subrutiner. Brug forudindstillingen `functions` i `structural_search`; forudindstillingen `methods` vælger ingen Fortran-noder.
- Kald til filtrerede indbyggede procedurer vises ikke som kanter i grafen. Brug `text_pattern_search`, når du har brug for hver `WRITE` eller `OPEN`.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter hele understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Hvis din Fortran ligger ved siden af limkode i C, så læs også [guiden til C](/da/languages/c).

## Motordetaljer

- Fortran-understøttelsen dækker kildekode i fast og frit format: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` og `.f08`.
- Funktioner og subrutiner er kaldbare symboler, symbolmatchningen skelner ikke mellem store og små bogstaver, og `use` og `include` bliver til importrelationer.
- Omkring 165 indbyggede procedurer (rutiner til I/O, matematik, arrays, strenge, typekonvertering og bits) filtreres fra relationerne. Dekorator- og undtagelsesrelationer er markeret som ikke relevante.

## Nyttige MCP-indgange

- `find_symbol`: Start med navnet på subrutinen, funktionen eller modulet; matchningen ignorerer store og små bogstaver, ligesom Fortran.
- `dependency_search`: Brug incoming-gennemløb på en solver- eller delt modulrutine for at se alle kaldere før en numerisk ændring.
- `get_task_context`: Brug det til prompts som "spor, hvordan randbetingelser anvendes i solverens løkke".
