diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..cbbbea7b2a182967a0dcbf28c87837608e2046e6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.enableFiletypes": [ + "!markdown" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 81e65f5705669eec764c741f73d269a9e7c2a1fe..afeb8e7f6868c0cad7355b3e1c4727a5ed6a4c8d 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,19 @@ Find the thesis at: As a numerical solver, mainly FEniCSx was used and installed via conda. ``` -conda create -n fenicsx-env +conda create -n fenicsx-env python=3.12.13 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=2.0.1 scipy=1.14.0 ``` +### Alternative installation + +Use the "environment.yml" file to install all necessary environments + +``` +conda env create -f environment.yml +``` + ## Usage diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..ca883de5d046d3ffdf80828e59397290b68f4a1b --- /dev/null +++ b/environment.yml @@ -0,0 +1,318 @@ +name: fenicsx +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - aiohttp=3.9.5=py312h98912ed_0 + - aiosignal=1.3.1=pyhd8ed1ab_0 + - alsa-lib=1.2.12=h4ab18f5_0 + - aom=3.9.1=hac33072_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - attr=2.5.1=h166bdaf_1 + - attrs=23.2.0=pyh71513ae_0 + - binutils_impl_linux-64=2.40=ha1999f0_7 + - binutils_linux-64=2.40=hb3c18ed_9 + - blosc=1.21.5=hc2324a3_1 + - brotli=1.1.0=hd590300_1 + - brotli-bin=1.1.0=hd590300_1 + - brotli-python=1.1.0=py312h30efb56_1 + - bzip2=1.0.8=hd590300_5 + - c-ares=1.28.1=hd590300_0 + - c-blosc2=2.14.4=hb4ffafa_1 + - ca-certificates=2024.6.2=hbcca054_0 + - cairo=1.18.0=h3faef2a_0 + - certifi=2024.6.2=pyhd8ed1ab_0 + - cffi=1.16.0=py312hf06ca03_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 + - contourpy=1.2.1=py312h8572e83_0 + - cycler=0.12.1=pyhd8ed1ab_0 + - dav1d=1.2.1=hd590300_0 + - dbus=1.13.6=h5008d03_3 + - debugpy=1.8.1=py312h30efb56_0 + - decorator=5.1.1=pyhd8ed1ab_0 + - double-conversion=3.3.0=h59595ed_0 + - eigen=3.4.0=h00ab1b0_0 + - exceptiongroup=1.2.0=pyhd8ed1ab_2 + - executing=2.0.1=pyhd8ed1ab_0 + - expat=2.6.2=h59595ed_0 + - fenics-basix=0.8.0=py312h2492b07_1 + - fenics-dolfinx=0.8.0=py312hb4760eb_103 + - fenics-ffcx=0.8.0=pyh4af843d_0 + - fenics-libbasix=0.8.0=h9187eef_1 + - fenics-libdolfinx=0.8.0=h714c792_103 + - fenics-ufcx=0.8.0=h22f594c_0 + - fenics-ufl=2024.1.0=pyhd8ed1ab_0 + - ffmpeg=6.1.1=gpl_he44c6f3_112 + - fftw=3.3.10=mpi_mpich_hbcf76dd_10 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_2 + - fontconfig=2.14.2=h14ed4e7_0 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.53.0=py312h9a8786e_0 + - freetype=2.12.1=h267a509_2 + - fribidi=1.0.10=h36c2ea0_0 + - frozenlist=1.4.1=py312h98912ed_0 + - gcc_impl_linux-64=12.3.0=h58ffeeb_11 + - gcc_linux-64=12.3.0=h9528a6a_9 + - gettext=0.22.5=h59595ed_2 + - gettext-tools=0.22.5=h59595ed_2 + - gl2ps=1.4.2=h0708190_0 + - glew=2.1.0=h9c3ff4c_2 + - glib=2.80.2=hf974151_0 + - glib-tools=2.80.2=hb6ce0ca_0 + - gmp=6.3.0=hac33072_2 + - gnutls=3.7.9=hb077bed_0 + - graphite2=1.3.13=h59595ed_1003 + - gst-plugins-base=1.24.4=h9ad1361_0 + - gstreamer=1.24.4=haf2f30d_0 + - gxx_impl_linux-64=12.3.0=h2a574ab_11 + - gxx_linux-64=12.3.0=ha28b414_9 + - harfbuzz=8.5.0=hfac3d4d_0 + - hdf4=4.2.15=h2a13503_7 + - hdf5=1.14.3=mpi_mpich_h0f54ddc_5 + - hypre=2.31.0=mpi_mpich_hd1da18f_1 + - icu=73.2=h59595ed_0 + - idna=3.7=pyhd8ed1ab_0 + - importlib-metadata=7.2.0=pyha770c72_0 + - importlib_metadata=7.2.0=hd8ed1ab_0 + - ipykernel=6.29.4=pyh3099207_0 + - ipython=8.25.0=pyh707e725_0 + - jedi=0.19.1=pyhd8ed1ab_0 + - jsoncpp=1.9.5=h4bd325d_1 + - jupyter_client=8.6.2=pyhd8ed1ab_0 + - jupyter_core=5.7.2=py312h7900ff3_0 + - kahip=3.16=h6a42626_3 + - kahip-python=3.16=py312had6fb94_3 + - kernel-headers_linux-64=2.6.32=he073ed8_17 + - keyutils=1.6.1=h166bdaf_0 + - kiwisolver=1.4.5=py312h8572e83_1 + - krb5=1.21.2=h659d440_0 + - lame=3.100=h166bdaf_1003 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.40=hf3520f5_7 + - lerc=4.0.0=h27087fc_0 + - libabseil=20240116.2=cxx17_h59595ed_0 + - libadios2=2.10.0=mpi_mpich_h3e60829_3 + - libaec=1.1.3=h59595ed_0 + - libasprintf=0.22.5=h661eb56_2 + - libasprintf-devel=0.22.5=h661eb56_2 + - libass=0.17.1=h8fe9dca_1 + - libblas=3.9.0=22_linux64_openblas + - libboost=1.84.0=hba137d9_3 + - libboost-devel=1.84.0=h00ab1b0_3 + - libboost-headers=1.84.0=ha770c72_3 + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcap=2.69=h0f662aa_0 + - libcblas=3.9.0=22_linux64_openblas + - libclang-cpp18.1=18.1.7=default_h9bb3924_0 + - libclang13=18.1.7=default_h087397f_0 + - libcups=2.3.3=h4637d8d_4 + - libcurl=8.8.0=hca28451_0 + - libdeflate=1.20=hd590300_0 + - libdrm=2.4.121=h4ab18f5_0 + - libedit=3.1.20191231=he28a2e2_2 + - libev=4.33=hd590300_2 + - libexpat=2.6.2=h59595ed_0 + - libffi=3.4.2=h7f98852_5 + - libflac=1.4.3=h59595ed_0 + - libgcc-devel_linux-64=12.3.0=h6b66f73_111 + - libgcc-ng=13.2.0=h77fa898_11 + - libgcrypt=1.10.3=hd590300_0 + - libgettextpo=0.22.5=h59595ed_2 + - libgettextpo-devel=0.22.5=h59595ed_2 + - libgfortran-ng=13.2.0=h69a702a_11 + - libgfortran5=13.2.0=h3d2ce59_11 + - libglib=2.80.2=hf974151_0 + - libglu=9.0.0=hac7e632_1003 + - libgomp=13.2.0=h77fa898_11 + - libgpg-error=1.49=h4f305b6_0 + - libhwloc=2.10.0=default_h5622ce7_1001 + - libiconv=1.17=hd590300_2 + - libidn2=2.3.7=hd590300_0 + - libjpeg-turbo=3.0.0=hd590300_1 + - liblapack=3.9.0=22_linux64_openblas + - libllvm18=18.1.7=hb77312f_0 + - libnetcdf=4.9.2=nompi_h135f659_114 + - libnghttp2=1.58.0=h47da74e_1 + - libnsl=2.0.1=hd590300_0 + - libogg=1.3.4=h7f98852_1 + - libopenblas=0.3.27=pthreads_h413a1c8_0 + - libopenvino=2024.1.0=h2da1b83_7 + - libopenvino-auto-batch-plugin=2024.1.0=hb045406_7 + - libopenvino-auto-plugin=2024.1.0=hb045406_7 + - libopenvino-hetero-plugin=2024.1.0=h5c03a75_7 + - libopenvino-intel-cpu-plugin=2024.1.0=h2da1b83_7 + - libopenvino-intel-gpu-plugin=2024.1.0=h2da1b83_7 + - libopenvino-intel-npu-plugin=2024.1.0=he02047a_7 + - libopenvino-ir-frontend=2024.1.0=h5c03a75_7 + - libopenvino-onnx-frontend=2024.1.0=h07e8aee_7 + - libopenvino-paddle-frontend=2024.1.0=h07e8aee_7 + - libopenvino-pytorch-frontend=2024.1.0=he02047a_7 + - libopenvino-tensorflow-frontend=2024.1.0=h39126c6_7 + - libopenvino-tensorflow-lite-frontend=2024.1.0=he02047a_7 + - libopus=1.3.1=h7f98852_1 + - libpciaccess=0.18=hd590300_0 + - libpng=1.6.43=h2797004_0 + - libpq=16.3=ha72fbe1_0 + - libprotobuf=4.25.3=h08a7969_0 + - libptscotch=7.0.4=h2376d02_5 + - libsanitizer=12.3.0=hb8811af_11 + - libscotch=7.0.4=h3055ed5_5 + - libsndfile=1.2.2=hc60ed4a_1 + - libsodium=1.0.18=h36c2ea0_1 + - libsqlite=3.46.0=hde9e2c9_0 + - libssh2=1.11.0=h0841786_0 + - libstdcxx-devel_linux-64=12.3.0=h6b66f73_111 + - libstdcxx-ng=13.2.0=hc0a3c3a_11 + - libsystemd0=255=h3516f8a_1 + - libtasn1=4.19.0=h166bdaf_0 + - libtheora=1.1.1=h7f98852_1005 + - libtiff=4.6.0=h1dd3fc0_3 + - libunistring=0.9.10=h7f98852_0 + - libuuid=2.38.1=h0b41bf4_0 + - libva=2.21.0=h4ab18f5_2 + - libvorbis=1.3.7=h9c3ff4c_0 + - libvpx=1.14.1=hac33072_0 + - libwebp-base=1.4.0=hd590300_0 + - libxcb=1.15=h0b41bf4_0 + - libxcrypt=4.4.36=hd590300_1 + - libxkbcommon=1.7.0=h662e7e4_0 + - libxml2=2.12.7=hc051c1a_1 + - libzip=1.10.1=h2629f0a_3 + - libzlib=1.2.13=h4ab18f5_6 + - loguru=0.7.2=py312h7900ff3_1 + - lz4-c=1.9.4=hcb278e6_0 + - matplotlib-base=3.8.4=py312h20ab3a6_2 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 + - metis=5.1.0=h59595ed_1007 + - mpfr=4.2.1=h9458935_1 + - mpg123=1.32.6=h59595ed_0 + - mpi=1.0=mpich + - mpi4py=3.1.6=py312h60e9011_1 + - mpich=4.2.1=h63d650b_101 + - msgpack-python=1.0.8=py312h2492b07_0 + - multidict=6.0.5=py312h98912ed_0 + - mumps-include=5.7.2=ha770c72_0 + - mumps-mpi=5.7.2=h09c71e5_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - mysql-common=8.3.0=hf1915f5_4 + - mysql-libs=8.3.0=hca2cd23_4 + - ncurses=6.5=h59595ed_0 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 + - nettle=3.9.1=h7ab15ed_0 + - nlohmann_json=3.11.3=h59595ed_0 + - numpy=1.26.4=py312heda63a1_0 + - ocl-icd=2.3.2=hd590300_1 + - openh264=2.4.1=h59595ed_0 + - openjpeg=2.5.2=h488ebb8_0 + - openssl=3.3.1=h4ab18f5_0 + - p11-kit=0.24.1=hc5aa10d_0 + - packaging=24.1=pyhd8ed1ab_0 + - parmetis=4.0.3=h583469f_1006 + - parso=0.8.4=pyhd8ed1ab_0 + - pcre2=10.43=hcad00b1_0 + - petsc=3.21.2=real_h7906ff3_102 + - petsc4py=3.21.2=py312hf1b966b_1 + - pexpect=4.9.0=pyhd8ed1ab_0 + - pickleshare=0.7.5=py_1003 + - pillow=10.3.0=py312hdcec9eb_0 + - pip=24.0=pyhd8ed1ab_0 + - pixman=0.43.2=h59595ed_0 + - pkg-config=0.29.2=h36c2ea0_1008 + - platformdirs=4.2.2=pyhd8ed1ab_0 + - pooch=1.8.2=pyhd8ed1ab_0 + - proj=9.3.1=h1d62c97_0 + - prompt-toolkit=3.0.47=pyha770c72_0 + - psutil=5.9.8=py312h98912ed_0 + - pthread-stubs=0.4=h36c2ea0_1001 + - ptscotch=7.0.4=h23d43cc_5 + - ptyprocess=0.7.0=pyhd3deb0d_0 + - pugixml=1.14=h59595ed_0 + - pulseaudio-client=17.0=hb77b528_0 + - pure_eval=0.2.2=pyhd8ed1ab_0 + - pycparser=2.22=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pyparsing=3.1.2=pyhd8ed1ab_0 + - pysocks=1.7.1=pyha2e5f31_6 + - python=3.12.3=hab00c5b_0_cpython + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python_abi=3.12=4_cp312 + - pyvista=0.43.10=pyhd8ed1ab_0 + - pyzmq=26.0.3=py312h8fd38d8_0 + - qt6-main=6.7.1=h2471661_2 + - readline=8.2=h8228510_1 + - requests=2.32.3=pyhd8ed1ab_0 + - scalapack=2.2.0=h417d24c_2 + - scooby=0.10.0=pyhd8ed1ab_0 + - scotch=7.0.4=h23d43cc_5 + - setuptools=70.1.0=pyhd8ed1ab_0 + - six=1.16.0=pyh6c4a22f_0 + - slepc=3.21.1=real_h97ad6bc_302 + - slepc4py=3.21.1=py312h68801f8_102 + - snappy=1.2.0=hdb0a2a9_1 + - sqlite=3.46.0=h6d4b2fc_0 + - stack_data=0.6.2=pyhd8ed1ab_0 + - suitesparse=7.7.0=hf4753ba_1 + - superlu=5.2.2=h00795ac_0 + - superlu_dist=9.0.0=h3feb4ed_1 + - svt-av1=2.1.0=hac33072_0 + - sysroot_linux-64=2.12=he073ed8_17 + - tbb=2021.12.0=h297d8ca_1 + - tbb-devel=2021.12.0=h7c56ddd_1 + - tk=8.6.13=noxft_h4845f30_101 + - tornado=6.4.1=py312h9a8786e_0 + - traitlets=5.14.3=pyhd8ed1ab_0 + - typing_extensions=4.12.2=pyha770c72_0 + - tzdata=2024a=h0c530f3_0 + - urllib3=2.2.2=pyhd8ed1ab_0 + - utfcpp=4.0.5=ha770c72_0 + - vtk=9.3.0=qt_py312h1234567_200 + - vtk-base=9.3.0=qt_py312h1234567_200 + - vtk-io-ffmpeg=9.3.0=qt_py312h1234567_200 + - wayland=1.23.0=h5291e77_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - wheel=0.43.0=pyhd8ed1ab_1 + - wslink=2.1.1=pyhd8ed1ab_0 + - x264=1!164.3095=h166bdaf_2 + - x265=3.5=h924138e_3 + - xcb-util=0.4.0=hd590300_1 + - xcb-util-cursor=0.1.4=hd590300_1 + - xcb-util-image=0.4.0=h8ee46fc_1 + - xcb-util-keysyms=0.4.0=h8ee46fc_1 + - xcb-util-renderutil=0.3.9=hd590300_1 + - xcb-util-wm=0.4.1=h8ee46fc_1 + - xkeyboard-config=2.42=h4ab18f5_0 + - xorg-fixesproto=5.0=h7f98852_1002 + - xorg-kbproto=1.0.7=h7f98852_1002 + - xorg-libice=1.1.1=hd590300_0 + - xorg-libsm=1.2.4=h7391055_0 + - xorg-libx11=1.8.9=h8ee46fc_0 + - xorg-libxau=1.0.11=hd590300_0 + - xorg-libxdmcp=1.1.3=h7f98852_0 + - xorg-libxext=1.3.4=h0b41bf4_2 + - xorg-libxfixes=5.0.3=h7f98852_1004 + - xorg-libxrender=0.9.11=hd590300_0 + - xorg-libxt=1.3.0=hd590300_1 + - xorg-renderproto=0.11.1=h7f98852_1002 + - xorg-xextproto=7.3.0=h0b41bf4_1003 + - xorg-xproto=7.0.31=h7f98852_1007 + - xz=5.2.6=h166bdaf_0 + - yaml=0.2.5=h7f98852_2 + - yarl=1.9.4=py312h98912ed_0 + - zeromq=4.3.5=h75354e8_4 + - zfp=0.5.5=h9c3ff4c_8 + - zipp=3.19.2=pyhd8ed1ab_0 + - zlib=1.2.13=h4ab18f5_6 + - zlib-ng=2.0.7=h0b41bf4_0 + - zstd=1.5.6=ha6fb4c9_0 + - pip: + - scipy==1.14.0 +prefix: /home/janha/anaconda3/envs/fenicsx