Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ jobs:
${{ runner.os }}-test-${{ env.cache-name }}-
${{ runner.os }}-test-
${{ runner.os }}-
- run: |
julia --project -e '
using Pkg
Pkg.Registry.add(url="https://github.com/j-fu/PackageNursery")'
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
env:
Expand Down
12 changes: 5 additions & 7 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
name = "PoissonBoltzmannIPAM2025"
uuid = "480e0da0-c3fa-11f0-becb-6b90fb73a51e"
authors = ["Jürgen Fuhrmann <juergen-fuhrmann@web.de>"]
version = "0.1.0"
authors = ["Jürgen Fuhrmann <juergen-fuhrmann@web.de>"]

[deps]
AugmentedPoissonBoltzmann = "d8b18f01-5396-498d-b34d-247825c18ff1"
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
DoubleFloats = "497a8b3b-efae-58df-a0af-a86822472b78"
DrWatson = "634d3b9d-ee7a-5ddf-bec9-22491ea816e1"
Expand All @@ -14,7 +15,6 @@ HypertextLiteral = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
Interpolations = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59"
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
JuliaMPBSolver = "d8b18f01-5396-498d-b34d-247825c18ff0"
LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
LessUnitful = "f29f6376-6e90-4d80-80c9-fb8ec61203d5"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Expand All @@ -31,10 +31,8 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
VoronoiFVM = "82b139dc-5afc-11e9-35da-9b9bdfd336f3"

[sources]
JuliaMPBSolver = {path = "packages/JuliaMPBSolver"}

[compat]
AugmentedPoissonBoltzmann = "0.4.1"
DoubleFloats = "1"
DynamicQuantities = "1.10.0"
ExampleJuggler = "2.4.0"
Expand All @@ -57,9 +55,9 @@ julia = "1.11"

[extras]
ExampleJuggler = "3bbe58f8-ed81-4c4e-a134-03e85fcf4a1a"
JuliaMPBSolver = "d8b18f01-5396-498d-b34d-247825c18ff0"
AugmentedPoissonBoltzmann = "d8b18f01-5396-498d-b34d-247825c18ff1"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Pkg", "Test", "JuliaMPBSolver", "ExampleJuggler"]
test = ["Pkg", "Test", "AugmentedPoissonBoltzmann", "ExampleJuggler"]
2 changes: 1 addition & 1 deletion notebooks/HalfCellAppliedPotential.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ begin
using PythonPlot: pyplot
using LaTeXStrings
using Colors
using JuliaMPBSolver.ICMPBP: ICMPBP, ICMPBData, AppliedPotentialHalfCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBP, ICMPBData, AppliedPotentialHalfCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
set_κ!, set_φ!
using DrWatson, PoissonBoltzmannIPAM2025

Expand Down
2 changes: 1 addition & 1 deletion notebooks/ICMPBP-DD-Draft.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ begin
using LessUnitful
using Test
using PythonPlot
using JuliaMPBSolver.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc, calc_cmol, calc_c0mol, calc_χ, W, pramp
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc, calc_cmol, calc_c0mol, calc_χ, W, pramp
end

# ╔═╡ ef660f6f-9de3-4896-a65e-13c60df5de1e
Expand Down
2 changes: 1 addition & 1 deletion notebooks/ICMPBP-Draft.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ begin
using Test
using PythonPlot
using Colors
using JuliaMPBSolver.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc
end

# ╔═╡ ef660f6f-9de3-4896-a65e-13c60df5de1e
Expand Down
2 changes: 1 addition & 1 deletion notebooks/ICMPBP-EndOfHackathon.jl
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ begin
using Test
using PythonPlot
using Colors
using JuliaMPBSolver.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc, calc_cmol, calc_c0mol
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc, calc_cmol, calc_c0mol
end

# ╔═╡ ef660f6f-9de3-4896-a65e-13c60df5de1e
Expand Down
2 changes: 1 addition & 1 deletion notebooks/MPBP-Draft.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ begin
using Test
using PythonPlot
using Colors
using JuliaMPBSolver.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBData, ICMPBSystem, L_Debye, set_molarity!, dlcap0, DerivedData, apply_charge!, ysum, qsweep, capscalc
end

# ╔═╡ ef660f6f-9de3-4896-a65e-13c60df5de1e
Expand Down
2 changes: 1 addition & 1 deletion notebooks/SymmetricCellSurfaceCharge.jl
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ begin
using LaTeXStrings
using Colors
using DrWatson, PoissonBoltzmannIPAM2025
using JuliaMPBSolver.ICMPBP: ICMPBP, ICMPBData, SurfaceChargedSymmetricCell, AbstractSymmetricCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBP, ICMPBData, SurfaceChargedSymmetricCell, AbstractSymmetricCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
set_κ!, set_q!
end

