From f0c2a511d4436d2752080aa07a55cb732ce8ef72 Mon Sep 17 00:00:00 2001 From: podlesny <podlesny@zedat.fu-berlin.de> Date: Thu, 18 Jun 2020 20:59:52 +0200 Subject: [PATCH] . --- .../utils/levelinterfacenetworkwriter.hh | 30 ++++---- src/cantorfaultnetworks/cantorfaultnetwork.cc | 6 +- .../sparsecantorfaultnetwork.cc | 16 ++--- .../sparsecantorfaultnetwork.parset | 35 ++++++++- src/geofaultnetworks/results/rock/plot.tex | 12 ++-- src/geofaultnetworks/rockfaultnetwork.parset | 72 ++++++++++++++++++- 6 files changed, 135 insertions(+), 36 deletions(-) diff --git a/dune/faultnetworks/utils/levelinterfacenetworkwriter.hh b/dune/faultnetworks/utils/levelinterfacenetworkwriter.hh index be074b5..d2012b5 100644 --- a/dune/faultnetworks/utils/levelinterfacenetworkwriter.hh +++ b/dune/faultnetworks/utils/levelinterfacenetworkwriter.hh @@ -41,7 +41,7 @@ class LevelInterfaceNetworkWriter { writeVertex(vertices[i], file); file << " -- "; writeVertex(vertices[j], file); - file << ";\n"; + file << ";%\n"; } } } @@ -76,23 +76,23 @@ class LevelInterfaceNetworkWriter { if (file.is_open()) { // define custom MATLAB colors - file << "\\definecolor{MATLABred}{RGB}{162,20,47}\n"; - file << "\\definecolor{MATLABblue}{RGB}{0,114,189}\n"; - file << "\\definecolor{MATLABgreen}{RGB}{60,140,40}\n"; - file << "\\definecolor{MATLABorange}{RGB}{212,83,25}\n"; - file << "\\definecolor{MATLAByellow}{RGB}{237,177,32}\n"; - file << "\\definecolor{lightGray}{RGB}{211,211,211}\n"; - file << "\n"; - - file << "\\colorlet{boundary}{black}\n"; - file << "\\colorlet{grid}{lightGray}\n"; + file << "\\definecolor{MATLABred}{RGB}{162,20,47}%\n"; + file << "\\definecolor{MATLABblue}{RGB}{0,114,189}%\n"; + file << "\\definecolor{MATLABgreen}{RGB}{60,140,40}%\n"; + file << "\\definecolor{MATLABorange}{RGB}{212,83,25}%\n"; + file << "\\definecolor{MATLAByellow}{RGB}{237,177,32}%\n"; + file << "\\definecolor{lightGray}{RGB}{211,211,211}%\n"; + file << "%\n"; + + file << "\\colorlet{boundary}{black}%\n"; + file << "\\colorlet{grid}{lightGray}%\n"; for (size_t i=0; i<=levelInterfaceNetwork.level(); i++) { - file << "\\colorlet{level" << i << "}{black}\n"; + file << "\\colorlet{level" << i << "}{black}%\n"; } - file << "\n"; + file << "%\n"; - file << "\\begin{tikzpicture}[scale=\\scale]\n"; + file << "\\begin{tikzpicture}[scale=\\scale]%\n"; const GridView& gridView = levelInterfaceNetwork.levelGridView(); @@ -147,7 +147,7 @@ class LevelInterfaceNetworkWriter { } } - file << "\\end{tikzpicture}\n"; + file << "\\end{tikzpicture}%"; file.close(); } else { DUNE_THROW(Exception, "Unable to open " << filePath_ << " for writing!"); diff --git a/src/cantorfaultnetworks/cantorfaultnetwork.cc b/src/cantorfaultnetworks/cantorfaultnetwork.cc index b97a447..121b454 100644 --- a/src/cantorfaultnetworks/cantorfaultnetwork.cc +++ b/src/cantorfaultnetworks/cantorfaultnetwork.cc @@ -161,8 +161,8 @@ int main(int argc, char** argv) { try CantorFaultFactory<GridType> faultFactory(levelToCantorLevel, coarseResolution, exactLevelIdx, maxCantorLevel); const InterfaceNetwork<GridType>& interfaceNetwork = faultFactory.interfaceNetwork(); - /*if (problemCount==0) { - std::vector<int> writeLevels {1, 2, 8}; + if (problemCount==0) { + std::vector<int> writeLevels {1, 2}; for (size_t i=0; i<writeLevels.size(); i++) { int writeLevel = writeLevels[i]; bool writeGrid = !(writeLevel==8); @@ -170,7 +170,7 @@ int main(int argc, char** argv) { try LevelInterfaceNetworkWriter networkWriter(resultPath + "levelinterfacenetwork_" + std::to_string(writeLevel) + ".tikz"); networkWriter.write(interfaceNetwork.levelInterfaceNetwork(writeLevel), writeGrid); } - }*/ + } const GridType& grid = faultFactory.grid(); diff --git a/src/cantorfaultnetworks/sparsecantorfaultnetwork.cc b/src/cantorfaultnetworks/sparsecantorfaultnetwork.cc index 8c1da5b..1849acf 100644 --- a/src/cantorfaultnetworks/sparsecantorfaultnetwork.cc +++ b/src/cantorfaultnetworks/sparsecantorfaultnetwork.cc @@ -154,16 +154,16 @@ int main(int argc, char** argv) { try SparseCantorFaultFactory<GridType> faultFactory(minCantorLevel, maxCantorLevel); const auto& interfaceNetwork = faultFactory.interfaceNetwork(); - if (problemCount==0) { - std::vector<int> writeLevels {0, 1, 2}; + /* if (problemCount==0) { + std::vector<int> writeLevels {0, 2, 4, 6, 8}; for (size_t i=0; i<writeLevels.size(); i++) { int writeLevel = writeLevels[i]; - bool writeGrid = !(writeLevel==8); + bool writeGrid = false; //writeLevel<7; LevelInterfaceNetworkWriter networkWriter(resultPath + "levelinterfacenetwork_" + std::to_string(writeLevel) + ".tikz"); networkWriter.write(interfaceNetwork.levelInterfaceNetwork(writeLevel), writeGrid); } - } + }*/ const GridType& grid = faultFactory.grid(); @@ -195,7 +195,7 @@ int main(int argc, char** argv) { try std::vector<std::shared_ptr<LocalInterfaceAssembler>> coarseLocalInterfaceAssemblers(coarseLevelInterfaceNetwork.size()); for (size_t i=0; i<coarseLocalInterfaceAssemblers.size(); i++) { - const int k = minCantorLevel + coarseLevelInterfaceNetwork.getIntersectionsLevels().at(i); + const int k = minCantorLevel + coarseLevelInterfaceNetwork.getIntersectionsLevels().at(i)/2; const double pen = (1+1.0/c) * std::pow(1.0+c, k) * std::pow(2.0, k); coarseLocalInterfaceAssemblers[i] = std::make_shared<LocalInterfaceAssembler>(B, 2, pen); } @@ -236,7 +236,7 @@ int main(int argc, char** argv) { try std::vector<std::shared_ptr<LocalInterfaceAssembler>> exactLocalInterfaceAssemblers(exactLevelInterfaceNetwork.size()); for (size_t i=0; i<exactLocalInterfaceAssemblers.size(); i++) { - const int k = minCantorLevel + exactLevelInterfaceNetwork.getIntersectionsLevels().at(i); + const int k = minCantorLevel + exactLevelInterfaceNetwork.getIntersectionsLevels().at(i)/2; const double pen = (1+1.0/c) * std::pow(1.0+c, k) * std::pow(2.0, k); exactLocalInterfaceAssemblers[i] = std::make_shared<LocalInterfaceAssembler>(B, 2, pen); } @@ -264,7 +264,7 @@ int main(int argc, char** argv) { try std::vector<std::shared_ptr<LocalInterfaceAssembler>> fineLocalInterfaceAssemblers(fineLevelInterfaceNetwork.size()); for (size_t i=0; i<fineLocalInterfaceAssemblers.size(); i++) { - const int k = minCantorLevel + fineLevelInterfaceNetwork.getIntersectionsLevels().at(i); + const int k = minCantorLevel + fineLevelInterfaceNetwork.getIntersectionsLevels().at(i)/2; const double pen = (1+1.0/c) * std::pow(1.0+c, k) * std::pow(2.0, k); fineLocalInterfaceAssemblers[i] = std::make_shared<LocalInterfaceAssembler>(B, 2, pen); } @@ -298,7 +298,7 @@ int main(int argc, char** argv) { try std::vector<std::shared_ptr<LocalInterfaceAssembler>>& levelLocalIntersectionAssemblers = localIntersectionAssemblers[i]; levelLocalIntersectionAssemblers.resize(levelInterfaceNetwork.size()); for (size_t j=0; j<levelLocalIntersectionAssemblers.size(); j++) { - const int k = minCantorLevel + levelInterfaceNetwork.getIntersectionsLevels().at(j); + const int k = minCantorLevel + levelInterfaceNetwork.getIntersectionsLevels().at(j)/2; const double pen = (1+1.0/c) * std::pow(1.0+c, k) * std::pow(2.0, k); levelLocalIntersectionAssemblers[j] = std::make_shared<LocalInterfaceAssembler>(B, 2, pen); } diff --git a/src/cantorfaultnetworks/sparsecantorfaultnetwork.parset b/src/cantorfaultnetworks/sparsecantorfaultnetwork.parset index 31cd4c7..a5a180c 100644 --- a/src/cantorfaultnetworks/sparsecantorfaultnetwork.parset +++ b/src/cantorfaultnetworks/sparsecantorfaultnetwork.parset @@ -3,7 +3,7 @@ resultPath = ../cantorfaultnetworks/results/sparse/ [preconditioner] patch = SUPPORT # CELL , SUPPORT -mode = MULTIPLICATIVE # ADDITIVE , MULTIPLICATIVE +mode = ADDITIVE # ADDITIVE , MULTIPLICATIVE multDirection = SYMMETRIC # SYMMETRIC , FORWARD , BACKWARD patchDepth = 1 @@ -12,6 +12,37 @@ patchDepth = 1 [problem0] oscDataFile = oscDataLaplace4.mat +# level resolution in 2^(-...) +coarseCantorLevel = 1 +fineCantorLevel = 2 +maxCantorLevel = 3 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + +[problem1] +oscDataFile = oscDataLaplace4.mat + +# level resolution in 2^(-...) +coarseCantorLevel = 1 +fineCantorLevel = 3 +maxCantorLevel = 4 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + + +[problem2] +oscDataFile = oscDataLaplace4.mat + # level resolution in 2^(-...) coarseCantorLevel = 1 fineCantorLevel = 4 @@ -23,5 +54,3 @@ penaltyFactor = 1 nestedIteration = 0 tol = 1e-12 maxIterations = 8 - -########################################### diff --git a/src/geofaultnetworks/results/rock/plot.tex b/src/geofaultnetworks/results/rock/plot.tex index 3053ad8..9600750 100644 --- a/src/geofaultnetworks/results/rock/plot.tex +++ b/src/geofaultnetworks/results/rock/plot.tex @@ -7,19 +7,21 @@ \def\scale{6} \begin{minipage}[t]{0.45\linewidth} \flushleft - \input{levelinterfacenetwork_0.tikz}\\ + %\input{levelinterfacenetwork_0.tikz}\\ \vspace{2em} - \input{levelinterfacenetwork_1.tikz}\\ + %\input{levelinterfacenetwork_1.tikz}\\ \vspace{2em} - \input{levelinterfacenetwork_2.tikz}\\ + %\input{levelinterfacenetwork_2.tikz}\\ \vfill \end{minipage} \hspace{3em} \begin{minipage}[t]{0.45\linewidth} \flushright - \input{levelinterfacenetwork_3.tikz}\\ + %\input{levelinterfacenetwork_3.tikz}\\ \vspace{2em} - \input{levelinterfacenetwork_4.tikz} + %\input{levelinterfacenetwork_4.tikz}\\ + \vspace{2em} + \input{levelinterfacenetwork_5.tikz} \vfill \end{minipage} \end{document} \ No newline at end of file diff --git a/src/geofaultnetworks/rockfaultnetwork.parset b/src/geofaultnetworks/rockfaultnetwork.parset index a977724..283eb84 100644 --- a/src/geofaultnetworks/rockfaultnetwork.parset +++ b/src/geofaultnetworks/rockfaultnetwork.parset @@ -2,7 +2,7 @@ path = ../data/ resultPath = ../geofaultnetworks/results/rock/ [network] -randomSeed = 5 +randomSeed = 15 maxAngle = 2.0 [preconditioner] @@ -17,7 +17,24 @@ patchDepth = 1 oscDataFile = oscDataLaplace4.mat # level resolution in 2^(-...) -coarseResolution = 5 +coarseResolution = 4 +fineResolution = 9 +exactResolution = 10 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + +########################################### + +[problem1] +oscDataFile = oscDataLaplace4.mat + +# level resolution in 2^(-...) +coarseResolution = 4 fineResolution = 8 exactResolution = 9 @@ -29,3 +46,54 @@ tol = 1e-12 maxIterations = 8 ########################################### + +[problem2] +oscDataFile = oscDataLaplace4.mat + +# level resolution in 2^(-...) +coarseResolution = 4 +fineResolution = 7 +exactResolution = 8 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + +########################################### + +[problem3] +oscDataFile = oscDataLaplace4.mat + +# level resolution in 2^(-...) +coarseResolution = 4 +fineResolution = 6 +exactResolution = 7 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + +########################################### + +[problem4] +oscDataFile = oscDataLaplace4.mat + +# level resolution in 2^(-...) +coarseResolution = 4 +fineResolution = 5 +exactResolution = 6 + +penaltyFactor = 1 + +# cg solver +nestedIteration = 0 +tol = 1e-12 +maxIterations = 8 + +########################################### -- GitLab