Topology optimization of 3D self-supporting structures for additive manufacturing