51def build_deck(output_path: str | os.PathLike[str] =
"runs/", *,
52 final_time: float = FINAL_TIME, num_steps: int = NUM_STEPS,
53 output_interval: int = 2000, mesh_size: float = MESH_SIZE,
54 horizon: float = HORIZON,
55 tags: list[str] |
None =
None) -> Deck:
56 d = Deck(dim=2, t_final=final_time, n_steps=num_steps,
57 particle_sim_type=
"Single_Particle")
58 d.set_comment(
"Single-particle rectangle: uniform in-process mesh; fixed "
59 "SW corner, linear pull on NE, set up in Python")
60 d.set_output(output_path, tags=tags
or TAGS, interval=output_interval,
61 debug=1, tag_pp=
"1", pvd_collection=
True)
64 d.add_particle_type(Geometry(
"rectangle", [0.0, 0.0, 0.0, SIDE, SIDE, 0.0]),
65 MeshSpec(size=mesh_size, info=
"uniform"))
66 d.add_material(horizon=horizon, density=DENSITY, K=K,
67 G=to_G(E=peridem.to_E(K, NU), nu=NU), Gc=GC,
71 hold = Geometry(
"rectangle", [0.0, 0.0, 0.0, corner, corner, 0.0])
72 pull = Geometry(
"rectangle",
73 [SIDE - corner, SIDE - corner, 0.0, SIDE, SIDE, 0.0])
74 d.add_displacement_bc(region=hold, direction=[1, 2],
75 time_fn_type=
"constant", time_fn_params=[0.0],
76 spatial_fn_type=
"constant", zero_displacement=
True)
77 d.add_displacement_bc(region=pull, direction=[1, 2],
78 time_fn_type=
"linear", time_fn_params=[PULL_RATE],
79 spatial_fn_type=
"constant")
81 d.set_test(
"test_peridynamics")
Deck build_deck(str|os.PathLike[str] output_path="runs/out/", *str preset="short", float|None final_time=None, int|None num_steps=None, int|None output_interval=None, float omega=OMEGA, str|os.PathLike[str] mesh_dir=MESH_DIR, str|os.PathLike[str] csv=CSV)