Commit 9f6b776a by sfritschi

### Updated thesis

parent e6c1f9f1
 ... @@ -155,11 +155,10 @@ class CellList: ... @@ -155,11 +155,10 @@ class CellList: def flatten(self, i: int, j: int, k: int) -> int: def flatten(self, i: int, j: int, k: int) -> int: return i + self.nCells[0] * (j + self.nCells[1] * k) 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 from math import floor # Shift pore position to be positive first (buffer layer) # Shift pore position to be positive first (buffer layer) porePos = self.fetch_pos(poreIdx) return [floor( (pore.pos[i] + self.Lmax) * self.invCellSizes[i]) \ return [floor( (porePos[i] + self.Lmax) * self.invCellSizes[i]) \ for i in range(self.dim)] for i in range(self.dim)] # Compute index of given pore in cell list based on position # Compute index of given pore in cell list based on position def pore_to_index(self, pore: Pore) -> int: 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

51.5 KB

 ... @@ -22,6 +22,8 @@ ... @@ -22,6 +22,8 @@ \@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax } \@writefile{lot}{\boolfalse {citerequest}\boolfalse {citetracker}\boolfalse {pagetracker}\boolfalse {backtracker}\relax } \abx@aux@cite{MEYER2021103936} \abx@aux@cite{MEYER2021103936} \abx@aux@segm{0}{0}{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@cite{petsc-web-page} \abx@aux@segm{0}{0}{petsc-web-page} \abx@aux@segm{0}{0}{petsc-web-page} \abx@aux@cite{MEYER2021103936} \abx@aux@cite{MEYER2021103936} ... @@ -34,12 +36,19 @@ ... @@ -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.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.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 } \@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 } \@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}} \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}{}} \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 } \@writefile{toc}{\defcounter {refsection}{0}\relax }\@writefile{toc}{\contentsline {section}{\numberline {3}Parallel Network Generation Algorithm}{4}{section.3}\protected@file@percent } \newlabel{appendix:install}{{A}{4}{PETSc Installation}{appendix.A}{}} \@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@refcontextdefaultsdone \abx@aux@defaultrefcontext{0}{MEYER2021103936}{none/global//global/global} \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}{petsc-web-page}{none/global//global/global} \abx@aux@defaultrefcontext{0}{hypre-web-page}{none/global//global/global} \abx@aux@defaultrefcontext{0}{hypre-web-page}{none/global//global/global}
 ... @@ -33,6 +33,7 @@ ... @@ -33,6 +33,7 @@ \strng{authorbibnamehash}{37d55c92e258fd275792cded40da151b} \strng{authorbibnamehash}{37d55c92e258fd275792cded40da151b} \strng{authornamehash}{37d55c92e258fd275792cded40da151b} \strng{authornamehash}{37d55c92e258fd275792cded40da151b} \strng{authorfullhash}{37d55c92e258fd275792cded40da151b} \strng{authorfullhash}{37d55c92e258fd275792cded40da151b} \field{extraname}{1} \field{sortinit}{1} \field{sortinit}{1} \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} \field{sortinithash}{50c6687d7fc80f50136d75228e3c59ba} \field{labelnamesource}{author} \field{labelnamesource}{author} ... @@ -56,6 +57,44 @@ ... @@ -56,6 +57,44 @@ \endverb \endverb \keyw{Dendrogram,Clustering,Networks,Generator,Connectivity,Heterogeneity} \keyw{Dendrogram,Clustering,Networks,Generator,Connectivity,Heterogeneity} \endentry \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}{} \entry{petsc-web-page}{misc}{} \name{author}{34}{}{% \name{author}{34}{}{% {{hash=0661bc042688479e939e81e7f9185f66}{% {{hash=0661bc042688479e939e81e7f9185f66}{% ... @@ -235,8 +274,8 @@ ... @@ -235,8 +274,8 @@ \strng{authorbibnamehash}{456de0534e91c8a938d1b1a557f67342} \strng{authorbibnamehash}{456de0534e91c8a938d1b1a557f67342} \strng{authornamehash}{456de0534e91c8a938d1b1a557f67342} \strng{authornamehash}{456de0534e91c8a938d1b1a557f67342} \strng{authorfullhash}{807f16eca96be7bc621c3deb59d17345} \strng{authorfullhash}{807f16eca96be7bc621c3deb59d17345} \field{sortinit}{2} \field{sortinit}{3} \field{sortinithash}{ed39bb39cf854d5250e95b1c1f94f4ed} \field{sortinithash}{a37a8ef248a93c322189792c34fc68c9} \field{labelnamesource}{author} \field{labelnamesource}{author} \field{labeltitlesource}{title} \field{labeltitlesource}{title} \field{howpublished}{\url{https://petsc.org/}} \field{howpublished}{\url{https://petsc.org/}} ... @@ -253,8 +292,8 @@ ... @@ -253,8 +292,8 @@ \list{organization}{1}{% \list{organization}{1}{% {Lawrence Livermore National Laboratory}% {Lawrence Livermore National Laboratory}% } } \field{sortinit}{3} \field{sortinit}{5} \field{sortinithash}{a37a8ef248a93c322189792c34fc68c9} \field{sortinithash}{5dd416adbafacc8226114bc0202d5fdd} \field{labeltitlesource}{title} \field{labeltitlesource}{title} \field{note}{\url{http://www.llnl.gov/CASC/hypre/}} \field{note}{\url{http://www.llnl.gov/CASC/hypre/}} \field{title}{{\sl hypre}: High Performance Preconditioners} \field{title}{{\sl hypre}: High Performance Preconditioners} ... ...
 ... @@ -2180,14 +2180,18 @@ ... @@ -2180,14 +2180,18 @@ bib/RandomGenerationFlowNetworks.bib bib/RandomGenerationFlowNetworks.bib bib/netflow.bib bib/petsc.bib bib/petsc.bib bib/hypre.bib bib/hypre.bib MEYER2021103936 MEYER2021103936 petsc-web-page MEYER2021101592 MEYER2021103936 petsc-web-page hypre-web-page MEYER2021103936 hypre-web-page MEYER2021101592 MEYER2021103936 ... ...
 [0] Config.pm:304> INFO - This is Biber 2.14 (beta) [0] Config.pm:304> INFO - This is Biber 2.14 (beta) [0] Config.pm:307> INFO - Logfile is 'thesis.blg' [0] Config.pm:307> INFO - Logfile is 'thesis.blg' [100] biber:322> INFO - === Mo Okt 18, 2021, 15:11:28 [98] biber:322> INFO - === Sa Nov 27, 2021, 16:53:16 [116] Biber.pm:415> INFO - Reading 'thesis.bcf' [114] Biber.pm:415> INFO - Reading 'thesis.bcf' [198] Biber.pm:943> INFO - Found 3 citekeys in bib section 0 [196] Biber.pm:943> INFO - Found 4 citekeys in bib section 0 [215] Biber.pm:4256> INFO - Processing section 0 [213] Biber.pm:4256> INFO - Processing section 0 [216] Utils.pm:75> INFO - Globbing data source 'bib/RandomGenerationFlowNetworks.bib' [213] 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 [214] 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' [214] Utils.pm:75> INFO - Globbing data source 'bib/netflow.bib' [216] Utils.pm:91> INFO - Globbed data source 'bib/petsc.bib' to bib/petsc.bib [214] Utils.pm:91> INFO - Globbed data source 'bib/netflow.bib' to bib/netflow.bib [216] Utils.pm:75> INFO - Globbing data source 'bib/hypre.bib' [214] Utils.pm:75> INFO - Globbing data source 'bib/petsc.bib' [216] Utils.pm:91> INFO - Globbed data source 'bib/hypre.bib' to bib/hypre.bib [214] Utils.pm:91> INFO - Globbed data source 'bib/petsc.bib' to bib/petsc.bib [228] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/RandomGenerationFlowNetworks.bib' for section 0 [214] Utils.pm:75> INFO - Globbing data source 'bib/hypre.bib' [229] bibtex.pm:1653> INFO - LaTeX decoding ... [214] Utils.pm:91> INFO - Globbed data source 'bib/hypre.bib' to bib/hypre.bib [234] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/RandomGenerationFlowNetworks.bib' [226] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/RandomGenerationFlowNetworks.bib' for section 0 [257] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/petsc.bib' for section 0 [227] bibtex.pm:1653> INFO - LaTeX decoding ... [257] bibtex.pm:1653> INFO - LaTeX decoding ... [232] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/RandomGenerationFlowNetworks.bib' [263] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/petsc.bib' [255] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/netflow.bib' for section 0 [320] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/hypre.bib' for section 0 [256] bibtex.pm:1653> INFO - LaTeX decoding ... [321] bibtex.pm:1653> INFO - LaTeX decoding ... [261] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/netflow.bib' [322] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/hypre.bib' [265] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/petsc.bib' for section 0 [336] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'variable = shifted' with 'variable = non-ignorable' [266] bibtex.pm:1653> INFO - LaTeX decoding ... [336] UCollate.pm:68> INFO - Overriding locale 'en-US' defaults 'normalization = NFD' with 'normalization = prenormalized' [271] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/petsc.bib' [336] Biber.pm:4084> INFO - Sorting list 'none/global//global/global' of type 'entry' with template 'none' and locale 'en-US' [334] Biber.pm:4455> INFO - Looking for bibtex format file 'bib/hypre.bib' for section 0 [336] Biber.pm:4090> INFO - No sort tailoring available for locale 'en-US' [335] bibtex.pm:1653> INFO - LaTeX decoding ... [344] bbl.pm:652> INFO - Writing 'thesis.bbl' with encoding 'UTF-8' [336] bibtex.pm:1471> INFO - Found BibTeX data source 'bib/hypre.bib' [354] bbl.pm:755> INFO - Output to thesis.bbl [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 entering extended mode restricted \write18 enabled. restricted \write18 enabled. %&-line parsing enabled. %&-line parsing enabled. ... @@ -803,22 +803,22 @@ File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode ... @@ -803,22 +803,22 @@ File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode (./thesis.aux) (./thesis.aux) \openout1 = thesis.aux'. \openout1 = thesis.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it 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 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 20. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 20. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 20. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 20. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 20. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 20. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 20. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 21. LaTeX Font Info: ... okay on input line 20. LaTeX Font Info: ... okay on input line 21. Package biblatex Info: Trying to load language 'english'... Package biblatex Info: Trying to load language 'english'... Package biblatex Info: ... file 'english.lbx' found. Package biblatex Info: ... file 'english.lbx' found. ... @@ -834,8 +834,8 @@ Package biblatex Info: Trying to load bibliographic data... ... @@ -834,8 +834,8 @@ Package biblatex Info: Trying to load bibliographic data... Package biblatex Info: ... file 'thesis.bbl' found. Package biblatex Info: ... file 'thesis.bbl' found. (./thesis.bbl) (./thesis.bbl) Package biblatex Info: Reference section=0 on input line 20. Package biblatex Info: Reference section=0 on input line 21. Package biblatex Info: Reference segment=0 on input line 20. Package biblatex Info: Reference segment=0 on input line 21. Package caption Info: Begin \AtBeginDocument code. Package caption Info: Begin \AtBeginDocument code. Package caption Info: hyperref package is loaded. Package caption Info: hyperref package is loaded. Package caption Info: listings 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 ... @@ -864,7 +864,7 @@ File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e e )) )) \AtBeginShipoutBox=\box106 \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 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section 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) ... @@ -877,9 +877,9 @@ Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) ) ) \c@section@level=\count427 \c@section@level=\count427 ) ) LaTeX Info: Redefining \ref on input line 20. LaTeX Info: Redefining \ref on input line 21. LaTeX Info: Redefining \pageref on input line 20. LaTeX Info: Redefining \pageref on input line 21. LaTeX Info: Redefining \nameref on input line 20. LaTeX Info: Redefining \nameref on input line 21. (./thesis.out) (./thesis.out) (./thesis.out) (./thesis.out) \@outlinefile=\write5 \@outlinefile=\write5 ... @@ -887,47 +887,57 @@ LaTeX Info: Redefining \nameref on input line 20. ... @@ -887,47 +887,57 @@ LaTeX Info: Redefining \nameref on input line 20. \c@lstlisting=\count428 \c@lstlisting=\count428 LaTeX Font Info: External font cmex10' loaded for size 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 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 LaTeX Font Info: External font cmex10' loaded for size (Font) <6> on input line 22. (Font) <6> on input line 23. [1 [1 {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] File: plots/flux_PETSC.png Graphic file (type png) File: plots/flux_PETSC.png Graphic file (type 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. (pdftex.def) Requested size: 276.00105pt x 207.01175pt. LaTeX Font Info: External font cmex10' loaded for size 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 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'. LaTeX Warning: h' float specifier changed to ht'. [3] [4 <./plots/flux_PETSC.png>] [5] [3] Package atveryend Info: Empty hook BeforeClearDocument' on input line 92. Underfull \hbox (badness 10000) in paragraph at lines 71--71 Package atveryend Info: Empty hook AfterLastShipout' on input line 92. []\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) (./thesis.aux) Package atveryend Info: Executing hook AtVeryEndDocument' on input line 92. Package atveryend Info: Executing hook AtVeryEndDocument' on input line 100. Package atveryend Info: Executing hook AtEndAfterFileList' on input line 92. Package atveryend Info: Executing hook AtEndAfterFileList' on input line 100. Package rerunfilecheck Info: File thesis.out' has not changed. 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'. Package logreq Info: Writing requests to 'thesis.run.xml'. \openout1 = thesis.run.xml'. \openout1 = thesis.run.xml'. ) ) Here is how much of TeX's memory you used: Here is how much of TeX's memory you used: 24847 strings out of 483107 24865 strings out of 483107 472657 string characters out of 5964630 473080 string characters out of 5964630 1096284 words of memory out of 5000000 1096648 words of memory out of 5000000 39488 multiletter control sequences out of 15000+600000 39502 multiletter control sequences out of 15000+600000 538403 words of font info for 44 fonts, out of 8000000 for 9000 538403 words of font info for 44 fonts, out of 8000000 for 9000 59 hyphenation exceptions out of 8191 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 ts/cm/cmtt10.pfb> Output written on thesis.pdf (5 pages, 171338 bytes). Output written on thesis.pdf (6 pages, 177016 bytes). PDF statistics: PDF statistics: 133 PDF objects out of 1000 (max. 8388607) 154 PDF objects out of 1000 (max. 8388607) 111 compressed objects within 2 object streams 131 compressed objects within 2 object streams 18 named destinations out of 1000 (max. 500000) 22 named destinations out of 1000 (max. 500000) 74 words of extra memory for PDF output out of 10000 (max. 10000000) 90 words of extra memory for PDF output out of 10000 (max. 10000000)
 ... @@ -4,4 +4,6 @@ ... @@ -4,4 +4,6 @@ \BOOKMARK [2][-]{subsection.2.2}{Solver}{section.2}% 4 \BOOKMARK [2][-]{subsection.2.2}{Solver}{section.2}% 4 \BOOKMARK [2][-]{subsection.2.3}{Limitations}{section.2}% 5 \BOOKMARK [2][-]{subsection.2.3}{Limitations}{section.2}% 5 \BOOKMARK [2][-]{subsection.2.4}{Results}{section.2}% 6 \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 @@ ... @@ -80,6 +80,7 @@ bib/RandomGenerationFlowNetworks.bib bib/RandomGenerationFlowNetworks.bib bib/netflow.bib bib/petsc.bib bib/petsc.bib bib/hypre.bib bib/hypre.bib ... ...
No preview for this file type
 ... @@ -14,6 +14,7 @@ ... @@ -14,6 +14,7 @@ % references % references \addbibresource{bib/RandomGenerationFlowNetworks.bib} \addbibresource{bib/RandomGenerationFlowNetworks.bib} \addbibresource{bib/netflow.bib} \addbibresource{bib/petsc.bib} \addbibresource{bib/petsc.bib} \addbibresource{bib/hypre.bib} \addbibresource{bib/hypre.bib} ... @@ -40,12 +41,12 @@ ... @@ -40,12 +41,12 @@ \newpage \newpage \begin{center} \Large{\textbf{Abstract}} \end{center} \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} \vspace{5ex} \begin{multicols}{2} \begin{multicols}{2} \section{Introduction} \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} \section{Parallel Flow Solver} \subsection{PETSc Interface} \subsection{PETSc Interface} ... @@ -66,6 +67,13 @@ ... @@ -66,6 +67,13 @@ \label{fig:balance} \label{fig:balance} \end{figure} \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 \newpage \appendix \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)