해양모델링 2장5~18 2012.7.27 12:26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 2.1.2 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농



Similar documents
歯 조선일보.PDF

<C3D6BFECBCF6BBF328BFEBB0ADB5BF29202D20C3D6C1BE2E687770>

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4, 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

2

DBPIA-NURIMEDIA

화이련(華以戀) hwp

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

歯1##01.PDF

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

120229(00)(1~3).indd

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



교육 과 학기 술부 고 시 제 호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

시험지 출제 양식

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

6±Ç¸ñÂ÷

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

민주장정-노동운동(분권).indd

untitled

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>


E1-정답및풀이(1~24)ok

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

최우석.hwp

교사용지도서_쓰기.hwp

cls46-06(심우영).hwp

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

0429bodo.hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

<C6EDC1FDBABB2DB5F0C0DAC0CEBAD0BEDF2E687770>

I 문학과 우리 사회 눈 은 다가오는 계절인 봄의 생명력과 연결되어 작품 전체의 분위 기를 주도하고 있다. 1. 문학과 인접 분야 바탕 학습 확인 문제 본문 009쪽 01 4 문학은 음악, 미술 등과 같이 예술의 한 갈래로, 다른 예술 갈래와 달리 언

< B5BFBEC6BDC3BEC6BBE E687770>

<3130BAB9BDC428BCF6C1A4292E687770>

11민락초신문4호


140307(00)(1~5).indd

제1절 조선시대 이전의 교육

사진 24 _ 종루지 전경(서북에서) 사진 25 _ 종루지 남측기단(동에서) 사진 26 _ 종루지 북측기단(서에서) 사진 27 _ 종루지 1차 건물지 초석 적심석 사진 28 _ 종루지 중심 방형적심 유 사진 29 _ 종루지 동측 계단석 <경루지> 위 치 탑지의 남북중심

새만금세미나-1101-이양재.hwp

??

652

<33B1C7C3D6C1BEBABB28BCF6C1A42D E687770>

<C1DFB1DE2842C7FC292E687770>

96부산연주문화\(김창욱\)

???? 1

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

종사연구자료-이야기방 hwp

정 답 과 해 설 1 (1) 존중하고 배려하는 언어생활 주요 지문 한 번 더 본문 10~12쪽 [예시 답] 상대에게 상처를 주고 한 사 람의 삶을 파괴할 수도 있으며, 사회 전체의 분위기를 해쳐 여러 가지 사회 문제를 발생시킬 수 있다. 04 5

<34B1C720C0CEB1C7C4A7C7D828C3D6C1BEC6EDC1FD D28BCF6C1A4292E687770>

160215

참고 금융분야 개인정보보호 가이드라인 1. 개인정보보호 관계 법령 개인정보 보호법 시행령 신용정보의 이용 및 보호에 관한 법률 시행령 금융실명거래 및 비밀보장에 관한 법률 시행령 전자금융거래법 시행령 은행법 시행령 보험업법 시행령 자동차손해배상 보장법 시행령 자본시장과

hwp

