과학/지구과학

전향력의 개념과 MATLAB으로 곡률항을 무시한 운동 궤도 그리기

MinseobKim 2022. 8. 6. 23:08

국지좌표계에서 단위 질량당 전향력은 다음과 같이 나타낼 수 있다.

$\overrightarrow{a}_{co}=fv\hat{i}-fu\hat{j}  (f=2Ωsin𝜙)$

 

이를 이용하여 아래 문제를 한번 풀어보자.


북위 $43°(f=10^{-4}s^{-1})$에서 동쪽으로 수평속도 $1000ms^{-1}$로 $1000km$ 거리를 날아간 경우 전향력의 영향으로 남쪽으로 변위된 총 거리를 구해보자. 


 

 

$\frac{dv}{dt}=-fu$
$v=-fu_{0}t $(u는 전향되는 정도가 충분히 작아 상수로 가정)


$\int _{y_{0}}^{y_{0} +\delta y} dy=\int _{0}^{t} vdt\\
\delta y=-fu_{0}\int _{0}^{t} tdt\ =\ -fu_{0} t^{2} /2\ =\ -\ \left( 10^{-4} s\right)\left( 1kms^{-1}\right)( 1000s)^{2} /2\\
\therefore \delta y=-50km$

 

위 계산 과정을 통해 남쪽으로 $50km$만큼 전향된다는 것을 계산해냈다.

 

이제 MATLAB으로 운동 궤도를 그려보자.

 

close all
disp('초기 경도 : 0도')
init_lat = input('초기 위도(degrees)를 입력해주세요');
u0 = input('동서바람 속도(m/s)를 입력해주세요 ' );
v0 = input('남북바람 속도(m/s)를 입력해주세요');
rad= 6.37e6;
omega=7.292e-5;
lat0 = pi*init_lat/180.;
runtime = input('적분 시간(s)을 입력해주세요');
time = runtime*1.*1.;
options = odeset('RelTol', 1.e-6);

[t,x] = ode45('xprim2',[0 time],[u0 v0 0 lat0],options,rad,omega);
long = x(:,3)*180/pi;           % converts longitude to degrees
lat = x(:,4)*180./pi;           % converts latitude to degrees

A1 = -1+min(long); A2 =1+max(long);
A3 =  -1+min(lat); A4 = 1+max(lat);
figure(2)
plot(long,lat,'r')
axis([A1 A2 A3 A4])
xlabel ('위도')
ylabel ('경도')
title('곡률항을 고려하지 않은 궤도 계산')
hold on
plot(long(1),lat(1),'kd')

위 코드는 초기 위도, 수평 속도와 수직 속도, 적분 시간을 입력받아서 궤도를 계산해 그려주는 코드이다.

function xprim = xprim2(t,x,flag,rad,omega)
% Computes time derivatives for use with script coriolis.m.
xprim = zeros(4,1);
omega = 7.292e-5;
rad= 6.37e6;

xprim(1) = (2.*omega)*sin(x(4))*x(2);
xprim(2) = -(2.*omega)*sin(x(4))*x(1);
xprim(3) = x(1)/(rad*cos(x(4)));
xprim(4) = x(2)/rad;

위 코드는 ode45함수에 미분방정식 인자로 들어갈 xprim함수이다.

 

이를 MATLAB에서 실행하고 아래와 같이 문제의 값을 넣으면 궤도 그래프를 얻을 수 있다.

 

 

웹 프로그램에 얻은 위도,경도를 대입하여 아래로 전향된 거리를 구해보았다.

아래로 전향된 거리는 $49.11km$로 역시 위에서 수식으로 계산한 $50km$와 유사한 값이 나오는 것으로 보아 위 코드가 문제가 없음을 알 수 있다.


참고자료 :  대기역학 - James R. Holton 제5판