From 87c8cb081e76102c1604bc51a26bd3fa37437363 Mon Sep 17 00:00:00 2001 From: Jan H <Jan.Habscheid@web.de> Date: Sun, 17 Nov 2024 14:58:26 +0100 Subject: [PATCH] Package structure 1, now correct commit --- BscElectrolyteModels.egg-info/SOURCES.txt | 23 ---- BscElectrolyteModels.egg-info/top_level.txt | 1 - .../PKG-INFO | 12 +- FENICSxDGM.egg-info/SOURCES.txt | 23 ++++ .../dependency_links.txt | 0 .../entry_points.txt | 0 .../requires.txt | 6 +- FENICSxDGM.egg-info/top_level.txt | 1 + .../zip-safe | 0 build/lib/Bsc-ElectrolyteModels/__init__.py | 0 .../ElectrolyticDiode.py | 0 .../Eq02.py | 0 .../Eq04.py | 0 .../EqN.py | 0 .../Helper_DoubleLayerCapacity.py | 0 build/lib/FENICSxDGM/__init__.py | 5 + ...ny.whl => FENICSxDGM-1.0-py3-none-any.whl} | Bin 35361 -> 35203 bytes dist/fenicsxdgm-1.0.linux-x86_64.tar.gz | Bin 0 -> 4097 bytes dist/fenicsxdgm-1.0.tar.gz | Bin 0 -> 31833 bytes setup.cfg | 10 +- setup.py | 13 +- src/FENICSxDGM.egg-info/PKG-INFO | 117 ++++++++++++++++++ src/FENICSxDGM.egg-info/SOURCES.txt | 23 ++++ src/FENICSxDGM.egg-info/dependency_links.txt | 1 + src/FENICSxDGM.egg-info/entry_points.txt | 2 + src/FENICSxDGM.egg-info/requires.txt | 23 ++++ src/FENICSxDGM.egg-info/top_level.txt | 1 + src/FENICSxDGM.egg-info/zip-safe | 1 + src/__init__.py | 5 + src/__pycache__/__init__.cpython-312.pyc | Bin 158 -> 147 bytes test_install.ipynb | 84 +++++++++++++ 31 files changed, 308 insertions(+), 43 deletions(-) delete mode 100644 BscElectrolyteModels.egg-info/SOURCES.txt delete mode 100644 BscElectrolyteModels.egg-info/top_level.txt rename {BscElectrolyteModels.egg-info => FENICSxDGM.egg-info}/PKG-INFO (94%) create mode 100644 FENICSxDGM.egg-info/SOURCES.txt rename {BscElectrolyteModels.egg-info => FENICSxDGM.egg-info}/dependency_links.txt (100%) rename {BscElectrolyteModels.egg-info => FENICSxDGM.egg-info}/entry_points.txt (100%) rename {BscElectrolyteModels.egg-info => FENICSxDGM.egg-info}/requires.txt (72%) create mode 100644 FENICSxDGM.egg-info/top_level.txt rename {BscElectrolyteModels.egg-info => FENICSxDGM.egg-info}/zip-safe (100%) delete mode 100644 build/lib/Bsc-ElectrolyteModels/__init__.py rename build/lib/{Bsc-ElectrolyteModels => FENICSxDGM}/ElectrolyticDiode.py (100%) rename build/lib/{Bsc-ElectrolyteModels => FENICSxDGM}/Eq02.py (100%) rename build/lib/{Bsc-ElectrolyteModels => FENICSxDGM}/Eq04.py (100%) rename build/lib/{Bsc-ElectrolyteModels => FENICSxDGM}/EqN.py (100%) rename build/lib/{Bsc-ElectrolyteModels => FENICSxDGM}/Helper_DoubleLayerCapacity.py (100%) create mode 100644 build/lib/FENICSxDGM/__init__.py rename dist/{BscElectrolyteModels-1.0-py3-none-any.whl => FENICSxDGM-1.0-py3-none-any.whl} (77%) create mode 100644 dist/fenicsxdgm-1.0.linux-x86_64.tar.gz create mode 100644 dist/fenicsxdgm-1.0.tar.gz create mode 100644 src/FENICSxDGM.egg-info/PKG-INFO create mode 100644 src/FENICSxDGM.egg-info/SOURCES.txt create mode 100644 src/FENICSxDGM.egg-info/dependency_links.txt create mode 100644 src/FENICSxDGM.egg-info/entry_points.txt create mode 100644 src/FENICSxDGM.egg-info/requires.txt create mode 100644 src/FENICSxDGM.egg-info/top_level.txt create mode 100644 src/FENICSxDGM.egg-info/zip-safe create mode 100644 test_install.ipynb diff --git a/BscElectrolyteModels.egg-info/SOURCES.txt b/BscElectrolyteModels.egg-info/SOURCES.txt deleted file mode 100644 index ec989ab..0000000 --- a/BscElectrolyteModels.egg-info/SOURCES.txt +++ /dev/null @@ -1,23 +0,0 @@ -LICENSE -README.md -pyproject.toml -setup.cfg -setup.py -BscElectrolyteModels.egg-info/PKG-INFO -BscElectrolyteModels.egg-info/SOURCES.txt -BscElectrolyteModels.egg-info/dependency_links.txt -BscElectrolyteModels.egg-info/entry_points.txt -BscElectrolyteModels.egg-info/requires.txt -BscElectrolyteModels.egg-info/top_level.txt -BscElectrolyteModels.egg-info/zip-safe -src/ElectrolyticDiode.py -src/Eq02.py -src/Eq04.py -src/EqN.py -src/Helper_DoubleLayerCapacity.py -src/__init__.py -tests/test_ElectrolyticDiode.py -tests/test_Eq02.py -tests/test_Eq04.py -tests/test_EqN.py -tests/test_Helper_DoubleLayerCapacity.py \ No newline at end of file diff --git a/BscElectrolyteModels.egg-info/top_level.txt b/BscElectrolyteModels.egg-info/top_level.txt deleted file mode 100644 index eac2d36..0000000 --- a/BscElectrolyteModels.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -Bsc-ElectrolyteModels diff --git a/BscElectrolyteModels.egg-info/PKG-INFO b/FENICSxDGM.egg-info/PKG-INFO similarity index 94% rename from BscElectrolyteModels.egg-info/PKG-INFO rename to FENICSxDGM.egg-info/PKG-INFO index 4600c3c..7e72ec7 100644 --- a/BscElectrolyteModels.egg-info/PKG-INFO +++ b/FENICSxDGM.egg-info/PKG-INFO @@ -1,5 +1,5 @@ Metadata-Version: 2.1 -Name: BscElectrolyteModels +Name: FENICSxDGM Version: 1.0 Summary: A description is yet to follow Home-page: https://git.rwth-aachen.de/JanHab/Bsc-ElectrolyteModels @@ -9,7 +9,7 @@ License: GNU General Public License v3.0 or later Keywords: fenics-project,Battery Simulation,finite element method Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) Classifier: Programming Language :: Python :: 3 -Requires-Python: ==3.12.3 +Requires-Python: >=3.12.3 Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: pyvista==0.43.10 @@ -27,9 +27,9 @@ Requires-Dist: sphinx_rtd_theme==3.0.1; extra == "docs" Provides-Extra: build Requires-Dist: build>=0.7.0; extra == "build" Provides-Extra: dev -Requires-Dist: BScElectrolytemodels[tests]; extra == "dev" -Requires-Dist: BScElectrolytemodels[docs]; extra == "dev" -Requires-Dist: BScElectrolytemodels[build]; extra == "dev" +Requires-Dist: FENICSxDGM[tests]; extra == "dev" +Requires-Dist: FENICSxDGM[docs]; extra == "dev" +Requires-Dist: FENICSxDGM[build]; extra == "dev" # Reproducibility Repository for Numerical Treatment of a Thermodynamically Consistent Electrolyte Model (B.Sc. Thesis - Jan Habscheid) @@ -60,7 +60,7 @@ All the calculations were performed on a Linux machine. According to the documen ``` conda create --name fenicsx-env python=3.12.3 -y conda activate fenicsx-env -conda install -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 matplotlib=3.8.4 numpy=1.26.4 scipy=1.14.0 pytest==8.3.3 -y +conda install -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 matplotlib=3.8.4 numpy=1.26.4 scipy=1.14.0 pytest==8.3.3 -y ``` ### Alternative installation diff --git a/FENICSxDGM.egg-info/SOURCES.txt b/FENICSxDGM.egg-info/SOURCES.txt new file mode 100644 index 0000000..800bc67 --- /dev/null +++ b/FENICSxDGM.egg-info/SOURCES.txt @@ -0,0 +1,23 @@ +LICENSE +README.md +pyproject.toml +setup.cfg +setup.py +FENICSxDGM.egg-info/PKG-INFO +FENICSxDGM.egg-info/SOURCES.txt +FENICSxDGM.egg-info/dependency_links.txt +FENICSxDGM.egg-info/entry_points.txt +FENICSxDGM.egg-info/requires.txt +FENICSxDGM.egg-info/top_level.txt +FENICSxDGM.egg-info/zip-safe +src/ElectrolyticDiode.py +src/Eq02.py +src/Eq04.py +src/EqN.py +src/Helper_DoubleLayerCapacity.py +src/__init__.py +tests/test_ElectrolyticDiode.py +tests/test_Eq02.py +tests/test_Eq04.py +tests/test_EqN.py +tests/test_Helper_DoubleLayerCapacity.py \ No newline at end of file diff --git a/BscElectrolyteModels.egg-info/dependency_links.txt b/FENICSxDGM.egg-info/dependency_links.txt similarity index 100% rename from BscElectrolyteModels.egg-info/dependency_links.txt rename to FENICSxDGM.egg-info/dependency_links.txt diff --git a/BscElectrolyteModels.egg-info/entry_points.txt b/FENICSxDGM.egg-info/entry_points.txt similarity index 100% rename from BscElectrolyteModels.egg-info/entry_points.txt rename to FENICSxDGM.egg-info/entry_points.txt diff --git a/BscElectrolyteModels.egg-info/requires.txt b/FENICSxDGM.egg-info/requires.txt similarity index 72% rename from BscElectrolyteModels.egg-info/requires.txt rename to FENICSxDGM.egg-info/requires.txt index f08ddad..ef44023 100644 --- a/BscElectrolyteModels.egg-info/requires.txt +++ b/FENICSxDGM.egg-info/requires.txt @@ -6,9 +6,9 @@ scipy==1.14.0 build>=0.7.0 [dev] -BScElectrolytemodels[tests] -BScElectrolytemodels[docs] -BScElectrolytemodels[build] +FENICSxDGM[tests] +FENICSxDGM[docs] +FENICSxDGM[build] [docs] sphinx==7.3.7 diff --git a/FENICSxDGM.egg-info/top_level.txt b/FENICSxDGM.egg-info/top_level.txt new file mode 100644 index 0000000..a0ebb6e --- /dev/null +++ b/FENICSxDGM.egg-info/top_level.txt @@ -0,0 +1 @@ +FENICSxDGM diff --git a/BscElectrolyteModels.egg-info/zip-safe b/FENICSxDGM.egg-info/zip-safe similarity index 100% rename from BscElectrolyteModels.egg-info/zip-safe rename to FENICSxDGM.egg-info/zip-safe diff --git a/build/lib/Bsc-ElectrolyteModels/__init__.py b/build/lib/Bsc-ElectrolyteModels/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/build/lib/Bsc-ElectrolyteModels/ElectrolyticDiode.py b/build/lib/FENICSxDGM/ElectrolyticDiode.py similarity index 100% rename from build/lib/Bsc-ElectrolyteModels/ElectrolyticDiode.py rename to build/lib/FENICSxDGM/ElectrolyticDiode.py diff --git a/build/lib/Bsc-ElectrolyteModels/Eq02.py b/build/lib/FENICSxDGM/Eq02.py similarity index 100% rename from build/lib/Bsc-ElectrolyteModels/Eq02.py rename to build/lib/FENICSxDGM/Eq02.py diff --git a/build/lib/Bsc-ElectrolyteModels/Eq04.py b/build/lib/FENICSxDGM/Eq04.py similarity index 100% rename from build/lib/Bsc-ElectrolyteModels/Eq04.py rename to build/lib/FENICSxDGM/Eq04.py diff --git a/build/lib/Bsc-ElectrolyteModels/EqN.py b/build/lib/FENICSxDGM/EqN.py similarity index 100% rename from build/lib/Bsc-ElectrolyteModels/EqN.py rename to build/lib/FENICSxDGM/EqN.py diff --git a/build/lib/Bsc-ElectrolyteModels/Helper_DoubleLayerCapacity.py b/build/lib/FENICSxDGM/Helper_DoubleLayerCapacity.py similarity index 100% rename from build/lib/Bsc-ElectrolyteModels/Helper_DoubleLayerCapacity.py rename to build/lib/FENICSxDGM/Helper_DoubleLayerCapacity.py diff --git a/build/lib/FENICSxDGM/__init__.py b/build/lib/FENICSxDGM/__init__.py new file mode 100644 index 0000000..18742b0 --- /dev/null +++ b/build/lib/FENICSxDGM/__init__.py @@ -0,0 +1,5 @@ +from .ElectrolyticDiode import ElectrolyticDiode +from .Eq02 import solve_System_2eq, create_refined_mesh +from .Eq04 import solve_System_4eq +from .EqN import solve_System_Neq +from .Helper_DoubleLayerCapacity import * \ No newline at end of file diff --git a/dist/BscElectrolyteModels-1.0-py3-none-any.whl b/dist/FENICSxDGM-1.0-py3-none-any.whl similarity index 77% rename from dist/BscElectrolyteModels-1.0-py3-none-any.whl rename to dist/FENICSxDGM-1.0-py3-none-any.whl index fd17b699cfa34864d347290b3d90d59d0c1e2287..de6fbfd32a614c32ba7a13917281e11d70c97f32 100644 GIT binary patch delta 4656 zcmZ{n2{hFE`^RVO>sT5Svewx5C6T3&ER(UzWStN~jC~X{XtJebY*$HS=bG%YlPn1n z*_Z6QRAdSH&vno5xZL}nbDlHje82D4^E{vL_j{i6ywl^!!ti9mhA?spFaQ9c0g&HC zAqdmyc`sN2fLL_^fR}Xjx)xkl(<I=Uwm$wFj;&ZHo0aD;S-+phjafzj;F351KvMrh zR(kf#7UPjd35{jj0096$<^H8n;HP9d(s<W13yqL8I4J;t<zyZQ=@rnCCYL6hvW6M} zm?3F|Pig|L%ur*P-BAd)Z$%H#q<e#;fSk}s+1k3?bMdjYmGnfrcdFAhOEX`es>^A= zbuDv~%G{HGJOIm|jggL3>~IjB-IC1oMGmgtw^96KMxZ&*(~WbCIUtl)q%?PzUipyw zL!RZ0xgDx;OEc)QA*hwMFqA^A_J*{PM$qs2;Efd{bJ=@QD7Kp|4Cx^Y+AUoQ?ZbCg zLMt4{Fo5HS%t`7tI<>vZjC2}UBmls7qTA9IZC@##zcg2%nCA(!q*IfQ!+%19NBVPM zM!iNAS%VgC+9iZTC7+eJEy#|1_^MbBohawNxq5@g*yLR7Lnsv52)sJ{ad6!Q@VN_K zl7#j|K(Sx@#&gb%*D^mz8vDL^30e60Zu3?N%B#aw2ALz2<fJ|5-{v71H@B=fs$Vo( zJ)iyjjix!BCHt^qp^OVch|4=g-`8vjGdlZck=DpJj%!`1uB#66DY{92SY9$vlA70W z%wj(XE2vcAt*g)qG>&ZMu=a&pEgG9DD7lSWJ*Ryq_{bU(?x5tbP}_||tx`QT&*iU~ z%x7b(`PABex5!K-IVz>|18+}a8)lqB+QBR~@h#ulMBrNRpKqU^#l5kd#Cs!X95Kkr z=bcQeF^0|GqO8l&0`!o<q1#tR9Y?OloDtm3S-e*+vi49P7l+e7_qw5Rb;|YYn~7pq zMCB0OQ&5hvu26FBHHmopa;(0imnq71&XjH^Yf$EoH~xc8t8YTeaKcNw;SodlOE(vy z4|2{m7d?K-VKZplHHp0F%5pi*r(YdI$gth(xc^;SEar_%fD#gOzdS8wyX0UtKnu62 zBSzh_q(9hr2|o6gg?*#^b7j6iB2ZMUFg1-k)ygKVaFz$QB3QTt+36WBxLGp{1h3xn zFmxaHvEXsK-%}d4W@g!5by*F7L=I_$<}Y=m$~|cQVQxOR#c{|wzj{ZCnb3fdRlm<4 zrn)8ebX`~E{cX!uQF}EdWa>eXCJ3bRyD8H6?BO`@=}O3%ZLG#ORi=yHd0#!}wJOr; zhT=okwm%P~`nEgT<C+8&eLJ<8c<A(cH7;2frILpWzw9ZgJKV`dIYyNgQu>{bDfvz= zRM}-V5^1$U7(L%m#z+^f9?`aqncQ~z3fn-{8W;q|;H9SO4j6TV4`-n0mI->O{V+r} zDZz(Z)m1F@`V#{qkmTqsb_AcY$K%Ovr>d8-aILP-)vI8F%iCr4-VP0^H4Cw49|v`| zW_|sv9en8STT~-N(*!$m8Xi=~#pGtPu8yDvN4})(S8);a=4cL0ij5JNy?m7qXr(g{ z5sCiX$P&4lWYvQPf$iQ^ljfkp=*0c$f+@X<LZ?4cVMYlG_{*<2Sk4-Y7Eij^l;39T zJX<uc(z7TyB02dbgr%%O*|K9tFkaF(yGwle-Lf--?0Oy7cJ$1_0(H+;FuHy&${2?E zs$5f7bg4IW<HdW|Eum~lOmh)fek=R;*w1fQ6%Hd;`ku{{PHtOdV8~ua;l{o|N7W8_ zXVRYh&|3&We80O>!_tRQvVs!kLz4i>DuLkPm(WYzo)d+v1&!~+N)ywaC)2^7pCl(o zG&g8LDicZzo0vT5ld?>M`GqpsWc$!l_$y+Xc#}Lm0zb{2v0?)zOsxIB*Z!*A=I@!V zQ6CTgb-wX~xw+rb)GnKo@bzTvRq0A$EgUS4Xs81;5t{(|Aq^kfF*Zg{INxQy!~Kqh z{i@5n7%e?$!<}3FB?rH0LpeCcFw4<GqyNlx^=U9&c`*mwV};LZEp>)*Qbvtl0z^&3 z<`Xak&X_O`1`T>*aAt^T1_;gNPWhCmTfv%{=FL?=KNt`ioy~vOZKQf2f+42cG?ro0 zFC~dWSOrCK{%(F5qj7y%?kwa_(U}VM#Rz4rQQrzzaK1f^vgOqcO>G@+rbZy)W_3oi zb%m$8)_OpMvsvV-FF+%g#-Qv8Ptv^Vqj@D;9d}_aPKi-WwN83~4f;I&y+(w+Zb`$l zyFYA1a!im9+H@p@<SqTgJ{6TeVQrZXl(Qj|g7JD^J>$<PAg9Y2xYxo>cuuGGd~3B! zS3P~jN_0XltiTRh0R~!M*QLb=+3I#zQD_<B38F<&gpUimvNq87CWKFm^G%R3Yga8` zZCpakODRXp)a_g6!XzB%=$M~`FI^BUeiZ&Thh`G}h%oz1u1RC_i|tfw{<15!t!L`d z*K;p4aw>XjEV8yQ*V-|>g{WzxU*%h|<XCR5DYS5w4chQo0cDz|+T%6pTuh8stV=9D z-EW6<CFUmC^y+28cEMts=Mz50xUDdgKZ=+Rl30(3#7uCmTjQLcMVcFzi4i|i)_4~~ zLxnY43k2@dCR*6ksAgZZR23u&lviKO%{Mm~m-xQFc};gS8^)bgrWFmvMfD9(RB{@M zVxLd9UZv1&iYk@~9#0`Wf^o_@@Cur!OlI}>pMR_y5)3oZtjy}awJEbFKZ3h0vuRZM zXXH<;8)huin8`MuQdr7~Xah>JS>ygxQ=A=VSfsL{Iq$Rzo$Zf%nRPG7Gl04XTsuXX zzKy%vA>Sw^V10*)qQ^GeiAbIixTEV8@z5$-NJ)?VM~3O-4_O^91}(SHGogTtjM<58 z6&NV}qh(9MZN!6n=?NE`u`e!GytC$-GcWg#wZ(kQV{r(lG?q8D=61JQnR#>r0Ls=L zu``O7_QgF06RFX$8(#w>(2sjld)cmjO4}n_$OAJHTR6_?`AbTRw~Cjjq0}<mmMq09 z8QGHfnD)01$TFx@9CMdF$@T(*>K9V65OT?b{ax?rRBUg|bK5uaS~AQihXxq#7Lfr9 z#3;fW#Mh>QV-LO5wFkCZvlbl^Ax-Z@JiC9zxa5h&k0>+fNXfkT93wuTT)HLwqXk*T ziyJN!wozXKy3Z8lm1$lC#3l`^Cr8hia<xt>QndY%#f!iuJ!X*5oFkwnA*!wInM?|s zH^|xfW6Z%Vg#`t`d$<qV=5_j;mDS^en2J$fkGL;^PvOIfL^i%2ETb?D>nBR`rklvn zmfpiHTAi~F$xD?sDdt+g2oJv)!V3`6k{~ZN^g$xCS>gan<V9F|EPsymBI5wfjae%J zgW8mQ5LZU+zMYIWw1A2k<%Sk$cyE=$Y3(8ZXlQ<ktF<GhHhO!MZ=%!hs_n2LhOA^( zyl_Z?$z$kMn#xk#6^(Ir=9RrC0XoPt{u$1x0ep2GXL#P3W*7`>yx6S?((jY;f6ypi zt;QlxtZX6jzMn3hs3KDK_{sJ^*x2VN8C9|X0ivQf16Vqpcd9lJ7dgs344kF71Ai&O zs2bb>oYyW>&WVx1=L!XMm;wVLF%^Q>l;zb}9A;Tnnc(k+fwyS}L4_hz^#aWGNf(fE z%X^0LdwOMP`w^sFBq6@Oxp}G%ABI(ncqX{{_G9I$vhq~TTsOSrVte?)dT>kT>p_VR zveRr&d0+dF?ZBhp)C8udo0PC67*fFg`xT9fGN5u%G(G%flL@jo^$~*~e6jxxlin}Z zmCNFryf7s%_q~F}AnBXe4dj@XCXz<3Fd47$T-)$Cwf3bf@mi5qIZIOToLuQ-LckdM z9v%IzPmC}L(e95urN+{q<tDuhx?mD|;vG^Y#=>w35eearo*of%qVy#q`G>n+lyeJ7 zi-C|8s(47&yn`S@Bp#fQ?S+G8TZ({9IalWA7P6KF=gquOz*GBYKBjN}GN}PgQi%Mo z5z4=}{D}x&{Ev`pM?0u$>a#=Ak`JIKh2Z~mf6J~!a$WTH{<+};D)K~a&yk&~fTtRi zB_|O;Qk>deQzOsfM?)Ep3dA}S-($%D05OVxxeewpHcU`oo7ZbYW=djR1EtC=bu=PY zj*gFi$Pn6uXSOTZ`So3VwYjJSGdVUo-XFEPm{FsXf1q9T!)GyNS*g)9R6nty!XQ)1 zKJ?D-fmg(sMIMuzenY6iI7w@fI=jGI?~_N)t)$Q<Rd07AwfGguEta*08$H;Ii@6kp zSOb(@b}$J&5K;A<=5Ed=+BByI>H!f?rkdqq*TmrKo-bP7dO*sHA6FG@#rrm-bh2|> z8PsxIT`P~sTJUykrwt!0?K72l-%bOMWB=XnrC{nn?FWFwedyQrkzo=xNiG7N?-RC` z2M^mDFBDbq4sGm3P;?V5^*Rd_*3aj0;6*E^oiG!TsB<}<0ryxxIR3B~H+Af%aDV39 zDviF%W<k~l(GcB_>&3NAzpiSl7h>K_YI;pG;2Dt-bCZ@~3eK}O;^E%m3LD<Z?Rx#9 zXz4>(dhRbp>~BH4+pjKA)UQQP6NX%=_JFvb<-7Jv8LL%4oO&$2MshJ)xq=fw@}bmO z)65t+({6lsTyH}M<0Z$3K0fXbGf{N=;-e*Pu-Z1vgsaH9t^`je^Tb@VNg6g`OgK3F zvd~#>kDh(;CTxpTB~HtEtCOm}qh7Fcfckj_b<Znb%xsJJL|VFal+_ziH<l-oG4TF! zBfBNq^PS&l!Ve$M|0Jrut_b-_YyfqBTOwc>qj6Ic;`8*2#O`u-yGU-QY@=y40Kdl5 z3;lJ#ellb*qK#N)lwg1^f1j5q+==a|M(e@Es|pS*_LO^3=J-vJX;Sxt@o&4Fw!aVG z_3Y4DmOUlxhIb16nVpSGc(rZsk^8f-eR~SjTF&TyTa*H;LC(MOv2^4@!y9eH7`Lhb z1$vj-5C$XzlmGt?ne>Gp{mMfA`a9v5`7!_HmH(Cl0A(S=B<p+(NNJ&@Wl1jebiva; z`j}tiJI%|V<S|E{{<O(HPQWaEDgpc?e}td*-^Vz|l@qv*qnoFrm+dtV-`j4EH;`yY zFT8U2+5hzC$2mB)PvrQATmR>C_%GLdoTKeT4hb1aX-NkcZyyPldv`pf@blqk#Q)1t zAM>~T|Jeh{U!PU{SMgJ``xuraz4zmnh$l^Q{EG;Nql%~J>@n1O5}Jq*I|5D*++#pH v^hA{_k-|s7={b80B%cIQBQG2Qrzh?)Fme(g&0joy6a(D=X^bb~{*wJ4RMW>Z delta 4837 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 diff --git a/dist/fenicsxdgm-1.0.linux-x86_64.tar.gz b/dist/fenicsxdgm-1.0.linux-x86_64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e3f717f7cefacf05580c1564c869962d5fdfbb6 GIT binary patch literal 4097 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 literal 0 HcmV?d00001 diff --git a/dist/fenicsxdgm-1.0.tar.gz b/dist/fenicsxdgm-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9e2fb5d7abd0441e5741e6b79817dc81ccab1327 GIT binary patch literal 31833 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 T|D2o@!Emi}1NIOkP!RtGD}1Zw literal 0 HcmV?d00001 diff --git a/setup.cfg b/setup.cfg index d38a8f8..4a81424 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [metadata] -name = BScElectrolytemodels +name = FENICSxDGM version = attr: 1.0 author = Jan Habscheid, Manuel Torrilhon, Lambert Theisen author_email = Jan.Habscheid@rwth-aachen.de, lambert.theisen@rwth-aachen.de, mt@mathcces.rwth-aachen.de @@ -18,7 +18,7 @@ package_dir= =src packages = find: zip_safe = True -python_requires == 3.12.3 +python_requires >= 3.12.3 include_package_data = True install_requires = pyvista == 0.43.10 @@ -42,6 +42,6 @@ docs = sphinx_rtd_theme == 3.0.1 build = build >= 0.7.0 dev = - BScElectrolytemodels[tests] - BScElectrolytemodels[docs] - BScElectrolytemodels[build] \ No newline at end of file + FENICSxDGM[tests] + FENICSxDGM[docs] + FENICSxDGM[build] \ No newline at end of file diff --git a/setup.py b/setup.py index 5d16151..8ebf6ca 100644 --- a/setup.py +++ b/setup.py @@ -1,16 +1,19 @@ from setuptools import setup, find_packages setup( - name="BscElectrolyteModels", + name="FENICSxDGM", version="1.0", description="A description is yet to follow", url="https://git.rwth-aachen.de/JanHab/Bsc-ElectrolyteModels", author="Jan Habscheid, Lambert Theisen, Manuel Torrilhon", author_email="Jan.Habscheid@rwth-aachen.de, lambert.theisen@rwth-aachen.de, mt@mathcces.rwth-aachen.de", - packages=["Bsc-ElectrolyteModels"], - package_dir={"Bsc-ElectrolyteModels":"src"}, - package_data={"Bsc-ElectrolyteModels": ["tests/*"]}, - python_requires="==3.12.3", + packages=["FENICSxDGM"], + # packages=find_packages("src"), + package_dir={"FENICSxDGM":"src"}, + # package_dir={"": "src"}, + package_data={"FENICSxDGM": ["tests/*"]}, + # package_data={"": ["tests/*"]}, + python_requires=">=3.12.3", install_requires=[ "pyvista == 0.43.10", "numpy == 1.26.4", diff --git a/src/FENICSxDGM.egg-info/PKG-INFO b/src/FENICSxDGM.egg-info/PKG-INFO new file mode 100644 index 0000000..7e72ec7 --- /dev/null +++ b/src/FENICSxDGM.egg-info/PKG-INFO @@ -0,0 +1,117 @@ +Metadata-Version: 2.1 +Name: FENICSxDGM +Version: 1.0 +Summary: A description is yet to follow +Home-page: https://git.rwth-aachen.de/JanHab/Bsc-ElectrolyteModels +Author: Jan Habscheid, Lambert Theisen, Manuel Torrilhon +Author-email: Jan.Habscheid@rwth-aachen.de, lambert.theisen@rwth-aachen.de, mt@mathcces.rwth-aachen.de +License: GNU General Public License v3.0 or later +Keywords: fenics-project,Battery Simulation,finite element method +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Classifier: Programming Language :: Python :: 3 +Requires-Python: >=3.12.3 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: pyvista==0.43.10 +Requires-Dist: numpy==1.26.4 +Requires-Dist: scipy==1.14.0 +Provides-Extra: notebook +Requires-Dist: jupyter>=1.0.0; extra == "notebook" +Provides-Extra: tests +Requires-Dist: pytest==8.3.3; extra == "tests" +Provides-Extra: docs +Requires-Dist: sphinx==7.3.7; extra == "docs" +Requires-Dist: myst-parser==4.0.0; extra == "docs" +Requires-Dist: sphinx-copybotton==0.5.2; extra == "docs" +Requires-Dist: sphinx_rtd_theme==3.0.1; extra == "docs" +Provides-Extra: build +Requires-Dist: build>=0.7.0; extra == "build" +Provides-Extra: dev +Requires-Dist: FENICSxDGM[tests]; extra == "dev" +Requires-Dist: FENICSxDGM[docs]; extra == "dev" +Requires-Dist: FENICSxDGM[build]; extra == "dev" + +# Reproducibility Repository for Numerical Treatment of a Thermodynamically Consistent Electrolyte Model (B.Sc. Thesis - Jan Habscheid) + +[](https://git.rwth-aachen.de/Jan.Habscheid/bsc-electrolytemodels/pipelines) +[](https://janhab.pages.rwth-aachen.de/bsc-electrolytemodels/) +[](https://doi.org/10.5281/zenodo.13645296) +[](https://git.rwth-aachen.de/jan.habscheid/bsc-electrolytemodels/-/tags) +[](https://git.rwth-aachen.de/Jan.Habscheid/bsc-electrolytemodels/-/blob/main/LICENSE?ref_type=heads) + +## Thesis + +This repository contains the code to reproduce the results presented in the bachelor thesis: Numerical Treatment of a Thermodynamically Consistent Electrolyte Model +Find the thesis at [https://doi.org/10.18154/RWTH-2024-09837](https://doi.org/10.18154/RWTH-2024-09837) + +### Abstract + +Batteries play a crucial role in the energy transition. The production of green energy depends on external factors. Storing energy in batteries is necessary to access green energy at any time. + +Better optimized batteries are essential for the future. Lifetime, loading time, and energy loss are just some aspects that must be improved to prepare for a greener future. Numerical simulations are crucial to understanding and optimizing batteries' behavior. Those simulations enable researchers to test many different materials without considerable additional expenses to, for example, find the best combination of anions and cations. + +The classical Nernst-Planck model for the ion transport in an electrolyte fails to predict the correct concentration in the boundaries of the electrolyte. This work will present and analyze a thermodynamically consistent electrolyte model with dimensionless units under isothermal conditions. A simplified version of the system for the one-dimensional equilibrium of an ideal mixture and the incompressible limit will be considered. The numerical implementation of the model with the open-source software FEniCSx will be discussed. Furthermore, the influence of different boundary conditions, material parameters, solvation, and compressibility on the electric potential, pressure, and ion concentration will be investigated, and the model will be compared with the classical Nernst-Planck model. Examples of the double layer capacity and electrolytic diode will be considered. + +## Installation + +As a numerical solver, mainly FEniCSx was used and installed via conda. +All the calculations were performed on a Linux machine. According to the documentation, everything should work well on macOS, but this was not tested. FEniCSx offers some beta versions for Windows support, but it is recommended to use WSL2 instead. + +``` +conda create --name fenicsx-env python=3.12.3 -y +conda activate fenicsx-env +conda install -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 matplotlib=3.8.4 numpy=1.26.4 scipy=1.14.0 pytest==8.3.3 -y +``` + +### Alternative installation + +Use the "environment.yml" file to install all necessary environments + +``` +conda env create -f environment.yml +``` + +### macOS installation using Docker + +``` +docker compose build +docker compose run solver +``` + +### Testing + +Use pytest with +``` +python -m pytest +``` + +to verify that everything was installed correctly. + + +## Usage + +Find the visualizations from the thesis and some extra calculations in the "examples" folder. +In the subfolder "ReproducableCode" is the code, to execute the calculations with some first visualizations. +The subfolder "Data" stores the data for all the simulations in a *.npz file, which can be read with numpy `np.load(file.npz)`. +"Visualizations" creates the necessary figures from the thesis and stores them in *.svg format in "Figures". + +In "src" there are the generic FEniCSx implementations, that were used to calculate the examples. + + +## Contact + +**Author** +- Jan Habscheid +- Jan.Habscheid@rwth-aachen.de + +**Supervisor** +- Dr. Lambert Theissen +- ACoM - Applied and Computational Mathematics +- RWTH Aachen University +- theisen@acom.rwth-aachen.de + +**Supervisor** +- Prof. Dr. Manuel Torrilhon +- ACoM - Applied and Computational Mathematics +- RWTH Aachen University +- mt@acom.rwth-aachen.de diff --git a/src/FENICSxDGM.egg-info/SOURCES.txt b/src/FENICSxDGM.egg-info/SOURCES.txt new file mode 100644 index 0000000..d9be7a8 --- /dev/null +++ b/src/FENICSxDGM.egg-info/SOURCES.txt @@ -0,0 +1,23 @@ +LICENSE +README.md +pyproject.toml +setup.cfg +setup.py +src/ElectrolyticDiode.py +src/Eq02.py +src/Eq04.py +src/EqN.py +src/Helper_DoubleLayerCapacity.py +src/__init__.py +src/FENICSxDGM.egg-info/PKG-INFO +src/FENICSxDGM.egg-info/SOURCES.txt +src/FENICSxDGM.egg-info/dependency_links.txt +src/FENICSxDGM.egg-info/entry_points.txt +src/FENICSxDGM.egg-info/requires.txt +src/FENICSxDGM.egg-info/top_level.txt +src/FENICSxDGM.egg-info/zip-safe +tests/test_ElectrolyticDiode.py +tests/test_Eq02.py +tests/test_Eq04.py +tests/test_EqN.py +tests/test_Helper_DoubleLayerCapacity.py \ No newline at end of file diff --git a/src/FENICSxDGM.egg-info/dependency_links.txt b/src/FENICSxDGM.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/FENICSxDGM.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src/FENICSxDGM.egg-info/entry_points.txt b/src/FENICSxDGM.egg-info/entry_points.txt new file mode 100644 index 0000000..7bcc5d3 --- /dev/null +++ b/src/FENICSxDGM.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +my-example-utility = example.example_module:main diff --git a/src/FENICSxDGM.egg-info/requires.txt b/src/FENICSxDGM.egg-info/requires.txt new file mode 100644 index 0000000..ef44023 --- /dev/null +++ b/src/FENICSxDGM.egg-info/requires.txt @@ -0,0 +1,23 @@ +pyvista==0.43.10 +numpy==1.26.4 +scipy==1.14.0 + +[build] +build>=0.7.0 + +[dev] +FENICSxDGM[tests] +FENICSxDGM[docs] +FENICSxDGM[build] + +[docs] +sphinx==7.3.7 +myst-parser==4.0.0 +sphinx-copybotton==0.5.2 +sphinx_rtd_theme==3.0.1 + +[notebook] +jupyter>=1.0.0 + +[tests] +pytest==8.3.3 diff --git a/src/FENICSxDGM.egg-info/top_level.txt b/src/FENICSxDGM.egg-info/top_level.txt new file mode 100644 index 0000000..a0ebb6e --- /dev/null +++ b/src/FENICSxDGM.egg-info/top_level.txt @@ -0,0 +1 @@ +FENICSxDGM diff --git a/src/FENICSxDGM.egg-info/zip-safe b/src/FENICSxDGM.egg-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/FENICSxDGM.egg-info/zip-safe @@ -0,0 +1 @@ + diff --git a/src/__init__.py b/src/__init__.py index e69de29..bcc2039 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -0,0 +1,5 @@ +from .ElectrolyticDiode import ElectrolyticDiode +from .Eq02 import solve_System_2eq +from .Eq04 import solve_System_4eq, create_refined_mesh +from .EqN import solve_System_Neq +from .Helper_DoubleLayerCapacity import * \ No newline at end of file diff --git a/src/__pycache__/__init__.cpython-312.pyc b/src/__pycache__/__init__.cpython-312.pyc index 19664c3690d8a063333fd239f1546b1f8295d536..9c87bd1f102a448ab968c971a61bb8e63da79017 100644 GIT binary patch delta 38 scmbQoIGK_AG%qg~0}xDmV>yxAn9*pWy#$w=tDmQHaD|Jz@5CG<0JjYa6aWAK delta 49 zcmbQtIFFJ0G%qg~0}y<gtTvI`n9+8ky@Y5|ak6e|PHJ*VQGQNkNosC>N@`B=#6%+i DR7ww= diff --git a/test_install.ipynb b/test_install.ipynb new file mode 100644 index 0000000..dac775a --- /dev/null +++ b/test_install.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import FENICSxDGM as DGM" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "phi_left = 5.0\n", + "phi_right = 0.0\n", + "p_right = 0.0\n", + "y_A_R = 1/3\n", + "y_C_R = 1/3\n", + "z_A = -1.0\n", + "z_C = 1.0\n", + "K = 'incompressible'\n", + "Lambda2 = 8.553e-6\n", + "a2 = 7.5412e-4\n", + "number_cells = 1024\n", + "relax_param = .1\n", + "rtol = 1e-4\n", + "max_iter = 500" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'src' has no attribute 'solve_System_2eq'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m y_A, y_C, phi, p, x \u001b[38;5;241m=\u001b[39m \u001b[43mDGM\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msolve_System_2eq\u001b[49m(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param\u001b[38;5;241m=\u001b[39mrelax_param, x0\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m, x1\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, refinement_style\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124muniform\u001b[39m\u001b[38;5;124m'\u001b[39m, return_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVector\u001b[39m\u001b[38;5;124m'\u001b[39m, max_iter\u001b[38;5;241m=\u001b[39mmax_iter, rtol\u001b[38;5;241m=\u001b[39mrtol)\n", + "\u001b[0;31mAttributeError\u001b[0m: module 'src' has no attribute 'solve_System_2eq'" + ] + } + ], + "source": [ + "y_A, y_C, phi, p, x = DGM.solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "fenicsx-env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- GitLab