Expand Down
38 changes: 19 additions & 19 deletions scripts/ICMPB-csv.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ using DelimitedFiles
using DrWatson

using PoissonBoltzmannIPAM2025
using JuliaMPBSolver
using AugmentedPoissonBoltzmann

const nel = 1.0 * JuliaMPBSolver.Units.el_surface_density # number of electrons/nm^2 at interfaces
const nel = 1.0 * AugmentedPoissonBoltzmann.Units.el_surface_density # number of electrons/nm^2 at interfaces
const M_bulk = 2.0 # (bulk) molarity at center of domain
const E0 = 10JuliaMPBSolver.Units.V / JuliaMPBSolver.Units.nm # decrement parameter
const E0 = 10AugmentedPoissonBoltzmann.Units.V / AugmentedPoissonBoltzmann.Units.nm # decrement parameter
const a = 5.0 / E0^2 # decrement parameter in χ(E)
const c̄ = 55.508JuliaMPBSolver.Units.M # summary molar concentration
const c̄ = 55.508AugmentedPoissonBoltzmann.Units.M # summary molar concentration
const z = [-1, 1]
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * JuliaMPBSolver.Units.M # bulk concentrations
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * AugmentedPoissonBoltzmann.Units.M # bulk concentrations

const F = ph"N_A" * ph"e"
const K = ufac"K"
Expand All @@ -46,8 +46,8 @@ const L = 2.278592867nm # computational domain size
const N = length(z)

