1
$\begingroup$

I am trying to create a 2D finite element mesh. This geometry is a box with a $8 \times 2$ array of disks and a "L"-shape slab removed. I built the region using RegionDifference and RegionUnion in version 13.3.1.0.

Needs["NDSolve`FEM`"]; sizes = {length -> 3000, height -> 2800, ductW -> 100, offsetx1 -> 50, offsetx2 -> 1300, offsety1 -> 300, offsety2 -> 10, offsety3 -> 40, slab -> 10, r -> 8}; \[CapitalOmega]1 = Rectangle[{0, 0}, {length, height}] /. sizes;(*box*) \[CapitalOmega]d1 = Rectangle[{ductW, height-offsety1-slab}, {ductW + slab + offsetx1, height-offsety1}]/.sizes; \[CapitalOmega]d2 = Rectangle[{ductW, height/2}, {ductW+slab, height-offsety1}]/.sizes; \[CapitalOmega]d = RegionUnion[\[CapitalOmega]d1,\[CapitalOmega]d2];(*L-shape slab*) tubes = Table[{Disk[{ductW + slab/2, height - offsety2 - n*offsety3}, r], Disk[{ductW + slab/2 + offsetx1, height - offsety2 - n*offsety3}, r]},{n, 0, 7}]/.sizes;(*8x2 array of disks*) \[CapitalOmega]3 = RegionDifference[\[CapitalOmega]1, RegionUnion[Flatten@tubes]]; \[CapitalOmega] = RegionDifference[\[CapitalOmega]3, \[CapitalOmega]d]; (*domain to be meshed*) 

The features are not found by showing the region (see the left figure below):

Show[Region[\[CapitalOmega]], PlotRange ->{{0,400},{1300,2800}}] 

The domain cannot be discretized by either ToElementMesh or DiscretizeRegion, both of which give nothing:

mesh1 = ToElementMesh[\[CapitalOmega], "MaxCellMeasure" -> {"Length" -> 5*10^-2}]; mesh2 = DiscretizeRegion[\[CapitalOmega], MaxCellMeasure -> 0.01, AccuracyGoal -> 5, PrecisionGoal -> 5] 

I checked each part of the geometry, all of which look all right. For example, the $8 \times 2$ array of disks is shown in the right figure. In my later simulation, the surface of the disks (actually tubes) will be set to be a constant temperature.

I am worried about if the FEM in Mathmatica cannot resolve small features in a relatively large computational domain. If it is the case, should I use Point Heat Source in the document to represent the small tubes, which will be considered to have no spatial extension instead. However, as a heat source it seems to give a heat flux boundary condtion (Neumann) but not a fix temperature condition (Dirichlet). Can anyone help me to discritize the region for NDSolve using FEM? Thank you very much!

Region[RegionUnion[Flatten@tubes]] 

enter image description here

Followup question:

When illustrating the geometry with AccuracyGoal, PerformanceGoal and other accuracy-improving settings. These small features still can not be resolved. Any more thoughts?

Show[Region[\[CapitalOmega]], PlotRange -> {{0, 400}, {1300, 2800}}, PlotPoints -> 1000, AccuracyGoal -> 20, PrecisionGoal -> 20, PerformanceGoal -> "Quality", MaxRecursion -> 6, WorkingPrecision -> 100] 
$\endgroup$
2
  • $\begingroup$ You changed the question quite substantially, I find. I think you would benefit from reading through some of the documentation like Solving PDE with FEM and the ElementMesh generation. That will answer your questions, I think. $\endgroup$ Commented Jul 16, 2024 at 11:43
  • $\begingroup$ Thanks @user21, I have read some examples and may post a new question. I just kept a relevant follow-up question here. $\endgroup$ Commented Jul 17, 2024 at 2:43

1 Answer 1

1
$\begingroup$

A slight increase of the accuracy goal helps:

mesh1 = ToElementMesh[\[CapitalOmega], AccuracyGoal -> 3]; mesh1["Wireframe"[PlotRange -> {{0, 400}, {1300, 2800}}]] 

enter image description here

Zoom a little more:

mesh1["Wireframe"[PlotRange -> {{0, 300}, {2300, 2800}}]] 

enter image description here

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.