ddfem 1.0.1__tar.gz → 1.0.3__tar.gz

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.
Files changed (48) hide show
  1. {ddfem-1.0.1 → ddfem-1.0.3}/PKG-INFO +11 -4
  2. {ddfem-1.0.1 → ddfem-1.0.3}/README.md +3 -0
  3. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/__init__.py +1 -0
  4. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/boundary.py +0 -1
  5. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/domain.py +3 -0
  6. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/domain_dune.py +8 -5
  7. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/model2ufl.py +1 -0
  8. ddfem-1.0.3/ddfem/plot.py +13 -0
  9. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem.egg-info/PKG-INFO +11 -4
  10. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem.egg-info/SOURCES.txt +1 -1
  11. ddfem-1.0.3/ddfem.egg-info/requires.txt +5 -0
  12. {ddfem-1.0.1 → ddfem-1.0.3}/pyproject.toml +10 -4
  13. ddfem-1.0.1/ddfem/dune.py +0 -3
  14. ddfem-1.0.1/ddfem.egg-info/requires.txt +0 -2
  15. {ddfem-1.0.1 → ddfem-1.0.3}/LICENSE +0 -0
  16. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/__init__.py +0 -0
  17. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/advection_diffusion.py +0 -0
  18. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/beam.py +0 -0
  19. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/cahn_hilliard.py +0 -0
  20. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/chemical_reaction.py +0 -0
  21. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/constant.py +0 -0
  22. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/five_circle_flat.py +0 -0
  23. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/forchheimer.py +0 -0
  24. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/hyperelasticity.py +0 -0
  25. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/linear_elasticity.py +0 -0
  26. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/plaplace.py +0 -0
  27. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/single_circle.py +0 -0
  28. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/triple_circle.py +0 -0
  29. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/examples/triple_circle_beam.py +0 -0
  30. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/__init__.py +0 -0
  31. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/arc.py +0 -0
  32. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/ball.py +0 -0
  33. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/box.py +0 -0
  34. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/helpers.py +0 -0
  35. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/pie.py +0 -0
  36. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/plane.py +0 -0
  37. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/primitive_base.py +0 -0
  38. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/geometry/vesica.py +0 -0
  39. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/DDM1.py +0 -0
  40. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/Fitted.py +0 -0
  41. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/Mix0.py +0 -0
  42. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/NNS.py +0 -0
  43. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/NS.py +0 -0
  44. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/__init__.py +0 -0
  45. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem/transformers/transformer_base.py +0 -0
  46. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem.egg-info/dependency_links.txt +0 -0
  47. {ddfem-1.0.1 → ddfem-1.0.3}/ddfem.egg-info/top_level.txt +0 -0
  48. {ddfem-1.0.1 → ddfem-1.0.3}/setup.cfg +0 -0
@@ -1,21 +1,28 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ddfem
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: Diffuse domain finite element solver
5
5
  Author-email: Luke Benfield <luke.benfield@warwick.ac.uk>, Andreas Dedner <a.s.dedner@warwick.ac.uk>
6
6
  License-Expression: MIT
7
- Project-URL: Homepage, https://...
8
- Project-URL: Issues, https://...
7
+ Project-URL: Homepage, https://gitlab.dune-project.org/dune-fem/ddfem
8
+ Project-URL: Issues, https://gitlab.dune-project.org/dune-fem/ddfem/-/issues
9
+ Project-URL: Documentation, https://ddfem.readthedocs.io/en/latest/index.html
10
+ Project-URL: Repository, https://gitlab.dune-project.org/dune-fem/ddfem.git
9
11
  Classifier: Programming Language :: Python :: 3
10
12
  Classifier: Operating System :: OS Independent
11
13
  Requires-Python: >=3.9
12
14
  Description-Content-Type: text/markdown
13
15
  License-File: LICENSE
14
- Requires-Dist: fenics-ufl>=2022
16
+ Requires-Dist: fenics-ufl==2022.2.0
15
17
  Requires-Dist: numpy
18
+ Provides-Extra: dune
19
+ Requires-Dist: dune-fem; extra == "dune"
16
20
  Dynamic: license-file
17
21
 
18
22
  # Diffuse Domain Finite Element Methods
19
23
 
20
24
  This is a package for solving complex PDEs based on the diffuse domain idea.
