From be8fc11dd572569e952781a5b999503cbe73a1a7 Mon Sep 17 00:00:00 2001
From: JanHab <Jan.Habscheid@web.de>
Date: Fri, 16 Aug 2024 16:42:19 +0200
Subject: [PATCH] Added Ternary Electrolyte introduction

---
 examples/TernaryElectrolyte.py                | 111 ++++++++++++++++++
 examples/__init__.py                          |   0
 src/__init__.py                               |   0
 src/__pycache__/Eq04.cpython-312.pyc          | Bin 0 -> 17910 bytes
 src/__pycache__/__init__.cpython-312.pyc      | Bin 0 -> 179 bytes
 .../oneD_refined_mesh.cpython-312.pyc         | Bin 2838 -> 2888 bytes
 src/oneD_refined_mesh.py                      |   1 +
 7 files changed, 112 insertions(+)
 create mode 100644 examples/TernaryElectrolyte.py
 create mode 100644 examples/__init__.py
 create mode 100644 src/__init__.py
 create mode 100644 src/__pycache__/Eq04.cpython-312.pyc
 create mode 100644 src/__pycache__/__init__.cpython-312.pyc

diff --git a/examples/TernaryElectrolyte.py b/examples/TernaryElectrolyte.py
new file mode 100644
index 0000000..01a8da5
--- /dev/null
+++ b/examples/TernaryElectrolyte.py
@@ -0,0 +1,111 @@
+'''
+Jan Habscheid
+Jan.Habscheid@rwth-aachen.de
+'''
+
+# import the src file needed to solve the system of equations
+import sys
+import os
+
+# Add the src directory to the sys.path
+src_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'src')
+sys.path.insert(0, src_path)
+
+from Eq04 import solve_System_4eq
+
+# Remove the src directory from sys.path after import
+del sys.path[0]
+
+# Further imports
+import matplotlib.pyplot as plt
+import numpy as np
+
+# Define the parameters and boundary conditions
+phi_left = 4.0
+phi_right = 0.0
+p_right = 0.0
+y_A_L = 1/3
+y_C_L = 1/3
+z_A = -1.0
+z_C = 1.0
+K = 'incompressible'
+Lambda2 = 8.553e-6
+a2 = 7.5412e-4
+number_cells = 1024#*4
+refinement_style = 'log'
+rtol = 1e-8
+
+# solve the system
+y_A, y_C, phi, p, x = solve_System_4eq(phi_left, phi_right, p_right, z_A, z_C, y_A_L, y_C_L, K, Lambda2, a2, number_cells, relax_param=0.05, x0=0, x1=1, refinement_style='hard_log', return_type='Vector', max_iter=1_000, rtol=rtol)
+
+# Fine point, where space charge starts to diverge from zero
+index = 0
+nF = z_C * y_C + z_A * y_A
+for i, nF_ in enumerate(nF):
+    if np.isclose(nF_, 0, atol=1e-3):
+        index = i
+        break
+
+
+
+
+# Visualize the results
+fig, axs = plt.subplots(ncols=2, figsize=(30,10))
+labelsize = 30
+lw = 4
+ax1 = axs[0]
+color = 'tab:blue'
+ax1.set_xlabel('x [-]', fontsize=labelsize)
+ax1.set_ylabel('$\\varphi$  [-]', color=color, fontsize=labelsize)
+ax1.set_xlim(0,0.05)
+ax1.plot(x, phi, color=color, lw=lw, label='$\\varphi$')
+ax1.tick_params(axis='x', labelsize=labelsize)
+ax1.tick_params(axis='y', labelcolor=color, labelsize=labelsize)
+
+# Create a second y-axis
+ax2 = ax1.twinx()
+
+# Plot nF
+color = 'tab:red'
+ax2.set_ylabel('$p$ [-]', color=color, fontsize=labelsize)
+ax2.plot(x, p, color=color, lw=lw, label='$p$')
+ax2.set_xlim(0,0.05)
+ax2.tick_params(axis='y', labelcolor=color, labelsize=labelsize)
+
+# Add grid and save the figure
+ax1.grid()
+ax2.grid()
+
+ax1 = axs[1]
+# Plot y_alpha
+color = 'tab:blue'
+ax1.set_xlabel('x [-]', fontsize=labelsize)
+ax1.set_ylabel('$y_\\alpha$  [-]', color=color, fontsize=labelsize)
+ax1.plot(x, y_A, '--', color='tab:blue', lw=lw, label='$y_A$')
+ax1.plot(x, y_C, '-', color='tab:blue', lw=lw, label='$y_C$')
+ax1.plot(x, 1 - y_A - y_C, ':', color='tab:blue', lw=lw, label='$y_S$')
+ax1.set_xlim(0,0.05)
+ax1.axvline(x[index], color='green', lw=lw, linestyle='--')
+ax1.tick_params(axis='x', labelsize=labelsize)
+ax1.tick_params(axis='y', labelcolor=color, labelsize=labelsize)
+
+# Create a second y-axis
+ax2 = ax1.twinx()
+
+# Plot nF
+color = 'tab:red'
+ax2.set_ylabel('$n^F$ [-]', color=color, fontsize=labelsize)
+ax2.plot(x, z_A * y_A + z_C * y_C, '-.', color='tab:red', lw=lw, label='$n^F$')
+ax2.set_xlim(0,0.05)
+ax2.tick_params(axis='y', labelcolor=color, labelsize=labelsize)
+
+# Add grid and save the figure
+ax1.grid()
+ax2.grid()
+lines_labels = [ax.get_legend_handles_labels() for ax in fig.axes]
+lines, labels = [sum(lol, []) for lol in zip(*lines_labels)]
+
+fig.legend(lines, labels, bbox_to_anchor=(0.73,1.1), ncol=6, fontsize=labelsize)
+fig.tight_layout()
+
+fig.show()
\ No newline at end of file
diff --git a/examples/__init__.py b/examples/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/__pycache__/Eq04.cpython-312.pyc b/src/__pycache__/Eq04.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d115d2ed6ed42485613169199be3432cb7a86dc5
GIT binary patch
literal 17910
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
Fg#b&{2$ui=

