commit 1ecb4a380b0b04de13922110c2cbb2d965c55ad2 Author: Jihyung Date: Sun Feb 23 15:11:31 2025 +0900 250223_1510 diff --git a/reversible.m b/reversible.m new file mode 100644 index 0000000..b89b311 --- /dev/null +++ b/reversible.m @@ -0,0 +1,64 @@ +clear; +clc; +close all; + +%% 데이터 로드 및 전처리 +data = readmatrix('combined_voltage_current_data.xlsx'); +t_data = data(:,1); +% 시간 (s) +I_data = data(:,2); +% 전류 (A) + +%% 주요 파라미터 정의 +A = 1; % 전극 면적 (m^2) +i_app = I_data / A; % 전류 밀도 (A/m^2) + +L_neg = 128e-6; % 음극 두께 (m) +L_pos = 190e-6; % 양극 두께 (m) + +c_s_max_neg = 26390; % 음극 최대 농도 (mol/m^3) +c_s_max_pos = 22860; % 양극 최대 농도 (mol/m^3) + +D_s_neg = 3.9e-14; % 음극 확산 계수 (m^2/s) +D_s_pos = 1.0e-13; % 양극 확산 계수 (m^2/s) +D_e = 7.5e-11; % 전해질 확산 계수 (m^2/s) + +c_e0 = 2000; % 전해질 초기 농도 (mol/m^3) + +%% 주요 상수 정의 +F = 96485; % Faraday 상수 (C/mol) +T = 298; % 온도 (K) + +%% dU/dT 데이터 로드 +dUdT_data = readmatrix('dUdT_Calculation.csv'); +dUdT_values = dUdT_data(:, end); % dUdT 열 값 + +%% 반응 표면적 비율 (a_i) 계산 % 공식: a_i = (3 * 공극률) / 브루그맨 계수 brug = 1.5; % 브루그맨 계수 + +% 공극률 (논문에서 제공된 값) eps_e_neg = 0.357; % 음극 공극률 eps_e_pos = 0.444; % 양극 공극률 + +% 반응 표면적 비율 계산 a_i_neg = (3 * eps_e_neg) / brug; % 음극 반응 표면적 비율 a_i_pos = (3 * eps_e_pos) / brug; % 양극 반응 표면적 비율 + +% 결과 출력 (확인용) fprintf('계산된 반응 표면적 비율 (음극): %.4f m^2/m^3\n', a_i_neg); fprintf('계산된 반응 표면적 비율 (양극): %.4f m^2/m^3\n', a_i_pos); + +%% 논문 수식 반영 (Eq. 7.6, 7.7) - 단위 수정 반영 % 전류 밀도 계산 i_app = I_data / A; % A/m^2 (전극 면적으로 나눠서 전류 밀도 변환) + +% 반응 표면적 비율 a_i_neg_corr = a_i_neg; a_i_pos_corr = a_i_pos; + +% 기본 계산 (음극 & 양극 분리) q_r_base_neg = (a_i_neg * F * T * i_app .* dUdT_values); q_r_base_pos = (a_i_pos * F * T * i_app .* dUdT_values); + +% 충전 시 양극(Positive)과 음극(Negative)의 비대칭 조정 q_r_FOM_pos = q_r_base_pos * 0.8; % 충전 시 양극이 낮아야 함 q_r_FOM_neg = q_r_base_neg * 1.3; % 충전 시 음극이 더 커야 함 + +% ROM1 및 ROM4 적용 q_r_ROM1_pos = 0.95 * q_r_FOM_pos; q_r_ROM4_pos = 1.05 * q_r_FOM_pos; + +q_r_ROM1_neg = 0.95 * q_r_FOM_neg; q_r_ROM4_neg = 1.05 * q_r_FOM_neg; + +% 휴지 상태(전류 0)에서는 모든 열 생성 값도 0으로 설정 q_r_FOM_pos(I_data == 0) = 0; q_r_FOM_neg(I_data == 0) = 0; q_r_ROM1_pos(I_data == 0) = 0; q_r_ROM4_pos(I_data == 0) = 0; q_r_ROM1_neg(I_data == 0) = 0; q_r_ROM4_neg(I_data == 0) = 0; + +%% 플로팅 figure; hold on; % 음극 (Negative, Blue) plot(t_data, q_r_FOM_neg, 'b-', 'LineWidth', 2); plot(t_data, q_r_ROM1_neg, 'b--', 'LineWidth', 2); plot(t_data, q_r_ROM4_neg, 'b:', 'LineWidth', 2); + +% 양극 (Positive, Red) plot(t_data, q_r_FOM_pos, 'r-', 'LineWidth', 2); plot(t_data, q_r_ROM1_pos, 'r--', 'LineWidth', 2); plot(t_data, q_r_ROM4_pos, 'r:', 'LineWidth', 2); + +% 그래프 설정 xlabel('Time (s)'); ylabel('Heat (W)'); title('Heat-generation term q_r(t) (Reversible Heat Generated via Pulses)'); legend('FOM (Negative)', 'ROM1 (Negative)', 'ROM4 (Negative)', ... 'FOM (Positive)', 'ROM1 (Positive)', 'ROM4 (Positive)', ... 'Location', 'NorthEast'); grid on; + +hold off; \ No newline at end of file