Actually, before its working, later started showing issues, now i corrected however i defined function its not working.
from dolfin import *
import numpy as np
import matplotlib.pyplot as plt
import meshio
def process_mesh(mesh, cell_type, target_regions=None, prune_z=False):
cell_data = mesh.get_cell_data("gmsh:physical", cell_type)
unique_regions = np.unique(cell_data)
def extract_ids(region_id):
return list(np.where(cell_data == region_id)[0])
def create_and_write(out_file, mesh_type, indices):
out_mesh = meshio.Mesh(points=mesh.points[:, :2] if prune_z else mesh.points,
cells={mesh_type: mesh.get_cells_type(mesh_type)},
cell_data={"name_to_read": [cell_data]})
meshio.write(out_file, out_mesh)
# Create and write triangle mesh
create_and_write("mesh.xdmf", "triangle", extract_ids(1) + extract_ids(2))
# Material properties
material_properties = {
1: {"E": 200e9, "nu": 0.30}, # Material1 = Steel
2: {"E": 90e9, "nu": 0.25} # Material2 = Brass
}
# Assign material properties and print
for region_id in [1, 2]:
properties = material_properties.get(region_id, {})
print(f"Material properties for Region {region_id}:", properties)
mesh_from_file = meshio.read("Hima.msh")
process_mesh(mesh_from_file, "triangle", target_regions=[1, 2], prune_z=True)
def create_mesh(mesh, cell_type, prune_z=False):
cells = mesh.get_cells_type(cell_type)
cell_data = mesh.get_cell_data("gmsh:physical", cell_type)
out_mesh = meshio.Mesh(points=mesh.points, cells={cell_type: cells}, cell_data={"name_to_read":[cell_data]})
if prune_z:
out_mesh.prune_z_0()
return out_mesh
msh=meshio.read("Hima.msh")
triangle_mesh = create_mesh(msh, "triangle", False)
meshio.write("mf.xdmf", triangle_mesh)
from dolfin import *
parameters["allow_extrapolation"] = True
parameters["form_compiler"]["optimize"] = True
mesh=Mesh()
mvc = MeshValueCollection("size_t", mesh, mesh.topology().dim())
with XDMFFile("mesh.xdmf") as infile:
infile.read(mesh)
infile.read(mvc, "name_to_read")
cf = cpp.mesh.MeshFunctionSizet(mesh, mvc)
mvc = MeshValueCollection("size_t", mesh, mesh.topology().dim()-1)
with XDMFFile("mf.xdmf") as infile:
infile.read(mvc, "name_to_read")
mf = cpp.mesh.MeshFunctionSizet(mesh, mvc)
ds = Measure("ds", domain=mesh, subdomain_data=mf)
dx = Measure("dx", domain=mesh, subdomain_data=cf)
#Creating function space for concentration
UC = FunctionSpace(mesh,"CG",1)
#Creating function space for displacement
UU = VectorFunctionSpace(mesh, "CG", 1)
Unknown ufl object type FiniteElement
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
Cell In[17], line 2
1 # Corrected function spaces for concentration and displacement
----> 2 UC = FunctionSpace(mesh, "CG", 1) # Concentration
3 UU = VectorFunctionSpace(mesh, "CG", 1) # Displacement
File /usr/lib/petsc/lib/python3/dist-packages/dolfin/function/functionspace.py:33, in FunctionSpace.__init__(self, *args, **kwargs)
31 self._init_from_ufl(*args, **kwargs)
32 else:
---> 33 self._init_convenience(*args, **kwargs)
File /usr/lib/petsc/lib/python3/dist-packages/dolfin/function/functionspace.py:100, in FunctionSpace._init_convenience(self, mesh, family, degree, form_degree, constrained_domain, restriction)
93 def _init_convenience(self, mesh, family, degree, form_degree=None,
94 constrained_domain=None, restriction=None):
95
96 # Create UFL element
97 element = ufl.FiniteElement(family, mesh.ufl_cell(), degree,
98 form_degree=form_degree)
--> 100 self._init_from_ufl(mesh, element, constrained_domain=constrained_domain)
File /usr/lib/petsc/lib/python3/dist-packages/dolfin/function/functionspace.py:42, in FunctionSpace._init_from_ufl(self, mesh, element, constrained_domain)
39 ufl.FunctionSpace.__init__(self, mesh.ufl_domain(), element)
41 # Compile dofmap and element
---> 42 ufc_element, ufc_dofmap = ffc_jit(element, form_compiler_parameters=None,
43 mpi_comm=mesh.mpi_comm())
44 ufc_element = cpp.fem.make_ufc_finite_element(ufc_element)
46 # Create DOLFIN element and dofmap
File /usr/lib/petsc/lib/python3/dist-packages/dolfin/jit/jit.py:50, in mpi_jit_decorator.<locals>.mpi_jit(*args, **kwargs)
48 # Just call JIT compiler when running in serial
49 if MPI.size(mpi_comm) == 1:
---> 50 return local_jit(*args, **kwargs)
52 # Default status (0 == ok, 1 == fail)
53 status = 0
File /usr/lib/petsc/lib/python3/dist-packages/dolfin/jit/jit.py:100, in ffc_jit(ufl_form, form_compiler_parameters)
98 p.update(dict(parameters["form_compiler"]))
99 p.update(form_compiler_parameters or {})
--> 100 return ffc.jit(ufl_form, parameters=p)
File ~/.local/lib/python3.10/site-packages/ffc/jitcompiler.py:214, in jit(ufl_object, parameters, indirect)
211 set_prefix(parameters["log_prefix"])
213 # Make unique module name for generated code
--> 214 kind, module_name = compute_jit_prefix(ufl_object, parameters)
216 # Inspect cache and generate+build if necessary
217 module = jit_build(ufl_object, module_name, parameters)
File ~/.local/lib/python3.10/site-packages/ffc/jitcompiler.py:156, in compute_jit_prefix(ufl_object, parameters, kind)
154 object_signature = repr(ufl_object)
155 else:
--> 156 error("Unknown ufl object type %s" % (ufl_object.__class__.__name__,))
158 # Compute deterministic string of relevant parameters
159 parameters_signature = compute_jit_parameters_signature(parameters)
File <string>:1, in <lambda>(*message)
File ~/.local/lib/python3.10/site-packages/ufl/log.py:172, in Logger.error(self, *message)
170 "Write error message and raise an exception."
171 self._log.error(*message)
--> 172 raise self._exception_type(self._format_raw(*message))
Exception: Unknown ufl object type FiniteElement