# Parameters
user_parameters = JuliaMPBSolver.Parameters.UserParameters(
273.15 + 25 * JuliaMPBSolver.Units.K,
user_parameters = AugmentedPoissonBoltzmann.Parameters.UserParameters(
273.15 + 25 * AugmentedPoissonBoltzmann.Units.K,
78.49 - 1,
0.0,
0.0,
Expand All @@ -63,15 +63,15 @@ user_parameters = JuliaMPBSolver.Parameters.UserParameters(
)

computed_parameters =
JuliaMPBSolver.Parameters.ComputedParameters(user_parameters)
AugmentedPoissonBoltzmann.Parameters.ComputedParameters(user_parameters)

grid_parameters = JuliaMPBSolver.Grid.UniformGrid(
grid_parameters = AugmentedPoissonBoltzmann.Grid.UniformGrid(
domain_size = L,
refinement = 4,
n_points = 20,
use_offset = false,
)
grid = JuliaMPBSolver.Grid.create_full_cell(grid_parameters)
grid = AugmentedPoissonBoltzmann.Grid.create_full_cell(grid_parameters)

const i3 = grid[BFaceNodes][1, 3] # Index of grid midpoint

Expand Down Expand Up @@ -190,7 +190,7 @@ indata = (M = M_bulk, q = 1, L = L / nm, n = length(Z))

savename(indata)

c3_avg = fill(M_bulk * JuliaMPBSolver.Units.M, 2)
c3_avg = fill(M_bulk * AugmentedPoissonBoltzmann.Units.M, 2)

data3 = PBData(
c_avg = c3_avg,
Expand All @@ -200,13 +200,13 @@ data3 = PBData(

sys3 = ICMPBSystem(data = data3, generic = xreaction!)

JuliaMPBSolver.Equations.add_boundary_charge!(
AugmentedPoissonBoltzmann.Equations.add_boundary_charge!(
sys3,
1,
2,
-user_parameters.boundary_electron_density,
)
JuliaMPBSolver.Equations.add_boundary_charge!(
AugmentedPoissonBoltzmann.Equations.add_boundary_charge!(
sys3,
1,
1,
Expand All @@ -224,9 +224,9 @@ sol3 = solve!(state3; inival = inival3, verbose = "n", damp_initial = 0.5)

conc =
concentrations(sol3, data3, c_ref = extcref(sol3[2:N, i3], data3)) /
(JuliaMPBSolver.Units.M)
(AugmentedPoissonBoltzmann.Units.M)

c0 = c̄ / (JuliaMPBSolver.Units.M) .- sum(conc, dims = 1)
c0 = c̄ / (AugmentedPoissonBoltzmann.Units.M) .- sum(conc, dims = 1)

reference_data_filename = resultsdir(savename("icmpb", indata, "hdf5"))
print(reference_data_filename)
Expand All @@ -236,13 +236,13 @@ if !isfile(reference_data_filename)
end

(x_ref, c_solvent_ref) =
JuliaMPBSolver.DataOut.read_hdf5_data(reference_data_filename, "c_solvent")
AugmentedPoissonBoltzmann.DataOut.read_hdf5_data(reference_data_filename, "c_solvent")
(x_ref, c_anion_ref) =
JuliaMPBSolver.DataOut.read_hdf5_data(reference_data_filename, "c_anion")
AugmentedPoissonBoltzmann.DataOut.read_hdf5_data(reference_data_filename, "c_anion")
(x_ref, c_cation_ref) =
JuliaMPBSolver.DataOut.read_hdf5_data(reference_data_filename, "c_cation")
AugmentedPoissonBoltzmann.DataOut.read_hdf5_data(reference_data_filename, "c_cation")

same_x = x_ref == JuliaMPBSolver.Grid.get_coordinates(grid)
same_x = x_ref == AugmentedPoissonBoltzmann.Grid.get_coordinates(grid)
if !same_x
throw(ErrorException("Grid coordinates mismatch"))
end
Expand Down
8 changes: 4 additions & 4 deletions scripts/equilibrium.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ using LessUnitful.MoreUnitful
using Test
using PythonPlot
using Colors
using JuliaMPBSolver
using AugmentedPoissonBoltzmann

function L_Debye(data)
return sqrt(
Expand Down Expand Up @@ -379,15 +379,15 @@ begin
L = 20nm
end

grid_parameters = JuliaMPBSolver.Grid.GeometricGrid(
grid_parameters = AugmentedPoissonBoltzmann.Grid.GeometricGrid(
domain_size = L,
refinement = 0,
hmin = 0.05 * nm,
hmax = 0.5 * nm,
use_offset = false,
)
grid = JuliaMPBSolver.Grid.create_half_cell(grid_parameters)
X = JuliaMPBSolver.Grid.get_coordinates(grid)
grid = AugmentedPoissonBoltzmann.Grid.create_half_cell(grid_parameters)
X = AugmentedPoissonBoltzmann.Grid.get_coordinates(grid)

sys_sy = create_equilibrium_system(grid, equidata)

Expand Down
28 changes: 14 additions & 14 deletions scripts/simplecell-bsk.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ using LinearAlgebra
using Interpolations
using VoronoiFVM
using PythonPlot
using JuliaMPBSolver
using AugmentedPoissonBoltzmann
using JLD2

const nel = 20.0 * JuliaMPBSolver.Units.el_surface_density # number of electrons/nm^2 at interfaces
const nel = 20.0 * AugmentedPoissonBoltzmann.Units.el_surface_density # number of electrons/nm^2 at interfaces
const M_bulk = 1 # (bulk) molarity at center of domain
const E0 = 10JuliaMPBSolver.Units.V / JuliaMPBSolver.Units.nm # decrement parameter
const E0 = 10AugmentedPoissonBoltzmann.Units.V / AugmentedPoissonBoltzmann.Units.nm # decrement parameter
const a = 5.0 / E0^2 # decrement parameter in χ(E)
const c̄ = 55.508JuliaMPBSolver.Units.M # summary molar concentration
const c̄ = 55.508AugmentedPoissonBoltzmann.Units.M # summary molar concentration
const z = [-1, 1]
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * JuliaMPBSolver.Units.M # bulk concentrations
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * AugmentedPoissonBoltzmann.Units.M # bulk concentrations

# Parameters
user_parameters = JuliaMPBSolver.Parameters.UserParameters(
273.15 + 25 * JuliaMPBSolver.Units.K,
user_parameters = AugmentedPoissonBoltzmann.Parameters.UserParameters(
273.15 + 25 * AugmentedPoissonBoltzmann.Units.K,
78.49 - 1,
0.0,
0.0,
Expand All @@ -31,22 +31,22 @@ user_parameters = JuliaMPBSolver.Parameters.UserParameters(
true,
false,
true,
1 * JuliaMPBSolver.Units.nm,
1 * AugmentedPoissonBoltzmann.Units.nm,
)

computed_parameters =
JuliaMPBSolver.Parameters.ComputedParameters(user_parameters)
AugmentedPoissonBoltzmann.Parameters.ComputedParameters(user_parameters)

grid_parameters = JuliaMPBSolver.Grid.GeometricGrid(
domain_size = 10.0 * JuliaMPBSolver.Units.nm,
grid_parameters = AugmentedPoissonBoltzmann.Grid.GeometricGrid(
domain_size = 10.0 * AugmentedPoissonBoltzmann.Units.nm,
refinement = 4,
hmin = 1.0e-1 * JuliaMPBSolver.Units.nm,
hmax = 1.0 * JuliaMPBSolver.Units.nm,
hmin = 1.0e-1 * AugmentedPoissonBoltzmann.Units.nm,
hmax = 1.0 * AugmentedPoissonBoltzmann.Units.nm,
use_offset = false,
)

solution, X, nv, ε_r =
JuliaMPBSolver.Equations.create_and_run_full_cell_problem(
AugmentedPoissonBoltzmann.Equations.create_and_run_full_cell_problem(
grid_parameters,
user_parameters,
computed_parameters,
Expand Down
26 changes: 13 additions & 13 deletions scripts/simplecell.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ using LinearAlgebra
using Interpolations
using VoronoiFVM
using PythonPlot
using JuliaMPBSolver
using AugmentedPoissonBoltzmann
using JLD2

const nel = 20.0 * JuliaMPBSolver.Units.el_surface_density # number of electrons/nm^2 at interfaces
const nel = 20.0 * AugmentedPoissonBoltzmann.Units.el_surface_density # number of electrons/nm^2 at interfaces
const M_bulk = 1 # (bulk) molarity at center of domain
const E0 = 10JuliaMPBSolver.Units.V / JuliaMPBSolver.Units.nm # decrement parameter
const E0 = 10AugmentedPoissonBoltzmann.Units.V / AugmentedPoissonBoltzmann.Units.nm # decrement parameter
const a = 5.0 / E0^2 # decrement parameter in χ(E)
const c̄ = 55.508JuliaMPBSolver.Units.M # summary molar concentration
const c̄ = 55.508AugmentedPoissonBoltzmann.Units.M # summary molar concentration
const z = [-1, 1]
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * JuliaMPBSolver.Units.M # bulk concentrations
const c_bulk = [M_bulk / abs(z[1]), M_bulk / abs(z[2])] * AugmentedPoissonBoltzmann.Units.M # bulk concentrations

# Parameters
user_parameters = JuliaMPBSolver.Parameters.UserParameters(
273.15 + 25 * JuliaMPBSolver.Units.K,
user_parameters = AugmentedPoissonBoltzmann.Parameters.UserParameters(
273.15 + 25 * AugmentedPoissonBoltzmann.Units.K,
78.49 - 1,
0.0,
0.0,
Expand All @@ -35,19 +35,19 @@ user_parameters = JuliaMPBSolver.Parameters.UserParameters(
)

computed_parameters =
JuliaMPBSolver.Parameters.ComputedParameters(user_parameters)
AugmentedPoissonBoltzmann.Parameters.ComputedParameters(user_parameters)

# Grid generation
grid_parameters = JuliaMPBSolver.Grid.GeometricGrid(
domain_size = 10.0 * JuliaMPBSolver.Units.nm,
grid_parameters = AugmentedPoissonBoltzmann.Grid.GeometricGrid(
domain_size = 10.0 * AugmentedPoissonBoltzmann.Units.nm,
refinement = 4,
hmin = 1.0e-1 * JuliaMPBSolver.Units.nm,
hmax = 1.0 * JuliaMPBSolver.Units.nm,
hmin = 1.0e-1 * AugmentedPoissonBoltzmann.Units.nm,
hmax = 1.0 * AugmentedPoissonBoltzmann.Units.nm,
use_offset = false,
)

solution, X, nv, ε_r =
JuliaMPBSolver.Equations.create_and_run_full_cell_problem(
AugmentedPoissonBoltzmann.Equations.create_and_run_full_cell_problem(
grid_parameters,
user_parameters,
computed_parameters,
Expand Down
2 changes: 1 addition & 1 deletion src/PoissonBoltzmannIPAM2025.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ using LessUnitful
using ExtendableGrids
using VoronoiFVM
using Test
using JuliaMPBSolver.ICMPBP: ICMPBP, SurfaceChargedSymmetricCell, AbstractHalfCell, AbstractSymmetricCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
using AugmentedPoissonBoltzmann.ICMPBP: ICMPBP, SurfaceChargedSymmetricCell, AbstractHalfCell, AbstractSymmetricCell, set_molarity!, calc_cmol, calc_c0mol, calc_χ, get_E, get_φ, get_p, get_c0,
set_κ!, set_q!, set_φ!, pramp

resultsdir(args...) = projectdir("results", args...)
Expand Down
4 changes: 1 addition & 3 deletions test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Pkg
using JuliaMPBSolver
using AugmentedPoissonBoltzmann
using ExampleJuggler
using Test
using Markdown
Expand Down Expand Up @@ -42,5 +42,3 @@ end
end

end

Pkg.test("JuliaMPBSolver")
Loading