Major changes: - Dashboard: WebSocket-based chat with session management - Dashboard: New chat components (ChatPane, ChatInput, ModeToggle) - Dashboard: Enhanced UI with parallel coordinates chart - MCP Server: New atomizer-tools server for Claude integration - Extractors: Enhanced Zernike OPD extractor - Reports: Improved report generator New studies (configs and scripts only): - M1 Mirror: Cost reduction campaign studies - Simple Beam, Simple Bracket, UAV Arm studies Note: Large iteration data (2_iterations/, best_design_archive/) excluded via .gitignore - kept on local Gitea only. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
"""Reset bracket stiffness optimization study by deleting database and optionally cleaning Nastran files."""
|
|
import optuna
|
|
from pathlib import Path
|
|
import argparse
|
|
|
|
study_dir = Path(__file__).parent
|
|
storage = f"sqlite:///{study_dir / '2_results' / 'study.db'}"
|
|
study_name = "bracket_stiffness_optimization_atomizerfield"
|
|
|
|
def clean_nastran_files():
|
|
"""Remove old Nastran solver output files."""
|
|
model_dir = study_dir / "1_setup" / "model"
|
|
nastran_extensions = ['*.op2', '*.f06', '*.log', '*.f04', '*.pch', '*.DBALL', '*.MASTER', '*.asg', '*.diag']
|
|
temp_patterns = ['_temp*.txt', '*_temp_*']
|
|
|
|
deleted = []
|
|
for pattern in nastran_extensions + temp_patterns:
|
|
for f in model_dir.glob(pattern):
|
|
try:
|
|
f.unlink()
|
|
deleted.append(f.name)
|
|
except Exception as e:
|
|
print(f"[WARNING] Could not delete {f.name}: {e}")
|
|
|
|
return deleted
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Reset bracket optimization study")
|
|
parser.add_argument('--clean', action='store_true', help='Also clean Nastran output files')
|
|
parser.add_argument('--clean-only', action='store_true', help='Only clean Nastran files, keep database')
|
|
args = parser.parse_args()
|
|
|
|
if not args.clean_only:
|
|
try:
|
|
optuna.delete_study(study_name=study_name, storage=storage)
|
|
print(f"[OK] Deleted study: {study_name}")
|
|
except KeyError:
|
|
print(f"[INFO] Study '{study_name}' not found (database may not exist)")
|
|
except Exception as e:
|
|
print(f"[ERROR] Error: {e}")
|
|
|
|
if args.clean or args.clean_only:
|
|
deleted = clean_nastran_files()
|
|
if deleted:
|
|
print(f"[OK] Deleted {len(deleted)} Nastran files:")
|
|
for f in deleted[:5]:
|
|
print(f" - {f}")
|
|
if len(deleted) > 5:
|
|
print(f" ... and {len(deleted) - 5} more")
|
|
else:
|
|
print("[INFO] No Nastran files to clean")
|