From 9fda87d3cae462b597142b30fedc01b08d102e9e Mon Sep 17 00:00:00 2001
From: Olivier Ali <olivier.ali@inria.fr>
Date: Mon, 16 Jan 2023 11:53:19 +0100
Subject: [PATCH] Fixed the _details methods for AbstractDomain and BVP, get
 the proper number of elements and dofs.

---
 src/bvpy/bvp.py              | 17 +++++++++++++----
 src/bvpy/domains/abstract.py |  2 +-
 src/bvpy/domains/geometry.py |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/bvpy/bvp.py b/src/bvpy/bvp.py
index b7e79e1..915f2ad 100644
--- a/src/bvpy/bvp.py
+++ b/src/bvpy/bvp.py
@@ -24,7 +24,10 @@
 from functools import reduce
 import operator
 
+# OA: Order the imports from the most generic to the most local.
+import ufl
 from ufl.classes import Zero
+from dolfinx import fem
 
 from typing import Union
 
@@ -43,8 +46,7 @@ from bvpy.solvers.linear import LinearSolver
 from bvpy.solvers.nonlinear import NonLinearSolver
 
 
-import ufl
-from dolfinx import fem
+
 
 
 class BVP(object):
@@ -192,7 +194,14 @@ class BVP(object):
                 description += f'\t- {info}' + '\n'
 
         description += '\nSystem to solve \n---------------\n'
-        description += f"    * Number of DOFs: {self.functionSpace.dim()}"
+        
+        topo_dim = self.domain.mesh.topology.dim
+        all_cells = self.domain.mesh.topology.original_cell_index
+        dof_nbr = fem.locate_dofs_topological(self.functionSpace, 
+                                              entity_dim=topo_dim,
+                                              entities=all_cells).shape[0]
+        
+        description += f"    * Number of DOFs: {dof_nbr}"
 
         return description
 
@@ -215,7 +224,7 @@ class BVP(object):
         if self.domain.mesh is None:
             self.domain.discretize()
 
-    def set_vform(self, vform: AbstractVform, constrain=None):
+    def set_vform(self, vform:AbstractVform, constrain=None):
         """Instanciates the function space and the trial and test functions.
 
         Parameters
diff --git a/src/bvpy/domains/abstract.py b/src/bvpy/domains/abstract.py
index cb54638..32917b9 100644
--- a/src/bvpy/domains/abstract.py
+++ b/src/bvpy/domains/abstract.py
@@ -254,7 +254,7 @@ class AbstractDomain(ABC):
 -------
         * Algorithm: {self._algorithm}
         * Cell type: {self._cell_type}
-        * Number: {self.mesh.ufl_cell().num_facets()}
+        * Number of elements: {self.mesh.topology.original_cell_index.shape[0]}
         * Resolution (i.e. prescribed element size): {self._cell_size:.2e}
         * Actual size (min, max): ({cell_min_diameter:.2e},\
         {cell_max_diameter:.2e})
diff --git a/src/bvpy/domains/geometry.py b/src/bvpy/domains/geometry.py
index 6150e52..815f3bf 100644
--- a/src/bvpy/domains/geometry.py
+++ b/src/bvpy/domains/geometry.py
@@ -167,7 +167,7 @@ def normal(domain, scale=1, interior=None, degree=1, name='normal'):
     # u.rename(name, 'label')
 
     u = ufl.FacetNormal(mesh)
-    u.name = 'label'
+    # u.name = 'label'
     return u
 
 
-- 
GitLab