Skip to content

MatFi/AnnA.jl

Repository files navigation

AnnA.jl

        a rewrite of Courtier's IonMonger in Julia


Documentation Build Status DOI

Purpose and Aim of this package

This package implements basic functionality to conduct time resolved drift-diffusion simulations of ionic solar cells like perovskites and related systems in one spatial dimension. It applies Courtier's finite element scheme and solves the resulting equations using the awesome DifferentialEquations.jl package by Chris Rackauckas.

Install

using Pkg
Pkg.add("https://github.com/MatFi/AnnA.jl")

Usage in short

First load the package and define the parameter set for the simulation run. The defaults, are stored in /src/Parameters.jl and will be overwritten by giving the corresponding values as arguments to the Parameters() constructor

using AnnA, Unitful

parameters = AnnABase.Parameters(light = t->0,Rₛₕ =Inf*1u"V/A*m^2" )

The whole package uses Unitful.jl to handle the units nicely. This also means that all parameters must carry a unit (subtype of Unitful.AbstractQuantity). The unit can easily set by the Unitful.@u_str macro. For the simplest experimental protocols an wrapper is implemented to create them conveniently, e.g. a IV-Sweep as IVProblem(p::AbstractParameters, range::AbstractArray, sweep_rate::AbstractQuantity):

prob = IVProblem(parameters,[-0.2,1.4]u"V",0.005u"V/s")
solve(prob)