580 인물 강순( 康 純 1390(공양왕 2) 1468(예종 즉위년 ) 조선 초기의 명장.본관은 신천( 信 川 ).자는 태초( 太 初 ).시호는 장민( 莊 愍 ).보령현 지내리( 保 寧 縣 池 內 里,지금의 보령시 주포면 보령리)에서 출생하였다.아버지는 통훈대부 판무

<C1DFB0B3BBE7B9FD3128B9FDB7C92C20B0B3C1A4B9DDBFB5292E687770>

ad hwp

3. 은하 1 우리 은하 위 : 나선형 옆 : 볼록한 원반형 태양은 은하핵으로부터 3만광년 떨어진 곳에 위치 2 은하의 분류 규칙적인 모양의 유무 타원은하, 나선은하와 타원은하 나선팔의 유무 타원은하와 나선 은하 막대 모양 구조의 유무 정상나선은하와 막대나선은하 4.

근대문화재분과 제4차 회의록(공개)

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

치밀한 시간 계산으로 한 치의 오차 없이 여행일정을 계획하지만, 상황이 항상 뜻대로 돌 아가지는 않는다. 인도에서는 철로가 끊겨 있기도 하고, 미국에서는 인디언의 공격을 받 기도 한다. 하지만 그는 항상 침착하고 냉정한 태도를 유지하며, 때로는 일정에 차질이 생 겨도

교육실습 소감문

1

는 우연히 안나를 알게 되고, 이후 두 사람은 서로 격렬한 사랑에 빠진다. 결국 안나가 브 론스키의 아이를 임신하게 되자, 브론스키는 안나가 카레닌과 이혼하고 자기와 함께 새로 운 생활을 하길 바라지만, 안나는 아들 때문에 망설인다. 한편, 카레닌은 브론스키를 사랑 한

¼þ·Ê¹®-5Àå¼öÁ¤

책을 펴내며 학교도서관의 다양한 자원을 활용한 교수-학습 활동에 관심이 높아지고 있습니다. 이는 2003년부터 본격적으로 시작된 학교도서관 활성화 사업에 의해 열악했던 학교도 서관 시설 및 환경이 나아지면서, 학교도서관이 자원기반활용학습의 중요한 공간으로 인식되기 시작

CD-RW_Advanced.PDF

109

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

歯 동아일보(2-1).PDF

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

<33352D2D31342DC0CCB0E6C0DA2E687770>

<B9E9B3E2C5CDBFEFB4F5B5EBBEEE20B0A1C1A4B8AE20B1E6C0BB20B0C8B4C2B4D92E687770>

1) 음운 체계상의 특징 음운이란 언어를 구조적으로 분석할 때, 가장 작은 언어 단위이다. 즉 의미분화 를 가져오는 최소의 단위인데, 일반적으로 자음, 모음, 반모음 등의 분절음과 음장 (소리의 길이), 성조(소리의 높낮이) 등의 비분절음들이 있다. 금산방언에서는 중앙

<BDC5C7E0C1A4BCF6B5B5C6AFC0A72DBEF7B9ABBAB8B0ED2E687770>

DBPIA-NURIMEDIA

No Title

내지4월최종

주지스님의 이 달의 법문 성철 큰스님 기념관 불사를 회향하면서 20여 년 전 성철 큰스님 사리탑을 건립하려고 중국 석굴답사 연구팀을 따라 중국 불교성지를 탐방하였습 니다. 대동의 운강석굴, 용문석굴, 공의석굴, 맥적산석 굴, 대족석굴, 티벳 라싸의 포탈라궁과 주변의 큰

15강 판소리계 소설 심청전 다음 글을 읽고 물음에 답하시오. [1106월 평가원] 1)심청이 수궁에 머물 적에 옥황상제의 명이니 거행이 오죽 하랴. 2) 사해 용왕이 다 각기 시녀를 보내어 아침저녁으로 문 안하고, 번갈아 당번을 서서 문안하고 호위하며, 금수능라 비

2 국어 영역(A 형). 다음 대화에서 석기 에게 해 줄 말로 적절한 것은? 세워 역도 꿈나무들을 체계적으로 키우는 일을 할 예정 입니다. 주석 : 석기야, 너 오늘따라 기분이 좋아 보인다. 무슨 좋은 일 있니? 석기 : 응, 드디어 내일 어머니께서 스마트폰 사라고 돈


Microsoft Word - 青野論文_李_.doc

1-1Çؼ³

<B3EBB5BFB0FCB0E8B9FD20B1B9C8B820B0E8B7F920C0C7BEC828C3D6C1BE29A4BB2E687770>

<B5B6BCADC7C1B7CEB1D7B7A52DC0DBBEF7C1DF E687770>

부벽루 이색 핵심정리+핵심문제.hwp

입장

1차내지

