From a83eaebc709cfd535e861cf511b8608e3213b0d2 Mon Sep 17 00:00:00 2001 From: Chahak Mehta Date: Thu, 17 Aug 2023 13:14:29 -0400 Subject: [PATCH] Add uniaxial stress optim example plot --- .../optim_benchmark.py | 7 +++---- examples/optim_uniaxial_stress.png | Bin 0 -> 38565 bytes 2 files changed, 3 insertions(+), 4 deletions(-) rename optim_benchmark.py => examples/optim_benchmark.py (96%) create mode 100644 examples/optim_uniaxial_stress.png diff --git a/optim_benchmark.py b/examples/optim_benchmark.py similarity index 96% rename from optim_benchmark.py rename to examples/optim_benchmark.py index 993ee4e..48f2655 100644 --- a/optim_benchmark.py +++ b/examples/optim_benchmark.py @@ -63,14 +63,12 @@ jit_updated = init_vals jitted_update = jax.jit(solver.update) for step in tqdm(range(20)): - # jit_updated = solver.update(jit_updated, step + 1) jit_updated = jitted_update(jit_updated, step + 1) true_vel = jit_updated.particles[0].stress def compute_loss(params, *, solver, target_vel, config): - # material = init_simple({"E": params, "density": 1, "id": -1}) material = init_linear_elastic( { "youngs_modulus": params["ym"], @@ -157,10 +155,11 @@ def optax_adam(params, niter, mpm, target_vel, config): ) # ADAM optimizer fig, ax = plt.subplots(1, 2, figsize=(16, 6)) -ax[0].plot(param_list["ym"], "ko", markersize=2, label="E") +ax[0].plot(param_list["ym"], "ko", markersize=2, label="Youngs Modulus") ax[0].grid() ax[0].legend() ax[1].plot(loss_list, "ko", markersize=2, label="Loss") ax[1].grid() ax[1].legend() -plt.show() +# plt.show() +fig.savefig("./examples/optim_uniaxial_stress.png") diff --git a/examples/optim_uniaxial_stress.png b/examples/optim_uniaxial_stress.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6fccd41f9566029743147ade3fd9ca724b5c83 GIT binary patch literal 38565 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