dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #22960
Re: [Question #153448]: Importing mesh and entities
Question #153448 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/153448
Johan Hake posted a new comment:
Emek!
Sorry for being such a dumass, but what was that you just sent us? Was that a
diff or patch? I need something that shows the difference between the present
tip and your improvements.
I cannot manually go in and apply these changes. That would be too error
prone. Could you also send me an abaqus mesh which fails for the present
meshconverter and which is correctly converted with your patch. I can then
update the unit test.
Johan
On Tuesday May 3 2011 03:09:58 B. Emek Abali wrote:
> Question #153448 on DOLFIN changed:
> https://answers.launchpad.net/dolfin/+question/153448
>
> B. Emek Abali posted a new comment:
> meshconverter.py @revision 5840 after line 912 in _abaqus(...) function:
>
> 942-944 changed to
> elset2eid = {}
> material2elsetnames = {}
> material2eids = {}
> materials = []
> elsets = []
>
> after 947 added
> re_elset = re.compile(r"(\d+),\s*(\d+),\s*(\d+)")
>
> 957-977 changed to
> if sect == "element":
> print 'Section: ', sect
> pnames = ("type", "elset")
> params = read_params(params_spec, pnames, lineno)
> if "type" not in params and "elset" not in params:
> handler.warn("Element on line %d doesn't declare TYPE"
> % (lineno,)) supported_elem = False
> if "elset" in params:
> elsetname = params["elset"]
> elsets.append(elsetname)
> if re.search("generate", params_str):
> elset_loop=True
> else:
> elset_loop=False
>
> if re.search("internal", params_str):
> elset_internal=True
> else:
> elset_internal=False
> supported_elem = False
> else:
> tp = params["type"]
> if tp not in ("c3d4", "dc3d4"):
> handler.warn("Unsupported element type '%s' on
line
> %d" % (tp, lineno)) supported_elem = False
> else:
> supported_elem = True
> elsetname = None
>
> elif sect == "solid section":
> pnames = ("material", "elset")
> params = read_params(params_spec, pnames, lineno)
> for pname in pnames:
> if pname not in params:
> handler.error("Solid section on line %d doesn't "
> "declare %s" % (lineno, pname.upper()))
> matname = params["material"]
> material2elsetnames.setdefault(matname,
> []).append(params["elset"])
>
> after 980 added
> elif sect == "elset":
> elsetname = read_params(params_spec, ["elset"], lineno)
["elset"]
> elsets.append(elsetname)
> print elsets
> if re.search("generate", params_str):
> elset_loop=True
> else:
> elset_loop=False
> else:
> print 'line ',lineno, ' is ignored start of it:', sect
>
> 999-1001 changed to
> elif sect == "element":
> if not supported_elem and elset_internal:
> if elset_loop:
> m = re_elset.match(l)
> if m is None:
> handler.warn("Element set is not understood,
line %d" %
> (lineno,)) continue
> first, last, inc = [int(x) for x in m.groups()]
> if elsetname is None:
> handler.warn("Name of the element set is not
known")
> continue
> eids = range(first,last+1,inc)
> if elsetname in elset2eid.keys():
> handler.warn("More than one element set: %s
definition" % (elsetname,))
> print 'Element internal set ',elsetname,' has
',len(eids),' elements'
> elset2eid[elsetname] = eids
> else:
> if elsetname is None:
> handler.warn("Name of the element set is not
known")
> else:
> handler.warn("Only element sets with generate
are supported")
> continue
>
> 1008 changed to
> if elsetname is not None:
> if elsetname in elset2eid.keys():
> print 'Adding cell ',idx,' to element set ',elsetname
> elset2eid[elsetname].append(idx)
> else:
> elset2eid[elsetname] = idx
> elif sect == "elset":
> if elset_loop:
> m = re_elset.match(l)
> if m is None:
> handler.warn("Element set is not understood, line %d"
%
> (lineno,)) continue
> first, last, inc = [int(x) for x in m.groups()]
> if elsetname is None:
> handler.warn("Name of the element set is not known")
> continue
> eids = range(first,last+1,inc)
> if elsetname in elset2eid.keys():
> handler.warn("More than one element set: %s
definition" % (elsetname,))
> elset2eid[elsetname] = eids
> print 'Element set ',elsetname,' has ',len(eids),' elements'
> else:
> if elsetname is None:
> handler.warn("Name of the element set is not known")
> else:
> handler.warn("Only element sets with generate are
supported")
>
> 1039-1062 changed to
> num_entities = 1
> for i, matname in enumerate(materials):
> try: elsetnames = material2elsetnames[matname]
> except KeyError:
> # No element sets for this material
> continue
> # For each element set associated with this material
> material2eids[i] = []
> for j, elsetname in enumerate(elsetnames):
> if elsetname in elsets:
> print 'Element set ',elsetname,' for ',matname,' is found'
> material2eids[i].extend(elset2eid[elsetname])
> else:
> handler.error("Material '%s' is assigned to undefined element
set '%s',
> the known element sets: '%s'" % (matname, elsetname,elset2eid.keys()))
> num_entities +=len(material2eids[i])
> handler.start_meshfunction(matname, 3, len(elems))
> print 'adding ',len(material2eids[i]),' cells into ...',matname,'.xml'
> for eid in material2eids[i]:
> handler.add_entity_meshfunction(elemids.index(eid), i+1)
> handler.end_meshfunction()
>
> handler.start_meshfunction("material", 3, len(elems))
> print 'adding all material defined ',num_entities,' cells into
> ...-material.xml' for i in material2eids.keys():
> for eid in material2eids[i]:
> handler.add_entity_meshfunction(elemids.index(eid), i+1)
> handler.end_meshfunction()
> print "Conversion done"
--
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.