Message Boards Message Boards

0
|
1640 Views
|
0 Replies
|
0 Total Likes
View groups...
Share
Share this post:

Room mode simulation on imported mesh: NDEigensystem error

Posted 2 years ago

Hi, I'm moving my very first steps into Wolfram and just have a couple questions. I want to run a room mode simulation on 3d arbitrary shape using the finite element method. In a first attempt I did it joining together 3d primitives such as Cuboid and Prism, generating a mesh out of the union and then solved the eigenvalue problem for the first 8 modes with:

model = RegionUnion[cubeb1, cube2, prs1];
mesh = DiscretizeRegion[model, MeshQualityGoal -> "Maximal", AccuracyGoal -> 4,
                        MaxCellMeasure -> {"Volume" -> 0.01}, PerformanceGoal -> "Quality"];

{lambda, eigfuns} = NDEigensystem[{-Laplacian[{u[x, y, z]}, {x, y, z}]}, u[x, y, z],
                                                Element[{x, y, z}, mesh], 8];

and everything worked just fine. If I do the same importing an .obj mesh I got the following error when trying to solve the eigenvalue problem:

Set::shape: Lists {lambda, eigfuns} and NDEigensystem[{{-u [x, y, z] - u  [x, y, z] - u [x, y, z]}}, u[x, y, z], {x, y, z} ∈ MeshRegion[<3>, <2>], 8] are not the same shape.

Clearly the mesh has a wrong shape. Indeed if I call MeshCellCount on this latter mesh I get an array of 3 values, but on the primitives mesh I get an array of 4 values, which is sort of unexpected. How can I fix the imported mesh to deal with the current formulation of the eigenvalue problem, which, if I'm not mistaking, should be correct for a 3d surface? Thanks.

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract