csml-rpi/Foam-Agent
Foam-Agent: A large language model-based multi-agent framework for automating computational fluid dynamics workflows. Published in Computer Methods in Applied Mechanics and Engineering (CMAME).
Foam-Agent: AI 에이전트로 CFD 시뮬레이션 자동화
Foam-Agent는 오픈소스 소프트웨어 OpenFOAM을 사용하여 CFD(전산유체역학) 시뮬레이션을 실행하는 전체 워크플로우를 자동화하는 프레임워크입니다. 시뮬레이션하려는 내용에 대한 간단한 설명(일반 영어) 또는 기존 시뮬레이션 케이스를 받아 메시 생성, 시뮬레이션 파일 설정, 시뮬레이션 실행, 오류 자동 수정, 결과 시각화까지 모든 것을 처리합니다.
기능
- 엔드투엔드 자동화: 자연어 프롬프트(예: "이 조건에서 채널 내 유동을 시뮬레이션") 또는 기존 케이스 폴더에서 Foam-Agent는 시뮬레이션을 계획하고 필요한 모든 OpenFOAM 구성 파일을 생성하며 로컬 또는 고성능 컴퓨팅(HPC) 클러스터에서 시뮬레이션을 실행하고 선택적으로 시각화를 만듭니다.
- 멀티 에이전트 시스템: 여러 AI 에이전트(Architect, Input Writer, Runner, Reviewer)가 파이프라인을 통해 협력합니다. Reviewer가 오류를 감지하고 Input Writer가 수정하며 최대 25회의 자동 수정 시도를 합니다.
- RAG 강화 생성: OpenFOAM 튜토리얼에서 구축된 검색 시스템(FAISS)을 사용하여 관련 예제를 찾고 정확한 구성 파일을 생성합니다.
- 구성 가능한 서비스: 핵심 기능은 MCP(Model Context Protocol) 도구로 노출되어 Claude Code, Cursor, Windsurf와 같은 AI 어시스턴트와 통합할 수 있습니다.
작동 방식
- 입력: 시뮬레이션을 설명하는 텍스트 프롬프트 또는 기존 OpenFOAM 케이스 디렉토리/ZIP 파일을 제공합니다.
- 계획: Architect 에이전트가 요구 사항을 분석하고 필요한 단계(메시 생성, 파일 생성 등)를 결정합니다.
- 생성: Input Writer가 OpenFOAM 파일을 생성하고 RAG를 사용하여 튜토리얼 데이터베이스에서 관련 예제를 가져옵니다.
- 실행: Runner가 시뮬레이션을 실행합니다(로컬 또는 HPC의 Slurm을 통해).
- 검토 및 수정: Reviewer가 오류를 확인합니다. 오류가 발견되면 Input Writer가 필요한 파일을 다시 작성하고 시뮬레이션을 다시 실행합니다. 이 루프는 성공하거나 재시도 한도에 도달할 때까지 계속됩니다.
- 시각화(선택 사항): 요청된 경우 PyVista가 시각적 출력을 생성합니다.
빠른 시작
Docker 사용(권장)
사전 빌드된 Docker 이미지를 가져옵니다(OpenFOAM v10 및 모든 종속성 포함):
docker run -it \
-e FOAMAGENT_MODEL_PROVIDER=openai \
-e FOAMAGENT_MODEL_VERSION=gpt-5-mini \
-e OPENAI_API_KEY=your-key-here \
-p 7860:7860 \
--name foamagent \
leoyue123/foamagent
그런 다음 컨테이너 내부의 user_requirement.txt 파일에 시뮬레이션 설명을 작성하고 다음을 실행합니다:
python foambench_main.py --output ./output --prompt_path ./user_requirement.txt
기존 케이스 실행
기존 OpenFOAM 케이스 디렉토리 또는 ZIP 파일을 Foam-Agent에 제공할 수도 있습니다. 원본을 보존하고 작업 복사본을 만들어 실행합니다(또는 프롬프트에 따라 수정). 예:
python foambench_main.py --output ./output/imported-dam-break --case_path /path/to/damBreak
구성
Foam-Agent는 환경 변수를 통해 고도로 구성 가능합니다. 주요 설정은 다음과 같습니다:
- LLM 공급자: OpenAI, Anthropic, Bedrock, Ollama, DeepSeek 등에서 선택(기본값:
openai-codex). - 모델: 사용할 모델 지정(예:
gpt-5-mini,claude-sonnet-4-6). - 임베딩 공급자/모델: RAG용. 기본값은 HuggingFace 및
Qwen/Qwen3-Embedding-0.6B(로컬 실행, API 키 불필요). - OpenFOAM 대상: Foundation v10(기본값) 및 ESI/OpenCFD v2006 중에서 선택.
보고된 벤치마크 결과
이 프로젝트는 FoamBench 벤치마크(110개 시뮬레이션 작업)에 대한 결과를 보고합니다. Claude Opus 4.6 및 25개의 수리 루프를 사용하여 기본 및 고급 작업 모두에서 100% 성공률을 달성했습니다. 그러나 이는 벤치마크 결과이며 임의 케이스에 대한 보장이 아닙니다. 다른 모델은 점수가 낮았습니다(README 표 참조).
고급 기능
- 사용자 정의 메시: 외부 Gmsh
.msh파일 지원. - MCP 통합:
plan,input_writer,run,review,apply_fixes,run_case,visualization과 같은 도구를 AI 어시스턴트용으로 노출. - Claude Code 스킬: 단일 명령으로 전체 파이프라인을 조정하는
/foam스킬. - HPC 실행: Slurm 클러스터에 작업을 제출할 수 있지만 모니터링에는 제한이 있습니다(빈
squeue를 완료로 처리). - Docker 빌드: 소스에서 이미지를 빌드할 수 있습니다.
중요한 주의 사항
- README에는 100% 성공률이 벤치마크 결과이며 보장이 아니라고 명시되어 있습니다.
- 오류 수정은 25회 반복으로 제한됩니다. 진행이 없으면 워크플로우가 실패하고 마지막 시도의 파일을 남깁니다.
- 시뮬레이션이 성공한 후 시각화가 실패하면 워크플로우는
partial_success를 보고합니다. - 기존 케이스 가져오기에는 특정 규칙이 있습니다(예: 심볼릭 링크 없음, 명령 화이트리스트 없음).
자세한 소개는 deepwiki.com/csml-rpi/Foam-Agent를 방문하세요.
이 설명은 프로젝트의 README에만 기반합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트