Alex:
> I am coming from a background of solid mechanics FEA and I've been using
> CalculiX as an openSource program for some time. My group has decided
> to switch to deal.ii
Good choice -- we applaud you :-)
> Part 1: Abaqus .inp format
> I had success importing hex meshes from the abaqus <.inp> format, but it
> seems that the UCD reader does not accept tet meshes. I am basing this
> on the following bit of code in grid_in::read_ucd around Line 948
>
> if (((cell_type == "line") && (dim == 1)) ||
> ((cell_type == "quad") && (dim == 2)) ||
> ((cell_type == "hex") && (dim == 3)))
> // found a cell
> {
>
> The absence of
> ((cell_type == "tet") && (dim == 3))
> suggests that simplex elements are not supported when importing from
> .inp. Am I correct in this conclusion. How difficult would it be for
> me to add this functionality in?
Not very difficult in all likelihood. The key difficulty in adding
support for other cells in this function is that it uses the
GeometryInfo<dim> class, which only provides information about hypercube
cells. For example, we read vertex indices like this in that function:
for (const unsigned int i : GeometryInfo<dim>::vertex_indices())
in >> cells.back().vertices[GeometryInfo<dim>::ucd_to_deal[i]];
This needs to be changed to account for the number of vertices a cell
has, given the cell type, not the dimension. The right approach will be
to use the ReferenceCell objects defined in namespace ReferenceCells
(plural), and the other readers in that function will serve as guidance.
You might want to take a look at the gmsh reader, for example.
> Part 2: GMSH format
> While looking at grid_in.cc, I saw that the MSH reader supported tet
> elements. I found the FAQ page supplied these examples of simplex
> meshes:
https://www.dealii.org/developer/doxygen/deal.II/group__simplex.html
>
> I first ran the 2D simplex mesh example, and then I modified it to work
> for 3D without much problem. Then, I switched to the mixed mesh, and
> had success running the 2D example. However, I started having problems
> when I switched to 3D. The mesh seems to import, but then I have issues
> operating with it. I found several places within fe_simplex_p.cc (L714,
> L759) where the dimension is asserted to be 2:
>
> AssertDimension(dim, 2);
> This seems like a problem for a 3D analysis, so I am wondering if I need
> to do something different so that this function doesn't get called.
No, I think this is just not implemented. The function is called on
mixed meshes when the library wants to know how elements of type
FE_SimplexP on tetrahedra connect to another element types on other cell
shapes (namely, on wedges and pyramids). The comparison is simply not
implemented, but if you want to compute on mixed 3d meshes, you will
have to implement the missing parts of this function. As long as you
want to use the same polynomial degree on all cells, this should not
even be particularly difficult and I would be happy to walk you through
the necessary steps if you were interested in writing up a patch!
Best
Wolfgang
--
------------------------------------------------------------------------
Wolfgang Bangerth email:
bang...@colostate.edu
www:
http://www.math.colostate.edu/~bangerth/