PSAT¿¹Á¦Áý ȨÆäÀÌÁö °Ô½Ã (¼öÁ¤_200210) .hwp

京 畿 鄕 土 史 學 第 16 輯 韓 國 文 化 院 聯 合 會 京 畿 道 支 會

2014밝고고운동요부르기-수정3

Transcription:

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지5 02 모델의 시작 요약 이 장에서는 감쇠 문제를 이용하여 여러분을 수치 모델링 세계로 인도한다. 유한 차분법 의 양해법과 음해법 그리고 일관성, 정확도, 안정도, 효율성 등을 설명한다. 첫 번째 수치 모델의 작성과 결과를 그림으로 보기 위해 FORTRAN 프로그램과 SciLab 스크립트가 사용된다. 2.1 감쇠 문제 2.1.1 문제 소위 말하는 감쇠 문제(decay problem)를 예로 들어 수치 모델링을 소개해보겠다. 이 문제는 수학적으로 다음과 같이 쓸 수 있다. (2.1) 여기서 C는 물질의 농도, t는 시간, k(그리스 문자 카파 )는 양의 상수이다. 기호 d는 어떤 변수의 다른 매개변수(위의 방정식에서 예를 든다면 시간)에 대한 변화를 뜻한다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지6 6 오픈소스 소프트웨어를 이용한 해양 모델링 2.1.2 물리적 해석 식 (2.1)의 좌변은 어떤 물질의 단위 시간당 변화율을 나타내며, 우변은 그 양을 나타낸 다. k 5 0이면 C는 처음 값 그대로 농도의 변화는 없다. k fi 0이면 우변이 음수가 되 며 농도는 항상 양수이다. 따라서 C는 시간에 따라 점차적으로 자신의 농도에 대해 일 정한 비율로 감소한다. 수학적으로 식 (2.1)은 1차 상미분 방정식(first-order ordinary differential equation) 이다. 이의 완전한 해를 구하려면 C의 초기값을 알아야 하기 때문에 초기값 문제(initialvalue problem)라고도 한다. 2.1.3 예제 할머니께서는 창고에 10리터짜리 술통에 포도주를 가득 채워두시곤 했는데 나는 그 포 도주의 유혹을 이기지 못해 매일 밤 몰래 창고로 가 술통에서 포도주를 1리터씩 퍼내 고는 할머니께서 눈치 채지 못하시게 빈자리를 물로 채워두었다. 그렇지만 내가 발각 되지 않았다고 해서 할머니께서 포도주의 맛이나 색깔이 변한 사실을 알지 못하셨을 까? 어떻든 여러분은 나의 옛날 술버릇 때문에 포도주의 시간에 따른 농도 변화를 계산 해낼 수 있을 것이다. 농도의 변화를 계산해보고자 할 때는 매일 포도주가 10%씩 없어 진다는 기본적인 사실만 알면 된다. 다음 표는 이 계산의 결과를 나타낸 것이다. 날짜 포도주 양(리터) 포도주 농도(%) 0 10 100 1 9.0 90.0 2 8.1 81.0 3 7.29 72.9 4 6.56 65.6 5 5.9 59.0 6 5.31 53.1 7 4.78 47.8 8 4.3 43.0 9 3.87 38.7 10 3.49 34.9 11 3.14 31.4 날짜 포도주 양(리터) 포도주 농도(%) 12 2.82 28.2 13 2.54 25.4 14 2.29 22.9 15 2.06 20.6 16 1.85 18.5 17 1.67 16.7 18 1.5 15.0 19 1.35 13.5 20 1.22 12.2 21 1.09 10.9 22 0.98 9.8

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지7 제 2 장 모델의 시작 7 포도주 양(리터) 시간(일) 그림 2.1 포도주 농도 변화 그림 2.1은 이 첫 번째 수치 예보 모델의 결과를 단지 펜과 종이만을 이용하여 그림 으로 나타낸 것이다. 예상한 대로 날이 지나면서 포도주 양은 줄어들고 있다. 이 감소 경향은 대략 지수함수적이라 할 수 있다. 2.1.4 SciLab으로 간단한 그래프 그리기 이 실습은 그림 2.1을 SciLab으로 그리는 방법을 보여준다. 1단계:적절한 문서 편집기를 열어 2.1.3절에 있는 표의 3줄(앞머리 항목 이름은 제외하 고)을 입력하고, 예를 들면 winethief.txt 라는 파일에 저장한다. 2단계:SciLab을 실행시켜 방금 만든 파일이 있는 폴더로 이동한다. 3단계:다음 명령어를 입력한다(명령행 끝에는 <return>이 있어야 한다). x=read( winethief.txt,21,3); plot(x(:,1),x(:,2)); xtitle(, Time (days), Wine content (liters), ) read 명령어는 자료를 파일에서 읽어들인다. 매개변수 21 은 자료의 길이를 모른 다는 뜻이다. 3 은 자료의 처음 3칸을 읽으라는 뜻이며, 21 은 칸을 지칭하는 것 은 아니다. plot 명령어는 첫 번째 줄의 값에 대한 두 번째 줄의 값을 그림으로 나

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지8 8 오픈소스 소프트웨어를 이용한 해양 모델링 타낸다. 마지막 줄은 이 그림의 축에 이름을 붙이는 일을 한다. ; 은 SciLab 명령 창에서 출력이 나오지 않게 한다. 4단계:그림창에 있는 File 메뉴의 Edit Figure Properties 나 그림창에서 직접 GED 를 클릭하여 선 굵기, 글자체 등을 바꾼다. 여기서 여러 가지 사용 가능한 옵 션을 이용해보는 것도 바람직하다. 5단계:작성된 그림을 적절한 포맷으로 저장한다. PostScript 포맷으로 출력한 다음 ImageMagick을 이용하여 PNG(Portable Network Graphics) 포맷으로 변경하면 편 리할 것이다. 2.2 유한 차분의 첫 단계 2.2.1 유한 시간 간격과 시간 단계 식 (2.1)을 시간 간격(time step)에 대해 다시 쓰면 다음과 같이 쓸 수 있다. (2.2) 여기서 n은 시간 단계(time level)를 의미하는데, 거듭제곱과 혼동하지 않도록 주의하자. n 5 0이면 계산을 시작하기 전의 초기 상태를 뜻하며, n51은 하나의 시간 간격(Dt) 후의 상태를, n 5 2는 2개의 시간 간격 후의 상태를 뜻한다. 2.2.2 양해법 시간 계산 식 (2.2)에서 미지수는 좌변으로, 기지수는 우변으로 정리하면 (2.3) 여기서 C n50 은 초기 농도로, k 및 Dt와 함께 주어져야 한다. 이 반복 계산 방법은 다음 n 1 1 시간 단계에서의 C 값을 계산하기 위해 이미 알고 있는 n 시간 단계에서의 값을 이용하게 된다. 이를 양해법 전방 시간 계산(explicit time-forward iteration)이라 한다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지9 제 2 장 모델의 시작 9 2.2.3 양해법의 수치 안정도 조건 식 (2.3)에서 보는 바와 같이 농도는 시간이 지남에 따라 조금씩 감소하는데, 이 감소하 는 정도는 k { Dt로 주어진다. 이 값이 1을 넘으면 계산되는 농도가 음의 값을 갖게 되므 로 이 값은 절대 1을 넘을 수는 없다.k { Dt > 2가 되면 농도는 음으로 증가하기까지 한 다. 따라서 필요한 조건 (2.4) 을 수치 안정도 조건(condition of numerical stability)이라 한다. 식 (2.3)은 식 (2.4)의 조건하에서만 안정적으로 계산된다. 따라서 시간 간격의 최대값은 k의 값에 따라 결정 되어야 한다. 2.2.4 음해법 시간 계산 식 (2.1)은 다음과 같이 다른 방법으로 차분화할 수 있다. (2.5) 여기서 우변의 농도는 n 1 1 시간 단계의 값으로 주어졌다. 이러한 방법은 독자들에게 약간 이상하게 보이겠지만 미지수와 기지수를 나누어 다시 써보면 다음과 같이 된다. (2.6) 양해법에 비해 이 음해법 전방 시간 계산(implicit time-forward iteration)의 장점은 어 떤 Dt의 값에 대해서도 수치적으로 안정하다는 점이다. 우변의 분모 값은 항상 1보다 크므로 농도는 시간에 따라 감소하고 절대 음의 값이 될 수는 없다. 2.2.5 복합 방법 양해법과 음해법을 함께 사용하여 다음과 같은 차분식을 구성할 수 있다. (2.7)

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지10 10 오픈소스 소프트웨어를 이용한 해양 모델링 여기서 a(그리스 문자 알파 )는 가중치로 0과 1 사이의 값을 갖는다. a 5 1이면 완전 한 음해법이며, a 5 0이면 완전한 양해법이 된다. a 5 0.5인 경우가 소위 말하는 반음 해법(semi-implicit scheme)이다. 2.2.6 그 밖의 방법 여기서 언급되지는 않지만 룽게-쿠타 방법(Runge-Kutta scheme) 이나 애덤스-배쉬 포스 방법(Adams-Bashforth scheme) 처럼 현재 시간 단계와 다음 시간 단계 사이의 중간 시간 간격을 고려하는 방법도 있는데, 이는 대체로 정확도나 효율성이 매우 높다. 2.2.7 일관성 조건 초기 농도 C o 에 대한 식 (2.1)의 정확한 이론해는 다음과 같이 주어진다. (2.8) 여기서 exp 는 지수함수를 뜻한다. 수치 시간 간격 값을 아주 작게 할수록 유한 차분식 의 수치해가 이론해에 더 가까워져 가면 이 수치 모델은 일관성(consistency)이 있다고 한다. 즉, 시간 간격 Dt를 작게 할수록 예보된 농도가 참값에 가까워져 간다는 뜻이다. 2.2.8 정확도 조건 미분 방정식을 차분 방정식으로 전환하는 과정에서 잘려나가는 항에 의한 오류(truncation error)가 발생한다. 또한 컴퓨터 계산에서는 제한된 수치 계산밖에 못하는 데서 발생하 는 반올림 오류(round-off error)도 발생한다. 이 두 오류는 당연히 계산 과정 내내 충분 히 작아야 한다. 2.2.9 효율성 조건 큰 프로그램은 계산 과정에서 자료의 출력이나 보관을 위해 막대한 양의 컴퓨터 공간(메 모리)이 필요하며 계산 시간도 매우 길어진다. 따라서 프로그램의 작성은 컴퓨터가 막대 한 자료에 치여 버벅거리지 않고 효율적으로 작동하여 적절한 시간 내에 작업을 완료할 수 있도록 작성해야 한다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지11 제 2 장 모델의 시작 11 2.2.10 프로그램 코드의 작동 과정 컴파일러는 FORTRAN 95 프로그램을 위에서부터 아래로 한 줄씩 컴퓨터 언어로 번 역하는데, 매개변수는 반드시 사용되기 전에 값이 주어져야 한다. 매개변수의 특성에는 정수, 실수, 행렬, 문자, 논리변수 등이 있다. 프로그램의 각 줄에는 x 5 b 1 c 와 같이 좌변에는 하나의 미지수만 올 수 있고, 또 b와 c는 사전에 정의되어 있어야 하며, 최종적으로 x가 결정된다. 2.2.11 첫 번째 FORTRAN 프로그램 모델러 사이의 오래된 전통인, 컴퓨터 모니터에 Hellow World 라고 표시하는 첫 번 째 프로그램을 작성해보자. PROGRAM first write(6,*) Hellow World END PROGRAM first FORTRAN 프로그램은 PROGRAM 이름 문장으로 시작하여 END PROGRAM 이름 문장으로 끝난다. 이 프로그램의 이름은 first 이지만, 여러분은 이름을 마음대로 붙일 수 있다. 이 프로그램을 first.f95 라는 이름의 파일로 저장하자. 2.2.12 FORTRAN 프로그램의 컴파일과 실행 과정 먼저 윈도우의 명령창(시작 => 모든 프로그램 => 보조 프로그램 => 명령 프롬프트)을 열 어 FORTRAN 프로그램 파일이 있는 폴더로 이동한다. 1단계 : 다음의 명령으로 컴파일한다. g95 -o first.exe first.f95 여기서 -o 는 실행 파일의 이름을 정해주는 역할을 한다. 2단계 : 컴파일러가 더 이상 오류 메시지를 출력하지 않을 때까지 오류를 수정한다. 3단계 : 컴파일이 성공적으로 끝났다면 새로 생성된 first.exe 파일을 파일창에서 더블 클릭하거나 명령창에서 first<enter>를 치는 것으로 실행시킬 수 있다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지12 12 오픈소스 소프트웨어를 이용한 해양 모델링 결과로 명령창에 Hellow World 가 표시될 것이다. 축하! 2.2.13 FORTRAN 요약 모든 상수, 매개변수, 변수, 행렬은 사용되기 전에 값이 주어져야 하며 정수(23, 0, 1, 3 등)는 실수(1.2, 4.2 25.23 등)와 구별되어야 한다. 논리 연산자(참 또는 거짓)와 문자도 정의되어야 한다. 상수 매개변수는 프로그램의 첫머리에서 다음의 예처럼 정의되어야 한다. INTEGER, PARAMETER :: nx = 11! horizontal dimension INTEGER, PARAMETER :: nz = 5! vertical dimension REAL, PARAMETER :: G = 9.81! acceleration due to gravity REAL, PARAMETER :: RHOREF = 1028.0! reference density REAL, PARAMETER :: PI = 3.14159265359! pi 느낌표 이후의 문자는 단순한 주석으로 컴파일 과정에서 무시된다. 주석은 꼭 필요 한 것은 아니지만 프로그램의 구조를 확인하거나 뒤에 이를 되새기는 데 매우 유용하 게 쓰인다. 매개변수는 프로그램 실행 과정에서 그 값을 변경할 수 있으며 다음과 같이 선언한다. REAL :: wspeed! wind speed INTEGER :: k! grid index CHARACTER(3) :: txt 위의 예에서 txt 는 세 글자로 구성된 문자 자료이다. 1차원 또는 2차원 행렬은 다음 과 같이 정의할 수 있다. REAL :: eta(0:nx+1)! sea-level elevation REAL :: w(0:nz+1,0:nx+1)! vertical velocity nx 5 11 그리고 nz 5 5라면 eta 는 11 1 2 5 13, 즉 아직 값이 부여되지 않은 원 소 eta(0), eta(1),..., eta(11), eta(12)를 가지며 w 는 7행 13열의 2차원 행렬로 선언된 다. 선언된 행렬에는 다음과 같이 DO 루프(loop)를 이용하여 값을 부여할 수 있다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지13 제 2 장 모델의 시작 13 DO k = 0,nx+1 IF(k > 50) THEN eta(k) = 1.0 ELSE eta(k) = 0.0 END IF END DO 이 DO 루프는 지수 k가 0에서부터 1씩 증가되어 nx+1이 될 때까지 반복 수행된다. 다른 방법으로 다음처럼 할 수도 있다. DO k = nx+1,0,21 IF(k > 50) THEN eta(k) = 1.0 ELSE eta(k) = 0.0 END IF END DO IF 문의 옵션으로는 > (보다 큼), < (보다 작음), == (같음), >= (보다 크거나 같음), <= (보다 작거나 같음), /= (같지 않음) 등이 있다. IF 문이 한 줄로 끝나면 아래의 예 처럼 위의 예에 있는 ELSE 나 END IF 등은 필요 없어진다. DO k = nx+1,0,21 eta(k) = 0.0 IF(k > 50) eta(k) = 1.0 END DO 출력을 위한 파일은 다음과 같이 하여 생성할 수 있다. OPEN(10, file = Ex1a.txt, form = formatted, status = unknown ) 첫 칸의 10 은 WRITE 나 READ 문에 연결되는 장치 번호이며, file 엔트리는

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지14 14 오픈소스 소프트웨어를 이용한 해양 모델링 파일 이름을, form 엔트리는 출력 파일이 ASCII 형식인지 바이너리(binary) 형식인 지를 구분한다. 여기서는 ASCII 형식의 출력을 택했다. status 엔트리에서 unknown 은 만약 그 이름의 파일이 없으면 새로 만들어서 출력하고, 만약 같은 이름 의 파일이 있으면 그 위에 덮어 쓰라는 뜻이다. 다음에 필요한 파일에 덮어 쓰지 않도 록 주의해야 한다. status 엔트리의 기타 옵션으로는 new 와 old 가 있다. 자료의 출력은 다음과 같이 WRITE 문으로 이루어진다. WRITE(10,*) G 여기서 장치 번호(여기서는 10)는 앞서의 OPEN 문에서의 장치 번호와 연결되며, * 는 표준형 출력 양식을 뜻한다. 장치 번호 6은 앞의 첫 FORTRAN 프로그램에서 본 바와 같이 모니터 출력으로 예약되어 있다. 마찬가지로 READ(5,*) 는 자판에서 읽어들임 을 뜻한다. 다음과 같이 한 번에 여러 개를 출력할 수 있다. WRITE(10,*) eta(10), eta(20), eta(30) 이 문장을 계속 실행시키면 3열의 자료가 출력될 것이다. 다음과 같이 하여 행렬의 한 열을 전부 다 출력할 수도 있다. WRITE(10,*) (eta(k), k = 1, nx) 파일이 더 이상 필요 없어지면 다음과 같이 하여 그 파일을 닫아야 한다. CLOSE(10) 2.3 예제 1 : 감쇠 문제 2.3.1 목표 이 예제의 목표는 FORTRAN 프로그램을 이용하여 양해법이나 음해법으로 식 (2.1)에 따른 물질의 붕괴를 예측해보는 것이다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지15 제 2 장 모델의 시작 15 2.3.2 작업 개요 물질의 초기 농도를 100%, 붕괴 상수를 초당 0.0001, 즉 k 5 0.0001 s 21 으로 두고 시 작하자. 시간 간격의 길이를 변경해가며 시간 간격의 길이에 따라 해가 얼마나 정확해 지는지를 알아보기로 하며, 양해법과 음해법 모두 검토해보자. 2.3.3 주의사항 문서 편집기로 FORTRAN 프로그램을 작성하여 파일 이름을 Exercise1.f95 로 하여 저장한다. 파일 이름으로 빈 공간이나 특수문자 등은 사용할 수 없다. 파일 이름을 다 르게 하는 것은 괜찮으나 너무 길면 좋지 않고 이 예제와 관련 있는 이름이 좋을 것이 다. 확장자 f95 는 이 파일이 FORTRAN 95의 원시 프로그램임을 나타낸다. 2.3.4 FORTRAN 프로그램 이 예제의 FORTRAN 프로그램인 winethief.f95 는 부록 CD의 Exercise 1 폴더에 있다. 2.3.5 결과 모델 계산 결과는 출력 파일 output1.txt 와 output2.txt 로 나올 것이다. 프로그램에 서 변수 MODE에 따라 양해법과 음해법의 계산이 이루어진다. 컴파일을 두 번 하는 것을 방지하기 위해 mode 값은 READ(5,*) mode 를 통해 자판에서 읽어들인다. 그림 2.2는 Dt 5 3600 s로 두고 식 (2.3)의 양해법과 식 (2.6)의 음해법 해를 나타낸 것이다. 그림에서 보는 바와 같이 양해법의 해는 참값보다 약간 작게 나오고 음해법의 해는 약간 크게 나왔다. 반음해법을 쓰면 더 좋은 결과를 얻을 수 있는데 이는 독자들 의 몫으로 남겨놓겠다. 시간 간격을 3600초로 하면 PC에서 수 초 이내에 계산이 완료된다. 시간 간격을 Dt 5 1 s와 같이 더 짧게 한다면 계산 결과는 더욱 향상될 것이다. 각자 확인해보자. 2.3.6 추가 예제 이 예제를 복합 방법[식 (2.7)]에서 a를 0.25, 0.5, 0.75 등으로 변경해가면서 계산해보자.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지16 16 오픈소스 소프트웨어를 이용한 해양 모델링 그림 2.2 시간에 따른 농도(%) 변화. 위는 음해법의 결과이고, 아래는 양해법의 결과이며, 가운데 곡선은 식 (2.8)에 따른 이론해이다. 2.4 오류의 검토와 제거 2.4.1 오류 메시지 FORTRAN 프로그램에 오류가 있으면 컴파일러는 하나 또는 여러 개의 오류 메시지를 내놓는데, 이 메시지를 검토하여 오류를 제거할 때 주의해야 할 사항이 있다. 2.4.2 차례차례 오류 제거하기 처음 오류 메시지를 보면 한 번에 하나씩 오류를 수정하는 게 좋다. 여러 오류 메시지 가 처음의 오류에 연관된 것일 경우가 더러 있기 때문이다. 오류를 수정한 후 확인하지 도 않고 또 다른 오류를 찾는 것은 별로 좋은 방법이 아니다. 오류를 하나 고쳤으면 바 로 컴파일해보도록 하자. 때로는 정리되지 못한 결과로 오류가 발생할 수도 있다. 2.4.3 오류 메시지 무시하기 때로는 오류 메시지가 애매하거나 잘못된 내용일 수도 있다. 이런 경우는 오류 메시지 내용보다 이 메시지에 관련된 프로그램의 문장 줄 번호를 더 주의 깊게 볼 필요가 있다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지17 제 2 장 모델의 시작 17 2.4.4 흔히 범하는 오류 흔히 오류는 숫자 0 을 문자 o 로 잘못 치거나 그 반대의 경우, 또 숫자 l (일)을 문자 l (엘)과 혼동하는 경우처럼 단순한 타이핑 실수로 일어나기도 한다. 가끔은 END DO 나 END IF 등을 빠뜨려 오류가 발생하기도 한다. 2.4.5 컴파일러를 믿어라 어떤 경우이든 컴파일러를 신뢰하는 것이 좋다. 오류 메시지가 나오면 여하튼 프로그 램에 오류가 있다는 뜻이다. 오류 메시지 내용은 바르지 못할 수도 있지만, 오류 메시 지가 나왔다면 그곳에는 최소한 1개 이상의 오류가 있음이 틀림없다. 고쳐도 고쳐도 끝 없이 오류가 나오면 휴식을 좀 취하거나 산보를 나가거나 아니면 한숨 자고 나서 다시 보는 것이 바람직하다. 휴식은 언제나 중요하다! 2.4.6 경고 메시지 컴파일 명령어에 -Wall (모든 경고 보여주기)을 추가하면 모든 경고 메시지를 볼 수 있 다. 예제 1에 다음과 같이 해볼 수 있다. g95 -Wall -o winethief.exe winethief.f95 경고 메시지는 프로그램 안에 다른 오류가 있는지를 확인하기 위해 살펴볼 필요가 있다.

해양모델링 2장5~18 2012.7.27 12:26 AM 페이지18