MTopOpt / Levelset_AdaptiveMesh

Parallel solver for levelset topology optimization method with adaptive mesh refinement
11 stars 4 forks source link

How to decide, which element should be refined? And How to handle the void elements, which is refined in last step? #1

Open mezzomax opened 3 years ago

mezzomax commented 3 years ago

Hallo, I see the gif in your work. It seems that, the refinement occurs always follow the boundary. In level set topology optimization, the boundary is changed during the processing. For example, in 1st step, the boundary is in element 1. Then I refine this element. But in 2nd step, the boundary went to element 2 and the element 1 becomes a void element. How can I handle this solution?

MTopOpt commented 3 years ago

Hallo, I see the gif in your work. It seems that, the refinement occurs always follow the boundary. In level set topology optimization, the boundary is changed during the processing. For example, in 1st step, the boundary is in element 1. Then I refine this element. But in 2nd step, the boundary went to element 2 and the element 1 becomes a void element. How can I handle this solution?

Please check the dictionary file “dynamicMeshDict” in app/constant. And the 24th line set the field "x", which is the topology field, to be refinement on. In our solver, a smooth function is adopted to calculated the topology field, so there are some gray elements in solid-void boundaries, which can be used to guide the mesh refinement. As for your second question, OpenFOAM will unrefine the element if the value of "x" beyond the “lowerRefineLevel” and “upperRefineLevel”.