21
25
 
26
+ [Documentation][0]
27
+
28
+ [0]: https://ddfem.readthedocs.io/en/latest/index.html
@@ -2,3 +2,6 @@
2
2
 
3
3
  This is a package for solving complex PDEs based on the diffuse domain idea.
4
4
 
5
+ [Documentation][0]
6
+
7
+ [0]: https://ddfem.readthedocs.io/en/latest/index.html
@@ -2,3 +2,4 @@ from . import geometry
2
2
  from . import transformers
3
3
  from . import boundary
4
4
  from .model2ufl import model2ufl
5
+ from .plot import plotSolution
@@ -87,7 +87,6 @@ def classify_boundary(boundary_dict):
87
87
  boundary_values.update([(kk, f) for kk in ids])
88
88
 
89
89
  else:
90
- print(type(k), type(f))
91
90
  raise NotImplementedError(f"unknown boundary type {k} : {f}")
92
91
 
93
92
  return boundary_flux_cs, boundary_flux_vs, boundary_values
@@ -7,6 +7,9 @@ class Domain:
7
7
  def __init__(self, omega):
8
8
  self.omega = omega
9
9
 
10
+ def __call__(self,x):
11
+ return self.omega(x)
12
+
10
13
  def phi(self, x):
11
14
  tol = 1e-10
12
15
  return (1 - tol) * self.omega.phi(x) + tol
@@ -7,22 +7,25 @@ from .domain import Domain
7
7
 
8
8
 
9
9
  class DomainDune(Domain):
10
- def __init__(self, omega, x, gridView):
10
+ def __init__(self, omega, x, gridView, filterTolerance=0):
11
11
  super().__init__(omega)
12
12
  self.x = x
13
13
  self.gridView = gridView
14
+ self.fullSDF = self.gridFunction(self.omega(self.x), name="full-sdf")
15
+ if filterTolerance>0:
16
+ self.gridView = self._filter(tolerance=filterTolerance)
17
+ self.fullSDF = self.gridFunction(self.omega(self.x), name="full-sdf")
14
18
 
15
19
  self._phi = None
16
20
  self._bndProj = None
17
21
  self._extProj = None
18
22
  self._bndProjSDFs = {}
19
23
 
20
- self.fullSDF = self.gridFunction(self.omega(self.x), name="full-sdf")
21
24
 
22
25
  def gridFunction(self, expr, name):
23
26
  start_ = time.time()
24
27
  gf = dune.fem.function.gridFunction(expr, name=name, gridView=self.gridView)
25
- print(f"{name} setup: {time.time() - start_}")
28
+ # print(f"{name} setup: {time.time() - start_}")
26
29
  return gf
27
30
 
28
31
  def phi(self, x):
@@ -67,11 +70,11 @@ class DomainDune(Domain):
67
70
  )
68
71
 
69
72
  self.gridView.hierarchicalGrid.adapt(mark)
70
- print(self.gridView.size(0))
73
+ # print(self.gridView.size(0))
71
74
  lowerTol /= 2
72
75
  upperTol /= 2
73
76
 
74
- def _filter(self, tolerance=1):
77
+ def _filter(self, tolerance):
75
78
  sd = self.fullSDF
76
79
  tol = tolerance # * self.epsilon.value: issue here with epsilon being a UFL expression due to CSG approach