literal 0
HcmV?d00001

diff --git a/src/__pycache__/__init__.cpython-312.pyc b/src/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a4c2f1275d9e6807ccc319935c53511bffbf67a2
GIT binary patch
literal 179
zcmX@j%ge>Uz`&4{v_B0*KL!!#_%jOw1H*KNN(N0vzm*I{ObiSRpFwJV1?lJJmFOqy
zhZd(673*gu=4B-6yW}UA=BDPA6zc~R<);@V=H_PRrR%3>mgpxHC+nu>q$ZaX<>yqE
zq~_+Qq~;Xs7Z)Y#$H!;pWtPOp>lIY~;;_lhPbtkwwJTy}U|?WmU|=W)F+MUgGBOr1
IGcYg!04FFfE&u=k

literal 0
HcmV?d00001

diff --git a/src/__pycache__/oneD_refined_mesh.cpython-312.pyc b/src/__pycache__/oneD_refined_mesh.cpython-312.pyc
index 8bd99bacda254a65624f8611c0fba32b9248ffc7..a4daef0bf736fb8e56a7fa8085d94423836c6fb3 100644
GIT binary patch
delta 312
zcmbOxc0!EzG%qg~0|Ns?L(2ZNgo(V8j3E=%&6F8a*m5{?xuUoj8B*9&xl=e&c~Ur2
zxzgBDxLR1Ecq^GSxhIymaj>W6q~@mPm2BKD!N$ll`2w34CmRC;LlG+j1H)u>c0D$B
z5RYSWG<!Uw$mHGZu8irE89AJ}Q!5g43vyD6_4V{7J98K_@@+2X_{CVycZ)qfJ|#an
zKK>SKUTJPYWsxWY1H&!0+=5J#g32Oh5QjY_KPN3SucC+r#N$j#EY7UZD^1G*+j)x_
z!~!|t7ISe)QIR;vdL0G^hLsGTL7ptqW?*3W#bJ}1pHiBWYFA{&z`(%Bz`#&!%D}+z
mVe$hmF=g4i3?d&mR2cbJ2!CKuVdURo45kj4d;#%_KnelXeo&<V

delta 256
zcmX>hHcgE8G%qg~0|NuY_r(2aP7`@089gSdn~Affa;C7Sa;0#ja-^}PaJH~SaaS^F
za!qV-+jvowjgfoub2cwtRt5%!TkNShsky0nC6le#_1M@L7#ND!C+D%pGYU^W$L`7)
zJz0dqd2%v`5hL&BX&k>8>v?Xm$H%ASC&$O%V$CbfEvPIK0hz*<Taal|P+7zb;;^UW
z=cHxkRTQy+c+90~IYnTrn2Sq_io`%x=rAxatYr8Ma(9t70|Ub^4x8Nkl+v73yCPEt
u1_nk328LoI1_p)?%#4hTADNgLSw3?yFbdygm@LoDHd%vPhQ)+|fdK$_=0Oes

diff --git a/src/oneD_refined_mesh.py b/src/oneD_refined_mesh.py
index a335934..d34bca8 100644
--- a/src/oneD_refined_mesh.py
+++ b/src/oneD_refined_mesh.py
@@ -6,6 +6,7 @@ Jan.Habscheid@rwth-aachen.de
 import numpy as np
 from mpi4py import MPI
 from dolfinx import mesh
+from basix.ufl import element
 from ufl import Mesh
 
 
-- 
GitLab