To receive notifications about scheduled maintenance, please subscribe to the mailing-list gitlab-operations@sympa.ethz.ch. You can subscribe to the mailing-list at https://sympa.ethz.ch

Commit 9f6b776a authored by sfritschi's avatar sfritschi
Browse files

Updated thesis

parent e6c1f9f1
......@@ -155,11 +155,10 @@ class CellList:
def flatten(self, i: int, j: int, k: int) -> int:
return i + self.nCells[0] * (j + self.nCells[1] * k)
def pore_to_triplet(self, poreIdx: int) -> List[int]:
def pore_to_triplet(self, pore: Pore) -> List[int]:
from math import floor
# Shift pore position to be positive first (buffer layer)
porePos = self.fetch_pos(poreIdx)
return [floor( (porePos[i] + self.Lmax) * self.invCellSizes[i]) \
return [floor( (pore.pos[i] + self.Lmax) * self.invCellSizes[i]) \
for i in range(self.dim)]
# Compute index of given pore in cell list based on position
def pore_to_index(self, pore: Pore) -> int:
......
@article{MEYER2021101592,
title = {Netflow Python library – A free software tool for the generation and analysis of pore or flow networks},
journal = {MethodsX},
volume = {8},
pages = {101592},
year = {2021},
issn = {2215-0161},
doi = {https://doi.org/10.1016/j.mex.2021.101592},
url = {https://www.sciencedirect.com/science/article/pii/S2215016121003824},
author = {Daniel W. Meyer},
keywords = {Dendrogram, Cluster, Heterogeneity, Connectivity, Porous media, Pathway, Periodic, Unbounded, Digital rock analysis},
abstract = {State-of-the-art tomographic scanning techniques provide detailed pore-space geometries of natural porous media, which are central for the study of subsurface flow and transport. Due to experimental and computational limitations, the extraction of high-resolution images is limited to relatively small sample volumes. To reduce the amount of data and the physical complexity, pore-space geometries are routinely translated into pore network models. Subsequently, such networks are expanded in space with suitable computational methods to determine effective medium parameters at larger scales relevant in engineering applications. While existing methods can provide networks with effective flow parameters being consistent with experimental data for comparably homogeneous media such as bead packs and sandstones, these methods are inadequate for more complex heterogeneous rocks such as carbonates or become too expensive for large networks. The netflow Python library accompanying this paper extends existing methods by preserving pore clusters that are a key characteristic of heterogeneous rocks. To this end dendrograms are extracted from experimental data and perturbed when generating larger networks. Moreover, the methods included in the netflow library are implemented in computationally efficient ways and enable the generation of large periodic networks that virtually eliminate boundary effects, which interfere in existing methods. • The netflow Python library enables the generation of large irregular networks, as it preserves pore or node clusters which are present in certain natural rock types. • The netflow Python library allows for the generation and flow analysis of boundary-free periodic networks. It further includes methods to convert periodic networks into conventional cubical ones.}
}
\ No newline at end of file
......@@ -22,6 +22,8 @@
\@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax }
\abx@aux@cite{MEYER2021103936}
\abx@aux@segm{0}{0}{MEYER2021103936}
\abx@aux@cite{MEYER2021101592}
\abx@aux@segm{0}{0}{MEYER2021101592}
\abx@aux@cite{petsc-web-page}
\abx@aux@segm{0}{0}{petsc-web-page}
\abx@aux@cite{MEYER2021103936}
......@@ -34,12 +36,19 @@
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Solver}{3}{subsection.2.2}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Limitations}{3}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Results}{3}{subsection.2.4}\protected@file@percent }
\abx@aux@cite{MEYER2021101592}
\abx@aux@segm{0}{0}{MEYER2021101592}
\abx@aux@cite{MEYER2021103936}
\abx@aux@segm{0}{0}{MEYER2021103936}
\@writefile{lof}{\defcounter {refsection}{0}\relax }\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Pressures $p_{\mathrm {in}}$ and $p_{\mathrm {out}}$ are applied to in-pores and out-pores respectively, driving the network flow. The resulting pressure system is solved with the available solvers and the different fluxes are shown for the individual pores in the case of PETSc (using 4 processes). Since the sequential solvers produce an identical plot, they are omitted here. \relax }}{4}{figure.caption.1}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:balance}{{1}{4}{Pressures $p_{\mathrm {in}}$ and $p_{\mathrm {out}}$ are applied to in-pores and out-pores respectively, driving the network flow. The resulting pressure system is solved with the available solvers and the different fluxes are shown for the individual pores in the case of PETSc (using 4 processes). Since the sequential solvers produce an identical plot, they are omitted here. \relax }{figure.caption.1}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {A}PETSc Installation}{4}{appendix.A}\protected@file@percent }
\newlabel{appendix:install}{{A}{4}{PETSc Installation}{appendix.A}{}}
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}Parallel Network Generation Algorithm}{4}{section.3}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Cell-Lists}{4}{subsection.3.1}\protected@file@percent }
\@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {A}PETSc Installation}{5}{appendix.A}\protected@file@percent }
\newlabel{appendix:install}{{A}{5}{PETSc Installation}{appendix.A}{}}
\abx@aux@refcontextdefaultsdone
\abx@aux@defaultrefcontext{0}{MEYER2021103936}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{MEYER2021101592}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{petsc-web-page}{none/global//global/global}
\abx@aux@defaultrefcontext{0}{hypre-web-page}{none/global//global/global}
......@@ -33,6 +33,7 @@
\strng{authorbibnamehash}{37d55c92e258fd275792cded40da151b}
\strng{authornamehash}{37d55c92e258fd275792cded40da151b}
\strng{authorfullhash}{37d55c92e258fd275792cded40da151b}
\field{extraname}{1}
\field{sortinit}{1}
\field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba}
\field{labelnamesource}{author}
......@@ -56,6 +57,44 @@
\endverb
\keyw{Dendrogram,Clustering,Networks,Generator,Connectivity,Heterogeneity}
\endentry
\entry{MEYER2021101592}{article}{}
\name{author}{1}{}{%
{{hash=37d55c92e258fd275792cded40da151b}{%
family={Meyer},
familyi={M\bibinitperiod},
given={Daniel\bibnamedelima W.},
giveni={D\bibinitperiod\bibinitdelim W\bibinitperiod}}}%
}
\strng{namehash}{37d55c92e258fd275792cded40da151b}
\strng{fullhash}{37d55c92e258fd275792cded40da151b}
\strng{bibnamehash}{37d55c92e258fd275792cded40da151b}
\strng{authorbibnamehash}{37d55c92e258fd275792cded40da151b}
\strng{authornamehash}{37d55c92e258fd275792cded40da151b}
\strng{authorfullhash}{37d55c92e258fd275792cded40da151b}
\field{extraname}{2}
\field{sortinit}{2}
\field{sortinithash}{ed39bb39cf854d5250e95b1c1f94f4ed}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{abstract}{State-of-the-art tomographic scanning techniques provide detailed pore-space geometries of natural porous media, which are central for the study of subsurface flow and transport. Due to experimental and computational limitations, the extraction of high-resolution images is limited to relatively small sample volumes. To reduce the amount of data and the physical complexity, pore-space geometries are routinely translated into pore network models. Subsequently, such networks are expanded in space with suitable computational methods to determine effective medium parameters at larger scales relevant in engineering applications. While existing methods can provide networks with effective flow parameters being consistent with experimental data for comparably homogeneous media such as bead packs and sandstones, these methods are inadequate for more complex heterogeneous rocks such as carbonates or become too expensive for large networks. The netflow Python library accompanying this paper extends existing methods by preserving pore clusters that are a key characteristic of heterogeneous rocks. To this end dendrograms are extracted from experimental data and perturbed when generating larger networks. Moreover, the methods included in the netflow library are implemented in computationally efficient ways and enable the generation of large periodic networks that virtually eliminate boundary effects, which interfere in existing methods. • The netflow Python library enables the generation of large irregular networks, as it preserves pore or node clusters which are present in certain natural rock types. • The netflow Python library allows for the generation and flow analysis of boundary-free periodic networks. It further includes methods to convert periodic networks into conventional cubical ones.}
\field{issn}{2215-0161}
\field{journaltitle}{MethodsX}
\field{title}{Netflow Python library – A free software tool for the generation and analysis of pore or flow networks}
\field{volume}{8}
\field{year}{2021}
\field{pages}{101592}
\range{pages}{1}
\verb{doi}
\verb https://doi.org/10.1016/j.mex.2021.101592
\endverb
\verb{urlraw}
\verb https://www.sciencedirect.com/science/article/pii/S2215016121003824
\endverb
\verb{url}
\verb https://www.sciencedirect.com/science/article/pii/S2215016121003824
\endverb
\keyw{Dendrogram,Cluster,Heterogeneity,Connectivity,Porous media,Pathway,Periodic,Unbounded,Digital rock analysis}
\endentry
\entry{petsc-web-page}{misc}{}
\name{author}{34}{}{%
{{hash=0661bc042688479e939e81e7f9185f66}{%
......@@ -235,8 +274,8 @@
\strng{authorbibnamehash}{456de0534e91c8a938d1b1a557f67342}
\strng{authornamehash}{456de0534e91c8a938d1b1a557f67342}
\strng{authorfullhash}{807f16eca96be7bc621c3deb59d17345}
\field{sortinit}{2}
\field{sortinithash}{ed39bb39cf854d5250e95b1c1f94f4ed}
\field{sortinit}{3}
\field{sortinithash}{a37a8ef248a93c322189792c34fc68c9}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{howpublished}{\url{https://petsc.org/}}
......@@ -253,8 +292,8 @@
\list{organization}{1}{%
{Lawrence Livermore National Laboratory}%
}
\field{sortinit}{3}
\field{sortinithash}{a37a8ef248a93c322189792c34fc68c9}
\field{sortinit}{5}
\field{sortinithash}{5dd416adbafacc8226114bc0202d5fdd}
\field{labeltitlesource}{title}
\field{note}{\url{http://www.llnl.gov/CASC/hypre/}}
\field{title}{{\sl hypre}: High Performance Preconditioners}
......
......@@ -2180,14 +2180,18 @@
<!-- SECTION 0 -->
<bcf:bibdata section="0">
<bcf:datasource type="file" datatype="bibtex">bib/RandomGenerationFlowNetworks.bib</bcf:datasource>
<bcf:datasource type="file" datatype="bibtex">bib/netflow.bib</bcf:datasource>
<bcf:datasource type="file" datatype="bibtex">bib/petsc.bib</bcf:datasource>
<bcf:datasource type="file" datatype="bibtex">bib/hypre.bib</bcf:datasource>
</bcf:bibdata>
<bcf:section number="0">
<bcf:citekey order="1">MEYER2021103936</bcf:citekey>
<bcf:citekey order="2">petsc-web-page</bcf:citekey>
<bcf:citekey order="3">MEYER2021103936</bcf:citekey>
<bcf:citekey order="4">hypre-web-page</bcf:citekey>
<bcf:citekey order="2">MEYER2021101592</bcf:citekey>
<bcf:citekey order="3">petsc-web-page</bcf:citekey>
<bcf:citekey order="4">MEYER2021103936</bcf:citekey>
<bcf:citekey order="5">hypre-web-page</bcf:citekey>
<bcf:citekey order="6">MEYER2021101592</bcf:citekey>
<bcf:citekey order="7">MEYER2021103936</bcf:citekey>
</bcf:section>
<!-- SORTING TEMPLATES -->
<bcf:sortingtemplate name="none">
......
[0] Config.pm:304> INFO - This is Biber 2.14 (beta)
[0] Config.pm:307> INFO - Logfile is 'thesis.blg'
[100] biber:322> INFO - === Mo Okt 18, 2021, 15:11:28
[116] Biber.pm:415> INFO - Reading 'thesis.bcf'
[198] Biber.pm:943> INFO - Found 3 citekeys in bib section 0
[215] Biber.pm:4256> INFO - Processing section 0
[216] Utils.pm:75> INFO - Globbing data source 'bib/RandomGenerationFlowNetworks.bib'
[216] Utils.pm:91> INFO - Globbed data source 'bib/RandomGenerationFlowNetworks.bib' to bib/RandomGenerationFlowNetworks.bib
[216] Utils.pm:75> INFO - Globbing data source 'bib/petsc.bib'
[216] Utils.pm:91> INFO - Globbed data source 'bib/petsc.bib' to bib/petsc.bib
[216] Utils.pm:75> INFO - Globbing data source 'bib/hypre.bib'
[216] Utils.pm:91> INFO - Globbed data source 'bib/hypre.bib' to bib/hypre.bib
[228] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/RandomGenerationFlowNetworks.bib' for section 0
[229] bibtex.pm:1653> INFO - LaTeX decoding ...
[234] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/RandomGenerationFlowNetworks.bib'
[257] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/petsc.bib' for section 0
[257] bibtex.pm:1653> INFO - LaTeX decoding ...
[263] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/petsc.bib'
[320] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/hypre.bib' for section 0
[321] bibtex.pm:1653> INFO - LaTeX decoding ...
[322] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/hypre.bib'
[336] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[336] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[336] Biber.pm:4084> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[336] Biber.pm:4090> INFO - No sort tailoring available for locale 'en-US'
[344] bbl.pm:652> INFO - Writing 'thesis.bbl' with encoding 'UTF-8'
[354] bbl.pm:755> INFO - Output to thesis.bbl
[98] biber:322> INFO - === Sa Nov 27, 2021, 16:53:16
[114] Biber.pm:415> INFO - Reading 'thesis.bcf'
[196] Biber.pm:943> INFO - Found 4 citekeys in bib section 0
[213] Biber.pm:4256> INFO - Processing section 0
[213] Utils.pm:75> INFO - Globbing data source 'bib/RandomGenerationFlowNetworks.bib'
[214] Utils.pm:91> INFO - Globbed data source 'bib/RandomGenerationFlowNetworks.bib' to bib/RandomGenerationFlowNetworks.bib
[214] Utils.pm:75> INFO - Globbing data source 'bib/netflow.bib'
[214] Utils.pm:91> INFO - Globbed data source 'bib/netflow.bib' to bib/netflow.bib
[214] Utils.pm:75> INFO - Globbing data source 'bib/petsc.bib'
[214] Utils.pm:91> INFO - Globbed data source 'bib/petsc.bib' to bib/petsc.bib
[214] Utils.pm:75> INFO - Globbing data source 'bib/hypre.bib'
[214] Utils.pm:91> INFO - Globbed data source 'bib/hypre.bib' to bib/hypre.bib
[226] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/RandomGenerationFlowNetworks.bib' for section 0
[227] bibtex.pm:1653> INFO - LaTeX decoding ...
[232] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/RandomGenerationFlowNetworks.bib'
[255] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/netflow.bib' for section 0
[256] bibtex.pm:1653> INFO - LaTeX decoding ...
[261] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/netflow.bib'
[265] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/petsc.bib' for section 0
[266] bibtex.pm:1653> INFO - LaTeX decoding ...
[271] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/petsc.bib'
[334] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/hypre.bib' for section 0
[335] bibtex.pm:1653> INFO - LaTeX decoding ...
[336] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/hypre.bib'
[351] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized'
[351] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable'
[351] Biber.pm:4084> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US'
[351] Biber.pm:4090> INFO - No sort tailoring available for locale 'en-US'
[360] bbl.pm:652> INFO - Writing 'thesis.bbl' with encoding 'UTF-8'
[370] bbl.pm:755> INFO - Output to thesis.bbl
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.4.27) 28 OCT 2021 10:33
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.4.27) 27 NOV 2021 17:54
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
......@@ -803,22 +803,22 @@ File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode
(./thesis.aux)
\openout1 = `thesis.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 21.
LaTeX Font Info: ... okay on input line 21.
Package biblatex Info: Trying to load language 'english'...
Package biblatex Info: ... file 'english.lbx' found.
......@@ -834,8 +834,8 @@ Package biblatex Info: Trying to load bibliographic data...
Package biblatex Info: ... file 'thesis.bbl' found.
(./thesis.bbl)
Package biblatex Info: Reference section=0 on input line 20.
Package biblatex Info: Reference segment=0 on input line 20.
Package biblatex Info: Reference section=0 on input line 21.
Package biblatex Info: Reference segment=0 on input line 21.
Package caption Info: Begin \AtBeginDocument code.
Package caption Info: hyperref package is loaded.
Package caption Info: listings package is loaded.
......@@ -864,7 +864,7 @@ File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
\AtBeginShipoutBox=\box106
Package hyperref Info: Link coloring OFF on input line 20.
Package hyperref Info: Link coloring OFF on input line 21.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section
......@@ -877,9 +877,9 @@ Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count427
)
LaTeX Info: Redefining \ref on input line 20.
LaTeX Info: Redefining \pageref on input line 20.
LaTeX Info: Redefining \nameref on input line 20.
LaTeX Info: Redefining \ref on input line 21.
LaTeX Info: Redefining \pageref on input line 21.
LaTeX Info: Redefining \nameref on input line 21.
(./thesis.out) (./thesis.out)
\@outlinefile=\write5
......@@ -887,47 +887,57 @@ LaTeX Info: Redefining \nameref on input line 20.
\c@lstlisting=\count428
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <12> on input line 22.
(Font) <12> on input line 23.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <8> on input line 22.
(Font) <8> on input line 23.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <6> on input line 22.
(Font) <6> on input line 23.
[1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2]
<plots/flux_PETSC.png, id=57, 462.528pt x 346.896pt>
<plots/flux_PETSC.png, id=66, 462.528pt x 346.896pt>
File: plots/flux_PETSC.png Graphic file (type png)
<use plots/flux_PETSC.png>
Package pdftex.def Info: plots/flux_PETSC.png used on input line 64.
Package pdftex.def Info: plots/flux_PETSC.png used on input line 65.
(pdftex.def) Requested size: 276.00105pt x 207.01175pt.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <7> on input line 65.
(Font) <7> on input line 66.
LaTeX Font Info: External font `cmex10' loaded for size
(Font) <5> on input line 65.
(Font) <5> on input line 66.
LaTeX Warning: `h' float specifier changed to `ht'.
[3] [4 <./plots/flux_PETSC.png>] [5]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 92.
Package atveryend Info: Empty hook `AfterLastShipout' on input line 92.
[3]
Underfull \hbox (badness 10000) in paragraph at lines 71--71
[]\OT1/cmr/bx/n/14.4 Parallel Net-work
[]
Underfull \hbox (badness 10000) in paragraph at lines 71--71
\OT1/cmr/bx/n/14.4 Gen-er-a-tion Al-go-
[]
[4 <./plots/flux_PETSC.png>] [5] [6]
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 100.
Package atveryend Info: Empty hook `AfterLastShipout' on input line 100.
(./thesis.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 92.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 92.
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 100.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 100.
Package rerunfilecheck Info: File `thesis.out' has not changed.
(rerunfilecheck) Checksum: A54FD03E0202A2028E52FE6761BBE30B;391.
(rerunfilecheck) Checksum: 56255825A004A602EC91C16993FDD835;522.
Package logreq Info: Writing requests to 'thesis.run.xml'.
\openout1 = `thesis.run.xml'.
)
Here is how much of TeX's memory you used:
24847 strings out of 483107
472657 string characters out of 5964630
1096284 words of memory out of 5000000
39488 multiletter control sequences out of 15000+600000
24865 strings out of 483107
473080 string characters out of 5964630
1096648 words of memory out of 5000000
39502 multiletter control sequences out of 15000+600000
538403 words of font info for 44 fonts, out of 8000000 for 9000
59 hyphenation exceptions out of 8191
60i,7n,60p,2074b,1256s stack positions out of 5000i,500n,10000p,200000b,80000s
60i,7n,60p,2000b,1258s stack positions out of 5000i,500n,10000p,200000b,80000s
</home/sev/.texlive2019/texmf-var/fonts/pk/ljfour/jknappen/ec/tcrm1000.600pk
></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr
/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share
......@@ -939,10 +949,10 @@ t/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts
ublic/amsfonts/cm/cmsl10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/
amsfonts/cm/cmti10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmtt10.pfb>
Output written on thesis.pdf (5 pages, 171338 bytes).
Output written on thesis.pdf (6 pages, 177016 bytes).
PDF statistics:
133 PDF objects out of 1000 (max. 8388607)
111 compressed objects within 2 object streams
18 named destinations out of 1000 (max. 500000)
74 words of extra memory for PDF output out of 10000 (max. 10000000)
154 PDF objects out of 1000 (max. 8388607)
131 compressed objects within 2 object streams
22 named destinations out of 1000 (max. 500000)
90 words of extra memory for PDF output out of 10000 (max. 10000000)
......@@ -4,4 +4,6 @@
\BOOKMARK [2][-]{subsection.2.2}{Solver}{section.2}% 4
\BOOKMARK [2][-]{subsection.2.3}{Limitations}{section.2}% 5
\BOOKMARK [2][-]{subsection.2.4}{Results}{section.2}% 6
\BOOKMARK [1][-]{appendix.A}{PETSc Installation}{}% 7
\BOOKMARK [1][-]{section.3}{Parallel Network Generation Algorithm}{}% 7
\BOOKMARK [2][-]{subsection.3.1}{Cell-Lists}{section.3}% 8
\BOOKMARK [1][-]{appendix.A}{PETSc Installation}{}% 9
No preview for this file type
......@@ -80,6 +80,7 @@
</requires>
<requires type="editable">
<file>bib/RandomGenerationFlowNetworks.bib</file>
<file>bib/netflow.bib</file>
<file>bib/petsc.bib</file>
<file>bib/hypre.bib</file>
</requires>
......
No preview for this file type
......@@ -14,6 +14,7 @@
% references
\addbibresource{bib/RandomGenerationFlowNetworks.bib}
\addbibresource{bib/netflow.bib}
\addbibresource{bib/petsc.bib}
\addbibresource{bib/hypre.bib}
......@@ -40,12 +41,12 @@
\newpage
\begin{center} \Large{\textbf{Abstract}} \end{center}
\hspace{0.5cm}To study the flow properties of large void-space geometries found in porous media such as f.ex. soil or gravel, \cite{MEYER2021103936} describes and implements routines for the generation \& simulation of flow networks representing the complicated pore-arrangement. Based on a relatively small base network acquired via tomographic scans, the generated flow network is of intermediate size (millions of pores). To extend this procedure to even larger networks (up to 100 millions of pores), parallel computing is employed for both generation of pore-networks as well as solving the flow for said networks. In the latter, we rely on existing MPI-based parallel solvers from the PETSc \cite{petsc-web-page} toolkit. See ~\ref{appendix:install} for installation details.
\hspace{0.5cm}To study the flow properties of large void-space geometries found in porous media such as f.ex. soil or gravel, \cite{MEYER2021103936} describes and implements routines for the generation \& simulation of flow networks in the Python library \emph{netflow} \cite{MEYER2021101592}. Based on a relatively small base network acquired via tomographic scans, the generated flow network is of intermediate size (millions of pores). To extend this procedure to even larger networks (up to 100 millions of pores), parallel computing is employed for both generation of pore-networks as well as solving the flow for said networks. In the latter, we rely on existing MPI-based parallel solvers from the PETSc \cite{petsc-web-page} toolkit. See ~\ref{appendix:install} for installation details.
\vspace{5ex}
\begin{multicols}{2}
\section{Introduction}
\hspace{0.5cm}Porous media are abundant in nature. Various types of soils harbor intricate networks that enable the flow of groundwater and subsequently the transport of important chemical compounds through the soil. To understand these natural phenomena, it is of key interest to study the flow through pore networks. However, this requires sufficiently large void-space geometries taken from porous bodies, which despite advances in scanning technologies, is infeasible. Additionally, in pursuit of simulation efficiency, the 3D images obtained from scans are converted into a simplified representation consisting of spherical pores (nodes), connected by cylindrical throats (edges). To overcome above size limitation, the paper from \cite{MEYER2021103936} outlines a procedure for generating random realizations of much larger flow networks, taking an existing base network, obtained from a scan of a porous medium, as input. Furthermore, this method is particularly useful for generating heterogeneous networks, characterized by an irregular pore distribution. This is done with dendrogram-based clustering of pores in the original network, followed by random rotations of said clusters. When performed repeatedly and arranged in a 3-dimensional grid of perturbed base network copies, the resulting network, carrying over pore statistics such as coordination number \& radius, preserves the irregular pore structure of the original network. The \emph{netflow} package that implements the mentioned algorithm also provides functionality for solving and analyzing the flow through such networks. The former of which is now to be parallelized in a distributed fashion, so that it may support larger networks with up to 100 millions of pores. In a further step, the network generation algorithm shall be complemented by a parallel shared memory approach, specifically for connecting the generated pores in the resulting network. This is done directly in Python using the \verb|multiprocessing| library.
\hspace{0.5cm}Porous media are abundant in nature. Various types of soils harbor intricate networks that enable the flow of groundwater and subsequently the transport of important chemical compounds through the soil. To understand these natural phenomena, it is of key interest to study the flow through pore networks. However, this requires sufficiently large void-space geometries taken from porous bodies, which despite advances in scanning technologies, is infeasible. Additionally, in pursuit of simulation efficiency, the 3D images obtained from scans are converted into a simplified representation consisting of spherical pores (nodes), connected by cylindrical throats (edges). To overcome above size limitation, the paper from \cite{MEYER2021103936} outlines a procedure for generating random realizations of much larger flow networks, taking an existing base network, obtained from a scan of a porous medium, as input. Furthermore, this method is particularly useful for generating heterogeneous networks, characterized by an irregular pore distribution. This is done with dendrogram-based clustering of pores in the original network, followed by random rotations of said clusters. When performed repeatedly and arranged in a 3-dimensional grid of perturbed base network copies, the resulting network, carrying over pore statistics such as coordination number \& radius, preserves the irregular pore structure of the original network. The \emph{netflow} package that implements the mentioned algorithm also provides functionality for solving and analyzing the flow through such networks. The former of which is now to be parallelized in a distributed fashion, so that it may support larger networks with up to 100 millions of pores. In a further step, the network generation algorithm shall be complemented by a parallel shared memory approach, specifically for connecting the generated pores in the resulting network.
\section{Parallel Flow Solver}
\subsection{PETSc Interface}
......@@ -66,6 +67,13 @@
\label{fig:balance}
\end{figure}
\begin{multicols}{2}
\section{Parallel Network Generation Algorithm}
\hspace{0.5cm} The existing serial dendrogram-based network generation algorithm, as presented in \cite{MEYER2021101592}, is now modified. Concretely, to allow connecting all pores that populate the larger, generated network domain in parallel, we rely on a shared memory approach via the \verb|multiprocessing| Python module. To accomplish this, we first shifted our attention to \emph{cell lists}, which offer a direct application of the already existing \textbf{maximal throat length} parameter $L_{\mathrm{m}}$ as a suitable \textbf{cell size}.
\subsection{Cell-Lists}
\hspace{0.5cm} To speed up neighbor search for the \emph{stationary} pores, we have opted to use the well-known cell lists data structure instead of the triangulation based approach outlined in \cite{MEYER2021103936}. This choice was supported by the suitable properties of cell lists for our purpose of generating a network of similar pore-arrangement. It is also favorable over the triangulation method as the cell lists are only initialized once, and pores that have already been processed by the algorithm can be removed efficiently. Primarily however, it allows a straight-forward application of parallel computing, by distributing the work needed to find the neighbors of individual pores evenly.
\end{multicols}
\newpage
\appendix
......
import sys
sys.path.append('../')
from netflow import *
import open3d as o3d
import numpy as np
from typing import List
def coord_transform(pos: List[float], lb: float, ub: float):
transform = lambda x: 10. / (ub - lb) * (2. * x - ub - lb)
return np.array(list(map(transform, pos)))
def is_inside(cellList, triplet: List[int]):
return all([(1 <= triplet[i] and triplet[i] < cellList.nCells[i] - 1) \
for i in range(len(triplet))])
def main():
dendro = netflow.load_network_from("network/dendro.h5")
targetsize = [1, 1, 1]
d = len(targetsize)
# size of new network
L = list(map(lambda lb,ub,i: (ub-lb)*i, dendro.lb, dendro.ub, targetsize))
# Domain size including periodic buffer layers on all sides
trueDomainSize = [L[i] + 2 * dendro.Lmax for i in range(d)]
# Initialize cell-list; Place each pore in respective cell-set
cellList = netflow.CellList(dendro.pores, trueDomainSize, dendro.Lmax, dendro, len(dendro.pores))
# Setup GUI
vis = o3d.visualization.VisualizerWithKeyCallback()
vis.create_window()
# Add default primitives
coordinate_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(
size=0.1, origin=[0, 0, 0]
)
vis.add_geometry(coordinate_frame) # coordinate frame
aabb = o3d.geometry.AxisAlignedBoundingBox(
min_bound=-10 * np.ones(3), max_bound=10 * np.ones(3)
)
aabb.color = [0.7, 0.7, 0.7]
vis.add_geometry(aabb) # bounding box
# Colors
colors = [
np.array([0.8, 0.0, 0.0]),
np.array([0.0, 0.8, 0.0]),
np.array([0.0, 0.0, 0.8]),
np.array([0.8, 0.8, 0.0]),
np.array([0.0, 0.8, 0.8]),
np.array([0.8, 0.0, 0.8]),
np.array([0.5, 0.3, 0.2]),
np.array([0.3, 0.1, 0.5])
]
color_dict = {}
running_idx = 0
n_zero_radius = 0
for i, pore in enumerate(dendro.pores):
radius = .6e4 * pore.r
if pore.r < 1e-6:
n_zero_radius += 1
continue
# Add sphere
sphere = o3d.geometry.TriangleMesh.create_sphere(radius=radius, resolution=10)
"""
if pore.label == netflow.LABELS[0]:
sphere.paint_uniform_color(black)
elif pore.label[:2] == 'in':
sphere.paint_uniform_color(red)
elif pore.label[:3] == 'out':
sphere.paint_uniform_color(blue)
else:
sphere.paint_uniform_color(magenta)
"""
cellIdxTrip = cellList.pore_to_triplet(pore)
if (is_inside(cellList, cellIdxTrip)):
cellIdx = cellList.flatten(*cellIdxTrip)
if cellIdx in color_dict:
idx = color_dict[cellIdx]
else:
idx = running_idx
color_dict[cellIdx] = idx
running_idx += 1
color = colors[idx]
else:
color = np.array([0.0, 0.0, 0.0])
sphere.paint_uniform_color(color)
pos = coord_transform(pore.pos, dendro.lb[0], dendro.ub[0])
sphere.translate(pos)
vis.add_geometry(sphere)
print("Did not render %d/%d pores because of too small radius" % (n_zero_radius, len(dendro.pores)))
while True:
if not vis.poll_events():
break
vis.update_renderer()
if __name__ == '__main__':
main()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment