9

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]

enter image description here

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. enter image description here

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?

user21
  • 39,710
  • 8
  • 110
  • 167

2 Answers2

2

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}]

Mathematica graphics

Michael E2
  • 235,386
  • 17
  • 334
  • 747
  • 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. –  Sep 08 '15 at 16:24
  • How can I insert hyperlinks in a comment? –  Sep 08 '15 at 16:26
  • 1
    Markdown links are permitted in comments: [text](url). – Michael E2 Sep 08 '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 08 '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. –  Sep 08 '15 at 17:32
  • @Willinski Thanks, I missed that. – Michael E2 Sep 08 '15 at 17:34
1

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["NDSolve`FEM`"];
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

enter image description here

Have fun!

Alexei Boulbitch
  • 39,397
  • 2
  • 47
  • 96
  • 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. –  Sep 08 '15 at 16:27