diff --git a/julia/TUG/docs/make.jl b/julia/TUG/docs/make.jl new file mode 100644 index 0000000..ca0b84a --- /dev/null +++ b/julia/TUG/docs/make.jl @@ -0,0 +1,13 @@ +using Pkg +using Documenter + +pkg_path = abspath(joinpath(@__DIR__, "..")) +Pkg.develop(path=pkg_path) +using TUG + +makedocs( + sitename="TUG Documentation", + modules=[TUG], + format=Documenter.HTML(), + remotes=nothing +) diff --git a/julia/TUG/docs/src/index.md b/julia/TUG/docs/src/index.md new file mode 100644 index 0000000..dd1e4a6 --- /dev/null +++ b/julia/TUG/docs/src/index.md @@ -0,0 +1,97 @@ +# TUG Documentation + +TUG is a Julia package that provides a framework for solving transport problems, notably diffusion, on uniform grids. It implements different numerical approaches, including implicit BTCS (Backward Time, Central Space) Euler and parallel 2D ADI (Alternating Direction Implicit). + +```@contents +``` + +## Introduction + +TUG, originally developed as a C++ library, is now available as a Julia package. It aims to offer a comprehensive toolkit for solving transport problems, such as diffusion and advection, on uniform grids. + +## Installation + +If TUG is locally cloned on your machine, you can install it by pointing to the local path. Open Julia REPL and follow these steps: + +```julia +using Pkg +Pkg.develop(path="path/to/tug/julia/TUG") # Replace with the actual path to the TUG directory +using TUG +``` + +## Getting Started + +Below are some basic examples of using TUG. For more detailed information, see the API section. For more advanced examples, see the test files in the `test` directory. + +### Creating a Simulation + +To create a simulation with TUG, you first need to set up a grid and boundary conditions. Here is an example of setting up a basic simulation: + +```julia +using TUG + +# Create a 1D grid +grid = TUG.Grid{Float64}(5, ones(1, 5)) + +# Define boundary conditions +boundary = TUG.Boundary{Float64}(grid) + +# Initialize a simulation with default parameters +simulation = TUG.Simulation{Float64}(grid, boundary) +``` + +### Running a Simulation + +After setting up the simulation, you can run it and analyze the results: + +```julia +# Set initial concentrations +TUG.setConcentrations!(grid, [1.0, 1.0, 20.0, 1.0, 1.0]) + +# Run the simulation +TUG.run(simulation) + +# Retrieve the concentrations after simulation +concentrations = TUG.getConcentrations(grid) +``` + +### Advanced Setup + +You can also customize your simulation with different parameters: + +```julia +# Create a simulation with custom parameters +simulation = TUG.Simulation{Float64}( + grid, + boundary; + approach = TUG.FTCS, + iterations = 2, + timestep = 0.2, + consoleOutput = TUG.CONSOLE_OUTPUT_ON, + csvOutput = TUG.CSV_OUTPUT_ON +) +``` + +### Dynamic Simulation + +For dynamic simulations where the concentration is manipulated externally during runtime: + +```julia +# Initialize a dynamic simulation +dynamicSimulation = TUG.DynamicSimulation{Float64}(grid, boundary; timestep = 0.1) + +# Create and update the grid over iterations +TUG.createGrid(dynamicSimulation) +for _ = 1:20 + TUG.next(dynamicSimulation) + # Update the concentration +end +``` + +## API Reference + +For a detailed reference of all functionalities, see the API section: + +```@autodocs +Modules = [TUG] +```