# letiziafiorucci/nja-cfs architecture

> Architecture diagram of the GitHub repository letiziafiorucci/nja-cfs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/letiziafiorucci/nja-cfs
- Repository: https://github.com/letiziafiorucci/nja-cfs

## Overview

NJA-CFS is a Python toolkit for crystal-field and ligand-field calculations on transition-metal and lanthanoid complexes. Its main workflow is to prepare a configuration and CF/LF parameters, build and solve an electronic-structure Hamiltonian, then calculate and visualize properties such as magnetism. The README also highlights multiple parameterization schemes and CF-parameter manipulation and rotation. The two main scripts are excerpted, but the excerpts do not establish most internal calls; those links are therefore omitted rather than inferred.

Main entry points: [`nja_cfs_red.py`](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py) (Electronic calculation), [`crystdat.py`](https://github.com/letiziafiorucci/nja-cfs/blob/main/crystdat.py) (CFP data), [`nja_cfs_v0.py`](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_v0.py) (Earlier implementation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Calculation setup"]
  node_parameters["CF/LF parameters<br/>[nja_cfs_red.py]"]
  node_param_schemes["Parameterization schemes<br/>[nja_cfs_red.py]"]
  node_parameter_rotation["Parameter manipulation and rotation<br/>[nja_cfs_red.py]"]
  node_configuration["Electronic configuration<br/>[nja_cfs_red.py]"]
end

subgraph group_theory["Electronic structure"]
  node_cfp[("CFP data<br/>[crystdat.py]")]
  node_term_basis["Term basis and CFPs<br/>[nja_cfs_red.py]"]
  node_rme["Reduced matrix elements<br/>[nja_cfs_red.py]"]
  node_calculation["Electronic calculation<br/>[nja_cfs_red.py]"]
  node_hamiltonian["Hamiltonian<br/>[nja_cfs_red.py]"]
  node_legacy_script["Earlier implementation<br/>[nja_cfs_v0.py]"]
end

subgraph group_results["Properties and results"]
  node_magnetics["Magnetic properties<br/>[nja_cfs_red.py]"]
  node_property_analysis["Property analysis<br/>[nja_cfs_red.py]"]
  node_visualization["Result visualization<br/>[nja_cfs_red.py]"]
end

node_user(("Researcher"))

node_user -.->|"provides inputs"| node_parameters
node_user -.->|"selects configuration"| node_configuration
node_user -.->|"chooses scheme"| node_param_schemes
node_parameters -.->|"configures"| node_calculation
node_configuration -.->|"selects basis"| node_calculation
node_param_schemes -.->|"parameterizes"| node_calculation
node_parameter_rotation -.->|"transforms"| node_parameters
node_calculation -.->|"builds"| node_hamiltonian
node_calculation -->|"evaluates"| node_magnetics
node_magnetics -->|"requests matrix"| node_hamiltonian
node_magnetics -.->|"produces results"| node_property_analysis
node_property_analysis -.->|"plots results"| node_visualization
node_term_basis -.->|"uses data"| node_cfp
node_rme -.->|"supports calculations"| node_calculation
node_legacy_script -->|"imports data"| node_cfp
node_calculation -->|"loads data"| node_cfp

click node_parameters "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_param_schemes "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_parameter_rotation "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_configuration "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_cfp "https://github.com/letiziafiorucci/nja-cfs/blob/main/crystdat.py"
click node_term_basis "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_rme "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_calculation "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_hamiltonian "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_magnetics "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_property_analysis "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_visualization "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py"
click node_legacy_script "https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_v0.py"

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_parameters,node_param_schemes,node_parameter_rotation,node_configuration toneBlue
class node_cfp,node_term_basis,node_rme,node_calculation,node_hamiltonian,node_legacy_script toneAmber
class node_magnetics,node_property_analysis,node_visualization toneMint
class node_user toneIndigo
```

## Components

### Calculation setup

- [CF/LF parameters](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Parameterization schemes](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Parameter manipulation and rotation](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Electronic configuration](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`

### Electronic structure

- [CFP data](https://github.com/letiziafiorucci/nja-cfs/blob/main/crystdat.py): `crystdat.py`
- [Term basis and CFPs](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Reduced matrix elements](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Electronic calculation](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Hamiltonian](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Earlier implementation](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_v0.py): `nja_cfs_v0.py`

### Properties and results

- [Magnetic properties](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Property analysis](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`
- [Result visualization](https://github.com/letiziafiorucci/nja-cfs/blob/main/nja_cfs_red.py): `nja_cfs_red.py`

### Other components

- **Researcher**

## Connections

- Researcher → CF/LF parameters: provides inputs (evidence: `README.md`)
- Researcher → Electronic configuration: selects configuration (evidence: `README.md`)
- Researcher → Parameterization schemes: chooses scheme (evidence: `README.md`)
- CF/LF parameters → Electronic calculation: configures (evidence: `nja_cfs_red.py`)
- Electronic configuration → Electronic calculation: selects basis (evidence: `nja_cfs_red.py`)
- Parameterization schemes → Electronic calculation: parameterizes (evidence: `README.md`)
- Parameter manipulation and rotation → CF/LF parameters: transforms (evidence: `README.md`)
- Electronic calculation → Hamiltonian: builds (evidence: `nja_cfs_red.py`)
- Electronic calculation → Magnetic properties: evaluates (evidence: `nja_cfs_red.py`)
- Magnetic properties → Hamiltonian: requests matrix (evidence: `nja_cfs_red.py`)
- Magnetic properties → Property analysis: produces results (evidence: `nja_cfs_red.py`)
- Property analysis → Result visualization: plots results (evidence: `nja_cfs_red.py`)
- Term basis and CFPs → CFP data: uses data (evidence: `nja_cfs_red.py`)
- Reduced matrix elements → Electronic calculation: supports calculations (evidence: `nja_cfs_red.py`)
- Earlier implementation → CFP data: imports data (evidence: `nja_cfs_v0.py`)
- Electronic calculation → CFP data: loads data (evidence: `nja_cfs_red.py`)
