# edilson-nantes/sa-soilcorrection architecture

> Architecture diagram of the GitHub repository edilson-nantes/sa-soilcorrection, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/edilson-nantes/sa-soilcorrection
- Repository: https://github.com/edilson-nantes/sa-soilcorrection

## Overview

This is a Java soil-correction calculation library, intended to replace spreadsheet calculations. Its documented workflow starts with laboratory soil values, establishes ideal nutrient levels by soil texture, calculates nutrient corrections and application amounts, then supports cost and additional-nutrient calculations. Conversion utilities provide unit conversions. The tree and sampled source show domain logic but no application entry point or orchestrator, so the workflow links are not presented as a verified runtime call chain; relationships shown between modules are limited to source references or README statements.

Main entry points: [`src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java`](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java) (Correction calculations), [`src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java`](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java) (Additional nutrients), [`src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/IFonteNutriente.java`](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/IFonteNutriente.java) (Nutrient source interface), [`src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/Conversao.java`](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/Conversao.java) (Unit conversions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_soil["Soil targets"]
  node_texture["Soil texture<br/>[TexturaSolo.java]"]
  node_targets["Ideal nutrients<br/>[NutrientesCTC.java]"]
end

subgraph group_correction["Nutrient correction"]
  node_ctc["CTC balance"]
  node_calcium["Calcium-magnesium correction"]
  node_phosphorus["Phosphorus correction"]
  node_potassium["Potassium correction"]
  node_correction_api["Correction calculations"]
  node_application_api["Application quantity"]
end

subgraph group_sources["Fertilizer sources"]
  node_calcium_source["Calcium-magnesium sources"]
  node_phosphorus_source["Phosphorus sources<br/>[FonteFosforo.java]"]
  node_potassium_source["Potassium sources<br/>[FontePotassio.java]"]
  node_source_api["Nutrient source interface"]
  node_additional["Additional nutrients"]
  node_additional_names["Additional nutrient names"]
end

subgraph group_support["Calculation support"]
  node_conversions["Unit conversions<br/>[Conversao.java]"]
  node_cmol_to_mg["cmolc to mg"]
  node_mg_to_kgha["mg to kg/ha"]
  node_kgha_to_k["kg/ha to K2O"]
  node_kgha_to_p["kg/ha to P2O5"]
end

node_lab(("Soil laboratory"))

node_lab -.->|"provides analysis values"| node_targets
node_texture -->|"calculates ideals"| node_targets
node_calcium -->|"implements"| node_correction_api
node_calcium -->|"uses source type"| node_calcium_source
node_phosphorus -->|"implements"| node_correction_api
node_phosphorus -->|"implements"| node_application_api
node_phosphorus -->|"uses source type"| node_phosphorus_source
node_potassium -->|"implements"| node_correction_api
node_potassium -->|"implements"| node_application_api
node_potassium -->|"uses source type"| node_potassium_source
node_correction_api -->|"accepts source"| node_source_api
node_correction_api -->|"returns additional nutrients"| node_additional
node_application_api -->|"reads source content"| node_source_api
node_calcium_source -->|"implements"| node_source_api
node_phosphorus_source -->|"implements"| node_source_api
node_potassium_source -->|"implements"| node_source_api
node_calcium_source -->|"defines content"| node_additional
node_phosphorus_source -->|"defines content"| node_additional
node_potassium_source -->|"defines content"| node_additional
node_additional -->|"uses name enum"| node_additional_names
node_cmol_to_mg -->|"implements"| node_conversions
node_mg_to_kgha -->|"implements"| node_conversions
node_kgha_to_k -->|"implements"| node_conversions
node_kgha_to_p -->|"implements"| node_conversions

click node_texture "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/solo/TexturaSolo.java"
click node_targets "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrientesCTC.java"
click node_ctc "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/EquilibrioCorrecaoCTC.java"
click node_calcium "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoCalcioMagnesio.java"
click node_phosphorus "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java"
click node_potassium "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java"
click node_correction_api "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java"
click node_application_api "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutrienteQuantidadeAplicar.java"
click node_calcium_source "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteCalcioMagnesio.java"
click node_phosphorus_source "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteFosforo.java"
click node_potassium_source "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FontePotassio.java"
click node_source_api "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/IFonteNutriente.java"
click node_additional "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java"
click node_additional_names "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NomeNutrienteAdicional.java"
click node_conversions "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/Conversao.java"
click node_cmol_to_mg "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/ConverteCMolcDm3EmMgDm3.java"
click node_mg_to_kgha "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteMgDm3EmKgHa.java"
click node_kgha_to_k "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmK2O.java"
click node_kgha_to_p "https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmP2O5.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_texture,node_targets toneBlue
class node_ctc,node_calcium,node_phosphorus,node_potassium,node_correction_api,node_application_api toneAmber
class node_calcium_source,node_phosphorus_source,node_potassium_source,node_source_api,node_additional,node_additional_names toneMint
class node_conversions,node_cmol_to_mg,node_mg_to_kgha,node_kgha_to_k,node_kgha_to_p toneRose
class node_lab toneIndigo
```

## Components

### Soil targets

- [Soil texture](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/solo/TexturaSolo.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/solo/TexturaSolo.java`
- [Ideal nutrients](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrientesCTC.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrientesCTC.java`

### Nutrient correction

- [CTC balance](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/EquilibrioCorrecaoCTC.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/EquilibrioCorrecaoCTC.java`
- [Calcium-magnesium correction](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoCalcioMagnesio.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoCalcioMagnesio.java`
- [Phosphorus correction](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java`
- [Potassium correction](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java`
- [Correction calculations](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java`
- [Application quantity](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutrienteQuantidadeAplicar.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutrienteQuantidadeAplicar.java`

### Fertilizer sources

- [Calcium-magnesium sources](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteCalcioMagnesio.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteCalcioMagnesio.java`
- [Phosphorus sources](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteFosforo.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteFosforo.java`
- [Potassium sources](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FontePotassio.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FontePotassio.java`
- [Nutrient source interface](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/IFonteNutriente.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/IFonteNutriente.java`
- [Additional nutrients](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java`
- [Additional nutrient names](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NomeNutrienteAdicional.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NomeNutrienteAdicional.java`

### Calculation support

- [Unit conversions](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/Conversao.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/Conversao.java`
- [cmolc to mg](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/ConverteCMolcDm3EmMgDm3.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/ConverteCMolcDm3EmMgDm3.java`
- [mg to kg/ha](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteMgDm3EmKgHa.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteMgDm3EmKgHa.java`
- [kg/ha to K2O](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmK2O.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmK2O.java`
- [kg/ha to P2O5](https://github.com/edilson-nantes/sa-soilcorrection/blob/main/src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmP2O5.java): `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmP2O5.java`

### Other components

- **Soil laboratory**

## Connections

- Soil laboratory → Ideal nutrients: provides analysis values (evidence: `README.md`)
- Soil texture → Ideal nutrients: calculates ideals (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/solo/TexturaSolo.java`)
- Calcium-magnesium correction → Correction calculations: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoCalcioMagnesio.java`)
- Calcium-magnesium correction → Calcium-magnesium sources: uses source type (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoCalcioMagnesio.java`)
- Phosphorus correction → Correction calculations: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java`)
- Phosphorus correction → Application quantity: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java`)
- Phosphorus correction → Phosphorus sources: uses source type (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoFosforo.java`)
- Potassium correction → Correction calculations: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java`)
- Potassium correction → Application quantity: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java`)
- Potassium correction → Potassium sources: uses source type (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/correcoesNutrientes/CorrecaoPotassio.java`)
- Correction calculations → Nutrient source interface: accepts source (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java`)
- Correction calculations → Additional nutrients: returns additional nutrients (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutriente.java`)
- Application quantity → Nutrient source interface: reads source content (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/correcoes/interfaces/ICorrecaoNutrienteQuantidadeAplicar.java`)
- Calcium-magnesium sources → Nutrient source interface: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteCalcioMagnesio.java`)
- Phosphorus sources → Nutrient source interface: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteFosforo.java`)
- Potassium sources → Nutrient source interface: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FontePotassio.java`)
- Calcium-magnesium sources → Additional nutrients: defines content (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteCalcioMagnesio.java`)
- Phosphorus sources → Additional nutrients: defines content (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FonteFosforo.java`)
- Potassium sources → Additional nutrients: defines content (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/fontes/FontePotassio.java`)
- Additional nutrients → Additional nutrient names: uses name enum (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/nutrientes/NutrienteAdicional.java`)
- cmolc to mg → Unit conversions: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/ConverteCMolcDm3EmMgDm3.java`)
- mg to kg/ha → Unit conversions: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteMgDm3EmKgHa.java`)
- kg/ha to K2O → Unit conversions: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmK2O.java`)
- kg/ha to P2O5 → Unit conversions: implements (evidence: `src/main/java/edu/utfpr/cp/dacom/sa/soilcorrection/conversoes/conversoesKgHa/ConverteKgHaEmP2O5.java`)
