출처: 식품의약품 안전평가원, “자외선 차단제 바로알고 올바르게 사용하세요"리플렛
출처: 식품의약품 안전평가원, “자외선 차단제 바로알고 올바르게 사용하세요"리플렛
1. 온도와 열을 구분하여 설명하시오.
온도는 어떤 것이 얼마나 뜨겁고 차가운지를 우리에게 알려주는 양이다. 반면에 열은 그들 사이의 온도 차이로 인해 한 물체에서 다른 물체로 전달되는 과정에서 발생하는 에너지이다.
2. 공기 분기의 평균 속도는 기온과 어떻게 관련 있는가?
공기나 다른 물질의 온도는 원자와 분자의 평균 속도를 측정하는 것으로, 더 높은 온도는 더 빠른 평균 속도에 해당한다.
3. 지구 대기 중에서 열은 (a) 전도, (b) 대류, (c) 복사에 의해서 어떻게 전달되는가?
(a) 전도: 물질 내에서 분자에서 분자로 열이 전달되는 것.
(b) 대류: 액체 및 기체에서의 질량 이동에 의한 열 전달.
(c) 복사: 한 물체에서 다른 물체로의 열 전달은 그들 사이의 공간이 반드시 가열될 필요가 없다.
4. 잠열이란 무엇인가? 어떻게 잠열이 중요한 대기 에너지 원천인가?
물과 같은 물질을 한 상태에서 다른 상태로 바꾸는 데 필요한 열에너지를 잠열이라고 한다. 수증기가 구름으로 응축될 때, 잠열은 대기 중으로 방출된다. 이것은 뇌우나 허리케인과 같은 폭풍우에서 엄청난 양의 열을 제공한다.
5. 켈빈 온도 와 섭씨 온도의 차이는?
켈빈 눈금의 각도는 섭씨 1도와 정확히 같은 크기이며, 0 K의 온도는 -273°C와 같다. 섭씨 273도를 더하면 °C에서 K로 변환할 수 있다.
7.물체의 온도는 그 물체가 방출하는 복사량에 어떻게 영향을 미치는가?
물체의 온도는 물체가 방출하는 방사선의 파장에 직접적인 영향을 미치며, 물체의 온도가 높을수록 방출되는 방사선의 파장은 짧아진다. 마찬가지로, 물체의 온도가 증가함에 따라, 방사선의 피크 방출은 더 짧은 파장으로 이동한다. 이러한 온도와 파장의 관계는 독일의 물리학자 빌헬름 빈 (1864–1928)의 이름을 따서 빈의 법칙* (또는 빈의 변위 법칙)이라고 불린다. 또한 온도가 높은 물체는 온도가 낮은 물체보다 높은 속도 또는 강도로 방사선을 방출한다. 따라서, 물체의 온도가 증가함에 따라 매초 더 많은 총 방사선이 방출된다. 이 온도와 방출된 방사선 사이의 관계는 요제프 스테판 (1835–1893)과 루트비히 볼츠만 (1844–1906)의 이름을 따서 스테판-볼츠만 법칙*으로 알려져 있다.
1. 태양으로부터의 복사 에너지.
2. 지구의 첫 대기(약 46억 년 전)는 수소와 헬륨, 그리고 메탄과 암모니아와 같은 수소 화합물일 가능성이 높다. 두 번째, 더 밀도가 높은 대기는 뜨거운 내부 안에 있는 녹은 암석의 가스가 화산과 증기 분출구를 통해 빠져나가면서 점차 지구를 감싸고 있었다. 우리는 화산이 오늘날과 같은 가스를 내뿜었다고 가정한다: 대부분 수증기 (약 80 퍼센트), 이산화탄소 (약 10 퍼센트), 그리고 몇 퍼센트까지 질소를 내뿜는다. 수백만 년이 흐르면서 뜨거운 내부(배기 가스)에서 끊임없이 분출되는 가스는 구름으로 형성된 수증기를 풍부하게 공급했다. 비는 수천 년 동안 지구에 내렸다. 많은 양의 이산화탄소가 바다에 용해되었다. 대기는 점차 질소(N2)가 풍부해졌다. 오늘날 대기에서 두 번째로 풍부한 가스인 산소(O2)는 태양에서 나오는 에너지 넘치는 광선이 수증기(H2O)를 수소와 산소로 분해하는 과정에서 극도로 느린 농도의 증가를 시작했을 것이다. 수소는 더 가벼웠을 것이고, 산소가 대기에 남아 있는 동안 우주로 올라갔을 것이다. 식물이 진화한 후, 대기 중 산소 함량은 더 빠르게 증가하여, 아마도 약 수억 년 전에 현재의 구성에 도달했을 것이다. 오늘날의 대기는 대부분 78%를 차지하는 질소 분자와 건조 공기의 21%를 차지하는 산소 분자로 이루어져 있으며, 아르곤, 네온, 헬륨, 수소, 크세논은 나머지 1%를 차지한다. 만약 후자의 가스가 제거된다면, 질소와 산소의 비율은 약 80 km (또는 50 mi)의 고도까지 상당히 일정하게 유지된다.
3. 질소, 산소, 아르곤, 수증기
4. 수증기.
5. 오존과 산소는 태양의 해로운 자외선을 걸러내고, 온실가스는 지구를 따뜻하게 유지하며, 대기는 마실 물과 숨을 쉴 산소를 제공한다.
6. 물은 강수량을 형성하고, 잠열을 방출하며, 온실 가스이다. 수증기는 지구의 열-에너지 균형에 매우 중요하다.
7. 이산화탄소는 식생 붕괴, 화산 폭발, 동물 생명의 호기, 그리고 화석 연료의 연소와 삼림 벌채를 통해 대기로 들어간다. 이산화탄소는 광합성, 화학적 풍화, 식물성 플랑크톤의 도움으로 지구 해양으로의 퇴적작용을 통해 제거된다. 화석 연료의 연소와 삼림 벌채로 인해 대기 중 이산화탄소의 양은 지난 100년 이상 동안 증가했다.
8. 흙, 먼지, 바닷물파도의 소금, 산불 연기, 화산재 입자와 가스, 오염물질.
9. 수증기와 이산화탄소.
1. 학생들에게 일일 일기도와 일기 예보를 포함하여 1주일간 블로그나 일기를 쓰게 합니다. 학생들이 실제 날씨와 예측 날씨의 일치에 대해 각 요일에 대한 해설을 하도록 합니다.
2. 학생들에게 매일 날씨 관측, 특히 날씨의 중요한 변화를 기록하게 합니다. 학생들은 이 데이터를 표시하고 관측치를 사용하여 그래프에 주석을 달고, 수업에서 배운 개념을 테스트해 볼 수 있습니다. 학생들은 폭풍우가 몰아치는 날씨가 평균보다 낮은 표면 압력과 실제로 관련이 있는지 여부를 확인하려고 할 수 있습니다.
본 수업은 수리대기과학 전자 판서 내용을 그대로 upload 한 것입니다. 강의를 듣지 않고 판서 내용만으로 충분히 이해하고 학습하기에는 부족할 수 있습니다.
전반부에 설명된 유체역학으로서의 대기과학을 이해하고 넘어가야 Boas 수리물리학의 각 장이 어떻게 대기과학(역학방정식)에 적용/응용되는지 이해할 수 있습니다.
유체역학 대기과학
차원
단위 (국제 단위 SI)
물리량의 유효숫자
질점운동
유체운동 (오일러리안, 라그랑지안 운동표현)
유체의 가속도
벡터 연산 (판서 일부 누락)
발산
회전
라플라시안
또는
좌변은 순복사 플럭스, 우변 첫째항 부터 현열, 잠열, 지중열 플럭스
위 지표면 에너지 수지 식에서 잠열에 대한 현열의 비를 보웬비로 정의하고, 아래와 같이 전개할 수 있다.
작은 보웬비 (B<<1)를 나타내므로 에너지 수지 식은 아래와 같이 근사된다.
따라서, 고온의 해양에서는 보웬비는 0에 가깝고, 저온의 설빙면에서는 보웬비가 상당히 크다.
건조한 지표면이므로, Rn = H + HG 로 근사된다.
알베도 감소, 순복사 증가, 잠열 플럭스가 우세하고, 현열 플럭스는 감소하여 아래와 같은 근사를 보인다.
RN ~ HL
식생 캐노피 내에서 에너지 플럭스는 국지적인 공간에 따라 변함.
∆HS = 물리적인 에너지(열) 저장률 + 광합성에 따른 생화학적 열 저장률
HL = 증발+증산(transpiration) ⇒ 증발산(evapotranspiration)
식생의 성장을 고려하면, 에너지 평형은 복잡해 지는 이유
전나무 캐노피에서 관측된 에너지 수지의 예.
∆HS 는 나무의 열용량과 캐노피 내 기온 측정으로 추정한다. 주간에는 ∆HS 는 작지만, 야간에는 Q*와 거의 동일한 크기. 낮 동안 Q*는 거의 같은 양의 H와 LE로 나눠진다
도시 캐노피는 건물, 거리, 나무 그리고 공원 등을 포함하는 다양한 거칠기 요소들이 포함됨.
또는
Qf: 도시에서 사용된 연료소비와 관련된 열 플럭스, 즉 인공열 플럭스 (Anthropogenic heat flux )
도시 폐열에 의한 기온 증가 및 거칠기 요소들에 의한 난류 발달로 인한 현열 플럭스의 증가.
불침투성 지표면에 의해 증발할 수 있는 지표수의 양 감소되어 잠열 플럭스가 감소됨.
따라서 ⇒ 큰 보웬비를 나타냄
(구조명 : ) do [var = 초기값, 끝값, (증분)]
실행문
end do
do 이후 [ ] 내용이 없는 구조도 가능
(구조명 : ) do while (조건)
실행문
end do
(예제)
f(x) = x^3 + 4x^2 - 10 = 0 근을 bisection method (이분법) 로 계산하는 프로그램
이분법 계산과정
1) 입력한 양 끝단점 a,b의 함수 f(a), f(b)의 부호가 같으면 a,b 사이에 근이 없다.
2) f(a), f(b)의 부호가 다르면 a, b, 사이에 근이 존재
3) 근이 있는 경우, 중앙점 p를 계산하고 함수 f(p)를 계산한다.
4) f(a)와f(p)의 부호가 같으면, 근은 p와 b사이에 존재하므로 p를 a라 놓고 다시 계산
5) f(a)와f(p)의 부호가 다르면, 근은 p와 a사이에 존재하므로 p를 b라 놓고 다시 계산
6) 근이 있는 점들의 간격이 허용치보다 작으면 계산은 종료
7) 반복횟구가 허용치를 넘어도 계산 종료
8) 함수 f(p)가 0에 가까우면 p가 근이 되므로 계산 종료.
program mainprocedure
implicit none
integer :: i, maxit ! 4바이트 정수형 선언
real(kind=16) :: a, b, x, p, fa, fb, fp, tol, f ! 16바이트 실수형 선언
f(x) = ( x + 4 ) * x * x - 10 ! 문함수로서 프로시저 내에서의 한줄 함수식을 표현
10 print *, ' type a and b : '
read *, a, b
!! 이하 이분법 계산과정
if ( a > b ) then
x = a
a = b
b = x
end if
fa = f(a)
fb = f(b)
if ( fa * fb > 0.0 ) then
print *, 'f(a) and f(b) have same signs ! '
goto 10
else
print *, ' Input tolerance '
read *, tol
print *, ' Input maximum number of iterations '
read *, maxit
end if
loop : do i = 1, maxit ! 구조명 loop 인 순환구조 시작. 다중 구조의 경우, 구조명으로 분리하는게 편리
p = a + ( b - a ) /2
fp = f(p)
outer : if(abs(fp) <= 1.0e-20 .or. (b-a)/2 < tol) then ! 구조명 outer 인 순환구조 시작
print *, ' Final results '
print *, 'p, i, tol ', p, i, tol
exit loop ! 순환구조를 완전히 벗어나는 분기 명령어
else
print *, 'p, i, tol ', p, i, tol
inner : if (fa*fp > 0) then ! 구조명 inner 인 순환구조 시작
a = p
fa = fp
else
b = p
fb = p
end if inner
end if outer
end do loop
pause
end program mainprocedure
program mainprocedure
implicit none
intrinsic modulo
! modulo(a,b)는 a를 b로 나눌때 나머지를 계산하는 내장함수. 값이 0이면 a는 b의 배수임.
integer :: year, month, days
10 print *, ' type year and month ? '
! print * 은 표준 출력장치(화면)을 사용할 경우. write(*,*)와 같은 의미
if (year <= 0)
select case (month)
case (4,6,9,11)
days = 30
case (2)
if (modulo(year, 4) == 4) then
days = 29
else
days = 28
end if
case default
days = 31
end select
print *, " The number of dasy in month : ", month, ' is ', days
goto 10
end program mainprocedure
program mainprocedure
implicit none
integer :: month, days
10 print *, ' Tyep a month ?'
read *, month ! 표준 입력장치(키보드)를 통해서 입력 받을 경우
if(month ==1) days=31
if(month ==2) days=29
if(month ==3) days=31
if(month ==4) days=30
if(month ==5) days=31
if(month ==6) days=30
if(month ==7) days=31
if(month ==8) days=31
if(month ==9) days=30
if(month ==10) days=31
if(month ==11) days=30
if(month ==12) days=31
if (month < 1 .or. month > 12) stop ! 해당하는 달이 존재하지 않으면 무조건 종료한다.
print *, ' Month:days ', month, days
goto 10 !! 결과 출력 후 무조건 goto 문에 의해 다음 자료를 입력받기 위해 문번호 10으로 분기한다.
end program mainprocedure
앞의 코드를 아래와 같이 수정할 수 있다.
program mainprocedure
implicit none
integer :: month, days
10 print *, ' Tyep a month ?'
read *, month
if(month ==1) then ; days=31
else if(month ==2) then ; days=29
else if(month ==3) then ; days=31
else if(month ==4) then ; days=30
else if(month ==5) then ; days=31
else if(month ==6) then ; days=30
else if(month ==7) then ; days=31
else if(month ==8) then ; days=31
else if(month ==9) then ; days=30
else if(month ==10) then ; days=31
else if(month ==11) then ; days=30
else if(month ==12) then ; days=31
else ; stop
endif
print *, ' Month:days ', month, days
goto 10
end program mainprocedure
! 프로시저를 사용한 프로그램의 예
! 각 프로시저의 프로그램 작성 순서는 아래와 같다.
! 포트란 95는 1~132 칼럼 중 임의의 위치에 코딩할 수 있다.
! 한줄에 여러 명령문을 작성하려면, 각 명령문을 세미콜론(;)으로 구분한다.
! 내부 프로시저는 반드시 상위 프로시저에서만 사용가능
! 외부 프로시저는 별도로 컴파일되는 독립 프로시저. 반드시 주프로시저 밖에서 작성함.
! 프로시저 종료는 반드시 end 문 사용
! 각 프로시저에서 모듈을 호출할때는 use 문 사용하고, 프로시저 시작문 바로 다음 줄에 작성해야 함.
! 사용자가 변수 형과 속성을 정의하고 사용하겠다는 의미로 반드시 implicit none 문을 사용
! 변수선언은 변수형 :: 변수명들 로 표기한다. 이중 콜론(::)은 변수형과 변수명을 구분하는 용도
!모듈 프로시저 (반드시 주프로그램 앞에 위치해야)
module variablegroup
implicit none
integer :: i, j
real(kind=16) :: a, b
end module variablegroup
! 주 프로시저 (모든 연산과정을 제어하는 기능)
program mainprocedure
use variablegroup
implicit none
integer :: k
real(kind=16) :: c
i=1; j=2; a=3; b=4
call internalprocedure(c)
call externalprocedure(k)
write(*, "(' a+b = ', f10.2)") c
write(*, "(' +j=', i10)") k
contains ! 이하 프로그램이 내부 프로시저임을 나타내는 명령어
! 내부 프로시저 (주 프로시저의 일부분에 해당하는 프로시저)
subroutine internalprocedure(d)
use variablegroup !주 프로시저와 공유하므로 생략 가능
implicit none !주 프로시저와 공유하므로 생략 가능
real(kind=16) :: d
d=a+b
end subroutine internalprocedure
end program mainprocedure
! 외부 프로시저
subroutine externalprocedure(p)
use variablegroup
implicit none
integer :: p
p=i+j
end subroutine externalprocedure