Topology optimization with multiple materials, multiple constraints, and multiple load cases