Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env python3
#
# This installs the module SummerSchool2021-PAA and its dependencies.
# The exact revisions used are listed in the table below.
# However, note that this script may also apply further patches.
# If so, all patches are required to be the current folder, or,
# in the one that you specified as argument to this script.
#
#
# | module name | branch name | commit sha | commit date |
# |------------------------|-----------------------|--------------------------------------------|-----------------------------|
# | dune-common | origin/releases/2.7 | aa689abba532f40db8f5663fa379ea77211c1953 | 2020-11-10 13:36:21 +0000 |
# | dune-localfunctions | origin/releases/2.7 | 68f1bcf32d9068c258707d241624a08b771b6fde | 2020-11-26 23:45:36 +0000 |
# | dune-alugrid | origin/releases/2.7 | 51bde29a2dfa7cfac4fb73d40ffd42b9c1eb1d3d | 2021-04-22 15:10:17 +0200 |
# | dune-geometry | origin/releases/2.7 | 9d56be3e286bc761dd5d453332a8d793eff00cbe | 2020-11-26 23:26:48 +0000 |
# | dune-istl | origin/releases/2.7 | 761b28aa1deaa786ec55584ace99667545f1b493 | 2020-11-26 23:29:21 +0000 |
# | dune-uggrid | origin/releases/2.7 | 1fe87a92c3f7024dd8fb4f3e7764f7a74b794633 | 2021-06-01 20:53:44 +0000 |
# | dune-grid | origin/releases/2.7 | b7741c6599528bc42017e25f70eb6dd3b5780277 | 2020-11-26 23:30:08 +0000 |
# | dune-subgrid | origin/master | c0f298d09cd66d5647951d6797cdb1524683abae | 2021-04-20 06:54:40 +0000 |
# | dune-foamgrid | origin/master | d49187be4940227c945ced02f8457ccc9d47536a | 2020-01-06 15:36:03 +0000 |
# | dumux-course | origin/master | 0a53b97b21a725f63cc06502dbd03f814af17ee5 | 2021-05-18 21:30:51 +0000 |
# | dumux | origin/master | 4455a367f42bc2ea985045737073c4f3e8c3f76d | 2021-08-03 07:01:17 +0000 |
# | SummerSchool2021-PAA | origin/master | dc0bbbdc81e701c5f96238e247874655713dfab7 | 2021-08-03 09:52:49 +0200 |
import os
import sys
import subprocess
top = "DUMUX"
os.makedirs(top, exist_ok=True)
def runFromSubFolder(cmd, subFolder):
folder = os.path.join(top, subFolder)
try:
subprocess.run(cmd, cwd=folder, check=True)
except Exception as e:
cmdString = ' '.join(cmd)
sys.exit(
"Error when calling:\n{}\n-> folder: {}\n-> error: {}"
.format(cmdString, folder, str(e))
)
def installModule(subFolder, url, branch, revision):
targetFolder = url.rstrip(".git").split("/")[-1]
if not os.path.exists(targetFolder):
runFromSubFolder(['git', 'clone', url, targetFolder], '.')
runFromSubFolder(['git', 'checkout', branch], subFolder)
runFromSubFolder(['git', 'reset', '--hard', revision], subFolder)
else:
print(f'Skip cloning {url} since target folder "{targetFolder}" already exists.')
def applyPatch(subFolder, patch):
sfPath = os.path.join(top, subFolder)
patchPath = os.path.join(sfPath, 'tmp.patch')
with open(patchPath, 'w') as patchFile:
patchFile.write(patch)
runFromSubFolder(['git', 'apply', 'tmp.patch'], subFolder)
os.remove(patchPath)
print("Installing dune-localfunctions")
installModule("dune-localfunctions", "https://gitlab.dune-project.org/core/dune-localfunctions.git", "origin/releases/2.7", "68f1bcf32d9068c258707d241624a08b771b6fde")
print("Installing dune-alugrid")
installModule("dune-alugrid", "https://gitlab.dune-project.org/extensions/dune-alugrid.git", "origin/releases/2.7", "51bde29a2dfa7cfac4fb73d40ffd42b9c1eb1d3d")
print("Installing summerschool2021-paa")
installModule("summerschool2021-paa", "https://git.iws.uni-stuttgart.de/dumux-pub/summerschool2021-paa.git", "origin/master", "dc0bbbdc81e701c5f96238e247874655713dfab7")
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
print("Installing dune-subgrid")
installModule("dune-subgrid", "https://git.imp.fu-berlin.de/agnumpde/dune-subgrid.git", "origin/master", "c0f298d09cd66d5647951d6797cdb1524683abae")
print("Installing dune-foamgrid")
installModule("dune-foamgrid", "https://gitlab.dune-project.org/extensions/dune-foamgrid.git", "origin/master", "d49187be4940227c945ced02f8457ccc9d47536a")
print("Installing dune-istl")
installModule("dune-istl", "https://gitlab.dune-project.org/core/dune-istl.git", "origin/releases/2.7", "761b28aa1deaa786ec55584ace99667545f1b493")
print("Installing dune-geometry")
installModule("dune-geometry", "https://gitlab.dune-project.org/core/dune-geometry.git", "origin/releases/2.7", "9d56be3e286bc761dd5d453332a8d793eff00cbe")
print("Installing dumux-course")
installModule("dumux-course", "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course.git", "origin/master", "0a53b97b21a725f63cc06502dbd03f814af17ee5")
print("Installing dumux")
installModule("dumux", "https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git", "origin/master", "4455a367f42bc2ea985045737073c4f3e8c3f76d")
print("Installing dune-uggrid")
installModule("dune-uggrid", "https://gitlab.dune-project.org//staging/dune-uggrid.git", "origin/releases/2.7", "1fe87a92c3f7024dd8fb4f3e7764f7a74b794633")
print("Installing dune-grid")
installModule("dune-grid", "https://gitlab.dune-project.org/core/dune-grid.git", "origin/releases/2.7", "b7741c6599528bc42017e25f70eb6dd3b5780277")
print("Installing dune-common")
installModule("dune-common", "https://gitlab.dune-project.org/core/dune-common.git", "origin/releases/2.7", "aa689abba532f40db8f5663fa379ea77211c1953")
print("Applying patch for dune-subgrid for load balance requirement")
patch = """
diff --git a/dune/subgrid/subgrid.hh b/dune/subgrid/subgrid.hh
index 7405c29..f776495 100644
--- a/dune/subgrid/subgrid.hh
+++ b/dune/subgrid/subgrid.hh
@@ -842,7 +842,7 @@ class SubGrid :
}
-#if 0
+#if 1
/** \\brief Distributes this grid over the available nodes in a distributed machine
*
* \\param minlevel The coarsest grid level that gets distributed
@@ -851,6 +851,7 @@ class SubGrid :
void loadBalance(int strategy, int minlevel, int depth, int maxlevel, int minelement){
DUNE_THROW(NotImplemented, \"SubGrid::loadBalance()\");
}
+ void loadBalance(){}
/** \\brief The communication interface
* @param T: array class holding data associated with the entities
"""
applyPatch("dune-subgrid", patch)
print("Configuring project")
runFromSubFolder(
['./dune-common/bin/dunecontrol', '--opts=SummerSchool2021-PAA/cmake.opts', 'all'],
'.'
)