from pycalculix import * def run_pycalculix_simulation(simulation_type, **kwargs): if simulation_type == "plate": model = Model("pycalculix_plate") model.set_units("mm") part = Part("block", model) part.make_box(0, kwargs["length"], 0, kwargs["width"], 0, kwargs["thickness"]) part.cut_cylinder(0, kwargs["hole_diameter"] / 2, 0, kwargs["hole_diameter"] / 2, kwargs["thickness"]) model.make_step_static(kwargs["force"]) elif simulation_type == "beam": model = Model("pycalculix_beam") model.set_units("mm") part = Part("block", model) part.make_box(0, kwargs["length"], 0, kwargs["width"], 0, kwargs["thickness"]) model.make_step_static(kwargs["load"]) model.run() stress = model.results().max_stress() deformation = model.results().max_displacement() return stress, deformation