실측 셀: NiFe/NF 양극 600µm · Pt/C 음극(dry) · PiperION ·
1M KOH 65°C · 13ch 서펜타인 2.2×2.2cm (채널 0.88/깊이 0.9mm) · 4mL/min. 질문: 소수성 PP mesh를 양극 위에 올리면 기포 배출이 좋아져 고전류 전압이
내려가는가? 어떤 mesh를, 어디에 덮는 게 최적인가? 방법: pristine 실측 곡선으로만 캘리브레이션(점선 대비 ●) → 전극 접촉각으로
이탈기포 크기와 그물코 접촉확률·전극/PP 젖음성 차이를 계산하고, Mesh 1에서만 유로 폐색까지 반영해
순수 예측(실측 mesh 분극 데이터 미사용).
Mesh 계산 방식
✓ dry cathode(물 투과) — 이 프리셋은 켜서 캘리브레이션됨
실측 셀은 양극에만 anolyte를 흘리는 건식 음극입니다. HER은 전자 1개당 물 1개를
쓰는데, AEM에선 OH⁻가 음극→양극으로 이동하며 물을 n_drag개씩 끌고 나갑니다
(전기삼투 = 음극 입장에선 손실). 음극이 받아야 할 물 = (1 + n_drag)·j/F,
막 확산이 다 못 대주면 물 공급 한계전류 jlim,water = F·k_w/(1+n_drag)가
생기고 부족분은 η_water = −(RT/F)·ln(1 − j/jlim,water).
(kernel/watertransport.py)
이 프리셋은 물 항을 켠 채로 재피팅됐습니다 — pristine 16점
전체에 대해 RMSE 26 mV (물 항 없던 옛 피팅은 39 mV). 핵심: 셀이 2.25 A/cm²에
실제로 도달했으므로 물 벽은 그 위여야 합니다. D_w=1.6e-9로 벽을 3.5 A/cm²에 두니
(측정 최대의 1.5배) 물 페널티는 최대전류에서 ~30 mV로 온건하고, 나머지 항(j₀·void)이
그 주위로 재조정됩니다. 16점 모두 도달가능. 재피팅값: j₀_OER 7.9e-4→6.3e-4 · j₀_HER 3000→6500 ·
α_a 1.14→1.19 · r_mem 9.6e-6→1.33e-5 · void 0.82→0.81. 잔차에 ±40 mV 굴곡이 남는데
이는 채널 모델의 void-onset 형태(EPS_FILM 문턱)에서 오는 구조적 한계입니다.
여전히 미구현: 막 내부 함수율 λ(x) 분포·건조에 따른 막 전도도 저하·이력현상(모두
건식을 더 나쁘게 만드므로 이 항은 하한) · 음극의 기체상 H₂ 배출 ·
Ni foam 내부 관통류.
① 셀 프리셋
13채널·0.88mm를 해상하려 복셀 0.55mm로 재구축 — 몇 초 걸림.
펌프 유량mL/min
–
② PP mesh 선택 · 배치
mesh (두께>채널깊이 = 장착불가)
직사각형 개구와 버블 발생 위치
mesh를 선택하면 Lx·Ly 직사각형 개구가 표시됩니다.
덮는 비율 (유로 경로 기준)100%
부분 커버 위치
수중 가스버블 접촉각 — 기포 내부 기준
실측 기본값(n=3): 촉매/NF 145.1±2.3°
(142.5/146.3/146.6) · bare PP mesh 101.2±1.6° (99.7/101.2/102.8).
가스버블 각도는 내부에서 θwater=180°−θbubble로 변환합니다.
수중 기포각이 클수록 aerophobic이므로 NF가 기포를 밀어내고, 상대적으로 기포 친화적인
PP가 접촉 기포를 수집한 뒤 유동·부력 또는 mesh 끝단에서 방출하는 방향입니다.
③ 분극곡선 — 실측(캘리브레이션) vs 예측 (여러 개 겹쳐보기)
실측 pristine모델 pristine
곡선을 계산하면 ΔV 요약이 표시됩니다.
④ 경로를 따라 — 기포 막힘 θ(s)
가로 = 유로 입구→출구. 회색 = pristine, 초록 = mesh
(음영 구간 = mesh 덮인 곳). 최대전류에서의 프로파일.
⑤ CP 실시간 — 기포 축적에 따른 V(t)
지금 돌아가는 라이브 3-D 셀의 실제 거동 —
CP 모드면 V(t), CA 모드면 j(t). 기포가 촉매를 덮고 유로를 막을수록 곡선이 떠오릅니다.
아래 슬라이더로 조건을 바꾸면 새 과도응답부터 다시 기록.
선택한 mesh의 strand 수집·접촉 합체·힘평형/끝단 방출도 이 라이브 기록에 포함됩니다.
⬇ 아래는 3D 탭과 같은 전체 컨트롤 —
유로 형식·채널수·유량·접촉각 등을 바꾸고 ▶ 분극곡선 예측 계산을 다시 누르면
그 조건의 곡선이 ③에 겹쳐 쌓입니다 (mesh 없이도 쌓여서 유로끼리 비교 가능).
이 시뮬레이터가 실제로 푸는 것
3개의 층이 양방향으로 맞물려 돕니다. ① 전기화학(0-D) — 셀 전압↔전류. ② 기포(Lagrangian) — 핵생성·성장·이탈·상승.
③ 유동(3-D NS) — 전해질이 유로를 흐르며 기포를 쓸어냄.
기포가 촉매를 덮으면 ①의 전류가 떨어지고, 기포가 유로를 막으면 ③의 흐름이 바뀌고,
그 흐름이 다시 ②의 기포를 옮깁니다. 커플링이 핵심이지, 각 식이 새로운 건 아닙니다.
기포가 덮은 면적은 못 쓰는 면적이라 국소 전류밀도가 j/(1−θ)로 뜁니다 —
이게 기포가 전압을 올리는 첫 번째 경로. Tafel 기울기 b = 2.303RT/αF.
η는 BV를 수치 역산해서 얻습니다(고전류 근사 안 씀).
kernel/kinetics.py · butler_volmer
Vogt 자가교반: 기포가 떨어지며 전해질을 저어서 물질전달 한계를 올립니다
(기포의 유일한 순기능). 반대로 기공률 ε만큼 이온 경로가 막혀 저항이 오릅니다 —
기포가 전압을 올리는 두 번째 경로.
kernel/transport.py · properties.conductivity
부호 함정: AEM은 OH⁻가 음극→양극으로 가므로 전기삼투가 음극 물을
빼앗아 갑니다 (PEM은 반대로 음극에 공급). 그래서 소비(1) + 끌림(ndrag)이
더해져서 물 수요가 됩니다. 막이 못 대주면 물 부족 한계전류가 생기고,
z=1인 이유는 전자 1개당 물 1개이기 때문.
kernel/watertransport.py · 기본 꺼짐
③ 기포 — 생애주기 (Lagrangian)
발생 (Faraday)
Qgas = ηF·(j·A)/(zF) · RT/P [m³/s]
발생량은 협상 불가. 전류를 정하면 가스량이 정해집니다 — 모델 전체의
보존 기준선이고, 발생 = 잔류 + 배출이 매 스텝 기계정밀도로 지켜집니다.
kernel/sources.py · faradaic_gas_rate
비등에서 유도된 Fritz 상관식에 임의 배율을 곱하던 방식은 제거했습니다.
이제 무유동 이탈직경을 해당 전극의 실측값으로 넣고, 유동 중에는
벽면 전단층의 국소 유속 ueff으로 힘 평형을 다시 풉니다.
이 값을 측정하지 않았다면 기본 244 µm는 예시 입력이며 정량 예측값이 아닙니다.
중요: 이탈하는 기포는 벽면 전단층 안에 있으므로,
벌크 유속이 아니라 국소 유속 ueff로 힘 평형을 다시 풉니다
(안 그러면 u≥0.2 m/s에서 전부 최소크기로 붙어버림).
접촉각 θ가 여기서 작동 — θ 30/60/120° → 51/87/129 µm.
kernel/bubbles/forces.py · bubblesim3d/parcels.py
상승 (Schiller–Naumann 항력)
vt: (4/3)·(Δρ/ρ)·g·d = CD(Re)·vt²
· CD = (24/Re)(1 + 0.15Re0.687)
Re를 알아야 CD를 알고 CD를 알아야 v를 알기에 반복해서 풉니다.
Stokes 근사 아님. 실제 기포 속도는 여기에 액체 유속이 더해집니다(≈70 mm/s 측정).
벽면 수직 이동 (Tomiyama 양력 vs Antal 벽윤활)
vn = (2r²ρ/9µ)·[ CWu²/r − CL|u|·γ̇ ]
전해기포는 Eo ≈ 10⁻³ (아주 작음)이라 Tomiyama 양력계수가 양수 →
벽으로 밀려갑니다. 그래서 기포가 전극을 안 떠나는 게 물리적으로 설명됩니다
(예전엔 그냥 물리가 빠져서 그랬음).
db는 전극 접촉각과 국소 벽면 유속으로 계산한 이탈기포 직경입니다.
버블 중심은 직사각형 단위 셀 전체 어디서든 균일하게 생길 수 있으며, 구멍 중앙에 고정하지 않습니다.
메시가 전극에 거의 붙어 있다는 상한 가정에서, 버블 전체가 Lx×Ly 개구 안에 들어가는 중심 영역만
비접촉으로 빼므로 그물코가 작고 가닥 면적이 많을수록 접촉확률은 증가하지만 2 mm 문턱은 없습니다.
입력값은 수중 가스버블 각도이며, PP의 θb가 더 작을 때 Young 식 기반 전달 구동력이 생깁니다.
χ는 메시 고체가 차지한 채널 체적비라 유속·압력강하 추정에만 씁니다.
촉매 차단 손실은 메시-전극 간격·압착·측면 액 접근 데이터가 없어 전압식에 임의로 넣지 않습니다. Lref, 0.6, 0.5, 0.3 상수는 제거했습니다. 접촉각 이력·거칠기·실제
woven mesh 압력손실은 아직 실측이 필요합니다. Mesh 2는 이 불확실한 두께 효과를 전부 끄고
같은 Pcontact,UB·Pwet만 남기는 분리 실험입니다.
kernel/meshlayer.py
⚠ 정직한 한계 (이건 안 합니다)
계면해상 CFD 아님 — 기포 표면을 VOF로 풀지 않습니다(µm 격자 + 표면장력 CFL →
HPC 영역). 우리 것은 Euler–Lagrange 등가물: 기포는 부분격자 입자입니다. 추적 기포는 표본 — 초당 ~10만 개 규모의 기포군을 최대 1400개 통계 cohort로
나타냅니다. mult는 정수 실개수가 아니라 기대 기포수 가중치이며 cohort 분할 뒤 1 미만도
가능합니다. 그래서 화면 마커 수는 실개수가 아닙니다. Ni foam 내부 관통류 없음 · 막 함수율 분포 λ(x) 없음 ·
기체 crossover 없음 · mesh는 부분격자 strand 수집 모델이며 woven-mesh 유동장을
직접 해상하지 않습니다. 정적 접촉각 이탈 근사는 이력현상을 포함하지 않습니다. 외부 검증 상태: 알칼라인 2전극 I–V는 실측(AHEAD)에 캘리브레이션됨(2.0V에서 12% 이내).
PEM/산성은 미검증. 기포 동역학·EIS 스펙트럼은 정량 검증 안 됨.
VALIDATION.md — 모델 카드 전문
Excel로 내보내기
모든 파일은 UTF-8 BOM CSV라 Excel에서 바로 열립니다(한글 안 깨짐).
각 파일 맨 위에 그 데이터가 나온 조건 전체가 # key,value 주석으로 붙어서,
나중에 봐도 어떤 설정이었는지 알 수 있고 조건별로 비교할 수 있습니다.
① LSV (분극곡선)
지금 🧪 mesh 실험 탭 ③에 쌓여 있는 모든 곡선을 한 파일로.
열 = j(mA/cm²) · 실측 pristine · 모델 pristine · 곡선마다 V(V) 한 열씩 + ΔV(mV).
조건이 다른 곡선도 같이 나가므로 Excel에서 바로 겹쳐 그릴 수 있습니다.
–
② 유로 위치별 — 기포 막힘 프로파일
입구→출구 경로를 따라 가스 홀드업 ε(s)와 전극 덮임 θ(s).
mesh를 계산했다면 mesh 곡선과 덮인 구간 표시까지 같이 나갑니다. 최대전류 기준.
–
③ 높이별 가스 홀드업 (라이브 3-D)
지금 돌아가는 3-D 셀의 높이(y)별 평균 ε — 입구에서 출구로 가스가
쌓이는 실제 프로파일 (eps_prof).
–
④ CP/CA 과도응답 V(t)
🧪 실험 탭 ⑤에 기록된 시계열 그대로 — 기포가 쌓이며 전압이
뜨는(또는 전류가 죽는) 곡선. 열 = t(s) · V 또는 j.
–
⑤ 기포 스냅샷 (라이브 3-D)
현재 프레임의 추적 기포 전부: 위치 x,y,z(mm) · 반경(µm) ·
전극(음극/양극) · 부착/상승 · 속도(mm/s). 주의: 이건 몬테카를로 표본입니다 —
1개가 실제 mult개를 대표하므로, 개수를 세지 말고 분포를 보세요.
–
⑥ 요약 지표 한 줄 (조건 비교용)
현재 조건의 모든 진단값을 한 행으로 — V·j·θ·홀드업·r_dep·기액비·
펌프유량·물 한계 등 + designer 설정 전체. 조건을 바꿔가며 여러 번 눌러
Excel에 행으로 쌓으면 그대로 비교표가 됩니다.
–
🤖 자연어 설계 연결
API 키 상태 확인 중…
키는 이 브라우저 전용 서버 메모리에만 보관되고 선택한 시간이 지나면 자동 삭제됩니다.
공개 서버의 환경변수 키는 외부 사용자에게 공유되지 않습니다.
자연어로 유로·설정 수정
AI는 허용된 설정과 유로 마스크만 제안합니다. 임의 코드는 실행하지 않습니다.
변경 미리보기
자동 시험 결과
분극 비교는 1-D 축약 채널 모델입니다. 임의 유로 형상은 연결성과 3D 격자
빌드만 검사하며, 세부 형상별 성능은 직접 해석한 것으로 간주하지 않습니다.
부품 레이어 (켜기/끄기)
음극측 ← 유로 · 음극 전극/PTL · 막 · 양극 전극/NF · PP mesh · 유로 → 양극측