Download inference.py from HaomingLuo/AgentFEM-DENIM: direct link, hf CLI and curl.
- Browser
- Download file 1.36 kB
-
https://huggingface.co/HaomingLuo/AgentFEM-DENIM/resolve/main/inference.py
- Command line
-
hf download hf://HaomingLuo/AgentFEM-DENIM/inference.py
-
curl -L -o inference.py https://huggingface.co/HaomingLuo/AgentFEM-DENIM/resolve/main/inference.py
1.36 kB
| """Minimal material-point inference for original or expanded DENIM weights.""" | |
| import argparse | |
| from pathlib import Path | |
| import torch | |
| from src.t2_graybox_discrete_energy import DENIM, rollout | |
| ROOT = Path(__file__).resolve().parent | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument( | |
| "--checkpoint", | |
| choices=("denim.pt", "denim-expanded.pt"), | |
| default="denim-expanded.pt", | |
| ) | |
| args = parser.parse_args() | |
| checkpoint = torch.load(ROOT / args.checkpoint, map_location="cpu", weights_only=False) | |
| model = DENIM(channels=2) | |
| model.load_state_dict(checkpoint["state_dict"]) | |
| model.eval() | |
| points = 121 | |
| coordinate = torch.linspace(0.0, 1.0, points) | |
| amplitude = torch.where(coordinate <= 0.5, 2.0 * coordinate, 2.0 * (1.0 - coordinate)) | |
| scalar = 0.008 * torch.sin(2.0 * torch.pi * coordinate) * amplitude | |
| basis = torch.tensor((1.0, -0.5, -0.5, 0.0, 0.0, 0.0)) | |
| strain = (scalar[:, None] * basis).unsqueeze(0) | |
| with torch.no_grad(): | |
| result = rollout( | |
| strain, | |
| torch.tensor((190.0e9,)), | |
| torch.tensor((0.30,)), | |
| torch.tensor((280.0e6,)), | |
| model, | |
| ) | |
| print("checkpoint", args.checkpoint) | |
| print("steps", points) | |
| print("maximum_abs_stress_mpa", float(result["stress"].abs().max() / 1.0e6)) | |
| print("final_peeq", float(result["peeq"][0, -1])) | |
| print("maximum_yield_residual_pa", float(result["yield_residual"].abs().max())) | |