How to import geometry with holes to use with PDE toolbox?
15 views (last 30 days)
Show older comments
So there are two main options for creating geometry for a PDE model: geometryFromMesh and importGeometry.
The geometry I have is essentially a hollow sphere (i.e. a solid sphere with a smaller spherical cutout inside). I have created an STL file and attempted to use importGeometry. However, I get the error "Assemblies of more than one geometric model are not currently supported"
Now I am looking into using geometryFromMesh. I have two questions: 1. Is this even possible? 2. If so, then how might I create a mesh that has holes in it?
This is the geometry I'm trying to use.
0 Comments
Answers (1)
Alan Weiss
on 18 Jan 2017
Edited: Alan Weiss
on 18 Jan 2017
You could try something like the following series of commands:
[az,el,r] = meshgrid(linspace(0,2*pi-0.01),linspace(-pi,pi-0.01),linspace(0.25,1));
[x,y,z] = sph2cart(az,el,r);
shp = alphaShape(x(:),y(:),z(:),0.05);
[elements,nodes] = boundaryFacets(shp);
nodes = nodes';
elements = elements';
model = createpde();
geometryFromMesh(model,nodes,elements);
pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)
Don't forget to mesh your resulting geometry by using generateMesh.
Alan Weiss
MATLAB mathematical toolbox documentation
5 Comments
Alan Weiss
on 2 Feb 2017
I am very sorry that you are having such trouble with geometry creation. But really, you are trying to push the current 3-D geometry beyond what it can do. It is not designed for subdomains, nor for holes or multiple regions. My code is sort of fortuitously workable, but I don't really know why.
If you can afford to wait until the next release in March, then things might be somewhat better, but I cannot promise or even describe anything that is coming up. Sorry.
Alan Weiss
MATLAB mathematical toolbox documentation
See Also
Categories
Find more on Geometry and Mesh in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!