Installation

Carina depends on three sibling packages that track their main branches through relative paths declared in Project.toml:

Because the paths are relative, all four repositories must be cloned as siblings in the same parent directory:

git clone git@github.com:Cthonios/ConstitutiveModels.jl.git
git clone git@github.com:Cthonios/FiniteElementContainers.jl.git
git clone git@github.com:Cthonios/ReferenceFiniteElements.jl.git
git clone git@github.com:Cthonios/Carina.jl.git
cd Carina.jl
julia --project=. -e 'using Pkg; Pkg.instantiate()'

The resulting layout:

parent/
├── Carina.jl/
├── ConstitutiveModels.jl/
├── FiniteElementContainers.jl/
└── ReferenceFiniteElements.jl/

Changes to any sibling repository are picked up immediately after restarting Julia — no reinstallation step.

Keeping the siblings current

The sibling packages move independently, and a change to one can require a matching change in Carina's Project.toml compat bounds. If resolution starts failing after a pull, update all four and re-resolve:

for r in ConstitutiveModels.jl FiniteElementContainers.jl ReferenceFiniteElements.jl; do
  git -C ../$r pull --ff-only
done
julia --project=. -e 'using Pkg; Pkg.update(); Pkg.resolve()'

A resolution failure typically reads:

ERROR: Unsatisfiable requirements detected for package Exodus [f57ae99e]:
 ├─restricted to versions 0.14 by Carina
 └─restricted to versions 0.15 by FiniteElementContainers — no versions left

which means a sibling has advanced past Carina's compat bound for a shared dependency. See Troubleshooting.

GPU support

GPU execution is optional and requires the vendor package for your hardware:

DevicePackagedevice value
AMDAMDGPU.jl (ROCm)rocm
NVIDIACUDA.jlcuda

Carina loads the backend through package extensions, so neither dependency is required for CPU-only use. Install whichever applies:

julia --project=. -e 'using Pkg; Pkg.add("AMDGPU")'   # AMD
julia --project=. -e 'using Pkg; Pkg.add("CUDA")'     # NVIDIA

Verify the device is visible before running a large job:

julia --project=. -e 'using AMDGPU; AMDGPU.versioninfo()'
julia --project=. -e 'using CUDA; CUDA.versioninfo()'

Building the documentation

julia --project=docs -e 'using Pkg; Pkg.instantiate(); include("docs/make.jl")'

Then open docs/build/index.html.