-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathelastic_wave_model.m
81 lines (64 loc) · 2.62 KB
/
elastic_wave_model.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
% Adım 1: Veriyi yükleme
data = readtable('Earthquake_Prediction_Analysis_Project/earthquake_data.csv');
% Adım 2: Gerekli özellikleri seçme
mag = data.mag;
depth = data.depth;
date_time = datetime(data.date_time);
% Model Parametreleri
L = 10; % Ortam Uzunluğu (m)
dx = 0.1; % Uzay Adımı Büyüklüğü (m)
dt = 0.01; % Zaman Adımı Büyüklüğü (s)
T = 2; % Toplam Simülasyon Süresi (s)
c = 5; % Dalga Hızı (m/s)
% Grid Başlatma
x = 0:dx:L; % Uzay Izgarası
t = 0:dt:T; % Zaman Izgarası
Nx = numel(x); % Uzay Izgarası Noktası Sayısı
Nt = numel(t); % Zaman Izgarası Noktası Sayısı
u = zeros(Nx, Nt); % Taşıma Matrisi
v = zeros(Nx, Nt); % Hız Matrisi
u0 = sin(pi*x/L); % Başlangıç Yer Değiştirme Profili
v0 = zeros(size(x)); % Başlangıç Hız Profili
u(:,1) = u0; % Başlangıç Koşullarını Uygula
v(:,1) = v0;
for n = 2:Nt % Zaman Adımı Döngüsü
for i = 2:Nx-1 % Uzay Adımı Döngüsü
% Sonlu Fark Şeması
u(i,n) = u(i,n-1) + dt*v(i,n-1);
v(i,n) = v(i,n-1) + dt*c^2/dx^2 * (u(i+1,n-1) - 2*u(i,n-1) + u(i-1,n-1));
end
end
% Adım 4: Sismik dalga simülasyonu
% Örnek olarak, basit bir sismik dalga simülasyonu gerçekleştirelim
% Bu adım için uygun modeller ve fonksiyonlar kullanılmalıdır
% Adım 5: Sonuçları görselleştirme
% Elastik ve sismik dalga simülasyon sonuçlarını görselleştirelim
% Elastik Dalga Simülasyonunu Görselleştirme
figure;
for n = 1:Nt
plot(x, u(:,n), 'b', 'LineWidth', 2);
xlim([0 L]);
ylim([-1 1]);
xlabel('Pozisyon (m)', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('Yer Değiştirme', 'FontSize', 12, 'FontWeight', 'bold');
title(['Elastik Dalga Simülasyonu (t = ', num2str(t(n)), ' s)'], 'FontSize', 14, 'FontWeight', 'bold');
drawnow;
pause(0.01); % Animasyon hızı kontrolü
end
% Sismik dalga simülasyonu
% ... (Sismik dalga simülasyonunu hesaplamak için gerekli kod)
% İleri düzey görselleştirme
% Animasyonlu 3D Grafik Oluşturma
figure;
for n = 1:Nt
plot3(x, u(:,n), t(n)*ones(size(x)), 'b', 'LineWidth', 2);
xlabel('Pozisyon (m)', 'FontSize', 12, 'FontWeight', 'bold');
ylabel('Yer Değiştirme', 'FontSize', 12, 'FontWeight', 'bold');
zlabel('Zaman (s)', 'FontSize', 12, 'FontWeight', 'bold');
title('Elastik Dalga Simülasyonu', 'FontSize', 14, 'FontWeight', 'bold');
grid on;
drawnow;
pause(0.01); % Animasyon hızı kontrolü
end
% Sismik dalga simülasyonu sonuçlarını görselleştirme
% Bu adım için uygun modellerin ve fonksiyonların kullanılması gerekmektedir