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