77
80
  phiFilter = (
@@ -103,6 +103,7 @@ def model_ufl(Model, space, initialTime=0, DirichletBC=DirichletBC):
103
103
  f_c_model = f_c_model * dx
104
104
  if f_v_model:
105
105
  f_v_model = f_v_model * dx
106
+ # !!! fix issue with f_?_model==zero not being a form
106
107
  return (
107
108
  f_c_model,
108
109
  f_v_model,
@@ -0,0 +1,13 @@
1
+ from matplotlib import pyplot as plt
2
+ from dune.fem.function import gridFunction
3
+ from ufl import SpatialCoordinate, triangle
4
+
5
+ def plotSolution(domain,uh,figsize, **kwargs):
6
+ x = SpatialCoordinate(triangle)
7
+ fig, axs = plt.subplots(1,2, figsize=[2*figsize[0],figsize[1]])
8
+ uh.plot(figure=(fig,axs[0]),**kwargs)
9
+ gridFunction(uh*domain.chi(x)).plot(figure=(fig,axs[1]),**kwargs)
10
+ for a in axs:
11
+ gridFunction(domain.phi(x), gridView=uh.space.gridView).plot(
12
+ onlyContours=True,contours=[0.5],gridLines=None,
13
+ contourWidth=2, contourColor="black", figure=(fig,a))
@@ -1,21 +1,28 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ddfem
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: Diffuse domain finite element solver
5
5
  Author-email: Luke Benfield <luke.benfield@warwick.ac.uk>, Andreas Dedner <a.s.dedner@warwick.ac.uk>
6
6
  License-Expression: MIT
7
- Project-URL: Homepage, https://...
8
- Project-URL: Issues, https://...
7
+ Project-URL: Homepage, https://gitlab.dune-project.org/dune-fem/ddfem
8
+ Project-URL: Issues, https://gitlab.dune-project.org/dune-fem/ddfem/-/issues
9
+ Project-URL: Documentation, https://ddfem.readthedocs.io/en/latest/index.html
10
+ Project-URL: Repository, https://gitlab.dune-project.org/dune-fem/ddfem.git
9
11
  Classifier: Programming Language :: Python :: 3
10
12
  Classifier: Operating System :: OS Independent
11
13
  Requires-Python: >=3.9
12
14
  Description-Content-Type: text/markdown
13
15
  License-File: LICENSE
14
- Requires-Dist: fenics-ufl>=2022
16
+ Requires-Dist: fenics-ufl==2022.2.0
15
17
  Requires-Dist: numpy
18
+ Provides-Extra: dune
19
+ Requires-Dist: dune-fem; extra == "dune"
16
20
  Dynamic: license-file
17
21
 
18
22
  # Diffuse Domain Finite Element Methods
19
23
 
20
24
  This is a package for solving complex PDEs based on the diffuse domain idea.
21
25
 
26
+ [Documentation][0]
27
+
28
+ [0]: https://ddfem.readthedocs.io/en/latest/index.html
@@ -3,8 +3,8 @@ README.md
3
3
  pyproject.toml
4
4
  ddfem/__init__.py
5
5
  ddfem/boundary.py
6
- ddfem/dune.py
7
6
  ddfem/model2ufl.py
7
+ ddfem/plot.py
8
8
  ddfem.egg-info/PKG-INFO
9
9
  ddfem.egg-info/SOURCES.txt
10
10
  ddfem.egg-info/dependency_links.txt
@@ -0,0 +1,5 @@
1
+ fenics-ufl==2022.2.0
2
+ numpy
3
+
4
+ [dune]
5
+ dune-fem
@@ -7,8 +7,8 @@ packages = ["ddfem","ddfem.geometry","ddfem.transformers","ddfem.examples"]
7
7
 
8
8
  [project]
9
9
  name = "ddfem"
10
- version = "1.0.1"
11
- dependencies = [ "fenics-ufl >= 2022", "numpy" ]
10
+ version = "1.0.3"
11
+ dependencies = [ "fenics-ufl == 2022.2.0", "numpy" ]
12
12
  authors = [
13
13
  { name="Luke Benfield", email="luke.benfield@warwick.ac.uk" },
14
14
  { name="Andreas Dedner", email="a.s.dedner@warwick.ac.uk" },
@@ -23,6 +23,12 @@ classifiers = [
23
23
  license = "MIT"
24
24
  license-files = ["LICEN[CS]E*"]
25
25
 
26
+ [project.optional-dependencies]
27
+ dune = ["dune-fem"]
28
+
26
29
  [project.urls]
27
- Homepage = "https://..."
28
- Issues = "https://..."
30
+ Homepage = "https://gitlab.dune-project.org/dune-fem/ddfem"
31
+ Issues = "https://gitlab.dune-project.org/dune-fem/ddfem/-/issues"
32
+ Documentation = "https://ddfem.readthedocs.io/en/latest/index.html"
33
+ Repository = "https://gitlab.dune-project.org/dune-fem/ddfem.git"
34
+
ddfem-1.0.1/ddfem/dune.py DELETED
@@ -1,3 +0,0 @@
1
- import geometry
2
- from geometry import dunedomain
3
- geometry.domain =
@@ -1,2 +0,0 @@
1
- fenics-ufl>=2022
2
- numpy
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes