zoomy-core 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of zoomy-core might be problematic. Click here for more details.
- zoomy_core/decorators/decorators.py +25 -0
- zoomy_core/fvm/flux.py +97 -0
- zoomy_core/fvm/nonconservative_flux.py +97 -0
- zoomy_core/fvm/ode.py +55 -0
- zoomy_core/fvm/solver_numpy.py +305 -0
- zoomy_core/fvm/timestepping.py +13 -0
- zoomy_core/mesh/gmsh_loader.py +301 -0
- zoomy_core/mesh/mesh.py +1192 -0
- zoomy_core/mesh/mesh_extrude.py +168 -0
- zoomy_core/mesh/mesh_util.py +487 -0
- zoomy_core/misc/custom_types.py +6 -0
- zoomy_core/misc/gui.py +61 -0
- zoomy_core/misc/interpolation.py +140 -0
- zoomy_core/misc/io.py +401 -0
- zoomy_core/misc/logger_config.py +18 -0
- zoomy_core/misc/misc.py +216 -0
- zoomy_core/misc/static_class.py +94 -0
- zoomy_core/model/analysis.py +147 -0
- zoomy_core/model/basefunction.py +113 -0
- zoomy_core/model/basemodel.py +512 -0
- zoomy_core/model/boundary_conditions.py +193 -0
- zoomy_core/model/initial_conditions.py +171 -0
- zoomy_core/model/model.py +63 -0
- zoomy_core/model/models/GN.py +70 -0
- zoomy_core/model/models/advection.py +53 -0
- zoomy_core/model/models/basisfunctions.py +181 -0
- zoomy_core/model/models/basismatrices.py +377 -0
- zoomy_core/model/models/core.py +564 -0
- zoomy_core/model/models/coupled_constrained.py +60 -0
- zoomy_core/model/models/old_smm copy.py +867 -0
- zoomy_core/model/models/poisson.py +41 -0
- zoomy_core/model/models/shallow_moments.py +757 -0
- zoomy_core/model/models/shallow_moments_sediment.py +378 -0
- zoomy_core/model/models/shallow_moments_topo.py +423 -0
- zoomy_core/model/models/shallow_moments_variants.py +1509 -0
- zoomy_core/model/models/shallow_water.py +266 -0
- zoomy_core/model/models/shallow_water_topo.py +111 -0
- zoomy_core/model/models/shear_shallow_flow.py +594 -0
- zoomy_core/model/models/sme_turbulent.py +613 -0
- zoomy_core/model/models/swe_old.py +1018 -0
- zoomy_core/model/models/vam.py +455 -0
- zoomy_core/postprocessing/postprocessing.py +72 -0
- zoomy_core/preprocessing/openfoam_moments.py +452 -0
- zoomy_core/transformation/helpers.py +25 -0
- zoomy_core/transformation/to_amrex.py +238 -0
- zoomy_core/transformation/to_c.py +181 -0
- zoomy_core/transformation/to_jax.py +14 -0
- zoomy_core/transformation/to_numpy.py +115 -0
- zoomy_core/transformation/to_openfoam.py +254 -0
- zoomy_core/transformation/to_ufl.py +67 -0
- {zoomy_core-0.1.0.dist-info → zoomy_core-0.1.2.dist-info}/METADATA +1 -1
- zoomy_core-0.1.2.dist-info/RECORD +55 -0
- zoomy_core-0.1.2.dist-info/top_level.txt +1 -0
- zoomy_core-0.1.0.dist-info/RECORD +0 -5
- zoomy_core-0.1.0.dist-info/top_level.txt +0 -1
- {zoomy_core-0.1.0.dist-info → zoomy_core-0.1.2.dist-info}/WHEEL +0 -0
- {zoomy_core-0.1.0.dist-info → zoomy_core-0.1.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
import textwrap
|
|
4
|
+
import sympy as sp
|
|
5
|
+
from sympy.printing.cxx import CXX11CodePrinter
|
|
6
|
+
|
|
7
|
+
class FoamPrinter(CXX11CodePrinter):
|
|
8
|
+
"""
|
|
9
|
+
Convert SymPy expressions to OpenFOAM 12 compatible C++ code.
|
|
10
|
+
- Q, Qaux: Foam::List<Foam::scalar>
|
|
11
|
+
- Matrices: Foam::List<Foam::List<Foam::scalar>>
|
|
12
|
+
- Vectors: Foam::vector (.x(), .y(), .z())
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __init__(self, model, *args, **kwargs):
|
|
16
|
+
super().__init__(*args, **kwargs)
|
|
17
|
+
|
|
18
|
+
self.n_dof_q = model.n_variables
|
|
19
|
+
self.n_dof_qaux = model.n_aux_variables
|
|
20
|
+
|
|
21
|
+
# Map variable names to Q[i], Qaux[i]
|
|
22
|
+
self.map_Q = {k: f"Q[{i}]" for i, k in enumerate(model.variables.values())}
|
|
23
|
+
self.map_Qaux = {k: f"Qaux[{i}]" for i, k in enumerate(model.aux_variables.values())}
|
|
24
|
+
self.map_param = {k: str(float(model.parameter_values[i])) for i, k in enumerate(model.parameters.values())}
|
|
25
|
+
|
|
26
|
+
# Map normal/position to n.x(), n.y(), n.z()
|
|
27
|
+
self.map_normal = {k: ["n.x()", "n.y()", "n.z()"][i] for i, k in enumerate(model.normal.values())}
|
|
28
|
+
self.map_position = {k: ["X.x()", "X.y()", "X.z()"][i] for i, k in enumerate(model.position.values())}
|
|
29
|
+
|
|
30
|
+
self._std_regex = re.compile(r'std::([A-Za-z_]\w*)')
|
|
31
|
+
|
|
32
|
+
self._argument_table = {"Q": "const Foam::List<Foam::scalar>& Q",
|
|
33
|
+
"Qaux": "const Foam::List<Foam::scalar>& Qaux",
|
|
34
|
+
"n": "const Foam::vector& n",
|
|
35
|
+
"X": "const Foam::vector& X",
|
|
36
|
+
"time": "const Foam::scalar& time",
|
|
37
|
+
"dX": "const Foam::scalar& dX",
|
|
38
|
+
"z": "const Foam::scalar& z"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
def create_lambertw(self):
|
|
42
|
+
return textwrap.dedent("""\
|
|
43
|
+
inline Foam::scalar lambertw(const Foam::scalar x)
|
|
44
|
+
{
|
|
45
|
+
// valid for x > -exp(-1)
|
|
46
|
+
Foam::scalar w = (x < 1.0 ? x : log(1.0 + x)); // good initial guess
|
|
47
|
+
for (int i = 0; i < 5; ++i)
|
|
48
|
+
{
|
|
49
|
+
Foam::scalar ew = exp(w);
|
|
50
|
+
Foam::scalar wew = w * ew;
|
|
51
|
+
Foam::scalar diff = wew - x;
|
|
52
|
+
w -= diff / (ew * (w + 1.0) - (w + 2.0) * diff / (2.0 * w + 2.0));
|
|
53
|
+
}
|
|
54
|
+
return w;
|
|
55
|
+
}
|
|
56
|
+
""")
|
|
57
|
+
|
|
58
|
+
def get_function_arguments(self, arguments):
|
|
59
|
+
out = ",\n".join([self._argument_table[arg] for arg in arguments])
|
|
60
|
+
return out
|
|
61
|
+
|
|
62
|
+
# --- Symbol printing --------------------------------------------------
|
|
63
|
+
def _print_Symbol(self, s):
|
|
64
|
+
for m in [self.map_Q, self.map_Qaux, self.map_param, self.map_normal, self.map_position]:
|
|
65
|
+
if s in m:
|
|
66
|
+
return m[s]
|
|
67
|
+
return super()._print_Symbol(s)
|
|
68
|
+
|
|
69
|
+
# --- Pow printing -----------------------------------------------------
|
|
70
|
+
def _print_Pow(self, expr):
|
|
71
|
+
base, exp = expr.as_base_exp()
|
|
72
|
+
if exp.is_Integer:
|
|
73
|
+
n = int(exp)
|
|
74
|
+
if n == 0:
|
|
75
|
+
return "1.0"
|
|
76
|
+
if n == 1:
|
|
77
|
+
return self._print(base)
|
|
78
|
+
if n < 0:
|
|
79
|
+
return f"(1.0 / Foam::pow({self._print(base)}, {abs(n)}))"
|
|
80
|
+
return f"Foam::pow({self._print(base)}, {n})"
|
|
81
|
+
return f"Foam::pow({self._print(base)}, {self._print(exp)})"
|
|
82
|
+
|
|
83
|
+
# Print as a plain C function call "lambertw(...)"
|
|
84
|
+
def _print_LambertW(self, expr):
|
|
85
|
+
return f"lambertw({self._print(expr.args[0])})"
|
|
86
|
+
|
|
87
|
+
# --- Expression conversion --------------------------------------------
|
|
88
|
+
def convert_expression_body(self, expr, target='res'):
|
|
89
|
+
tmp_sym = sp.numbered_symbols('t')
|
|
90
|
+
temps, simplified = sp.cse(expr, symbols=tmp_sym)
|
|
91
|
+
lines = []
|
|
92
|
+
for lhs, rhs in temps:
|
|
93
|
+
lines.append(f"Foam::scalar {self.doprint(lhs)} = {self.doprint(rhs)};")
|
|
94
|
+
for i in range(expr.rows):
|
|
95
|
+
for j in range(expr.cols):
|
|
96
|
+
lines.append(f"{target}[{i}][{j}] = {self.doprint(simplified[0][i, j])};")
|
|
97
|
+
return "\n ".join(lines)
|
|
98
|
+
|
|
99
|
+
# --- Matrix factory ---------------------------------------------------
|
|
100
|
+
def createMatrix(self, rows, cols):
|
|
101
|
+
return f"Foam::List<Foam::List<Foam::scalar>>({rows}, Foam::List<Foam::scalar>({cols}, 0.0))"
|
|
102
|
+
|
|
103
|
+
# --- Header / Footer --------------------------------------------------
|
|
104
|
+
def create_file_header(self, n_dof_q, n_dof_qaux, dim, list_sorted_function_names):
|
|
105
|
+
return textwrap.dedent(f"""\
|
|
106
|
+
#pragma once
|
|
107
|
+
#include "List.H"
|
|
108
|
+
#include "vector.H"
|
|
109
|
+
#include "scalar.H"
|
|
110
|
+
|
|
111
|
+
namespace Model
|
|
112
|
+
{{
|
|
113
|
+
constexpr int n_dof_q = {n_dof_q};
|
|
114
|
+
constexpr int n_dof_qaux = {n_dof_qaux};
|
|
115
|
+
constexpr int dimension = {dim};
|
|
116
|
+
const Foam::List<Foam::word> map_boundary_tag_to_function_index{{ {", ".join(f'"{item}"' for item in list_sorted_function_names)} }};
|
|
117
|
+
""")
|
|
118
|
+
|
|
119
|
+
def create_file_footer(self):
|
|
120
|
+
return "\n} // namespace Model\n"
|
|
121
|
+
|
|
122
|
+
def create_generic_function(self, name, expr, arguments, n_dof_q, n_dof_qaux, target='res'):
|
|
123
|
+
if isinstance(expr, list):
|
|
124
|
+
dim = len(expr)
|
|
125
|
+
return [self.create_function(f"{name}_{d}", expr[i], n_dof_q, n_dof_qaux)
|
|
126
|
+
for i, d in enumerate(['x', 'y', 'z'][:dim])]
|
|
127
|
+
|
|
128
|
+
rows, cols = expr.shape
|
|
129
|
+
body = self.convert_expression_body(expr, target)
|
|
130
|
+
return f"""
|
|
131
|
+
inline Foam::List<Foam::List<Foam::scalar>> {name}(
|
|
132
|
+
{self.get_function_arguments(arguments)})
|
|
133
|
+
{{
|
|
134
|
+
auto {target} = {self.createMatrix(rows, cols)};
|
|
135
|
+
{body}
|
|
136
|
+
return {target};
|
|
137
|
+
}}
|
|
138
|
+
"""
|
|
139
|
+
|
|
140
|
+
# --- Function generators ---------------------------------------------
|
|
141
|
+
def create_function(self, name, expr, n_dof_q, n_dof_qaux, target='res'):
|
|
142
|
+
if isinstance(expr, list):
|
|
143
|
+
dim = len(expr)
|
|
144
|
+
return [self.create_function(f"{name}_{d}", expr[i], n_dof_q, n_dof_qaux)
|
|
145
|
+
for i, d in enumerate(['x', 'y', 'z'][:dim])]
|
|
146
|
+
|
|
147
|
+
rows, cols = expr.shape
|
|
148
|
+
body = self.convert_expression_body(expr, target)
|
|
149
|
+
return f"""
|
|
150
|
+
inline Foam::List<Foam::List<Foam::scalar>> {name}(
|
|
151
|
+
const Foam::List<Foam::scalar>& Q,
|
|
152
|
+
const Foam::List<Foam::scalar>& Qaux)
|
|
153
|
+
{{
|
|
154
|
+
auto {target} = {self.createMatrix(rows, cols)};
|
|
155
|
+
{body}
|
|
156
|
+
return {target};
|
|
157
|
+
}}
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
def create_function_normal(self, name, expr, n_dof_q, n_dof_qaux, dim, target='res'):
|
|
161
|
+
if isinstance(expr, list):
|
|
162
|
+
return [self.create_function_normal(f"{name}_{d}", expr[i], n_dof_q, n_dof_qaux, dim)
|
|
163
|
+
for i, d in enumerate(['x', 'y', 'z'][:dim])]
|
|
164
|
+
|
|
165
|
+
rows, cols = expr.shape
|
|
166
|
+
body = self.convert_expression_body(expr, target)
|
|
167
|
+
return f"""
|
|
168
|
+
inline Foam::List<Foam::List<Foam::scalar>> {name}(
|
|
169
|
+
const Foam::List<Foam::scalar>& Q,
|
|
170
|
+
const Foam::List<Foam::scalar>& Qaux,
|
|
171
|
+
const Foam::vector& n)
|
|
172
|
+
{{
|
|
173
|
+
auto {target} = {self.createMatrix(rows, cols)};
|
|
174
|
+
{body}
|
|
175
|
+
return {target};
|
|
176
|
+
}}
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
def create_function_interpolate(self, name, expr, n_dof_q, n_dof_qaux, target='res'):
|
|
180
|
+
rows, cols = expr.shape
|
|
181
|
+
body = self.convert_expression_body(expr, target)
|
|
182
|
+
return f"""
|
|
183
|
+
inline Foam::List<Foam::List<Foam::scalar>> {name}(
|
|
184
|
+
const Foam::List<Foam::scalar>& Q,
|
|
185
|
+
const Foam::List<Foam::scalar>& Qaux,
|
|
186
|
+
const Foam::vector& X)
|
|
187
|
+
{{
|
|
188
|
+
auto {target} = {self.createMatrix(rows, cols)};
|
|
189
|
+
{body}
|
|
190
|
+
return {target};
|
|
191
|
+
}}
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
def create_function_boundary(self, name, expr, n_dof_q, n_dof_qaux, dim, target='res'):
|
|
195
|
+
rows, cols = expr.shape
|
|
196
|
+
body = self.convert_expression_body(expr, target)
|
|
197
|
+
return f"""
|
|
198
|
+
inline Foam::List<Foam::List<Foam::scalar>> {name}(
|
|
199
|
+
const Foam::List<Foam::scalar>& Q,
|
|
200
|
+
const Foam::List<Foam::scalar>& Qaux,
|
|
201
|
+
const Foam::vector& n,
|
|
202
|
+
const Foam::vector& X,
|
|
203
|
+
const Foam::scalar& time,
|
|
204
|
+
const Foam::scalar& dX)
|
|
205
|
+
{{
|
|
206
|
+
auto {target} = {self.createMatrix(rows, cols)};
|
|
207
|
+
{body}
|
|
208
|
+
return {target};
|
|
209
|
+
}}
|
|
210
|
+
"""
|
|
211
|
+
|
|
212
|
+
# --- Full model generation ------------------------------------------
|
|
213
|
+
def create_model(self, model, additional_writes=None):
|
|
214
|
+
n_dof = model.n_variables
|
|
215
|
+
n_dof_qaux = model.n_aux_variables
|
|
216
|
+
dim = model.dimension
|
|
217
|
+
funcs = []
|
|
218
|
+
funcs.append(self.create_lambertw())
|
|
219
|
+
funcs += self.create_function('flux', model.flux(), n_dof, n_dof_qaux)
|
|
220
|
+
funcs += self.create_function('flux_jacobian', model.flux_jacobian(), n_dof, n_dof_qaux)
|
|
221
|
+
funcs += self.create_function('dflux', model.dflux(), n_dof, n_dof_qaux)
|
|
222
|
+
funcs += self.create_function('dflux_jacobian', model.dflux_jacobian(), n_dof, n_dof_qaux)
|
|
223
|
+
funcs += self.create_function('nonconservative_matrix', model.nonconservative_matrix(), n_dof, n_dof_qaux)
|
|
224
|
+
funcs += self.create_function('quasilinear_matrix', model.quasilinear_matrix(), n_dof, n_dof_qaux)
|
|
225
|
+
funcs.append(self.create_function_normal('eigenvalues', model.eigenvalues(), n_dof, n_dof_qaux, dim))
|
|
226
|
+
funcs.append(self.create_function('left_eigenvectors', model.left_eigenvectors(), n_dof, n_dof_qaux))
|
|
227
|
+
funcs.append(self.create_function('right_eigenvectors', model.right_eigenvectors(), n_dof, n_dof_qaux))
|
|
228
|
+
funcs.append(self.create_function('source', model.source(), n_dof, n_dof_qaux))
|
|
229
|
+
funcs.append(self.create_function('residual', model.residual(), n_dof, n_dof_qaux))
|
|
230
|
+
funcs.append(self.create_function('source_implicit', model.source_implicit(), n_dof, n_dof_qaux))
|
|
231
|
+
funcs.append(self.create_function_interpolate('interpolate', model.project_2d_to_3d(), n_dof, n_dof_qaux))
|
|
232
|
+
funcs.append(self.create_function_boundary(
|
|
233
|
+
'boundary_conditions',
|
|
234
|
+
model.boundary_conditions.get_boundary_condition_function(
|
|
235
|
+
model.time, model.position, model.distance,
|
|
236
|
+
model.variables, model.aux_variables, model.parameters, model.normal),
|
|
237
|
+
n_dof, n_dof_qaux, dim))
|
|
238
|
+
if additional_writes is not None:
|
|
239
|
+
for a in additional_writes:
|
|
240
|
+
funcs.append(self.create_generic_function(
|
|
241
|
+
a['name'], a['expression'], a['arguments'], n_dof, n_dof_qaux))
|
|
242
|
+
|
|
243
|
+
return self.create_file_header(n_dof, n_dof_qaux, dim, model.boundary_conditions.list_sorted_function_names) + "\n".join(funcs) + self.create_file_footer()
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def write_code(model, settings, additional_writes=None):
|
|
247
|
+
printer = FoamPrinter(model)
|
|
248
|
+
code = printer.create_model(model, additional_writes=additional_writes)
|
|
249
|
+
main_dir = os.getenv("ZOOMY_DIR")
|
|
250
|
+
path = os.path.join(main_dir, settings.output.directory, ".foam_interface")
|
|
251
|
+
os.makedirs(path, exist_ok=True)
|
|
252
|
+
file_path = os.path.join(path, "Model.H")
|
|
253
|
+
with open(file_path, "w+") as f:
|
|
254
|
+
f.write(code)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from attrs import define
|
|
2
|
+
import ufl
|
|
3
|
+
from library.zoomy_core.transformation.to_numpy import NumpyRuntimeModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@define(kw_only=False, slots=True, frozen=True)
|
|
8
|
+
class UFLRuntimeModel(NumpyRuntimeModel):
|
|
9
|
+
printer=None
|
|
10
|
+
|
|
11
|
+
module = {
|
|
12
|
+
'ones_like': lambda x: 0*x + 1,
|
|
13
|
+
'zeros_like': lambda x: 0*x,
|
|
14
|
+
'array': ufl.as_vector,
|
|
15
|
+
'squeeze': lambda x: x,
|
|
16
|
+
|
|
17
|
+
# --- Elementary arithmetic ---
|
|
18
|
+
"Abs": abs,
|
|
19
|
+
"sign": ufl.sign,
|
|
20
|
+
"Min": ufl.min_value,
|
|
21
|
+
"Max": ufl.max_value,
|
|
22
|
+
# --- Powers and roots ---
|
|
23
|
+
"sqrt": ufl.sqrt,
|
|
24
|
+
"exp": ufl.exp,
|
|
25
|
+
"ln": ufl.ln,
|
|
26
|
+
"pow": lambda x, y: x**y,
|
|
27
|
+
# --- Trigonometric functions ---
|
|
28
|
+
"sin": ufl.sin,
|
|
29
|
+
"cos": ufl.cos,
|
|
30
|
+
"tan": ufl.tan,
|
|
31
|
+
"asin": ufl.asin,
|
|
32
|
+
"acos": ufl.acos,
|
|
33
|
+
"atan": ufl.atan,
|
|
34
|
+
"atan2": ufl.atan2,
|
|
35
|
+
# --- Hyperbolic functions ---
|
|
36
|
+
"sinh": ufl.sinh,
|
|
37
|
+
"cosh": ufl.cosh,
|
|
38
|
+
"tanh": ufl.tanh,
|
|
39
|
+
# --- Piecewise / conditional logic ---
|
|
40
|
+
"Heaviside": lambda x: ufl.conditional(x >= 0, 1.0, 0.0),
|
|
41
|
+
"Piecewise": ufl.conditional,
|
|
42
|
+
"signum": ufl.sign,
|
|
43
|
+
# --- Vector & tensor ops ---
|
|
44
|
+
"dot": ufl.dot,
|
|
45
|
+
"inner": ufl.inner,
|
|
46
|
+
"outer": ufl.outer,
|
|
47
|
+
"cross": ufl.cross,
|
|
48
|
+
# --- Differential operators (used in forms) ---
|
|
49
|
+
"grad": ufl.grad,
|
|
50
|
+
"div": ufl.div,
|
|
51
|
+
"curl": ufl.curl,
|
|
52
|
+
# --- Common constants ---
|
|
53
|
+
"pi": ufl.pi,
|
|
54
|
+
"E": ufl.e,
|
|
55
|
+
# --- Matrix and linear algebra ---
|
|
56
|
+
"transpose": ufl.transpose,
|
|
57
|
+
"det": ufl.det,
|
|
58
|
+
"inv": ufl.inv,
|
|
59
|
+
"tr": ufl.tr,
|
|
60
|
+
# --- Python builtins (SymPy may emit these) ---
|
|
61
|
+
"abs": abs,
|
|
62
|
+
"min": ufl.min_value,
|
|
63
|
+
"max": ufl.max_value,
|
|
64
|
+
"sqrt": ufl.sqrt,
|
|
65
|
+
"sum": lambda x: ufl.Constant(sum(x)) if isinstance(x, (list, tuple)) else x,
|
|
66
|
+
"ImmutableDenseMatrix": lambda x: x,
|
|
67
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
zoomy_core/decorators/decorators.py,sha256=4fmdDDkHKoRFRbxMpTdM3KqDMV-dOL02DH2Ig29cpR0,853
|
|
2
|
+
zoomy_core/fvm/flux.py,sha256=hO5SYSSuPLJDiNs58ZrQHWZ5uhki94UPYxgNPlmw2yU,2696
|
|
3
|
+
zoomy_core/fvm/nonconservative_flux.py,sha256=l7jga6rNnchzrpW9Q0bTvyuxmdI0u8mprYubZJss9Qc,3412
|
|
4
|
+
zoomy_core/fvm/ode.py,sha256=Cx7DgLoWm7aqIjPtWUhoD9FnScZyPjKSuI4--uaiuU0,1453
|
|
5
|
+
zoomy_core/fvm/solver_numpy.py,sha256=CvcjKFRnZBCPbcPf-bUF_jVzr--_Tpa58fU3rgul1Ck,11523
|
|
6
|
+
zoomy_core/fvm/timestepping.py,sha256=SqYjV0YAj4v5Ug2y7sEdZgF3DRH1lHPDa5BFsXzrm14,405
|
|
7
|
+
zoomy_core/mesh/gmsh_loader.py,sha256=weW62smAmlr6wcIiqzDSiNkKppCVRQ9zDS-rpaOHYkY,9610
|
|
8
|
+
zoomy_core/mesh/mesh.py,sha256=vtxcgi5EkOxtAQwWlmx6TGUNEaw4Z48aAuLEGD7bW80,49134
|
|
9
|
+
zoomy_core/mesh/mesh_extrude.py,sha256=ln9bD5l_BEELUgx--j1I70Wv3tGgdqVcrxcDXKBMVyE,5992
|
|
10
|
+
zoomy_core/mesh/mesh_util.py,sha256=IOe5FZ2vhiCTGRsRxUHEoek1o6N2QQAceuLUhuioG_k,16174
|
|
11
|
+
zoomy_core/misc/custom_types.py,sha256=l1kfQJWPzT0PEvW-8bh4MD4BaIspWmtfQ4Y8Oq2qcT4,141
|
|
12
|
+
zoomy_core/misc/gui.py,sha256=xpmluxsMsFVtyUhs412JrWk1-YA_CHbL0kPcopQep_o,2024
|
|
13
|
+
zoomy_core/misc/interpolation.py,sha256=pWtKT9KCOIA8zikJdWnPRDFNVMK_5ko2rjx9ZQA1dnY,5111
|
|
14
|
+
zoomy_core/misc/io.py,sha256=KiY85umLarqFyMSTjYxE0sB19-3oD1UFBmkb_eZgDcg,14072
|
|
15
|
+
zoomy_core/misc/logger_config.py,sha256=506zLc8d9hn7b-r55ZWHWWx7GY0NjayVGMLNcNJQr5E,478
|
|
16
|
+
zoomy_core/misc/misc.py,sha256=3STgN-YrnFkhZfHUEzFVyRqPD4G1rBbsc9nbpUpNZLg,7526
|
|
17
|
+
zoomy_core/misc/static_class.py,sha256=SkvMefakhKENEQMzigGYAPDZjhGl1AvNo22tcHXxKSM,2658
|
|
18
|
+
zoomy_core/model/analysis.py,sha256=qt7cs3s5ijen5I11ntS3Y5pVPI8ufijjCJj-7Is9YMo,5332
|
|
19
|
+
zoomy_core/model/basefunction.py,sha256=uNl5jU0FtOCbYbBU_70L8RrdPFKsNYcnJKHwl6aBKtE,3550
|
|
20
|
+
zoomy_core/model/basemodel.py,sha256=R97gmFKUCVtzBZ-2nqbpEQXx_PxtCTTTyyyCGDzsIuE,16923
|
|
21
|
+
zoomy_core/model/boundary_conditions.py,sha256=YSHu5XG3hRKwXNsOZmCnBcjvgK0eZrd8VoIhZ588kM4,6635
|
|
22
|
+
zoomy_core/model/initial_conditions.py,sha256=etU0wbq_ZaAsenVNddBroUo8ga6_xLJmKNZQ12Z0IiY,5467
|
|
23
|
+
zoomy_core/model/model.py,sha256=GUYUW-UnzJdZLOG8DAFaUdtTeKg40tiCvGMcFy3rxXw,1976
|
|
24
|
+
zoomy_core/model/models/GN.py,sha256=Qaki-68uZZlW4ApmVNskTl03QLnNFpir0grhkV76DpU,1945
|
|
25
|
+
zoomy_core/model/models/advection.py,sha256=nYzWL1djx0aleZ1acM0-nS2T14l4vkuPZEb7kkzizCA,2151
|
|
26
|
+
zoomy_core/model/models/basisfunctions.py,sha256=ZHeQYXwgpB8YAZ-8l3NYYvi8CSuvFzJ0xiyaai4WsCA,5410
|
|
27
|
+
zoomy_core/model/models/basismatrices.py,sha256=gimOx2XXqHGy6tFsVj6fXh2QxEO6lcW-o7VqP-PmSLk,13032
|
|
28
|
+
zoomy_core/model/models/core.py,sha256=Tjc2kX0DfwgK_KtYnb60Y0YlTWpHm1hylzArk3lbieo,19350
|
|
29
|
+
zoomy_core/model/models/coupled_constrained.py,sha256=wF9yHsRCKg0rLtrlwxYr0yYDE1nON1JlalHL3ZD4U7c,1765
|
|
30
|
+
zoomy_core/model/models/old_smm copy.py,sha256=XmFVcjq7ytdQNOEnl6ARNW5NBIRuz_7nG2rIpTP3WUk,31465
|
|
31
|
+
zoomy_core/model/models/poisson.py,sha256=-EoZDfHI15ZIJSxKiE6DeNkAAaS91nQdwKa4olFObL0,1107
|
|
32
|
+
zoomy_core/model/models/shallow_moments.py,sha256=H9pmnzwInBf8OvFblHxoYPKBUMgByAfXKFe1QtBE0n8,27138
|
|
33
|
+
zoomy_core/model/models/shallow_moments_sediment.py,sha256=jfDrC8Lk-KQr-tW9pcoX38WTRZCEBRDaH0Lw1AU8qxA,14300
|
|
34
|
+
zoomy_core/model/models/shallow_moments_topo.py,sha256=32cxlYt3cib-Ex8dNtau-IVCLqFfxDeOYQkUeXzNH6U,17434
|
|
35
|
+
zoomy_core/model/models/shallow_moments_variants.py,sha256=yqOywfZj1yh5yneEBjbh06zHouiPEA7d-iR5zPap-1Q,52091
|
|
36
|
+
zoomy_core/model/models/shallow_water.py,sha256=j3WwmAxVvF1YzyLBg5sUdERxk2yk4j0pywfkViJyO2o,8452
|
|
37
|
+
zoomy_core/model/models/shallow_water_topo.py,sha256=vQKRBJwLBuYuFWtZXPfQwAeas0qhH1FMBnin6KVmTFg,3495
|
|
38
|
+
zoomy_core/model/models/shear_shallow_flow.py,sha256=kB-EjPLwPxx265cDDA4fobFZwKBfGPlScBTGTfZH_T4,17266
|
|
39
|
+
zoomy_core/model/models/sme_turbulent.py,sha256=GavPnWjfCsqmwA5T814hskQHfe0FI4_ha2cxw2fPYh8,24080
|
|
40
|
+
zoomy_core/model/models/swe_old.py,sha256=xrMIi3HTe0SUMr54ENwxlQg7UuTMVeS1Q2ebEWdsD08,31773
|
|
41
|
+
zoomy_core/model/models/vam.py,sha256=4b-79jy6k-oPePjf6SE6ddJPd5NHTiPKtQfn6Z-qERo,15138
|
|
42
|
+
zoomy_core/postprocessing/postprocessing.py,sha256=AratOPHlinDZEx2atCMO_sOsVdzDX9X8lVc-3sR9Vks,2846
|
|
43
|
+
zoomy_core/preprocessing/openfoam_moments.py,sha256=IuqZNyB7uXFnfateFV8au6kUT1tymS3GL6aoBQLyU7k,14708
|
|
44
|
+
zoomy_core/transformation/helpers.py,sha256=wsuAC7FX5aX0q9eYkAvl_3LOvkTn7csZMfqzHNbmztI,923
|
|
45
|
+
zoomy_core/transformation/to_amrex.py,sha256=lLy0vWJCFWpVeoRxCF2KlQIIGt1HYifKIAgpthhcCIU,9617
|
|
46
|
+
zoomy_core/transformation/to_c.py,sha256=a_22vacgMvSZTCsrr1XAZqD0SqVYgKbp25HnoBBZxjE,7198
|
|
47
|
+
zoomy_core/transformation/to_jax.py,sha256=XlGqqpJpIyt9UMZhfNJPndjOTQviS2a-goAD6wifdTk,403
|
|
48
|
+
zoomy_core/transformation/to_numpy.py,sha256=SqT1QKujMB0L_BtV0aaGVyEFxsg-oRW9q8qVQ6SrBkM,4738
|
|
49
|
+
zoomy_core/transformation/to_openfoam.py,sha256=KykbKVsr6ktPSjG2C1YYr9K1g1Adugd1GVOLymBsf9g,10676
|
|
50
|
+
zoomy_core/transformation/to_ufl.py,sha256=U7NMMo25WK6XF5_9EVocDzQYohzAvSSgxaMOfrkNX9c,1999
|
|
51
|
+
zoomy_core-0.1.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
52
|
+
zoomy_core-0.1.2.dist-info/METADATA,sha256=YXxI-Q8zW_jNnVPqdYPFC7En6gEPjHzQQAfoSUozj5M,5519
|
|
53
|
+
zoomy_core-0.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
54
|
+
zoomy_core-0.1.2.dist-info/top_level.txt,sha256=NCamZmp9nka6uLXNdAbb47vtoiLmvm3uBKvaBuUdfdQ,11
|
|
55
|
+
zoomy_core-0.1.2.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
zoomy_core
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
zoomy_core-0.1.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
2
|
-
zoomy_core-0.1.0.dist-info/METADATA,sha256=PttAX5FbKRiBycnZDdkXuDOYyadoSBeXe743B4A6_gE,5519
|
|
3
|
-
zoomy_core-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
4
|
-
zoomy_core-0.1.0.dist-info/top_level.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
5
|
-
zoomy_core-0.1.0.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
File without changes
|
|
File without changes
|