# A method to discretize a three-dimensional solid

Consider the following region:

eq1 = 4 x;
eq2 = 1/x;
eq3 = 1;
cover = y^2/x^2;
bottom = eq3 < y < eq1 && eq3 < y < eq2;
reg3D = ImplicitRegion[bottom && 0 <= z <= cover, {{x, 1/4, 1}, {y, 1, 2}, {z, 0, 15}}];

RegionPlot3D[bottom && z < cover, {x, 1/4, 1}, {y, 1, 2}, {z, 0, 15},
PlotPoints -> 100, Mesh -> None, AxesLabel -> Automatic] When I discretize this solid, I get the error messages:

DiscretizeRegion[reg3D, AccuracyGoal -> 4]


DiscretizeRegion::drf: DiscretizeRegion was unable to discretize the region ImplicitRegion[<<2>>].

BoundaryDiscretizeRegion[reg3D, AccuracyGoal -> 4]


BoundaryDiscretizeRegion::drf: "BoundaryDiscretizeRegion was unable to discretize the region ImplicitRegion[<<2>>]."

An attempt with "NDSolveFEMToElementMesh" terminates the C-Compiler. Reducing the z domain 0 < z < 9.7; all works fine.

new3D = ImplicitRegion[bottom && 0 <= z <= cover, {{x, 1/4, 1}, {y, 1, 2}, {z, 0, 9.7}}];
DiscretizeRegion[new3D, AccuracyGoal -> 4]
BoundaryDiscretizeRegion[new3D, AccuracyGoal -> 4]


I am looking for a technique to discretize the whole solid with 0 < z < 15?

Is this sufficient?

mesh = DiscretizeGraphics[
RegionPlot3D[
bottom && z < cover, {x, 1/4, 1}, {y, 1, 2}, {z, 0, 15},
PlotPoints -> 100, Mesh -> None,
AxesLabel -> Automatic] /. _Directive :> {}];

Show[mesh, BoxRatios -> {1, 1, 1}] • Unfortunately not. Sorry, I was not clear enough. My intention is to check volume calculations.Therefor, I need BondaryDiscretizeRegion or DiscretizeRegion. See my last question: "Is DiscretizeRegion not yet ready to discretize 3D-solids?" Thanks for your effort. – user31001 Sep 8 '15 at 16:24
• How can I insert hyperlinks in a comment? – user31001 Sep 8 '15 at 16:26
• Markdown links are permitted in comments: [text](url). – Michael E2 Sep 8 '15 at 16:41
• @Willinski My understanding is that DiscretizeRegion is roughly equivalent to DiscretizedGraphics@RegionPlot..., at least for the default settings. So if there's a problem, it's not DiscretizeRegion vs. DiscretizeGraphics. The volume problem, which is distinct from the question you asked here, seems to be the same problem as in your previous question, a degenerate polygon. – Michael E2 Sep 8 '15 at 17:10
• No, DiscretizeGraphics@RegionPlot... is not the same as DiscretizeRegion. You can check it with {RegionEmbeddingDimension@mesh, RegionDimension@mesh} = {3, 2}. You can obtain the Area@mesh but not Volume@mesh. – user31001 Sep 8 '15 at 17:32

Here is an alternative:

eq1 = 4 x;
eq2 = 1/x;
eq3 = 1;
cover = y^2/x^2;
bottom = eq3 < y < eq1 && eq3 < y < eq2;
new3D = ImplicitRegion[
bottom && 0 <= z <= cover, {{x, 1/4, 1}, {y, 1, 2}, {z, 0, 9.7}}];

Needs["NDSolveFEM"];
mesh = ToElementMesh[new3D, "MaxCellMeasure" -> 0.5];


To visualize,

 Show[mesh[
"Wireframe"[
"MeshElementStyle" ->
EdgeForm[Directive[Blue, Thickness[0.003]]]]],
BoxRatios -> {1, 1, 1}, ImageSize -> {200, 200}]


yielding Have fun!

• With the reduced z-domain it is ok, however with BondaryDiscretizeRegion or DiscretizeRegion, but not with 0 < z <15. See my last question: "Is DiscretizeRegion not yet ready to discretize 3D-solids?" Thanks for your effort. – user31001 Sep 8 '15 at 16:27