[{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/FNO/","section":"태그","summary":"","title":"FNO","type":"tags"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/GNN/","section":"태그","summary":"","title":"GNN","type":"tags"},{"content":"Numerical Weather Prediction \u0026amp; Nature Neural Network\n대기와 해양을 수치로 푸는 일, 그리고 그 자료를 신경망에 먹이는 일에 관한 기록입니다. WRF·ROMS·FVCOM 같은 모델을 실제로 설치하고 돌려 본 과정과, 인공신경망으로 해양–대기 예측 모형을 개발해 온 연구를 정리해 두었습니다.\n","date":"2025년 6월 30일","externalUrl":null,"permalink":"/","section":"NWP \u0026 NNN","summary":"Numerical Weather Prediction \u0026 Nature Neural Network\n대기와 해양을 수치로 푸는 일, 그리고 그 자료를 신경망에 먹이는 일에 관한 기록입니다. WRF·ROMS·FVCOM 같은 모델을 실제로 설치하고 돌려 본 과정과, 인공신경망으로 해양–대기 예측 모형을 개발해 온 연구를 정리해 두었습니다.\n","title":"NWP \u0026 NNN","type":"page"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/Transformer/","section":"태그","summary":"","title":"Transformer","type":"tags"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/posts/","section":"글","summary":"","title":"글","type":"posts"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/%EB%94%A5%EB%9F%AC%EB%8B%9D/","section":"태그","summary":"","title":"딥러닝","type":"tags"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/%EC%88%98%EC%B9%98%EB%AA%A8%EB%8D%B8/","section":"태그","summary":"","title":"수치모델","type":"tags"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/%EC%88%98%EC%B9%98%EC%98%88%EB%B3%B4/","section":"태그","summary":"","title":"수치예보","type":"tags"},{"content":"Recent Advances in AI-based Atmospheric General Circulation Models\n김동훈1), 문일주1)*, 조민수2) (Dong-Hoon Kim, Il-Ju Moon, Minsu Joh)\n1) 국립제주대학교 태풍연구센터\n2) 한국과학기술정보연구원\n* 교신저자: 문일주, ijmoon@jejunu.ac.kr\nKeywords: AI-based AGCMs, Fourier Neural Operator (FNO), Transformer, Graph Neural Network (GNN)\n아래는 다음 논문의 전문입니다.\n김동훈, 문일주, 조민수, 2025: 인공지능형 전지구 대기대순환 모형의 기술 개발 동향. 대기(Atmosphere), 35(2), 263–276. doi:10.14191/Atmos.2025.35.2.263\n2024년 12월 4일 접수 · 2025년 1월 8일 수정 · 2025년 2월 8일 게재 확정 · 2025년 5월 31일 출판. Copyright Ⓒ 2025 한국기상학회. 저자 본인의 논문을 출처를 밝히고 원문 그대로 옮겼습니다.\nAbstract # The rapid advancement of artificial intelligence technologies has led to the development of numerous atmospheric general circulation models (AGCMs) based on artificial neural networks within the past two to three years. NVIDIA’s FourCastNet introduced Operator Learning techniques, leveraging AFNO and SFNO, while Huawei Cloud’s Pangu-Weather presented a conceptually robust approach with 3DEST capable of processing three-dimensional data directly and implemented a hierarchical temporal aggregation technique through independent training at distinct temporal intervals. Google DeepMind’s GraphCast, employing the next-generation GNN, maintained spatial and vertical resolution parity with ERA5, while the Shanghai AI Laboratory’s FengWu model enhanced long-term prediction performance through variable-specific independent processing tailored to atmospheric variable characteristics. Microsoft’s ClimaX stands as an integrated model capable of both short- and long-term forecasting as well as climate prediction, with applications spanning global, regional, and high-resolution domains. FuXi, developed by Fudan University in China, achieved leading performance in extended-range forecasting, reaching up to 15 days, by independently handling prediction in three segments: 05, 510, and 10~15 days. Lastly, ECMWF’s AIFS incorporates an attention-based GNN by merging the characteristics of GraphCast’s GNN with Transformers. Remarkably, the predictive capabilities of these models either match or surpass those of ECMWF’s physics-based numerical model IFS, while significantly reducing resource consumption and computational time. This study presents a comparative analysis of these AI-driven AGCMs, examining their predictive capabilities, neural network architectures, and data characteristics. The analysis aims to illuminate development trajectories for AI-based prediction models in meteorological and climatological applications.\n1. 서 론 # 인공지능(artificial intelligence; AI)의 급속한 발전이 지구 및 대기 과학 분야에서 점차적으로 자료 기반 모델들(data-driven models) 모델을 채택하고 있음을 조명한다. 특히, 딥러닝(deep learning, 심층학습) 기술은 지구 시스템의 혼돈과 비선형 특성을 해석하고 기후 변화 도전을 해결하기 위해 광범위하게 활용되고 있다. 여기에서는 기상 및 기후 데이터를 위한 최신 AI 기반 전지구 대기대순환 모델들에 대한 포괄적이고 시기적절한 개요를 제공한다.\n전통적으로, 일반 순환 모델(general circulation models; GCMs)과 수치 기상 예측 모델(numerical weather prediction; NWPs)이 기후 변화 추세를 연구하고 미래 기상 및 기후 시나리오를 예측하는 데 널리 사용되어 왔다. 그러나 이러한 모델은 지역적 기상 및 기후 패턴에 미치는 지역 지형의 복잡한 세부 영향을 포착하는데 종종 실패하였다. 이러한 한계를 극복하기 위해 AI 기술이 등장하였다. 특히 machine learning (ML) 및 deep learning (DL) 기술은 기상 및 기후 데이터에서 잠재적인 추세 표현을 식별하고 복잡한 물리적 관계를 우회하여 접근한다. AI의 발전으로 인해 깊이 있는 학습모델이 대기 과학을 혁신하고 있으며, 이를 통해 대기 변수 간의 복잡한 비선형 관계를 풀어내고 대기 시스템의 동역학과 복잡성을 더욱 정확하게 포착할 수 있게 되었다.\nAI 모델들을 기반으로 하는 핵심 구조에 따라 분류할 수 있다. 예를 들어, 순환신경망(recurrent neural network; RNN)과 합성곱신경망(convolutional neural network; CNN), graph neural network (GNN), Transformer, 적대적 생성 신경망(generative adversarial network; GAN), Diffusion Model 등이 있으며, 이 들은 각각의 특성에 따라 다양한 날씨 및 기후 관련 데이터를 처리한다. 최근 2~3년 동안 AI 기술의 급격한 발전으로 전 세계적으로 여러 인공지능형 기상예측모델들이 등장하였다(Fig. 1). 이러한 모델들은 대부분 Transformer와 GNN 등을 기반으로 하고 있으며 유럽 중기예보센터(european centre for medium-range weather forecasts; ECMWF)의 수치모델 기반 통합예보시스템(integrated forecast system; IFS)과 동등하거나 보다 뛰어난 예측 성능을 보이면서 자원 사용량과 소요 시간을 현저하게 단축하는 성과를 달성하고 있다(Bi et al., 2022; Lam et al., 2022, 2023; Pathak et al., 2022; Bonev et al., 2023; Chen et al., 2023a, 2023b; Nguyen et al., 2023; Lang et al., 2024).\nFig. 1. Trends in the development of global atmospheric general circulation neural network models. The models summarized here are marked with orange dots and bold text. 기계학습을 기반으로 한 기상 및 기후 모델링에서 위도-경도 격자의 표현 한계를 인식하고 Weyn et al. (2020, 2021)에서 구면에 대한 새로운 접근법을 제안하였다. 이 후에 2022년부터 인공지능형 전지구 대기 대순환 모델들이 IT 대기업들의 주도로 개발을 시작하였으며 모델의 발표 시간 순서로 Fig. 1에 정리하였다. Figure 1의 주황색 점과 굵은 글씨로 표시된 모델들은 여기에서 요약 및 분석한 모델들을 나타낸다. NVIDIA의 FourCastNet은 adaptive fourier neural operator (AFNO; Pathak et al., 2022)와 spherical fourier neural operator (SFNO; Bonev et al., 2023)를 사용한 operator learning 기술을 선보였으며, 푸리에 변환 기반의 토큰 혼합 방식과 비전 변환기를 결합해 장거리 의존성을 모델링 하였다. Huawei Cloud의 Pangu-Weather (Bi et al., 2022)은 Swin-Transformer 기반 접근 방식을 개발하고 개념적으로 3차원 자료를 그대로 처리할 수 있는 3D Earth-specific transformer (3DEST)와 시간 간격별 독립 학습을 통한 hierarchical temporal aggregation 기법을 소개하여 ML 기반 방법이 기존의 물리 기반 수치 방법과 경쟁하거나 능가할 수 있음을 보였다. Google DeepMind의 GraphCast (Lam et al., 2022)는 차세대 신경망으로 주목받고 있는 GNN을 사용하여 구면에서 작동하는 모델을 개발하고 ERA5 (ECMWF ReAnalysis v5; Hersbach et al., 2020)의 수평∙연직 해상도와 동일한 해상도를 사용하여 날씨 예측에 있어 우수한 예측 성능을 보였다. 상하이 AI 연구실에서 개발한 FengWu (Chen et al., 2023a)는 대기 변수들의 특성을 고려한 변수별 독립처리 기법을 개발함으로써 장기 예측 성능을 높였다. Microsoft의 ClimaX (Nguyen et al., 2023)는 전지구 예측에서부터 지역까지, 단기예측에서 계절 및 기후 예측까지를 하나의 모델로 사용할 수 있는 기반 모델(foundation model)로 개발되었다. 중국 Fudan 대학의 FuXi (Chen et al., 2023b)는 기존 10일 예측을 뛰어넘어 15일까지 예측하는데 05일과 510일, 그리고 10~15일로 나누어 독립 학습하여 예측함으로써 10일 이상의 예측에서 현재 가장 좋은 성능을 보이고 있다. 마지막으로 ECMWF의 artificial intelligence forecasting system (AIFS; Lang et al., 2024)은 GraphCast의 GNN에 Transformer의 특징을 융합한 Attention-based GNN을 개발하여 현업 운영 중에 있다.\n이러한 모델들의 출판된 논문을 바탕으로 특성을 각각 분석하여 2장에 요약하였으며, 3장에서는 각 모델의 비교를 위한 요약 표를 제시하였다. 이를 통해 각 모델이 기상 예측 및 기후 모형 개발에 제공할 수 있는 기여와 한계를 가늠해 보고자 한다.\n2. 모델별 특징 # 각 모델의 연구논문 출판 순서대로 모델 간의 특성과 장단점을 각각 분석하였다. FourCastNet은 버전 1 (Pathak et al., 2022)과 버전 2 (Bonev et al., 2023)로 나누어 특성을 분석하였으며, Pangu-Weather (Bi et al., 2022, 2023), GraphCast (Lam et al., 2022, 2023), FengWu (Chen et al., 2023a), ClimaX (Nguyen et al., 2023), FuXi (Chen et al., 2023b), AIFS (Lang et al., 2024)의 순으로 분석하였다. 이 장의 모델별 특징 분석은 해당 논문들의 내용에서 요약한 것이므로 필요하다고 판단된 경우만 인용을 따로 추가하였음을 알린다.\n2.1 FourCastNet version 1 # FourCastNet은 \u0026ldquo;Fourier foreCasting Neural Network\u0026quot;의 약자로, version 1은 적응형 푸리에 신경 연산자(AFNO)와 함께 Vision Transformer (ViT; Dosovitskiy et al., 2020) 아키텍처를 사용하는 고해상도 전지구 기상 예측 모델이다(Pathak et al., 2022). 이 모델은 0.25도 공간 해상도로 단기 및 중기 예측을 정확하게 제공하는 것을 목표로 한다. FourCastNet의 개발 이유로 전통적인 수치 예보(NWP) 모델의 계산 복잡성과 내재적 편향을 극복하기 위해 고해상도의 데이터 기반 모델이 필요하다고 강조한다. 기존의 NWP와 달리, FourCastNet은 상당한 계산상의 이점을 제공하면서도 ECMWF의 통합 예보 시스템(IFS)과 같은 최첨단 모델에 필적하는 정확성을 유지한다(Pathak et al., 2022).\nFourCastNet 모델의 전반적인 아키텍처와 학습 및 추정 과정은 Pathak et al. (2022)의 Fig. 2에서 시각적으로 설명하고 있다. 이 모델은 AFNO를 사용하여 입력 데이터를 작은 패치들로 나누고, 이 패치들을 고차원 공간에 매핑(mapping)하여 잠재 변수들을 통해 예측을 수행한다. Pathak et al. (2022)의 Fig. 2에는 여러 모드의 학습 및 추론 방식이 설명되어 있는데, 이 중 미세 조정 방식(Fig. 2b), 강수량 진단 모델을 포함한 기본 예측 모델(Fig. 2c), 그리고 자유 실행 자회귀 추정 모델(free-running autoregressive inference model; Fig. 2d)가 포함되어 있다. 자유 실행자회귀 추정은 추론 단계에서 실제 데이터(ground-truth)를 사용할 수 없으므로, 모델이 이전에 생성한 예측을 다음 예측의 조건으로 사용하는 방법을 말한다. 이러한 구조를 통해 FourCastNet 모델은 다양한 대기 변수를 효과적으로 예측하며, 특히 강수량 진단을 위한 별도 모델을 통합하여 전체 대기 상태 예측과 독립적으로 강수량을 모델링한다는 점이 강조된다.\nFig. 2. Qualitative comparison of temperature predictions (t850) over Antarctica at 4380 h (730 autoregressive steps). The SFNO shows no visible artifacts even after six-month-long rollouts. Models which use FFT and do not incorporate spherical geometry are not stable for long rollouts compared to SFNO. The AFNO model breaks down early and shows large visible artifacts everywhere. In the non-linear FNO model, artifacts are less pronounced but increase in magnitude with time and towards the poles. Adapted from Fig. 1 in Bonev et al. (2023). 모델의 고해상도 입력을 다루기 위해 푸리에 변환 기반 접근법을 사용하여 AFNO를 활용하였다. AFNO는 입력 데이터를 주파수 공간으로 변환하여, 공간적인 상관관계를 효율적으로 모델링하고 복잡한 패턴을 학습할 수 있게 한다. 특히 AFNO는 전역적인 정보 처리를 위해 효율적인 주파수 도메인 필터링을 활용하여 모델이 고해상도 입력에서 발생하는 장거리 종속성을 잘 포착할 수 있도록 한다. 또한, AFNO의 푸리에 기반 토큰 혼합은 자원 효율성을 크게 향상시키면서도 높은 예측 성능을 유지할 수 있는 중요한 요소로 작용한다. 이 아키텍처는 ViT 백본과 푸리에 기반 토큰 혼합을 결합하여 장거리 종속성을 효율적으로 모델링할 수 있게 한다. ViT는 이미지 공간적인 특징을 포착하는데 유리하며, AFNO와 결합하여 모델이 전지구적 기상 데이터를 고해상도로 처리하는 데 필요한 복잡한 패턴 인식을 가능하게 한다. 이러한 조합은 전통적인 수치 모델의 정확도에 맞먹는 고해상도 전지구 예측을 가능하게 한다.\nFourCastNet은 ECMWF에서 제공하는 5세대 대기 재분석 데이터셋인 ERA5를 사용하여 학습되었으며, 1979년 이후 다양한 대기 변수의 시간별 추정을 학습에 사용하였다. 모델은 풍속, 온도, 지위고도, 상대 습도 등의 주요 대기 변수의 변화를 예측하도록 학습되었으며, 여러 고도에서 이러한 변수들을 다루었다. 학습 절차는 사전 학습과 미세 조정 단계를 포함하며, 지표 근처의 풍속과 강수량뿐만 아니라 대규모 역학을 이해하는 데 중요한 중층 대기 변수들의 예측에도 중점을 두었다.\n모델의 예측은 IFS 출력과 비교하여 평균제곱근오차(root mean square error; RMSE)와 이상 상관 계수(anomaly correlation coefficient; ACC) 지표를 중심으로 평가되었다. FourCastNet은 일관되게 높은 성능을 보여주었으며, 최대 1주일 선행 시간 동안 여러 주요 변수에서 IFS 모델과 경쟁력 있는 정확성을 나타냈다. 예를 들어, 500 hPa 지위고도(Z500)의 예측에서 IFS와 비교하여 선행 시간 3일 내에 ACC가 0.95 이상을 유지하였으며, 지표 근처 풍속(U10)의 경우 48시간 이내에 RMSE가 IFS 대비 약 10% 낮게 나타났다. 짧은 선행 시간(\u0026lt;= 48시간)의 경우, FourCastNet은 특히 고해상도 소규모 변수(예: 강수량 및 저층 풍속)에 대해 IFS를 능가하는 성능을 보였다. 반면, 더 긴 선행 시간에서는 일부 변수에 대해 IFS보다 약간 뒤쳐졌지만 여전히 경쟁력을 유지하였다[Pathak et al. (2022)의 Fig. 13 참조].\nFourCastNet의 중요한 장점 중 하나는 그 놀라운 속도와 효율성이다. 이 모델은 IFS모델이 15일간의 예측을 생성하는 데 걸리는 시간 대비 약 45,000배 빠르게 예측을 생성할 수 있으며, 주간 예측은 2초 이내에 완료된다. 또한, IFS 모델의 경우 대규모 앙상블 예측 생성이 계산 비용이 매우 높지만, FourCastNet은 단일 GPU에서도 수천 개의 앙상블 멤버를 신속하게 생성할 수 있어 자원 효율성이 매우 높다. 이러한 엄청난 속도 향상은 실시간 예측을 보다 실현 가능하게 할 뿐만 아니라 수천 개의 멤버로 구성된 대규모 앙상블 예측을 생성할 수 있게 하여 확률적 기상 예측을 개선하는 데 중요한 역할을 한다. FourCastNet는 허리케인 마이클(Michael) 및 대기 강(atmospheric river)과 같은 극한 기상 현상에 대한 사례 연구를 통해 모델이 이러한 현상을 정확하게 포착할 수 있음을 입증하였다.\nFourCastNet의 개발은 기상학의 미래에 큰 함의를 가진다. 전통적인 NWP 모델의 계산 비용을 일부만으로 고해상도 전지구 예측을 생성할 수 있는 능력은 고급 기상 예측을 더 넓은 커뮤니티에 제공할 수 있는 잠재력을 가지고 있다. 이는 특히 전통적인 기상 예측에 필요한 계산 인프라가 부족한 지역에 큰 영향을 미칠 수 있다. 모델의 신속한 앙상블 예측 생성은 확률적 예측 및 불확실성 정량화의 새로운 가능성을 열어주며, 이는 재난 대비 및 대응에서 중요한 의사 결정에 필수적이다.\n이러한 강점에도 불구하고, FourCastNet의 한계를 인정하며, 특히 소규모 과정의 처리와 과거 관측 데이터에 의존하는 점에서 미래 기후 조건에 대한 일반화 능력이 제한될 수 있다고 지적한다. 더 높은 해상도의 데이터로 모델을 훈련하고 대류 및 복사 상호작용과 같은 대기 역학에 영향을 미치는 추가 물리적 과정을 통합함으로써 향후 개선이 가능할 것이라고 제안하였다.\n2.2 FourCastNet version 2 # Bonev et al. (2023)은 2.1절의 FourCastNet v1에서 발전된 FourCastNet v2 모델을 소개하였으며, 주요 차이점은 기존의 AFNO를 Spherical FNO (SFNO)로 확장하여, 구면 좌표계에서의 안정적인 예측을 가능하게 한 점이다. FNO는 이산 푸리에 변환(discrete fourier transform; DFT)에 의존하지만, DFT는 구면에서도 평면 기하학을 잘못 가정하기 때문에 구면좌표에서 연산자를 학습할 때 시각적 및 스펙트럼 잡음(artifact)이 발생할 뿐만 아니라 뚜렷한 소산을 일으킨다. 이러한 한계를 극복하기 위해 구면에 대한 FNO를 일반화하여 구면 기하학에서 연산자를 학습할 수 있는 SFNO를 도입하였다.\n다시 말해서, SFNO는 기존의 AFNO와 다르게 구면 조화 변환(spherical harmonic transform; SHT)을 사용하여 지구 표면과 같은 구형 도메인에서의 장기적이고 안정적인 예측을 가능하게 한다. SFNO는 특정 구형 기하학적 대칭성을 유지하며, 이를 통해 회전 변환 후에도 일관된 결과를 보장할 수 있다. 이 모델은 구면 위에서의 물리적 현상을 더 잘 반영하는 특성을 가지고 있어, 장기 예측에서도 높은 신뢰성을 제공한다. 이전 버전인 FourCastNet은 fast fourier transform (FFT)을 기반으로 하여 구형 지리 정보 처리에 한계가 있었으며, 이로 인해 특히 극지방에서 비정상적인 주파수 인공잡음이 발생할 수 있었다. 반면에, 이번 SFNO 모델은 SHT를 적용하여 구형 기하학적 특성을 유지하며, 이러한 문제를 해결하였다. 특히, SFNO는 기존 FFT 기반의 FNO 모델보다 약 5,000배 빠른 속도로 1년간의 예측을 안정적으로 수행할 수 있었다는 점에서 큰 성과를 보였다. 이는 NVIDIA A6000 GPU를 사용하여 13분 만에 1년 예측을 완료한 결과로, 동일한 예측을 위해 1000 dual-socket CPU 노드에서 1시간이 소요(Bauer et al., 2020)되는 ECMWF의 IFS 모델과 비교할 때 상당한 속도 향상을 보여준다.\nSFNO는 최대 1년의 자기회귀(autoregressive) 예측에서도 물리적으로 타당한 동역학을 유지할 수 있음을 입증하였다. 이는 기후 예측 및 subseasonal-to-seasonal 예측(S2S)에서의 활용 가능성을 제시하며, 미래 기후 변화를 모델링하는 데 큰 기여를 할 수 있다. 또한 SFNO는 극단적인 기후 현상을 더 잘 예측할 수 있으며, 이를 통해 기후 변화 대응을 위한 보다 신뢰할 수 있는 정보를 제공할 수 있다.\nFigure 2에서는 기존 AFNO, FFT 기반 FNO, 그리고 이번 SFNO 모델의 남극 기온 예측 결과를 비교하고 있다. AFNO와 FFT 기반 FNO는 6개월 이상의 자기회귀 예측에서 큰 인공잡음을 보여주는 반면, SFNO는 눈에 띄는 인공잡음 없이 안정적인 예측을 보여준다.\n2.3 Pangu-Weather # Bi et al. (2022, 2023)에서는 Pangu-Weather이라는 AI 기반의 고해상도 글로벌 기상 예측 시스템을 소개하였다. Pangu-Weather는 ECMWF의 ERA5에서 43년간의 시간당 글로벌 기상 데이터를 사용하여 훈련되었으며, 총 약 2억5천6백만 개의 파라미터를 가진 심층 신경망을 이용한다. 예측의 공간 해상도는 0.25° × 0.25°로, ERA5의 해상도와 동등하다. 중요한 점은 Pangu-Weather가 기압면의 높이 정보를 3차원 데이터로 처리하는 3DEST를 설계하고, 누적 예측 오차를 줄이기 위한 계층적 시간 집계 알고리즘(hierarchical temporal aggregation algorithm)을 적용하여 예측 정확도를 크게 향상시켰다는 것이다(Fig. 3).\nFig. 3. Network training and inference strategies. (a) 3DEST architecture. Based on the standard encoder-decoder design of vision transformers, they adjusted the shifted-window mechanism19 and applied an Earth-specific positional bias. (b) Hierarchical temporal aggregation. Once given a lead time, they used a greedy algorithm to perform forecasting with as few steps as possible. They use FM1, FM3, FM6 and FM24 to indicate the forecast models with lead times being 1 h, 3 h, 6h or 24 h, respectively. A0 is the input weather state and Ât denotes the predicted weather state at time t (in hours). Adapted from Fig. 1 in Bi et al. (2023). 3DEST는 고도 정보를 압력면을 기준으로 삼아 3차원 입력 및 출력을 처리함으로써, 전통적인 2차원 모델보다 대기 각 층 간의 내재된 관계를 더 잘 파악할 수 있게 하였다. 이를 통해 예측의 정확도를 크게 높였으며, 특히 중기 예보(1시간에서 1주일 범위)에서 기존 수치 예보를 능가하는 성능을 보였다. 또한, 계층적 시간 집계 알고리즘을 사용하여 다양한 예측 선행 시간(1시간, 3시간, 6시간, 24시간)에 따라 모델을 학습시키고, 이를 통해 예측 시 필요한 반복 횟수를 줄여 중기 예측에서 발생하는 누적 오차를 줄이는 방식을 채택하였다. 이러한 접근은 FourCastNet 등 기존 AI 기반 방법들이 사용한 단순 반복 최적화보다 안정적이고 더 높은 예측 정확도를 달성할 수 있었다.\n데이터는 신경망에 입력되며 패치 임베딩 과정을 통해 개별 격자 셀의 입력 데이터를 3D 큐브로 규모 축소한다. 이 큐브는 ViT 기반의 스윈 변환기(swin transformer)의 16개 블록을 통해 인코더-디코더로 처리된다. 스윈 변환기의 위치 편향은 2D 구 투영에서 위도에 따라 인접 점 사이의 거리가 동일하지 않다는 사실을 반영하기 위해 지구 특화 위치 편향으로 대체된다. 디코더는 인코더와 대칭 구조를 이룬다.\nPangu-Weather는 단일 GPU에서 1,400 밀리초(ms) 만에 예측을 수행할 수 있으며, 이는 ECMWF의 IFS 보다 10,000배 이상 빠르다. 이러한 빠른 추론 속도 덕분에 실시간으로 대규모 앙상블 예측을 수행할 수 있다.\nPangu-Weather는 모든 기상 요소(지위고도, 비습, 온도, 풍속 등)에 대해 ECMWF의 기존 IFS를 능가하는 예측 정확도를 달성했다. 예를 들어, 500 hPa 지위고도도(Z500)의 5일 예측에 대해 Pangu-Weather의 RMSE는 296.7로, IFS의 333.7보다 우수한 성과를 보였다. 또한, 예측 시간이 길어질수록 Pangu-Weather의 상대적 이점이 더욱 두드러졌다[(Bi et al. (2022)의 Fig. 1 참조].\n2.4 GraphCast # GraphCast (Lam et al., 2022, 2023)는 ERA5를 학습하여, 전 세계의 중기 기상(10일 예측)을 0.25도의 고해상도로 예측하며, 이 과정은 Google Cloud TPU v4 장치에서 1분 이내에 이루어진다. 여기에서는 GraphCast가 기존의 최고 수준 결정론적 예측 시스템인 ECMWF의 High-Resolution Forecast (HRES) 보다 뛰어난 성능을 보이며, 특히 열대 저기압 경로, 대기 강수 현상, 극한 기온 등의 예측에서 유리하다는 것을 보여준다.\nGraphCast는 과거의 기상 데이터를 활용하여 기상 현상에서 수식으로 나타내기 어려운 패턴들을 학습함으로써 더 높은 예측 성능을 달성한다. 특히 GraphCast는 약 3천 670만 개의 파라미터를 가진 GNN을 기반으로 한다. 모델은 37개의 압력 레벨에서 5개의 지표 변수와 6개의 대기 변수로 학습되며, 각 데이터 포인트 또는 격자 셀마다 227개의 변수를 갖는다.\nGraphCast의 예측과정은 3단계로 나누어 구성되었다(Fig. 4). 첫 번째 단계에서는 인코더가 개별 격자 셀의 정보를 다중 망사(multi-mesh) 표현의 노드로 매핑한다. 다중 망사는 조밀한(12개 노드)부터 미세한(40,962개 노드) 해상도까지 증가하는 정이십면체 망사로 유도된다. 두 번째 단계에서는 16개의 GNN 계층이 망사 전달을 통해 다중 망사의 노드 간에 지역 및 장거리 정보를 전파하는 프로세서를 사용한다. 마지막으로, 디코더는 단일 GNN 계층을 사용하여 최종 프로세서 계층의 다중 망사 표현을 격자 셀로 다시 매핑한다. 따라서 GraphCast는 변환기와 높은 해상도에서의 확장 문제를 피할 수 있다. GNN은 특히 기상 예측에서 복잡한 상호작용을 효율적으로 모델링하는데 유리하다. 전지구적인 중기 기상 예측을 수행하며, 기존의 NWP와 달리 예측 시간을 대폭 단축시킨다. GraphCast는 입력 데이터로 최근의 두 개의 기상 상태(현재와 6시간 전의 상태)를 사용하여 6시간 후의 기상 상태를 예측한다. 이 과정은 GraphCast의 인코더, 프로세서, 디코더로 이루어진 GNN 기반의 아키텍처를 통해 이루어진다. 인코더는 격자 형태의 기상 변수를 그래프 노드 속성으로 변환하고, 프로세서는 메시지 전달(message-passing)을 통해 기상 정보를 학습하며, 디코더는 이를 다시 격자 형태의 기상 예측 값으로 변환한다. 이 모델은 자기회귀 방식을 채택하여, 예측 결과를 입력으로 사용해 임의의 시간대까지의 기상 상태를 예측할 수 있다.\nFig. 4. Model schematic. (a) The input weather state(s) are defined on a 0.25o latitude-longitude grid comprising a total of 721 × 1440 = 1,038,240 points. Yellow layers in the close-up pop-out window represent the five surface variables, and blue layers represent the six atmospheric variables that are repeated at 37 pressure levels (5 + 6 × 37 = 227 variables per point in total), resulting in a state representation of 235,680,480 values. (b) GraphCast predicts the next state of the weather on the grid. (c) A forecast is made by iteratively applying GraphCast (GC) to each previous predicted state, to produce a sequence of states that represent the weather at successive lead times. (d) The encoder component of the GraphCast architecture maps local regions of the input (green boxes) into nodes of the multimesh graph representation (green, upward arrows that terminate in the green-blue node). (e) The processor component updates each multimesh node using learned message-passing (heavy blue arrows that terminate at a node). (f) The decoder component maps the processed multimesh features (purple nodes) back onto the grid representation (red, downward arrows that terminate at a red box). (g) The multimesh is derived from icosahedral meshes of increasing resolution, from the base mesh (M0, 12 nodes) to the finest resolution (M6, 40,962 nodes), which has uniform resolution across the globe. It contains the set of nodes from M6 and all the edges from M0 to M6. The learned message-passing over the different meshes’ edges happens simultaneously, so that each node is updated by all of its incoming edges. [The Earth texture in the figure is used under CC BY 4.0 from https://www.solarsystemscope.com/textures/]. Adapted from Fig. 1 in Lam et al. (2022). GraphCast는 ECMWF의 HRES와 비교하여 성능을 검증하였으며, 10일 예측에서 총 1380개의 예측 변수와 고도 수준 중 90.3%에서 더 높은 예측 성능을 보였다. RMSE와 ACC를 사용한 검증 결과, GraphCast는 HRES 대비 평균 7%에서 14%의 예측 성능 향상을 보였다. 특히 대기 강수 현상과 열대 저기압 경로 추적, 극한 기온 예측 등 다양한 극한 기상 현상 예측에서도 HRES보다 우수한 성능을 나타내었다[Lma et al. (2023)의 Fig. 2 참조].\nGraphCast의 주요 성과 중 하나는 열대 저기압 경로 추적에서 HRES보다 낮은 오류율을 기록한 것이다[Lam et al. (2023)의 Fig. 3a 참조]. 또한 대기 강수 현상에 대한 예측에서도, GraphCast는 HRES 대비 단기에서 25%, 장기에서 10%의 성능 향상을 보였다. 그러나 GraphCast는 단일 결정론적 모델로 불확실성 을 충분히 반영하지 못하는 한계를 지니며, 이를 보완하기 위해 앙상블 예측 기법 적용이 필요하다.\n2.5 FengWu # FengWu (Chen et al., 2023a)는 기존의 데이터 기반 예보 방법과 차별화된 다중 모달 및 다중 작업 접근 방식을 사용한다. 이 시스템은 ERA5 재분석 데이터를 활용하여 39년간의 기상 데이터를 학습하며, 대기 와 지표 상태를 0.25o 해상도로 예측한다. 2018년의 6 시간 간격의 날씨 역추정(hindcast) 결과에 따르면, FengWu는 880개의 예측변수(predictand) 중 80%에서 GraphCast보다 성능이 우수하며, 특히 10일 예측에서 z500의 평균 제곱근 오차(RMSE)를 733 m2 s⁻2에서 651 m2 s⁻2로 감소시켰다[Chen et al. (2023a)의 Abstract 참조]. 이로써 FengWu는 예측 기술의 리드 타임을 10.75일로 연장시켜, 인공지능을 활용한 글로벌 중기 예보의 가능성을 한 단계 끌어올렸다.\nFengWu의 핵심 설계는 다음과 같다(Fig. 5). 첫째, 다중 모달 네트워크 구조와 다중 작업 최적화를 위한 불확실성 손실(uncertainty loss for multi-task optimization)을 통해 대기 상태의 다양한 변수를 모달리티로 인식하여, 각 변수를 별도로 처리하면서 변인 간의 상호 작용을 크로스 모달 Transformer를 통해 모델링 한다. 둘째, 다중 작업 학습 패러다임을 도입하여, 각 변인의 예측을 개별적인 작업으로 간주하고 최적의 가중치를 자동으로 학습한다. 이는 변수별 불확실성을 고려하여 가중치를 조정함으로써, 보다 효과적인 예보가 가능하도록 한다. 셋째, 리플레이 버퍼 메커니즘(replay buffer mechanism)을 도입하여 장기 예측 성능을 향상시키는데, 이 메커니즘은 강화 학습에서 영감을 받아, 이전 예측 결과를 버퍼에 저장하고 이를 현재 모델 학습에 활용함으로써 자기회귀 예측 과정에서의 누적 오류를 줄인다.\nFig. 5. Overview of FengWu’s architecture. FengWu first treats the multiple weather factors as different modalities and extracts their feature embeddings independently. And then a transformer-based network is utilized to fuse and pass messages among different modalities. Finally, the high-level feature representation is used to get the predictors via the modal-customized decoder. Adapted from Fig. 2 in Chen et al. (2023a). FengWu의 예측 성능은 GraphCast와 비교하여 상당한 개선을 보였다. 특히 리드 타임이 5일을 초과할 때부터 모든 변인에서 FengWu가 GraphCast보다 높은 예측 정확도를 나타냈다. z500과 t2m (2m temperature)의 예측 선행 시간은 각각 10.75일과 11.5일로, 이는 예보 정확도의 중요한 향상을 의미한다. 이와 더불어, z500과 t2m에 대한 ACC가 0.6을 초과하는 리드 타임을 기준으로 FengWu는 각각 10.75일과 11.5일 동안 예측성을 유지할 수 있다[Chen et al. (2023a)의 Fig. 1 참조]. 이는 기존 AI 기반 기상 예보 모델보다 장기적인 예측에 강점을 가지고 있음을 보여준다.\nFengWu의 네트워크 아키텍처는 모달 맞춤형 인코더와 크로스 모달 Fusion Transformer, 그리고 모달 맞춤형 디코더로 구성된다(Fig. 5 참조). 각 대기 변수는 개별적인 모달리티로 인코딩되며, 이 인코딩된 특성들은 Transformer 기반 네트워크를 통해 융합된다. 그런 다음, 결합된 특성을 바탕으로 예측값을 디코딩한다. 이러한 구조는 기상 변인 간의 상호작용을 효과적으로 반영하며, 각 변인에 대한 예측을 보다 정확하게 만든다.\n재생 버퍼 메커니즘(replay buffer mechanism)은 FengWu의 장기 예측 성능을 개선하는 중요한 요소이다. 이 메커니즘은 자기회귀 훈련 중 발생하는 중간 예측 값을 저장하고 재사용함으로써, 누적된 오차를 고려한 학습이 이루어지도록 한다. 이러한 방식은 GPU 메모리 사용량을 줄이는 동시에, 장기 예측을 더욱 효율적으로 수행할 수 있게 한다. 재생 버퍼 유무에 따른 RMSE 변화를 비교하여 재생 버퍼가 있을 때 장기 예측 성능이 현저히 향상되는 것을 확인할 수 있다[Chen et al. (2023a)의 Fig. 3 참조].\n2.6 ClimaX # ClimaX (Nguyen et al., 2023)는 기후 및 기상 연구를 위한 범용 딥러닝 모델로, 다양한 이질적 데이터 세트에 대해 학습하고 이를 활용하여 여러 기상 및 기후 예측 작업에 일반적으로 적용될 수 있도록 설계되었다. 이 모델은 Coupled Model Intercomparison Project Phase 6 (CMIP6)에서 유래된 기후 데이터 세트를 기반으로 자가 지도 학습(Self-supervised learning)을 통해 사전 훈련되었으며, 이후 미세 조정(Fine-tuning)을 통해 대기 변수나 시공간적 규모와 같은 예측 작업에 적응할 수 있다. ClimaX는 특히 Transformer 아키텍처를 확장하여 새로운 인코딩 및 집계 블록을 도입함으로써 다양한 변수를 포함한 이질적 데이터에서 효율적으로 학습할 수 있도록 했다.\n기존의 대부분의 기상 및 기후 모델은 수치 모델을 통해 대기의 비선형 동역학과 복잡한 상호작용을 모사하는 방식을 취하며, 이 과정에서 높은 해상도와 긴 시간의 모델링은 계산 비용이 크다는 단점이 존재한다. 데이터 기반 모델은 이러한 비용 문제를 극복하려는 접근법으로, 기계 학습을 통해 데이터에 기반한 함수적 관계를 학습하여 특정 예측 작업을 수행한다. ClimaX는 이와 같은 데이터 기반 모델들의 일반화 가능성을 확장하여 다양한 기후 및 기상 문제를 해결할 수 있는 기초 모델을 제안하였다.\nClimaX의 아키텍처는 ViT에 기초하여 설계되었으며, 주요 구성 요소로는 변수 토큰화(variable tokenization)와 변수 집계(variable aggregation)가 있다. 변수 토큰화는 각 기상 변수들을 독립적으로 토큰화하여 각 변수의 특성을 잘 반영할 수 있도록 하였으며, 변수 집계는 동일한 공간 위치에서 서로 다른 변수들을 통합하여 계산 복잡도를 줄이고 학습의 효율성을 높인다. 이를 통해 ClimaX는 다양한 변수를 포함한 데이터셋에서 효과적으로 학습할 수 있다. 사전 훈련된 ClimaX는 다양한 기상 및 기후 작업에 대해 미세 조정될 수 있으며, 특히 훈련 시 보지 못한 시공간적 규모에서도 높은 성능을 보였다.\nClimaX는 전 지구적 예측, 기후 모델 규모축소, 장기 기후 예측 등의 다양한 작업에 대해 성능을 평가받았다. 실험 결과, ClimaX는 WeatherBench (Rasp et al., 2020) 및 ClimateBench (Watson-Parris et al., 2022) 등의 기존 벤치마크에서 우수한 성능을 보였으며, 중기 예측, 기후 모델 규모축소 등의 작업에서 기존의 수치 모델들과 비슷하거나 더 나은 성능을 기록하였다. 특히, 다양한 변수 및 시공간적 해상도에서 ClimaX는 일반적으로 높은 성능을 유지하며, 이는 기초 모델로서의 가능성을 확인시켜준다. Figure 6은 ClimaX가 지원하는 다양한 예측 작업의 시공간적 규모를 시각적으로 보여준다.\nFig. 6. ClimaX is built as a foundation model for any weather and climate modeling task. On the weather front, these tasks include standard forecasting tasks for various lead-time horizons at various resolutions, both globally or regionally. On the climate front, making long term projections and obtaining downscaling results from lower resolution model outputs are standard tasks. Adapted from Fig. 1 in Nguyen et al. (2023). ClimaX는 기상 및 기후 연구를 위한 범용 딥러닝 모델로, 다양한 변수와 해상도를 다루는 작업에서 높은 성능을 보였다. 향후 연구에서는 더 큰 규모의 데이터셋과 모델을 사용하여 ClimaX의 성능을 확장하는 것이 가능할 것으로 보이며, 극한 기후 이벤트와 같은 특수한 상황에서의 예측 성능을 개선하기 위한 연구도 진행될 수 있다. 또한 ClimaX의 사전 훈련된 가중치를 활용하여 다양한 환경 및 기후 시스템 관련 문제를 해결하는 데 기여할 수 있을 것으로 기대된다.\n2.7 FuXi # 최근 몇 년 동안 기계학습(ML) 모델은 10일 전방 예측에서 ECMWF의 고해상도 예측(HRES)을 능가하는 성능을 보였으나, 15일 이상의 장기 예측에서 발생하는 예측 오차 누적 문제를 해결하는 데는 어려움을 겪고 있다. 이러한 문제를 해결하기 위해 FuXi라는 계단형 ML 기반 날씨 예측 시스템이 제안되었다(Chen et al., 2023b). FuXi는 39년간의 ECMWF ERA5 재분석 데이터를 사용하여 개발되었으며, 15일 미래 예측에서도 ECMWF의 앙상블 평균(ensemble mean; EM)과 유사한 성능을 보인다. 이 시스템은 6시간 간격의 시간 해상도와 0.25도의 공간 해상도를 가진 15일 글로벌 날씨 예측을 제공한다.\nFuXi 모델은 세 개의 독립적인 예측 모듈을 계단형으로 연결한 구조로, 각각 05일, 510일, 10~15일의 예측 기간에 최적화되어 있다(Fig. 7). FuXi는 기상 변수를 효율적으로 학습하기 위해 U-Transformer라는 모델 구조를 사용한다. 이를 통해 대규모 고차원 기상 데이터로부터 복잡한 관계를 학습하고, 예측 정확도를 향상시킬 수 있었다.\nFig. 7. Overall architecture of FuXi model. (a) The FuXi model consists of three components: cube embedding, U-Transformer, and fully connected (FC) layer; (b) FuXi-Short, FuXi-Medium, and FuXi-Long models cascade and produce 15-day forecasts, with each model generating 5 days forecasts. Adapted from Fig. 5 in Chen et al. (2023b). 앙상블 예측을 위해 초기 조건과 모델 파라미터에 대해 섭동을 가하여 불확실성을 반영하였으며, 이를 통해 ECMWF 앙상블과 비교 가능한 예측 결과를 도출하였다. FuXi는 특히 지표면 온도(T2M)와 500 hPa 지위고도(Z500)의 예측 리드 타임을 각각 14.5일과 10.5일로 연장하는 데 성공하였다.\nFuXi 모델의 성능 평가는 2018년 데이터를 사용하여 이루어졌으며, 6시간 간격의 15일 예측을 생성하였다. 예측 성능은 ECMWF HRES, GraphCast, ECMWF EM 등과 비교되었으며, Z500 및 T2M과 같은 주요 변수를 대상으로 ACC와 RMSE를 평가하였다. FuXi는 ECMWF HRES와 GraphCast보다 예측 리드 타임이 길어질수록 우수한 성능을 보였으며, 특히 9일 이후의 예측에서 ECMWF HRES를 능가하였다[Chen et al. (2023b)의 Fig. 1 참조].\n또한, FuXi 앙상블 예측은 ECMWF 앙상블과 유사한 수준의 불확실성을 제공하며, 지위고도(Z500), 850 hPa 온도(T850), 해수면 기압(MSL), 지표면 온도(T2M)와 같은 주요 기상 변수에 대해 9일 이상의 예측에서 Continuous Ranked Probability Score (CRPS) 점수 면에서 ECMWF 앙상블과 비교할 만한 성능을 보였다.\nFuXi는 ML 기반 날씨 예측 모델로써, 기존의 ECMWF HRES를 대체할 수 있는 잠재력을 가지고 있다. 특히 15일 이상의 장기 예측에서 누적 오차를 줄이기 위해 각 예측 기간에 최적화된 계단형 모델 구조를 도입함으로써, 예측 성능을 향상시킬 수 있었다. 향후 연구에서는 FuXi의 예측 기간을 28일로 확장하여, 계절 내 변동성까지 예측할 수 있는 가능성을 탐색할 예정이다. 또한, ML 기반 시스템의 완전한 자동화와 초기에 의존하는 자료 동화 기법을 개선하는 연구가 필요하다고 전하였다.\n2.8 AIFS # ECMWF는 새로운 인공지능 기반 예보 시스템인 AIFS를 개발하였다(Lang et al., 2024). AIFS는 기계 학습을 활용하여 중기 범위의 전지구적 기상 예측을 목적으로 하며, 기존의 NWP와 비교하여 시간적, 자원적 효율성을 제공한다. AIFS는 GNN 인코더-디코더와 슬라이딩 윈도우 트랜스포머 프로세서를 사용하여 높은 예측 정확성을 달성하였으며, ECMWF의 ERA5 재분석 데이터와 운영 분석 데이터를 학습하였다.\nAIFS는 GraphCast와 유사하게 인코더-프로세서-디코더 구조로 구성되며, 기상 데이터를 그래프 구조로 처리하여 예보 정확도를 높이는 방식이다(Fig. 8). 인코더는 입력 데이터를 낮은 해상도의 프로세서 그리드로 집약하여 전달하고, 프로세서는 이를 기반으로 예측을 수행한 후 디코더가 원래의 입력 데이터 해상도로 결과를 복원한다. 이러한 과정에서 인코더와 디코더는 각각 542,080개 그리드 포인트와 1,038,240개 그리드 포인트를 사용하여 ERA5의 원래 해상도에서 데이터를 다루며, 프로세서는 16개의 층을 통해 정보를 점진적으로 갱신한다.\nFig. 8. AIFS encoder/decoder and processor block schematics: GNN block (top, labeled “MapperBlock”), processor block (bottom, labeled “Transformer ProcessorBlock”). The GNN block uses a multi-head graph transformer convolution operation to update the nodes and the edges of the processor, whereas the pre-norm transformer block relies on multi-head self-attention. Adapted from Fig. 3 in Lang et al. (2024). 프로세서 블록은 프리-노름(pre-norm) Transformer 구조를 따르며, 전지구적으로 격자 이웃을 포함하는 Window Attention을 사용한다. AIFS는 모델 병렬성 최적화를 통해 학습 중 GPU 메모리 사용을 최소화하며, 고해상도 데이터를 학습할 수 있는 유연성을 제공한다. 이러한 병렬처리는 시퀀스(sequence) 병렬성과 텐서(tensor) 병렬성을 결합하여, 많은 양의 데이터와 여러 자기 회기 스텝에서 효율적인 학습을 가능하게 한다.\nAIFS는 기존 IFS와 ERA5에 비교하여 500 hPa의 기압 고도 예측의 ACC에 있어서 전반적으로 더 높은 예측 정확도를 나타낸다. 특히 중기 예보(6일, 10일)에서는 AIFS의 예보 기술이 더 큰 개선을 보여준다[Lang et al. (2024)의 Fig. 4 참조].\nAIFS는 ECMWF의 ERA5 및 IFS의 운영 분석 자료(operational real-time data)를 기반으로 훈련되었으며, 1979년부터 2020년까지의 ERA5 데이터로 사전 학습을 수행하였다. 초기에는 6시간 간격의 예보를 목표로 하여 모델을 학습한 후, 점진적으로 예보 기간을 72시간까지 확대하는 방식으로 자기회귀 훈련을 진행하였다. 이후 2019년과 2020년의 운영 분석 데이터를 활용하여 모델을 미세 조정하였다.\n학습 과정에서 AIFS는 입력 및 출력 상태를 표준화하여 단위 분산과 평균을 0으로 조정하였다. 손실 함수는 타겟 상태와 예측 결과 사이의 면적 가중 평균 제곱 오차(mean square error; MSE)를 사용하며, 각 출력 변수에 대해 경험적으로 설정된 가중치가 적용되었다. 특히 상층 대기 변수에 대한 가중치는 줄어들어, 주요 예보 대상이 지표면과 중층 대기임을 나타낸다.\nAIFS는 상층 대기 변수 및 지표면 날씨 변수에 대해 매우 높은 예측 성능을 보인다. 북반구 ACC 평가에서 AIFS는 기존의 IFS와 ERA5를 능가하는 예측 성능을 보였으며, 특히 중기 예보에서 12시간 이상의 예측 우위를 가진다. 열대성 저기압 경로 예측에서도 AIFS는 더 낮은 위치 오류와 더 나은 경로 예측을 보였으며, 특히 중심 기압과 최대 풍속 예측에서 보다 정확한 결과를 나타냈다. 그러나 초기 예보에서는 지표면 850 hPa 바람 속도 등 일부 변수가 IFS보다 낮은 예측 성능을 보이기도 했다.\nAIFS는 전반적으로 매우 경쟁력 있는 예측 성능을 나타내며, 특히 상층 대기 및 지표면 변수에서 탁월한 성능을 보인다. 이는 기상 관측 데이터와 분석 데이터를 활용한 모델 훈련을 통해 가능했으며, 앞으로의 발전 방향으로는 관측 데이터를 직접 사용하는 방법이나, 확률적 예측 시스템으로의 확장이 제안된다. 또한 열대성 사이클론의 예측 성능 향상을 위해 고해상도 입력 데이터와 모델 구조의 개선이 필요할 것이다. ECMWF는 AIFS의 소스 코드와 모델 가중치를 공개할 계획이며, 이를 통해 더 많은 연구자들이 기여할 수 있는 생태계를 조성할 것으로 기대된다.\n3. 요약 및 토론 # 인공지능 기술의 급격한 발달로 최근 23년여 만에도 전지구 대기 대순환 인공신경망모형들이 다수 개발되었다(Table 1). NVIDIA의 FourCastNet (2022년 2월과 2023년 6월 출시)은 AFNO와 SFNO를 사용한 Operator Learning 기술을 선보였으며, Huawei Cloud의 Pangu-Weather (2022년 11월 출시)은 개념적으로 3차원 자료를 그대로 처리할 수 있는 3DEST와 시간 간격별 독립 학습을 통한 Hierarchical Temporal Aggregation 기법을 소개하였다. Google DeepMind의 GraphCast (2022년 12월 출시)는 차세대 신경망으로 주목받고 있는 GNN을 사용하면서 ERA5의 수평∙연직 해상도와 동일한 해상도를 사용하였고, 상하이 AI 연구실에서 개발한 FengWu는 대기 변수들의 특성을 고려한 변수별 독립처리 기법을 개발함으로써 장기예측 성능을 높였다. Microsoft의 ClimaX (2023년 7월 출시)는 동일 모형으로 장단기부터 기후 예측까지 모두 가능하며 전지구 및 지역뿐만 아니라 모델의 고해상도화까지 아우르는 통합 모델로 개발되었다. 중국 Fudan 대학의 FuXi (2023년 11월 출시)는 기존 10일 예측을 뛰어넘어 15일까지 예측하는데 05일과 510일, 1015일로 나누어 독립 예측함으로써 10일 이상의 예측에서 현재 가장 좋은 성능을 보이고 있다. 마지막으로 ECMWF의 AIFS (2024년 8월 출시)는 GraphCast의 GNN에 Transformer의 특징을 융합한 Attention-based GNN을 개발하여 적용하였으며 현업 운영 중에 있다. 주목할 것은, 이 모든 모형들의 예측 성능이 ECMWF의 물리기반 수치모형인 IFS와 대등하거나 보다 앞서면서도 자원 사용량과 소요시간을 대폭 단축하는 기염을 토하고 있다는 점이다.\nTable 1. Characteristics of global atmospheric general circulation neural network models Model\nFeatureFourCastNetPangu-WeatherGraphCastFengWuClimaXFuXiAIFSIFS CompanyNVIDIAHuaweiGoogle DeepMindShanghai AI Lab.MicrosoftFudan Univ.ECMWFECMWFModel SourceOΔΔΔOOX-CheckpointOOOOOOX-NN ModelAFNO, SFNOSwin-TF, 3DESTGNNCross-modal TFViTU-TransformerAtt-GNNNWPForecast7 days7 days or longer10 days10 daysday, mon, yr5, 10, 15 days10 days10 daysHorizontal\nResolution\n0.25o (720 × 1440)\n8 × 8 patch0.25o (721 × 1440)\n4 × 4 patch0.25o (721 × 1440)\nmulti-mesh0.25o (721 × 1440)\n5.625o (32 × 64), 1.40625o (128 × 256)0.25o (721 × 1440)\n1o -\u0026gt; 0.25o (721 × 1440)9 km (HRES)\nVertical\nResolution\n4 press levels13 press levs + 1 surface13, 37 press levels13, 37 press levels7 press levels13 press levels13 press levels137 levelsTime interval6 hr1, 3, 6, 24 hrs6 hr6 hr6 h, {1, 3, 5, 7} d, 2 w, 1 m6hr6hr1 hrVariablest2m,mslp,pc, t,u,vt2m, uv10, mslp, t,z,r,u,vz,pc,t2m,uv10, mslp,rad, tzquvwt2m, uv10, mslp, t,z,r,u,vt2m,uv10,lsm, t,z,q,r,u,vz,r,t,u,v,tp, msl, …z,t,u,v,w,r,p, t2m, uv10, …*# of variables26692271894870 (=13*5+5)92 (=13*6+14)\u0026gt; 1380Trained dataERA5ERA5ERA5ERA5CMIP6, ERA5ERA5ERA5, HRES-ReferencesPathak et al. (2022) Bonev et al. (2023) Bi et al., (2022, 2023)Lam et al., (2022, 2023)Chen et al. (2023a)Nguyen et al. (2023)Chen et al. (2023b)Lang et al. (2024)- 현재의 신경망 구조로는 Transformer, GNN, Diffusion Model 등이 주로 활용되고 있으며, 이들 구조는 대기 역학과 비선형 상호작용을 효율적으로 모델링 할 가능성을 보이고 있다. 향후에는 이러한 구조들의 융합이나 개선을 통해 예측 성능을 더욱 향상시킬 수 있을 것으로 기대된다. 특히, 제한된 자원으로 대규모 데이터를 처리할 수 있는 신경망 구조의 개발이 필요하다. 현재 대부분의 인공지능 기반 모델들은 ECMWF의 ERA5 재분석 자료를 학습 자료로 사용하고 있다. 그러나 ERA5는 인공지능 학습을 위해 설계된 것이 아니며, 모델에서 수평 해상도는 동일하게 사용하지만 연직 해상도는 자원의 한계로 인해 주요 층 만을 사용(대부분의 모형이 13개 층만을 사용) 하고 있다. 학습 자료의 품질을 개선하고, 수평 및 연직 해상도를 고해상도로 상향 조절함으로써 극단적 기상 현상이나 소규모 현상에 대한 예측 정확도를 향상시킬 필요가 있다. 동시에, 고해상도 자료를 효율적으로 학습할 수 있는 신경망 구조의 개발 또한 중요하다. 이러한 구조는 고해상도의 데이터에서 발생하는 복잡한 패턴을 효과적으로 학습하여 예측 성능을 더욱 향상시킬 수 있을 것이다.\n현재까지 개발된 자료 기반 모델들은 학습 자료에서 물리 정보 또는 패턴을 학습하는 구조로 설계되어 있으나, 극단적 사건이나 예외적 기상 현상에 대한 예측 성능에는 한계가 있다. 이러한 문제를 해결하기 위해 물리 정보를 통합한 신경망 구조의 개발이 요구된다. 물리 정보 신경망(physics-informed neural network; PINN) 또는 연산자 학습(operator learning; OL) 등을 통해 물리적 지식을 모델에 직접 반영함으로써 더욱 강건한 예측 성능을 확보할 수 있다.\n자원 효율성과 확장성 또한 중요한 과제이다. 기존의 인공지능 기반 모델들은 이미 높은 효율성을 보여주고 있지만, 더 적은 하드웨어 자원으로 고해상도 전지구 예측을 수행할 수 있는 능력을 갖추는 것이 중요하다. 모델 압축, 양자화, 분산 학습과 같은 기술을 활용하여 효율성을 높이는 동시에, 낮은 자원 환경에서도 높은 정확도를 유지하는 방안이 필요하다. 다중 모드(multi-modal) 자료를 효과적으로 처리하는 기술도 필수적이다. 대기 변수, 위성 영상, 관측 자료 등 다양한 자료 소스를 통합하여 활용할 수 있는 구조를 개발함으로써, 대기 과정에 대한 보다 심층적인 이해를 도울 수 있다. 마지막으로, 예측의 불확실성을 처리하는 능력이 중요하다. 많은 현재 모델들이 결정론적 구조를 채택하고 있어 불확실성을 정량화 하는데 한계가 있다. 앙상블 예측 기법이나 확률론적 접근 방식을 통합함으로써, 의사결정 과정에서 중요한 정보를 제공할 수 있다.\n인공지능 기반 전지구 대기 대순환 모델의 개발은 기상학과 기후학 분야에서 혁신적인 진보를 이루어내고 있으며, 예측의 속도와 정확성을 크게 향상시키고 있다. 그러나 자료의 품질, 물리적 현실성, 계산 효율성, 불확실성 정량화와 같은 분야에서는 여전히 극복해야 할 과제가 존재한다. 이러한 도전 과제들을 해결하기 위해서는 대기과학자, 데이터 과학자, 인공지능 연구자 간의 협력적인 노력이 요구된다. 앞으로 이들 과제들이 해결된다면, 인공지능 기반 전지구 대기 대순환 모델은 현재 대기 모델링의 핵심으로 자리잡아, 기후 변화와 극한 기상 현상에 대한 대비와 대응을 더욱 효과적으로 지원할 수 있을 것이다.\nAcknowledgements # 이 논문은 2024년도 한국과학기술정보연구원(KISTI)의 기관고유연구사업으로 수행된 연구입니다(과제번호: J24JR043-24).\nReferences # Bauer, P., and Coauthors, 2020: The ecmwf scalability programme: progress and plans. ECMWF, 112 pp [Available online at https://www.ecmwf.int/node/19380]. Bi, K., L. Xie, H. Zhang, X. Chen, X. Gu, and Q. Tian, 2022: Pangu-Weather: A 3D high-resolution model for fast and accurate global weather forecast. arXiv:2211.02556, 19 pp [Available online at https://arxiv.org/abs/2211.02556]. Bi, K., L. Xie, H. Zhang, X. Chen, X. Gu, and Q. Tian, 2023: Accurate medium-range global weather forecasting with 3D neural networks. Nature, 619, 533-538. Bonev, B., T. Kurth, C. Hundt, J. Pathak, M. Baust, K. Kashinath, and A. Anandkumar, 2023: Spherical fourier neural operators: learning stable dynamics on the sphere. Proceedings of the 40th International Conference on Machine Learning, in Proceedings of Machine Learning Research, 202, 2806-2823 [Available online at https://proceedings.mlr.press/v202/bonev23a.html]. Chen, K., and Coauthors, 2023a: Fengwu: Pushing the skillful global medium-range weather forecast beyond 10 days lead. arXiv:2304.02948, 12 pp [Available online at https://arxiv.org/abs/2304.02948] Chen, L., X. Zhong, F. Zhang, Y. Cheng, Y. Xu, Y. Qi, and H. Li, 2023b: FuXi: A cascade machine learning forecasting system for 15-day global weather forecast. npj Clim. Atmos. Sci., 6, 190. Dosovitskiy, A., and Coauthors, 2020: An image is worth 16x16 words: Transformers for image recognition at scale. arXiv:2010.11929, 22 pp [Available online at https://arxiv.org/abs/2010.11929]. Hersbach, H., and Coauthors, 2020: The ERA5 global reanalysis. Quart. J. Roy. Meteor. Soc., 146, 1999–2049. Lam, R., and Coauthors, 2022: GraphCast: Learning skillful medium-range global weather forecasting. arXiv:2212.12794, 102 pp [Available online at https://arxiv.org/abs/2212.12794]. Lam, R., and Coauthors, 2023: Learning skillful medium-range global weather forecasting. Science, 382, 1416-1421. Lang, S., and Coauthors, 2024: AIFS-ECMWF's data-driven forecasting system. arXiv:2406.01465, 13 pp [Available online at https://arxiv.org/abs/2406.01465]. Nguyen, T., J. Brandstetter, A. Kapoor, J. K. Gupta, and A. Grover, 2023: ClimaX: A foundation model for weather and climate. Proceedings of the 40th International Conference on Machine Learning, 202, 25904-25938 [Available online at https://proceedings.mlr.press/v202/nguyen23a.html]. Pathak, J., and Coauthors, 2022: Fourcastnet: A global data-driven high-resolution weather model using adaptive fourier neural operators. arXiv:2202.11214, 28 pp [Available online at https://arxiv.org/abs/2202.11214]. Rasp, S., P. D. Dueben, S. Scher, J. A. Weyn, S. Mouata-did, and N. Thuerey, 2020: WeatherBench: a benchmark data set for data‐driven weather forecasting. J. Adv. Model. Earth Syst.,12, e2020MS002203. Watson‐Parris, D., and Coauthors, 2022: ClimateBench v1.0: A benchmark for data‐driven climate projections. J. Adv. Model. Earth Syst., 14, e2021MS002954. Weyn, J. A., D. R. Durran, and R. Caruana, 2020: Improving data-driven global weather prediction using deep convolutional neural networks on a cubed sphere. J. Adv. Model. Earth Syst., 12, e2020MS002109. Weyn, J. A., D. R. Durran, R. Caruana, and N. Cresswell-Clay, 2021: Sub-seasonal forecasting with a large ensemble of deep-learning weather prediction models. J. Adv. Model. Earth Syst., 13, e2021MS002502. ","date":"2025년 6월 30일","externalUrl":null,"permalink":"/2025/06/AI_AGCM/","section":"글","summary":"FourCastNet·Pangu-Weather·GraphCast·FengWu·ClimaX·FuXi·AIFS 등 2022년 이후 등장한 인공지능형 전지구 대기대순환 모형들을 비교한 총설. 2025년 대기(Atmosphere)에 실린 논문 전문입니다.","title":"인공지능형 전지구 대기대순환 모형의 기술 개발 동향","type":"posts"},{"content":"","date":"2025년 6월 30일","externalUrl":null,"permalink":"/tags/","section":"태그","summary":"","title":"태그","type":"tags"},{"content":"","date":"2025년 3월 27일","externalUrl":null,"permalink":"/tags/DeepONet/","section":"태그","summary":"","title":"DeepONet","type":"tags"},{"content":"","date":"2025년 3월 27일","externalUrl":null,"permalink":"/tags/PINNs/","section":"태그","summary":"","title":"PINNs","type":"tags"},{"content":"A New Paradigm of Artificial Neural Network Learning for Atmospheric and Oceanic Predictions: Physics-Informed Neural Networks and Operator Learning\n김동훈1, 문일주1* (Dong-Hoon Kim, Il-Ju Moon)\n1 제주대학교 태풍연구센터 (63243) 제주특별자치도 제주시 제주대학교로 102\n* 교신저자\nKeywords: Scientific Machine Learning (SciML), Physics-Informed Neural Networks (PINNs), Operator Learning (OL), Fourier Neural Operator (FNO), Deep Operator Network (DeepONet)\n아래는 다음 논문의 전문입니다.\n김동훈, 문일주, 2025: 대기 및 해양 예측을 위한 인공신경망 학습의 새로운 패러다임 — 물리정보 신경망과 연산자 학습. Ocean and Polar Research, 47, 1–15. doi:10.4217/OPR.2025001\n2025년 2월 27일 출판. Copyright © 2025 Ocean and Polar Research. 이 논문은 CC BY-NC 4.0 조건으로 공개된 것이며, 출처를 밝히고 원문 그대로 옮겼습니다.\nAbstract # This study explores the potential of Physics-Informed Neural Networks (PINNs) and Operator Learning (OL) techniques in advancing scientific computation and prediction. PINNs integrate physical principles into neural network training, enabling accurate modeling and prediction of complex physical systems, even in data-scarce and noisy environments. They have been successfully applied to solve challenging nonlinear partial differential equations (PDEs), such as Euler and Navier-Stokes equations, and continue to evolve with variants. Meanwhile, OL methods, represented by Deep Operator Network (DeepONet) and Fourier Neural Operator (FNO), focus on learning mappings between function spaces. These methods excel in high-dimensional data processing and have demonstrated remarkable performance in applications such as global atmospheric modeling with NVIDIA’s FourCastNet. Hybrid approaches, such as Physics-Informed DeepONet (PIDON) and Physics-Informed Neural Operator (PINO), combine the strengths of PINNs and OL. These methods leverage data-driven learning and physical constraints, achieving superior generalization and prediction accuracy. Notably, PINO enables zero-shot super-resolution predictions by integrating multi-resolution data with PDE constraints. While PINNs and OL individually present powerful tools for modeling and prediction, their computational cost and sensitivity to noise pose challenges. Hybrid approaches offer a pathway to address these issues by optimizing their integration through quantitative analyses. Future research directions include accelerating training through high-performance computing, extending applications to multiscale problems, and designing innovative loss functions to enhance data efficiency. This work synthesizes the latest advancements in PINNs, OL, and hybrid methods, providing a new paradigm for precise and efficient scientific computation across diverse fields.\n1. 서 론 # 자료 의존적인(Data driven) 방법을 사용하는 기존 인공지능 모델들의 한계를 극복하기 위하여 물리정보를 기반으로 하는 신경망인 물리정보 신경망(Physics-Informed Neural Networks, PINNs)의 개발이 관심을 받고 있으며, 또 다른 방법으로 연산자 학습(Operator Learning, OL) 기술의 신속한 발전도 이루어지고 있다.\n과학 연구에 기계학습(Machine Learning, ML)을 이용하기 위해 Scientific Machine Learning (SciML)이라는 용어가 생겨났다. SciML의 핵심 목표는 과학과 기계학습을 통합하는 것이다(Fig. 1). 즉, 물리법칙을 기술하는 편미분방정식(Partial Differential Equation, PDE)들을 신경망 모델에 통합하여 물리현상을 모델링하고 해석하는 것이다. 다시 말해서, SciML은 과학 연구를 위한 더욱 강력하고 견고하며 해석 가능한 방법을 생성하기 위해 기계학습과 과학 지식을 긴밀하게 결합하는 것을 목표로 한다(Baker et al. 2019).\nFig. 1. Conceptualization of SciML 이를 위한 이론적 토대로, Cybenko (1989)는 보편근사정리(Universal Approximation Theorem, UAT)를 제시하였다. 이 정리는 어떠한 임의의 연속 함수도 단 1개의 층을 가진 순방향 신경망(Feedforward neural network)을 이용해 근사할 수 있다는 것을 보여준다 (Fig. 2). 그 후 Chen and Chen (1995)에서는 이 정리가 미분 연산자(Differential operator)에도 적용될 수 있음을 보였다. 즉, 임의의 연속 함수와 연산자를 심층 신경망(Deep Neural Network, DNN)을 이용해 근사할 수 있다는 것이다.\nFig. 2. Proof of the Universal Approximation Theorem (UAT). (a) A randomly generated function and its graph. (b) Shows that the function on the left can be approximated by a neural network with one layer Cybenko (1989)는 SciML과 PINNs 구현에 있어 매우 중요한 이론적 기반을 제공한다. 실제로 Raissi et al. (2019)의 논문에서 처음으로 PINNs 모델이 제시되었고, 이후 본격적으로 물리학과 기계학습의 융합 연구가 시작되었다. Raissi et al. (2019)은 새로운 End-to-end PINNs를 제안하였고, 이를 통해 비선형(Nonlinear) PDEs를 포함하는 순방향/역방향(Forward/Inverse) 문제 모두를 효과적으로 풀 수 있음을 보였다.\nSciML을 구현하기 위한 여러 방법 중에서 PINNs과 OL에 의한 기술 개발이 빠르게 이루어지고 있고, 최근에는 이 둘을 병합하여 연구하는 분야도 생겨 났다. 본 연구에서는 PINNs와 OL의 혁신적인 기술 개발 배경과 이론 및 연구 동향을 파악하여, 미래의 인공지능형 기상-해양 대순환모델 개발에 대한 전략 수립의 지침으로 삼고자 한다. 2장에서 PINNs에 대한 최근 연구동향과 3장에서 OL에 대한 최근 연구동향을 조사하였다. 4장에는 PINNs와 OL의 하이브리드(Hybrid) 결합 방법들에 대해 간략하게 소개한다. 5장에서는 요약과 토론을 제시한다.\n2. PINNs (물리정보 신경망) 연구 동향 # PINNs는 인공신경망의 구조를 활용하여 물리학의 원리와 법칙을 학습하고 예측하는 기술이다. 기존의 인공신경망이 주로 자료 기반(data driven)으로 학습하는 것에 비하여, PINNs는 물리학적 모델과 방정식을 신경망 학습 과정에 직접 통합한다. 이를 통해 신경망은 물리적 현상을 더 정확하게 모델링하고 예측할 수 있다. 따라서 대기 및 해양의 복잡한 물리적 현상을 모델링하는 데 특히 유용하다.\n물리정보기반 신경망과 자료기반 신경망의 기여도에 따른 응용에는 세 가지의 시나리오를 생각할 수 있다(Fig. 3). 먼저, 알고 있는 물리지식이 많은 경우에는 자료가 적어도 학습 능력을 높일 수 있으며, 반대로 물리지식은 적으나 학습할 수 있는 자료가 많은 경우에도 학습 능력을 높일 수 있을 것이다. 그러나 현실에서는 물리지식도 중간 정도, 자료도 중간 정도가 있을 가능성이 높다. 이러한 시나리오에 따른 응용 분야로는 (i) 많은 물리지식을 가진 순방향 문제(Lots of physics: Forward problems) 해결, (ii) 약간의 물리지식을 가진 역방향 문제(Some physics: Inverse problems) 해결, 그리고 (iii) 물리 지식이 없는(No physics) 새로운 발견이나 시스템의 판별 등이 있다. 순방향 문제는 물리 법칙을 완전히 반영하여 제한된 자료로 복잡한 현상을 예측하는데 사용되는데, 대표적인 예로 Navier-Stokes 방정식을 기반으로 한 주변 공기 흐름 시뮬레이션을 들 수 있다. 역방향 문제는 부분적 물리지식과 자료로 미지의 매개변수를 추정하는데 사용할 수 있으며, 대표적인 예로 난류 모델의 미결정 매개변수 역산을 위하여 RANS (Reynolds-Averaged Navier-Stokes) 방정식의 폐쇄 모델(closure model)을 가정하고, 실험 자료로부터 난류 점성 계수를 학습하는 것을 들 수 있다. 물리지식이 없는 새로운 발견은 자료만으로 기존 물리 모델의 한계를 넘는 패턴을 발견하는데 사용된다. 대표적인 예로는, 해수면온도와 해양열용량 등 대규모 관측 자료를 순수 자료 기반 신경망에 학습시켜, 기존 물리 모델이 포착하지 못한 엘니뇨-남방진동의 전조 신호를 발견하는 것이다.\nFig. 3. Three scenarios for a physics-informed approach vs. a data-driven approach PINNs의 주요 특징 # PINNs의 핵심 아이디어는 신경망 모델의 손실 함수(Loss function)에 PDE나 다른 물리 법칙들을 제약조건으로 추가하는 것이다. 이를 통해 신경망은 자료를 학습할 뿐 아니라 주어진 물리 법칙도 만족시키도록 훈련을 받는다. 구체적으로, PINNs 모델은 다음과 같은 손실 함수를 가진다:\nLoss=Data loss+PDE loss(1) \\displaystyle \\text{Loss} = \\text{Data loss} + \\text{PDE loss}\\tag{1} 여기서 Data loss는 실제 자료와 신경망 출력의 오차를 측정하고, PDE loss는 신경망 출력이 주어진 물리 법칙을 얼마나 잘 만족하는지 측정한다. 이는 매우 강력한 정규화(Regularization) 효과를 가져온다. 즉 자료가 부족하거나 노이즈가 많은 상황에서도, 강한 물리적 제약 조건 덕분에 훨씬 더 정확하고 일반화 성능이 높은 모델이 학습된다. 이를 통해 PINNs는 물리적 현상을 모델링하고 시뮬레이션 하는데 강력한 효과를 보인다. 특히 실험 자료가 부족한 문제에 있어서도 사전 물리적 지식 (Prior physical knowledge)을 이용해 정확한 추론을 수행할 수 있다는 장점이 있다.\n접근법에 있어 Raissi et al. (2019)은 UAT (Cybenko 1989; Chen and Chen 1995)를 기반으로 사용했다. 이 정리에 의하면 임의의 함수나 편미분 연산자 (PDE Operator)는 순방향 신경망으로 근사 가능하다는 것을 보장한다. Raissi et al. (2019)은 이 정리를 바탕으로 PINNs 아키텍처를 제안했고, 이를 통해 순방향/역방향PDE 문제를 풀 수 있음을 보였다. 여기에 더해 Automatic Differentiation (AD) 기술을 접목시킴으로써, PDEs의 미분 연산들을 효율적으로 계산하고 End-to-end로 학습시킬 수 있는 토대를 마련했다.\nPINNs는 물리 법칙을 모델에 직접 통합할 수 있어 해석 가능성이 높고, 소량의 자료나 잡음이 섞인 자료에서도 물리 제약조건을 통해 강건한 모델링이 가능하기 때문에 복잡한 PDE 해석, 최적화, 역문제 해결 등에 적합하고, End-to-end 딥러닝 기법을 활용하는 것이 가능하다는 장점이 있다. 그러나 PINNs는 물리 지식을 정확히 모델에 반영하기 어려울 수 있고, 복잡한 물리 시스템을 신경망으로 정확하게 근사하기 어렵기 때문에 많은 양의 자료가 있다면 기존 딥러닝 기법과 비슷한 성능을 보이고 물리방정식 구현을 위한 수치해석 지식이 필요하다는 단점이 있다. 따라서 PINNs는 복잡한 물리 시스템을 해석하는 데 한계가 있으나, 물리법칙을 잘 아는 경우에는 효과적으로 사용할 수 있다.\nPINNs의 방법론 # Moseley (2021)는 PINNs 방법을 잘 이해할 수 있도록 과학 연구에서 기계학습을 활용한 예를 잘 보여주고 있다. 가령, 알 수 없는 물리적 현상으로부터 일부 실험 자료가 주어졌다고 가정하자(예: Fig. 4의 주황색 점). 일반적인 과학적 과제는 이 자료를 기반으로 새로운 실험 측정값을 정확히 예측할 수 있는 모델을 찾는 것이다. 이를 기계학습을 사용하여 수행하는 한 가지 인기 있는 방법은 신경망을 사용하는 것이다. 임의의 자료의 위치를 입력으로 제공하면, 신경망은 올바른 답변을 예측하는 출력을 생성할 수 있다. 모델을 학습시키기 위해, 신경망의 자유 매개변수(θ)를 조정하여 신경망의 예측 값이 기존 실험 자료와 밀접하게 일치하도록 한다. 이는 일반적으로 예측 값과 훈련 자료 간의 평균 제곱 오차를 최소화함으로써 수행된다(Eq. 2). 그러나 이러한 모델은 알려진 실험 자료 점 내에서는 우수한 예측 성능을 발휘할 수 있지만, 자료가 없는 영역(Fig. 4에서 주황색 점이 없는 회색 우측 영역)에서는 예측 성능을 보장할 수 없다.\nFig. 4. Example of a neural network fitting a model to some experimental data.Adapted from Fig. 1 in Moseley (2021) min⁡1N∑iN(uNN(xi;θ)−utrue(xi))2(2) \\displaystyle \\min \\frac{1}{N}\\sum_{i}^{N}(u_{NN}(x_i;\\theta) - u_{true}(x_i))^{2}\\tag{2} Fig. 4에서 정답(exact solution)으로 사용된 회색 곡선은 사실은 물리학에서 알고 있는 감쇠 고조파 방정식(Eq. 3)으로 표현된 곡선이다. 감쇠 고조파 방정식은 진동 시스템에서 감쇠와 외력이 작용하는 상황을 설명하는 미분방정식이다. 여기에서 mm은 질량을 나타내며 𝜇는 마찰 계수, kk는 스프링 상수이다.\nmd2udx2+μdudx+ku=0(3) \\displaystyle m\\frac{d^{2}u}{dx^{2}} + \\mu\\frac{du}{dx} + ku = 0\\tag{3} min⁡1N∑iN(uNN(xi;θ)−utrue(xi))2+1M∑jM([md2dx2+μddx+k]uNN(xj;θ))2(4) \\displaystyle \\min \\frac{1}{N}\\sum_{i}^{N}(u_{NN}(x_i;\\theta) - u_{true}(x_i))^{2} + \\frac{1}{M}\\sum_{j}^{M}\\left(\\left[m\\frac{d^{2}}{dx^{2}} + \\mu\\frac{d}{dx} + k\\right]u_{NN}(x_j;\\theta)\\right)^{2}\\tag{4} 순수 신경망 학습에 사용된 손실함수(Eq. 2)와 여기에서 알게 된 물리정보를 합하여 새로운 손실함수(Eq. 4)로 만들어서 학습에 사용하는 것이 바로 PINNs의 방법이다. 이 손실함수를 사용하여 학습을 함으로써 관측되지 않은 범위에서의 예측 성능도 높일 수 있을 것이다. Fig. 5에서는 자료 포인트(주황색)가 없는 오른쪽 부분에도 정답인 회색과 추정치인 파란색이 잘 일치하여 회색이 보이지 않는 것을 알 수 있다.\nFig. 5. Loss functions used in physics-based neural networks. Adapted from Fig. 5 in Moseley (2021) PINNs는 네트워크가 자료에만 적합하도록 훈련되는 것이 아니라 미분 방정식으로 기술된 알려진 물리 법칙을 준수하도록 훈련되는 신경망의 한 유형이다. 이는 지배 미분 방정식의 위반 정도를 측정하는 Ordinary Differential Equation (ODE)/PDE 손실을 도입함으로써 달성된다(Fig. 6). 이 방법으로, 물리 법칙을 네트워크 훈련 과정에 주입하여 물리적으로 정보를 제공하게 된다.\nFig. 6. The loss function of a neural network that incorporates physics information includes a contribution from the PDE loss, which is an effective measure of whether the predicted solution satisfies the governing differential equation PINNs의 연구 동향 # PINNs의 어원은 유사한 용어를 사용하는 여러 논문에서 찾을 수 있지만, Raissi et al. (2019)의 논문이 PINNs를 정확히 언급한 최초의 연구로 간주될 수 있다. 이들은 물리 법칙을 일반적인 비선형 PDE로 표현하여 이를 준수하는 동시에 지도 학습 과제를 해결하도록 학습된 신경망인 PINNs를 제안하였다. 또한 이들은 사용 가능한 자료의 성격과 배열에 따라 연속 시간 모델과 이산 시간 모델의 두 가지 알고리즘을 고안하였다. 제안된 프레임워크의 타당성은 유체역학, 양자역학, 반응-확산 시스템, 비선형 천이파 전파와 같은 고전적 문제를 통해 입증되었다.\nKarniadakis et al. (2021)은 PINNs에 대한 체계적인 개요를 제공한다. 이 논문은 물리학을 기계학습 모델에 통합하는 것에 대한 포괄적인 리뷰를 제시한다. 기존 수치 해석 방법은 편미분방정식(PDE)을 이산화할 때 여러 한계를 보인다. 특히, 다양한 물리적 현상을 동시에 모델링하거나 잡음이 섞인 자료를 처리할 때, 복잡한 격자 생성, 고차원 문제 해결, 그리고 숨겨진 물리 법칙을 찾아내는 역문제(Inverse Problem)에서 어려움이 발생한다. 기계학습, 특히 딥러닝은 이러한 문제를 해결하기 위한 대안으로 부상하였으며, 일반적으로 과학적 문제 해결에 대규모 자료가 요구된다. 물리 정보 기반 기계학습은 자료를 수학적 모델과 통합하며, 신경망이나 커널 기반 회귀 네트워크를 사용하여 물리 법칙을 강제 적용한다. 이러한 모델은 향상된 정확도, 더 빠른 학습, 그리고 일반화 능력을 제공한다(Karniadakis et al. 2021). PINNs를 효율적으로 구현하기 위해서는 TensorFlow, PyTorch, Keras, JAX와 같은 최신 기계학습 라이브러리를 기반으로 새로운 알고리즘을 구축하는 것이 유리하다. 물리 기반 기계학습을 위해 특별히 설계된 여러 소프트웨어 라이브러리가 개발되었으며, 이는 이 분야의 빠른 발전에 기여하고 있다(Table 1 참조).\nTable 1. Major software libraries specifically designed for physics-informed machine learning. Adapted from Table 1 in Karniadakis et al. (2021) Software nameUsageLanguageBackendReferencesDeepXDESolverPythonTensorFlowLu et al. (2021b)SimNetSolverPythonTensorFlowHennigh et al. (2020)PyDEnsSolverPythonTensorFlowKoryagin et al. (2019)NeuroDiffEqSolverPythonPyTorchChen et al. (2020)NeuralPDESolverJuliaJuliaRackauckas and Nie (2017)SciANNWrapperPythonTensorFlowHaghighat and Juanes (2021)ADCMEWrapperJuliaTensorFlowXu and Darve (2020)GPyTorchWrapperPythonPyTorchGardner et al. (2018)NeuralTangentsWrapperPythonJAXNovak et al. (2020) Cuomo et al. (2022)은 PINNs에 관한 다양한 문헌을 포괄적으로 검토하여 PINNs와 관련된 신경망의 강점과 약점을 규명하였다. 더 나아가, 이 연구는 고전적인 PINNs를 넘어 물리적 제약 신경망(Physics-Constrained Neural Networks, PCNNs)과 변분적(Variational) hp-VPINNs, 보존(Conservation) PINNs (CPINNs)와 같은 여러 변형 신경망을 포함하고 있다. 그들은 PINNs와 관련된 대부분의 연구가 활성화 함수와 기울기 최적화 기법, 신경망 구조, 손실 함수 구조와 같은 다양한 측면을 통해 PINNs를 특화하는 데 중점을 두고 있음을 보여준다. PINNs는 유한요소법(FEM)과 같은 전통적인 수치 기법에 비해 특정 맥락에서 더 실현 가능성이 높은 잠재력을 보여주었으나, 저자들은 PINNs가 광범위한 응용 분야에 사용됨에도 불구하고 여전히 해결되지 않은 이론적 문제를 통해 발전의 여지가 남아 있다고 제안한다(Cuomo et al. 2022).\nCuomo et al. (2022)은 PINNs와 관련된 논문 수(Fig. 7의 오른쪽)와 PINNs가 적용된 문제(Fig. 7의 왼쪽)가 최근 크게 증가하고 있음을 근거로 PINNs가 문헌과 과학적 응용 모두에서 이미 상당한 영향을 미치고 있음을 보였다. 특히, 저자들은 PINNs의 대표적인 논문인 Raissi et al. (2019)를 인용하거나 제목 또는 키워드에 PINNs를 포함한 논문의 수가 기하급수적으로 증가하고 있음을 보였다. 실제로 2019년에서 2020년 사이에 PINNs 관련 논문 수는 5배 이상 증가하였으며, 2021년에는 2020년에 비해 새로운 논문 수가 두 배로 증가하였다. Raissi et al. (2019)이 2019년에 arXiv에 게재된 이후, 2018년 말과 2019년에 인용 횟수가 급격히 증가한 것을 확인할 수 있다. Fig. 7의 왼쪽에서는 해당 연도에 발표된 논문에서 해결된 특정 시간 의존 방정식의 예를 보여준다. 초기(2018년)에는 Allen–Cahn 방정식, Korteweg–de Vries 방정식, 1차원 비선형 슈뢰딩거(Shrödinger) 방정식(SE)과 같은 기본(vanilla) PINNs로 해결된 문제들이 포함되었다. 이 후, 2019년 말에 Mao et al. (2020)은 동일한 PINNs를 사용하여 고속 공기역학적 흐름을 모델링하기 위한 Euler 방정식(EE)을 해결하였다. 2020년 말에는 Jin et al. (2021)이 비압축성 Navier–Stokes 방정식(NSE)을 해결하였다. 마지막으로, 2021년에는 Cai et al. (2021)이 Navier–Stokes 방정식을 해당 온도 방정식과 결합하여 열대류 흐름(NSE+HE(Heat Eq.))을 분석하였다(Fig. 7).\nFig. 7. Papers related to PINNs by year and applied problems. Here, SE, EE, NSE, and HE represent the one-dimensional Schrödinger equation, the Euler equation, the Navier-Stokes equation, and the Heat equation, respectively. Adapted from Fig. 1 in Cuomo et al. (2022) Table 2는 PINNs의 다양한 신경망 구현을 대표하는 여러 논문을 소개한다. 여기에는 순방향 신경망(Feed-Forward Neural Networks, FFNNs), 합성곱 신경망(Convolutional Neural Networks, CNNs), 순환 신경망(Recurrent Neural Networks, RNNs)의 세 가지 주요 신경망 그룹이 포함된다. 각 유형에 대해, 해당 신경망을 처음으로 사용하거나 구현 방식을 가장 잘 설명한 논문들이 보고되었다. 이 결과에 따르면, PINNs가 주로 5~10층의 FFNN으로 구현된 것으로 나타난다. CNN은 손실 함수가 아닌 신경망 구조에 경계 조건을 통합하는 Physics-Constrained Neural Network (PCNN) 접근법에서 처음으로 적용되었다(Cuomo et al. 2022).\nTable 2. References representing different neural network implementations of PINNs. Adapted from Table 1 in Cuomo et al. (2022). Here, FF-NN, FC-DNN, AE, LSTM, BNN, and GAN represent Feed-Forward Neural Network, Fully Connected Deep Neural Network, Autoencoder, Long Short-Term Memory, Binarized Neural Network, and Generative Adversarial Network NN familyNN typeReferencesFF-NN1 layer/EMLDwivedi and Srinivasan (2020), Schiassi et al. (2021)2–4 layers32 neurons per layer He et al. (2020), 50 neurons per layer Tartakovsky et al. (2020)5–8 layers250 neurons per layer Zhu et al. (2021)9+ layersCheng and Zhang (2021), Waheed et al. (2021)SparseRamabathiran and Ramachandran (2021)multi FC-DNNAmini Niaki et al. (2021), Islam et al. (2021)CNNplain CNNGao et al. (2021), Fang (2021)AE CNNZhu et al. (2019), Geneva and Zabaras (2020), Wang et al. (2021a)RNNRNNViana et al. (2021)LSTMZhang et al. (2020), Yucesan and Viana (2021)OtherBNNYang et al. (2021)GANYang et al. (2020) 3. OL의 연구 동향 # 최근 인공신경망 연구에서 OL은 PINNs와 함께 주목받고 있는 분야이다. 이 분야는 주로 심층 연산자 네트워크(Deep Operator Network, DeepONet)과 푸리에 신경 연산자(Fourier Neural Operator, FNO)라는 두 가지 주요 방법론으로 나뉜다. 이들은 복잡한 물리 시스템이나 프로세스를 모델링하는 데 사용되며, PINNs와 마찬가지로 물리학과 딥러닝의 융합을 시도한다(Choi et al. 2024).\nPINNs는 많은 응용 분야에서 효과적임이 입증되었지만, 몇 가지 한계점도 존재한다. PINNs는 특정 입력 매개변수(예: 경계 및 초기 조건, 외부 강제력 등)에 대해 학습되며, 입력 매개변수가 변경될 때마다 PINNs를 다시 학습시켜야 한다. 따라서 다양한 작동 조건에서 실시간 추론을 수행하는 데는 효율적이지 않다. 반면, 연산자를 직접 학습하는 접근법은 서로 다른 조건에서 추론을 가능하게 하는 이점을 제공한다. 연산자 학습(OL) 기술은 대기 및 해양 자료의 복잡한 패턴을 학습하여 기상-기후 모델링 및 예측의 정확성을 높이는 데 기여할 수 있다.\n이 절에서는 OL의 일종인 함수 공간 간의 매핑(Mapping)을 학습하고 편미분 방정식을 해결하는 모델인 신경 연산자(Neural Operators)를 소개한다. Neural Operators에 대한 보다 상세한 정보는 Li et al. (2021, 2023)과 Kovachki et al. (2023), Serrano et al. (2023) 등의 연구에서 확인할 수 있다. Neural Operators의 실제 구현 및 응용은 다양한 방법을 통해 진행되고 있으며, 본 절에서는 특히 주목받고 있는 두 가지 접근법인 DeepONet과 FNO에 대해 상세히 설명한다.\nOL과 Neural Operators # OL은 주어진 입력 함수나 자료를 기반으로 출력을 생성하는 연산자를 학습하는 방법이다. 즉, 입력과 출력 간의 복잡한 관계를 모델링하는 데 중점을 둔다. 이러한 연산자는 물리적 시스템, 화학 반응, 날씨 변화 등 다양한 분야의 동적 시스템에 적용된다. 특히, 신경망을 사용하여 OL을 시도하는 특정 방법을 Neural Operators라고 한다. Neural Operators는 입력 함수에서 출력 함수로의 매핑을 신경망을 통해 학습한다. Neural Operators는 주로 합성곱 신경망(CNNs) 또는 그래프 신경망(GNNs)과 같은 딥러닝 구조를 사용한다. 이러한 네트워크는 함수의 특성을 학습하고 복잡한 연산자를 효율적으로 근사할 수 있다.\nNeural Operators의 주요 특징을 정리하면 다음과 같다: (i) 전통적인 기계학습 모델은 스칼라 또는 벡터 입력을 처리하는 반면, Neural Operators는 함수 자체를 입력과 출력으로 처리한다. 이는 연속 자료나 고차원 공간에서의 문제를 모델링하는 데 적합하다. (ii) Neural Operators는 많은 과학 및 공학 분야에서 중요한 PDE을 해결하는 역할을 한다. 이는 계산수학, 유체역학, 물리학 등 다양한 분야에 적용될 수 있다. (iii) Neural Operators는 특정 PDE의 해를 학습하는 것이 아니라, 다양한 조건과 매개변수를 가진 여러 유형의 PDE에 대한 일반적인 해법을 학습할 수 있다. 예를 들어, 한 번 훈련된 모델로 열확산 방정식과 Navier-Stokes 방정식을 모두 해결할 수 있다. 이는 학습 과정에서 접해보지 못한 새로운 조건이나 매개변수를 가진 PDE에 대해서도 효과적인 예측을 수행할 수 있음을 의미한다. (iv) Neural Operators는 대규모 자료셋과 고성능 컴퓨팅 자원을 활용하여 학습된다. 이는 대규모 시뮬레이션 자료를 요구하는 과학 및 공학 연구에서 특히 중요하다. (v) Neural Operators는 종종 딥러닝 신경망 구조를 활용하여 복잡한 함수 매핑을 효율적으로 학습한다.\nDeep Operator Network (DeepONet) # DeepONet은 Neural Operator의 한 형태로(Lu et al. 2021a) 함수 간의 복잡한 관계를 학습하는 데 중점을 둔다. DeepONet은 입력 함수 u(⋅)를 처리하는 브랜치(Branch) 네트워크와 시･공간 좌표를 처리하는 트렁크(Trunk) 네트워크로 구성된다(Fig. 8). 두 네트워크의 출력은 동일한 차원을 가지며, 이를 내적(dot product)을 통해 병합한다. 선택적으로, 내적 이후에 편향(bias) 항을 추가하여 모델의 표현력을 더욱 향상시킬 수 있다(Guo 2023).\nDeepONet은 다양한 유형의 함수와 연산자에서 효과적으로 작동하며, 학습된 연산자는 새로운 또는 미지의 입력 함수에도 일반화가 잘 된다. 이 모델은 유체역학, 재료과학, 기상학, 생물 시스템 모델링과 같은 다양한 분야에 적용된다. 특히 복잡한 PDE를 해결하거나 고차원 자료를 처리하는 데 유용하다. DeepONet은 특히 시간에 따라 변화하는 프로세스나 공간적으로 분포된 현상을 모델링하는 데 적합하다.\nFig. 8. The structure of DeepONet. Adapted from Fig. 7 in Guo (2023) DeepONet은 전통적인 수치 기법에 비해 낮은 계산 비용으로 복잡한 연산자를 효율적으로 근사할 수 있을 뿐 아니라 학습이 완료된 후에는 다양한 유형의 입력에 대해 정확한 예측을 제공할 수 있다. DeepONet은 또한 실험 자료나 시뮬레이션 자료를 기반으로 학습할 수 있어, 물리적 모델이 명확하지 않은 경우에도 유용하다. 즉, DeepONet은 딥러닝과 수치 해석을 결합한 혁신적인 접근법이며, 복잡한 시스템을 모델링하고 예측하는 데 새로운 방향을 제시한다(Lu et al. 2021a).\nFourier Neural Operator (FNO) # FNO는 연산자를 학습하기 위해 푸리에 변환을 기반으로 한다. 푸리에 변환은 함수를 시간 또는 공간 영역에서 주파수 영역으로 변환하여 복잡한 함수를 단순한 주파수 성분으로 분해한다. FNO는 푸리에 변환을 활용하여 고차원 자료를 효율적으로 처리할 수 있으며, 복잡한 PDE를 해결하는 데 높은 정확도를 보여준다. 특히, FNO는 입력 함수를 푸리에 공간으로 변환한 뒤, 이 공간에서 학습을 수행하기 하기 때문에 전통적인 신경망과 달리, 공간적 또는 시간적 연속성에 기반한 특징을 효과적으로 학습할 수 있게 한다. 따라서 FNO는 파동 방정식, 난류, 그리고 기타 복잡한 물리 시스템을 모델링하는 데 특히 효과적이다(Choi et al. 2024).\n고전적인 신경망 개발은 주로 유한 차원의 유클리드 공간(Euclidean Space) 간 매핑을 학습하는 데 초점을 맞췄다. 최근에는 이를 함수 공간 간 매핑을 학습하는 Neural Operators로 일반화하였다. PDE의 경우, Neural Operators는 특정 함수 매개변수 의존성으로부터 해(Solution)로의 매핑을 직접 학습한다. 따라서, 전통적인 방법이 방정식의 하나의 사례를 해결하는 것과 달리, 신경 연산자는 PDE 전체를 학습한다.\nFNO에서는 푸리에 공간에서 적분 커널을 직접 매개변수화하여 표현력 있고 효율적인 구조를 가진 새로운 신경 연산자가 제안되었다. Li et al. (2021)은 FNO를 사용하여 Burgers 방정식, Darcy 흐름, 그리고 Navier-Stokes 방정식에 대한 실험을 수행하였다. 여기서 사용된 FNO는 제로샷 초고해상도(zero-shot super-resolution) 방식으로 난류 흐름을 성공적으로 모델링한 최초의 기계학습 기반 방법이다. 이는 전통적인 PDE 해석기보다 최대 세 배 속도가 빠르며, 고정된 해상도에서 이전의 학습 기반 해석기보다 우수한 정확도를 달성한다.\nFNO는 이렇게 푸리에 변환을 기반으로 하기 때문에 고차원 PDE를 해결하는 데 있어 빠른 계산 속도와 높은 정확도를 제공하며 학습된 모델은 다양한 입력 조건에 대해 잘 일반화할 수 있다는 장점이 있지만 특정 유형의 비선형 문제나 극한 조건에서는 성능이 제한될 수 있다는 단점이 있다.\nFig. 9는 신경 연산자의 전체 구조(a)와 푸리에 층(b)을 설명한다(Li et al. 2021). 신경 연산자의 전체 구조에서 입력 *a(x)*는 신경망 P에 의해 고차원 채널 공간으로 승격된다. 이후, 네 개의 적분 연산자 층과 활성화 함수가 적용된다. 마지막으로, 신경망 Q가 대상 차원으로 다시 투영하여 *u(x)*를 출력한다. 푸리에 층(b)에서는 입력 *v(x)*로 시작하여 상단에서 푸리에 변환 F가 적용된다. 푸리에 주요 모드에는 선형 변환 R이 적용되며, 나머지 모드들은 필터링된다. 이후, 역푸리에 변환 *F-1*이 적용된다. 하단에서는 지역적 선형 변환 W가 적용되며 R에서 처리하지 못한 단기모드를 포함하여 학습하게 된다.\nFig. 9. Learning Operator. (a) The full architecture of neural operator, (b) Fourier layers. Adapted from Fig. 2 in Li et al. (2021) FNO는 2022년 기상학 분야에서 AI 기반 전지구 대기 순환 모델에 적용되었다(Pathak et al. 2022). 이 연구에서는 AFNO (Adaptive Fourier Neural Operator)를 개발하여 FourCastNet 모델을 구축하였으며, 이는 유럽중기예보센터(European Centre for Medium-Range Weather Forecasts, ECMWF)의 수치모델 기반 통합예보시스템(Integrated Forecast System, IFS)과 유사한 성능을 달성하였다. 이후, 이 모델은 극지방의 좌표계 문제를 해결하기 위해 SFNO (Spherical Fourier Neural Operator)가 적용되어 FourCastNet의 개선된 버전으로 이어졌다(Bonev et al. 2023). Fig. 10은 ECMWF의 IFS 결과와 SFNO의 성능 비교를 보여준다.\nFig. 10. Comparison of forecast skill (accuracy score, i.e., probability of a correct decision) as a function of prediction lead time (in hours) between IFS (blue) and the SFNO (orange) for four physical variables. (a) u10 (surface wind at latitude); (b) T2m (temperature 2 meters above the surface); (c) z500hPa (geopotential height at 500 hPa); (d) T850hPa (temperature at 850 hPa). Adapted from Fig. 6 in Bonev et al. (2023) DeepONet와 FNO의 비교 # Lu et al. (2022)는 FAIR (Findability, Accessibility, Interoperability, and Reusability) (Wilkinson et al. 2016) 자료를 기반으로 실용적 확장 측면에서 두 가지 Neural Operator (DeepONet와 FNO)에 대한 종합적인 비교를 연구하였다. Neural Operator는 함수 공간 간의 비선형 매핑을 학습할 수 있으며, 과학 및 공학 분야에서의 시스템 식별뿐만 아니라 다양한 응용 분야에서 복잡한 동역학의 실시간 예측을 위한 새로운 시뮬레이션 패러다임을 제공한다. 이 연구에서는 두가지 Neural Operators의 성능을 조사하고, 이를 더욱 정확하고 견고하게 만들기 위해 새로운 실용적 확장을 개발하였다. 특히, 복잡한 산업적 응용에 더욱 적합하도록 개선되었다. 첫 번째 Neural Operator인 DeepONet (Lu et al. 2021a)은 2019년에 발표되었고, 두 번째인 FNO (Li et al. 2021)는 2020년에 발표되었다. 이후에 FNO와 DeepONet를 실제 환경에서 적용하기 위해, 입력 및 출력 함수 공간의 차원이 서로 다른 매핑과 복잡한 기하학적 영역을 처리할 수 있는 FNO의 여러 확장 모델이 개발되었고 DeepONet에 유도된 편향(induced bias)을 추가하여 학습을 가속화할 수 있고 FNO와 유사한 계산 비용으로 작동하는 DeepONet의 확장 모델들이 제시되었다(Lu et al. 2022).\nDeepONet과 FNO의 성능은 비교적 단순한 환경에서는 유사하지만, FNO는 복잡한 기하학적 구조나 특히 노이즈가 있는 자료에서 성능이 크게 저하된다. 예를 들어, 불안정 파동 분석에서 입력 자료에 0.1%의 노이즈만 추가해도 FNO의 오류는 10,000배 증가하여 중요한 응용에 부적합한 반면, DeepONet은 이러한 노이즈의 영향을 크게 받지 않는다. 또한, 두 Neural Operators를 이론적으로 비교했을 때 동일한 정규분포 가정 하에서는 DeepONet과 FNO 모두에서 유사한 오류 추정치를 얻을 수 있다. 그러나, Lu et al. (2022)는 Burgers 방정식과 Navier-Stokes 방정식을 사용하여 DeepONet과 FNO의 성능을 비교한 결과, DeepONet이 FNO보다 우수한 성능을 보여주었다.\n4. PINNs와 OL의 결합 # PINNs는 물리적 법칙을 신경망 학습 과정에 통합함으로써 모델이 물리적으로 타당한 예측을 생성하도록 보장한다. 따라서 자료가 제한적인 경우에도, 물리적 법칙을 사용하여 학습하기 때문에 효과적이며 물리적 법칙이 모델에 내장되어 있어 결과의 해석 가능성이 높다. 그러나, 물리적 법칙을 신경망에 통합하는 것은 종종 계산적으로 복잡하고 학습 시간이 길어질 수 있을 뿐 아니라 특정 물리적 법칙에 맞춰진 모델은 다른 유형의 문제에 적용하기 어려울 수 있다.\nOL은 다양한 종류의 문제에 적용할 수 있는 범용적인 연산자 학습 능력을 가진다. 특히 DeepONet이나 FNO와 같은 방법은 복잡한 시스템을 빠르고 효율적으로 모델링할 수 있다. 다양한 유형의 함수 매핑을 학습할 수 있어, 복잡한 PDE와 같은 문제에 유용하다. 그러나, OL은 물리적 법칙을 직접적으로 통합하지 않아, 물리적으로 비현실적인 결과를 예측할 수 있을 뿐 아니라 정확한 학습을 위해서는 충분하고 대표적인 학습 자료가 필요하다.\n이렇게 PINNs와 OL은 모두 복잡한 시스템을 모델링하고 예측하기 위한 딥러닝 기반의 방법론이지만, 각각의 접근 방식과 적용 범위에서 장단점을 가진다. 최근에는 PINNs와 OL의 장단점을 고려하여 둘을 결합한 하이브리드 방법들인 Physics-informed DeepONet (PIDON)과 Physics-Informed Neural Operator (PINO)이 개발되었다.\nPhysics-informed DeepONet (PIDON) # PIDON의 주요 원리는 DeepONet과 PINNs의 장점을 결합하는 것이다. DeepONet과 마찬가지로 PIDON은 함수를 입력으로 받고 함수를 출력으로 생성할 수 있다. 이는 새로운 입력 함수에 대해 재학습 없이 실시간 추론을 수행하는 데 매우 효율적이다. PIDON은 PINNs와 유사하게, 모델의 예측이 알려진 미분 방정식에 얼마나 잘 부합하는지를 측정하기 위해 손실 항을 추가한다. 이 손실 함수를 최적화함으로써, 모델은 자료 일관성(훈련 중 측정 자료가 제공되는 경우)과 물리적 일관성(Fig. 11에 제시된 바와 같이)을 모두 갖춘 예측을 학습한다. PIDON은 두 접근법의 강점을 결합한 강력한 도구이다(Wang et al. 2021b; Guo 2023).\nFig. 11. Physics-informed DeepONet uses DeepONet as the backbone architecture while leveraging the concept of physics-informed learning to train the model. Adapted from Fig. 10. in Guo (2023) Physics-informed Neural Operator (PINO) # Li et al. (2023)은 주어진 매개변수화된 PDE에 대한 해 연산자를 학습하기 위해 훈련 자료와 물리적 제약을 결합한 PINO를 제안하였다. PINO는 자료와 PDE 제약을 서로 다른 해상도에서 통합하여 연산자를 학습하는 최초의 하이브리드 접근법이다. 구체적으로, PINO는 저해상도의 훈련 자료를 더 높은 해상도에서 적용된 PDE 제약과 결합한다. 이렇게 개발된 PINO 모델은 많은 대표적인 PDE 계열에 대해 실제 해 연산자를 정확히 근사할 수 있으며, 훈련 자료의 해상도를 초과한 영역에서도 예측할 수 있는 제로샷 초고해상도(zero-shot super-resolution)에서 정확도를 유지한다.\nPINO는 FNO 프레임워크를 사용하며, 이는 모든 연속 연산자에 대한 보편적 근사자로 작동하고, 메시(Mesh) 형태로 세분된 환경에서도 이산화 수렴을 보장한다. 이 방법은 FNO에 PDE 제약을 더 높은 해상도로 통합함으로써, 실제 연산자의 고신뢰도 재구성을 달성할 수 있다. 더욱이, PINO는 훈련 자료가 전혀 없고 오직 PDE 제약만 존재하는 조건에서도 적용이 가능하다. 이러한 결과는 Kolmogorov 흐름과 같은 다중 스케일 동적 시스템에서 최적화 문제로 실패하는 PINNs와는 대조적인 성과를 보여준다(Li et al. 2023).\nFig. 12는 학습 손실 함수와 PDE 손실 함수를 함께 사용하여 신경 연산자를 학습하는 PINO의 한 예를 보여준다. 특히, 여기서 입력 함수 a를 받아 더 큰 공차를 가진 함수 *v0*를 출력하는 점별(point-wise) 승격 연산자가 포함된 신경 연산자 구조를 잘 보여준다. 이 연산 뒤에는 비선형성을 따르는 선형 적분 연산자를 계산하는 L개의 블록이 이어지며, 마지막 층은 함수 *vL*을 출력한다. 점별 투영 연산자는 *vL*을 투영하여 출력 함수 u를 생성한다. *vL*과 u는 모두 함수이며, 이들의 모든 도함수(DvL, Du)는 임의의 질의점 x에서 정확한 형태로 계산될 수 있다.\nFig. 12. PINO trains neural operator with both training data and PDE loss function. Adapted from Fig. 2 in Li et al. (2023) 5. 요약 및 토론 # 본 연구는 물리정보 신경망(PINNs)과 연산자 학습(OL) 기술을 중심으로 과학적 계산 및 예측의 새로운 가능성을 조사하였다. PINNs는 물리학적 원리를 신경망 학습 과정에 통합하여 복잡한 물리적 시스템의 모델링과 예측을 가능하게 하며, OL은 함수 공간 간의 매핑을 학습하여 다양한 입력 조건에서 효율적이고 확장 가능한 추론을 수행한다. 본 연구는 두 기술의 이론적 기반, 최근 연구 동향, 그리고 이를 결합한 하이브리드 접근법에 대해 논의하였다.\nPINNs는 UAT을 기반으로 물리적 법칙을 신경망 학습의 손실 함수에 포함함으로써 자료가 부족하거나 잡음이 많은 환경에서도 높은 일반화 성능을 달성할 수 있다. 특히, 이 기술은 복잡한 비선형 PDE의 해법으로 확장되었으며, Euler 방정식, Navier-Stokes 방정식 등 다양한 문제를 해결하는 데 활용되고 있다. 최근에는 cPINNs, vPINNs, hp-VPINNs 등으로 발전하며 응용 범위를 확대하고 있다.\nOL은 PINNs와 함께 주목받는 분야로, 함수 공간 간의 매핑을 학습하는 DeepONet와 FNO가 대표적인 기법이다. DeepONet은 함수 간의 복잡한 관계를 학습하여 다양한 유형의 PDE 문제를 효과적으로 해결할 수 있으며, FNO는 푸리에 변환을 기반으로 고차원 자료를 효율적으로 처리할 수 있다. 특히, NVIDIA의 FourCastNet은 FNO를 활용하여 기후 예측 모델을 구축함으로써 전통적 수치 모델과 유사한 성능을 입증하였다.\nPINNs는 물리 법칙을 직접 신경망에 통합하여 복잡한 기상 현상이나 해양 순환을 모델링하는 데 효과적이다. 이는 불완전한 관측 자료를 보완하고 물리적으로 일관된 예측을 제공할 수 있다. OL은 위성 이미지나 시계열 자료와 같은 다양한 입력을 처리할 수 있어, 태풍 강도 예측이나 해수면 온도 변화와 같은 복잡한 기상-해양 현상을 모델링하는 데 유용하다. 특히 실시간 예측이 가능해 극단적 기상 현상에 대한 신속한 대응에 도움을 줄 수 있다. 하이브리드 접근법으로 제안된 PIDON과 PINO는 이러한 PINNs와 OL의 장점을 결합한 모델로, 자료 기반 학습과 물리적 제약을 통합하여 더 높은 예측 성능과 일반화 능력을 제공한다. 특히, PINO는 다양한 해상도의 자료와 PDE 제약을 통합하여 제로샷 초고해상도(Zero-shot super-resolution) 예측이 가능하며, 자료가 부족한 환경에서도 우수한 성능을 보인다.\n본 연구에서 다룬 PINNs와 OL 기술은 물리 기반 계산 및 예측 모델링에서 매우 강력한 도구로 자리 잡고 있다. 그러나 이들 기술이 실제 응용과 산업적 활용에서 폭넓게 채택되기 위해서는 몇 가지 한계와 도전 과제를 해결할 필요가 있다. 첫째, 계산 효율성의 문제가 있다. PINNs는 물리적 제약 조건을 손실 함수에 통합함으로써 높은 정확도를 제공하지만, 복잡한 물리 시스템에서는 학습 과정에서 매우 높은 계산 비용이 소요된다. 이를 해결하기 위해 병렬 처리 및 고성능 컴퓨팅 기술의 활용이 필요하며, 효율적인 학습 알고리즘 설계가 요구된다. 반면, OL 기반 기술은 계산 효율성이 상대적으로 높은 편이나, 복잡한 시스템에서는 여전히 상당한 자원이 필요하다. 둘째, 노이즈와 불확실성의 처리는 PINNs와 OL 모두에서 중요한 과제이다. OL 기반 모델은 노이즈에 민감하여 자료 품질이 낮은 경우 성능이 크게 저하될 수 있다. 특히 FNO는 노이즈에 상당히 민감한 신경망이다. 이에 따라 노이즈를 견딜 수 있는 손실 함수 설계와 자료 전처리 기법의 개선이 필요하다. PINNs는 물리적 제약을 통해 노이즈를 완화할 수 있지만, 자료 품질이 지나치게 낮은 경우 성능 한계에 직면할 수 있다. 이러한 문제를 해결하기 위해 Bayesian PINNs와 같은 불확실성을 포함한 접근법에 대한 추가 연구가 필요하다. 셋째, 다중 물리(multiphysics) 및 다중 스케일(multiscale) 문제에 대한 적용성의 확장이 요구된다. 현재 PINNs와 OL은 각각 다중 물리 또는 다중 스케일 문제의 일부 요소에서 효과를 입증했으나, 이들 문제를 종합적으로 해결하기 위해서는 두 기술의 통합 및 최적화가 필요하다. PIDON과 PINO와 같은 초기 하이브리드 모델은 이러한 문제 해결의 가능성을 보여주었으나, 고차원 문제와 다양한 물리적 상호작용을 다룰 수 있는 보다 정교한 프레임워크의 개발이 요구된다. 넷째, 적용 가능한 분야의 확대가 필요하다. 현재 PINNs와 OL은 기상 예측, 유체역학, 재료 과학 등 일부 분야에서 주로 활용되고 있다. 그러나 생물학적 시스템, 에너지 시스템, 재난 관리와 같은 복잡하고 동적인 문제에 대한 적용은 제한적이다. 이들 분야에서 PINNs와 OL을 효과적으로 결합하여 적용할 수 있는 연구가 필요하다. 마지막으로, 정량적 성능 평가를 위한 표준화된 벤치마크의 부족은 이들 기술의 효과적 비교를 어렵게 한다. 따라서 다양한 물리적 문제를 다룰 수 있는 벤치마크 자료셋과 평가 체계를 구축하여, PINNs와 OL 기술의 성능을 객관적으로 검증할 필요가 있다. 이를 통해 기술의 적합성을 판단하고 실제 응용 가능성을 높일 수 있을 것이다.\nAcknowledgements # 이 논문은 2023학년도 제주대학교 교원성과지원사업에 의하여 연구되었습니다.\nReferences # Amini Niaki S, Haghighat E, Campbell T, Poursartip A, Vaziri R (2021) Physics-informed neural network for modelling the thermochemical curing process of composite-tool systems during manufacture. Comput Method Appl M 384:113959. doi:10.1016/j.cma.2021.113959 Baker N, Alexander F, Bremer T, Hagberg A, Kevrekidis Y, Najm H, Parashar M, Patra A, Sethian J, Wild S, Willcox K, Lee S (2019) Workshop report on basic research needs for scientific machine learning: core technologies for artificial intelligence. USDOE Office of Science (SC), Washington DC, 109 p Bonev B, Kurth T, Hundt C, Pathak J, Baust M, Kashinath K, Anandkumar A (2023) Spherical fourier neural operators: learning stable dynamics on the sphere. In: Proceedings of the 40th International Conference on Machine Learning, ICML 2023, Hawaii, 23-29 July 2023, pp 2806-2823 Cai S, Wang Z, Wang S, Perdikaris P, Karniadakis GE (2021) Physics-informed neural networks for heat transfer problems. J Heat Transf 143(6):060801. doi:10.1115/1.4050542 Chen F, Chen F, Sondak D, Protopapas P, Mattheakis M, Liu S, Agarwal D, Di Giovanni M (2020) NeuroDiffEq: a python package for solving differential equations with neural networks. J Open Source Softw 5:1931. doi:10.21105/joss.01931 Chen T, Chen H (1995) Universal approximation to nonlinear operators by neural networks with arbitrary activation functions and its application to dynamical systems. IEEE Trans Neural Netw Learn Syst 6(4):911-917 Cheng C, Zhang GT (2021) Deep learning method based on physics informed neural network with Resnet block for solving fluid flow problems. Water 13(4):423. doi:10.3390/w13040423 Choi BJ, Jin HS, Lkhagvasuren B (2024) Applications of the Fourier neural operator in a regional ocean modeling and prediction. Front Mar Sci 11:1383997. doi:10.3389/fmars.2024.1383997 Cuomo S, Di Cola VS, Giampaolo F, Rozza G, Raissi M, Piccialli F (2022) Scientific machine learning through physics-informed neural networks: Where we are and what's next. J Sci Comput 92(3):88. doi:10.1007/s10915-022-01939-z Cybenko G (1989) Approximation by superpositions of a sigmoidal function. Math Control Signals Syst 2(4):303-314 Dwivedi V, Srinivasan B (2020) Physics Informed Extreme Learning Machine (PIELM) - a rapid method for the numerical solution of partial differential equations. Neurocomputing 391:96-118. doi:10.1016/j.neucom.2019.12.099 Fang Z (2021) A high-efficient hybrid physics-informed neural networks based on convolutional neural network. IEEE Trans Neural Netw Learn Syst 33(10):5514-5526. doi:10.1109/TNNLS.2021.3070878 Gao H, Sun L, Wang JX (2021) PhyGeoNet: physics-informed geometry-adaptive convolutional neural networks for solving parameterized steady-state PDEs on irregular domain. J Comput Phys 428:110079. doi:10.1016/j.jcp.2020.110079 Gardner JR, Pleiss G, Bindel D, Weinberger KQ, Wilson AG (2018) Gpytorch: blackbox matrix-matrix Gaussian process inference with GPU acceleration. Adv Neural Inf Process Syst 31:7587-7597 Geneva N, Zabaras N (2020) Modeling the dynamics of pde systems with physics-constrained deep auto-regressive networks. J Comput Phys 403:109056. doi:10.1016/j.jcp.2019.109056 Guo S (2023) Operator learning via physics-informed DeepONet: Let's implement it from scratch. blog post. https://towardsdatascience.com/operator-learning-via-physics-informed-deeponet-lets-implement-it-from-scratch-6659f3179887 Accessed 1 Dec 2024 Haghighat E, Juanes R (2021) SciANN: A Keras/TensorFlow wrapper for scientific computations and physics-informed deep learning using artificial neural networks. Comput Methods Appl Mech Eng 373:113552. doi:10.48550/arXiv.2005.08803 He Q, Barajas-Solano D, Tartakovsky G, Tartakovsky AM (2020) Physics-informed neural networks for multiphysics data assimilation with application to subsurface transport. Adv Water Resour 141:103610. doi:10.1016/j.advwatres.2020.103610 Hennigh O, Narasimhan S, Nabian MA, Subramaniam A, Tangsali K, Rietmann M, Ferrandis JdA, Byeon W, Fang Z, Choudhry S (2020) NVIDIA SimNet: an AI-accelerated multi-physics simulation framework. Preprint at arXiv:2012.07938. doi:10.48550/arXiv.2012.07938 Islam M, Thakur MSH, Mojumder S, Hasan MN (2021) Extraction of material properties through multi-fidelity deep learning from molecular dynamics simulation. Comput Mater Sci 188:110187. doi:10.1016/j.commatsci.2020.110187 Jin X, Cai S, Li H, Karniadakis GE (2021) NSFnets (Navier-Stokes flow nets): Physics-informed neural networks for the incompressible Navier-Stokes equations. J Comput Phys 426:109951. doi:10.1016/j.jcp.2020.109951 Karniadakis GE, Kevrekidis IG, Lu L, Perdikaris P, Wang S, Yang L (2021) Physics-informed machine learning. Nat Rev Phys 3(6):422-440 Koryagin A, Khudorozkov R, Tsimfer S (2019) PyDEns: a Python framework for solving differential equations with neural networks. Preprint at arXiv:1909.11544 doi:10.48550/arXiv.1909.11544 Kovachki N, Li Z, Liu B, Azizzadenesheli K, Bhattacharya K, Stuart A, Anandkumar A (2023) Neural operator: learning maps between function spaces with applications to PDEs. J Mach Learn Res 24(89):1-97 Li Z, Kovachki N, Azizzadenesheli K, Liu B, Bhattacharya K, Stuart A, Anandkumar A (2021) Fourier neural operator for parametric partial differential equations. arXiv preprint arXiv:2010.08895. doi:10.48550/arXiv.2010.08895 Li Z, Zheng H, Kovachki N, Jin D, Chen H, Liu B, Anandkumar A (2023) Physics-informed neural operator for learning partial differential equations. arXiv preprint arXiv:2111.03794. doi:10.1145/3648506 Lu L, Jin P, Pang G, Zhang Z, Karniadakis GE (2021a) Learning nonlinear operators via DeepONet based on the universal approximation theorem of operators. Nat Mach Intell 3:218-229. doi:10.1038/s42256-021-00302-5 Lu L, Meng X, Cai S, Mao Z, Goswami S, Zhang Z, Karniadakis GE (2022) A comprehensive and fair comparison of two neural operators (with practical extensions) based on fair data. Comput Methods Appl Mech Engrg 393:114778 Lu L, Meng X, Mao Z, Karniadakis GE (2021b) DeepXDE: a deep learning library for solving differential equations. SIAM Rev 63:208-228 Mao Z, Jagtap AD, Karniadakis GE (2020) Physics-informed neural networks for high-speed flows. Comput Methods Appl Mech Engrg 360:112789. doi:10.1016/j.cma.2019.112789 Moseley B (2021) So, what is a physics-informed neural network?. Blog post. https://benmoseley.blog/my-research/so-what-is-a-physics-informed-neural-network/ Accessed 1 Dec 2024 Novak R, Xiao L, Hron J, Lee J, Alemi AA, Sohl-Dickstein J, Schoenholz SS (2019) Neural tangents: fast and easy infinite neural networks in python. arXiv preprint arXiv:1912.02803. doi:doi.org/10.48550/arXiv.1912.02803 Pathak J, Subramanian S, Harrington P, Raja S, Chattopadhyay A, Mardani M, Kurth T, Hall D, Li Z, Azizzadenesheli K, Hassanzadeh P, Kashinath K, Anandkumar A (2022) Fourcastnet: a global data-driven high-resolution weather model using adaptive fourier neural operators. arXiv preprint arXiv:2202.11214. doi:10.48550/arXiv.2202.11214 Rackauckas C, Nie Q (2017) DifferentialEquations.jl - a performant and feature - rich ecosystem for solving differential equations in Julia. J Open Res Softw 5:15. doi:10.5334/jors.151 Raissi M, Perdikaris P, Karniadakis GE (2019) Physics-informed neural networks: a deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. J Comput phys 378:686-707 Ramabathiran AA, Ramachandran P (2021) SPINN: sparse, Physics-based, and partially Interpretable Neural Networks for PDEs. J Comput Phys 445:110600. doi:10.1016/j.jcp.2021.110600 Schiassi E, Furfaro R, Leake C, Florio MD, Johnston H, Mortari D (2021) Extreme theory of functional connections: a fast physics- informed neural network method for solving ordinary and partial differential equations. Neurocomputing 457:334-356. doi:10.1016/j.neucom.2021.06.015 Serrano L, Le Boudec L, Kassaï Koupaï A, Wang TX, Yin Y, Vittaut JN, Gallinari P (2023) Operator learning with neural fields: tackling PDEs on general geometries. Adv Neural Inf Process Syst 36:70581-70611 Tartakovsky AM, Marrero CO, Perdikaris P, Tartakovsky GD, Barajas-Solano D (2020) Physics-informed deep neural networks for learning parameters and constitutive relationships in subsurface flow problems. Water Resour Res 56(5):e2019WR026731. doi:10.1029/2019WR026731 Viana FAC, Nascimento RG, Dourado A, Yucesan YA (2021) Estimating model inadequacy in ordinary differential equations with physics-informed neural networks. Comput Struct 245:106458. doi:10.1016/j.compstruc.2020.106458 Waheed UB, Haghighat E, Alkhalifah T, Song C, Hao Q (2021) PINNeik: eikonal solution using physics-informed neural networks. Comput Geosci 155:104833. doi:10.1016/j.cageo.2021.104833 Wang N, Chang H, Zhang D (2021a) Theory-guided auto-encoder for surrogate construction and inverse modeling. Comput Methods Appl Mech Engrg 385:114037. doi:10.1016/j.cma.2021.114037 Wang S, Wang H, Perdikaris P (2021b) Learning the solution operator of parametric partial differential equations with physics-informed DeepONets. Science advances 7(40):eabi8605 Wilkinson MD, Dumontier M, Aalbersberg IJ, Appleton G, Axton M, Baak A, Blomberg N, Boiten J-W, Santos LBdS, Bourne PE (2016) The FAIR guiding principles for scientific data management and stewardship. Scientific Data 3(1):1-9 Xu K, Darve E (2020) ADCME: Learning spatially-varying physical fields using deep neural networks. Preprint at arXiv:2011.11955. doi:10.48550/arXiv.2011.11955 Yang L, Meng X, Karniadakis GE (2021) B-PINNs: Bayesian physics-informed neural networks for forward and inverse PDE problems with noisy data. J Comput Phys 425:109913. doi:10.1016/j.jcp.2020.109913 Yang L, Zhang D, Karniadakis GE (2020) Physics-informed generative adversarial networks for stochastic differential equations. SIAM J Sci Comput 42(1):A292-A317. doi:10.1137/18M1225409 Yucesan YA, Viana FAC (2021) Hybrid physics-informed neural networks for main bearing fatigue prognosis with visual grease inspection. Comput Ind 125:103386. doi:10.1016/j.compind.2020.103386 Zhang R, Liu Y, Sun H (2020) Physics-informed multi-LSTM networks for metamodeling of nonlinear structures. Comput Methods Appl Mech Engrg 369:113226. doi:10.1016/j.cma.2020.113226 Zhu Q, Liu Z, Yan J (2021) Machine learning for metal additive manufacturing: predicting temperature and melt pool fluid dynamics using physics-informed neural networks. Comput Mech 67(2):619-635. doi:10.1007/s00466-020-01952-9 Zhu Y, Zabaras N, Koutsourelakis PS, Perdikaris P (2019) Physics-constrained deep learning for high-dimensional surrogate modeling and uncertainty quantification without labeled data. J Comput Phys 394:56-81. doi:10.1016/j.jcp.2019.05.024 ","date":"2025년 3월 27일","externalUrl":null,"permalink":"/2025/03/PINNs_OperatorLearning/","section":"글","summary":"물리정보 신경망(PINNs)과 연산자 학습(DeepONet·FNO), 그리고 둘을 결합한 PIDON·PINO까지 정리한 총설. 2025년 Ocean and Polar Research에 실린 논문 전문입니다.","title":"대기 및 해양 예측을 위한 인공신경망 학습의 새로운 패러다임: 물리정보 신경망과 연산자 학습","type":"posts"},{"content":"Dong-Hoon Kim1, Il-Ju Moon1*, Chaewook Lim2, Seung-Buhm Woo3\n1 Typhoon Research Center, Jeju National University, Jeju, Republic of Korea\n2 Artificial Intelligence Convergence Research Center, Inha University, Incheon, Republic of Korea\n3 Department of Ocean Sciences, College of Natural Science, Inha University, Incheon, Republic of Korea\n* Correspondence: Il-Ju Moon, ijmoon@jejunu.ac.kr\nKeywords: ENSO, Niño3.4, RNN, LSTM, loss function\n아래는 다음 논문의 전문입니다.\nKim, D.-H., I.-J. Moon, C. Lim, and S.-B. Woo, 2024: Improved prediction of extreme ENSO events using an artificial neural network with weighted loss functions. Frontiers in Marine Science, 10, 1309609. doi:10.3389/fmars.2023.1309609\n2023년 10월 8일 접수 · 2023년 12월 29일 게재 확정 · 2024년 1월 15일 출판. Copyright © 2024 Kim, Moon, Lim and Woo. 이 논문은 CC BY 4.0 조건으로 공개된 것이며, 출처를 밝히고 원문 그대로 옮겼습니다.\nAbstract # The El Niño–Southern Oscillation (ENSO) causes a wide array of abnormal climates and extreme events, including severe droughts and floods, which have a major impact on humanity. With the development of artificial neural network techniques, various attempts are being made to predict ENSO more accurately. However, there are still limitations in accurately predicting ENSO beyond 6 months, especially for abnormal years with less frequent but greater impact, such as strong El Niño or La Niña, mainly due to insufficient and imbalanced training data. Here, we propose a new weighted loss function to improve ENSO prediction for abnormal years, in which the original (vanilla) loss function is multiplied by the weight function that relatively reduces the weight of high-frequency normal events. The new method applied to recurrent neural networks shows significant improvement in ENSO predictions for all lead times from 1 month to 12 months compared to using the vanilla loss function; in particular, the longer the prediction lead time, the greater the prediction improvement. This method can be applied to a variety of other extreme weather and climate events of low frequency but high impact.\n1 Introduction # ENSO refers to the irregular periodic air–sea interaction in the tropical eastern Pacific Ocean, which is manifested in the El Niño–La Niña transition in the ocean and the Southern Oscillation in the atmosphere (Kug et al., 2009; Yeh et al., 2009; Timmermann et al., 2018; Wang, 2018). ENSO is one of the most important climatic phenomena on Earth (Wang, 1995; An and Jin, 2004; Cal et al., 2019), often causing global temperature and precipitation extremes, affecting Earth’s ecosystems and human societies. Skillful ENSO prediction offers decision makers an opportunity to take into account the anticipated climate anomalies, potentially reducing the societal and economic impacts by this natural phenomenon and assisting in the management of natural resources and the environment (Han and Kug, 2012; Tang et al., 2018).\nOver the past decades, the research about ENSO prediction has attracted broad attention and has resulted in significant improvements (Barnston et al., 2012; Han and Kug, 2012). In particularly, various attempts have been made to improve ENSO predictions using artificial neural network techniques (Dijkstra et al., 2019), such as convolutional neural networks (CNNs) (Ham et al., 2019), temporal convolutional networks (TCNs) (Yan et al., 2020), graph neural networks (GNNs) (Cachay et al., 2021), recurrent neural networks (RNNs) (Hassanibesheli et al., 2022), long short-term memory (LSTM) (Xiaoqun et al., 2020), and convolutional long short-term memory (ConvLSTM) (Gupta et al., 2019). General artificial neural network models use large volumes of input and output data to find nonlinear relationships that minimize errors in which there is no distinction between normal and abnormal events (Elman, 1990; Gers et al., 2000; Graves, 2012; Cho et al., 2014; Zhang et al., 2019; Yang et al., 2018; He et al., 2019). Thus, these models tend to be optimized for data pertaining to high-occurrence normal events and do not sufficiently consider infrequent abnormal events ultimately reducing the prediction accuracy for abnormal years. Figure 1 shows an example of the difference in ENSO prediction performance depending on where the focus is placed.\nFigure 1 Two examples of the difference in the 6-month lead prediction performance of Niño3.4 (A) The case of high overall average predictive performance but relatively low prediction of abnormal years (y \u0026gt;0.5). (B) Low overall average predictive performance but relatively high prediction of abnormal years. Individual RMSEs and correlation skills (r), including the results for abnormal years only (y \u0026gt; 0.5, in parentheses), are shown at the top. From a disaster prevention perspective, it is more important to better predict extreme ENSO years (i.e., El Niño and La Niña) than normal years (|Niño3.4|\u0026lt; 0.5°C). However, few studies have investigated models’ predictive performance focusing on abnormal ENSO years (|Niño3.4| \u0026gt; 0.5°C). Here, we propose a novel weighted loss function to improve prediction accuracy for abnormal years, which are much less frequent than normal years, but more important from the perspective of disasters. The method was applied to the LSTM neural network to predict Niño3.4. Predictive performance was evaluated for forecast lead times ranging from 1 to 12 months and compared with the results obtained using vanilla loss functions.\n2 Methods # 2.1 Neural network model # This study used the LSTM neural network, which has the advantage of long-term memory. LSTMs are specifically designed to address the challenge of long-term dependencies in time series data. They are capable of remembering information over extended periods, which is crucial for capturing patterns over extended time frames (Goodfellow et al., 2016). Traditional Recurrent Neural Networks (RNNs) often face the vanishing gradient problem, where gradients become too small for effective learning in deep networks. LSTMs mitigate this problem through their gating mechanisms. LSTMs are also highly flexible and can model the complexities of various time series data (Goodfellow et al., 2016), making them suitable for the diverse and dynamic nature of climate data.\nFor model training, time series of nine indices (Table 1) were used, in which the input data are monthly mean values for the 12 months prior to the base time, while the output data are the Niño3.4 index for 1–12 months after the base time. The model hyperparameters are shown in Table 2. In this study, Adam’s method (Kingma and Ba, 2014) was used as an optimizer, but L1 regularization, known as Lasso (Tibshirani, 1996), and L2 regularization, known as ridge regression (Hoerl and Kennard, 1970), which can prevent overfitting, were not used. This is because the use of L1 and L2 regularization can complicate the evaluation of the contribution of the loss function when interpreting the results, as the regularization effects can be mixed in (Hastie et al., 2004; Bishop, 2006). Instead of using regularization, we designed the neural network structure as simple as possible (i.e., the hidden size was set to 12) to prevent overfitting because the more complex the network configuration, the more it depends on the training data.\nTable 1 Indices used as input/output data for ENSO predictions. IndexDescription and related referencesAvailable data periodIn/Out Niño3.4Niño 3.4 Index (5°N-5°S,170°W-120°W)1870.01 ~ 2022.07ONiño3Niño 3 Index (5°-5°S,150°W-90°W) (Barnston et al., 1997)1870.01 ~ 2022.07INiño4Niño 4 Index (5°N-5°S,160°E-150°W)1870.01 ~ 2022.07INiño1 + 2Niño 1 \u0026amp; 2 Index (0°N-10°S,90°W-80vW)1870.01 ~ 2022.07ISOISouthern Oscillation Index (Shi and Su, 2020)1866.01 ~ 2022.04INAONorth Atlantic Oscillation (Zhang et al., 2019)1821.07 ~ 2021.07IDMIDipole Mode Index (HadlSST1.1 version) (Ashok et al., 2003)1870.01 ~ 2022.01IPDOPacific Decadal Oscillation (Newman et al., 2016)1900.01 ~ 2022.07INPNorth Pacific Index (Soulard et al., 2019)1899.01 ~ 2022.02ISunspotMonthly sunspot counts (Zhai et al., 2017)1749.01 ~ 2022.02I Table 2 Hyperparameters of the neural network model used in this study. Neural NetworkOptimizerHidden\nsizeNumber of layersLearning rateNumber of epochsMinibatch sizeDropout LSTMAdam1221e-340001210% To improve prediction performance for abnormal ENSO years and ensure reliability, the optimized neural network model itself should first be constructed. Since the performance of artificial neural networks greatly depends on the quality and quantity of training data, the greatest possible volume of high-quality data was obtained, although it is more difficult to obtain sufficient data for training compared to other fields. If a model is designed as a complex network and has numerous parameters in the absence of sufficient data, performance improvement is limited due to overfitting. In general, when overfitting occurs, performance tends to be good during training but decreases significantly during testing. In this study, a neural network model optimized for small volumes of learning data was designed to prevent overfitting. RMSE and Pearson’s r were used to evaluate and compare the results of normal and abnormal years.\nFor the period January 1900–July 2021, for which nine input variables overlapped, the training period spanned 105 years, from January 1900 to December 2004, and the validation period covered about 18 years, from January 2005 to July 2022 (Figure 2). The last 12 years of data were reserved for the verification of the 12-month lead time prediction. Artificial intelligence models are generally developed by dividing the data into training, validation, and testing periods to increase the reliability of the results. However, the lack of long-term data for ENSO predictions makes it difficult to obtain data for testing. Moreover, since the main purpose of this study was to examine whether the prediction of abnormal ENSO years could be improved using a weighted loss function, we focused only examining the effect of the weighted loss function on training and validation. The validation period was set to about 18 years after 2005 to ensure that more than two strong El Niño and La Niña events were included. All input and output data were normalized using maximum and minimum normalization (MinMaxScaler) to make the dimension and size equal. Specifically, to reflect the characteristics of Niño3.4, the input data were normalized between 0 and 1, and the output was normalized between −1 and 1.\nFigure 2 Niño3.4 time series used for training and validation. The extra data were used for the verification of the 12-month prediction. Overfitting is a fundamental problem of machine learning that interferes with predictability. In general, overfitting occurs due to the presence of noise, the complexity of the neural network, and especially the limited size of training data. Ying (2019) suggested various methods, such as early stopping, network reduction, data expansion (data augmentation), and regularization, to prevent overfitting. Other methods have also been proposed, including dropout and regularization, small batches for training, low learning rates, simpler models (smaller capacity), and transfer learning (Koidan, 2019). This study used dropout, small batches, low learning rates, simpler models, and early stopping to prevent overfitting. The early stopping point was chosen to be when the validation loss was at its lowest value after the training loss had dropped sufficiently. Figure 3 is an example of training loss and validation loss plotted together. The relatively large total number of epochs was chosen so that many experiments would have enough time to learn about finding the best epoch for each experiment. For this experiment, we compared the prediction results at about 1100 epochs, the best value of validation.\nFigure 3 The loss curves of training and validation for the weighted L1 experiment (blue: training, red: validation). We analyzed the results at around 1100 epochs, which is the best value for validation after the training loss had dropped sufficiently. 2.2 Data # Monthly climate indices were downloaded from the official National Oceanic and Atmospheric Administration website (https://psl.noaa.gov/gcos_wgsp/Timeseries/; accessed Oct. 2022). Niño3.4 is the anomaly obtained by subtracting the climatological mean of the period 1981–2010 from the regional SST mean of 5°N–5°S and 170°W–120°W (Figure 4). Niño3.4 was used as a predictand, whereas the other indices (Table 1) were used as predictors. To find potential predictors, various climate indices that are related to ENSO, were selected based on literature research and during model training, the correlations between Niño3.4 and all potential ENSO-related indices were investigated. Finally, nine optimized predictors were then selected as input variables. Table 1 provides references explaining the relevance of each index to ENSO. Since the collected data pertained to different periods, only data for the period in which all variables overlapped were used.\nFigure 4 Definitions of various Niño indices. 2.3 Experimental methods and evaluation # Time series forecasting can be divided into univariate and multivariate forecasting, as well as one-step and multistep forecasting. Univariate forecasting uses one variable X for predictand Y, whereas multivariate forecasting uses multiple variables (Xs). One-step (many-to-one) forecasting predicts a simple future point (Yt+n), while multistep (many-to-many) forecasting predicts multiple points (Yt+1, Yt+2,…, Yt+n) simultaneously. This study used multivariate forecasting with nine input variables, allowing the use of as many observations and variables as possible. Multistep forecasting makes it possible to simultaneously make predictions for 1 to 12 months and maintain consistency between the prediction results for each lead time. One-step forecasting, which independently predicts each month, may perform well for specific individual forecasts but may not perform consistently across the entire lead times (Makridakis et al., 1998; Armstrong, 2001; Box et al., 2015). Figure 5 shows the schematic diagram illustrating input/output data and period for training and validation.\nFigure 5 Schematic diagram illustrating input/output data and period for training and validation. To consistently compare the experimental results, a random seed value in the neural network was fixed and tested (Madhyastha and Jain, 2019). We also did not use ensemble method because it combines multiple models to improve prediction performance, making interpretation more difficult compared to a single model (Hastie et al., 2004). This was a necessary step in the twin experiments conducted to investigate the performance of the loss functions. Table 2 shows the experimental configuration for the investigation of the Niño3.4 predictive performance using various weighted loss functions. A total of 4,000 epochs were trained for each experiment, and periodic verification was performed to select the best predictive performance. The procedure was similar to an early stopping method.\nTo evaluate the model’s accuracy and error simultaneously, the RMSE and Pearson’s r were compared between the predicted values and the Niño3.4 index. Both the RMSE and Pearson’s r had values between 0 and 1. The closer Pearson’s r is to 1, the higher the accuracy, and the closer the RMSE is to 0, the smaller the error. To investigate the performance of only abnormal years, the result of |Niño3.4| \u0026gt; 0.5°C was additionally presented.\n3 Results # 3.1 Design of weighted loss functions # In genal, three loss functions are used to calculate the loss of neural network models: L1 (mean absolute error; L(y, f(x))=∣y−f(x)∣L(y,\\,f(x)) = |y - f(x)|), L2 (mean squared error; L(y, f(x))=(y−f(x))2L(y,\\,f(x)) = (y - f(x))^{2}), and Huber (1964) (Lδ(y, f(x))=0.5(y−f(x))2L_{\\delta}(y,\\,f(x)) = 0.5(y - f(x))^{2} for ∣y−f(x)∣≤δ|y - f(x)| \\le \\delta and δ(∣y−f(x)∣−0.5δ), otherwise\\delta(|y - f(x)| - 0.5\\delta),\\ \\text{otherwise}) where LL is the loss function, yy is the predictand, f(x)f(x) is the predicted value, and δ is the boundary value separating quadratic and linear. L1 is less affected by outliers than the other two functions, and L2 is favorable for finding optimal values. Huber was developed to take advantage of L1 and L2 and compensate for their shortcomings based on the δ value and shows satisfactory learning ability in most neural networks because of its simplicity and good performance. In this study, these vanilla loss functions are multiplied by two (linear and quadratic) weight functions to weight loss value according to the level of the predictand. The right side of Figure 6 shows the two types of weight functions as an example—linear function (y) and quadratic function (y2), in which slopes of the functions are defined as 1, 5, and 10. This indicates that the weight increases linearly (or as a quadratic function) up to ±1.0, ± 0.2, and ±0.1, respectively. After that, the weight is fixed to 1 to be equal to the vanilla loss function. In this way, each loss value can be weighted according to the level of the predictand. This method can be expressed as follows:\nFigure 6 Schematic diagram explaining how to apply a weight function to a vanilla loss function. Here, linear (W1) and quadratic (W2) weight functions with slopes of 1, 5, and 10 are applied to the vanilla L1, L2, and Huber loss functions. The source code of the weighted loss function is provided in the Supplementary Information. Lω(y, f(x))=L(y, f(x))×W(y) L_{\\omega}(y,\\,f(x)) = L(y,\\,f(x)) \\times W(y) where W(y)W(y) are the weight functions and are expressed as follows:\nLinear (W1):\nW(y)={slope×y,for y≤1slope1,otherwise W(y) = \\begin{cases} \\text{slope}\\times y, \u0026amp; \\text{for } y \\le \\dfrac{1}{\\text{slope}} \\\\ 1, \u0026amp; \\text{otherwise} \\end{cases} Quadratic (W2):\nW(y)={(slope×y)2,for y≤1slope1,otherwise W(y) = \\begin{cases} (\\text{slope}\\times y)^{2}, \u0026amp; \\text{for } y \\le \\dfrac{1}{\\text{slope}} \\\\ 1, \u0026amp; \\text{otherwise} \\end{cases} Since the loss value is combined for all years and the model is trained to minimize this loss, reducing the weight of normal years using these equations allows for a greater focus on abnormal or extreme ENSO events. The adjusted weighting system ensures that the model does not underestimate significant abnormal events, improving prediction accuracy especially for extreme events. The optimal slope of the weighted functions was determined according to the distribution of the predictand (Niño3.4). In this study, six weighted functions, linear (W1) and quadratic (W2) functions with slopes of 1, 5, and 10, were tested based on the data distribution of Niño3.4 (Figure 7). For the period January 1900–July 2021, the training period spanned 105 years, from January 1900 to December 2004, and the validation period covered about 18 years, from January 2005 to July 2022.\nFigure 7 Histogram showing the distribution of Niño3.4 along with linear (W1) and quadratic (W2) weight functions with slopes of 1, 5, and 10. The bulk (81%) of the data were in the range of -1 to 1. 3.2 ENSO prediction results # A total of 18 experiments (Table 3) were performed by combining the six weight functions and the three vanilla loss functions (L1, L2, and Huber). Predictive performance was evaluated for lead times ranging from 1 to 12 months. In each case, the results obtained using the vanilla L1, L2, and Huber loss functions were compared to those obtained using the weight functions. The weight functions that performed best for the three loss functions are shown in Table 4.\nTable 3 Experimental configuration of the weighted loss functions to investigate Niño3.4 prediction performance. Weight\nLossLinear (W1)Quadratic (W2)1y5y10y(1y)2(5y)2(10y)2 L1 (MAE)1W1L15W1L110W1L11W2L15W2L110W2L1L2 (MSE)1W1L25W1L210W1L21W2L25W2L210W2L2Huber1W1Hb5W1Hb10W1Hb1W2Hb5W2Hb10W2Hb The first number of the code represents the slope). (Here, y is Niño3.4 (predictand), W1 \u0026amp; W2 are the type of weight function, and L1, L2, \u0026amp; Hb are the type of loss function.\nTable 4 Averaged all-season RMSE and correlation skills of Niño3.4 for all-lead forecast times for the validation period (2005–2022). Type of weight functionRMSErL1 (y\u0026gt;0.5)L2 (y\u0026gt;0.5)Huber (y\u0026gt;0.5)L1 (y\u0026gt;0.5)L2 (y\u0026gt;0.5)Huber (y\u0026gt;0.5) Vanilla0.645 (0.758)0.677 (0.756)0.703 (0.765)0.607 (0.703)0.618 (0.719)0.609 (0.719)1W10.673 (0.729)0.620 (0.682)0.617 (0.668)0.649 (0.746)0.686 (0.791)0.682 (0.793)1W20.741 (0.787)0.649 (0.671)0.660 (0.709)0.575 (0.694)0.697 (0.799)0.668 (0.763)5W10.649 (0.720)0.667 (0.750)0.676 (0.735)0.654 (0.747)0.627 (0.724)0.625 (0.727)5W20.625 (0.672)0.653 (0.726)0.637 (0.704)0.675 (0.796)0.640 (0.750)0.664 (0.777)10W10.652 (0.737)0.653 (0.756)0.669 (0.746)0.637 (0.740)0.643 (0.721)0.627 (0.715)10W20.582 (0.666)0.660 (0.728)0.690 (0.752)0.721 (0.805)0.644 (0.746)0.633 (0.725) Here, the results of vanilla L1, L2, and Huber loss functions are compared with those of using six weight functions consisting of linear (W1) and quadradic (W2) functions with three slopes (1, 5, and 10). The values in parentheses are results for abnormal years only (y \u0026gt; 0.5). Bold values represent the best results for the three loss functions for normal and abnormal years, respectively.\nFigure 8 shows a comparison of the Niño3.4 predictions for abnormal years (y\u0026gt;0.5°C) over lead times ranging from 1 to 12 months using the vanilla loss function and the six weighted loss functions. For L1, most of weighted functions outperformed vanilla function on average in abnormal years (Figures 8A, B; Table 4). In particular, the performance improvement was greater for longer lead predictions. For the L1 loss function, a quadratic weight function with a slope of 10 (10W2; purple line) performed best, followed by 5W2 (Table 4). For the L2 loss functions, all weight functions had lower errors and higher correlations than vanilla L2 (Figures 8C, D; Table 4). For L2, a quadratic weight function with a slope of 1 (1W2; dark yellow line) showed the best performance with a 10-20% improvement over vanilla L2 in the 6–12-month predictions of abnormal years. However, the performance improvement of the best (optimal) weighted loss function (i.e., 1W2) was smaller than that of L1. This is because vanilla L2 is known to have significantly better performance compared to L1 (also shown in our results; compare the black lines in Figures 8A–D), making further improvement by the weighted loss function difficult. For the Huber loss functions, the results were overall similar to L2, except that the best performing model was a linear weighted function with a slope of 1 (1W1, green line Figures 8E, F; Table 4). In particular, 1W1 showed the largest improvement over vanilla Huber functions in the 6–9-month lead predictions (Figures 8E, F). Analysis of extremely abnormal years with the Niño3.4 index anomalies above 1.0 °C (y\u0026gt;1.0) was also consistent with results from abnormal years with a threshold of 0.5°C (Figure 9). That is, the weighted loss function performs better than the vanilla loss function, and the best weighted loss functions for L1 and L2 were 10W2 and 1W2, respectively.\nFigure 8 Comparisons of the all-season RMSEs and correlation skills of Niño3.4 for abnormal years (y\u0026gt;0.5°C) as functions of forecast lead times. For L1 (A, B), L2 (C, D), and Huber (E, F), comparisons were made using vanilla and six weighted loss functions over the validation period (2005–2022) and the best results for each were shown as bold colored lines. Figure 9 Same as Figure 8 but for extremely abnormal years (y\u0026gt;1.0°C) for L1 (A, B), L2 (C, D), and Huber (E, F). ENSO predictive performance over six-month lead times is a widely used metric when evaluating models. Previous models have shown remarkable performance for up to 6-month lead times (e.g., Ham et al., 2019; Yan et al., 2020). In this study, the best model (10W2L1) for 6-month lead predictions had an RMSE of 0.61 and a correlation skill of 0.71 for all years, which is comparable to the performance of previous state-of-the-art studies (Figure 10). The high performance is mainly the result of a significant improvement (i.e., from 0.8 to 0.70 for RMSE and 0.71 to 0.79 for correlation skill) over the vanilla loss function in abnormal years. In particular, the use of the weighted loss function significantly improved the performance of strong El Niño in 2015–2016 and strong La Niña in 2007–2008 and 2010–2011. For the latest period, however, the performance was relatively poor (Figure 10). This could be due to changes in climate behavior or the evolution of factors influencing ENSO in recent years (Cai et al., 2023), and possibly because the model did not take these into account.\nFigure 10 6-month lead predictions for Niño3.4 using the vanilla L1 loss function (blue line) and an optimal weighted loss function (10W2L1, red line). The observed Niño3.4 is also shown (black line). Individual RMSEs and correlation skills for the validation period (2005–2022), including the results for abnormal years only (y \u0026gt; 0.5, in parentheses), are shown at the top. An additional time series from 2000 to 2004, the last part of the training period, is shown here to ensure that there is no overfitting. 4 Discussion # The optimal slope of the weight functions was determined depending on the combination of the distribution of the y data and the function used. Therefore, the selection of the slope also requires an optimization process similar to the tuning of hyperparameters. In this study, we conducted more experiments than those presented here, but only the results of three discrete slopes (1, 5, 10) are shown here. This is because we believe that the impact of using a weighted loss function in this study can be sufficiently explained through the three samples. The experimental results show that the smaller the slope, the smaller the error in most cases of abnormal years (Figure 11). This may be because the frequency of the y data generally decreases almost linearly or quadratic with y (Figure 7). A closer look reveals that slope 1 generally shows the best performance except quadratic-L1 (Figure 11). When the slope was further reduced to 0.5, the performance was similar to that of slope 1 (not shown). In the case of quadratic-L1, slope 5 or 10 showed the best performance. The distribution of the y data shows that the bulk (81%) of the data were in the range of −1 to 1 and the ranges of slopes 5 and 10 correspond to where the data is concentrated (Figure 7). In some cases, therefore, the greatest benefit can be achieved by reducing the weights only in this high frequency range. These results emphasize again that the optimal type of weight function and slope should be determined according to the data distribution.\nFigure 11 RMSEs and correlation skills of linear (A–D) and quadratic (E–H) weight function according to the slope. The performance of the weight function generally improves as the slope decreases, but the quadratic function for L1 performs best at slopes of 5 and 10. The results for abnormal years only (y \u0026gt; 0.5) are shown in (B, D, F, H). In this study, only simple linear and quadratic functions were tested for sensitivity, but it is possible to develop and use various weighting functions (including known probability distribution functions) that better express the distribution of data. The current method is similar to data augmentation and batch sampling in that it solves the data imbalance problem, but it has the advantage of using all the data without artificially reducing or increasing the sample and using various weighting functions to focus on and optimize the desired target.\nObservational data necessary for the development of ENSO prediction models using artificial neural networks are insufficient. To solve this problem, Ham et al. (2019) devised a transfer learning method using the results of a three-dimensional global circulation model. Initially, we also constructed an LSTM model using additional long-term climate model data, and tested their performance. However, the uses of these data did not significantly improve the model’s predictive accuracy. This may be because the numerical model itself has limitations in realistically simulating ENSO and this can negatively affect learning ability in current LSTM experiments. Subsurface ocean information, known as an early origin of ENSO variations, was also not used as a potential predictor in this study, as there is no long-term subsurface data with high accuracy, and the LSTM’s test results did not show a significant improvement in performance. In fact, we have tested subsurface variables extracted from the three-dimensional ocean data of Simple Ocean Data Assimilation (SODA), such as mixed layer depth and thermocline slope, as potential predictors, but did not achieve any significant performance improvement. This may be because that subsurface ocean data has lower accuracy and shorter duration compared to SST data, due to the difficulty in obtaining observational data, which may have contributed to the lack of performance improvement.\nWhile many recent studies have focused on improving ENSO forecasting at long lead times (\u0026gt;1.5 years 18 months) (Luo et al., 2008; Doi et al., 2016; Ham et al., 2019; Patil et al., 2023), this study aims to improve accuracy and reliability for extreme or abnormal ENSO events using a new weighted loss function. We believe that the analysis results presented here, based on a lead time of up to one year, can support the claims and conclusions of this study. However, it is meaningful to investigate whether the current method accurately predicts extreme/abnormal ENSO events even with such long lead times. This remains a task for future research.\nState-of-the-art ENSO prediction models can be developed using better methods and data, but it is important that this study can contribute to further improving the performance of these artificial intelligence models. In particular, the method based on the weighted loss functions presented herein can be effectively used when the observational data for training are insufficient and when the number of extreme events is small. Given that most extreme events are infrequent, the proposed method can be used to predict not only extreme ENSO but also various other extreme weather and climate events such as tropical cyclone, floods, drought, and heat waves.\nThis study does not explain which predictors contribute the most to the improvement in accuracy for the abnormal years since AI models are composed of non-linear relationships between predictors, which makes them difficult to interpret. In the case of CNN, heatmaps are often used as a basis for judging the results, but even this does not explain the contribution of the predictors. The field of Explainable AI (XAI) and Causal Inference is developing to study which factors a model has chosen as important and this is an area we are interested in exploring in future research.\nData availability statement # The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.\nAuthor contributions # DK: Writing – original draft, Conceptualization, Data curation, Investigation, Methodology. IM: Writing – review \u0026amp; editing, Funding acquisition, Investigation, Supervision. CL: Writing – review \u0026amp; editing, Methodology, Validation. SW: Writing – review \u0026amp; editing, Funding acquisition, Validation.\nFunding # The author(s) declare financial support was received for the research, authorship, and/or publication of this article. This work was supported by Institute of Information \u0026amp; Communications Technology Planning \u0026amp; Evaluation (IITP) grant funded by the Korea government (MSIT) [RS-2022-00155915, Artificial Intelligence Convergence Innovation Human Resources Development (Inha University)], Korea Institute of Marine Science \u0026amp; Technology Promotion (KIMST) funded by the Ministry of Oceans and Fisheries, Korea (20220051 Gyeonggi-Incheon SeaGrant), and the National Research Foundation of Korea (NRF) grant funded by the Korea government(MSIT) (No. RS-2022-00144325).\nConflict of interest # The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.\nThe author(s) declared that they were an editorial board member of Frontiers, at the time of submission. This had no impact on the peer review process and the final decision.\nPublisher’s note # All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.\nReferences # An S.-I., Jin F.-F. (2004). Nonlinearity and asymmetry of ENSO. J. Clim. 17, 2399–2412. doi: 10.1175/1520-0442(2004)017\u0026lt;2399:NAAOE\u0026gt;2.0.CO;2 Armstrong J. S. (2001). Principles of forecasting: A handbook for researchers and practitioners (Norwell: Kluwer Academic Publishers), 849. Ashok K., Guan Z., Yamagata T. (2003). A look at the relationship between the ENSO and the Indian Ocean Dipole. J. Meteor. Soc Japan 81, 41–56. doi: 10.2151/jmsj.81.41 Barnston A. G., Chelliah M., Goldenberg S. B. (1997). Documentation of a highly ENSO-related SST region in the equatorial Pacific. Atmos.-Ocean 35, 367–383. doi: 10.1080/07055900.1997.9649597 Barnston A. G., Tippett M. K., L'Heureux M. L., Li S., Dewitt D. G. (2012). Skill of real-time seasonal ENSO model predictions during 2002–11: Is our capability increasing? Bull. Am. Meterol. Soc 93 (5), 631–651. doi: 10.1175/BAMS-D-11-00111.1 Bishop C. M. (2006). Pattern recognition and machine learning, Edition: View all formats and editions (New York: Springer). Box G. E., Jenkins G. M., Reinsel G. C., Ljung G. M. (2015). Time series analysis: Forecasting and control (Hoboken: John Wiley \u0026amp; Sons). Cachay S. R., Erickson E., Bucker A. F. C., Pokropek E., Potosnak W., Osei S. (2021). Graph neural networks for improved El Niño forecasting. Tackling climate change with machine learning workshop at NeurIPS 2020 (Neural Information Processing Systems Foundation). Available at: https://arxiv.org/pdf/2012.01598.pdf. Cai W., Ng B., Geng T. (2023). Anthropogenic impacts on twentieth-century ENSO variability changes. Nat. Rev. Earth Environ. 4, 1–12. doi: 10.1038/s43017-023-00427-8 Cal W., Wu L., Lengaigne M., Li T., Mcgregor S., Kug. J. S. (2019). Pantropical climate interactions. Science 363 (6430), eaav4236. doi: 10.1126/SCIENCE.AAV4236 Cho K., van Merrienboer B., Gulcehre C., Bahdanau D., Bougares F., Schwenk H. (2014). Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv. doi: 10.3115/v1/D14-1179 Dijkstra H. A., Petersik P., Garcia E. H., Lopez C. (2019). The application of machine learning techniques to improve El Niño prediction skill. Front. Phys. 7. doi: 10.3389/fphy.2019.00153 Doi T., Behera S. K., Yamagata T. (2016). Improved seasonal prediction using the S INTEX-F2 coupled model. J. Adv. Model. Earth Syst. 8 (4), 1847–1867. doi: 10.1002/2016MS000744 Elman J. L. (1990). Finding structure in time. Cogn. Sci. 14, 179–211. doi: 10.1016/0364-0213(90)90002-E Gers F. A., Schmidhuber J., Cummins F. (2000). Learning to forget: Continual prediction with LSTM. Neural Comput. 12, 2451–2471. doi: 10.1162/089976600300015015 Goodfellow I., Bengio Y., Courville A. (2016). Deep Learning (Adaptive Computation and Machine Learning series) (Cambridge, MA: The MIT Pres). Graves A. (2012). Long short-term memory. Neural Comput. 9, 37–45. doi: 10.1007/978-3-642-24797-2_4 Gupta M., Kodamana H., Sandeep S. (2020). Prediction of ENSO beyond spring predictability barrier using deep convolutional LSTM networks. IEEE Geosci. Remote. Sens. Lett. 19, 1–5. doi: 10.1109/LGRS.2020.3032353 Ham Y. G., Kim J. H., Luo J. J. (2019). Deep learning for multi-year ENSO forecasts. Nature 573, 568–1572. doi: 10.1038/s41586-019-1559-7 Han Y. G., Kug J. S. (2012). How well do current climate models simulate two types of El Niño? Clim. Dyn. 39, 383–398. doi: 10.1093/nsr/nwy105 Hassanibesheli F., Kurths J., Boers N. (2022). Long-term ENSO prediction with echo-state networks. Env. Res. 1 (1), 011002. doi: 10.1088/2752-5295/ac7f4c Hastie T., Tibshirani R., Friedman J. H. (2004). The elements of statistical learning: data mining, inference, and prediction. Math. Intelligencer 27 (2), 83–85. doi: 10.1007/BF02985802 He D., Lin P., Liu H., Ding L., Jiang J. (2019). DLENSO: A deep learning ENSO forecasting model. PRICAI 2019: Trends Artif. Intell. 12–23. doi: 10.1007/978-3-030-29911-8_2 Hoerl A. E., Kennard R. W. (1970). Ridge regression: Biased estimation for nonorthogonal problems. Technometrics 12, 55–67. doi: 10.1080/00401706.1970.10488634 Huber P. J. (1964). Robust estimation of a location parameter. Ann. Math. Stat. 35, 73–101. doi: 10.1214/aoms/1177703732 Kingma D. P., Ba J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980. Koidan K. (2019). 7 effective ways to deal with a small dataset (Edwards, Colorado 81632, USA: HackerNoon). Available at: https://hackernoon.com/7-effective-ways-to-deal-with-a-small-dataset-2gyl407s. Kug J. S., Jin. F. F., An. S. I. (2009). Two types of El Niño events: Cold tongue El Niño and warm pool El Niño. J. Climate 22, 1499–1515. doi: 10.1175/2008JCLI2624.1 Luo J. J., Masson S., Behera S. K., Yamagata T. (2008). Extended ENSO predictions using a fully coupled ocean–atmosphere model. J. Climate 21 (1), 84–93. doi: 10.1175/2007JCLI1412.1 Madhyastha P., Jain R. (2019). On model stability as a function of random seed. arXiv preprint arXiv:1909.10447. Makridakis S., Wheelwright S. C., Hyndman R. J. (1998). Forecasting: methods and applications. J. Am. Stat. Assoc. 94, (445). doi: 10.2307/2287014 Newman M., Alexander M. A., Ault T. R., Cobb K. M., Deser C., Di Lorenzo E.. (2016). The pacific decadal oscillation, revisited. J. Climate 29, 4399–4427. doi: 10.1175/JCLI-D-15-0508.1 Patil K. R., Jayanthi V. R., Behera S. (2023). Deep learning for skillful long-lead ENSO forecasts. Front. Clim. 4, 1058677. doi: 10.3389/fclim.2022.1058677 Shi Y., Su J. (2020). A new equatorial oscillation index for better describing ENSO and westerly wind bursts. J. Meteorol. Res. 34, 1025–1037. doi: 10.1007/s13351-020-9195-6 Soulard N., Lin H., Yu B. (2019). The changing relationship between ENSO and its extratropical response patterns. Sci. Rep. 9, 6507. doi: 10.1038/s41598-019-42922-3 Tang Y., Zhang R. H., Liu T., Duan W., Yang D., Zheng F. (2018). Progress in ENSO prediction and predictability study. Natl. Sci. Rev. 5, 826–839. doi: 10.1126/SCIENCE.AAV4236 Tibshirani R. (1996). Regression shrinkage and selection via the lasso. J. R. Stat. Society: Ser. B (Methodological) 58, 267–288. doi: 10.1111/j.2517-6161.1996.tb02080.x Timmermann A., An S. I., Kug J. S., Jin F. F., Cai W., Capotondi A. (2018). El niño–southern oscillation complexity. Nature 559, 535–545. doi: 10.1038/S41586-018-0252-6 Wang B. (1995). Interdecadal changes in El Niño onset in the last four decades. J. Clim. 8, 267–285. doi: 10.1175/1520-0442(1995)008\u0026lt;0267:icieno\u0026gt;2.0.co;2 Wang C. (2018). A review of ENSO theories. Natl. Sci. Rev. 5 (6), 813–825. doi: 10.1093/nsr/nwy104 Xiaoqun C., Yanan G., Bainian L., Kecheng P., Guangjie W., Mei G. (2020). ENSO prediction based on Long Short-Term Memory (LSTM). IOP Conf. Ser.: Mater. Sci. Eng. 799, (1), 012035. doi: 10.1088/1757-899X/799/1/012035 Yan J., Mu L., Wang L., Ranjan R., Zomaya A. Y. (2020). Temporal convolutional networks for the advance prediction of ENSO. Sci. Rep. 10 (1), 8055. doi: 10.1038/s41598-020-65070-5 Yang Y., Dong J., Sun X., Lima E., Mu Q., Wang X. (2018). A CFCC-LSTM model for sea surface temperature prediction. IEEE Geosci. Remote. Sens. 15, 207–211. doi: 10.1109/lgrs.2017.2780843 Yeh S. W., Kug J. S., Dewitte B., Kwon M. H., Kirtman B. P., Jin F. F. (2009). El Niño in a changing climate. Nature 461, 511–514. doi: 10.1038/nature08316 Ying X. (2019). An overview of overfitting and its solutions. J. Phys.: Conf. Ser. 1168, 022022. doi: 10.1016/j.newast.2016.09.004 Zhang W., Mei X., Geng X., Turner A. G., Jin F.-F. (2019). A nonstationary ENSO–NAO relationship due to AMO modulation. J. Climate 32 (1), 33–43. doi: 10.1109/lgrs.2017.2733548 ","date":"2024년 2월 15일","externalUrl":null,"permalink":"/2024/02/ENSO_WeightedLoss/","section":"글","summary":"가중 손실함수로 엘니뇨·라니냐 극값의 예측 성능을 끌어올린 연구. 2024년 Frontiers in Marine Science에 실린 논문 전문입니다.","title":"Improved prediction of extreme ENSO events using an artificial neural network with weighted loss functions","type":"posts"},{"content":"","date":"2024년 2월 15일","externalUrl":null,"permalink":"/tags/LSTM/","section":"태그","summary":"","title":"LSTM","type":"tags"},{"content":"","date":"2024년 2월 15일","externalUrl":null,"permalink":"/tags/RNN/","section":"태그","summary":"","title":"RNN","type":"tags"},{"content":"","date":"2024년 2월 15일","externalUrl":null,"permalink":"/tags/SST/","section":"태그","summary":"","title":"SST","type":"tags"},{"content":"","date":"2024년 2월 15일","externalUrl":null,"permalink":"/tags/%EC%97%98%EB%8B%88%EB%87%A8/","section":"태그","summary":"","title":"엘니뇨","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Anaconda/","section":"태그","summary":"","title":"Anaconda","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Jupyter/","section":"태그","summary":"","title":"Jupyter","type":"tags"},{"content":" 0. Jupyter 환경의 PyTorch 개발 환경 갖추기 순서 # Jupyter 환경의 PyTorch 개발 환경을 갖추기 위해서는 다음과 같은 순서로 관련 프로그램과 패키지를 설치하여야 합니다.\nAnaconda 설치 PyTorch 설치 Jupyter 실행 1. Anaconda 설치 # Anaconda 는 수학과 과학 분야에서 사용되는 여러 패키지들을 묶어 놓은 파이썬 배포판으로써, 유명한 Numpy, SciPy, Pandas, Matplotlib 등을 비롯한 많은 패키지들을 기본적으로 포함하고 있습니다. Anaconda는 특히 최근에 데이타 사이언스와 머신 러닝 분야에서 파이썬을 사용하기 위해 기본적으로 설치하는 배포판이 되었습니다.\nAnaconda는 수백가지의 패키지를 기본적으로 제공하고 있으므로 용량이 크기 때문에 사용자 컴퓨터의 자원이 많지 않거나 꼭 필요한 패키지만을 원하는 사용자는 Miniconda 를 설치하면 됩니다. Miniconda는 기본적으로 제공되는 패키지가 적은 만큼 사용자가 필요한 패키지를 수동으로 설치해주어야 하는 경우가 많지만, 필요한 패키지만을 깔끔하게 관리하고자 하는 사용자들이 많이 사용하고 있습니다.\n1-1. Anaconda 다운로드 # Anaconda를 설치하기 위해서는 https://www.anaconda.com/ 웹사이트에서 자신의 OS에 맞는 프로그램을 다운받아서 설치하면 됩니다. 여기에서는 Windows 10을 기준으로 설명하지만, 처음 설치과정 외에는 리눅스나 맥킨토시 환경에서도 동일하게 적용할 수 있습니다.\nAnaconda 다운로드 페이지(https://www.anaconda.com/distribution/) 에서 OS에 맞는 설치 파일을 내려받습니다. 현재 시점(2019년 12월)에서 anaconda의 최신 버전은 2019.10 입니다.\n파이썬은 2.x 버전과 3.x 버전으로 두 가지가 있는데, 파이썬 2.x 버전의 개발이 이미 중단됐으므로 3.x 버전을 추천합니다.\n1-2. Anaconda 설치 # 내려받은 설치 파일(Anaconda3-2019.10-Windows-x86_64.exe)을 실행합니다. 첫 설치화면에서 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭하면 [License Agreement] 화면이 나오는데 \u0026ldquo;I Agree\u0026quot;를 클릭합니다.\n[Select Installation Type] 화면은 설치 유형을 선택하는 화면입니다. Anaconda 측에서는 현재 사용자 영역에만 설치하는 옵션을 추천한다. 모든 사용자 옵션은 관리자 권한을 가진 사용자의 경우에 선택하면 됩니다. 여기에서는 [Just Me (recommended)]를 선택하고 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭합니다. [Choose Install Location] 화면은 설치할 경로를 지정하는 화면입니다. \u0026ldquo;Destination Folder\u0026quot;에 설치할 디렉토리 위치를 지정하고 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭합니다.\n[Advanced Installation Options] 화면은 추가 설치 옵션을 선택하는 화면입니다. Anaconda의 설치 위치를 환경변수에 추가하고, 기본 파이썬 인터프리터로 현재 설치한 환경을 사용하게 설정해줍니다. 다른 버전의 Anaconda 가 설치되어 있지 않다면 \u0026ldquo;Add Anaconda to my PATH environment variable\u0026quot;와 \u0026ldquo;Register Anaconda as my default Python 3.7\u0026quot;를 모두 체크하고 \u0026ldquo;Install\u0026quot;을 클릭합니다.\n[Installing] 화면에서 진행과정을 보여 주면서 Anaconda의 전체 패키지가 설치됩니다.\n1-3. Python 가상 환경 (Vitural Environment) 설치 # Anaconda 설치가 끝나면 바탕화면의 윈도우 아이콘을 눌러 프로그램 목록에서 [Anaconda Prompt]를 클릭합니다. 지금부터는 윈도우나 맥킨토시, 리눅스에서도 동일한 과정으로 수행할 수 있습니다.\n여기에서는 Python 가상 환경 설치, 각종 라이브러리 설치, 스크립트 실행 등의 작업을 진행할 것입니다. Python의 가상 환경이란, 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. Python은 버전에 따라서 사용되는 패키지들의 호환성이 다르고, 패키지 간에 충돌할 가능성이 있으므로 Anaconda에서는 사용자 환경마다 독립적인 가상 환경을 만들어서 독립성을 보장하는 도구를 제공합니다. 또한 가상환경 상에서는 사용자가 필요한 패키지만을 설치하여 불필요한 패키지가 설치되는 것을 막을 수 있습니다. 이러한 이유들로 프로젝트 별로 각각의 가상환경을 만들고 이 환경에서 개발하는 것이 바람직합니다.\n여기에서는 \u0026ldquo;pytorch\u0026quot;라는 이름으로 가상환경을 만들도록 하겠습니다.\nconda create -n pytorch python=3.7 \u0026ldquo;-n\u0026rdquo; 옵션의 다음에 적는 이름은 만들어줄 가상환경의 이름이고, \u0026ldquo;python=3.7\u0026rdquo; 은 python의 버전을 3.7로 사용하겠다는 의미 입니다. 현재는 python이 v3.8 까지 제공되고 있지만, PyTorch가 python v3.7 까지 지원하고 있으므로 이에 맞게 설치해 줍니다. 이를 실행 시키면 \u0026ldquo;Proceed ([y]/n)?\u0026rdquo; 이라는 메세지가 나오는데 \u0026ldquo;y\u0026quot;를 입력하고 엔터를 칩니다.\n필요한 패키지가 자동으로 설치되고 나면, 다음의 명령으로 새로 만든 가상환경을 활성화 또는 비활성화 할 수 있습니다.\n(base) path\u0026gt; conda activate pytorch # 가상환경 활성화 (pytorch) path\u0026gt; conda deactivate # 가상환경 비활성화 (base) path\u0026gt; \u0026ldquo;conda activate pytorch\u0026rdquo; 는 만들어준 \u0026ldquo;pytorch\u0026rdquo; 라는 이름의 가상환경을 활성화 하는 명령이고,\u0026ldquo;conda deactivate\u0026rdquo; 는 활성화된 가상환경을 나와서 원래대로 돌아가는 명령입니다. 명령을 수행할 때마다 프롬프트의 맨 앞의 내용이 바뀌는 것을 알 수 있습니다.\n2. PyTorch 및 관련 라이브러리들 설치 # Anaconda 에서는 각 종 패키지와 라이브더리들을 손 쉽게 설치할 수 있는 도구를 제공합니다. PyTorch도 다음의 명령으로 간단하게 설치할 수 있습니다. 사용자의 시스템에 장착되어 있는 NVIDIA의 그래픽 카드 사용 유무에 따라서 알맞은 명령을 실행하여 설치합니다.\n(base) path\u0026gt; conda activate pytorch # NVIDIA의 그래픽 카드가 장착된 시스템에서 GPU를 사용하고자 할 경우: (pytorch) path\u0026gt; conda install pytorch torchvision cudatoolkit=10.1 -c pytorch # CPU 만을 사용하고자 할 경우: (pytorch) path\u0026gt; conda install pytorch torchvision cpuonly -c pytorch 이 외에 python에서 자주 사용되는 jupyter와 pandas, matplotlib 등의 라이브러리를 다음과 같이 설치합니다.\n(pytorch) path\u0026gt; conda install jupyter pandas matplotlib 이제 모든 필요한 패키지와 라이브러리들을 설치하였습니다. 시스템에 현재 구성되어 있는 가상환경의 종류와 가상환경 내에서 설치된 패키지의 종류와 버전들의 정보는 다음과 같은 명령으로 알아 볼 수 있습니다.\n(pytorch) path\u0026gt; conda info --envs # 설치된 가상환경에 대한 정보 # conda environments: # base D:\\Users\\user\\Anaconda3 pytorch * D:\\Users\\user\\Anaconda3/envs/pytorch (pytorch) path\u0026gt; conda list # 현재 가상환경에서 설치된 패키지들의 이름과 버전 정보 # packages in environment at D:\\Users\\user\\Anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py37_0 alabaster 0.7.12 py37_0 anaconda 2019.10 py37_0 3. Jupyter (IPython) Notebook 또는 Lab 실행 # Jupyter Notebook 또는 Lab 은 오픈소스 웹 애플리케이션으로 라이브 코드, 등식, 시각화와 설명을 위한 텍스트 등을 포함한 문서를 만들고 공유하도록 할 수 있습니다. 주로 데이터 클리닝과 변형, 수치 시뮬레이션, 통계 모델링, 머신 러닝 등에 사용할 수 있습니다.\nPython, R, Julia, Scala 등 데이터 과학 분야에서 인기있는 40종의 다양한 프로그래밍 언어를 지원합니다. 또한, 이메일과 드롭박스, 깃허브 등으로 공유할 수 있습니다. 가장 큰 장점은 실시간으로 인터렉티브하게 데이터를 조작하고 시각화 할 수 있도록 해 준다는 것입니다.\n\u0026ldquo;ipython notebook\u0026quot;의 영감을 얻어 개발된 \u0026ldquo;jupyter notebook\u0026quot;은 어디에서나 웹 브라우저만 있으면 개발을 할 수 있다는 매력적인 기능 때문에 개발자들에게 선풍적인 인기를 얻었습니다. 그러나 하나의 창에 하나의 프로그램만을 편집해야 하는 불편함이 있어서 차세대 웹기반 사용자 인터페이스를 사용한 \u0026ldquo;jupyter lab\u0026quot;이 추가적으로 개발되었습니다. 현재는 두 가지 버전이 모두 사용가능하며 사용자의 취향에 따라서 선택하여 사용하면 됩니다.\n3-1. Jupyter Nobetbook 또는 Lab 시작 # Anaconda Prompt 터미널에서 다음과 같이 실행하면 서버가 실행되면서 자동적으로 explorer가 실행됩니다.\n(base) path\u0026gt; conda activate pytorch (pytorch) path\u0026gt; jupyter notebook # jupyter notebook 으로 실행할 경우 (pytorch) path\u0026gt; jupyter lab # jupyter lab 으로 실행할 경우 3-2. Web browser based Python IDE # Jupyter notebook 또는 lab 의 web browser 화면에서 사용자가 편집할 수 있는 각각의 박스를 \u0026ldquo;cell\u0026rdquo; 이라고 합니다. \u0026ldquo;cell\u0026quot;은 세 가지 종류로 바꾸어 편집할 수 있습니다. \u0026ldquo;Code\u0026quot;와 \u0026ldquo;Markdown\u0026rdquo;, \u0026ldquo;Raw\u0026quot;가 그것 입니다.\n[Cell: Code] # 파이썬의 코드를 각 셀에 원하는 만큼을 작성하여 실행하면 메모리 상에 반영된다. 위, 아래 위치가 달라도 실행한 스텝 번호(In [번호])가 높을 수록 최근에 수행된 영역이다. [Cell: Markdown] # Markdown language 기반으로 Document 작성 (Wikipedia 처럼 작성 방식) 코드에 대한 설명이 가능하다 수학수식 표현도 가능(Mathjax) [Cell: Raw] # 형식이 없는 Plain text 형식으로 보이는 셀 입니다. 실행하지 않는 코드나 메모 용도로 사용합니다.\n3-3. 운영체제와 함께 사용하기 # Jupyter에서 운영체제의 자체 명령어를 실행하기 위해서는 !(명령어) 로 수행합니다. - END - ------ ","date":"2019년 12월 6일","externalUrl":null,"permalink":"/2019/12/AJP/","section":"글","summary":"Windows 10 기준으로 Anaconda를 설치하고 conda 가상환경에 PyTorch를 올린 뒤 Jupyter Notebook/Lab에서 쓰기까지, 설치 화면을 하나씩 따라가며 정리했습니다.","title":"Jupyter 환경의 PyTorch 개발 환경 갖추기","type":"posts"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Python/","section":"태그","summary":"","title":"Python","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/PyTorch/","section":"태그","summary":"","title":"PyTorch","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD/","section":"태그","summary":"","title":"개발환경","type":"tags"},{"content":"","date":"2019년 7월 25일","externalUrl":null,"permalink":"/tags/ROMS/","section":"태그","summary":"","title":"ROMS","type":"tags"},{"content":"작성 : 김동훈 (https://dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 7월 25일\n소 개 # ROMS (Regional Ocean Modeling System) 모델(모형)의 설치 및 실험에 관한 상세한 내용은 \u0026ldquo;Installing and Running ROMS for First Time Users\u0026ldquo;에 잘 설명되어 있으므로 영어에 친숙하신 분이라면 here를 참고하세요.\n여기에서는 태풍 솔릭(Soulik) 시기의 해양순환 모의를 설명하며, 최근 버전인 ROMS-3.6 r964 (2019년 5월 1일 배포)을 사용합니다. 절의 제목 앞에 숫자가 붙어 있는 부분은 사용자가 직접 실행해야 하는 부분을 의미합니다.\n소프트웨어 요구사항 # Intel Fortran Compiler MPI library (openmpi 또는 mpich, mvapich 등) python 관련 : pyroms 모듈, jupyter notebook 또는 lab 0. 환경 설정 # /usr/bin/env bash # Bash Shell 사용 export ROMS=${HOME}/models/ROMS export ROMSsrc=${ROMS}/Sources/ROMS export PROJ=${ROMS}/Projects/Soulik 1. 모델 및 자료 가져오기 # ROMS를 사용하려면 ROMS 포털에 등록되어 있어야 합니다. 등록은 여기 또는 여기에서 하면 됩니다. 등록한 아이디와 암호는 모델을 svn으로 가져올때 사용됩니다.\nmkdir -p $ROMSsrc; cd $ROMSsrc # 모델 소스코드만 받는 경우 svn checkout --username ??? https://www.myroms.org/svn/src/trunk trunk # Test cases와 plot 관련 자료 svn checkout --username ??? https://www.myroms.org/svn/src/test test svn checkout --username ??? https://www.myroms.org/svn/src/matlab matlab svn checkout --username ??? https://www.myroms.org/svn/src/plot plot # ROMS 관련 모든 자료를 한번에 받을 경우 (약 2.3G): # 참고) ROMS/tags 디렉토리에 이전 버전(v2.0 ~ v3.6)들이 포함되어 있음 svn checkout --username ??? https://www.myroms.org/svn/src . # revision number 확인 svn info 2. 프로젝트 디렉토리 만들고 컴파일 하기 # mkdir -p $PROJ; cd $PROJ # build 스크립트는 bash와 sh의 두가지를 지원하고 있으며 여기에서는 bash 기준으로 설명합니다. cp ${ROMSsrc}/trunk/ROMS/Bin/build_roms.bash . # build_roms.bash의 사용자 정의 vi ./build_roms.bash \u0026gt; export ROMS_APPLICATION=SOULIK # 모두 대문자로 쓰며, 컴파일 시 소문자인 soulik.h 를 참조하게 됨 \u0026gt; export MY_ROOT_DIR=${ROMSsrc} \u0026gt; export USE_NETCDF4=on # netcdf의 버전에 따라 선택하세요. Note) USE_NETCDF4 를 on 하였을 경우는 컴파일 시에 NETCDF 라이브러리의 위치를 묻는 \u0026ldquo;nf-config\u0026rdquo; 명령을 사용하게 되는데, 이 명령이 없거나 실행 시에 문제가 있다면 ${ROMSsrc}/trunk/Compilers/Linux-ifort.mk (시스템에 따라 파일이 다를 수 있음) 을 편집하여 \u0026ldquo;nf-config\u0026rdquo; 를 \u0026ldquo;nc-config\u0026rdquo; 로 바꾸어 줍니다. 또한, nc-config 의 명령이 제대로 실행되는지도 확인해야 합니다.참고로, nf-config 는 Fortran 용 실행화일이며, nc-config 는 C 용 실행화일입니다. 보통은 Fortran과 C 용 라이브러리가 동일 디렉토리에 설치되므로 아무거나 써도 상관이 없습니다.\n2-1. Header 파일 만들기 # ROMS의 컴파일 시 사용할 header 파일을 다음과 같이 작성합니다. 파일 이름은 $PROJ 디렉토리에 사용한 이름과 같은 soulik.h 로 저장합니다. 파일 이름은 모두 소문자이어야 합니다.각 옵션들에 대한 자세한 설명은 ROMS의 Wiki 페이지에 있는 여기 를 참고하세요.\ncd $PROJ cat \u0026gt; soulik.h \u0026lt;\u0026lt; END /* ** Options for NWP Test. ** Application flag: NWP */ /* Physics + numerics */ #define UV_ADV /* 이류항 계산 */ #define UV_QDRAG /* Quadratic bottom friction */ #define UV_COR /* 코리올리 힘 계산 */ #define UV_VIS2 /* Harmonic horizontal mixing */ #define TS_U3HADVECTION /* 3rd-order upstream horiz. advection */ #define TS_DIF2 /* Harmonic horizontal mixing for tracers */ #define SALINITY /* 염분 계산 */ #define DJ_GRADPS /* Splines density Jacobian (Shchepetkin, 2000) */ #define MIX_S_UV /* mixing along constant S-surfaces */ #define MIX_GEO_TS /* mixing along geopotential (constant Z) surfaces */ #define SOLVE3D /* 3D 원시방정식 계산 */ #define CURVGRID /* Curvilinear coordinates grid */ #define SPLINES_VDIFF #define SPLINES_VVISC #define NONLIN_EOS /* 비선형 상태방정식 사용 */ /*#define WET_DRY*/ /* Wetting and Drying 옵션 */ /* Grid and Initial */ #define MASKING /* land/sea masking */ /* Forcing */ /*#define BULK_FLUXES*/ /* Bulk fluxes 계산 */ #define ATM_PRESS /* 해수면 위에 대기압 적용 */ #define ANA_BTFLUX /* analytical bottom temperature flux 사용 */ #define ANA_BSFLUX /* analytical bottom salinity flux 사용 */ #define ANA_BPFLUX /* analytical bottom passive tracers fluxes 사용 */ #define LONGWAVE_OUT /* outgoing longwave radiation */ #define EMINUSP /* E-P 계산 */ #define SOLAR_SOURCE /*solar radiation source term*/ #undef QCORRECTION /*net heat flux correction */ #undef SCORRECTION /*freshwater flux correction*/ #undef SRELAXATION /*salinity relaxation as a freshwater flux*/ #undef DIURNAL_SRFLUX /*mdulate input shortwave with diurnal cycle*/ /* Turbulence closure */ #define GLS_MIXING /* Generic Length-Scale mixing */ #undef MY25_MIXING /* Mellor/Yamada Level-2.5 closure */ #undef LMD_MIXING /* Large et al. (1994) K-profile vertical parameterization */ /*#define LIMIT_VDIFF*/ /*#define LIMIT_VVISC*/ #if defined GLS_MIXING || defined MY25_MIXING # define KANTHA_CLAYSON /* Kantha and Clayson stability function */ # define N2S2_HORAVG /* Horizontal smoothing of buoyancy/shear */ # define RI_SPLINES # define CRAIG_BANNER /* Craig and Banner wave breaking surface flux */ # define CHARNOK /* Charnok surface roughness from wind stress */ #endif #ifdef LMD_MIXING # define LMD_RIMIX /* Add diffusivity due to shear instability */ # define LMD_CONVEC /* Add convective mixing due to shear instability */ # undef LMD_DDMIX /* Add double-diffusive mixing */ # define LMD_SKPP /* Surface boundary layer KPP mixing */ # undef LMD_BKPP /* Bottom boundary layer KPP mixing */ # define LMD_NONLOCAL /* Nonlocal transport */ #endif #undef SSH_TIDES /* Imposing tidal elevation */ #undef UV_TIDES /* Imposing tidal currents */ #undef RAMP_TIDES /* Ramping (over one day) tidal forcing */ /* Output */ #define AVERAGES /* 시간 평균된 결과로 저장 */ #define AVERAGES_FLUXES /* 시간 평균된 flux로 저장 */ #undef DIAGNOSTICS_UV /* Writing out momentum diagnostics */ #undef DIAGNOSTICS_TS /* Writing out tracer diagnostics */ END 2-2. 컴파일 하기 # 프로젝트의 header 파일을 만들었으면, ROMS 모델을 컴파일 합니다. 다음과 같이 컴파일하고 표출되는 메세지에 error 가 없는지 유심히 살펴 봅니다. 최종적으로 \u0026ldquo;romsM\u0026rdquo; 이 제대로 생성되었는지 확인합니다.\ncd $PROJ \\rm -f Build_roms romsM ./build_roms.bash # 1개의 processor를 사용하여 컴파일 ./build_roms.bash -j 8 # 시스템이 멀티코아를 가지고 있을 경우 최대 8개의 코아를 사용하여 컴파일 ls -l romsM 3. 격자 및 입력자료 만들기 # 사용자의 연구 상황에 따라서 격자 및 입력자료를 만드는 방법이 다를 수 있으며, 여기에서는 pyroms를 이용하는 방법을 설명하도록 하겠습니다.\n여기에서는 제시된 스크립트들은 pyroms의 예제들을 참조하여 저자가 직접 만든 것입니다.\n3-1. pyroms 및 jupyter 설치하기 # pyroms는 설치하기가 쉽지않은 모듈이지만, 성공적으로 설치할 경우 편리성이 매우 높은 도구입니다.설치과정 대한 자세한 설명은 지면이 길어지므로 pyroms 설치하기 를 참고하여 설치하시기 바랍니다.\npyroms을 사용하여 격자 및 입력자료를 만드는 과정은 복잡하고 이해하기 힘들기 때문에 설명을 쉽게 하기 위하여 jupyter notebook 또는 jupyter lab을 사용하도록 하였습니다. Jupyter와 관련된 설치 및 사용법은 여기의 설명 범위에서 벗어나므로 인터넷 검색을 통하면 설치 및 사용법 익히시기 바랍니다. 또한, anaconda를 설치하였다면 jupyter가 이미 설치되어 있어서 바로 사용할 수 있습니다.\njupyter 가 아닌 python 으로 직접 실행하실 경우는 다음의 명령으로 *.ipynb 화일을 *.py 로 변환하여 사용하시기 바랍니다.\nconda install jupyter # jupyter가 설치되어 있지 않은 경우 jupyter jupyter nbconvert --to script myFile.ipynb # myFile.py 가 생성됨. 3-2. Grid 만들기 # ROMS의 영역 격자를 만드는 방법은 모델의 역사 만큼이나 다양하게 존재합니다. 대표적으로 다음과 같은 것들이 있으니 참고하세요.\nGridgen: http:code.google.com/p/gridgen-c, or https://github.com/sakov/gridgen-c pyroms, pygridgen, octant Easygrid: https://www.myroms.org/wiki/easygrid Gridbuilder: http://austides.com/downloads COAWST Tools: wrf2roms_mw.m, create_roms_xygrid.m … \u0026hellip; Jupyter notebook의 형식으로 작성된 다음의 링크를 따라서 격자를 만듭니다. makeGrid4Soulik 생성된 \u0026ldquo;Soulik_grd_v2.nc\u0026rdquo; 를 $PROJ 디렉토리에 복사합니다. 3-3. 초기장(I.C.) 만들기 # HYCOM 자료 중에서 격자 크기에 맞는 영역의 해당 시작 날짜의 자료를 가져 옵니다. getHYCOM4SoulikIC HYCOM 자료를 ROMS의 초기장으로 만듭니다. makeIC4Soulik 생성된 \u0026ldquo;ROMS4Soulik_ic_2018-08-21T00:00:00Z.nc4\u0026quot;를 $PROJ 디렉토리에 복사합니다. 3-4. 측면경계장(L.B.C.) 만들기 # HYCOM 자료 중에서 격자의 측면에 맞는 영역에 대해 모델의 전체 계산 시간에 해당하는 시계열 자료를 가져 옵니다. getHYCOM4SoulikLBCs HYCOM 격자와 ROMS 격자의 내삽 가중치 비율을 계산합니다. makeRemapWeights HYCOM 자료를 ROMS의 측면경계장으로 만듭니다. makeLBC4Soulik 생성된 \u0026ldquo;ROMS4Soulik_bc.nc\u0026quot;를 $PROJ 디렉토리에 복사합니다. 3-5. 대기경계장(S.B.C, 표층외력) 만들기 # GFS 로 부터 모델의 전체 계산 시간에 해당하는 전지구 시계열 자료를 가져 옵니다. getGFS4SoulikSBC\nGFS 자료를 ROMS의 대기경계장으로 만듭니다. makeSBC4Soulik\n생성된 \u0026ldquo;roms_gfs_0p25_sbc_Soulik.nc\u0026quot;를 $PROJ 디렉토리에 복사합니다.\n4. ROMS 모의하기 # 4-1. input file 만들기 # ocean.in 파일은 ${ROMSsrc}/test 디렉토리에 있는 각 종 예제 자료들을 참조하여 만든 후 다음 내용을 수정합니다.예제 자료들에 있는 ocean.in 파일의 후반 부에는 각 변수들에 대한 자세한 사항이 있으니 참고하세요.\ncd $PROJ cat ocean.in \u0026lt;\u0026lt; END ... ... TITLE = Typhoon Soulik MyAppCPP = SOULIK VARNAME = ${ROMSsrc}/trunk/ROMS/External/varinfo.dat Lm == 430 ! Number of I-direction INTERIOR RHO-points Mm == 320 ! Number of J-direction INTERIOR RHO-points N == 30 ! Number of vertical levels NtileI == 6 ! I-direction 병렬 분할 갯수 NtileJ == 6 ! J-direction 병렬 분할 갯수 NTIMES == 1440 ! 총 모의 계산 스텝. ex) NTIMES * DT = 총 모의 시간 DT == 240.0d0 ! BaroClinic(3D) 계산 시간 간격 (단위: seconds) NDTFAST == 20 ! BaroClinic/BaroTropic time steps GRDNAME == ./Soulik_grd_v2.nc ! 격자 파일 ININAME == ./ROMS4Soulik_ic_2018-08-21T00:00:00Z.nc4 ! 초기장 파일 BRYNAME == ./ROMS4Soulik_bc.nc ! 측면 경계장 파일 NFFILES == 1 ! 표층 경계장 파일의 갯수 FRCNAME == ./roms_gfs_0p25_sbc_Soulik.nc ! 표층 경계장 파일 ... ... END 4-2. 모의하기 # 모델의 실행은 사용자의 시스템에 따라 다를 수 있으므로, 여기에서는 1개 노드에 36개 이상의 코어를 가지고 있는 시스템을 가정하여 다음과 같이 실행합니다.\nmpirun -np 36 ./romsM ocean.in \u0026gt;\u0026amp; out.log 결과 파일로 ocean_avg.nc, ocean_his_????.nc, ocean_rst.nc 등이 제대로 생성되었는지 확인합니다.\n5. ROMS 결과 분석하기 # ROMS의 결과 분석은 다양한 방법이 있으며 과학적 지식이 필요한 부분이므로 추후에 다른 지면을 사용하여 설명하도록 하겠습니다.\n=== END ===\n","date":"2019년 7월 25일","externalUrl":null,"permalink":"/2019/07/ROMS_Tutor/","section":"글","summary":"ROMS 3.6으로 태풍 솔릭 시기의 해양순환을 모의합니다. 환경 설정과 컴파일부터 실행까지 그대로 따라 할 수 있게 정리했습니다.","title":"ROMS 로 태풍 솔릭(Soulik) 시기의 해양순환 모의해 보기","type":"posts"},{"content":"","date":"2019년 7월 25일","externalUrl":null,"permalink":"/tags/Soulik/","section":"태그","summary":"","title":"Soulik","type":"tags"},{"content":"","date":"2019년 7월 24일","externalUrl":null,"permalink":"/tags/pyroms/","section":"태그","summary":"","title":"pyroms","type":"tags"},{"content":"작성 : 김동훈 (https://dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 7월 24일\nROMS의 영역 격자를 만드는 방법은 모델의 역사 만큼이나 다양하게 존재합니다.대표적으로 다음과 같은 것들이 있으니 참고하세요.\nGridgen: http:code.google.com/p/gridgen-c, or https://github.com/sakov/gridgen-c pyroms, pygridgen, octant Easygrid: https://www.myroms.org/wiki/easygrid Gridbuilder: http://austides.com/downloads COAWST Tools: wrf2roms_mw.m, create_roms_xygrid.m … \u0026hellip; pyroms는 ROMS 지역해양순환모델의 격자를 생성 할 뿐만 아니라 각종 초기치(I.C.)와 경계치(B.C.) 등의 자료를 만드는데 유용하게 사용할 수 있는 도구이며, 성공적으로 설치할 경우는 편리성이 매우 높은 도구입니다. 그러나 설치 시에 따르는 여러가지 문제점으로 인하여 일반 사용자가 쉽게 접근하지 못하는 경우가 많았습니다.여기에서는 그동안의 노하우를 토대로 가장 쉽게 설치하는 방법을 설명하고자 합니다.\npyroms 설치하기 # pyroms는 Python의 설치 프로그램(pip) 또는 Anaconda의 conda에서 지원하지 않는 모듈이므로 직접 설치해야 합니다. 사용자 환경에 따라서 설치 시에 여러가지 문제점이 발생할 수 있으므로 여기에서는 Anaconda의 축소버전인 Miniconda를 사용하여 설치하도록 하겠습니다.\n1. Miniconda 설치 및 ROMS 환경 구축 # # https://docs.conda.io/en/latest/miniconda.html 에서 사용자 환경에 맞는 최신 버전을 가져 오세요. # 저자는 \u0026#34;64-bit(bash installer) for Linux\u0026#34; 버전을 사용하였습니다. # 다음의 명령으로 설치를 시작합니다. bash ./Miniconda3-latest-Linux-x86_64.sh # 설치과정 중 물어보는 \u0026#34;설치할 디렉토리\u0026#34;는 사용자의 적절한 디렉토리를 지정합니다. # 여기에서는 ${HOME}/Local/miniconda3 에 설치하였습니다. # 설치의 마지막 단계에서 묻는 \u0026#34;conda 환경을 구성하겠냐\u0026#34;는 질문에는 \u0026#34;yes\u0026#34;를 선택하여 # ~/.bashrc 에 환경설정이 자동으로 추가되도록 하세요. # 사용자가 사용하는 Shell이 bash가 아닌 경우에는 ~/.bashrc의 내용을 참조하여 적절하게 반영하여야 합니다. # 제대로 설치되었다면 \u0026#34;conda\u0026#34; 명령이 실행 가능해야 합니다. # conda에 가장 많이 사용되는 다운로드 채널을 추가합니다. conda config --add channels conda-forge # ROMS를 위한 독립 환경을 생성합니다. \u0026#34;-n\u0026#34; 옵션 다음에 붙는 이름은 사용자가 임의로 정하세요. conda create -n pyroms python=3 ipython numpy scipy netCDF4 conda activate pyroms conda install matplotlib=2.2.4 basemap basemap-data-hires esmf nco pygrib # Note) pyroms 내부에서 \u0026#34;from matplotlib.mlab import dist_point_to_segment\u0026#34;을 사용하는데, # matplotlib 의 최신 버전인 v3.x에서는 지원하지 않기때문에 v2.x의 최신 버전을 설치한다. conda install pyproj=1.9.6 # Note) pyroms 내부에서 pyproj의 espg 자료를 사용하는데, pyproj의 최신 버전인 2.x 에는 espg 자료가 없으므로 # pyrpoj=1.9.6 버전을 설치한다. # \u0026#34;conda activate pyroms\u0026#34;를 수행하여 사용자 프롬프트 맨 앞에 \u0026#34;(pyroms)\u0026#34;가 추가되었다면 성공적으로 설치한 것입니다. 2. 삭제: natgrid 설치 (필요하지 않음) # pyroms 는 NCAR의 natgrid (a natural neighbor gridding package) 라이브러리를 사용한다고 합니다. conda의 ROMS 환경 내에서 다음과 같이 설치합니다.\n(pyroms) cd ~/Local # git으로 최신 버전의 소스코드를 받아 옵니다. (pyroms) git clone https://github.com/matplotlib/natgrid.git (pyroms) cd natgrid (pyroms) CC=gcc python3 setup.py build # warning 메세지가 많이 나올 수 있으나 error 메세지가 나오지 않으면 됨 (pyroms) python3 setup.py install # 라이브러리를 python3의 site-packages에 설치 # (pyroms) python3 test.py # 라이브러리 테스트 3. pyroms 설치 # (pyroms) export DESTDIR=${HOME}/Local/miniconda3/envs/pyroms (pyroms) cd ~/Local # git으로 최신 버전의 소스코드를 받아 옵니다. # 상세한 설명은 https://github.com/ESMG/pyroms 를 방문하세요. (pyroms) git clone https://github.com/ESMG/pyroms.git # pyroms의 설치를 시작합니다. ---------------------------------------------------- # pyroms는 여러가지 패키지를 함께 사용하기 때문에 설치를 성공하는데 많은 어려움이 있을 수 있습니다. # 저자도 수십번의 과정을 거쳐서 성공한 결과를 요약하여 공유하는 것이니 하나 하나 잘 따라하셔야 합니다. (pyroms) cd pyroms/pyroms_toolbox (pyroms) python ../pyinstall.py ${DESTDIR} (pyroms) cd ../bathy_smoother (pyroms) python ../pyinstall.py ${DESTDIR} (pyroms) cd ../pyroms (pyroms) vi install_pyroms.sh \u0026gt; DESTDIR=${DESTDIR} \u0026gt; PYROMS_PATH=$DESTDIR/lib/python3.7/site-packages/pyroms #Note) python 버전 확인 \u0026gt; #python setup.py build --fcompiler=gnu95; #주석 처리 \u0026gt; #python setup.py install --prefix=$DESTDIR #주석 처리 \u0026gt; python ../pyinstall.py $DESTDIR #위에 주석 처리한 곳 바로 아래에 추가 (pyroms) vi external/scrip/source/makefile \u0026gt; NC_CONFIG = nc-config #nf-config 를 nc-config 로 수정 \u0026gt; LIB = $(shell $(NC_CONFIG) --libs) #--flibs 를 --libs 로 수정 (pyroms) ./install_pyroms.sh (pyroms) export PYROMS_GRIDID_FILE=${HOME}/Local/pyroms/pyroms/pyroms/gridid.txt (pyroms) cd $DESTDIR/lib/python3.7/site-packages #Note) python 버전에 따라 path가 다름 (pyroms) cp pyroms_toolbox/*.so . ; cp bathy_smoother/*.so . ; cp pyroms/*.so . 4. pyroms 확인 # # pyproj 라이브러리를 설치하고 conda 환경을 재설정해 주어야 # $PROJ_LIB 가 자동으로 설정되므로 다음 명령을 실행한다. (pyroms) conda deactivate (base) conda activate pyroms (pyroms) echo $PROJ_LIB # 환경 설정이 제대로 되었으면, 다음과 같이 pyroms 모듈을 import 하여 문제가 없는지 확인한다. (pyroms) ipython In [1]: import pyroms In [2]: import pyroms_toolbox In [3]: from bathy_smoother import * ","date":"2019년 7월 24일","externalUrl":null,"permalink":"/2019/07/pyroms/","section":"글","summary":"ROMS의 격자와 초기치·경계치를 만드는 pyroms는 설치가 까다롭기로 유명합니다. Miniconda를 이용해 가장 덜 막히는 설치 경로를 정리했습니다.","title":"pyroms 설치하기 (ROMS 해양순환모델의 자료 준비 도구)","type":"posts"},{"content":"","date":"2019년 6월 12일","externalUrl":null,"permalink":"/tags/TensorFlow/","section":"태그","summary":"","title":"TensorFlow","type":"tags"},{"content":"작성 : 김동훈 (https://dhkim.info, 인하대학교)2019년 6월 12일\n소 개 # \u0026ldquo;인공신경망 딥러닝(Deep Learning)을 이용한 엘니뇨 예측성 연구\u0026ldquo;를 2017년에 한국해양학회와 한국기상학회에 발표하면서 개발한 N3nino 모델의 사용법을 설명합니다.\n연구 결과의 자세한 내용은 제 홈페이지의 여기 를 참고하시기 바랍니다. 이 모델이 개발된 후 2018년에 좀 더 완성된 모델의 결과를 학회에 발표하였으나 홈페이지에는 아직 게재하지 못하였으므로 한국해양학회와 한국기상학회의 학술발표 홈페이지에서 찾아보시면 됩니다.\nN3nino 의 간단한 사용법은 다음 명령으로 알 수 있습니다.\ncd n3nino.3ar/model ./rnnN3N.py --help 모델의 실제 사용 방법은 \u0026ldquo;N3nino/run.sh\u0026quot;를 참조하면 되며, 각 인자들에 대한 자세한 설명은 다음과 같습니다.\ncd model for lead in 1 2 3 4 5 6 7 8 # 1개월 후 부터 8개월 후까지 학습한 후 예측합니다. do ./rnnN3N.py --verbose --plot --efcast=\u0026#34;201706\u0026#34; --source=\u0026#34;sst,t20m\u0026#34; --leads=\u0026#34;[${lead},]\u0026#34; --cell=\u0026#34;GRU\u0026#34; --num_steps=12 --num_layers=2 --num_hidden=100 --num_loop=900 done #----------- 인자에 대한 설명 ----------------------------------------------------------------- (생략) --model ; RNN과 CNN을 선택할 수 있습니다. default=RNN (생략) --code ; 모델의 종류. default=nino34 --leads= (생략) --sfcast ; 예측 시작 년월. default=201401 --efcast=\u0026#34;201706\u0026#34; ; 예측 끝 년월. default=today (생략) --strain ; 학습 시작 년월. default=198001 (생략) --etrain ; 학습 끝 년월. default=201312 --num_loop=900 ; 학습 epochs의 수. default=900 --source=\u0026#34;sst,t20m\u0026#34; ; 학습자료 변수들 (all, best, sst, msl, t20m). default=best --cell=\u0026#34;GRU\u0026#34; ; deep learning cell (BasicRNN,BasicLSTM,LSTM,phLSTM,GRU). default=GRU (생략) --optimizer ; 최적화 함수. default=Adam --num_hidden=504 ; hidden cell의 갯수. default=100 --num_layers=2 ; hidden layer의 갯수. default=2 --num_steps=12 ; 단위 학습 자료의 길이 (단위: 월). default=12 (생략) --learning_rate ; 학습 learning rate. default=0.001 (생략) --keep_prob ; overfitting을 방지하기 위한 dropout. default=1.0 (no dropout) (생략) --forget_bias ; the forget bias. default=0.0 (생략) --init ; 학습 초기화. 이전 학습 자료를 사용하지 않음. default=False --train ; 모델의 학습 실행 및 학습 내용 저장. 인자로 주어지면 True 임. default=False --save ; save 디렉토리에 결과 저장. 인자로 주어지면 True 임. default=False (생략) --restore_date ; 기존 학습 내용을 읽어와서 심화 학습할 경우의 날짜 (생략) --savedir ; 결과 저장 폴더. default=\u0026#39;../save\u0026#39; (생략) --workdir ; 작업 폴더. default=\u0026#39;../work\u0026#39; (생략) --datadir ; 학습자료 폴더. default=\u0026#39;./data\u0026#39; --plot ; 결과를 바로 그려 볼 때 (생략) --disploy_step ; 결과 표시 간격. default=50 (생략) --verbose ; 출력 메세지를 상세하게 표시할때 학습과 예측 과정 중에 나오는 메세지의 한 예는 다음과 같습니다.\n학습 후에 예측된 결과들은 \u0026ldquo;N3nino/work\u0026rdquo; 를 보시면 됩니다.다음은 예측된 결과들 중의 일부를 보여 줍니다.\nnino3.4 지역의 1개월 후 예측 (검정실선: 관측, 파란실선: 예측)\nlearning cost value\n","date":"2019년 6월 12일","externalUrl":null,"permalink":"/2019/06/N3nino/","section":"글","summary":"2017년 학회에 발표한 GRU 기반 엘니뇨 예측 모델 N3nino를 직접 돌려 보는 방법. 명령행 인자와 run.sh 사용법을 설명합니다.","title":"인공지능 딥러닝을 이용한 엘니뇨 예측 시스템 \"N3nino\" 의 사용법","type":"posts"},{"content":"","date":"2019년 4월 30일","externalUrl":null,"permalink":"/tags/HDF5/","section":"태그","summary":"","title":"HDF5","type":"tags"},{"content":"","date":"2019년 4월 30일","externalUrl":null,"permalink":"/tags/NetCDF/","section":"태그","summary":"","title":"NetCDF","type":"tags"},{"content":" 소 개 # NetCDF 라이브러리는 해양·대기 분야에서 격자 자료를 주고받는 사실상의 표준으로, 자료와 함께 변수명·단위·차원 같은 메타데이터를 한 파일에 담습니다. v4 부터는 HDF5 를 저장 계층으로 쓰기 때문에 압축과 그룹 기능을 사용할 수 있는데, 그래서 설치할 때도 zlib 과 HDF5 를 먼저 갖추어야 합니다. 아래 순서가 그것입니다.\n여기에서는 Intel Compiler를 사용하여 사용자 홈의 local 디렉토리에 설치하는 것으로 가정하고 설명하도록 하겠습니다.\n1. Zlib 설치 # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/old/zlib-1.2.5.tar.gz export ZLIB=${HOME}/local/intel ./configure --prefix=$ZLIB make check \u0026amp;\u0026amp; make install 2. Hdf5 설치 # #wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.6/src/hdf5-1.8.6.tar.gz wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/old/hdf5-1.8.6.tar.gz export HDF5=${HOME}/local/intel/hdf5-1.8.6 export CC=icc export CXX=icc export FC=ifort export FCFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; export F77=ifort export FFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; ./configure --prefix=$HDF5 --enable-fortran --enable-hl --with-zlib=$ZLIB make check \u0026amp;\u0026amp; make install NetCDF4 설치 # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4.1.3.tar.gz export NETCDF=${HOME}/local/intel/netcdf-4.1.3 export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH export CC=icc export CXX=icc export FC=ifort export FCFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; export F77=ifort export FFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; export CPPFLAGS=\u0026#34;-I$ZLIB/include -I$HDF5/include\u0026#34; export LDFLAGS=\u0026#34;-L$ZLIB/lib -L$HDF5/lib\u0026#34; export LIBS=\u0026#34;-lz -lhdf5_hl -lhdf5\u0026#34; ./configure --prefix=$NETCDF --enable-netcdf4 #--disable-dap make check \u0026amp;\u0026amp; make install (cd $NETCDF/bin; ln -s nc-config nf-config) ","date":"2019년 4월 30일","externalUrl":null,"permalink":"/2019/04/NetCDF4/","section":"글","summary":"Intel 컴파일러로 zlib, HDF5, NetCDF4를 사용자 홈 디렉토리에 차례로 빌드해 설치하는 과정.","title":"NetCDF v4 설치하기","type":"posts"},{"content":"","date":"2019년 4월 30일","externalUrl":null,"permalink":"/tags/%EC%9E%90%EB%A3%8C%ED%98%95%EC%8B%9D/","section":"태그","summary":"","title":"자료형식","type":"tags"},{"content":"","date":"2019년 4월 29일","externalUrl":null,"permalink":"/tags/WRF/","section":"태그","summary":"","title":"WRF","type":"tags"},{"content":"작성 : 김동훈 (https://dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 4월 29일\nWRF (Weather Research and Forecasting) 모델(모형)의 설치 및 실험에 관한 상세한 내용은 온라인 튜포리얼에 잘 설명되어 있으므로 영어에 친숙하신 분이라면 here를 참고하세요.\n여기에서는 태풍 솔릭(Soulik)을 대상으로 설명하며, 최신 버전인 WRF V4.1 (2019년 4월 12일 배포)을 사용합니다. 절의 제목 앞에 숫자가 붙어 있는 부분은 사용자가 직접 실행해야 하는 부분을 의미합니다.\n소 개 # WRF 모델(모형)은 주요 역학 구현에 따라 두 가지로 모델이 나뉘어 집니다. NCEP에서 개발한 Non-hydrostatic Mesoscale Model (NMM)과 NCAR에서 개발한 Advanced Research WRF (ARW)가 있습니다. 여기에서는 일반적으로 연구에 많이 사용하고 있는 WRF-ARW를 대상으로 설명합니다.\nWRF-ARW 모델은 압축성이며 비정수압(옵션으로 정수압을 지원함) 모델 입니다. V4.0 부터 기본 연직 좌표계는 mass-based hybrid sigma-pressure vertical coordinate 를 사용합니다. 참고로, V4.0 이전에는 mass-based terrain-following hydrostatic pressure coordinate)를 사용하였습니다. 수평 좌표계는 Arakawa C-grid 를 사용합니다.\nWRF-ARW 모델은 다음과 같이 4종류의 실행가능한 파일이 있습니다.\nideal.exe 및 real.exe : 초기화 프로그램 wrf.exe : 모델의 실제 적분 ndown.exe : one-way nesting에 사용 tc.exe : 태풍이나 허리케인 같은 열대성 저기압의 추가 또는 제거에 필요한 TC Bogusing에 사용 소프트웨어 요구사항 # 사용하는 소프트웨어에 따라 다양한 상황에 처할 수 있고 설명이 복잡해 지므로, 다음과 같은 소프트웨어를 사용한다고 가정하고 설명을 진행합니다.\nFortran 90 또는 95 : Intel Fortran Compiler v18.0 Perl : 5.16.x (권장: 5.04 이상) MPI : openmpi 2.x or 3.x 또는 mvapich2 OpenMP : Intel Fortran Compiler에 포함되어 있는 것을 사용. 참고) 여기 실험에서는 사용하지 않음. netCDF : v4.x Grib2, Jasper, libPNG, Zlib 등 Shell : bash 기준으로 설명함 실험 진행과정 # 이상 실험의 경우: WRF 모델 적분 —\u0026gt; 후 처리 실제 사례 실험의 경우: WPS(전 처리) —\u0026gt; WRF 모델 적분 —\u0026gt; 후 처리 자료동화와 함께 실제 사례 실험의 경우: WPS(전 처리) —\u0026gt; WRFDA(자료동화) —\u0026gt; WRF 모델 적분 —\u0026gt; 후 처리 1. 모델 및 자료 가져오기 # WRF를 사용하기 위해서는 모델 소스코드와 전처리(WPS), 그리고 지형(geog)자료가 필요합니다. 자세한 설명은 여기 를 참조하세요.\n홈페이지에서는 모델과 전처리, 지형자료를 모두 독립적으로 제공하고 있으며, 이상 실험의 경우는 \u0026ldquo;WRF 모델\u0026quot;만 받으면 됩니다. 가져오는 방법은 ftp로 직접 받아오는 방법과 git을 사용하여 최신 버전을 받는 방법이 있습니다.\n선택 1) FTP로 직접 받는 방법 : (버전 V4.0, 2018년 6월 8일 배포)\nWRF 모델 :\ncd ~/models/WRF/V4.0 wget http://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz tar xvzf WRFV4.0.TAR.gz WPS 전처리 :\ncd ~/models/WRF/V4.0 wget http://www2.mmm.ucar.edu/wrf/src/WPSV4.0.TAR.gz tar xvzf WPSV4.0.TAR.gz 선택 2) Git을 사용하여 최신 버전을 받는 방법 : (현재 버전 V4.1, 2019년 4월 12일 배포)\nWRF 모델 :\ncd ~/models/WRF/V4.1 git clone https://github.com/wrf-model/WRF WPS 전처리 :\ncd ~/models/WRF/V4.1 git clone https://github.com/wrf-model/WPS 지형 자료는 FTP로 직접 받아서 풀어 줍니다.\nWPS Geography data :\n고해상도 자료 : 일반적인 용도\ncd ~/models/WRF/Data/geog wget http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz tar xvzf geog_high_res_mandatory.tar.gz 저해상도 자료 : 모델 테스트 또는 교육용\ncd ~/models/WRF/Data/geog wget http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz tar xvzf geog_low_res_mandatory.tar.gz WRF 모델 디렉토리 구조 설명 # WRF 소스코드에 대한 느낌을 알기 위해 아래 사항을 한번 훑어 보시기 바랍니다.\n모델 소스코드 디렉토리 dyn_en/ : ARW 모델의 역학부분 dyn_nmm/ : NMM 모델의 역학부분. 더 이상 개선이나 지원을 멈춘 상태임 dyn_exp/ : \u0026rsquo;toy\u0026rsquo; 역학 부분 external/ : 입출력과 시간 조절, MPI 병렬화 등을 지원 frame/ : WRF 프레임워크 inc/ : include 디렉토리 main/ : wrf.F가 포함된 메인루틴. 컴파일 후 모든 실행화일이 여기에 저장됨 phys/ : 모델의 물리부분 share/ : WRF의 공유와 입출력 담당 tools/ : 개발자용 도구 스크립트들 clean : 실행화일이나 컴파일 시 생성된 화일들 삭제 compile : WRF 코드 컴파일 스크립트 configure : 모델 구성용 configure.wrf 를 생성하는 스크립트 기타 Makefile : 최상위의 makefile Registry : WRF Registry 파일 arch/ : 컴파일 옵션이 수집되는 디렉토리 run/ : WRF를 실행할 수 있는 디렉토리 test/ : 여러 테스트용 실험들이 저장되어 있으며 WRF에서 사용함 2. WRF 모델의 구성 # 이상 실험과 실제 사례 실험에 관계없이 WPS 전처리 보다 먼저 WRF 모델 코드를 컴파일해야 합니다. 먼저 netCDF 환경변수와 포트란 컴파일러, 그리고 병렬화 관련 구성 파일을 만듭니다. NETCDF 환경변수는 저자가 사용하는 시스템을 기준으로 설명하므로 사용자 컴퓨터에 따라 알맞은 path를 지정하세요.\nexport NETCDF=/opt/netcdf/intel-18.0/netcdf-4.1.3 netCDF는 지정한 포르란 컴파일러와 동일한 버전으로 생성된 라이브러리여야 합니다. 그리고 netCDF v4.x 부터는 C와 Fortran 라이브러리가 독립적으로 구성되어 있으며 포트란 버전인 libnetcdff.a 가 있는지 확인하세요. (이름 뒤에 f 가 두 개 입니다.) netCDF가 설치되어있지 않다면 다음과 같이 설치합니다. 버전 4.1.3 이후부터는 C와 Fortran의 라이브러리가 나누어져 있어서 설치가 복잡하므로 설명을 간단히 하기 위하여 v4.1.3을 기준으로 설명합니다. 병렬 시스템의 모든 서버에서 사용 가능하도록 /opt에 설치하도록 합니다. 설치에 대한 자세한 사항은 여기 를 참조하세요.\ncd ~/local/src wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-4.1.3.tar.gz tar xvzf netcdf-4.1.3.tar.gz export NETCDF=/opt/netcdf/intel-18.0.4/netcdf-4.1.3 export CC=icc export CXX=icc export FC=ifort export FCFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; export F77=ifort export FFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; cd netcdf-4.1.3 ./configure --prefix=${NETCDF} --disable-dap --disable-netcdf-4 --disable-shared make \u0026amp;\u0026amp; make install export NETCDF_classic=1 참고) netCDF v4.x에서는 HDF5와 연동한 빠른 압축기능 및 group 기능 등을 지원합니다. 이를 위해서는 netCDF 설치에 앞서서 HDF5 라이브러리와 Zlib 또는 SZlib 의 설치가 필요합니다. 이에 대한 상세한 설치 방법은 NetCDF V4 설치하기 를 참조하세요. 이러한 기능을 사용하지 않고 간단하게 설치하여 사용하고자 한다면 위와 같이 \u0026ldquo;—disable-netcdf-4\u0026rdquo; 옵션을 사용하여 컴파일 하고, WRF가 이를 알 수 있도록 \u0026ldquo;NETCDF_classic\u0026rdquo; 환경변수를 1로 설정합니다..\nConfigure를 사용하여 모델을 구성합니다.\ncd ~/models/WRF/V4.1/WRF ./configure \u0026gt; Enter selection [1-63] : 15 \u0026gt; Compile for nesting? (1=basic, 2=preset moves, 3=vortex following) [default 1]: 1 (serial) : 1개의 CPU 또는 core를 사용할 경우 (smpar) : Shared-memory 즉, OpenMP를 사용할 경우 (dmpar) : Distributed-memory 즉, MPI를 사용할 경우 (dm+sm) : OpenMP와 MPI를 동시에 사용할 경우\n병렬화와 관련해서는 보통은 성능이 가장 좋은 분산메모리 병렬화만을 사용하므로 \u0026ldquo;dmpar\u0026rdquo; 를 선택합니다. dmpar 는 distrubuted memory parallelization을 뜻합니다. 여기에서는 intel fortran compiler를 사용하므로 15. (dmpar) 를 선택하였습니다. 병렬화에 익숙하지 않다면 싱글(serial) 모드를 선택하여 모델에 친숙해 진 후 병렬화를 시도하도록 하세요.\nNesting 관련 옵션은 보통 \u0026ldquo;1=basic\u0026quot;을 선택합니다. \u0026ldquo;2=preset moves\u0026quot;는 namelist 에서 nesting grid의 이동을 직접 지정할 경우 사용합니다. \u0026ldquo;3=vortex-following\u0026quot;는 태풍이나 허리케인의 와류 중심을 따라서 nesting grid를 자동으로 이동할 경우 사용합니다. 이에 대한 자세한 설정 방법은 여기 를 참조하세요.\nconfigure.wrf 가 생성되면 파일 내용 중에 다음을 확인하여 설정과 다르면 알맞게 수정하여 재저장합니다.\nDEP_LIB_PATH = -L/opt/netcdf/intel-18.0.4/netcdf-4.1.3/lib SFC = ifort SCC = icc CCOMP = icc DM_FC = mpif90 -f90=$(SFC) DM_CC = mpicc -cc=$(SCC) 3. 실제 사례 실험에 대한 WRF 컴파일 # 이상 실험에 대한 WRF 컴파일은 여기 를 참고하세요. 일부 컴퓨터에서는 컴파일 하기 전에 \u0026ldquo;export WRF_EM_CORE=1\u0026quot;를 설정해야 하는 경우가 있으며 잘 모르겠으면 그냥 설정해 주세요.\nexport WRF_EM_CORE=1 ./compile em_real \u0026gt;\u0026amp; log.compile compile에 사용하는 옵션은 \u0026ldquo;./compile\u0026rdquo; 명령을 옵션 없이 실행하면 상세한 설명을 표시해 줍니다. 지금 ./compile 라고만 쳐보세요.\n여기서는 실제 사례 실험을 할 것이므로 \u0026ldquo;em_real\u0026rdquo; 옵션을 선택하였습니다. 컴파일 시에 표시되는 표준 메세지와 오류 메세지는 \u0026ldquo;\u0026gt;\u0026amp;\u0026rdquo; 기능으로 log.compile 이라는 파일에 저장됩니다. 컴파일 후의 성공 여부는 log.compile의 내용을 보면 되며 문제가 있을 경우 이 파일이 문제 해결에 도움이 될 것 입니다. 컴파일은 몇(십)분 정도 걸리는데, 좀 더 빨리 컴파일 하고 싶다면 다음과 같이 -j 옵션으로 병렬 컴파일을 할 수 있습니다.\n./compile -j 8 em_real \u0026gt;\u0026amp; log.compile 컴파일이 성공하면 \u0026ldquo;WRF/main/\u0026rdquo; 디렉토리에 다음과 같은 실행화일들이 생성됩니다. 실행화일의 크기가 0이 아닌지 확인하세요. 이 실행화일들은 main/ 에서 run/ 및 test/em_real/ 디렉토리에 각각 링크 됩니다. 이 디렉토리 들 중의 하나에서 코드를 실행하면 됩니다.\nndown.exe : one-way nesting에 사용 tc.exe : 태풍이나 허리케인 같은 열대성 저기압의 추가 또는 제거에 필요한 TC Bogusing에 사용 real.exe : 실제 사례에 대한 WRF 초기화 wrf.exe : WRF 모델의 실제 적분 컴파일에 문제가 발생하여 실행화일이 제대로 만들어지지 않았다면, log.compile 내에 \u0026ldquo;Error\u0026quot;을 찾아서 원인을 파악하세요. 원인이 파악되었으면 \u0026ldquo;./clean -a; ./configure\u0026rdquo; 를 실행하고 configure.wrf 재 확인 후 다시 컴파일을 시도해 보세요.\n./clean -a # 새로 생성된 파일들을 모두 삭제 ./configure # 생성된 configure.wrf의 내용 확인 ./compile -j 8 em_real \u0026gt;\u0026amp; log.compile WRF가 성공적으로 컴파일 되면 이제 WPS를 컴파일할 차례 입니다. 이 과정은 실제 사례의 실험인 경우게 해당됩니다.\nWPS (WRF 전처리 시스템) : 디렉토리 구조 설명 # README : 코드 및 모델 설정 및 실행 방법에 대한 유용한 정보가 들어 있음 소스 코드 디렉토리 : geogrid/ : 지형 격자와 같은 정적 데이터 생성 관련 디렉토리 metgrid/ : WRF의 입력자료 생성 관련 디렉토리 ungrib/ : GRIB 데이터 압축 해제 관련 디렉토리 util/ : 유틸리티 디렉토리 스크립트들 : clean : 새로 생성된 파일 또는 실행화일들의 삭제 compile : WPS 코드 컴파일 configure : WPS 컴파일 환경 구성. configure.wps가 생성됨 link_grib.csh : GRIB 파일을 WPS 디렉토리로 링크 기타 : arch/ : 컴파일 옵션들이 수집되는 곳 namelist.wps : \u0026ldquo;geogrid.exe\u0026quot;와 \u0026ldquo;ungrib.exe\u0026rdquo;, \u0026ldquo;metgrid.exe\u0026rdquo; 에서 사용하는 WPS namelist. \u0026ldquo;./configure\u0026rdquo; 명령으로 생성됨 namelist.wps-all_options : 참조를 위한 모든 namelist 옵션이 들어가 있는 파일 4. WPS의 구성 및 Grib2 관련 라이브러리들의 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ~/models/WRF/V4.1/WPS ./configure \u0026gt; Enter selection [1-36] : 17 # 17. Linux x86_64, Intel compiler (serial) # \u0026#34;configure.wps\u0026#34; 가 정상적으로 생성되었는지 확인 WPS는 WRF의 입력자료를 생성하는 전처리 과정이므로 아주 큰 영역의 실험이 아닌 경우에는 일반적으로 GRIB2를 처리할 수 있는 싱글(serial)을 사용하는 것을 추천합니다. 여기에서는 Intel Compiler를 사용하는 17번을 선택하였습니다.\n또한, GRIB2 자료를 사용해야 하므로 관련된 라이브러리(JasPer, libPNG, Zlib)를 확인하고 설치되어 있지 않다면 다음과 같이 설치합니다. 모든 라이브러리는 WRF 모델에서 사용한 컴파일러와 동일한 것을 사용하는 것을 추천합니다. 좀 더 자세한 설명은 여기 의 지침을 따르도록 하세요.\nGRIB2에서 사용하는 JasPer와 libPNG, Zlib 등은 일반적인 라이브러리이므로 여기에서는 사용자 home의 local 디렉토리(${HOME}/local)에 설치하는 것으로 설명합니다. 설치가 정상적으로 끝나면 위에서 생성한 \u0026ldquo;configure.wps\u0026quot;의 내용 중에서 COMPRESSION_LIBS와 COMPRESSION_INC의 환경변수를 여기서 설치한 디렉토리로 수정해 주어야 합니다.\n4-1. JasPer 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz tar xvzf jasper-1.900.1.tar.gz cd jasper-1.900.1 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libjasper.a 와 libjasper.la 가 설치되었는지 확인 4-2. libPNG 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz tar xvzf libpng-1.2.50.tar.gz cd libpng-1.2.50 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libpng* 화일들이 설치되었는지 확인 4-3. zlib 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. export JASPERLIB=${HOME}/local/lib export JASPERINC=${HOME}/local/include cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz tar xvzf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libz* 화일들이 설치되었는지 확인 설치가 끝났으면 \u0026ldquo;configure.wps\u0026rdquo; 화일을 수정합니다. 주의) 여기서의 환경변수는 \u0026ldquo;{}\u0026ldquo;가 아닌 \u0026ldquo;()\u0026ldquo;를 사용합니다.\ncd ~/models/WRF/V4.1/WPS vi configure.wps \u0026gt; COMPRESSION_LIBS = -L$(HOME)/local/intel/lib -ljasper -lpng -lz \u0026gt; COMPRESSION_INC = -I$(HOME)/local/intel/include 5. WPS 컴파일 # WPS를 컴파일하기 위하여 다음을 실행하세요. \u0026ldquo;\u0026gt;\u0026amp;\u0026ldquo;를 사용하여 표준 메세지와 에러 메세지를 로그파일로 저장합니다. 컴파일이 실패하면 문제 해결을 위해 이 파일이 필요합니다.\ncd ~/models/WRF/V4.1/WPS ./compile \u0026gt;\u0026amp; log.compile 컴파일이 성공적으로 수행되었다면 다음의 파일들의 크기가 0이 아니어야 합니다.\ngeogrid.exe —\u0026gt; geogrid/src/geogrid.exe : 지형격자와 같은 정적데이터 생성 ungrib.exe —\u0026gt; ungrib/src/ungrib.exe : GRIB 데이터 압축 해제 및 중간 형식 변경 metgrid.exe —\u0026gt; metgrid/src/metgrid.exe : WRF 용 입력 데이터 생성 이 파일들이 보이지 않는다면 log.compile 파일에서 오류가 있는지 확인하세요. 이와 별개로 몇 가지 유틸리티는 util/ 디렉토리 아래에 링크됩니다. 이 유틸리티들에 대한 자세한 설명은 여기 를 참고하세요.\navg_tsfc.exe : 중간 변형된 파일로부터 일평균 표면 온도를 계산. 5층 토양모델 (sf_surface_physics =1)과 함께 사용하는 것을 권장함 g1print.exe : GRIB1 파일의 내용을 표시 g2print.exe : GRIB2 파일의 내용을 표시 mod_levs.exe : 중간 변형 파일의 3D 필드에서 불필요한 레벨을 제거 rd_intermediate.exe : 중간 변형 파일을 읽음 calc_ecmwf_p.exe : ECMWF의 sigma-level 자료들과 함께 사용하기 위해서 다른 대기변수들과 동일 레벨에서 3차원 압력과 지오포텐셜 높이를 생산 height_ukmo.exe : UKMO 통합모델의 자료들을 위한 지오포텐셜 높이 값을 계산 plotgrids.ncl : 격자 영역을 plot. NCL(NCAR Graphics)이 필요합니다. int2nc.ncl : 중간 변형된 파일로부터 netCDF 형식 파일을 생성. NCL(NCAR Graphics)이 필요합니다. 관련 실행화일과 유틸리티가 제대로 컴파일 되지 않았다면 원인을 수정하고 \u0026ldquo;./clean -a\u0026rdquo; 를 실행한 후 재컴파일을 하세요. 모든 것이 올바르게 작성 되었다면 이제 WRF-ARW 모델을 실행할 준비가 되었습니다.\n./clean -a # 새로 생성된 파일들을 모두 삭제 ./configure # 생성된 configure.wps의 내용 확인 ./compile \u0026gt;\u0026amp; log.compile 모델 실행을 위한 기본 사항 # 이제 WRF 모의를 위한 기본 준비가 끝났습니다. 지금부터는 우리나라 지역에 맞게 설정을 하고 모의를 해보도록 하겠습니다. 다음은 일반적인 모델 실행 과정 중에서 프로그램의 흐름에 대한 설명입니다.\nWPS # geogrid.exe : 외부에서 가져온 정적 지형자료로부터 우리나라 영역의 지상 자료를 만듭니다. ungrib.exe : 외부에서 가져온 GRIB 기상자료를 압축해제하고 중간 변형 파일로 압축합니다. metgrid.exe : 기상자료를 우리나라 영역에 맞게 수평적으로 보간합니다. 여기서 만든 자료는 real.exe 를 통하여 WRF의 입력으로 사용됩니다. 참고1) geogrid와 ungrib은 독립적이므로 실행순서에 상관이 없습니다. 참고2) ESRL에서는 WPS Domain Wizard 라는 아주 편리한 도구를 제공하고 있습니다. 영역의 구성 부터 입력자료의 준비까지 GUI 형식으로 사용할 수 있으니 꼭 한번 사용해 보세요.\nWRF # real.exe : 입력 자료를 모델의 연직 좌표에 맞게 수직 보간합니다. wrf.exe : 모델을 적분하여 예측장을 생성합니다. 태풍 솔릭의 실제 사례를 실행하기 전에 먼저 각 개별 구성 요소에 대한 세부 사항을 살펴보도록 하겠습니다.\n6. GEOGRID: 정적 입력 자료 만들기 # GEOGRID의 목적은 모의 영역을 정의하고 다양한 지형 자료를 모델 격자에 맞게 보간하는 것입니다.\n모델 영역은 WPS의 namelist.wps에 \u0026ldquo;\u0026amp;share\u0026quot;와 \u0026ldquo;\u0026amp;geogrid\u0026rdquo; 섹션에서 정의됩니다. namelist.wps에서 사용하는 매개변수들에 대한 권장 사항은 여기 를 참고하세요. namelist.wps에서는 모델 영역의 갯수에 따라서 여러 열이 사용됩니다. 기본적으로 3개의 열을 사용하였지만 max_dom을 2로 설정하였다면 마지막 열은 무시됩니다.\nGEOGRID는 모델영역의 모든 격자점에 대한 위경도를 계산하고 soil categories, land use category, terrain height, annual mean deep-soil temperature, monthly vegetation fraction, monthly albedo, maximum snow albedo, slope category 등을 보간합니다.\nGEOGRID로 정적 입력 자료를 생산하는 방법은 다음과 같습니다.\nnamelist.wps의 \u0026amp;share 영역과 \u0026amp;geogrid 영역을 수정하고 ncl로 확인합니다.\ncd ~/models/WRF/V4.1/WPS vi namelist.wps \u0026amp;share wrf_core = \u0026#39;ARW\u0026#39;, # 역학코어 설정. 연구용:\u0026#39;ARW\u0026#39; or 현업용:\u0026#39;NMM\u0026#39; max_dom = 2, # nesting grid를 포함한 영역의 갯수. io_form_geogrid = 2, # geogrid 데이터 형식. 1=binary, 2=netcdf, 3=GRIB1 / \u0026amp;geogrid parent_id = 1, 1, # mother domain의 id. 첫 영역의 1은 자기 자신을 의미함 parent_grid_ratio = 1, 3, # nested domain의 해상도. 3은 3배를 의미함 i_parent_start = 1, 92, # domain의 x 축 시작점 (격자점) j_parent_start = 1, 53, # domain의 y 축 시작점 (격자점) e_we = 341, 331, # x 축 방향의 격자 갯수 e_sn = 341, 331, # y 축 방향의 격자 갯수 geog_data_res = \u0026#39;5m\u0026#39;,\u0026#39;2m\u0026#39;, # 사용할 지형 데이터의 해상도 설정 (참조: geogrid/GEOGRID.TBL) dx = 18000, # 최상위 domain의 x 축 방향 모형 해상도(meter) dy = 18000, # 최상위 domain의 y 축 방향 모형 해상도(meter) map_proj = \u0026#39;lambert\u0026#39;, # 지도 투영 방법. 중위도는 \u0026#39;lambert\u0026#39;, 저위도는 \u0026#39;mercater\u0026#39; 사용 ref_lat = 35.5, # 최상위 domain의 중심 위도 ref_lon = 144.4, # 최상위 domain의 중심 경도 truelat1 = 20.0, # 지도투영에 의해 발생하는 위도 왜곡에서 지표면과 교차되는 지점1 truelat2 = 40.0, # 지도투영에 의해 발생하는 위도 왜곡에서 지표면과 교차되는 지점2 stand_lon = 144.4, # 투영에서 수직으로 보여질 경도 (보통은 ref_lon과 같음) geog_data_path = \u0026#39;../../Data/geog/WPS_GEOG\u0026#39; # 지형 데이터가 있는 곳의 경로 / 참고) 지도 투영 방법에 관한 개념설명은 저의 홈페이지에 있는 \u0026quot; WRF ARW에서 사용되는 지도 투영법\u0026rdquo; 을 참고하세요. 중위도 지역의 모의에는 보통 \u0026ldquo;Lambert Conformal\u0026rdquo; 투영법을 사용하며, 저위도나 적도지역은 \u0026ldquo;Mercator\u0026rdquo;, 극 지역은 \u0026ldquo;Polar Stereographic\u0026rdquo;, 전지구 모의에는 \u0026ldquo;Cylindrical Equidistant\u0026rdquo; 투영법을 사용합니다.\n영역 설정이 제대로 되었는지 확인하기 위하여 ncl을 이용하여 그려봅니다.\nncl util/plotgrids.ncl # for ncl v6.1.x ncl util/plotgrids_new.ncl # for ncl v6.2 or later geogrid.exe를 실행하여 \u0026lsquo;geo_em.dxx.nc\u0026rsquo;를 생성합니다. (도메인 마다 독립된 화일 생성)\n# geogrid/GEOGRID.TBL -\u0026gt; geogrid/GEOGRID.TBL.ARW 로 링크되어 있는지 확인 ./geogrid.exe # domain을 2개로 지정했으므로 geo_em.d01.nc와 geo_em.d02.nc 가 생성됨 # 간단하게 확인하기 위하여 ncview를 사용하여 확인 ncview geo_em.d01.nc; ncview geo_em.d02.nc 참고1) 만약, \u0026ldquo;ERROR: Error in ext_pkg_open_for_write_begin.\u0026ldquo;와 같은 에러메세지가 나타나고 \u0026ldquo;geo_em.d??.nc\u0026quot;화일의 사이즈가 0인 경우는 netCDF ver.4 에서 지원하는 압축기능을 포함한 라이브러리의 설치가 제대로 되어 있지 않은 경우일 수 있으므로, netCDF의 문제를 해결하여 재설치하거나 압축 기능을 사용하지 않도록 하고 WRF를 재컴파일하여야 합니다. 압축기능을 사용하지 않고 싶다면 \u0026ldquo;export NETCDF_classic=1\u0026quot;을 수행하여 환경변수를 설정한 후 WRF를 처음부터 재컴파일 하면 됩니다.\n참고2) \u0026ldquo;ERROR: Could not open …/…/index\u0026quot;와 같은 에러메세지가 나타나면 \u0026ldquo;namelist.wps\u0026quot;의 \u0026ldquo;geo_data_path = \u0026ldquo;의 부분을 확인하고 지정된 디렉토리에 자료가 있는지 확인합니다.\n7. UNGRIB : 기상 입력 자료를 중간변형 파일로 만들기 # UNGRIB은 GRIB (GRIB1 또는 GRIB2) 형식으로 제공되고 있는 기상자료를 읽어서 중간 변형 파일로 만드는 것입니다. 중간변형 파일에 관한 자세한 내용은 여기 를 참고하세요.\n7-1. 기상 자료 가져오기 : GFS 전지구 자료 # WPS에서는 다양한 기상 자료를 처리할 수 있도록 미리 준비해 두었습니다. 여기에서는 일반적으로 많이 사용하는 GFS의 기상자료를 사용하는 것으로 가정하고 설명하지만, 다른 자료들에도 충분히 응용 가능합니다.\n실험 사례에 대한 모의 기간(2018년 8월 18일~23일)에 맞추어 다음과 같이 GFS 자료를 가져옵니다.\ncd ~/models/WRF/Data/GFS/Grid4 GFSdata=${PWD} YYYYmm=201808 Server=\u0026#39;ftp://nomads.ncdc.noaa.gov/GFS/Grid4\u0026#39; for dd in 18 19 20 21 22 23; do mkdir -p $GFSdata/$YYYYmm/$YYYYmm$dd; cd $GFSdata/$YYYYmm/$YYYYmm$dd for hh in 00 06 12 18; do wget $Server/$YYYYmm/$YYYYmm$dd/gfs_4_$YYYYmm${dd}_${hh}00_000.grb2 done done 참고) GFS 자료는 매일 6시간(0,6,12,18시) 마다 예측 자료를 생산하며 각 예측 시간에는 다음과 같이 0 ~ 240시간 예측까지는 3시간 간격으로 저장되어 있으며, 240 ~ 384시간 예측은 12시간 간격으로 저장되어 있습니다. 각 예측 자료의 000 시간은 초기장으로 생각하면 됩니다. 이 실험에서는 각 모의의 000 시간대의 자료를 가져와서 실험하도록 할 것이므로 모의 결과가 예측 자료를 사용하는 것보다 좋을 수 있으니 주의하세요.\ngfs_4_YYYYmmdd_0000_{000,003,006,009,012,\u0026hellip;.,240}.grb2_ gfs_4_YYYYmmdd_0000{252,264,276,288,300,\u0026hellip;.,384}.grb2 7-2. 중간변형 파일 만든기 # GRIB 자료의 압축풀기는 namelist.wps의 \u0026ldquo;\u0026amp;share\u0026quot;와 \u0026ldquo;\u0026amp;ungrib\u0026quot;의 섹션을 통해 설정합니다. 이 설정은 추천 사례를 통해서 좀 더 자세히 알 수 있습니다.\nUNGRIB이 수행하는 내용은 다음과 같습니다.\nWRF 모델의 도메인 영역에 종속되지 않고 준비된 기상자료 전체에 대해 처리합니다. GEOGRID에도 종속되지 않으며 모델 도메인 영역에 따라 데이터를 축소하거나 맞춤 변형하지 않습니다. 단순히 기상자료로부터 필요한 변수의 압축을 풀고 METGRID 프로그램이 읽을 수 있는 중간 형식으로 저장합니다. Vtables (WPS/ungrib/Variable_Tables/)를 사용하여 GRIB 파일에서 압축을 풀고자 하는 변수를 지정합니다. Vtables 디렉토리에는 다양한 기상 자료의 형식을 지원하는 정보가 들어 있습니다. 자세한 사항은 Variable_Tables/README 파일을 참고하세요. 대부분의 기상자료들을 지원하지만 여기에서 지원하지 않는 자료의 형식은 Vtable을 직접 작성해서 사용해야 합니다. 직접 작성할 경우에 필요한 입력필드는 여기 를 참조하세요. UNGRIB으로 기상자료를 생산하는 방법은 다음과 같습니다.\ncd ~/models/WRF/V4.1/WPS ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable ./link_grib.csh ~/models/WRF/Data/GFS/Grib4/201808/201808{18,19,20,21,22,23}/*.grb2 # GRIBFILE.??? 화일들이 정상적으로 링크되었는지 확인 #예) GRIBFILE.AAA -\u0026gt; ~/models/WRF/Data/GFS/Grib4/201808/20180818/gfs_4_20180818_0000_000.grb2 vi namelist.wps \u0026amp;share start_date = \u0026#39;2018-08-18_12:00:00\u0026#39;,\u0026#39;2018-08-18_12:00:00\u0026#39;, end_date = \u0026#39;2018-08-23_12:00:00\u0026#39;,\u0026#39;2018-08-23_12:00:00\u0026#39;, interval_seconds = 10800 / \u0026amp;ungrib out_format = \u0026#39;WPS\u0026#39;, prefix = \u0026#39;FILE\u0026#39;, / # ungrib을 실행하고 에러가 없는지 확인 ./ungrib.exe \u0026gt;\u0026amp; log.ungrib UNGRIB을 완료하고 나면 \u0026amp;ungrib 섹션의 prefix에 지정한 이름(여기에서는 \u0026lsquo;FILE\u0026rsquo;)과 함께 시계열로 된 기상자료가 중간변형 형식으로 만들어 집니다. 자료의 시간 간격은 \u0026amp;share 섹션에 지정한 \u0026ldquo;interval_seconds = 10800\u0026quot;에 의해서 3시간 간격으로 저장됩니다.\nFILE:2018-08-18_12, FILE:2018-08-18_15, …, FILE:2018-08-23_09, FILE:2018-08-23_12\n중간변형 형식 자료의 정보를 확인하려면 다음과 같은 명령을 사용합니다.\n./util/rd_intermediate.exe FILE:2018-08-18_12 WRF를 모의할 때에는 실험의 전체 기간에 대해 기상자료의 경계조건이 필요합니다. 여기서 생성한 기상 입력 자료의 기간이 충분한지 확인하시기 바랍니다.\n참고1) GRIB 형식이 아닌 기상 자료를 입력자료로 사용할 경우는 중간변형 형식의 파일을 직접 만들 수 있습니다. 이에 대한 자세한 내용은 WRF User\u0026rsquo;s Guide 의 3장을 참조하세요. 입력 자료를 직접 만드는 경우는 UNGRIB의 단계를 건너 뛸 수 있으며, rd_intermediate.exe 프로그램으로 완결성을 확인할 수 있습니다.\n참고2) 중간변형 화일에는 원 자료 전체 지역에 대해 정보가 저장되어 있으므로 모의 실험 영역을 변경한다고 UNGRIB을 다시 실행할 필요는 없습니다. 다만, 원 자료가 새로운 실험 영역을 모두 포함하지 않는 경우는 영역에 맞는 원 자료로 재생산 해야 합니다.\n8. METGRID : 기상 입력자료를 수평보간하고 netCDF 형식으로 만들기 # METGRID는 중간변형된 기상 입력자료를 실험 영역에 맞게 수평적으로 보간합니다. 이 단계에서는 연직 보간은 하지 않습니다. metgrid.exe 의 출력자료는 WRF에서 연직 보간에 사용됩니다.\nMETGRID의 입력은 GEOGRID에서 만든 geo_em.d??.nc 와 UNGRIB에서 만든 FILE:YYYY-MM-DD_hh 화일들 입니다. 다음과 같이 METGRID를 수행하세요.\ncd ~/models/WRF/V4.1/WPS vi namelist.wps \u0026amp;metgrid fg_name = \u0026#39;FILE\u0026#39;, io_form_metgrid = 2, # metgrid 데이터 형식. 2=netcdf / # metgrid를 실행하여 수평 보간 수행 ./metgrid.exe \u0026gt;\u0026amp; log.metgrid METGRID에 의해 만들어진 자료들은 다음과 같습니다. d01과 d02는 도메인 영역을 뜻합니다.\nmet_em.d01.2018-08-18_12:00:00.nc, …, met_em.d01.2018-08-23_12:00:00.nc met_em.d02.2018-08-18_12:00:00.nc, …, met_em.d02.2018-08-23_12:00:00.nc\nWRF로 모의하는 단계 # WRF 모델에는 2 단계가 있습니다.\nreal.exe : METGRID에서 만든 met_em.* 파일들을 연직 보간하고 경계 조건 파일과 초기 조건 파일을 생성하고 일관성을 검사합니다. wrf.exe의 입력자료인 다음과 같은 파일들이 만들어 집니다. 이 자료들은 netCDF 형식으로 되어 있으므로 ncview 등의 도구로 확인할 수 있습니다. wrfinput_d01, wrfinput_d02 # 영역1과 2에 대한 input data wrfbdy_d01 # 영역1의 boundary data\nwrf.exe : 모델을 적분하여 모의합니다. 9. WRF 모의 # WRF의 모의 순서는 :\nnamelist.input을 만들고, real.exe로 연직 보간을 한 후 wrf.exe로 사례 실험 모의를 하고 wrfout* 결과 화일을 분석합니다. 9-1. \u0026ldquo;namelist.input\u0026rdquo; 만들기 # namelist.input 파일은 real.exe와 wrf.exe에서 참조됩니다. namelist.input에 대한 상세한 설명은 WRF/run/README.namelist를 참고하세요. 아래의 내용은 본 실험사례에 관련된 내용만 나열하도록 하겠습니다.\ncd ~/models/WRF/V4.1/WRF/run vi namelist.input # 상세 내용은 WRF/run/README.namelist 참고 \u0026amp;time_control run_days = 5, run_hours = 0, run_minutes = 0, run_seconds = 0, start_year = 2018, 2018, start_month = 08, 08, start_day = 18, 18, start_hour = 12, 12, end_year = 2018, 2018, end_month = 08, 08, end_day = 23, 23, end_hour = 12, 12, interval_seconds = 10800, ! 입력 경계치 자료 (wrfbdy)의 시간 간격 (초) input_from_file = .true.,.false., ! 영역별 nested domain의 경계치 입력자료 사용 유무 history_interval = 180, 180, ! 영역별 결과 저장 간격 (분) frame_per_outfile = 1000, 1000, ! 영역별 결과파일 분리 간격. 예) 1000번 마다 독립 파일 생성 restart = .false., ! 이 실험이 restar인 경우 .true. restart_interval = 7200, ! restart 파일의 저장 간격 (분) io_form_history = 2, ! netCDF(2),PHD5(4),GRIB1(5),GRIB2(10),pnetCDF(11) io_form_restart = 2, ! io_form_input = 2, ! io_form_boundary = 2, ! debug_level = 0, ! 디버그 정보 간격. 예) 50,100,200,300 diag_print = 0, ! print out time series of model diagnostics ! 0 = no print ! 1 = 영역 평균 3시간 간격 기압 관련 자료 표출 ! 2 = 추가로 강우, 증발, 현열속, 잠열속 등 표출 ! SST 자료를 갱신할 경우 (sst_update=1 과 함께 사용): !auxinput4_inname = \u0026#34;wrflowinp_d\u0026lt;domain\u0026gt;\u0026#34; ! 입력자료 파일 이름 형식 !auxinput4_interval = 360 ! SST 갱신 간격 (분) !io_form_auxinput4 = 2 ! 2 = netCDF. V3.2에서 필요 !nwp_diagnostics = 0 ! 모델 적분 시에 검증을 할경우 1로 설정 / \u0026amp;domains time_step = 60, ! 모델 적분 시간 간격 (초). 보통 dx(in km)의 6배보다 작게 설정 time_step_fract_num = 0, ! 시간간격을 초단위 이하로 설정할 경우 설정 time_step_fract_den = 1, ! 예) 시간간격을 60.3 으로 설정할 경우 : ! time_step=60, fract_num=3, fract_den=10 max_dom = 2, ! Domain의 갯수. 1 이면 nesting domain이 없음을 의미 !s_we = 1, 1, ! 영역별 동서방향의 시작 격자점 e_we = 341, 331, ! 영역별 동서방향의 끝 격자점 (해상도) !s_sn = 1, 1, ! 영역별 남북방향의 시작 격자점 e_sn = 341, 331, ! 영역별 남북방향의 끝 격자점 (해상도) !s_vert = 1, 1, ! 영역별 연직방향의 시작(surface) 격자점 e_vert = 33, 33, ! 영역별 연직방향의 끝(top) 격자점 (해상도) dx = 18000, 6000, ! x축 격자간격. ARW(in meters), NMM(in degrees) dy = 18000, 6000, ! y축 격자간격. ARW(in meters), NMM(in degrees) grid_id = 1, 2, ! 영역 id parent_id = 0, 1, ! 상위 영역의 id i_parent_start = 1, 92, ! 영역별 i-index(x축)의 상위영역 시작 격자점 j_parent_start = 1, 53, ! 영역별 j-index(y축)의 상위영역 시작 격자점 parent_grid_ratio = 1, 3, ! 상위영역과의 격자비율. 홀수배로 설정하여야 함 parent_time_step_ratio = 1,3, ! 상위영역과의 적분시간간격 비율. 2배 이상을 권장함 feedback = 1, ! 상위영역으로의 정보교환 유무. 0 = no feedback smooth_option = 0, ! feedback=1의 경우 smooth 방법 ! 0: no smoothing, 1: 1-2-1 smoothing, ! 2: smoothing-desmoothing (default) p_top_requested = 5000, num_metgrid_levels = 32, num_metgrid_soil_levels = 4, use_levels_below_ground = .false., ! 3D PWP 해양모형을 함께 적분하여 결합하는 경우 (sf_ocean_physics=2) : omdt = 1, ! 3D PWP time step (min). 1분 이상의 값이어야 함. ! WRF의 time step과 동일하게 설정 권장 ocean_levels = 30, ! sf_ocean_physics=2 일 경우 연직 층수 ocean_z ! 해양모형의 연직 층(layer)의 깊이 (meters) = 5., 15., 25., 35., 45., 55., 65., 75., 85., 95., 105., 115., 125., 135., 145., 155., 165., 175., 185., 195., 210., 230., 250., 270., 290., 310., 330., 350., 370., 390. ocean_t ! 수온 연직분포 = 302.3493, 302.3493, 302.3493, 302.1055, 301.9763, 301.6818, 301.2220, 300.7531, 300.1200, 299.4778, 298.7443, 297.9194, 297.0883, 296.1443, 295.1941, 294.1979, 293.1558, 292.1136, 291.0714, 290.0293, 288.7377, 287.1967, 285.6557, 284.8503, 284.0450, 283.4316, 283.0102, 282.5888, 282.1674, 281.7461 ocean_s ! 염분 연직분포 = 34.0127, 34.0127, 34.0127, 34.3217, 34.2624, 34.2632, 34.3240, 34.3824, 34.3980, 34.4113, 34.4220, 34.4303, 34.6173, 34.6409, 34.6535, 34.6550, 34.6565, 34.6527, 34.6490, 34.6446, 34.6396, 34.6347, 34.6297, 34.6247, 34.6490, 34.6446, 34.6396, 34.6347, 34.6297, 34.6247 ! vortex를 따라서 nesting 영역을 자동으로 이동하기 위한 설정 : ! 이 설정을 사용하려면, WRF의 컴파일 시에 (3=vortex_following) 옵션으로 컴파일되어 있어야 함 vortex_interval = 15, 15, ! vortex의 위치를 계산하는 간격 max_vortex_speed = 30, 30, ! vortex의 위치를 알기 위한 vortex 반경을 계산하는데 사용 corral_dist = 10, 10, ! 상위영역의 경계측으로 접근할 수 있는 최소한의 격자 수 track_level = 50000, ! 추적되는 vortex가 위치한 곳의 압력(Pa) time_to_move = 0., 0., ! nesting 영역의 이동을 계산하는 시작 시간(분) / \u0026amp;physics mp_physics = 6, 6, ! 미세물리 모수화기법: (cl=class,mo=moment,ic=ice) ! 0 = no microphysics, 1 = Kessler, ! 2 = Lin et al., 3 = WSM 3-cl simple ic, ! 4 = WSM 5-cl, 5 = Ferrier (new Eta), ! 6 = WSM 6-cl graupel, 7 = Goddard 4-ic, ! 8 = Thompson, 9 = Mibrandt-Yau 2-mo, ! 10 = Morrison, 11 = CAM 5.1, ! 13 = SBU_YLIN, 14 = WDM 5-cl, ! 16 = WDM 6-cl, 17 = NSSL 2-m 4-i, ! 18 = NSSL 2-mo 4-ic with predicted CCN, ! 19 = NSSL 1-mo 7-cl, 21 = NSSL 1-mo 6-cl, ! 28 = aerosol-aware Thompson, ! 30 = HUJI spectral bin, ! 32 = HUJI spectral bin, full version, ! 40 = Morrison (2 mo), ! 50 = P3 1-category, 51=P3 + cloud water, ! 95 = Ferrier (old Eta), 97 = Goddard GCE ra_lw_physics = 1, 1, ! 장파복사 모수화기법: ! 0 = no lonwave radiation, 1 = RRTM, ! 3 = CAM, 4 = RRTMG, ! 14 = RRTMG-K from KIAPS, 24 = fast RRTMG, ! 5 = Goddard longwave, 7 = FLG (UCLA), ! 31 = Earth Held-Suarez forcing, ! 99 = GFDL (Eta) longwave ra_sw_physics = 1, 1, ! 단파복사 모수화기법: ! 0 = no shortwave radiation, 1 = Dudhia, ! 2 = Goddard shortwave, 3 = CAM, ! 4 = RRTMG, 14 = RRTMG-K from KIAPS, ! 24 = fast RRTMG, 5 = Goddard shortwave, ! 7 = FLG (UCLA), 99 = GFDL (Eta) longwave radt = 18, 18, ! 복사물리 함수 호출 간격(분). dx(in km)와 동일 값 추천 sf_sfclay_physics = 1, 1, ! 표층 모수화기법: ! 0 = no surface-layer, ! 1 = Revised MM5 Monin-Obukhov, ! 2 = Monin-Obukhov, 3 = NCEP GFS (MMM only) ! 4 = QNSE, 5 = MYNN, ! 7 = Pleim-Xiu (ARW only), ! 10 = TEMF (ARW only), 91 = Old MM5 sf_surface_physics = 2, 2, ! 지면 모수화기법: ! 0 = no surface temp prediction ! 1 = thermal diffusion, 2 = Unified Noah LSM, ! 3 = RUC LSM, 4 = Noah-MP LSM, ! 5 = CLM4 from CAM, 7 = Pleim-Xiu LSM (ARW), ! 8 = SSiB sf_urban_physics = 0, 0, ! urban canopy model 계산 유무 ! 0 = no, 1 = Single-layer, UCM, ! 2 = Multi-layer, BEP, 3 = Multi-layer, BEM bl_pbl_physics = 1, 1, ! 경계층 모수화기법: ! 0 = no boundary-layer, 1 = YSU, ! 2 = Mellor-Yamada-Janjic TKE, ! 3 = Hybrid EDMF GFS (NMM only), ! 4 = Eddy-diff. Mass Flux, QNSE PBL, ! 5 = MYNN L2.5 TKE, 6 = MYNN 3rd level TKE, ! 7 = ACM2 PBL (ARW), 8 = BouLac PBL, ! 9 = UW BL from CAM5, 10 = TEMF, ! 11 = Shin-Hong PBL, 12 = GBM (ARW only), ! 93 = 2015 GFS (NMM only), 99 = MRF bldt = 0, 0, ! 경계층 물리모수화 함수 호출 간격 (분) cu_physics = 1, 0, ! 적운 물리모수화 기법: (참고: 고해상도에서는 사용하지 않음) ! (SAS=Simplified Arakawa-Schubert,K-F=Kain-Fritsch) ! 0: no cumuls, 1: K-F (new Eta), ! 2: Betts-Miller-Janjic, 3: Grell-Freitas ens., ! 4: Scale-aware GFS SAS, 5: Grell 3D ens., ! 6: Modified Tiedtke (ARW only), ! 7: Zhang-McFarlane, 10: Modfied K-F, ! 11: Multi-scale K-F, 14: modified GFS SAS, ! 16: newer Tiedtke, 94: 2015 GFS SAS (HWRF), ! 95: previous GFS SAS (HWRF), ! 96: previous NEW GFS SAS from YSU (ARW only), ! 93: Grell-Devenyi ens., 99: previous K-F cudt = 0, 0, ! 적운 물리모수화 함수 호출 간격 (분) isfflx = 1, ! 표층으로부터의 열속과 습윤속 처리 ! (sf_sfclay_physics = 1,5,7,11의 경우에만 적용됨) ! 1: 표층으로부터의 플럭스 사용 ! 0: 표층으로부터 플럭스 없음 ! with bl_pbl_physics=0 this uses tke_drag_coeff. ! and tke_heat_flux in vertical diff. ! 2: use drag from sf_sfclay_physics and heat flux ! from tke_heat_flux with bl_pbl_physics=0 ifsnow = 0, ! snow-cover 효과 (sf_surface_physics=1과 함께 사용) ! 1: 효과 적용, 0: 효과 없음 icloud = 1, ! cloud effect to the optical depth in radiation ! (only works for ra_sw_physics=1,4 ! and ra_lw_physics=1,4) ! 1: 효과 적용 (cloud fraction = 1), 0: 효과 없음, ! 2: 효과 적용 (cloud fraction = 2), ! 3: 효과 적용 (cloud fraction = 3) surface_input_source = 1, ! landuse 와 soil category 자료의 출처 ! 1: WPS/geogrid, dominant categories는 재계산 ! 2: GRIB from another model ! 3: WPS/geogrid, dominant categories 사용 num_soil_layers = 4, ! LSM(지면모델)의 soil layers 갯수 ! 5: thermal diffusion, 4: Noah LSM ! 6 or 9: RUC LSM, 10: CLM4 LSM ! 2: Pleim-Xu LSM, 3: SSiB LSM !sst_update = 0 ! 해양모형을 사용하지 않고 SST 시계열 자료를 입력으로 할 경우 ! ! (0:no, 1:yes) sf_ocean_physics = 2, ! 해양모형 적분 계산 ! 0: no, 1: 1d mixed layer, ! 2: 3D PWP, no bathymetry isftcflx = 2, ! 열대 폭풍 실험을 위한 Ck와 Cd 선택 ! For sf_sfclay=1 \u0026amp; 11, ! 0: default, 1: Donelan Cd + const z0q ! 2: Donelan Cd + Garratt ! For sf_sfclay=5 ! 0: z0, zt, zq from COARE3.0 (default) ! 1: z0 from Davis et al, zt \u0026amp; zq from COARE3.0 ! 2: z0 from Davis et al, zt \u0026amp; zq from Garratt do_radar_ref = 1, ! 1: allows radar reflectivity to be computed ! using mp-scheme-specific parameters. ! Works for mp_physics=2,4,6,7,8,10,14,16,28 / \u0026amp;fdda ! Data Assimilation 관련 섹션 / \u0026amp;dynamics diff_opt = 1, 1, ! 난류 및 혼합 ! 0: no turbulence or explicit, ! 1: evaluates 2nd order diffusion term ! 실제사례에 추천 ! 2: evaluate mixing terms km_opt = 4, 4, ! eddy coefficient ! 참고) dx \u0026gt; 2km 에서 2번과 3번은 추천하지 않음 ! 1: constant, 2: 1.5 order TKE closure (3D) ! 3: Smagorinsky first order closure (3D) ! 4: horiz. Smagorinsky first order closure ! 실제사례에 추천 damp_opt = 0, ! upper level damping flag ! 0: without damping, ! 1: diffusive damping (실제사례에 추천), ! 2: Rayleigh damping, ! 3: w-Rayleigh damping (실제사례에 추천) dampcoef = 0.2, 0.2, ! damping coefficient zdamp = 5000.,5000., ! damping depth(m) from model top w_damping = 0, ! vertical velocity damping flag ! (for operational use) ! 0: without damping, 1: with damping khdif = 0, 0, ! horiz. diff. const. (m^2/s) ! 보통은 0.1*dx(in meter) 사용 kvdif = 0, 0, ! vert. diff. const. (m^2/s) ! 보통은 100.0을 사용 non_hydrostatic = .true.,.true., ! (비)정수압 가정의 사용 유무 moist_adv_opt = 1, 1, ! for moisture scalar_adv_opt = 1, 1, ! for scalars / \u0026amp;bdy_control spec_bdy_width = 10, ! num of rows for specified boundary value nudging spec_zone = 1, ! num of points in specified zone relax_zone = 9, ! num of points in relaxation zone specified = .true.,.false., ! specified B.C. (only can be used for domain 1) nested = .false.,.true., ! nested B.C. (must be used for nests) / 9-2. real.exe: 기상 자료를 연직 보간하여 WRF 입력 자료 만들기 # cd ~/models/WRF/V4.1/WRF/run ln -sf ../../WPS/met_em.d0* . # 수평보간한 입력 자료를 WPS로부터 링크 # 다음의 세가지 방법 중 하나로 실행할 수 있음 ./real.exe # 단일 프로세서로 실행하는 경우 mpirun -np 2 ./real.exe # 분산병렬 시스템에서 2개의 프로세서로 실행하는 경우 mpirun -np 2 -machinefile ./machfile real.exe # 계산 노드를 지정하여 분산병렬로 실행하는 경우 참고) namelist.input 의 내용 중 date/times 또는 입력자료관련이나 LSM packages 등의 내용을 수정한 경우에는 real.exe를 다시 실행하여 wrfinput과 wrfbdy의 입력자료를 다시 만들어야 합니다.\n9-3. wrf.exe: 사례 실험 모의하기 # cd ~/models/WRF/V4.1/WRF/run # 다음의 세가지 방법 중 하나로 모델을 실행할 수 있음 ./wrf.exe # 단일 프로세서로 실행하는 경우 mpirun -np 4 ./wrf.exe # 분산병렬 시스템에서 4개의 프로세서로 실행하는 경우 mpirun -np 4 -machinefile ./machfile wrf.exe # 계산 노드를 지정하여 분산병렬로 실행하는 경우 # 모의가 끝나면 \u0026#34;wrfout_d??_YYYY-MM-DD_HH:00:00\u0026#34; 형식의 파일이 생성되니 이 자료로 분석에 들어가면 됩니다. 참고) 대용량 시스템에서는 모델을 대화형으로 직접 실행하지 않고, queue를 통해서 job을 제출해야하며 시스템에 따라서 그 사용방법이 다르니 시스템 관리자에게 물어보시기 바랍니다.\n10. 모의 결과 분석 # 사례 실험 모의가 끝나면 다음과 같은 결과 파일이 생성됩니다.\nwrfout_d01_2018-08-18_12:00:00, \u0026hellip;\n이 결과 파일들은 netCDF 형식으로 만들어진 것이므로 ncview 등으로 간단히 확인할 수 있습니다.\nWRF의 홈페이지에서 제공하는 WRF Post-Processing Software 에 편리한 도구들이 있으니 참고하세요. 여기에서는 Python을 이용하여 자료를 분석하고자 하며, 상세한 내용은 추후 다른 지면으로 통하여 제공하도록 하겠습니다.\n수고하셨습니다! ^-^. 작성 : 김동훈 (https://dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 4월 29일\n- END - ","date":"2019년 4월 29일","externalUrl":null,"permalink":"/2019/04/WRF_Tutor/","section":"글","summary":"WRF ARW V4.1로 태풍 솔릭을 모의하는 전 과정. 모델과 WPS의 설치·구성부터 실행까지 다룬, 이 블로그에서 가장 긴 튜토리얼입니다.","title":"WRF ARW V4 로 태풍 솔릭(Soulik) 모의해 보기","type":"posts"},{"content":"","date":"2019년 2월 14일","externalUrl":null,"permalink":"/tags/FVCOM/","section":"태그","summary":"","title":"FVCOM","type":"tags"},{"content":" FVCOM code study # by Bon-Ho, Gu \u0026amp; Chae-Wook, Lim\nFVCOM 2.x # POM과 동일한 BCOND, ADV 서브루틴 사용\nFVCOM 3.x # POM 98 # FVCOM 2.x WQ \u0026amp; POM 98 # --- The END --- ","date":"2019년 2월 14일","externalUrl":null,"permalink":"/2019/02/FVCOMcode/","section":"글","summary":"FVCOM 2.x와 3.x, POM 98의 소스코드 구조를 서브루틴 호출 관계 도식으로 비교한 코드 스터디 자료입니다. (구본호·임채욱)","title":"FVCOM 소스코드 분석","type":"posts"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/Binary/","section":"태그","summary":"","title":"Binary","type":"tags"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/%EC%8B%9C%EA%B0%81%ED%99%94/","section":"태그","summary":"","title":"시각화","type":"tags"},{"content":" 원시방정식(Primitive Equation) # 대기와 해양의 유체를 기술하는데 사용되는 방정식은 다음의 세가지가 있다.\n연속방정식(continuity equation) 운동량 보존 방정식(momentum equation) 열에너지 방정식(thermal energy equation) Navier-Stokes equations # N-S 방정식은 점성을 가진 유체의 운동을 기술하는 비선형 편미분 방정식이다.\n이 방정식은 대기와 해양의 분석과 예측 등을 연구하는데 사용되고 있다.\nN-S 방정식은 여러가지 형태로 쓰이지만, 아인슈타인 표기법을 사용하면 다음과 같다.\nThe Primitive Equations in Cartesian Coordinates # momentum equations\ncontinuity equation\ntemperature equation\nsalinity equation\ndensity equation\n해양-기상 변수의 종류 # 해양과 기상 분야에서 사용되는 변수들은 scalar 자료와 vetor 자료로 구분할 수 있다.\n지형자료 : 수심, 표고\nETOPO2: Topography and Bathymetry\n(1995년 작품, 김동훈) Scalar :\n기온(Temperature, oC^oC),\n기압(Pressure, hPahPa),\n습도(Humidity, relative, %\\%),\n강수량(mmmm),\n수온(oC^oC),\n염분(o/oo, g/kgo/_{oo},\\ g/kg), 등\u0026hellip;\n수온(Ocean Temperature, Sea Temperature, Water Temperature)\n(2003년 작품: 김동훈)\n해수면 높이 (SSH, Sea Surface Height)\n(1996년 작품)\nVector :\n바람(Wind, m/sm/s),\n유속(Currents, m/sm/s), 등 \u0026hellip;\n해수면 유속(Sea Surface Currents)\n(2003년 작품: 김동훈) Flux(속) :\n열속(heat flux),\n담수속(fresh water flux)\n열속(heat flux) : 담수속(fresh water flux) :\nEvapolation - Pricipitation\n해양-기상 자료 형태(형식, format)의 종류 # text(ascii) binary bin + ctl grib \u0026amp; grib2 hdf(4,5) NetCDF \u0026hellip; \u0026hellip; 해양-기상 관측 기기들 # Remote Sensing 인공위성 레이더 라이더 Direct Sensing 부이(Buoy) 프로파일러 : ADCP, CTD 자동관측기기 : AWS 해양-기상 자료들 # Argo GTSPP CCHDO World Ocean Database World Ocean Atlas\n: Monthly, seasonal and annual hydrographic data from the U.S. 2001, 2005, 2009, 2013 World Ocean Circulation Experiment(WOCE)\n: Global 0.5o×0.5o0.5^o \\times 0.5^o gridded climatology SeaDataNet Medar/Medatlas 해양-기상 자료 서비스 # PODAAC\n(Physical Oceanography Distributed Active Archive Center)\n해양-대기 자료의 처리 및 표출 # scalar\nContour\n중첩일기도 (고층일기도+적외영상)\n정지화면상에서 여러가지 성분을 함께 나타내기 좋음.\nColor : Surface\nvector\nArrow : Tracer : Streamline\n벡터성분의 움직임을 표현하기 좋지만 난이도 높음.\nOpenDX : Maya : Virtual Reality (Strereo Graphic)\nMaya, NCSA\nNCAS에서 제작한 예로써 realtime rendering은 아님.\n- END - ","date":"2019년 1월 23일","externalUrl":null,"permalink":"/2019/01/MMdata/","section":"글","summary":"원시방정식에서 출발해 해양·기상 변수의 종류, 관측 기기, 자료 서비스, 자료를 그림으로 표출하는 방법까지 한 번에 훑는 개론.","title":"해양 관측자료 및 수치모델 예측자료의 활용과 분석","type":"posts"},{"content":" Binary(이진) data # 텍스트 파일: 인간 친화적 데이터 이진 파일: 컴퓨터 친화적 데이터 NetCDF, Grib, HDF5 등 :\n이진 파일의 일종으로 컴퓨터 친화적이지만, 인간 친화적이기도 함\nBinary format data 읽고 쓰기 # Fortran: binary data 읽고 쓰기\nC: binary data 읽고 쓰기\nPython: binary data 읽고 쓰기\nNetCDF 란? # NetCDF 응용 프로그램들 # CDAT (Climate Data Analysis Tool) CDO (Climate Data Operators) CSIRO MATLAB/netCDF interface FERRET GDAL (Geospatial Data Abstraction Library) GMT (Generic Mapping Tools) GrADS (Grid Analysis and Display System) HDF (Hierarchical Data Format) interface JSON format with the ncdump-json utility NCL (NCAR Command Language) NCO (NetCDF Operators) ncview OPeNDAP (formerly DODS) OpenDX (formerly IBM Data Explorer) Weather and Climate Toolkit (WCT) AVS IDL Interface MATLAB …, …, … Sample NetCDF example # netcdf simple_xy { dimensions: x = 6 ; y = 12 ; variables: int data(x, y) ; data: data = 0, 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 ; } Fortran: Simple NetCDF example\nC: Simple NetCDF example\nPython: Simple NetCDF example\nfrom netCDF4 import Dataset NX = 6; NY = 12 file_name = \u0026#39;simple_xy.nc\u0026#39; with Dataset(file_name, \u0026#39;w\u0026#39;) as fout: fout.createDimension(\u0026#39;x\u0026#39;, NX) fout.createDimension(\u0026#39;y\u0026#39;, NY) data = fout.createVariable(\u0026#39;data\u0026#39;,\u0026#39;f\u0026#39;,(\u0026#39;x\u0026#39;,\u0026#39;y\u0026#39;)) for i in range(NX): for j in range(NY): data[i,j] = i * NY + j print(\u0026#34;*** SUCCESS writing : %s\u0026#34;%file_name) - END - ","date":"2019년 1월 23일","externalUrl":null,"permalink":"/2019/01/DataFormat/","section":"글","summary":"해양·대기 분야에서 다루는 이진 자료와 NetCDF 형식을 Fortran·C·Python 코드 예제로 읽고 쓰는 법, 그리고 관련 응용 프로그램들을 훑어봅니다.","title":"해양-대기 분야의 자료 형식들","type":"posts"},{"content":"2017년 한국기상학회 추계학술대회\n김동훈, 우승범 (인하대학교)\n1. 서론 # 인공신경망의 최신 기술인 딥러닝 방법 중에서 장기 시계열 예측에 적합한 GRU(Gated Recurrent Unit) 순환신경망(Recurrent Neural Networks, RNN)을 사용하여 Nino 3.4 지역의 SSTA(Sea Surface Temperature Anomaly, 해수면온도 이상)를 매월 단위로 미래 8개월까지 예측하는 시스템을 개발하였다. 이 시스템 개발에 앞서서 “인공신경망 딥러닝을 이용한 엘니뇨 예측성 연구”라는 주제로 지난 2017년 4월에 한국해양학회 춘계학술대회에서 선행연구 결과를 제시하여 그 가능성을 소개한 바 있다. 당시에 올 8월까지의 예측자료를 소개한 바가 있으며, 현재까지 입수한 관측자료와 비교한 자료를 그림 1에 제시하였다. 그림에서 보이는 바와 같이 선행연구로 이루어진 엘니뇨 예측시스템의 성능이 고무적인 것을 알 수 있다.\n그림 1. 2017년 3월에 모의한 Nino 3.4 지역 SSTA 예측 결과. 20년간의 학습자료로 구축한 모델(t20)의 예측 평균제곱오차가 0.05도로 높은 성능을 나타내고 있다.\n본 연구에서는 예측인자로써 SST만을 사용한 기존 모델을 개선하여 해양 수심 20미터의 해수온을 추가하고 예측방법 등을 개선하여 딥러닝 방법의 엘니뇨 예측시스템을 개발하였다.\n2. 예측방법 및 자료 # 인공신경망(Neural Networks, NN)은 인공지능 기계학습 기술 중에서 신경모형 패러다임에 속하며 그 중에서도 신경망을 깊게 구성한 것을 심층신경망(Deep NN, DNN)이라고 부른다. 최근의 심층신경망은 새로운 패러다임을 맞이하여 딥러닝(Deep Learning)이라는 새로운 신조어로 불리우는데, 그 방법에 따라서 합성곱신경망(Convolutional NN, CNN)과 순환신경망(Recurrent NN, RNN), 심층신뢰망(Deep Belief Network, DBN) 등으로 나누어 지며, CNN과 RNN은 지도학습(supervised learning)으로, DBN은 비지도학습(unsupervised learning)으로 분류된다. 또한, CNN과 DBN은 이미지 인식과 같은 독립자료의 처리에 적합하며, RNN은 언어 인식과 같이 자료의 순서가 판단에 필요한 시계열 자료의 처리에 적합하다.따라서 시계열의 연속성을 고려하기 위하여 본 연구에서는 RNN의 방법을 사용하였으며, 특히 RNN의 방법 중에서 장기 기억을 잘 반영할 수 있는 GRU 방법을 사용하였다. 사용된 도구는 알파고를 개발한 구글로부터 개방형으로 제공하는 딥러닝 라이브러리인 Tensorflow를 사용하였다.RNN-GRU는 입력층과 은닉(hidden)층, 출력층으로 구성되는데 입력층에 필요한 입력자료는 전지구 월별 시계열 (1979년 1월 – 2017년 6월, 38년 6개월간) 기간에 대하여 엘니뇨와 관계가 깊을 것으로 판단되는 ECMWF 재분석 자료인 ERA-Interim 자료 중 SST와 GODAS(NCEP Global Ocean Data Assimilation System)의 수심 20m에서의 해수온(T20m)을 위경도 방향으로 20도씩 bin으로 나누어 사용하였다. 각 bin은 육지가 10% 이상 포함되어 있는 지역을 제외한 63개의 분할지역에 대하여 지역 평균 시계열 자료로 구성하였다.이 전 연구에서는 입력층으로 전지구 주요 해역을 북태평양과 적도태평양, 동아시아, 대서양, 인도양 등의 5개 지역으로 나누어 각 지역에 대하여 EOF 분석에 의해 도출된 주요모드 시계열자료를 사용하였었는데, 2015년 후반기와 같은 엘니뇨가 강했던 해는 예측성이 떨어졌으며 그 원인은 원 자료를 2차로 가공하면서 딥러닝 모델의 예측성능을 떨어뜨리는 것으로 판단되었다. 출력자료로 사용되는 Nino 3.4 지역의 SSTA는 OISST(version 2)와 ERSST (version 4), HadISST 등의 기관에서 제공하고 있는데 자료 제공 기간과 자료의 품질이 조금씩 차이를 보이고 있다. 각 자료를 비교 분석해 본 결과, 본 연구의 예측 자료 비교에 주로 사용한 NCEP CPC에서 사용한 SSTA와 가장 유사한 것이 OISST 자료인 것으로 판단되어 이를 출력층 자료로 사용하였다.본 실험에서 예측한 기간은 지난 3년간(2015년~2017년6월)으로 매월마다 예측을 하였으며 각 예측에 대하여 미래 8개월까지 예측을 하였다. 예측 기간과 입력 자료들의 불일치 기간을 제외한 1980년부터 2014년까지의 35년간 자료를 딥러닝 모델의 학습에 사용하였으며, 한번 예측에 미래 8개월을 동시에 예측하도록 many-to-many 방법을 사용 하였다.\n3. 결과 # 매월 단위로 미래 8개월을 예측하는 방법으로 지난 3년간에 대하여 관측치와 예측치를 비교하여 보았다 (그림 2).\n그림 2. Nino 3.4 SST Anomaly 시계열. 관측치: 검은 실선, 예측치 평균: 붉은 실선\n검은 실선은 OISST에서 제공하는 관측치이며, 매월마다 그려진 짧은 실선과 점들은 각 달의 8개월 예측을 나타낸다. 그러므로 해당 월에는 지난 8개월동안 예측한 8개의 예측치가 있으므로 이에 대한 앙상블 평균치를 붉은 실선으로 나타내었다. 2015년 2월~5월 사이에는 11월의 강한 anomaly의 trigger가 되는 시점으로, 많은 예측 모델들이 이에 대한 예측에 어려움을 겪었었는데, 딥러닝 모델에서는 이를 잘 모의한 것으로 나타났다. 좀 더 자세한 비교를 위하여 같은 기간에 대하여 미국 기상청(NCEP)의 기후예측센터(CPC)에서 제공하는 유수 연구소들의 예측결과들과 비교해 보았다 (그림 3).\n그림 3. NCEP CPC에서 제공하는 모델별 앙상블 예측결과들과 딥러닝 모델의 예측결과\n(검은실선: 관측치, 붉은별표실선: 딥러닝예측결과의 앙상블평균)\n예측시점 : 2015년2월(좌상), 2015년8월(우상), 2016년11월(좌하), 2017년6월(우하) 4. 결론 # 본 연구에서는 딥러닝을 이용한 해수면 온도 예측 시스템을 개발하였으며, 이를 이용하여 과거 38년간의 관측 재분석 자료를 기반으로 RNN-GRU 방법으로 Nino 3.4 지역의 해수면 온도 이상을 정량적으로 예측해 보았다. 학습된 모형으로 지난 3년간(2015년1월~2017년6월)에 대하여 수행한 예측 결과들은 선진국의 예측결과들과 비교할 수 있을 정도의 높은 성능을 보여 주고 있으며 실 사용에 바로 사용할 수 있을 정도의 완성도를 보여 주고 있다. 지난 3월에 예측한 올해 8월까지의 예측결과가 실측치와 상당히 일치하고 있는 것과 같이, 이번 연구에서도 내년(2018년) 2월까지의 예측자료를 그림 3(오른쪽아래)에 제공하여 추후에 검증할 예정이다.\n=== END === --- ","date":"2017년 10월 25일","externalUrl":null,"permalink":"/2017/10/RNN_Nino34/","section":"글","summary":"GRU 순환신경망으로 Nino 3.4 해역의 해수면온도 이상을 8개월 앞까지 예측한 연구. 2017년 한국기상학회 추계학술대회 발표 자료입니다.","title":"인공지능 딥러닝을 이용한 엘니뇨 예측시스템 개발","type":"posts"},{"content":"2017년 한국기상학회 추계학술대회\n김동훈, 우승범 (인하대학교)\n서론 # 기상관측장비로부터 수신되는 관측자료들은 운영의 복잡함에 따라 지연수신이 되는 경우가 발생함으로써 관측지점이 많아 질수록 모든 자료가 수신되는 데에는 그 만큼 지연시간이 커지게 된다. 그러므로 기준시간을 넘어서 미수신되는 관측자료를 대체할 수 있다면 여러 가지로 큰 의미를 부여할 수 있을 것이다. 예를들어, 기상예측 성능에 가장 큰 영향을 미치는 자료동화에 있어서 미수신되는 관측자료를 대신하여 자료동화의 품질 향상에 기여할 수 있으며, 수신된 관측자료의 1차 품질관리에도 사용 될 수 있을 것이다. 또한, 바람 관측자료의 10분에서 60분 내의 미래 관측치를 예측한다는 것은 항공기 이착륙과 같은 초단기 예측이 필요한 분야에서 큰 의미를 가질 수 있다.\n기상청에서는 레이더 자료와 위성 자료 등을 이용한 실황 또는 초단기 예측 시스템을 개발하여 예보에 사용하고 있다. 이 예측 시스템들은 기본적으로 내·외삽 방법을 기반으로 하고 있으며, 좀 더 선진방법으로 초단기 순환모형을 사용하는 경우도 있지만 우리나라와 같이 국지적으로 짧은 시간에 발생 또는 소멸되는 기상 시스템에는 예측성능을 높이는데 어려움을 겪고 있다. 따라서, 본 연구에서는 그 동안의 개발 방법과는 다른 인공신경망 딥러닝을 이용한 초단기 예측의 가능성을 진단해 보았다.\n예측방법 및 자료 # 딥러닝(Deep Learning) 방법 중에서 시계열 예측에 적합한 순환신경망(Recurrent Neural Networks, RNN)을 사용하여 예측시스템을 개발하였다. 특히 RNN의 방법 중에서 장기 기억을 잘 반영할 수 있는 GRU 방법을 사용하였다.\nRNN-GRU는 입력층과 은닉(hidden)층, 출력층으로 구성되는데 입력층에 필요한 입력자료는 기상청에서 운영하고 있는 자동기상관측장비(Automated Weather Station, AWS)의 관측자료를 사용하였다. AWS는 1분 단위로 지상의 풍속과 풍향, 기온, 강수량 등을 관측하여 실시간으로 제공하는데, 개발된 딥러닝 모델이 10분 단위로 예측하기 편리하도록 시계열 자료를 10분 평균으로 재구성하여 사용하였다.\n본 연구에서 실험한 예측 지점은 인천공항에서 가까운 영종도 지점(지점번호:543)이며, 이 지점을 포함한 주위의 10개 AWS 관측 지점들의 관측 자료(풍속,풍향,기온,강수량)를 예측인자로 사용하였다(그림 1).\n그림 1. 예측 지점인 영종도 지점(543)을 포함한 주위 10개의 AWS 관측 지점 온라인에서 제공받을 수 있는 자료의 한계로 딥러닝 모델의 학습에 사용한 자료는 2016년 1월1일 00시00분부터 1년간인 2016년 12월 31일 23시59분까지의 자료를 사용하였다. 10분 단위의 1년간 학습기간은 지점 당 하나의 변수가 5만개가 넘기 때문에 자료의 양은 많으나 그 기간이 충분치 않은 면이 있다. 그러나 2016년과 2017년의 기후가 크게 다르지 않다는 가정하에 2016년으로 학습한 모델을 가지고 2017년의 특정일에 대하여 예측해 보았다. 2017년 1월부터 8월까지의 기간 중 인천지역의 최대 풍속이 발생하였던 2017년 1월26~27일과 5월6일, 5월13일, 8월24일에 대하여 각각 예측을 시도하였다.\n초단기 풍속 예측모델은 사용하는 자료가 지상으로 한정되어 있으므로 10분 이상의 예측에는 한계가 있을 것으로 예상되어 관측치의 10분 후 예측을 주요 목표로 삼았으나 확장 가능성을 진단하기 위하여 20분부터 60분까지의 예측도 함께 실시하였다.\n결과 # 2017년 1월부터 현재(8월)까지 영종도 지점의 순간풍속이 7∼8 m/s에 달하였던 1월 26~27일과 5월 6일, 5월 13일, 8월 24일에 대하여 각각 실제 관측자료와 예측 자료를 비교하여 보았다(그림 2∼5).\n그림 2. 사례1: 2017년 1월 26~27일 그림 3. 사례2: 2017년 5월 6일 그림 4. 사례3: 2017년 5월 13일 그림 5. 사례4: 2017년 8월 24일 검은 실선은 AWS 관측치이며, 매 10분마다 그려진 짧은 실선과 점들은 각 해당분에서의 60분까지의 예측을 나타낸다. 붉은 실선은 매 10분마다 10분 후의 관측치를 예측한 결과를 이은 선이다.\n관측 시각으로부터 10분 예측의 경우는 평균제곱오차가 각각 0.51(1월2627일), 0.48(5월6일), 0.47(5월13일), 0.47(8월24일)로 나타났으나, 60분으로 갈수록 예측성능은 급격히 떨어지는 것으로 나타났다. 주위의 20km 내외의 지상바람과 기온, 강수량 만으로 60분 후의 바람을 예측한다는 것은 일반적으로 어려운 것으로 예상할 수 있으며, 지상 자료 뿐만 아니라 상층의 관측자료와 함께 딥러닝 모델을 훈련시키면 좀 더 예측성능을 높일 수 있을 것으로 판단된다. 그럼에도 불구하고 1020분 예측 결과는 상당히 고무적으로 나타나고 있어서 초단기 예측에의 활용 가능성은 높다고 할 수 있다.\n결론 # 본 연구에서는 딥러닝을 이용하여 영종도의 AWS 관측지점에 대하여 10분에서 60분 후의 관측치를 예측해 보았다. 지상에 한정된 관측자료와 훈련에 사용할 자료의 기간이 1년간이라는 단점으로 4060분 후의 예측성능은 높지 않지만, 1020분 후의 예측은 활용하기에 충분한 성능을 보여 주었다. 특히, 딥러닝 모델은 학습과정에서 고성능 컴퓨터와 많은 계산시간이 걸리지만, 학습이 완료된 모델을 사용한 예측 시에는 개인용 컴퓨터로도 순식간에 결과를 도출할 수 있는 장점이 있으므로 실제 응용 가능성이 매우 높다고 할 수 있다.\n=== END === ","date":"2017년 10월 25일","externalUrl":null,"permalink":"/2017/10/RNN_Wind/","section":"글","summary":"영종도와 주변 10개 AWS 관측자료를 GRU 순환신경망에 학습시켜 10분 단위 풍속을 초단기 예측한 연구. 2017년 한국기상학회 추계학술대회 발표 자료입니다.","title":"인공지능 딥러닝을 이용한 영종도의 초단기 풍속 예측성 연구","type":"posts"},{"content":"","date":"2017년 10월 25일","externalUrl":null,"permalink":"/tags/%ED%92%8D%EC%86%8D/","section":"태그","summary":"","title":"풍속","type":"tags"},{"content":"** 본 연구 내용은 한국해양학회의 2017년 춘계학술대회에서 발표한 초록을 옮긴 것입니다.*\n인공신경망 딥러닝(Deep Learning)을 이용한 엘니뇨 예측성 연구\n인공신경망(Neural Networks, NN)을 깊게 구성한 것을 심층신경망(Deep NN, DNN)이라고 부르며 최근의 심층신경망은 새로운 패러다임을 맞이하여 딥러닝(Deep Learning)이라는 신조어로 불리운다. 심층신경망은 그 방법에 따라서 합성곱신경망(Convolutional NN, CNN)과 순환신경망(Recurrent NN, RNN), 심층신뢰망(Deep Belief Network, DBN) 등으로 나누어 진다.\nCNN과 DBN은 이미지 인식과 같은 독립자료의 처리에 적합하며, RNN은 언어 인식과 같이 자료의 순서가 중요한 시계열 자료의 처리에 적합하다. 따라서, 시계열의 연속성을 고려하기 위하여 본 실험에서는 RNN의 방법을 사용하였으며, 특히 엘니뇨 예측에 사용되는 전지구 SST 월별 시계열 자료가 38년간(1979년∼2016년)의 자료이므로 RNN에서 장기 기억을 반영할 수 있는 GRU (Gated Recurrent Unit) 방법을 사용하여 엘니뇨 3.4 지역의 SST를 예측해 보았다.\n사용된 도구는, 알파고를 개발한 구글이 개방형으로 제공하는 딥러닝 라이브러리인 Tensorflow를 사용하였다.\nRNN-GRU는 입력층과 은닉(hidden)층, 출력층으로 구성되는데 입력층에 필요한 입력자료는 ERA-Interim 전지구 월별 시계열 SST 자료 (1979∼2016, 38년간)를 위경도 방향으로 20도씩 bin으로 나누어 사용하였다. 각 bin은 육지가 포함되어 있는 지역과 예측 대상지역인 엘니뇨 3.4 지역을 제외한 지역에 대해서 평균 시계열 자료를 사용하였다.\n또 다른 방법으로 전지구 주요 해역을 5개 지역으로 나누어 각 지역에 대하여 EOF 분석 시계열자료를 사용한 실험도 함께 수행하였으나, 2015년과 같은 엘니뇨가 강했던 해는 예측성이 떨어졌으며 그 원인은 원 자료를 2차로 가공하면서 딥러닝 모델의 예측성능을 떨어뜨리는 것으로 판단되었다.\n본 실험에서 예측한 기간은 지난 2년간(2015년∼2016년)으로 매월마다 예측을 하였으며 각 예측에 대하여 미래 8개월까지 예측을 하였다. 예측 기간을 제외한 1979년부터 2014∼5년까지 36∼7년간의 자료는 RNN-GRU의 학습에 사용하였으며 최근의 기후변화에 대한 영향을 고려하기 위하여 딥러닝 학습기간을 최근을 기준으로 36년간과 20년간, 10년간으로 나누어 각각 실험을 하였다. 딥러닝으로 학습된 예측모형은 내부적으로 랜덤함수를 사용하기 때문에 같은 실험이라도 최종 결과에 편차를 발생하므로 동일 실험에 대하여 각각 3번의 앙상블 실험을 하여 평균값으로 그 예측 결과를 대신하였다.\n최근의 주요 이슈기간에 대하여 예측결과를 미국 NOAA에서 제공하는 유수 연구소들의 예측결과들과 비교해 보았으며, 2015년 가을의 강한 엘니뇨 뿐만 아니라 최근의 경향을 잘 모의 하는 것으로 나타났다.\n그림1. 미국 NOAA의 Climate Prediction Center에서 제공하는 모델별 앙상블 예측 결과들\n(좌:2015년7월, 중:2016년3월, 우:2017년1월)\n그림2. 동일 기간에 대하여 관측값(굵은실선)과 순환신경망(RNN)을 이용하여 예측한 결과들\n(좌:2015년7월, 중:2016년3월, 우:2017년1월)\n","date":"2017년 5월 7일","externalUrl":null,"permalink":"/2017/05/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D-%EB%94%A5%EB%9F%AC%EB%8B%9DDeep-Learning%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%97%98%EB%8B%88%EB%87%A8-%EC%98%88%EC%B8%A1%EC%84%B1-%EC%97%B0%EA%B5%AC/","section":"글","summary":"2017년 한국해양학회 춘계학술대회 발표 초록. GRU 순환신경망으로 Nino 3.4 해역의 해수면온도를 예측해 본 선행연구입니다.","title":"인공신경망 딥러닝(Deep Learning)을 이용한 엘니뇨 예측성 연구","type":"posts"},{"content":" Install libevent\nbrowse http://libevent.org and download the latest version of libevent.\ntar zxf libevent.tar.gz cd libevent ./configure --prefix=/usr/local make \u0026amp;\u0026amp; make install Install ncurses\nbrowse http://ftp.gnu.org/gnu/ncurses and download the latest version of ncurses.\ntar zxf ncurses.tar.gz cd ncurses ./configure --prefix=/usr/local make \u0026amp;\u0026amp; make install Install tmux\nCygwin :\ninstall autoconf, automake, and pkg-config to cygwin if not.\ngit clone http://git.code.sf.net/p/tmux/tmux-code tmux-tmux-code cd tmux-tmux-code ./autogen.sh (will see many warnings; if it complains about \\r not found, convert autogen.sh to use Unix line endings with mv autogen.sh temp.sh; dos2unix -o autogen.sh temp.sh) run \u0026ldquo;./configure \u0026ndash;prefix=/usr/local\u0026rdquo; if failed to make Makefile CFLAGS=\u0026#34;-I/usr/local/include/ncurses\u0026#34; ./configure --prefix=/usr/local make \u0026amp;\u0026amp; make install Linux or Unix :\nbrowse http://tmux.sourceforge.net and download the latest version of tmux.\ntar zxf tmux.tar.gz cd tmux CFLAGS=\u0026#34;-I/usr/local/include -I/usr/local/include/ncurses\u0026#34; LDFLAGS=\u0026#34;-L/usr/local/lib\u0026#34; ./configure --prefix=/usr/local make \u0026amp;\u0026amp; make install Configure tmux\nto use the Solarized color scheme, see here.\nto manually adjust colors, fonts, cursor shape, and more right-click the window title bar and select \u0026ldquo;Options\u0026hellip;\u0026rdquo;.\ncreate a .tmux.conf file include at least this line so the mouse and arrow keys can be used to switch panes:\nset -sg escape-time 250\nfor more information about tmux configuration, see here.\n","date":"2014년 1월 5일","externalUrl":null,"permalink":"/2014/01/Steps-to-install-tmux/","section":"글","summary":"tmux 설치 절차. libevent와 ncurses부터 Cygwin과 Linux 각각의 경우로 나누어 정리했습니다.","title":"Steps to install tmux","type":"posts"},{"content":"","date":"2014년 1월 5일","externalUrl":null,"permalink":"/tags/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/","section":"태그","summary":"","title":"프로그래밍","type":"tags"},{"content":"아래글의 편집권은 김동훈에게 있습니다.\n[OGCM 소개]\n전지구 대순환모형(Ocean General Circulation Model, OGCM)은 수치계산의 편의성을 도모하기 위하여 대부분 정수역학을 따르는 원시방정식(hydrostatic primitive equations)을 사용한다. 연직방향으로 지오포텐셜(z- or height) 좌표계를 사용하는 모형들이 가장 많으며 최근에는 지형추적(terrain-following, )과 등밀도(isopycnal)에 따른 좌표계를 사용하는 모형들도 개발되고 있다.\n전지구 대순환모형에서 사용되는 일반화된 비점성 정수역학 원시방정식은 다음과 같으며 는 지오포텐셜 좌표계의 경우 , 지형추적 좌표계의 경우 , 등밀도 좌표계의 경우 를 의미한다.\n해양순환모형에는 전지구 대순환모형 이 외에도 지역순환모형(Regional Ocean Circulation Model)인 ECOM-si, POM, ROMS 등이 있으며, 국지 또는 연안 순환모형(Coastal Ocean Circulation Model)인 ADCIRC, FVCOM, SELFE 등의 수많은 모형들이 존재한다. 여기에서는 수많은 해양순환모형들 중에서 전지구를 대상으로 하는 대순환모형(OGCM)에 대해서만 그 주요특징들을 간략하게 설명하도록 하겠다. 모형의 설명 순서는 알파벳 순으로 나열하였다.\n□ C-GOLDSTEIN : The C-GOLDSTEIN project\nhttp://www.noc.soton.ac.uk/JRD/LSM/CGOLD/\n이 모형은 간단화된 에너지-수분 균형(simplified energy-moisture balance) 대기모형과 열역학 해빙모형이 해양순환모형과 결합된 지구시스템 모형으로써 수천년에 이르는 기후변동을 매우 빠르게 모의하기 위해 개발된 고속 계산형 모형이다. 이 모형은 NERC e-Science project 인 GENIE(Grid ENabled Integrated Earth system modelling)의 토대가 되었으며 현재 버전 2가 개발되어 있다.\n□ CHIME (Coupled Hadley-Isopycnic Model Experiment) : a new UK coupled climate model\nhttp://www.noc.soton.ac.uk/JRD/LSM/CHIME/\nSouthampton 해양센터에서 새롭게 개발된 결합 기후모형으로써 OASIS 결합자를 이용하여 헤들리센터의 HadCM3 대기모형과 HYCOM 해양모형을 결합한 모형이다. 해양모형의 특징으로는 북극의 극점을 두 개로 나누어 육지로 옮긴 bipolar grid를 사용한 것이다. 이 모형의 장기모의 결과를 HadCM3 결합모형과 비교함으로써 하이브리드 좌표계를 사용하는 해양모형이 장기 기후모의에 미치는 영향을 분석할 수 있다.\n□ ECBilt/Clio\nhttp://www.knmi.nl/onderzk/CKO/ecbilt.html\nECBilt-Clio 모형은 중복잡(intermediate-complexity) 3차원 대기-해양-해빙 결합 대순환모형이다. 대기모형은 스펙트랄 T21 해상도의 ECBilt 모형(Opsteegh et al., 1998)이며 해양모형은 자유수면 모형으로 열역학-역학 해빙모형과 결합된 Clio 모형(Goosse and Fichefet, 1999)이다. Clio 모형의 수평해상도는 위경도 모두 3°이며 연직 방향으로 20개의 층으로 구성되어 있다. 이 모형은 현재 버전 3까지 개발되어있다.\n□ FORTE : a fast Coupled General Circulation Model\nhttp://www.noc.soton.ac.uk/JRD/LSM/FORTE/\nSinha와 Smith (2002)에 의해 개발된 이 모형은 중저해상도의 해양-대기 결합모형으로써 수 일에서 수 천년까지 모의가 가능한 모형이다. 이 모형은 OASIS 결합자를 이용하여 해양과 대기가 결합되었으며 사용된 해양모형은 MOM을 기본으로 개발된 MOMA(Webb, 1993)이고 대기모형은 영국 리딩대학에서 개발한 스펙트럴 모형의 IGCM3이다. 이 모형의 가장 큰 특징은 빠른 계산에 있는데 예를 들자면, AMD 1800XP CPU를 사용한 싱글 개인용 컴퓨터에서 100년 적분하는데 최대 50시간 밖에 걸리지 않는다.\n□ GISS AOM (Atmosphere-Ocean Model)\nhttp://aom.giss.nasa.gov/\n미국 나사의 고다드 연구소(Goddard Institute for Space Studies, GISS)에서 수십년에서 수세기까지의 기후 예측을 위해 개발한 전지구 대기-해양 결합 모형이다. 이 모형은 4×3 AOM 으로 불리며, 대기와 해양 모두 경도 4도와 위도 3도의 해상도를 가지고 있고 연직으로는 대기모형은 12개의 층과 해양모형은 16개의 층으로 구성되어 있다.\n□ HIM (Hallberg Isopycnal Model)\nhttp://www.gfdl.noaa.gov/him-the-hallberg-isopycnal-model\nHIM은 C-grid 기반의 등밀도 좌표계를 사용한 해양순환모형이며 modular C 프로그램언어로 쓰여졌다. 연직으로 등밀도 좌표계를 사용하기 때문에 MICOM 모형과 물리적으로 유사하지만, 프로그램 기법은 완전히 다른 모형이다. 최적화된 C의 모듈프로그램으로 다양한 시간적분기법이나 모수화, 차분화 등을 쉽게 적용해 볼수 있는데, 실예로 모형 내에 두가지 완전히 다른 시각적분 기법이 적용되어 있다. 이 모형은 GFDL의 GOLD 모형의 토대가 되는 모형이다.\n□ HOPE (Hamburg Ocean Primitive Equation model)\nhttp://meteora.ucsd.edu/~pierce/elnino/hope.html\n독일의 막스플랑크 연구소(the Max Plank Institut for Meteorologie in Hamburg)에서 개발된 모형으로 열대 태평양에서의 혼합모수화에 상당한 노력을 기울인 모형이기 때문에 열대 태평양의 해류재현에 뛰어난 성능을 발휘하는 모형이다. 이 모형은 E-grid 기반으로 개발되어 그리드 형태가 통상의 박스 형태가 아닌 다이아몬드 형태를 가진다. 해상도는 기본 1° 간격으로 적도 부근에서는 0.5°로 줄어들며, 고위도로 갈수록 1.5°까지 늘어나게 구성되어있다.\n□ HYCOM (HYbrid Coordinate Ocean Model)\nhttp://hycom.org\nHYCOM은 GODAE(U.S. Global Ocean Data Assimilation Experiment)의 National Ocean Partnership Program(NOPP)의 지원으로 자료동화된 혼합 등밀도-시그마-수압 좌표체계의 해양모형(data-assimilative hybrid isopycnal-sigma-pressure coordinate ocean model)의 검증을 위해 개발되었다. 이 모형은 MICOM을 기반으로 개발되었으며 MICOM의 단점인 연직 등밀도 좌표계를 보완하는 방법으로 개선되었다. 성층화가 잘되어 있는 곳은 등밀도 좌표계를 쓰며, 성층화가 약한 표층의 혼합층 같은 곳은 z-좌표계를 사용하고 수심이 얕은 곳은 지형추적 시그마 좌표계(terrain-following sigma coordinate)를 사용한다. HYCOM은 모형 개발 뿐만 아니라 자료동화에 의한 해양 현황 및 예측자료를 전지구에 대해 1/12°와 멕시코만에 대해 1/25° 해상도의 자료를 2003년부터 현재까지 제공하고 있다.\n□ MICOM (Miami Isopycnic Coordinate Ocean Model) – Global\nhttp://oceanmodelling.rsmas.miami.edu/ , ftp://nutmeg.rsmas.miami.edu/bleck/global/\nMICOM은 등밀도 좌표체계의 해양순환모형이며, 다음과 같이 여러 기관에서 여러 버전의 모형이 개발되었다.\nMICOM at LANL MICOM at Netherlands Center for Climate Research MICOM – Parallel, Box, Global, Atlantic 등 또한, 이 모형은 HYCOM과 HIM 등의 모형의 토대가 되었으며, 원형은 지역해양순환모형으로 개발되었으나 전지구 모의가 가능한 버전도 제공을 한다.\n□ MITgcm (MIT General Circulation Model)\nhttp://mitgcm.org/\nMITgcm은 다른 해양순환모형에 비하여 선도적인 특징을 가지고 있는 모형이다. 대부분의 해양순환모형은 정수역학체계의 모형인데 비하여 MITgcm은 비정수역학체계를 지원하며, 대기-해양 결합모형의 내부 역학코드를 하나로 통일하여 사용하되 대기와 해양의 물리부분만을 독립시킨 모형이다.\n대기와 해양의 역학코드를 통일하고 물리코드만 독립하여 개발하는 구성도 에서부터\n비정수역학체계의 지원으로 국지적 현상 지구규모의 현상까지 모의 가능\n□ MOM (GFDL Modular Ocean Model)\nhttp://www.gfdl.noaa.gov/ocean-model 원시방정식을 처음으로 수치모형화한 것은 GFDL(Geophysical Fluid Dynamics Laboratory)의 Bryan(1969)과 Cox(1984) 이다. 1960년~1980년대에 걸쳐 개발된 이 모형은 1984년에 처음으로 전세계에 배포 되었다 (Cox, 1984). 이 모형에 포트란 프로그램의 모듈화를 도입하면서 모형의 이름을 MOM(Modular Ocean Model) 이라 명명하고 1991년에 첫 번째 버전을 발표하였다 (Pacanowski et al., 1991). 이후에 MOM2(Pacanowski, 1995)와 MOM3(Pacanowski and Griffies, 1999)이 계속적으로 발표되었으며, 현재 널리 사용되는 MOM4는 MOM4.0이 2003년 10월에, MOM4p1이 2009년 12월에 발표되어 세계에서 가장 많이 사용하는 전지구 대순환모형으로 자리잡고 있다.\nMOM4p1의 특징들을 나열해보면 다음과 같다.\n연직좌표계는 지오포텐셜 좌표계(geopotential coordinate) 이 외에도 수심기반 시그마 좌표계(depth based terrain following sigma coordinate)와 수압 좌표계(pressure coordinate), 수압기반 시그마 좌표계(pressure based terrain following sigma cooridnate) 등을 지원\n명시적 자유수면 및 해저압력 계산 기법 제공\n추적자(tracer)와 경압 유속장의 시간적분 방법으로 leap-frog 와 two-level forward step의 방법을 제공하며 후자의 방법을 추천함\n코리올리 힘의 계산에 가장 일반적으로 사용되는 반암시적 방법 사용\n상태방정식은 Jackett et al. (2006)의 최신 방법을 도입\n저해상도에서 복잡한 해저지형을 좀 더 현실적으로 반영하기 위한 partial bottom step technology 방법 지원 (Pacanowski and Gnanadesikan, 1998)\n아격자 모수화 기법으로는 다음과 같은 기법들을 제공\nHorizontal friction : Smagorinsky laplacian and biharmonic scheme (Griffies and Hallberg, 2000)과 anisotropic laplacian 기법 (Large et al., 2001 and Smith and McWilliams, 2003)\nNeutral physics and boundary regions : Ferrari et al. (2008)의 경 계지역 내에서의 nuetral physics 처리 기법 추가\nRestratification effects from submesoscale eddies : Fox-Kemper et al. (2008)의 모수화 방법 지원\nFrom drag : 아격자 내의 에디들로부터 유발되는 form drag의 모수화 기법 지원\n조석 혼합 모수화 기법 제공\n다양한 연직 혼합 모수화 기법 제공 : 상수, PP, KPP, GOTM 등\n□ NEMO (Nucleus for European Modeling of the Ocean)\n= OPA (Ocean PArallelise)\nhttp://www.nemo-ocean.eu/\nOASIS 결합자를 이용하여 다음과 같은 모형들이 결합되어 있는 모형이다.\n해양 : NEMO-OPA 해빙 : NEMO-LIM 생태 : NEMO-TOP 자료동화 : NEMO-TAM 대기모형은 UKMO 모형을 비롯하여 여러 가지 모형들에 결합되어 사용되고 있다.\n□ NLOM (Navy Layered Ocean Model)\nhttp://www7320.nrlssc.navy.mil/global_nlom/\nNRL(Naval Research Laboratory)의 LSM(Large Scale Models) 프로젝트의 일환으로 개발된 모형으로 다양한 컴퓨터에 확장성이 뛰어난 모형으로 인정되는 모형이다. 분산메모리 병렬화에서부터 다중프로세서 공유메모리 병렬화까지 지원하며 다양한 슈퍼컴퓨터에 이식되어 사용되었고 개인용 비병렬 컴퓨터에서도 사용할 수 있는 모형이다.\n□ NCOM (NCAR CSM Ocean Model)\nhttp://www.cesm.ucar.edu\n미국 NCAR의 CESM 모형과 CCSM 모형의 전신인 CSM 결합모형에서 해양대순환모형으로 사용한 모형이다. 이 모형은 GFDL의 MOM 버전 1.1을 기반으로 개발되었으나 이 후에 CCSM과 CESM은 해양모형을 POP 모형으로 교체하여 현재는 개발이 중단되었다.\n□ OCCAM(Ocean Circulation and Climate Advanced Modelling Project)\nhttp://www.noc.soton.ac.uk.JRD/OCCAM/\nGFDL의 초기 MOM 버전을 array processor 버전으로 개발한 MOMA 모형을 이용하여 고해상도 전지구 모형으로 개발한 모형이다. 초기에 1/4° 해상도에서부터 1/8°, 1/12° 해상도의 모형까지 개발되었다. OCCAM 모형의 특징은 극지역의 특이점을 해소하기 위해서 극을 적도쪽으로 이동한 rotated grid를 사용한다.\n□ POP (Parallel Ocean Program)\nhttp://climate.lanl.gov/Models/POP/\nGFDL MOM의 초기버전인 Bryan, Cox, Semtner and Chervin 모형으로부터 개발된 병렬최적화된 모형으로 LANL(Los Alamos National Laboratory)에서 개발하였다. 북극의 특이점 해소를 위해서 극을 육지로 옮기는 dipolar grid와 육지에 두 개의 극을 만드는 tripolar grid를 지원한다. POP은 초기에 CM-5 컴퓨터를 이용하기 위하여 개발되었으나 현재는 MPI와 SHMEM을 사용할 수 있도록 병렬화되고 전지구 1/10°까지 고해상도 모형으로 개발되어 전지구 에디재현 모형으로 인정받고 있다. 또한, 이 모형은 POP 버전 2로 개선되어 NCAR의 CCSM과 CESM 의 해양모형으로 채택되어 사용되고 있다.\ndipolar grid tripolar grid\n□ Poseidon\nhttp://grads.iges.org/poseidon/\nIGES(Institute of Global Environment and Society)에서 개발한 Poseidon 모형은 연직방향으로 표층의 혼합층은 수심에 의해 나누고 심해는 등밀도에 의해 나누며 두 경계를 있는 완충지역은 시그마층으로 연결하는 좌표계를 사용한다. 수평 격자체계는 극의 특이점을 해소하기 위하여 직각곡선좌표계(orthogonal curvilinear coordinate)를 사용한다.\n□ POSUM (Parallel Oregon State University Model)\nhttp://posum.oce.orst.edu\n연직방향으로 등밀도 좌표계를 사용하고 자유수면을 가지는 모형이다. 대부분의 해양순환모형은 계산의 편의를 위하여 Boussinesq 가정을 사용하는데 비하여 POSUM 모형은 이 가정을 사용하지 않는 non-Boussinesq 모형으로 해수팽창 등의 체적변화를 고려할 수 있는 모형이다.\n□ SEA (Southamption - East Anglia parallel pcean circulation model)\n= MOMA (Modular Ocean Model – Array processor version)\nhttp://www.uea.ac.uk/menu/acad_depts/mth/ocean/SEA/\n초기의 MOM 모형을 array processor 버전으로 개발한 모형으로 MOMA라고 불리며 자유수면 기법을 적용한 모형이다. 이 모형은 고해상도 전지구 모형의 개발을 목적으로 하는 영국의 Ocean Circulation and Climate Advanced Modelling (OCCAM)에 기본 모형으로 사용되었으며 첫 번째 전지구 에디 재현 모형으로 인정되고 있다. 이 후에 일반적 목적의 간단하고 병렬최적화된 모형으로 개발되어 SEA라고 불리워진다.\n□ SEOM (Spectral Element Ocean Model)\nhttp://marine.rutgers.edu/po/index.php?model=seom\nSEOM은 정수역학과 비정수역학을 선택하여 사용할 수 있는 모형이며 수평적으로 spectral element 방법을 사용한 모형이다. 2차원 버전과 3차원 버전이 있으며, 2차원 버전은 천수방정식을 사용하여 전지구 조석모의 등에 사용되었고 3차원 버전은 개발 중에 있다.\n참고문헌\nBryan, K., 1969: A numerical method for the study of the ciruclation of the world ocean. J. Comput. Phys., 4, 347-376.\nCox, M.D., 1984: A primitive equation three-dimensional model of the ocean. Tech. Rep. 1. GFDL Ocean Group, Princeton University.\nFerrari, R., McWilliams, J., Canuto, V., and Dobovikov, M., 2008: Parameterization of eddy fluxes near oceanic boundaries, Journal of Climate, 21, 2770-2789.\nFox-Kemper, B., Ferrari, R., and Hallberg, R. 2008: Parameterization of mixed layer eddies. I: Theroy and diagnosis, Journal of Physical Oceanography, 38, 1145-1165.\nGoosse H. and T. Fichefet, 1999: Importance of ice-ocean interactions for the global ocean circulation: a model study. Geophysical Research, 104(C10), 23337-23355.\nGriffies, S.M. and Hallberg, R.W., 2000: Biharmonic friction with a Smagorinsky viscosity for use in large-scale eddy-permitting ocean models, Monthly Weather Review, 128, 2935-2946.\nJackett, D.R., McDougall, T.J., Feistel, R., Wright, D.G., and Griffies, S.M., 2006: Algorithms for density, potential temperature, conservative temperature, and freezing temperature of seawater, Journal of Atmospheric and Oceanic Technology, 23, 1709-1728.\nLarge, W.G., Danabasoglu, G., McWilliams, J.C., Gent, P.R., and Bryan, F.O., 2001: Equatorial circulation of a global ocean climate model with anisotropic horizontal viscosity, Journal of Physical Oceanography, 31,518-536.\nOpsteegh, J.D., R.J. Haarsma, F.M. Selten and A. Kattenberg, 1998: ECBilt a dynamic alternative to mixed boundary ocean models. Tellus, 50A, 348-367.\nPacanowski, R.C. and Gnanadesikan, A., 1998: Transient response in a z-level ocean model that resolves topography with partial-cells, Monthly Weather Review, 126, 3248-3270.\nPacanowski, R.C., Dixon, K., and Rosati, A., 1991: The GFDL Modular Ocean Model User Guide, NOAA/Geophysical Fluid Dynamics Laboratory, Princeton, USA, 16 pp.\nSinha, B. and Smith, R.S., 2002: Development of a fast Coupled General Circulation Model (FORTE) for climate studies, implemented using the OASIS coupler, Southampton Oceanography Centre Internal Document 81.\nSmith, R.D. and McWilliams, J.C., 2003: Anisotropic horizonal viscosity for ocean models, Ocean Modelling, 5, 129-156.\nWebb, D.J., 1993: An ocean model code for array processor computers, Institute of Oceanographic Sciences, Deacon Laboratory, Internal document, No. 324, 21pp.\n","date":"2013년 3월 19일","externalUrl":null,"permalink":"/2013/03/%EC%A0%84%EC%A7%80%EA%B5%AC%ED%95%B4%EC%96%91%EC%88%9C%ED%99%98%EB%AA%A8%ED%98%95OGCM%EC%9D%98-%EC%86%8C%EA%B0%9C/","section":"글","summary":"전지구 해양순환모형(OGCM)의 개요. 지배방정식과 연직 좌표계, 그리고 주요 모형들을 정리했습니다.","title":"전지구해양순환모형(OGCM)의 소개","type":"posts"},{"content":"","date":"2013년 3월 19일","externalUrl":null,"permalink":"/tags/%ED%95%B4%EC%96%91%EB%AA%A8%EB%8D%B8/","section":"태그","summary":"","title":"해양모델","type":"tags"},{"content":"WRF ARW 모형에서 사용되는 지도 투영법에 대하여 WRF turorial 에 좋은 자료가 있어서 편집해 보았습니다. 지역 설정에서 실제 위도 ( True latitude )를 어떻게 설정하는지를 알 수 있습니다.\n","date":"2012년 6월 14일","externalUrl":null,"permalink":"/2012/06/WRF-ARW-%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94-%EC%A7%80%EB%8F%84-%ED%88%AC%EC%98%81%EB%B2%95-Map-Projections/","section":"글","summary":"WRF ARW에서 쓰는 지도 투영법 다섯 가지를 그림으로 비교. 실제 위도(true latitude)를 어떻게 설정하는지 알 수 있습니다.","title":"WRF ARW 에서 사용되는 지도 투영법( Map Projections )","type":"posts"},{"content":"","date":"2012년 6월 14일","externalUrl":null,"permalink":"/tags/%EB%8C%80%EA%B8%B0%EB%AA%A8%EB%8D%B8/","section":"태그","summary":"","title":"대기모델","type":"tags"},{"content":"참고1 : WRF v4로 태풍 솔릭(Soulik) 모의해 보기\n참고2 : WRF v3.1 설치기는 /2009/09/WRF-ARW-v31-설치기/ 를 보세요.\n[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 된다.]\ntar -xvzf WRFV3.4.TAR.gz; tar -xvzf WPS3.4_r675.TAR.gz cd WRFV3; ./configure -\u0026gt; 1번 선택, 1번 선택 ./compile em_real \u0026gt;\u0026amp; compile.log cd ../WPS; ./configure -\u0026gt; 5번 선택 ./compile \u0026gt;\u0026amp; compile.log ./geogrid.exe; ./ungrib.exe; ./metgrid.exe cp ./met_em* ../WRFV3/run/.; cd ../WRFV3/run; ./real.exe ./wrf.exe WRF에는 두가지 버전이 있다. ARW와 NMM\u0026hellip;\nARW는 연구용이고 NMM은 현업용이라고 생각하면 구별하기 쉬우며,\nNMM에서는 어려운, 즉 ARW만이 할 수 있는 것은 다음과 같다.\n지역 기후 또는 계절 단위의 현상 연구 화학 모형과의 결합 전지구 모의 (지역모형을 전지구 영역으로 확장하여 모의할 수 있음) 다양한 규모의 이상적인 모의 (예: convection, baroclinic waves, large eddy simulations) 자료동화 연구 그래픽 및 분석 도구로써 NCL과 ARWPost를 사용 가능 WRF 시스템은 다음과 같이 구성된다.\nWRF 전처리도구: WPS (WRF Pre-processing System) WRF 모형 : ARW와 NMM 버전이 있다. 과학가시화 도구 변분자료동화 : WRF-Var 화학 결합 모형 : WRF-Chem 지금부터 WRF ARW v3.4을 설치해 보자. (이상적인 경우가 아닌 실제 지형의 경우를 설치함)\nWRF 모형의 다운로드 : http://www.mmm.ucar.edu/wrf/users/download/get_source.html\n처음 사용자는 홈페이지 아래에 있는 \u0026ldquo;New Users\u0026quot;를 클릭하고 이메일 주소를 등록한 후 받으면 되며,\n기존 사용자는 \u0026ldquo;Returning Users\u0026quot;를 클릭하고 등록된 이메일 주소로 로그인하여 받으면 된다.\n소스코드는 ARW와 NMM 버전이 하나의 화일에 함께 포함되어 있으며,\n데이타는 각각 따로 받아야 한다.\n다음과 같이 WRF의 홈디렉토리를 생성하고 WRF와 WPS의 압축파일을 풀어준다.\n% mkdir WRF; cd WRF % tar -xvzf ../WRFV3.4.TAR.gz -\u0026gt; \u0026#34;WRFV3\u0026#34; 디렉토리가 생성된다. % tar -xvzf ../WPSV3.4_r675.TAR.gz -\u0026gt; \u0026#34;WPS\u0026#34; 디렉토리가 생성된다. 컴파일 순서는 WPS가 WRFV3의 objects 화일들을 참조하기 때문에 WRFV3 부터 컴파일한다.\n사용자 시스템에 맞는 환경으로 컴파일 하기 위하여 WRFV3.1의 환경설정을 한다.\n우선, 환경변수에 \u0026ldquo;NETCDF\u0026rdquo; 가 있는지 확인하고 없으면 다음과 같이 설정해 준다.\n% setenv NETCDF */usr/local/netcdf* 또는 % setenv NETCDF $NETCDFHOME WRF의 홈디렉토리로 이동하여 환경설정을 한다.\n% cd WRFV3; ./configure 1~34 까지의 선택항목이 나오는데 다음을 참조하여 선택한다.\n(serial) : 1개 CPU를 사용할 경우. 처음 사용자는 이것으로 선택하여 나중에 병렬화를 하는 것이 좋음\n(smpar) : OpenMP를 사용할 경우 (단일보드나 단일노드 내에서의 병렬화로 생각하면 됨)\n(dmpar) : MPI를 사용할 경우 (다중보드나 다중노드간의 병렬화를 할 수 있음)\n(dm+sm) : OpenMP와 MPI를 동시에 사용할 경우. 노드 내에는 OpenMP로, 노드 간은 MPI로 사용 여기에서는 최근 가장 많이 사용되고 있는 intel fortran compiler를 이용하는 13번을 선택하여 진행함. (13. Linux x86_64, i486 i586 i686, ifort compiler with icc (serial))\nCompile for nesting? 항목은 1번(basic)을 선택한다.\nnesting 이란 하나의 격자체계 내에 또 다른 작은(고해상도) 격자체계를 구성하여 연결하는 것을 말함 configure가 끝나면 configure.wrf 가 생성된다.\nvi 등의 에디터로 이 화일을 열어 수정할 곳을 수정하면 되는데\n처음 시작할 때 NETCDF 환경변수가 잘못되었거나 설정을 해주지 않은 경우는\n228줄에 있는 \u0026ldquo;NETCDFPATH\u0026quot;를 시스템에 설치되어 있는 위치로 알맞게 수정해 준다.\n이제 컴파일을 해야 하는데 다음과 같은 명령으로 소스를 컴파일한다.\n% ./compile *TEST_NAME* \u0026gt;\u0026amp; compile.log TEST_NAME 에는 다음의 경우 중 하나를 선택하면 되며 여기에서는 em_real을 사용한다.\nem_b_wave ; 3D baroclinic waves em_esmf_exp ; em_fire ; em_grav2d_x ; 2D gravity current em_heldsuarez ; 3D global case em_hill2d_x ; 2D flow over a bell-shaped hill em_les ; 3D large-eddy simulation em_quarter_ss ; 3D quarter-circle shear supercell simulation em_real ; Real Data Case em_scm_xy ; Single column model em_seabreeze2d_x ; 2D full physics seabreeze em_squall2d_x ; 2D(x,y) squall line example for Eulerian mass coordinate model em_squall2d_y ; 2D(x,y) squall line example for Eulerian mass coordinate model exp_real ; nmm_real ;\ncompile.log의 내용 중 \u0026ldquo;Error\u0026rdquo; 또는 \u0026ldquo;warnings\u0026rdquo; 등의 단어를 찾아보고 없으면 컴파일을 성공한 것이다.\n그렇지 않으면, 문제가 있는 곳을 모두 해결할 때까지 다음과 같이 반복하여 컴파일 해야 한다. % ./clean -a ; ./configure % ./compile *TEST_NAME* \u0026gt;\u0026amp; compile.log 컴파일 시간은 시스템에 따라 다르지만, Intel Xeon X5450(3Ghz)에서는 약 10~20분 정도 걸린다.\n컴파일이 성공하면 다음의 실행화일들이 생성된다.\nmain/ndown.exe ; 한방향 nesting에 사용 main/nup.exe ; Upscaling - WRF-Var(자료동화)에 사용. 잘 사용되지 않음. main/real.exe ; 실제 자료를 사용한 초기장 생성에 사용.\n이상적인 실험일 경우는 ideal.exe임. main/tc.exe ; main/wrf.exe ; WRF 모형의 실행 화일이며 이것으로 시간 적분을 수행\n이 실행화일들은 각각 \u0026ldquo;run/\u0026ldquo;과 \u0026ldquo;test/em_real/\u0026rdquo; 아래에 링크되어 사용된다. WRF 모형을 모두 설치하였으므로,\n이제부터는 전처리 시스템인 WRF Preprocessing System(WPS)를 설치한다.\n% cd ../WPS; ./configure 1~26 까지의 선택항목이 나오는데 GRIB2 가 설치되어 있으면 13번, 그렇지 않으면 14번을 선택한다.\n그러면, \u0026ldquo;configure.wps\u0026quot;가 생성되는데, 화일의 내용 중에 \u0026ldquo;NCARG_LIBS\u0026quot;나 \u0026ldquo;WRF_DIR\u0026rdquo; 등이 제대로 설정되어 있는지 확인한다.\n다음과 같이 컴파일을 실행한다.\n% ./compile \u0026gt;\u0026amp; compile.log WPS에서는 X11 라이브러리를 사용하는데 시스템에 따라 기본 X11 라이브러리 디렉토리가 32비트로 설정되는 경우가 있다.\n이런 경우 compile.log 화일 내에 \u0026ldquo;Error\u0026quot;가 나타나는데, 이것은 컴파일 하기 전에 configure.wps의 19줄에 있는 \u0026ldquo;-L/usr/X11R6/lib\u0026quot;를 \u0026ldquo;-L/usr/X11R6/lib64\u0026quot;로 수정한 후 컴파일 하면 된다.\n컴파일을 성공하면 다음의 실행화일들이 생성된다.\ngeogrid.exe ; namelist.wps에 설정되어 지역에 맞추어 terrestrial data 생성 ungrib.exe ; GRIB 형식의 기상 자료를 읽어서 WRF에서 사용할 수 있는 중간 형식으로 변환 metgrid.exe ; ungrid 등으로 생성된 기상 입력자료의 중간변환 자료를 격자체계에 맞게 수평 내삽 (연직 내삽은 real.exe에서 수행됨) 자, 이제 WRF를 실행할 모든 준비를 마쳤다. 모형의 실행 순서는 다음과 같다.\n먼저 \u0026ldquo;geogrid.exe\u0026quot;를 실행하여 모형 격자에 맞는 지형데이터를 만들어야 하는데, 이에 필요한 원본 지형데이터를 다음의 링크에서 가져 온다.\nhttp://www.mmm.ucar.edu/wrf/users/download/get_sources.html 의 중간 부분에 있는\nWRF Preporcessing System input data (full set, 15.2 GB when untared)의\n\u0026ldquo;geographical data in all available resolution (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;,and 10\u0026rsquo;)\u0026rdquo; 자료를 가져왔다.\n직접 다운 받으려면 다음 링크를 클릭하여 받으면 된다.\nhttp://www.mmm.ucar.edu/wrf/src/wps_files/geog.tar.gz (약 726MB)\n이것을 WRF 디렉토리 아래의 \u0026ldquo;data\u0026rdquo; 디렉토리에 압축을 풀어준다.\ngeog.tar.gz에 포함되어 있는 static terrestrial data의 내용은 다음과 같다.\nalbedo_ncep : monthly surface albedo greenfrac : monthly vegetation fraction islope : slope index landuse : land use category (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) maxsnowalb : maximum snow albedo (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) modis_landuse_20class_30s : MODIS landuse (Noah LSM only) orogwd : data for gravity wave drag schemes soiltemp : annual mean deep soil temperature (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) solitype_bot : bottom-layer soil type (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) soiltype_top : top-layer soil type (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) topo : topography height (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;, and 10\u0026rsquo; res.) 모형의 격자 구조를 바꾸려면 WPS 디렉토리의 \u0026ldquo;namelist.wps\u0026rdquo; 화일의 내용 중 \u0026ldquo;\u0026amp;geogrid\u0026rdquo; 부분을 바꾸어야 한다. 자세한 사항은 WRF 홈페이지 또는 사용자 매뉴얼을 참고하기 바란다.\n이 실험에서는 \u0026amp;geogrid 부분의 \u0026ldquo;geog_data_path = \u0026quot; 부분을 바로 위에서 압축을 푼 디렉토리로 수정해 준다. (ex. geog_data_path = \u0026lsquo;/home/user/WRF/data/geog\u0026rsquo;) 설정한 지역의 확인을 위하여 \u0026ldquo;./util/plotgrid.exe\u0026quot;를 실행해 본다.\nNCAR Graphics용 gmeta 화일이 생성된다. (%idt gmeta 로 확인해본다)\n만약, util/plotgrid.exe 실행화일이 없다면, 위 8번의 X11 관련 문제가 발생한 것이니 compile.log를 보고 문제를 해결한 후 처음부터 다시 컴파일을 해 본다.\n기본적으로 WRFV3와 WPS, NCARG 모두가 같은 컴파일러를 사용한 것이어야 한다.\n\u0026ldquo;./geogrid.exe\u0026quot;를 실행하면 \u0026ldquo;geo_em.dxx.nc\u0026rdquo; 화일이 생성된다.\n여기에서 \u0026lsquo;xx\u0026rsquo;는 지역별로 생성되는데 설정된 지역이 2개로 nesting되어 있다면 01과 02가 될 것이다.\nncview 등으로 생성된 nc 화일에 문제가 없는지 확인해 본다.\nGRIB 자료를 가지고 있다면 ungrib.exe를 사용하여 WRF가 사용할 수 있는 중간형식으로 만들어 준다.\n자세한 사용법은 http://www.mmm.ucar.edu/wrf/OnLineTutorial/Basics/UNGRIB/index.html 를 참조하면 되고, 이 설명에서는 http://www.mmm.ucar.edu/wrf/src/data/avn_data.tar.gz 의 자료 또는\nhttp://www.mmm.ucar.edu/wrf_tmp/WRF_OnLineTutorial/SOURCE_DATA/JAN00.tar.gz 의 자료를 사용해 본다.\n이 자료를 WRF 홈디렉토리의 data 디렉토리에 풀어준다. (ex. /home/user/WRF/data/)\nungrib.exe가 AVN 자료의 테이블 정보와 자료를 참조하기 위하여 다음과 같은 방법으로 링크시킨다.\n%ln -s ungrib/Variable_Tables/Vtable.AVN0P5WRF Vtable %./link_grib.csh ../data/avn/fnl* 이렇게 하면 Vtable의 링크와 GRIBFILE.AAA, GRIBFILE.AAB, GRIBFILE.AAC 등의 링크가 생긴다.\n이제 namelist.wps의 start_date와 end_date를 AVN 자료의 날짜로 수정한 후 다음과 같이 ungrib.exe를 실행시키면, FILE:2000-01-24_12 와 FILE:2000-01-24_18 등의 화일이 생성된다.\n%./ungrib.exe \u0026gt;\u0026amp; ungrib.output metgrid.exe는 기상자료를 읽어 수평내삽을 하여 격자체계에 맞추는 역할을 한다. 다시 말해서, geogrid.exe에서 생성된 geo_em.dxx.nc과 ungrid.exe에서 생성된 FILE:YYYY-MM-DD_HH를 읽어서 WRF의 입력자료인 met_em.dxx.YYYY-MM-DD_HH:00:00.nc를 생성한다.\n%./metgrid.exe 이제 WRF모의를 완료하기까지 다음 2단계가 남았다.\nreal.exe : metgrid.exe에서 생성된 met_em* 화일의 수직 내삽을 하며,\n경계치와 초기치 화일을 생성한다. wrf.exe : 모형의 예측을 수행한다. WRF를 실행하기 위하여 WRF의 실험디렉토리인 WRFV3/test/em_real 또는 WRFV3/run 으로 이동한다. 이 두 디렉토리는 필요한 화일이 모두 같이 링크되어 있기 때문에 어느쪽으로 이동하여도 상관없다. 이동하기 전에 metgrid.exe에서 생성된 met_em* 화일을 복사 또는 링크하고 이동한다.\n%cp ./met_em* ../WRFV3/run/. ; cd ../WRFV3/run real.exe의 입력화일인 namelist.input를 열어서 시작 시간 등을 확인하여 수정해 준 후 real.exe를 실행하면, wrfinput_dxx 와 wrfdby_dxx 가 생성된다. 여기에서 dxx는 nesting한 domain의 숫자이며 nesting을 하지 않은 경우는 d01 만이 생성된다.\n이 설명에서는 namelist.input의 내용 중 start time을 2000년 1월 24일 12시로, end time을 2000년 1월 25일 00시로 수정하고 \u0026ldquo;num_metgrid_soil_levels = 0\u0026rdquo;\n마지막으로, wrf.exe를 실행하면 \u0026ldquo;wrfout_dxx_[initial_date]\u0026rdquo; 의 결과화일을 얻을 수 있다.\n이 화일들은 WRF의 postprocessing 도구(NCL, RIP4, ARWpost, VAPOR 등)를 이용하여 분석하면 된다.\nGood luck !\n","date":"2012년 6월 12일","externalUrl":null,"permalink":"/2012/06/WRF-ARW-v34-%EC%84%A4%EC%B9%98%EA%B8%B0/","section":"글","summary":"WRF ARW v3.4 설치기. v3.1 설치기의 개정판으로, intel 컴파일러 기준으로 다시 정리했습니다.","title":"WRF ARW v3.4 설치기","type":"posts"},{"content":" CM2.0과 CM2.1 에서의 해양격자에 대한 상세 설명자료\nhttp://nomads.gfdl.noaa.gov/CM2.X/documentation/ocean_grid_doc.html\nFerret을 이용한 tripolar 격자의 GFDL CM2.x 해양 및 해빙 모형의 그림 그리기\nhttp://nomads.gfdl.noaa.gov/CM2.X/faq/question_14.html\n","date":"2012년 4월 29일","externalUrl":null,"permalink":"/2012/04/MOM4-%EB%98%90%EB%8A%94-CM2-%EA%B4%80%EB%A0%A8-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EC%A0%95%EB%B3%B4/","section":"글","summary":"MOM4와 CM2 실험에 참고할 만한 자료 링크. 해양격자 설명과 Ferret 작도 예제.","title":"MOM4 또는 CM2 관련 유용한 정보","type":"posts"},{"content":"","date":"2012년 4월 29일","externalUrl":null,"permalink":"/tags/%EC%A0%91%ED%95%A9%EB%AA%A8%EB%8D%B8/","section":"태그","summary":"","title":"접합모델","type":"tags"},{"content":" 여기에서는 Ferret v6.x를 기반으로 해양수치모델러들이 필요한 각종 유용한 사용법을 설명한다.\ntripolar 격자 그리는 법\n일반적으로 다음과 같이 그리면 된다.\nshade temp,geolon_T,geolat_T\n극지역은 다음과 같이 그린다.\nset region/y=60.01n:89.99n\nlet x_t = geolon_t[d=2]\nlet y_t = geolat_t[d=2]\nlet xv_t = geolon_t[d=2]\nlet yv_t = geolat_t[d=2]\nlet maskA=sst[d=3]/sst[d=3]\nlet mask2=missing(maskA,-1000)\ndef grid/x=area_t[d=2]/y=area_t[d=2] g_t\ngo mp_stereographic_north 350\nlet mp_lambda = xv_t * deg2rad\nlet mp_phi = yv_t * deg2rad\nset grid g_t\ngo mp_aspect\nshade/nokey/nolab/lev=(-1000 0 1000)/pal=gray mask2, x_page, y_page\nshade/nolab/line/key/y=50:90/lev=(0,4,0.2)(inf)/over cm3, x_page, y_page\nfill/over/nolab/line/key/y=50:90/lev=(0,4,0.2)(inf) cm3, x_page, y_page\n","date":"2012년 4월 29일","externalUrl":null,"permalink":"/2012/04/Ferret-%EC%82%AC%EC%9A%A9%EB%B2%95/","section":"글","summary":"해양수치모델러를 위한 Ferret 사용법. tripolar 격자를 그리는 법 등 실제로 필요한 것들만.","title":"Ferret 사용법","type":"posts"},{"content":"설치 전에 다음과 같이 환경변수를 설정하면 아래 내용을 따라하기 쉽습니다.\n%setenv HYCOMHOME ~/models/HYCOM/hycom (회원가입 후 내려받기) http://hycom.org/account-request 에서 회원가입을 한다.\n주의) 이름이 ID로 되므로 공백없이 이름을 써야 한다.\nhttp://hycom.org/hycom/source-code 에 로그인 후\n\u0026ldquo;hycom_2.2.18_ALL.tar.gz\u0026rdquo; 또는 \u0026ldquo;hycom_2.2.18_ATLb.tar.gz\u0026quot;을 내려받는다. (회원가입 없이 내려받기) 회원가입을 원치 않으면 다음 주소에서 받을 수도 있으며,\nhttp://code.google.com/p/hycom/downloads/list (Google Code: 오픈소스 프로젝트 호스팅)\n서버에서 다음 명령으로 직접 내려받기(로그인 필요없음) 해도 된다. %mkdir -p $HYCOMHOME ; cd $HYCOMHOME/.. %wget \u0026lt;http://hycom.googlecode.com/files/hycom_2.2.18_ALL.tar.gz\u0026gt; %wget \u0026lt;http://hycom.googlecode.com/files/hycom_2.2.18_ATLb.tar.gz\u0026gt; 여기에서는 ATLb로 불리우는 2도 해상도(연직 22층)의 북대서양(North Atlantic) 지역에 대한 실험으로 설명한다. 위에서 받은 파일을 다음과 같이 설치한다. %cd $HYCOMHOME/.. %tar xvzf hycom_2.2.18_ATLb.tar.gz 참고로, ATLb 실험의 구성은 다음과 같다. 해상도 : 2-degree horizontal \u0026amp; 16 coordinate surface in the vertical Forcing data : COADS,\nrelaxation to Levitus clim. in boundary zones,\nrelaxation to Levitus surface salinity. Initial Data : summer Levitus climatological interface pressure, salinity, and temperature. The mixed-layer formulation is KPP. 컴파일을 하기 위해서 다음과 같이 실행한다. %cd $HYCOMHOME/ATLb2.00/src_2.1.03_22one %vi Make.com ; ARCH 환경변수를 수정한다. 본 설명에서는 intel 버전에 맞게 수정한다. ; 기본으로 되어 있는 setenv ARCH sp3를 주석 처리하고, ; setenv ARCH intel 의 주석을 제거한다. ; 컴파일러는 pgf 를 사용할 수 있게 설정되어 있어야 한다. ; PGI 컴파일러에서 \u0026#34;-Wl,-Bstatic\u0026#34; 이 있을 경우 link가 안되므로 이 부분을 지운다. %./Make.com \u0026gt;\u0026amp; Make.log 015.com 화일을 다음과 같이 수정한다. %cd $HYCOMHOME/ATLb2.00/expt_01.5 %vi 015.com 5줄: if (`which C | cut -c 1-2` == \u0026#34;C:\u0026#34;) then 6줄: if (-e ${HYCOMHOME}/ALL/bin/C) then 7줄: set path = ( ${path} ${HYCOMHOME}/ALL/bin ) 113줄: setenv P ${HYCOMHOME}/${R}/expt_01.5/data \u0026lt;-- Linux 시스템의 경우 모형의 실험 시작과 끝, 그리고 간격을 조절하기 위한 LIST화일을 다음과 같이 만든다.\nHYCOM에서 제공하는 mlist 의 명령을 이용하여 만드는데 이 명령은\nhycom_2.2.18_ALL.tar.gz을 풀면 bin 디렉토리 아래에 포함되어 있다. %$HYCOMHOME/ALL/bin/mlist 1 5 1 위 명령은 1년부터 5년까지 1년 간격으로 실험하는 것을 뜻한다. 다음의 명령으로 모형의 실험을 시작한다. %../../ALL/bin/msub 015.com 01 실험이 완료되면 log 화일은\n${HYCOMHOME}/ATLb2.00/expt_01.5/01501.log 로 저장되며,\n결과 화일은\n${HYCOMHOME}/ATLb2.00/expt_01.5/data/SCRATCH 디렉토리에 저장된다. (결과의 분석 방법은 추후에 업데이트 예정임). ","date":"2012년 3월 16일","externalUrl":null,"permalink":"/2012/03/HYCOM-%EC%84%A4%EC%B9%98%EA%B8%B0-version-2218/","section":"글","summary":"HYCOM 2.2.18 설치기. 북대서양 2도 해상도 ATLb 실험을 예로 컴파일과 실행을 설명합니다.","title":"HYCOM 설치기 (version: 2.2.18)","type":"posts"},{"content":"설치전에 다음과 같이 환경변수를 만들어 놓으면 아래 설명을 따라하기가 쉬워집니다.\n%setenv ROMSHOME ~/models/ROMS/roms3.5 http://www.myroms.org에서 register를 클릭하여 회원가입을 한다.\nROMS는 일반적으로 배포되는 *.tar.gz 형식으로 소스코드를 배포하지 않는다.\nSubversion 이라는 소스코드 관리툴로만 제공을 하고 있기 때문에\n다음과 같은 명령으로 받을 수 있다.\n%svn checkout --username your_ID \u0026lt;https://www.myroms.org/svn/src/trunk\u0026gt; $ROMSHOME 위 명령을 실행하면 암호를 묻게 되는데 회원가입 시 만든 암호를 사용하면 된다.\n참고) subversion에서 trunk는 최신버전을 받는 것이므로 3.5 버전이 아닐 수 있다.\n이상적인 test cases와 실제 응용 cases의 자료를 받기 위해서 다음과 같이 실행한다. %svn checkout \u0026lt;https://www.myroms.org/svn/src/test\u0026gt; $ROMSHOME/Test Test cases에 대한 자세한 설명은 여기를 참조하세요.\n분석을 위한 matlab 스크립트를 받는다. %svn checkout \u0026lt;https://www.myroms.org/svn/src/matlab\u0026gt; $ROMSHOME 분석을 위한 plot (NCAR의 library-based plotting package) 스크립트를 받는다. %svn checkout \u0026lt;https://www.myroms.org/svn/src/plot\u0026gt; $ROMSHOME 본 설치기에서는 ROMS에서 제공하는 많은 실험들 중에서 가장 기본적인 \u0026ldquo;upwelling\u0026rdquo; 실험에 대하여 설명해 나가도록 하겠다. upwelling 실험을 컴파일 하기 위해서 다음과 같이 수행한다.\n(ROMS 홈페이지에서는 기본 쉘인 bash를 이용하여 설명하였지만,\n여기에서는 수치모형 전문가들이 많이 사용하는 csh로 설명해 나가겠다).\n%cd $ROMSHOME/Test/upwelling %vi build.sh # 실험과 관련된 header 화일을 읽어오기 위해서는 ROMS_APPLICATION 환경변수를 맞추어 # 주어야 하는데, 여기에서는 upwelling.h 등을 불러오기 위해서 다음과 같이 환경변수를 # 맞추어 준다. (Note: 원본에 이미 설정되어 있으나 참고적으로 설명하는 것임) 82줄: setenv ROMS_APPLICATION UPWELLING # ROMS의 메인 홈 디렉토리와 실혐 디렉토리를 설정한다. 87줄: setenv MY_ROOT_DIR ${ROMSHOME}/.. 88줄: setenv MY_PROJECT_DIR ${PWD} # 소스코드가 설치되어 있는 디렉토리를 설정한다. 101줄: setenv MY_ROMS_SRC ${ROMSHOME} # 병렬화 관련하여 다음과 같이 설정한다. 179줄: setenv USE_MPI on 180줄: setenv USE_MPIF90 on 182줄: setenv which_MPI mpich2 #주석제거 183줄: #setenv which_MPI openmpi #주석처리 187줄: setenv FORT ifort #intel fortran compiler 사용 196줄: setenv USE_MY_LIBS on #주석 제거 216줄: setenv PATH /usr/local/mpich2/intel11/bin:$PATH #mpich2 관련 실행화일 디렉토리를 자신의 시스템에 맞게 수정해 준다. 320줄: setenv NETCDF_INCDIR /usr/local/netcdf/362_intel11/include 321줄: setenv NETCDF_LIBDIR /usr/local/netcdf/362_intel11/lib 컴파일 할 준비가 다 되었으므로 다음의 명령으로 컴파일을 수행한다.\n%./build.sh 컴파일을 빠르게 하기위해서 파일마다 각각 병렬로 컴파일하려면 다음과 같은 명령으로 수행하면 된다.\n%./build.sh -j \u0026lt;n\u0026gt; # 여기에서 \u0026lt;n\u0026gt;은 사용할 프로세서의 갯수를 적으면 된다. 에러 없이 성공적으로 실행화일이 만들어 졌으면 실험 수행을 위하여 다음과 같이 실행하면 된다.\n(여기에서는 8개의 프로세서로 병렬실행하는 것을 예로 든다).\n%vi ocean_upwelling.in 101줄: NtileI == 4 102줄: NtileJ == 2 # NtileI * NtileJ = 총 사용 프로세서 수 이어야 함. %mpirun -np 8 ./oceanM ocean_upwelling.in \u0026gt; my_upwelling.log 실행이 완료되면 다음과 같은 결과화일이 생성되는데 이것을 분석해 보면 된다.\nocean_rst.nc, ocean_his.nc, ocean_avg.nc, ocean_dia.nc, ocean_sta.nc, ocean_flt.nc ","date":"2012년 3월 16일","externalUrl":null,"permalink":"/2012/03/ROMS-%EC%84%A4%EC%B9%98%EA%B8%B0-version-35/","section":"글","summary":"ROMS 3.5 설치기. Subversion으로 소스를 받아 가장 기본적인 upwelling 실험을 돌리기까지.","title":"ROMS 설치기 (version: 3.5)","type":"posts"},{"content":" [준비사항 및 참고사항]\nKato상의 일일예보 홈페이지 (ID:model, PW:result)\nhttp://www.rain.hyarc.nagoya-u.ac.jp/~kato/result\nJMA의 MSM 자료 생성 주기\n00Z |-|-|-|\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026ndash;| 15시간 예측, 1시간간격 저장\n03Z |\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;-| 33시간 예측, 화일 2개로저장\n06Z |\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026ndash;| 15시간 예측\n09Z |\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;\u0026mdash;| 33시간 예측\n참고 : map proj. = Rambert\n[소스코드 풀기]\n%cd ~dhkim/models/CReSS\n%tar xvzf src/\u0026hellip;..\n%cd CReSS_20111208\n%setenv CReSSHOME pwd #CReSS의 홈디렉토리 지정을 하기위해 사용\n[모형 컴파일]\n%cd $CReSSHOME/CReSS3.4.1_20111110/CReSS3.4.1m_20111110\n%vi compile.conf\nFFLAGS = -Mfree -byteswapio -O3 -fastsse\nFC = ftn\n%./auto_compile.csh # log_compile에 에러 확인\n# Src 디렉토리에 다음 실행화일들이 생성되어야 함\n# asldata.exe, check.exe, gridata.exe, radata.exe,\n# rstruct.exe, solver.exe, surface.exe, terrain.exe, unite.exe\n%mkdir $CReSSHOME/Work/YYYYMMDD\n%cp -l *.exe $CReSSHOME/Work/YYYYMMDD/.\n%cp run.csh $CReSSHOME/Work/YYYYMMDD/.\n[IC \u0026amp; BC 만들기]\nSST 자료 변환\n자료취득 : NEAR-GOOS에서 MGDSST(해상도:0.25도) 자료를 받을 수 있음\nhttp://goos.kishou.go.jp 에 온라인 등록하고\n\u0026ldquo;JMA Products\u0026rdquo;-\u0026gt;\u0026ldquo;MGDSST\u0026quot;에서 받을 수 있음\n%cd $CReSSHOME/mgdsst2cdf\n%vi configure.make #시스템에 맞추어 compiler와 옵션 등을 수정\n#module을 사용할 경우 netcdf 관련 라이브러리를 loading\n%make\n%vi sstlist.dat #SST 자료가 있는 디렉토리 지정\n%./mgdsst2cdf\n%cp out/mgdsst_YYYYMMDD.dat $CReSSHOME/Work/YYYYMMDD/data.sstYYYYMMDDhhmm.bin\n# out 디렉토리에 *.ctl 이 생성되므로 GrADS 등으로 그림 확인 가능\nIC \u0026amp; BC 자료 변환\n자료취득 : JMA는 GSM(global)과 MSM(mesoscale) 자료를\nhttp://database.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original/\n에서 제공하고 있다. 자료의 상세 사항은\nhttp://database.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original/README\n를 읽어보면 되며, 화일명에서 Rjp는 일본 지역, Rgl은 전지구를 의미한다.\n%cd $CReSSHOME/GRIB2\n%make config # 현재 디렉토리에 configure.make 가 없으면 원본을 복사함.\n%vi configure.make #시스템에 맞추어 compiler와 옵션 등을 수정\n# CFLAGS = -DDEC 는 64bit 시스템에서 사용\n%vi gpv2dat.namelist\n# config_file = \u0026lsquo;msm.conf\u0026rsquo; 또는 \u0026lsquo;gsm.conf\u0026rsquo;, \u0026lsquo;rsm.conf\u0026rsquo; 로 수정\n# 여기에서는 \u0026lsquo;msm.conf\u0026rsquo;로 사용\n#msm.conf에 지정되어 있는 grib2_surface.dat(2D)와 grib2_upper.dat(3D)의 내용을 알맞게 수정\n#msm.conf의 \u0026ldquo;InitialOnly = .true.\u0026ldquo;의 경우는 여러가지 초기장을 읽어서 하나의 초기장으로 만듦.\n%ls ../Data/Lsurf \u0026gt; grib2_surface.dat\n# 지정날짜의 \u0026ldquo;\u0026hellip;Rjp_Lsurf\u0026hellip;\u0026rdquo; 위치와 파일명 지정\n%ls ../Data/L-pall \u0026gt; grib2_upper.dat\n# 지정날짜의 \u0026ldquo;\u0026hellip;Rjp_L-pall\u0026hellip;\u0026rdquo; 위치와 파일명 지정\n%make\n%./gpv2dat #GRIB2에서 MSM변환\n%mv data.gpv*.bin ../Work/YYYYMMDD/.\n#자료 확인은 template/MSM_GPV.ctl 을 이용하여 GrADS로 확인 가능\n[모형 모의]\n%cd $CReSSHOME/Work/YYYYMMDD\n%cp $CReSSHOME/User_Conf_HIGE/user_conf_msm33-2km .\n%vi user_conf_msm33-2km\n\u0026amp;dirname\ncrsdir = \u0026lsquo;./\u0026rsquo;\ndatdir = \u0026lsquo;./\u0026rsquo;\n\u0026amp;dimset\nnumpe = 36\nxsub = 6\nysub = 6\n\u0026amp;flength\nsfcast = \u0026lsquo;YYYY/MM/DD hh:mm\u0026rsquo;\nstime = 0.e0\netime = 108000.e0 # 30시간\n\u0026amp;gpvpram\ngpvitv = 10800.e0 # 3시간 간격 저장\n\u0026amp;sfcphys\ndtgrd = 7.5e0\n\u0026amp;outfomat\ndmpitv = 3600.e0\nmonitv = 3600.e0\n%qsub -q @haeon run.csh # 또는 다음의 순서대로 실행\n%./check.exe \u0026lt; user.conf_msm33-2km # 마지막에 normally 나오면 o.k.\n%ln -s $CReSSHOME/Data/data.*.bin .\n%./terrain.exe \u0026lt; user.conf_msm33-2km \u0026gt;\u0026amp; log_msm33-2km\n# 지형자료를 프로세서 갯수에 맞게 나눔\n# 마지막 메세지에 normally가 나와야 함. 에러의 경우는 abnormally 표시됨.\n%./surface.exe \u0026lt; user.conf_msm33-2km \u0026raquo;\u0026amp; log_msm33-2km\n# 표층 경계치(SST)를 프로세서 갯수에 맞게 나눔\n# 마지막에 normally 표시 확인\n%./gridata.exe \u0026lt; user.conf_msm33-2km \u0026raquo;\u0026amp; log_msm33-2km\n# 3차원장 경계치를 프로세서 갯수에 맞게 나눔\n# 마지막에 normally 표시 확인\n%qsub -q @haeon run.csh ### 모형 모의 시작 ###\n실제명령 : aprun -n 36 ./solver.exe \u0026lt; user.conf_msm33-2km \u0026gt;\u0026amp; log.solver\n%./unite.exe \u0026lt; user.conf_msm33-2km \u0026raquo;\u0026amp; log_msm33-2km\n끝.\n","date":"2011년 12월 14일","externalUrl":null,"permalink":"/2011/12/CReSS-v341-%EC%84%A4%EC%B9%98%EA%B8%B0/","section":"글","summary":"구름 분해 모형 CReSS v3.4.1 설치기. 일본 기상청 MSM 자료 준비 과정을 포함합니다.","title":"CReSS v3.4.1 설치기","type":"posts"},{"content":"","date":"2011년 4월 26일","externalUrl":null,"permalink":"/tags/%EA%B8%B0%EC%83%81%ED%95%B4%EC%96%91/","section":"태그","summary":"","title":"기상해양","type":"tags"},{"content":"원문: http://www.now.go.kr/IssueAnal/nation/issue_v.jsp?tableName=BOARD_ANAL_REPORT\u0026nation_code=A0999\u0026uno=604\n인공화산, 인공가우 등 지구의 기후를 인위적으로 조작 또는 조정하기 위한 기술분야로 지구공학(geoengineering)으로도 일컬어짐\n그러나 아직까지 기후공학에 관해서는 명확하고 널리 인정되는 정의가 내려져 있지는 못하여 어떤 연구활동이 기후공학에 포함되는지에 대해서는 의견이 분분함\n기후공학은 기후변화 완화, 천재지변에 대한 대응 등을 가능하게 할 것으로 기대 기후시스템에 대해서 아직까지 명확하게 이해하지 못하고 있기 때문에, 기후공학을 통한 기후의 인위적 조작은 오히려 재앙을 불러올 수도 있다고 지적하는 전문가도 있음 ","date":"2011년 4월 26일","externalUrl":null,"permalink":"/2011/04/%EA%B8%B0%ED%9B%84%EA%B3%B5%ED%95%99-Climate-engineering/","section":"글","summary":"기후공학(지구공학)이 무엇이고, 왜 아직 정의조차 합의되지 않았는지.","title":"기후공학 (Climate engineering)","type":"posts"},{"content":"수치모형에서 자료의 입출력으로 가장 많이 사용되는 NetCDF 라이브러리의 설치방법에 대해 설명하겠습니다.\nNetCDF는 기존의 3.X 버전과 최신의 4.X 버전으로 크게 나눌 수 있는데,\n현재 3.X 버전은 3.6.3이 최신 버전이며, 4.X 버전은 4.1-beta2 가 최신 버전입니다.\n다음은 리눅스 시스템 기반으로 각 컴파일러 버전별로 환경변수 설정 방법 입니다.\n- PGI Fortransetenv CC gcc setenv CFLAGS \u0026#39;-O2\u0026#39; setenv CPPFLAGS \u0026#39;-DNDEBUG -DpgiFortran\u0026#39; setenv FC pgf90 setenv F90 pgf90 setenv FFLAGS \u0026#39;-O2 -fast\u0026#39; setenv CXX g++ setenv CXXFLAGS \u0026#39;-O2\u0026#39; Intel Fortran Compiler on an IA-32 system setenv CC icc setenv CXX icpc setenv CFLAGS \u0026#39;-O3 -xP -ip -no-prec-div\u0026#39; setenv CXXFLAGS \u0026#39;-O3 -xP -ip -no-prec-div\u0026#39; setenv F77 ifort setenv FFLAGS \u0026#39;-xP -O3 -ip -no-prec-div -mdynamic-no-pic\u0026#39; Intel Fortran Compiler on an Intel-64 system setenv CC icc setenv CXX icpc setenv CFLAGS \u0026#39;-O3 -xT -ip -no-prec-div -m64\u0026#39; setenv CXXFLAGS \u0026#39;-O3 -xT -ip -no-prec-div -m64\u0026#39; setenv F77 ifort setenv FFLAGS \u0026#39;-O3 -xT -ip -no-prec-div -m64\u0026#39; 환경변수를 설정하였으면, NetCDF 소스코드가 있는 디렉토리에 가서 다음을 순서대로 실행합니다.\n% cd netcdf-3.6.3 % ./configure --prefix=*/your/desired/install/directory* % make; make check % make install \u0026ldquo;make check\u0026rdquo; 에서 이상없이 컴파일 되었다면, \u0026ndash;prefix 에서 지정한 디렉토리에 라이브러리가 설치됩니다.\n#NetCDF\n","date":"2010년 3월 11일","externalUrl":null,"permalink":"/2010/03/NetCDF-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/","section":"글","summary":"수치모형의 입출력에 가장 많이 쓰이는 NetCDF 라이브러리 설치법. 컴파일러별 환경변수 설정과 configure·make 절차를 정리했습니다.","title":"NetCDF 설치하기","type":"posts"},{"content":" [북서태평양 지역의 Grid 만들기] %cd $MOMHOME/src/preprocessing/generate_grids/ocean\n%vi ocean_grid_generator.csh\n\u0026amp;hgrid_nml\nnxlons=2,x_lon=115.,150.,dx_lon=0.5,0.5,\nnylats=2,y_lat=18.,52.,dy_lat=0.5,0.5,\ntripolar_grid=.false.,\ncyclic_x=.false., cyclic_y=.false.\ndebug = .true. /\n\u0026amp;vgrid_nml\nnzdepths=3,z_depth=0.,220.,5500.,dz_depth=10.,10.,367.14286\ndebug = .true. /\n\u0026amp;obc_nml\nnobc = , direction = , is =, ie =, js =, je =, /\n\u0026amp;fms_nml\ndomains_stack_size = 1036000 /\n./ocean_grid_generator.csh ; ocean_grid.nc 가 생성된다.\n%cd $MOMHOME/src/preprocessing/generate_grids/atmos\n%vi atmos_grid_generator.csh\n\u0026amp;atmos_grid_nml\nlon_begin = 115., lon_end = 150., lat_begin = 20., lat_end = 52.,\nnum_lon = 70, num_lat = 64 /\n%cd $MOMHOME/src/preprocessing/generate_grids/make_xgrids\n?. [input.nml]\nupdate_velocity_via_uprime = .false. ; explicit free surface 에서는 .false.로 설정해야 함. ocean_rivermix_nml 을 사용하지 않는 것으로 설정 ocean_shortwave_nml 을 사용하지 않는 것으로 설정 ocean_vert_kpp_nml 을 사용하는 것으로 설정 ?. [Chlorophyll Data]\nom3_core3 case의 INPUT/chl.nc 를 이용하여 생산 (월평균, 12개월) [Restart 하는 방법] INPUT 디렉토리에 RESTART의 화일들을 모두 overwrite하고 다시 실행하면 됨. ","date":"2010년 2월 12일","externalUrl":null,"permalink":"/2010/02/MOM4%EC%9D%98-%EB%B6%81%EC%84%9C%ED%83%9C%ED%8F%89%EC%96%91-%EC%A7%80%EC%97%AD%EB%AA%A8%ED%98%95-%EC%84%A4%EC%B9%98%EA%B8%B0-ver-18dec2009/","section":"글","summary":"MOM4로 북서태평양 지역모형을 구성하는 절차. 격자 생성부터 입력자료 준비까지.","title":"MOM4의 북서태평양 지역모형 설치기 (ver. 18dec2009)","type":"posts"},{"content":"예를 들어 설명하는 것이 가장 이해가 쉬우므로\n수치모형의 해상도 표시 중 T42L18 과 N45L20 에 대해서 알아보도록 합니다.\nN45L20 은 B-grid 모형에서 사용합니다.\nN45는 위도 방향으로 극에서 적도까지의 격자수를 나타내며, L20은 연직 층의 수를 나타냅니다.\nT42L18 은 spectral 모형에서 사용하며, T는 triangular truncation of spherical harmonics를 의미합니다.\nT42는 최대 총 파수(highest total wavenumber)를 나타내고, 모형 내의 총 파수는 0~42 사이가 될 것입니다.\nL18은 앞서 설명한것과 같이 연직 층의 수를 나타냅니다.\nR30으로 표현하는 경우도 있는데 R은 rhomboidal truncation of spherical harmonics를 의미하며\nT와 마찬가지로 최대 총 파수를 나타냅니다.\nSpectral 모형의 병렬화에서는 파수에 따른 processors 수를 잘 나누어야 하는데 그 예를 다음과 같습니다.\nTn: grid_lon \u0026gt;= 3n + 1, grid_lat \u0026gt; (5n+1) / 2\nRn: grid_lon \u0026gt;= 3n + 1, grid_lat \u0026gt; (3n+1) / 2\nModel : Typical Grid: Processors:\nT42 128 x 64 must divide 32\nT63 192 x 96 must divide 48\nR30 96 x 80 must divide 40\n","date":"2010년 1월 8일","externalUrl":null,"permalink":"/2010/01/%EC%88%98%EC%B9%98%EB%AA%A8%ED%98%95-%ED%95%B4%EC%83%81%EB%8F%84-%ED%91%9C%EC%8B%9C%EC%9D%98-%EC%9D%98%EB%AF%B8/","section":"글","summary":"T42L18, N45L20 같은 수치모형 해상도 표기가 각각 무엇을 뜻하는지.","title":"수치모형 해상도 표시의 의미","type":"posts"},{"content":"### 여기에서는 \u0026lsquo;07년 12월 이후에 2년만에 다시 공식적으로 제공(\u0026lsquo;09.12.18)한\n\u0026ldquo;mom4p1_pubrel_18dec2009\u0026ldquo;와 \u0026ldquo;om3_core\u0026ldquo;의 실험예를 이용하여 설명을 합니다.\n공식 발표전에 작성한 \u0026ldquo;mom4p1_alpha_sep2009의 설치기\u0026ldquo;와 기본적으로 내용은 거의 비슷하지만,\n알파버전을 사용하지 않고 공식버전을 바로 사용하시는 분들을 위하여 중복된 부분도 설명합니다.\n또한, 새롭게 추가되거나 수정된 부분은 녹색으로 표시하여 구분하도록 하겠습니다. ###\n[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]\ncd ~/models/MOM; tar xvzf mom4p1_pubrel_18dec2009.tar.gz cd mom4p1_pubrel_18dec2009; mkdir data; tar xvzf om3_core3.input.tar.gz -C data/ #exp/mom4p1_coupled_compile.csh, bin/mkmf.template.???, bin/environs.??? 를 알맞게 수정 cd exp; ./mom4p1_coupled_compile.csh \u0026gt;\u0026amp; compile.msg # 컴파일 하여 에러가 없는지 확인 #./mom4p1_coupled_run.csh 를 알맞게 수정한 후 실행 소스코드 및 실험 자료 받기\nMOM4의 소스코드는 GForge 에 등록한 후에 내려 받을 수 있습니다.\n등록을 완료했으면 여기를 방문하여 MOM4P1 프로젝트에 접근을 요청합니다.\n프로젝트 접근 허가를 받았으면, 여기를 방문하여 내려받으면 됩니다.\n내려받은 소스코드를 다음과 같이 풀어줍니다. %cd ~/models/MOM; tar xvzf mom4p1_pubrel_18dec2009.tar.gz %setenv MOMHOME ~/models/MOM/mom4p1_pubrel_18dec2009 MOM4는 기본적으로 여러개의 실험 예를 제공하는데,\n아래의 실험 예 중에 적당한 것을 골라 여기에서 내려받으면 됩니다.\n본 설치기에서는 \u0026ldquo;om3_core3\u0026ldquo;의 실험으로 설명하며,\n결합모형인 CM2.1의 실험에 대한 것은 개인적으로 연락 주시기 바랍니다.\n[실험 예]\natlantic : 경계조건을 사용한 지역 해양 모형\nbowl : bowl 지형을 가진 sector 모형\nbox : 평평한 해저지형을 가진 sector 모형. 가장 간단한 실험\nbox_channel : 남쪽에 channel을 가진 이상적인 실험\ndome : overflow schemes를 테스트하는데 좋은 이상적인 실험\nebm : GFDL의 energy balance atmosphere + ice 모형을 결합한 실험\niom : 인도양을 대상으로 한 지역모형\nmk3p5 : CSIRO에서 실험한 전지구 구면좌표계 모형\nsymmetric_box : 적도를 기준으로 대칭으로 구성된 이상적인 실험\ntorus : tracer advection schemes을 테스트하기 좋은 x와 y 방향에 대해 주기적인 이상적인 실험\nom3_core : tripolar grid의 전지구 약 1도 해상도와 연직 50개의 층으로 이루어진 실험.\nGFDL 해빙모형과 결합되어 있으며, Coordinated Ocean Reference Experiment 자료로부터\n평년의 기후 자료를 입력 받음. GFDL의 IPCC 시나리오 모의와 거의 유사한 실험임\nom3_ecosystem : om3_core와 같으며, 추가적으로 GFDL Ocean Biogeochemistry (GOB) model이\n결합되어있음. 22개에 달하는 각종 ecosystems and biogeochemical cycles이 고려되어있음.\nCM2.1p1 : 해양 및 해빙부분은 om3_core와 같으며, 추가적으로 실제 AGCM과 결합한 실험임.\n실험 구성은 IPCC AR4에 제출한 GFDL CM2.1과 같음.\n컴파일 하기\nMOM4를 컴파일 하기 위해서는 NetCDF와 MPI 라이브러리들이 필요하므로\n잘 모를 경우는 시스템 관리자에게 물어보도록 하세요. (버전과 설치위치 등)\n[환경] 포트란 : PGI 7.1.6 $MPICH = /usr/local/mpich2/pgi716 $NETCDFHOME = /usr/local/netcdf-3.6.3\n만약 netcdf 버전 4를 사용할 경우에는 mom4p1_coupled_compile.csh 내에 \u0026ldquo;-Duse_netCDF3\u0026rdquo; 로\n되어있는 부분을 삭제하고 mppnccombine의 컴파일 부분에는 \u0026ldquo;-Duse_netCDF4\u0026quot;를 추가해야 함. MOM4의 실험 예들은 크게 2가지로 나뉘는데, 그것은 해양 독립 모형과 결합(해빙,대기 등) 모형입니다.\nbox 또는 bowl 같은 해양 독립 모형들은 mom4p1_solo 타입이며 om3_core나 atlantic 등은\nmom4p1_coupled 타입이므로 여기에서는 mom4p1_coupled_compile.csh를 편집합니다.\n% cd $MOMHOME/exp % vi mom4p1_coupled_compile.csh set platform = pgi --\u0026gt; $MOMHOME/bin 에 보면 여러가지 platform이 있으니 참조하면 됨 cc -O -o $mppnccombine -I$NETCDFHOME/include -L$NETCDFHOME/lib $code_dir/postprocessing/mppnccombine/mppnccombine.c -lnetcdf --\u0026gt; $NETCDFHOME은 미리 정해져 있거나 시스템에 맞게 설정해 줍니다. --\u0026gt; $MOMHOME/bin/mppnccombine.pgi 가 존재하면 새로 생성하지 않으므로 확인하여 직접 삭제해 줍니다. % vi ../bin/mkmf.template.pgi NETCDF_ROOT = $(NETCDFHOME) --\u0026gt; 시스템에 맞게 설정해 줍니다. MPI_ROOT = $(MPICH) --\u0026gt; 시스템에 맞게 설정해 줍니다. INCLUDE = -I$(NETCDFHOME)/include -I$(MPI_ROOT)/include FFLAGS_OPT = -O2 -Mcray=pointer --\u0026gt; -O2 와 -fast 를 같이 쓰면 에러나네요.-_- FFLAGS = $(INCLUDE) -i4 -r8 -Ktrap=fp -Mallocatable=O3 -D_F200 $(FFLAGS_OPT) $(FFLAGS_DEBUG) FC = mpif90 --\u0026gt; 시스템에 맞는 컴파일러를 지정 LDFLAGS = $(VERBOSE) -L$(NETCDF_ROOT)/lib -lnetcdf -L$(MPI_ROOT)/lib -lmpich % vi ../bin/environs.pgi --\u0026gt; 시스템에서 module을 사용하지 않는 경우에는 module 관련된 것을 모두 지웁니다. 모두 수정을 하였다면, 다음의 명령으로 컴파일 수행을 합니다.\n% ./mom4p1_coupled_compile.csh \u0026gt;\u0026amp; compile.msg 에러 없이 ../exec_pgi/mom4p1_coupled/fms_mom4p1_coupled.x 가 만들어 졌다면 성공한 것임.\n컴파일을 처음부터 새로 하고 싶다면, exec_pgi/mom4p1_coupled 디렉토리와 bin/mppnccombine.pgi 를\n삭제한 후 다시 컴파일 하면 됩니다.\n실행 해보기\n실행하기 전에 실행 스크립트를 다음과 같이 수정합니다. % vi mom4p1_coupled_run.csh set platform = pgi --\u0026gt; $MOMHOME/bin 에 보면 여러가지 platfom이 있음 set name = om3_core3 --\u0026gt; om3_core1, atlantic1, MOM4p1_SIS_TOPAZ 등이 있음. set inputDataDir = $root/data/om3_core3/INPUT --\u0026gt; 내려받은 입력자료를 풀어 준 곳 set archive = $expdir/OUTPUT --\u0026gt;대용량 결과화일을 옮겨줄 디렉토리. 미리 만들어져 있어야 함! #Archive the results 로부터 마지막 exit 0 바로 위까지는 결과화일의 압축과 저장에 대한 것이므로\n시스템에 맞게 수정하거나 필요 없을 경우 모두 삭제합니다.\n앞서 내려받은 \u0026ldquo;om3_core3\u0026quot;의 실험 자료 중 input 자료를 $inputDataDir에 가서 풀어 줍니다.\n% tar xvzf ...(path).../om3_core3.input.tar.gz -C $inputDataDir/ 이제 실행을 하면 되는데, MPI실행방법에 대해 잘 모를 경우는\n\u0026ldquo;클러스터 시스템에서의 MPI 설정 방법\u0026ldquo;을 참조하세요.\n% mpdboot -n 4 -f ~/mpd.hosts % ./mom4p1_coupled_run.csh \u0026gt;\u0026amp; coupled_run.msg 모의 기간과 결과 생성 화일의 조절은 각각 $inputDataDir/input.nml 과 $inputDataDir/diag_table 의\n내용을 조절하면 됩니다. 또한, 기존에 생성된 결과화일을 모두 지우고 새롭게 실행하려면 work/om3_core3\n디렉토리를 지우고 실행하면 됩니다.\n결과 비교하기\n이번 버전에 대한 om3_core3의 결과화일을 현재까지는 제공하고 있지 않지만, 곧 제공될 것으로 생각됩니다.\n결과화일을 제공하게 되면 이 실험에서 산출된 $MOMHOME/work/om3_core3/ascii 에 있는\n\u0026ldquo;.fms.out\u0026quot;과 \u0026ldquo;.logfile.*.out\u0026quot;을 비교하여 실험이 정상적으로 되었는지 판단하면 됩니다.\nGood luck! #수치모델 #수치모형 #OGCM #해양순환모형 #Numerical Models #Ocean Circulation\n","date":"2009년 12월 24일","externalUrl":null,"permalink":"/2009/12/MOM4-%EC%84%A4%EC%B9%98%EA%B8%B0-version-mom4p1pubrel18dec2009/","section":"글","summary":"MOM4 공식판 mom4p1_pubrel_18dec2009 설치기. 알파판 설치기와 겹치는 부분도 함께 설명합니다.","title":"MOM4 설치기 (version: mom4p1_pubrel_18dec2009)","type":"posts"},{"content":"","date":"2009년 12월 24일","externalUrl":null,"permalink":"/tags/%ED%95%B4%EC%96%91%EC%88%9C%ED%99%98/","section":"태그","summary":"","title":"해양순환","type":"tags"},{"content":"### 여기에서는 \u0026lsquo;09년 11월 현재의 최신 버전인 \u0026ldquo;mom4p1_alpha_sep2009\u0026ldquo;와\n\u0026ldquo;om3_core\u0026ldquo;의 실험예를 이용하여 설명을 합니다. ###\n[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]\ncd ~/models/MOM; tar xvzf mom4p1_alpha_sep2009.tar.gz cd data; tar xvzf om3_core3.input.tar.gz; cd .. cd mom4p1_alpha_sep2009/exp #./mom4p1_coupled_compile.csh, ../bin/mkmf.template.???, ../bin/environs.??? 를 알맞게 수정 ./mom4p1_coupled_compile.csh \u0026gt;\u0026amp; compile.msg # 컴파일 하여 에러가 없는지 확인 #./mom4p1_coupled_run.csh 를 알맞게 수정한 후 실행 소스코드 및 실험 자료 받기\nMOM4의 소스코드는 GForge 에 등록한 후에 내려 받을 수 있습니다.\n등록을 완료했으면 여기를 방문하여 MOM4P1 프로젝트에 접근을 요청합니다.\n프로젝트 접근 허가를 받았으면, 여기를 방문하여 내려받으면 됩니다.\n내려받은 소스코드를 다음과 같이 풀어줍니다. %cd ~/models/MOM; tar xvzf mom4p1_alpha_sep2009.tar.gz %setenv MOMHOME ~/models/MOM/mom4p1_alpha_sep2009 MOM4는 기본적으로 여러개의 실험 예를 제공하는데,\n아래의 실험 예 중에 적당한 것을 골라 여기에서 내려받으면 됩니다.\n또한, 최신 버전으로 실험된 실험 예들은 여기에서 내려받으면 됩니다.\n본 설치기에서는 \u0026ldquo;om3_core3\u0026ldquo;의 실험으로 설명합니다.\n[실험 예]\natlantic : 경계조건을 사용한 지역 해양 모형\nbowl : bowl 지형을 가진 sector 모형\nbox : 평평한 해저지형을 가진 sector 모형. 가장 간단한 실험\nbox_channel : 남쪽에 channel을 가진 이상적인 실험\ndome : overflow schemes를 테스트하는데 좋은 이상적인 실험\nebm : GFDL의 energy balance atmosphere + ice 모형을 결합한 실험\niom : 인도양을 대상으로 한 지역모형\nmk3p5 : CSIRO에서 실험한 전지구 구면좌표계 모형\nsymmetric_box : 적도를 기준으로 대칭으로 구성된 이상적인 실험\ntorus : tracer advection schemes을 테스트하기 좋은 x와 y 방향에 대해 주기적인 이상적인 실험\nom3_core : tripolar grid의 전지구 약 1도 해상도와 연직 50개의 층으로 이루어진 실험.\nGFDL 해빙모형과 결합되어 있으며, Coordinated Ocean Reference Experiment 자료로부터\n평년의 기후 자료를 입력 받음. GFDL의 IPCC 시나리오 모의와 거의 유사한 실험임\nom3_ecosystem : om3_core와 같으며, 추가적으로 GFDL Ocean Biogeochemistry (GOB) model이\n결합되어있음. 22개에 달하는 각종 ecosystems and biogeochemical cycles이 고려되어있음.\n컴파일 하기\nMOM4를 컴파일 하기 위해서는 NetCDF와 MPI 라이브러리들이 필요하므로\n잘 모를 경우는 시스템 관리자에게 물어보도록 하세요. (버전과 설치위치 등)\n[환경] 포트란 : PGI 7.1.6 $NETCDFHOME = /usr/local/netcdf-4.0.1 $MPICH = /usr/local/mpich2/pgi716 MOM4의 실험 예들은 크게 2가지로 나뉘는데, 그것은 해양 독립 모형과 결합(해빙,대기 등) 모형입니다.\nbox 또는 bowl 같은 해양 독립 모형들은 mom4p1_solo 타입이며 om3_core나 atlantic 등은\nmom4p1_coupled 타입이므로 여기에서는 mom4p1_coupled_compile.csh를 편집합니다.\n% cd $MOMHOME/exp % vi mom4p1_coupled_compile.csh set platform = pgi --\u0026gt; $MOMHOME/bin 에 보면 여러가지 platform이 있으니 참조하면 됨 cc -O -o $mppnccombine -I$NETCDFHOME/include -L$NETCDFHOME/lib $code_dir/postprocessing/mppnccombine/mppnccombine.c -lnetcdf --\u0026gt; $NETCDFHOME은 미리 정해져 있거나 시스템에 맞게 설정해 줍니다. --\u0026gt; $MOMHOME/bin/mppnccombine.pgi 가 존재하면 새로 생성하지 않으므로 확인하여 직접 삭제해 줍니다. % vi ../bin/mkmf.template.pgi NETCDF_ROOT = $(NETCDFHOME) --\u0026gt; 시스템에 맞게 설정해 줍니다. MPI_ROOT = $(MPICH) --\u0026gt; 시스템에 맞게 설정해 줍니다. INCLUDE = -I$(NETCDFHOME)/include -I$(MPI_ROOT)/include FFLAGS_OPT = -O2 -Mcray=pointer --\u0026gt; -O2 와 -fast 를 같이 쓰면 에러나네요.-_- FFLAGS = $(INCLUDE) -i4 -r8 -Ktrap=fp -Mallocatable=O3 -D_F200 $(FFLAGS_OPT) $(FFLAGS_DEBUG) FC = mpif90 --\u0026gt; 시스템에 맞는 컴파일러를 지정 LDFLAGS = $(VERBOSE) -L$(NETCDF_ROOT)/lib -lnetcdf -L$(MPI_ROOT)/lib -lmpich % vi ../bin/environs.pgi --\u0026gt; 시스템에서 module을 사용하지 않는 경우에는 module 관련된 것을 모두 지웁니다. 모두 수정을 하였다면, 다음의 명령으로 컴파일 수행을 합니다.\n% ./mom4p1_coupled_compile.csh \u0026gt;\u0026amp; compile.msg 에러 없이 ../exec_pgi/mom4p1_coupled/fms_mom4p1_coupled.x 가 만들어 졌다면 성공한 것임.\n실행 해보기\n실행하기 전에 실행 스크립트를 다음과 같이 수정합니다. % vi mom4p1_coupled_run.csh set platform = pgi --\u0026gt; $MOMHOME/bin 에 보면 여러가지 platfom이 있음 set name = om3_core3 --\u0026gt; om3_core1, atlantic1, MOM4p1_SIS_TOPAZ 등이 있음. set inputDataDir = $root/data/om3_core3/INPUT --\u0026gt; 내려받은 입력자료를 풀어 준 곳 set archive = $expdir/OUTPUT --\u0026gt;대용량 결과화일을 옮겨줄 디렉토리. 미리 만들어져 있어야 함! #Archive the results 로부터 마지막 exit 0 바로 위까지는 결과화일의 압축과 저장에 대한 것이므로 시스템에 맞게 수정하거나 필요 없을 경우 모두 삭제합니다. 앞서 내려받은 \u0026ldquo;om3_core\u0026quot;의 실험 자료 중 input 자료를 $inputDataDir에 가서 풀어 줍니다.\n% tar xvzf ...(path).../om3_core3.input.tar.gz 이제 실행을 하면 되는데, MPI실행방법에 대해 잘 모를 경우는\n\u0026ldquo;클러스터 시스템에서의 MPI 설정 방법\u0026ldquo;을 참조하세요.\n% mpdboot -n 4 -f ~/mpd.hosts % ./mom4p1_coupled_run.csh \u0026gt;\u0026amp; coupled_run.msg 결과 비교하기\n내려받은 om3_core3의 자료에는 결과 화일도 같이 있으므로,\n이 실험에서 산출된 $MOMHOME/work/om3_core3/ascii 에 있는\n\u0026ldquo;.fms.out\u0026quot;과 \u0026ldquo;.logfile.*.out\u0026quot;을 비교하여 실험이 정상적으로 되었는지 판단합니다.\nGood luck! #수치모형 #OGCM #해양순환모형 #Numerical Models #Ocean Circulation\n","date":"2009년 11월 4일","externalUrl":null,"permalink":"/2009/11/MOM4-%EC%84%A4%EC%B9%98%EA%B8%B0-version-mom4p1alphasep2009/","section":"글","summary":"MOM4 알파판 mom4p1_alpha_sep2009 설치기. om3_core 실험을 예로 컴파일과 실행을 설명합니다.","title":"MOM4 설치기 (version: mom4p1_alpha_sep2009)","type":"posts"},{"content":" WRF ARW V3.1 설치기를 보고 설치에 성공하였다면,\n다음은 미국 지역에 실제로 적용해 보도록 하겠습니다.\n(January 2000 Case)\n참고) 우리나라 주변 지역의 설정에 관해서는 개인적으로 연락 주시기 바랍니다. ^-^. 모형에 사용될 입력자료를 준비하기 위하여 WPS 디렉토리로 이동한다.\n%cd WPS \u0026ldquo;namelist.wps\u0026quot;를 편집하여 다음을 수정한다.\nmax_dom = 1 parent_id = 1, parent_grid_ratio = 1, i_parent_start = 1, j_parent_start = 1, e_we = 74, e_sn = 61, geog_data_res = \u0026#39;10m\u0026#39;, dx = 30000, dy = 30000, map_proj = \u0026#39;lambert\u0026#39;, ref_lat = 34.83, ref_lon = -81.03, stand_lon = -98.0, geog_data_path = \u0026#39;terrestrial 자료가 있는 디렉토리 위치\u0026#39; 제대로 설정되었는지를 \u0026ldquo;./util/plotgrids.exe\u0026quot;를 실행하여 \u0026ldquo;gmeta\u0026quot;가 생성되면,\nNCAR Graphics의 idt 명령으로 다음과 같은 그림을 확인한다.\n%idt gmeta \u0026ldquo;./geogrid.exe\u0026quot;를 실행하고 \u0026ldquo;geo_em.d01.nc\u0026rdquo; 가 생성되었으면, ncview 등으로 화면상으로 확인하거나, \u0026ldquo;ncdump -h geo_em.d01.nc\u0026quot;의 명령으로 내용을 텍스트로 직접 확인해 본다.\n1월달의 입력자료를 여기에서 가져와서 data 디렉토리 아래에 풀어준다.\n%cd ../data; tar xvzf JAN00.tar.gz 이 자료는 WPS 디렉토리의 util/g1print.exe로 간략한 내용들을 볼 수 있다.\n%cd ../WPS; ./util/g1print.exe ../data/JAN00/2000012412.AWIPSF AWIP 자료이므로 AWIP Vtable을 링크하고 GRIB 자료들을 링크한다.\n%ln -sf ungrib/Variable_Tables/Vtable.AWIP Vtable %./link_grib.csh ../data/JAN00/2000012* 그러면, Vtable과 GRIBFILE.AAA, GRIBFILE.AAB, \u0026hellip;. 등이 모두 링크되었을 것이다.\nungrib을 실행하기 위하여 namelist.wps를 다음과 같이 수정하고,\nstart_date = \u0026#39;2000-01-24_12:00:00\u0026#39;, end_date = \u0026#39;2000-01-25_12:00:00\u0026#39;, interval_seconds = 21600, prefix = \u0026#39;FILE\u0026#39;, 다음과 같이 실행하면 \u0026ldquo;FILE:2000-01-24_12\u0026rdquo;, \u0026ldquo;FILE:2000-01-24_18\u0026rdquo; 등의 입력 자료가 생성된다.\n%./ungrib.exe \u0026gt;\u0026amp; ungrib_data.log 자료를 확인하기 위해서 다음의 두 가지 방법으로 테스트 해 본다.\n%./util/rd_intermediate.exe FILE:2000-01-24_12 %./util/plotfmt.exe FILE:2000-01-24_12 ; idt gmeta metgrid에는 namelist.wps에서 특별하게 설정한 것이 없으니 바로 실행한다.\n%./metgrid.exe 실행 후에는 met_em.d01.2000-01-24_??:??:??.nc 화일이 생성되므로\nncview 또는 ncdump -h 로 확인해 본다.\n입력자료가 모두 생성되었으므로 WRF를 실행하기 위하여 WRFV3 디렉토리로 이동하고\n입력 자료를 링크한다.\n%cd ../WRFV3/test/em_real %ln -sf ../../../WPS/met_em.d01.2000-01* . namelist.input를 다음과 같이 수정하고 real.exe를 실행한다.\nrun_days = 0, run_hours = 12, run_minutes = 0, run_seconds = 0, start_year = 2000, start_month = 01, start_day = 24, start_hour = 12, end_year = 2000, end_month = 01, end_day = 25, end_hour = 12, interval_seconds = 21600 input_from_file = .true., history_interval = 180, max_dom = 1, s_we = 1, e_we = 74, s_sn = 1, e_sn = 61, s_vert = 1, e_vert = 28, num_metgrid_levels = 27 dx = 30000, dy = 30000, %real.exe 를 실행한 후 생성되는 wrfinput_d01과 wrfbdy_d01을 ncview 또는 ncdump -h 로 확인해 본다.\n이제 모든 준비가 다 되었으므로 wrf를 실행한다.\n%wrf.exe 실행이 끝나면, \u0026ldquo;wrfout_d01_2000-01-24_12:00:00 등이 생성되므로 이것으로 분석을 하면 된다.\n%ncdump -h wrfout_d01_2000-01-24_12:00:00 %ncdump -v Times wrfout_d01_2000-01-24_12:00:00 --\u0026gt; 모의 시간을 볼 수 있다. %ncview wrfout_d01_2000-01-24_12:00:00 Good luck !\n#수치모형 #대기순환모형 #WRF\n","date":"2009년 9월 28일","externalUrl":null,"permalink":"/2009/09/WRF-V31%EC%9D%84-%EB%AF%B8%EA%B5%AD-%EC%A7%80%EC%97%AD%EC%97%90-%EC%A0%81%EC%9A%A9%ED%95%B4-%EB%B3%B4%EA%B8%B0/","section":"글","summary":"설치를 마친 WRF V3.1을 미국 지역(January 2000 Case)에 적용하는 전 과정. WPS 설정부터 wrf.exe 실행까지.","title":"WRF V3.1을 미국 지역에 적용해 보기","type":"posts"},{"content":" WRF ARW V3.1 설치기를 보고 설치에 성공하였다면,\n다음은 우리나라 주변지역에 적용해 보도록 하겠습니다. 모형에 사용될 입력자료를 준비하기 위하여 WPS 디렉토리로 이동합니다.\n%cd WPS\n\u0026ldquo;namelist.wps\u0026quot;를 편집하여 다음을 수정합니다.\nmax_dom = 1\nparent_id = 1,\nparent_grid_ratio = 1,\ni_parent_start = 1,\nj_parent_start = 1,\ne_we = 100,\ne_sn = 100,\ngeog_data_res = \u0026lsquo;10m\u0026rsquo;,\ndx = 50000,\ndy = 50000,\nmap_proj = \u0026rsquo;lambert\u0026rsquo;,\nref_lat = 35.00,\nref_lon = 127.50,\nstand_lon = 125.0,\ngeog_data_path = \u0026rsquo;terrestrial 자료가 있는 디렉토리 위치\u0026rsquo;\n제대로 설정되었는지를 \u0026ldquo;./util/plotgrids.exe\u0026quot;를 실행하여 \u0026ldquo;gmeta\u0026quot;가 생성되면,\nNCAR Graphics의 idt 명령으로 다음과 같은 그림을 확인한다.\n%idt gmeta\n\u0026ldquo;./geogrid.exe\u0026quot;를 실행하고 \u0026ldquo;geo_em.d01.nc\u0026rdquo; 가 생성되었으면, ncview 등으로 화면상으로 확인하거나, \u0026ldquo;ncdump -h geo_em.d01.nc\u0026quot;의 명령으로 내용을 텍스트로 직접 확인해 본다.\n\u0026hellip;\n","date":"2009년 9월 25일","externalUrl":null,"permalink":"/2009/09/WRF-V31%EC%9D%84-%EC%9A%B0%EB%A6%AC%EB%82%98%EB%9D%BC-%EC%A3%BC%EB%B3%80%EC%A7%80%EC%97%AD%EC%97%90-%EC%A0%81%EC%9A%A9%ED%95%B4-%EB%B3%B4%EA%B8%B0/","section":"글","summary":"설치를 마친 WRF V3.1을 우리나라 주변 지역에 적용하는 설정. namelist.wps 편집부터 실행까지.","title":"WRF V3.1을 우리나라 주변지역에 적용해 보기","type":"posts"},{"content":"참고1 : WRF v4로 태풍 솔릭(Soulik) 모의해 보기\n참고2 : WRF v3.4 설치기는 /2012/06/WRF-ARW-v34-설치기/ 를 보세요.\n[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 된다.]\ntar -xvzf WRFV3.1.TAR.gz; tar -xvzf WPS.TAR.gz cd WRFV3; ./configure -\u0026gt; 1번 선택, 1번 선택 ./compile em_real \u0026gt;\u0026amp; compile.log cd ../WPS; ./configure -\u0026gt; 5번 선택 ./compile \u0026gt;\u0026amp; compile.log ./geogrid.exe; ./ungrib.exe; ./metgrid.exe cp ./met_em* ../WRFV3/run/.; cd ../WRFV3/run; ./real.exe ./wrf.exe WRF에는 두가지 버전이 있다. ARW와 NMM\u0026hellip;\nARW는 연구용이고 NMM은 현업용이라고 생각하면 구별하기 쉬우며,\nNMM에서는 어려운, 즉 ARW만이 할 수 있는 것은 다음과 같다.\n지역 기후 또는 계절 단위의 현상 연구 화학 모형과의 결합 전지구 모의 (지역모형을 전지구 영역으로 확장하여 모의할 수 있음) 다양한 규모의 이상적인 모의 (예: convection, baroclinic waves, large eddy simulations) 자료동화 연구 그래픽 및 분석 도구로써 NCL과 ARWPost를 사용 가능 WRF 시스템은 다음과 같이 구성된다.\nWRF 전처리도구: WPS (WRF Pre-processing System) WRF 모형 : ARW와 NMM 버전이 있다. 과학가시화 도구 변분자료동화 : WRF-Var 화학 결합 모형 : WRF-Chem 지금부터 WRF ARW v3.1을 설치해 보자. (이상적인 경우가 아닌 실제 지형의 경우를 설치함)\nWRF 모형의 다운로드 : http://www.mmm.ucar.edu/wrf/users/download/get_source.html\n처음 사용자는 홈페이지 아래에 있는 \u0026ldquo;New Users\u0026quot;를 클릭하고 이메일 주소를 등록한 후 받으면 되며,\n기존 사용자는 \u0026ldquo;Returning Users\u0026quot;를 클릭하고 등록된 이메일 주소로 로그인하여 받으면 된다.\n소스코드는 ARW와 NMM 버전이 하나의 화일에 함께 포함되어 있으며,\n데이타는 각각 따로 받아야 한다.\nWRF의 루트디렉토리를 생성하고 WRF와 WPS의 압축파일을 풀어준다.\n% mkdir WRF; cd WRF % tar -xvzf ../WRFV3.1.TAR.gz -\u0026gt; \u0026#34;WRFV3\u0026#34; 디렉토리가 생성된다. % tar -xvzf ../WPS.TAR.gz -\u0026gt; \u0026#34;WPS\u0026#34; 디렉토리가 생성된다. 컴파일 순서는 WPS가 WRFV3의 objects 화일들을 참조하기 때문에 WRFV3 부터 컴파일한다.\n사용자 시스템에 맞는 환경으로 컴파일 하기 위하여 WRFV3.1의 환경설정을 한다.\n우선, 환경변수에 \u0026ldquo;NETCDF\u0026rdquo; 가 있는지 확인하고 없으면 다음과 같이 설정해 준다.\n% setenv NETCDF */usr/local/netcdf* 또는 % setenv NETCDF $NETCDFHOME WRF의 홈디렉토리로 이동하여 환경설정을 한다.\n% cd WRFV3; ./configure 1~24 까지의 선택항목이 나오는데 다음을 참조하여 선택한다.\n(serial) : 1개 CPU를 사용할 경우. 처음 사용자는 이것으로 선택하여 나중에 병렬화를 하는 것이 좋음\n(smpar) : OpenMP를 사용할 경우 (단일보드나 단일노드 내에서의 병렬화로 생각하면 됨)\n(dmpar) : MPI를 사용할 경우 (다중보드나 다중노드간의 병렬화를 할 수 있음)\n(dm+sm) : OpenMP와 MPI를 동시에 사용할 경우. 노드 내에는 OpenMP로, 노드 간은 MPI로 사용 이 설명에서는 1번을 선택하여 진행함. (Linux x86_64, PGI compiler with gcc (serial))\nCompile for nesting? 항목은 1번(basic)을 선택한다.\nnesting 이란 하나의 격자체계 내에 또 다른 작은(고해상도) 격자체계를 구성하여 연결하는 것을 말함 configure가 끝나면 configure.wrf 가 생성된다.\nvi 등의 에디터로 이 화일을 열어 수정할 곳을 수정하면 되는데\n처음 시작할 때 NETCDF 환경변수가 잘못되었거나 설정을 해주지 않은 경우는\n184줄에 있는 \u0026ldquo;NETCDFPATH\u0026quot;와\n177줄에 있는 \u0026ldquo;-L/usr/local/netcdf/lib\u0026rdquo; 부분을 알맞게 고쳐주면 된다.\n이제 컴파일을 해야 하는데 다음과 같은 명령으로 소스를 컴파일한다.\n% ./compile *TEST_NAME* \u0026gt;\u0026amp; compile.log TEST_NAME 에는 다음의 경우 중 하나를 선택하면 되며 여기에서는 em_real을 사용한다.\nem_b_wave ; 3D baroclinic waves em_esmf_exp ; em_fire ; em_grav2d_x ; 2D gravity current em_heldsuarez ; 3D global case em_hill2d_x ; 2D flow over a bell-shaped hill em_les ; 3D large-eddy simulation em_quarter_ss ; 3D quarter-circle shear supercell simulation em_real ; em_scm_xy ; Single column model em_seabreeze2d_x ; 2D full physics seabreeze em_squall2d_x ; 2D(x,y) squall line example for Eulerian mass coordinate model em_squall2d_y ; 2D(x,y) squall line example for Eulerian mass coordinate model exp_real ; nmm_real ;\ncompile.log의 내용 중 \u0026ldquo;Error\u0026rdquo; 또는 \u0026ldquo;warnings\u0026rdquo; 등의 단어를 찾아보고 없으면 컴파일을 성공한 것이다.\n그렇지 않으면, 문제가 있는 곳을 모두 해결할 때까지 다음과 같이 반복하여 컴파일 해야 한다. % ./clean -a ; ./configure % ./compile *TEST_NAME* \u0026gt;\u0026amp; compile.log 컴파일 시간은 시스템에 따라 다르지만, Intel Xeon X5450(3Ghz)에서는 약 10~20분 정도 걸린다.\n컴파일이 성공하면 다음의 실행화일들이 생성된다.\nmain/ndown.exe ; 한방향 nesting에 사용 main/nup.exe ; Upscaling - WRF-Var(자료동화)에 사용 main/real.exe ; 실제 자료를 사용한 초기화 과정에 사용. 이상적인 실험일 경우는 ideal.exe임. main/wrf.exe ; WRF 모형의 실행 화일이며 이것으로 시간 적분을 수행\n이 실행화일들은 각각 \u0026ldquo;run/\u0026ldquo;과 \u0026ldquo;test/em_real/\u0026rdquo; 아래에 링크되어 사용된다. WRF 모형을 모두 설치하였으므로,\n이제부터는 전처리 시스템인 WRF Preprocessing System(WPS)를 설치한다.\n% cd ../WPS; ./configure 1~15 까지의 선택항목이 나오는데 GRIB2 가 설치되어 있으면 6번, 그렇지 않으면 5번을 선택한다.\n그러면, \u0026ldquo;configure.wps\u0026quot;가 생성되는데, 화일의 내용 중에 \u0026ldquo;NCARG_LIBS\u0026quot;나 \u0026ldquo;WRF_DIR\u0026rdquo; 등이 제대로 설정되어 있는지 확인한다.\n다음과 같이 컴파일을 실행한다.\n% ./compile \u0026gt;\u0026amp; compile.log WPS에서는 X11 라이브러리를 사용하는데 시스템에 따라 기본 X11 라이브러리 디렉토리가 32비트로 설정되는 경우가 있다.\n이런 경우 compile.log 화일 내에 \u0026ldquo;Error\u0026quot;가 나타나는데, 이것은 컴파일 하기 전에 configure.wps의 24줄에 있는 \u0026ldquo;-L/usr/X11R6/lib\u0026quot;를 \u0026ldquo;-L/usr/X11R6/lib64\u0026quot;로 수정한 후 컴파일 하면 된다.\n컴파일을 성공하면 다음의 실행화일들이 생성된다.\ngeogrid.exe ; namelist.wps에 설정되어 있는대로 terrestrial data 생성 metgrid.exe ; 격자체계에 맞게 기상 입력자료를 수평 내삽 (수직 내삽은 real.exe에서 수행됨) ungrib.exe ; GRIB 형식의 기상 자료를 읽어서 WRF에서 사용할 수 있는 중간 형식으로 변환 자, 이제 WRF를 실행할 모든 준비를 마쳤다. 모형의 실행 순서는 다음과 같다.\n먼저 \u0026ldquo;geogrid.exe\u0026quot;를 실행하여 모형 격자에 맞는 지형데이터를 만들어야 하는데, 이에 필요한 원본 지형데이터를 다음의 링크에서 가져 온다.\nhttp://www.mmm.ucar.edu/wrf/OnLineTutorial/Basics/GEOGRID/ter_data.htm\n이 실험의 경우에는 \u0026ldquo;geographical data in all available resolution (30\u0026rdquo;, 2\u0026rsquo;, 5\u0026rsquo;,and 10\u0026rsquo;)\u0026ldquo;의 자료를 가져왔다. 이것을 WRF 디렉토리 아래의 \u0026ldquo;data\u0026rdquo; 디렉토리에 압축을 풀어준다.\n모형의 격자 구조를 바꾸려면 WPS 디렉토리의 \u0026ldquo;namelist.wps\u0026rdquo; 화일의 내용 중 \u0026ldquo;\u0026amp;geogrid\u0026rdquo; 부분을 바꾸어야 한다. 자세한 사항은 WRF 홈페이지 또는 사용자 매뉴얼을 참고하기 바란다.\n이 실험에서는 \u0026amp;geogrid 부분의 \u0026ldquo;geog_data_path = \u0026quot; 부분을 바로 위에서 압축을 푼 디렉토리로 수정해 준다. (ex. geog_data_path = \u0026lsquo;/home/user/WRF/data/geog\u0026rsquo;) 설정한 지역의 확인을 위하여 \u0026ldquo;./util/plotgrid.exe\u0026quot;를 실행해 본다.\nNCAR Graphics용 gmeta 화일이 생성된다. (%idt gmeta 로 확인해본다)\n\u0026ldquo;./geogrid.exe\u0026quot;를 실행하면 \u0026ldquo;geo_em.dxx.nc\u0026rdquo; 화일이 생성된다.\n여기에서 \u0026lsquo;xx\u0026rsquo;는 지역별로 생성되는데 설정된 지역이 2개로 nesting되어 있다면 01과 02가 될 것이다.\nncview 등으로 생성된 nc 화일에 문제가 없는지 확인해 본다.\nGRIB 자료를 가지고 있다면 ungrib.exe를 사용하여 WRF가 사용할 수 있는 중간형식으로 만들어 준다.\n자세한 사용법은 http://www.mmm.ucar.edu/wrf/OnLineTutorial/Basics/UNGRIB/index.html 를 참조하면 되고, 여기에서는 http://www.mmm.ucar.edu/wrf/src/data/avn_data.tar.gz 의 자료 또는\nhttp://www.mmm.ucar.edu/wrf_tmp/WRF_OnLineTutorial/SOURCE_DATA/JAN00.tar.gz 의 자료를 사용해 본다.\n이 자료를 WRF 홈디렉토리의 data 디렉토리에 풀어준다. (ex. /home/user/WRF/data/)\nungrib.exe가 AVN 자료의 테이블 정보와 자료를 참조하기 위하여 다음과 같은 방법으로 링크시킨다.\n%ln -s ungrib/Variable_Tables/Vtable.AVN0P5WRF Vtable %./link_grib.csh ../data/avn/fnl* 이렇게 하면 Vtable의 링크와 GRIBFILE.AAA, GRIBFILE.AAB, GRIBFILE.AAC 등의 링크가 생긴다.\n이제 namelist.wps의 start_date와 end_date를 AVN 자료의 날짜로 수정한 후 다음과 같이 ungrib.exe를 실행시키면, FILE:2000-01-24_12 와 FILE:2000-01-24_18 등의 화일이 생성된다.\n%./ungrib.exe \u0026gt;\u0026amp; ungrib.output metgrid.exe는 기상자료를 읽어 수평내삽을 하여 격자체계에 맞추는 역할을 한다. 다시 말해서, geogrid.exe에서 생성된 geo_em.dxx.nc과 ungrid.exe에서 생성된 FILE:YYYY-MM-DD_HH를 읽어서 WRF의 입력자료인 met_em.dxx.YYYY-MM-DD_HH:00:00.nc\n%./metgrid.exe 이제 WRF를 실행하기 까지 다음 2단계가 남았다.\nreal.exe : metgrid.exe에서 생성된 met_em* 화일의 수직 내삽을 하며,\n경계치와 초기치 화일을 생성한다. wrf.exe : 모형의 예측을 수행한다. WRF를 실행하기 위하여 WRF의 실험디렉토리인 WRFV3/test/em_real 또는 WRFV3/run 으로 이동한다. 이 두 디렉토리는 필요한 화일이 모두 같이 링크되어 있기 때문에 어느쪽으로 이동하여도 상관없다. 그리고 metgrid.exe에서 생성된 met_em* 화일을 복사 또는 링크한다.\n%cp ./met_em* ../WRFV3/run/. ; cd ../WRFV3/run real.exe의 입력화일인 namelist.input를 열어서 시작 시간 등을 확인하여 수정해 준 후 real.exe를 실행하면, wrfinput_dxx 와 wrfdby_dxx 가 생성된다. 여기에서 dxx는 nesting한 domain의 숫자이며 nesting을 하지 않은 경우는 d01 만이 생성된다.\n마지막으로, wrf.exe를 실행하면 \u0026ldquo;wrfout_dxx_[initial_date]\u0026rdquo; 의 결과화일을 얻을 수 있다.\n이 화일들은 WRF의 postprocessing 도구(NCL, RIP4, ARWpost, VAPOR 등)를 이용하여 분석하면 된다.\nGood luck !\n#수치모형 #Numerical Models #대기순환모형 #AGCM\n","date":"2009년 9월 22일","externalUrl":null,"permalink":"/2009/09/WRF-ARW-v31-%EC%84%A4%EC%B9%98%EA%B8%B0/","section":"글","summary":"WRF ARW v3.1 설치기. 소스 내려받기부터 configure와 compile, 전처리 시스템 WPS 설치까지 따라 할 수 있게 정리했습니다.","title":"WRF ARW v3.1 설치기","type":"posts"},{"content":"","date":"2008년 6월 24일","externalUrl":null,"permalink":"/tags/%EA%B8%B0%ED%9B%84%EB%B3%80%ED%99%94/","section":"태그","summary":"","title":"기후변화","type":"tags"},{"content":"원문 : 기후변화가 산업에 미치는 경제적 영향과 적응대책, 기상기술정책 제2호, 17페이지\n기온 상승\n지구 평균 기온은 향후 20여년간 0.2도 정도 상승\n장기적으로는 기온이 2~4.5도 상승\n지구 온난화 결과 추운 날 수가 줄어들어 더운 날 수는 증가\n중부 유럽, 미국 서부지역, 동아시아, 한국 등은 혹서 기간, 정도 및 빈도 증가를 경험\n해수면 상승\n빙산 및 육지 얼음의 녹는 속도가 증가하면서 해수면은 지속적으로 상승\n해수면은 21세기 중 18~59cm 상승\n온실가스의 대기 중 농도가 안정된 이후에도 지구 평균 기온은 수세기 동안 계속 상승하여 해수면도 지속적으로 상승\n강수량 및 습도\n고위도 지역은 다습한 날 수와 강스량 증가, 아열대 지역은 건기 증가\n북유럽 대부분 지역, 캐나다, 미국 북동부, 북극 지역에는 연간 강수량 증가\n아시아 북부, 티베트 고원 지역은 겨울철 강수량 증가\n지중해 지역, 오스트레일리아, 뉴질랜드는 건기 빈도 및 기간 증가로 빈번한 한발 발생\n극심한 태풍\n보다 강력한 열대지역 싸이크론 발생 증가\n많은 지역에서 대규모에 걸쳐 발생하는 호우 후 갑작스런 홍수 발생 빈도 증가\n오스트레일리아, 뉴질랜드 동부 지역, 지중해 지역은 한발 위험 증가, 중부 유럽과 중미 지역은 계절적 가뭄 위험 증가\n오스트레일리아, 미국 서부지역과 같은 건조 또는 반건조 지역의 산불 및 들불 증가\n기타 영향\n대부분의 유럽 및 북미 지역에서는 강설 기간 및 강설량 증가\n추운 날 수 감소와 이에 따른 서리 감소\n향후 수십년간 빙하 감소 가속화\n영구 동토층 감소\n","date":"2008년 6월 24일","externalUrl":null,"permalink":"/2008/06/%EC%A7%80%EA%B5%AC%EC%98%A8%EB%82%9C%ED%99%94%EC%97%90-%EC%9D%98%ED%95%9C-%EA%B8%B0%ED%9B%84%EB%B3%80%ED%99%94-%ED%98%84%EC%83%81%EB%93%A4/","section":"글","summary":"지구온난화로 나타나는 기후변화 현상 정리. 기온 상승, 해수면 상승, 강수 변화, 극한현상 빈도 등.","title":"지구온난화에 의한 기후변화 현상들","type":"posts"},{"content":"출처 : 안명환, \u0026ldquo;미국의 기상위성 개발 현황과 향후 전망\u0026rdquo;, 기상기술정책 창간호(Vol.1, No.1, 2008년3월5일),\npp. 19-38.\nNOAA 현업위성 프로그램\nNOAA 극귀도 위성 시리즈\n1970년대부터 NOAA에서 운영하는 극궤도 현업기상위성시리즈로, 적도를 아침에 통과하는 위성과 오후에 통과하는 위성이 있다. NOAA에 탑재되는 주요 센서는 AVHRR(Advanced Very High Resolution Radiometer), HIRS(High resolution InfraRed Sounder), 그리고 AMSU(Advanced Microwave Sounding Unit)가 있다. 가장 최신의 NOAA 극귀도 위성은 2005년 5월 20일에 발사된 오후 위성인 NOAA 18호 이다.\n정지궤도 GOES 시리즈\n미국 대륙 전체를 관측하기 위해 적도 대서양 상에 존재하는 서부 위성과, 태평양 상에 존재하는 동부 위성 2기를 운영하고 있다. 가장 최신의 GOES 위성인 GOES 13호는(2006년 5월 24일 발사) 이전의 SS/Loral 위성체가 아닌 보잉 위성채를 사용하여(태양전지판과 균형을 맞추기 위한 긴 막대가 없는 위성체), 궤도에서의 수명은 8년으로 연장하였으며, 현재는 대기모드로 운영 중에 있다. 탑재센서는 18채널 탐측기, 5채널 영상기, Solar X-ray Imager를 포함한 Space Environment Monitor (SEM)가 있다.\nNASA 연구개발용 프로그램\nTropical Rainfall Measurement Mission(TRMM, 1997년 발사)\nTRMM 미션은 현재의 기후 시스템 내에서의 물 순환에 대한 이해를 높이기 위하여 고안되었다. 지구상의 적도 및 적도 인근지역에 대한 관측을 통하여 TRMM은 강수 및 강수와 연관된 열 방출에 대한 자료를 제공한다. TRMM은 기후시스템을 조정하는데 핵심적인 역할을 하는 수증기, 구름, 강수 사이의 상호작용을 이해하는데 중요한 기여를 하고 있다 (http://trmm.gsfc.nasa.gov/).\nQuick Scattrometer(QuikSCAT, 1999년 6월 19일 발사)\nQuikSCAT 미션은 NASA의 산란계 NSCAT 자료 공백을 \u0026ldquo;신속하게 채우기\u0026rdquo; 위해 마이크로파 레이더인 SeaWinds 센서를 이용하여 해상에서 반사되어 오는 마이크로파 신호(13.4GHz)의 강도를 측정하여 해상풍을 산출하는 임무이다. 회전형 접시 안테나를 이용하여 원형으로 1800 km의 폭으로 관측하여 하루에 400,000 관측자료로 지구 표면의 90%를 관측한다. 현재 25 km의 공간해상도를 가지는 자료를 준실시간 모드(자료의 관측 후 3시간 이내에 활용가능)로 제공하고 있다 (http://winds.jpl.nasa.gov/missions/quikscat/index.cfm).\nJason(2001년 12월 7일 발사)\nTOPEX/Poseidon 임무의 후속임무인 Jason-1은 NASA와 프랑스의 CNES와의 공동협력 사업으로 해수면 고도를 정밀하게 측정하여 해양의 변화를 감시하는 목적을 가지고 있다. Jason-1, GRACE, 그리고 QuikSCAT 산란계 관측자료의 종합적인 활용을 통한 해양정보 생산을 JPL에서 추진하고 있다 (http://topex-www.jpl.nasa.gov/mission/jason-1.html).\nNASA EOS 프로그램\n1991년부터 시작된 이 프로그램은 지구전체의 현상을 종합적으로 관측하기 위한 NASA의 선도적인 사업으로 위성을 비롯한 다양한 관측장비들을 이용하여 인간에게 영향을 주는 자연현상 및 인간의 활동이 자연에 미치는 영향에 대한 이해를 제고하기 위한 프로그램이다. 이를 통해 기상예보 및 자연자원의 관리의 개선, 그리고 궁극적으로 미래의 기후변화를 예측할 수 있는 능력을 확보할 목적을 가지고 있다.\nEOS 프로그램에는 크게 첨단위성, 자료처리시스템, 그리고 연구팀들이라는 3개의 구성요소를 포함하고 있다. EOS에서 관심을 가지는 요소들은 구름, 물과 에너지 순환, 해양, 대기화학, 지표면, 물과 생태계 순환, 빙하, 그리고 지질 분야이다. 본격적인 사업은 1999년에 첫 번째 EOS 위성인 Terra를 발사하면서 성공적인 첫발을 내딛게 되었는데, 지구전체시스템을 관측할 수 있는 다양한 센서들을 이용하여 성공적인 사업시작을 알렸다. 첫 번째로 발사된 기상 및 통신위성이 그랬던 것처럼, Terra 위성의 발사로 지구과학 연구의 새 지평을 열게 되었으며, 이후에 성공적으로 발사된 Aqua와 Aura를 통해 EOS 사업을 통해 달성하고자 하였던 목적을 성공적으로 완수하고 있다.\nTerra(1999년 12월 18일 발사)\nTerra 위성은 NASA의 Earth Observation System(EOS) 프로그램의 첫 번째 위성으로 일본, 캐나다와 협력으로 추진하는 다목적 위성으로 지구에 대한 이해와 예측 능력을 향상시키는 임무를 가지고 있다. 2000년 2월 24일부터 관측을 시작하여 2008년 현재까지도 지속하고 있다. 주요탑재센서로는 MODIS, ASTER, CERES, MISR, MOPITT 등이 있다 (http://terra.nasa.gov/).\nAqua(2002년 5월 4일 발사)\nAqua는 (라틴어로 물이라는 뜻) NASA EOS 프로그램의 두 번째 위성으로 지구의 물 순환에 대한 정보를 얻기 위한 다양한 센서 (AIRS, AMSR-E, AMSU-A, CERES, HSB, 그리고 MODIS)를 탑재하고 있다. 오후 궤도 위성(A-Train라고도 불림) 중 첫 번째로 발사됨. A-Train은 OCO가 가장 먼저 통과하기 뒤이어 Aqua, CloudSat, CALIPSO, PARASOL, 그리고 Aura 순서로 비행하게 됨 (http://aqua.nasa.gov/).\nAura(2004년 7월 15일)\nAura (라틴어로 산들바람이라는 뜻)의 설계수명은 5년이지만 운영목표수명은 6년으로 EOS 시스템의 마지막 위성이며, 주 임무는 대기의 화학적 조성을 관측하는 것이다. Aura는 Aqua를 15분 차이로 따르고 있다. 주요탑재센서로는 HIRDLS, MLS, OMI, 그리고 TES가 있다 (http://aura.gsfc.nasa.gov/).\nEarth System Science Pathfinder\nESSP 프로그램은 NASA의 EOS 프로그램이 종료된 후, 지구과학 연구분야에서 구체적이고 독특한 주제를 집중적으로 다룰 수 있는 임무를 수행하기 위한 사업이다. 새로운 과학적 개척을 위하 모든 가능성을 열어놓고 2년에 한 번씩 공개적으로 제안서를 받아 공개적인 심사절차를 거쳐 사업을 선정하는 혁신적인 사업으로 중소규모의 임무 및 고정된 비용으로 비교적 짧은 시간에 위성을 개발하고 발사할 수 있는 임무들로 구성된다. 연구책임자 중심의 이 사업은 대기, 해양, 지질, 극지방, 지구물리 등의 분야를 망라하며, 사업범위는 개념정의, 설계, 개발, 운영, 자료생산, 분배 및 저장, 그리고 이들 관측자료를 이용한 연구 수행까지를 포함하는 형태의 프로그램이다. 연구책임자는 과학적 성취도, 임무수행을 위한 팀 구성, 그리고 임무를 성공적으로 수행할 책임을 가진다. 임무수행 팀에는 대학, 산업체, 정부, 공공연구기관, 국제기관 등 연구책임자의 판단에 의해 결정된다.\nESSP 프로그램을 통해 추진되고 있는 중요한 미션으로는 이미 발사되어 운영중인 Gravity Recovery and Climate Experiment (GRACE; 2002년 발사), Cloud-Aerosol Lidar and Infrared Pathfinder Satellite Observations (CALIPSO; 2006년 발사), CloudSat (2006년 발사) 등이 있으며, 향후 발사를 위해 개발 중인, Orbiting Carbon Observatory (OCO; 2008년 발사 예정), Aquarius (2010년 발사 예정) 등이 있다.\nGravity Recovery and Climate Experiment (GRACE; 2002년 3월 17일 발사)\nGRACE 프로그램은 해저기압의 변화를 측정하고, 해양의 질량 변화를 관측하고 육상의 물과 눈의 저장량을 감시하여 해양 표면의 흐름과 열 수송에 대한 이해를 제고하여 전지구 기후문제를 풀기위한 것이다 (http://www.csr.utexas.edu/grace/).\nCloud-Aerosol Lidar and Infrared Pathfinder Satellite Observations (CALIPSO; 2006년 4월 27일 발사)\nCALIPSO (이전에는 PICASSO-CENA)는 전지구 에어로솔 및 구름 특성, 복사플러스, 그리고 대기 상태에 대한 자료를 생산하기 위해 Aqua와 조화를 이루면서 (소위 말하는 A-train 위성 그룹) 운영되는 프로그램이다. 에어러솔과 구름의 복사영향에 대한 새로운 평가를 가능하게 만들고, 이를 통해 미래의 기후변화 예측능력을 크게 향상시킬 수 있을 것으로 기대한다 (http://www-calipso.larc.nasa.gov/).\nCloudSat (2006년 4월 27일 발사)\nCloudSat은 우주에서 구름의 연직구조를 측정하기 위해 설계된 실험위성이다. 위성에 탑재된 센서는 구름을 좀 더 잘 예측할 수 있는 구름 구조의 3차원 정밀정보를 제공할 수 있을 것이다 (http://cloudsat.atmos.colostate.edu/).\nOrbiting Carbon Observatory (OCO; 2008년 발사예정)\nOCO는 기후변화의 주범으로 고려되는 대기중의 이산화탄소를 우주에서 관측하기 위한 프로그램이다. NASA의 최우선 순위에 있는 탄소순환 관측요구사항을 만족시키기 위하여 기존에 증명된 기술을 이용하는 프로그램이다 (http://oco.jpl.nasa.gov/).\nAquarius (2010년 발사예정)\nAquarius는 전지구 해양의 표면 염도 (Sea Surface Salinity; SSS)를 측정하기 위한 임무이다. 전통적인 염도 관측은 주로 현장관측에 의존하였기 때문에 자료의 시공간적 한계에 따라 과학적 이해가 부족하였고, 이를 극복할 수 있는 가장 좋은 방법은 위성의 활용이다. Aquarius 사업을 통해 물순환, 기후, 그리고 해양을 연결하는 중요한 물리적 과정을 해결하는데 기여할 것이다 (http://aquarius.gsfc.nasa.gov/).\n독립적인 프로그램\nNPOESS Preparatory Project (NPP; 2009년 발사예정)\nNPP는 NASA와 NPOESS Integrated Program Office (IPO)와의 공동임무로, Aqua와 같은 기존의 관측임무와 미래의 NPOESS 임무를 연결시키기 위한 목적을 가지고 있다. IPO의 입장에서는 NPOESS의 발사 이전에 새로운 센서, 처리 알고리즘, 위성운영, 지상시스템 등의 기술적인 문제들을 미리 시험하고 증명할 수 있는 기회를 제공하여 현업운영시스템의 위험성을 감소시킬 수 있도록 해준다 (http://jointmission.gsfc.nasa.gov/).\nGlory Mission (2008년 12월 발사 예정)\nGlory는 두 개의 독립적인 목적을 달성하기 위한 지구관측 원격탐사 위성이다. 하나의 목적은 에어로솔의 화학적, 미세물리적, 광학적 특성과 시공간적인 분포를 관측하기 위한 것이며, 다른 하나는 장기간의 기후자료를 구축하기 위해 총 태양일사량을 관측하기 위한 것이다. 이들 목적은 2개의 독립적인 센서를 통해서 달성될 예정으로, 편광된 태양반사광(0.4에서 2.4마이크로미터)을 측정하는 Aerosol Polarimetry Sensor(APS)와 고도의 정확도와 정밀도를 가지는 Total Irradiance Monitor (TIM)이다. 추가적으로 구름카메라를 탑재하여 APS의 관측 영역에 구름의 존재유무를 파악하게 한다 (http://glory.gsfc.nasa.gov/).\nGlobal Precipitation Measurement (GPM; 발사기기 미정)\nGPM은 TRMM의 관측범위를 고위도로 확장하면서 관측주기를 단축하기 위한 임무이다. 이를 위해 주센서를 탑재한 위성(1기)과 수동형 보조센서를 탑재한 위성(최대 8기)들로 위성군단을 구축하여 체계적이고 정규적인 강수관측(3시간 간격)을 이루기 위한 미션이다. 주 센서로는 Dual-frequency Precipitation Radar (DPR)와 고해상도 다중채널 마이크로파센서인 GPM Microwave Imager (GMI)가 있다 (http://gpm.gsfc.nasa.gov/index.html).\n#위성\n","date":"2008년 4월 14일","externalUrl":null,"permalink":"/2008/04/%EA%B8%B0%EC%83%81%EA%B3%BC-%EA%B8%B0%ED%9B%84%EC%97%90-%EA%B4%80%EB%A0%A8%EB%90%9C-%EC%9C%84%EC%84%B1%EB%93%A4/","section":"글","summary":"기상과 기후 관측에 쓰이는 위성들 정리. NOAA 극궤도 위성 시리즈부터 정지궤도 위성까지, 탑재 센서와 함께 훑어봅니다.","title":"기상과 기후에 관련된 위성들","type":"posts"},{"content":"### 아래의 논문들은 저작권 문제로 내려받기 제한이 설정되어 있습니다. ###\n자료를 원하실 경우 개인적으로 연락(dhkim(앳)kma.go.kr)을 주시거나 제목으로 검색하여 받으시기 바랍니다.\n■ 김형진, 노의근, 1999: 새로운 큰에디모사 모형에 의한 대류경계층의 모사 및 아격자 모수화의 영향 분석 (http://data.dhkim.info/monograph/JKMS/07001023.pdf — 링크 소실). 한국기상학회지, 35, 4, p.587-598\n■ 신동현, 이태영, 1997: 큰 에디 모사 실험 결과에 나타난 층적운 낀 해양 대기 경계층에서의 난류 구조 (http://data.dhkim.info/monograph/JKMS/07000477.pdf — 링크 소실). 한국기상학회지, 33, 1, p.75-91.\n■ Kang, I. S., Y. Noh, \u0026amp; S. Raasch, \u0026ldquo;Parallel computation of a large number of Lagrangian droplets in the LES of a cumulus cloud\u0026rdquo;, Parallel Comp. Fluid Dyn. (ed. J. H. Kwon, A. Ecer, J. Periaux, N. Satofuka \u0026amp; P. Fox, Elsevier), 261-268 (2007)\n■ Moeng, C.-H., J. Dudhia, J. Klemp, and P. Sullivan, 2007: Examining Two-Way Grid Nesting for Large Eddy Simulation of the PBL Using the WRF Model (http://data.dhkim.info/monograph/MWR/i1520-0493-135-6-2295.pdf — 링크 소실), Mon. Wea. Rev., 135, 2295-2311.\n■ Noh, Y., I. S. Kang, M. Herold \u0026amp; S. Raasch, Large eddy simulation of particle settling in the ocean mixed layer (http://data.dhkim.info/monograph/etc/Noh2006_PF.pdf — 링크 소실) , Phys. Fluids 18, 085109 (2006).\n■ Noh, Y., W.G. Cheon, S.Y. Hong \u0026amp; S. Raasch, \u0026ldquo;The improvement of the K-profile model for the PBL using LES (http://data.dhkim.info/monograph/BLM/Noh2003_PBL.pdf — 링크 소실) , Boundary Layer Meteorol. 107, 401-427, 2003.\n■ Noh, Y., H.S. Min \u0026amp; S. Raasch, \u0026ldquo;Large eddy simulation of the ocean mixed layer: the effects of wave breaking and Langmuir circulation (http://data.dhkim.info/monograph/JPO/Noh2004_JPO.pdf — 링크 소실) \u0026ldquo;, J. Phys. Oceanogr. 34, 720-735, 2004.\n■ Hong, S. Y., Y. Noh \u0026amp; J. Dudhia, \u0026ldquo;A new vertical diffusion package with an explicit treatment of entrainment processes (http://data.dhkim.info/monograph/MWR/Hong2006_MWR.pdf — 링크 소실) \u0026ldquo;, Mon. Wea. Rev., 134, 2318-2341, 2006.\n■ Raasch, S. and M. Schroeter, 2001: A large eddy simulation model performing on massively parallel computers. Z. Meteorol. 10, 363-372\n#수치모델 #수치모형 #Numerical Models #LES\n","date":"2008년 3월 10일","externalUrl":null,"permalink":"/2008/03/LESLarge-Eddy-Simulation-%EA%B4%80%EB%A0%A8-%EB%85%BC%EB%AC%B8%EB%93%A4/","section":"글","summary":"대규모 에디 모사(LES) 관련 국내외 논문 목록. 내려받기 링크는 소실되었습니다.","title":"LES(Large Eddy Simulation) 관련 논문들","type":"posts"},{"content":"다음은 \u0026ldquo;mom4p1_pubrel_28dec2007\u0026rdquo; 버전의 ebm case 컴파일 방법입니다.\n시스템 : Cray XD1 리눅스 서버\n컴파일러 버전 : mpif90 (pgi-6.0.8)\n\u0026rsquo;exp/mom4p1_ebm_compile.csh\u0026rsquo; 을 다음과 같이 수정한다. set platform = pgi cc -O -o $mppnccombine -I/your_NETCDF_path/include -L/your_NETCDF_path/lib ... edit \u0026lsquo;bin/mkmf.template.pgi\u0026rsquo; FC = mpif90 CPPFLAGS = FFLAGS = -O2 ...... -I/your_MPICH_path/include -I/your_NETCDF_path/include PGF를 사용하는 경우에는 \u0026ldquo;-O2\u0026rdquo; 또는 \u0026ldquo;-fast\u0026quot;를 사용해야 함 CFLAGS = -O2 -I/your_MPICH_path/include -I/your_NETCDF_path/include LD = mpif90 LIBS = -L/your_NETCDF_path/lib -lnetcdf \u0026lsquo;src/land_lad/soil/soil.F90\u0026rsquo; 을 다음과 같이 수정 107번째 줄에 있는 \u0026lsquo;;\u0026rsquo; 기호를 삭제 \u0026lsquo;src/shared/fms/fms_io.F90\u0026rsquo; 을 다음과 같이 수정 1679번째 줄의 \u0026ldquo;end subroutine read_data_1d_new\u0026quot;의 바로 위에 다음 삽입 data(:) = data_3d(:,1,1) 컴파일 시작! (exp 디렉토리 아래에 있는 mom4p1_ebm_compile.csh 를 실행한다.) \u0026rsquo;exp/mom4p1_ebm_run.csh\u0026rsquo; 을 다음과 같이 수정한다. set platform = pgi set name = mom4p1_ebm set inputDataDir = your_PREPROCESSING_DATA_path/preprocessing mpirun -np $npes -hostfile your_path/hostnames $XD1LAUNCHER $executable:t Cray XD1 리눅스 서버의 경우는 XD1LAUNCHER로 실행해야 함 모형 실행! ","date":"2008년 3월 5일","externalUrl":null,"permalink":"/2008/03/MOM4-mom4p1pubrel28dec2007-%EB%B2%84%EC%A0%84%EC%9D%98-ebm-case-%EC%8B%A4%ED%97%98-%EB%B0%A9%EB%B2%95/","section":"글","summary":"mom4p1_pubrel_28dec2007 버전의 ebm case를 Cray XD1 리눅스 서버에서 컴파일하고 실행하는 절차.","title":"MOM4: mom4p1_pubrel_28dec2007 버전의 ebm case 실험 방법","type":"posts"},{"content":" Quantitative analysis -\nMERR (Mean Error) : What is the average forecast error ?\nMERR (-oo~oo) = 1/n sum_(i=1)^n (F_i - O_i )\nRMSE (Root Mean Square Error) : What is the average magnitude of the forecast errors?\nRMSE (0~oo) = $sqrt((1)/(n)sum_(i=1)^(n)(F_i-O_i)^2)$\nCORR (Correlation Coefficient) : How well did the forecast values correspond to the observed values ?\nCORR (-1~1) = ( sum (F - bar F )( O - bar O )) / ( sqrt( sum (F - bar F )^2 ) sqrt( sum (O - bar O )^2 ) )\n","date":"2007년 12월 13일","externalUrl":null,"permalink":"/2007/12/Verification-method/","section":"글","summary":"예측 성능을 검증할 때 쓰는 지표들. MERR, RMSE 등의 정의와 수식.","title":"Verification method","type":"posts"},{"content":"","date":"2007년 12월 13일","externalUrl":null,"permalink":"/tags/%EC%9E%90%EB%A3%8C%EB%B6%84%EC%84%9D/","section":"태그","summary":"","title":"자료분석","type":"tags"},{"content":"o VSRF (Very Short-Range Forecast, 초단기 예측)\n기상청에서는 초단기 강우예측을 위하여 일본 기상청의 현업모형인 VSRF 모형을 도입하여 6시간 강수를 예측하고 있다. VSRF는 지속성 강수 개념을 기초로 강수 이동 패턴이 6시간 동안 지속된다는 가정 하에 현재의 강수량 패턴을 이동시키고 지형효과 등의 보정을 하여 강수량을 예측한다 (그림 참조).\n입력 자료는 실시간 레이더 강우자료 및 지상관측 강우자료와 지역수치예보자료 등이 활용되며, 현재시간에 가까울수록 관측강우의 가중치가 높고 미래시간으로 갈수록 모델 예측 강우의 가중치를 높여가는 방식이다. 이 방법은 예측의 편리성이 돋보이기는 하나 예측에 사용된 가정의 물리적 한계 때문에 그 정확도에 대한 신뢰도는 아직 낮은 것으로 보인다.\n그림. VSRF 단기강우예측의 기본 알고리즘\n참고문헌 : http://kwra.or.kr/data/200709/02%C6%AF%C1%FD01.PDF\n#초단기\n","date":"2007년 12월 13일","externalUrl":null,"permalink":"/2007/12/VSRF-Very-Short-Range-Forecast/","section":"글","summary":"기상청이 일본 기상청에서 도입한 초단기 강수예측 모형 VSRF. 지속성 강수 개념을 바탕으로 6시간 강수를 예측하는 원리와 입력자료를 정리했습니다.","title":"VSRF (Very Short-Range Forecast)","type":"posts"},{"content":"","date":"2007년 12월 13일","externalUrl":null,"permalink":"/tags/%EC%B4%88%EB%8B%A8%EA%B8%B0%EC%98%88%EC%B8%A1/","section":"태그","summary":"","title":"초단기예측","type":"tags"},{"content":"o SCAN: 실황예측시스템 또는 대류성호우 추적 및 예측시스템\n(System for Convection Analysis and Nowcasting)\no 예보요소: 대류성 호우 경로\no 예보목표시간: 1시간\n실황예측시스템의 구성으로는 우선 고해상도의 강우관측시스템(기상레이더, 기상위성, 자동기상관측소, 윈드프로파일러, 레디오존데 등)을 구축하고, 이를 정확하게 해석할 수 있는 자료동화체계를 갖추어 자료를 해석한 후, 전문 예보관에 의한 분석 및 예측(extrapolation)을 통하여 사용자에게 통보 또는 시스템 연계되는 체계이다 (그림 참조).\n그림. 실황예보시스템의 구성\n참고문헌 : http://kwra.or.kr/data/200709/02%C6%AF%C1%FD01.PDF\n#수치예보 #초단기\n","date":"2007년 3월 24일","externalUrl":null,"permalink":"/2007/03/%EC%8B%A4%ED%99%A9%EC%98%88%EC%B8%A1%EC%8B%9C%EC%8A%A4%ED%85%9C-System-for-Convection-Analysis-and-Nowcasting-SCAN/","section":"글","summary":"대류성 호우의 경로를 1시간 앞까지 예측하는 실황예측시스템 SCAN의 구성과 예보 목표.","title":"실황예측시스템 (System for Convection Analysis and Nowcasting, SCAN)","type":"posts"},{"content":" GMT NCAR Graphics \u0026amp; NCL Ferret GrADS VCS (PCMDI Software) Vis5D IDL OpenDX AVS/Express Povray PV-Wave TAV TDV VAPOR 자세한 사항은 여기를 보세요.\n#Scientific Visualization #과학가시화\n","date":"2007년 3월 18일","externalUrl":null,"permalink":"/2007/03/%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B8-%EA%B7%B8%EB%9E%98%ED%94%BD-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EB%93%A4/","section":"글","summary":"직접 써 본 과학가시화 소프트웨어들을 나열해 둔 짧은 메모.","title":"사용해 본 그래픽 소프트웨어들","type":"posts"},{"content":"한국가시화 정보학회 2006년도 춘계학술강연회 초청강연 자료 입니다.\n\u0026ldquo;해양-대기 분야의 과학가시화 사례분석 (http://data.dhkim.info/www/scientific_visualization/ksvi-dhkim(060428).mht — 링크 소실)\u0026rdquo;\n주) 11메가가 넘기 때문에 로딩시에 시간이 걸릴 수 있습니다.\n#Scientific Visualization #과학가시화\n","date":"2006년 4월 28일","externalUrl":null,"permalink":"/2006/04/%ED%95%B4%EC%96%91-%EB%8C%80%EA%B8%B0-%EB%B6%84%EC%95%BC%EC%9D%98-%EA%B3%BC%ED%95%99%EA%B0%80%EC%8B%9C%ED%99%94-%EC%82%AC%EB%A1%80%EB%B6%84%EC%84%9D/","section":"글","summary":"2006년 한국가시화정보학회 춘계학술강연회 초청강연 자료. 원본 파일 링크는 소실되었습니다.","title":"해양-대기 분야의 과학가시화 사례분석","type":"posts"},{"content":"Graphic Tools for Scientific Visualization\n2차원 도구\nGMT\nNCAR Graphics \u0026amp; NCL\nFerret\nGrADS\nVCS\n과학가시화용 3차원 도구\nVis5D\nIDL\nOpenDX\nAVS/Express\nPV-Wave\nTDV\nVAPOR\n\u0026hellip;\u0026hellip;\n과학가시화로 사용할 수 있는 일반 CG용 3차원 도구\nMaya\nPovray\nTAV\n각 풀그림의 사용예나 장단점을 보시려면 다음을 참조하세요.\n\u0026ldquo;해양-대기 분야의 과학가시화 사례분석\u0026rdquo;\n위에 나열된 풀그림(도구)들은 대부분 사용경험이 있지만,\n어떤 것도 사용자의 요구를 모두 만족하는 풀그림은 없는 듯합니다.\n다년간의 경험으로 얻은 결론은, 표현하고자 하는 목적에 따라\n그것에 맞는 적절한 도구를 사용하는 것이 최선이 아닐까 생각합니다.\n도구로써의 과학가시화\n응용분야로써의 가시화는 수단일 뿐이다.\n목적이 되어서는 안된다.\n기술을 아끼자!\n다양한 가시화 기술의 표현이 오히려 목적을 해칠 수 있다.\n필요한 부분만을 최고의 기술로 적용하자.\n#Scientific Visualization #과학가시화 #Graphics\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/%EA%B3%BC%ED%95%99%EA%B0%80%EC%8B%9C%ED%99%94%EC%9A%A9-Graphic-Tools/","section":"글","summary":"해양·대기 분야 과학가시화에 쓰는 2차원·3차원 그래픽 도구 목록.","title":"과학가시화용 Graphic Tools","type":"posts"},{"content":"CCSM의 대기모형 결과 내에는\n증발량에 관련된\nQFLX(Surface water flux, kg/m^2/s) 와\n강수량인\nPRECC(Convective precipitation rate, m/s),\nPRECL(Large-scale (stable) precipitation rate, m/s) 가 있다.\n우선 증발량은 다음과 같이 구한다.\nE(mm/day) = QFLX * 86400.0(1/sec) * 1000.0(mm) / 1000.0(kg/m^3)\n강수량은 다음과 같이 구한다.\nP(mm/day) = (PRECC+PRECL)*86400(1/sec)*1000.0(mm)\n이렇게 구한 결과에서 P - E 를 계산하면 된다.\n#접합모형 #CCSM #P-E\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/CCSM%EC%97%90%EC%84%9C-P-E-%EA%B5%AC%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95/","section":"글","summary":"CCSM 대기모형 결과에서 증발량(QFLX)과 강수량(PRECC, PRECL)으로 P-E를 구하는 식.","title":"CCSM에서 P-E 구하는 방법","type":"posts"},{"content":"원본 : http://www.mapquest.com/atlas/\nAntarctic Floor Arctic Floor- North Pacific Ocean South Pacific Ocean North Atlantic Ocean South Atlantic Ocean Indian Ocean #Mapquest #World Atlas\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/World-Atlas/","section":"글","summary":"대양별 해저지형 그림 모음. 원본 이미지 링크는 소실되었습니다.","title":"World Atlas","type":"posts"},{"content":"","date":"2006년 4월 17일","externalUrl":null,"permalink":"/tags/%EC%A7%80%ED%98%95%EC%9E%90%EB%A3%8C/","section":"태그","summary":"","title":"지형자료","type":"tags"},{"content":" udunits-1.11.6을 Digital Unix v4.0D에 porting하는 법 우선 udunits를 설치하기 전에 perl을 설치해야 하는데 현재 최신 버전은 5.004_04이며 udunits-1.11.6에서 추전하는 것은 5.003 이상 버전이다. (http://www.metronet.com/perlinfo/perl5.htm)\n%./configure \u0026ndash;prefix=/usr/local/unidata/udunits\n%make all\n%make test\n%make install\n%make clean\n#udunits\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/udunits/","section":"글","summary":"udunits 1.11.6을 Digital Unix에 포팅해 설치하는 절차.","title":"udunits","type":"posts"},{"content":"http://climate.lanl.gov/Models/POP/index.htm\nThe Results of Eddy-Resolving (0.1 deg) OGCM (POP1) Simulation\nserved by Live Access Server (LAS) (Members only) #수치모형 #OGCM #해양순환모형 #Numerical Models #POP1\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/POP1/","section":"글","summary":"LANL의 POP1 해양모형과, 0.1도 eddy-resolving 실험 결과를 볼 수 있는 곳.","title":"POP1","type":"posts"},{"content":"NCAR CSM1.2\nCSM1.2 - CPL4.0 CSM1.2 - LSM1.1 CSM1.2 - CSIM2.2.6 CSM1.2 - NCOM1.4.1 CSM1.2 - CCM3.6.6 #수치모형 #Numerical Models #CGCM #접합모형 #NCAR CSM1.2\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/NCAR-CSM12/","section":"글","summary":"NCAR CSM1.2를 이루는 대기·해양·해빙·지면 모형과 결합기의 버전 정리.","title":"NCAR CSM1.2","type":"posts"},{"content":" Versions of CCSM\nCSM1.2\nCCSM2.0.1\nAtmosphere Models\nCCM3.6.6\nCAM2\nOcean Models\nNCOM1.4.1\nPOP1\nIce Models\nCSIM2.2.6\nLand Models\nLSM1.1\nCoupler\nCPL4.0\nThe resolution of CC\nRe: [Ccsm-users] ccsm install on linux cluster\nHello Alexander Stine and list.\nHere at Lamont I did install and run both CCSM2.0.1 and CCSM3.0 on a Linux cluster\nusing the PGI compilers.\nHowever, our platforms are different.\nHere we have a 32-node cluster.\nThe nodes have dual Athlon MP (x86, 32bit) 1.2GHz cpus, from the days before hypertheading,\nwith 1GB or memory.\nOur interconnect is Myrinet 2000, and we have MPICH-GM 2.1.5 (not P4).\nFYI, independently of the Bern Univ. folks, we successfully compiled and ran CCSM2.0.1,\nwith a few fixes on code, and a lot of tweaking with scripts, MPI environment, etc.\nSuccessful compilations happened with PGI 4.0-2 (the same as Bern), and also 5.1-3, 5.1-6, and 5.2-4.\nAll versions produced correct runs, except 5.1-6.\nI tried also version 5.0-1, but it threw too many compilation errors on correct code, and I gave it up.\nIt took me quite some time to discover that PGI 5.1-6 compiles the CCSM2.0.1 code,\nbut produces a wrong executable (POP), because the 5-day runs do not show the problem.\nNote that our validation included not only the 5-day \u0026ldquo;test.1a\u0026rdquo; run, but also a several-year run, with restarts.\nWhen compiled with PGI 5.1-6, the ocean of those longer runs freezes, and you get an ice age\n(actually a snowball Earth) in a few months!\nHere my experience may differ from George Carr\u0026rsquo;s.\nThe same subroutines that were incorrectly compiled by PGI 5.1-6\nare present in both CCSM2.0.1 and CCSM3.0 versions of POP.\n(The code is right, the compilation was wrong.)\nI wonder if the same fortuitous ice age wouldn\u0026rsquo;t be produced also by CCSM3.0, when compiled with PGI 5.1-6.\nHowever, I never compiled CCSM3.0 with 5.1-6, only with 5.2-4.\nThe good news is that the problem (freezing ocean, fake ice age) doesn\u0026rsquo;t happen with PGI 5.2-4.\nI have discussed these and other compilation issues with PGI.\nFinally the dust settled down with version 5.2-4,\nwhich compiles and produces correct executables both of CCSM2.0.1 and CCSM3.0\n(to the extent that our several-year validations can tell).\nTo my knowledge, 5.2-4 is the best version PGI produced since 4.0-2 , and also the most complete.\nIn addition, we used 5.2-4 to successfully compile and run CCSM3.0.\nIf you are contemplating to move from CCSM2.0.1 to CCSM3.0, please note that\nthe latter has an atmosphere component which is significantly more demanding then the former\n(a more complex radiative scheme, aerosols, etc), as George Carr pointed out.\nThis may be important, since you have a small cluster like we do (with faster processors, but a slower interconnect).\nWe ran both models here with the same resolution (T42, gx1v3) on 16 nodes (32 processors).\nTo simulate one year, CCSM2.0.1 takes about 21h or wallclock time,\nwhereas CCSM3.0 lingers for 26.5 hours.\nOn the other hand, there are much less compilation/configuration problems on CCSM3.0 then on CCSM2.0.1.\nRegarding the particular errors you listed, it is hard to tell what is causing them from\nthe terse messages on the log alone.\nHere are a few wild guesses.\nYour error log suggest you have the following distribution of MPI processes: cpl=1, atm=1, lnd=1, ice=1, ocn=4 (total 8)\nThis sounds too few, and may trigger memory paging.\nWhen memory swapping kicks in MPI may hang or crash, issuing elusive error messages.\nYou may need to use more cpus.\nHere we ran CCSM2.0.1 on 32 processors for T42 gx1v3 resolution:\ncpl=2 (actually cpl in OpenMP mode, but you may skip OpenMP and use cpl=1), atm=8, lnd=2, ice=4, ocn=16.\nFor T31 gx3v5 resolution we could manage to trim down the number of processor to 16, minimum,\nbut it was very slow.\nHyperthreading.\nHave you checked on the nodes what processes are running and where?\nAre you launching one MPI processs per thread or one per cpu?\nYour error log suggests it is one per cpu, but I may be wrong.\nOne per thread may be tricky. Hopefully you already ran simpler MPI programs with hypethreading turned on,\nand hyperthreading is not the issue.\nIf it is the issue, then you may consider turning hyperthreading off.\n(What do the MPICH maintainers at ANL have to say about P4 and hyperthreading?\nIt may be worth asking them.)\nHave you changed the way POP does I/O, to funnel it to a single processor?\nWe leaned this the hard way, after a long debugging campaign of our restart runs.\nMake sure your mpirun command is launching all the processes on the correct nodes,\nand that all of them are getting the environment variables they need.\nThe correct implementation of MPMD using the \u0026ldquo;pgfile\u0026rdquo; is a subtle point.\nIn particular, I had to send to the nodes (i.e. to each executable), as environment variables via \u0026ldquo;pgfile\u0026rdquo;,\nthe and name of the stdin and stdout files (i.e. log file), and the directory path where those files were located.\nI had to rewrite our mpirun to force it to pass the environment variables correctly to the nodes,\nsince our original mpirun wouldn\u0026rsquo;t do so.\nHowever, with MPICH-P4 this may not be a problem.\nGood luck,\nGus Correa\n\u0026ndash; # Gustavo J. Ponce Correa - Email: gus@ldeo.columbia.edu\nLamont-Doherty Earth Observatory - Columbia University\nP.O. Box 1000 [61 Route 9W] - Palisades, NY, 10964-8000 - USA\nOceanography Bldg., Rm. 103-D, ph. (845) 365-8911, fax (845) 365-8736 # Alexander Stine wrote:\nGeorge,\nThanks for breakdown.\nPerhaps I should step back and ask a more\ngeneral question.\nGiven the hardware that we have acess to, what\nwould be the most apropriate software combination\nfor us to use? We would be happy with just about\nany version of CAM or CCSM.\nI chose CCSM 2.0.1 to begin with because folks\nat the University of Bern had ported it to linux\nand I was under the impression that later versions\nhad not been ported. It sounds like I may have\nbeen mistaken.\nIt sounds like I will also have to contact the\nportland group and find out if it is possible to\nbuy old versions of the compiler (only the current\nversion appears to be on their web site).\nthanks for the help\nZan\nOn Thu, 24 Feb 2005, George R Carr Jr wrote:\nHmmm. Not sure where to start.\nFirst, I do not support CCSM2. I do support CCSM3.\nPGI: I have validated CCSM3 using pgi5.1-3 and pgi5.1-6 on several Xeon\nLinux clusters. There are bugs in the pgi5.2-4 compiler that require CCSM3 code\nworkarounds when I attempt to run on our Opteron cluster but this is not a validated\nconfiguration. I cannot give you a date with I might be able to complete a 5.2x\nvalidation. And pgi is already planning on releasing a 6.x compiler before long.\nEthernet: Any Linux cluster running over ethernet that we have used or tested\nis running MPICH1.2.5 or 6 using the P4 driver. CCSM3 as released will\nnot run with this setup until we can get some additional code changes into the\nCCSM3 baseline. My tests show that this works and generates correct climate.\nThis problem does not appear if you have a Myranet network with mpich-gm\nconfigured properly. Without these changes you will see CCSM3 starting up\nand then blowing out or hanging with ethernet.\nThanks.\nAt 3:49 PM -0800 2/24/05, Alexander Stine wrote:\nHello,\nI am trying to install CCSM on a 16 node rocks\nlinux cluster.\nEach node has:\n2 Intel(R) Xeon(TM) CPU 2.40GHz 32Bit chips (with\nhyperthreading turned on, so /proc reports 4 chips).\n2 GB memory\nThe nodes are connected with 100 Megabit Ethernet\n(which we plan to upgrade to gigabit if we can\nget the model running).\nI am trying to install the version of CCSM 2.0.1\nported to linux by the University of Bern.\nwith:\n-the portland compilers (PGI Workstation 5.2 \u0026ndash; evaluation version)\n-mpich (Version 1.2.6, August, 2004)\nThe model compiles, but crashes early with what looks like\nsome mpi passing errors ? \u0026hellip;\nj. Run the model, execute models simultaneously allocating CPUs # Wed Feb 23 17:48:49 PST 2005 \u0026ndash; CSM EXECUTION BEGINS HERE\nstart mpirun\n(shr_msg_chdir) chdir for model = cpl\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/cpl\nt_setoption: option disabled: Usr Sys\n(shr_msg_chdir) chdir for model = atm\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/atm\nt_setoption: option disabled: Usr Sys\n(shr_msg_chdir) chdir for model = lnd\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/lnd\n(shr_msg_chdir) chdir for model = ocn\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/ocn\n(shr_msg_chdir) chdir for model = ocn\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/ocn\n(shr_msg_chdir) chdir for model = ocn\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/ocn\n(shr_msg_chdir) chdir for model = ocn\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/ocn\n(shr_msg_chdir) chdir for model = ice\n(shr_msg_chdir) changed cwd to /home/zan/ccsm/run/linux_test/ice\np1_6591: p4_error: net_recv read: probable EOF on socket: 1\np3_5984: p4_error: net_recv read: probable EOF on socket: 1\nrm_l_2_6414: (10.902192) net_send: could not write to fd=8, errno = 9\np4_error: latest msg from perror: Bad file descriptor\nrm_l_2_6414: p4_error: net_send write: -1\nReceived disconnect from 10.255.255.252: Command terminated on signal 11.\nReceived disconnect from 10.255.255.251: Command terminated on signal 13.\nReceived disconnect from 10.255.255.247: Command terminated on signal 13.\nReceived disconnect from 10.255.255.249: Command terminated on signal 13.\nP4 procgroup file is pgfile.\nWed Feb 23 17:49:05 PST 2005 \u0026ndash; CSM EXECUTION HAS FINISHED\nHas anyone seen a similar situations??\nThanks\nZan\nZan Stine\nUC Berkeley\nCCSM-Users mailing list\nCCSM-Users@cgd.ucar.edu\nhttp://www.cgd.ucar.edu/mailman/listinfo/ccsm-users\n\u0026ndash; # George R Carr Jr\nUCAR/NCAR/CGD\n303-497-1764\nhttp://www.ccsm.ucar.edu/ (http://www.ccsm.ucar.edu/ — 링크 소실)\nCCSM-Users mailing list\nCCSM-Users@cgd.ucar.edu\nhttp://www.cgd.ucar.edu/mailman/listinfo/ccsm-users\n#수치모형 #Numerical Models #CGCM #접합모형 #NCAR CCSM3\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/NCAR-CCSM3/","section":"글","summary":"NCAR CCSM3의 구성 요소와 해상도, 그리고 리눅스 클러스터에 설치할 때 부딪히는 문제들.","title":"NCAR CCSM3","type":"posts"},{"content":"- How to set up MOM2\n%setenv MOMpath /usr1/ocean/MOM/MOM_2.2\n%mkdir $MOMpath/EXP/GLOBE\n%mkdir $MOMpath/EXP/GLOBE/MOM_UPDATES $MOMpath/EXP/GLOBE/PREP_UPDATES\n%cd $MOMpath/EXP/GLOBE/MOM_UPDATES\n%cp $MOMpath/grids.F .\n%cp $MOMpath/run_grids .\n-\u0026gt; run_grids를 편집하여 \u0026ldquo;OPTIONS\u0026rdquo; 변수의 마지막에 \u0026ldquo;-Dsgi\u0026quot;를 추가한다.\n-\u0026gt; run_grids를 편집하여 \u0026ldquo;MOM2\u0026rdquo; 변수를 위의 \u0026ldquo;MOMpath\u0026quot;와 같게 고쳐준다.\n-\u0026gt; grid resolution과 region을 바꾸려면 grids.F를 알맞게 편집한다 (manual의 7장 p79 참조).\n%./run_grids\n-\u0026gt; 제대로 결과가 나왔는지 results_grids를 확인한다.\n%cp $MOMpath/size.h .\n-\u0026gt; results_grids의 맨뒤에 나오는 해상도(imt,jmt,km)에 맞추어서 방금 카피한 size.h를 고친다.\n%cp $MOMpath/topog.F .\n%cp $MOMpath/run_topog .\n-\u0026gt; run_topog를 편집하여 \u0026ldquo;MOMpath\u0026rdquo; 변수를 위의 \u0026ldquo;MOMpath\u0026quot;와 같게 고쳐준다.\n-\u0026gt; NetCDF를 사용한다면 알맞은 library path와 include path를 정해 주어야 하는데 자세한 내용은 netCDF-3.4 와 udunits-1.11.6을 참조하면 된다.\n$MOMpath/NETCDF에 있는 ncsetup.F, nctfind.F, ncymdhms.F, sincestr.F에 \u0026ldquo;/usr/local/etc/udunits.dat\u0026quot;의 부분도 알맞게 고쳐준다.\n-\u0026gt; run_topog를 편집하여 \u0026ldquo;PLATFORM_OPTION\u0026rdquo; 변수를 \u0026ldquo;-Dsgi\u0026quot;에 맞게 uncomment한다.\n-\u0026gt; topography를 바꾸려면 topog.F를 편집해야되는데 manual의 9장을 참조하면 된다.\n-\u0026gt; run_topog를 실행하여 results_topog의 결과를 확인한다.\n%cp $MOMpath/run_mom_sgi .\n-\u0026gt; run_mom_sgi를 편집하여 \u0026ldquo;myEXP = GLOBE\u0026quot;로 고친다.\n-\u0026gt; datainpath는 PREP_UPDATES에서 만들어준 data의 path를 가리킨다.\n-\u0026gt; DATABASE는 GFDL에서 제공하는 database들이 들어있는 path를 가리킨다.\n-\u0026gt; MOMpath에서 NETCDFlib까지도 알맞게 고쳐주는데 WORKDIR 변수의 디렉토리는 고친후에 직접 자신이 만들어 주어야 한다.\n-\u0026gt; PLATFORM_OPTION을 sgi에 맞춘다. (Digital Unix용 옵션은 아래항목 참조)\n-\u0026gt; GFDL에서 제공하는 SBC data를 사용하려면 CASE 변수를 0이 아닌 1 또는 2의 값을 사용한다.\n-\u0026gt; GFDL에서 제공하는 idealized T \u0026amp; S를 initial condition으로 사용하려면 LEVITUS_DAT_IC = yes 로 바꾼다.\n-\u0026gt; GFDL에서 제공하는 sponge boundary를 사용하려면 SPONGE_DATA = yes로 바꾼다.\n-\u0026gt; GFDL에서 제공하는 scripps based topography를 사용하려면 SCRIPPS_DATA = yes로 바꾼다.\n%./run_mom_sgi\n- How to set up input data which is prepared by GFDL\n%cd $MOMpath/EXP/$myEXP/PREP_UPDATES\n%cp $MOMpath/PREP_DATA/run_sbc .\n%cp $MOMpath/PREP_DATA/run_ic .\n%cp $MOMpath/PREP_DATA/run_sponge .\n-\u0026gt; 위의 세가지 화일을 편집하여 다음과 같이 고친다.\nmyEXP = GLOBE\nMOMupdates = MOM_UPDATES의 path를 적는다.\nPREPupdates = PREP_UPDATES의 path를 적는다.\nMOMpath = MOM의 HOME directory\nPREPpath = GFDL에서 제공하는 MOMpath 아래의 PREP_DATA directory\ndatainpath = GFDL에서 제공하는 database가 있는 directory\ndataoutpath = 결과 database가 저장될 directory\nWORKDIR = working directory로서 setting 후에 직접 만들어 주어야 한다.\n-\u0026gt; OPTIONS에 -Dcray_t90을 지우고 -Dsgi를 삽입하고 Digital Unix 상에서 실행 중일 경우 -convert big_endian도 함께 추가해 준다.\n-\u0026gt; 입력 데이타를 copy하는 부분이 있는데 link를 시키는 것이 편하므로 symbolic link를 해주는데 각각의 link할 화일은 다음과 같다.\nrun_sbc : hellerman.tau, oorts.air\nrun_ic : *.temp, *.salt\nrun_sponge : *.mom\n-\u0026gt; run_sbc에 intrph와 intrpo도 알맞게 고쳐준다.\n-\u0026gt; Digital Unix에서는 $MOMpath/iomngr.F의 1182번쩨 줄에 write format error가 생기므로 다음과 같이 고쳐준다.\nwrite(stdout,\u0026rsquo;(a4,)\u0026rsquo;) -\u0026gt; write(stdout,\u0026rsquo;(a4)')\n%./run.sbc\n-\u0026gt; 실행 후에 각각의 *.prn 화일을 잘 살펴 보고 $dataoutpath에 길과가 제대로 들어갔는지 확인한다.\n- How to set up scripps topography data\n\u0026hellip;\u0026hellip;\n- How to change MOM2 resolution\ngrids.F의 해상도를 알맞게 고친 후 run_grids를 실행하여 결과 확인.\nindex.h에 lsegf와 jmtfil의 값을 조정해야 하는데 이것은 mom2를 여러번 실행하면서 조정 (error message가 나옴).\ndiago_netcdf.F에 lenbuf가 10000으로 setting되어 있는데 이 값이 적정하지 않으면 처음 diagnostic 결과가 저장될 때 error message로서 print되는데, 될 수 있으면 첫 실행에서 diagnostic 결과를 빨리 저장하도록 하여 이것을 확인 해 보는 것이 좋다.\nPREP_UPDATES에서 run_sbc, run_ic, run_sponge를 각각 다시 실행하여 해상도에 맞는 databsea 생성. 해상도가 높으면 database가 커지므로 될수 있으면 각각의 run scripts에 $dataoutpath로 copy하는 부분을 move로 고쳐주는 것이 좋다. 그렇지 않으면 FTMPDIR과 DATABASE에 똑같은 화일이 두개 존재하므로 FTMPDIR을 일부러 지우지 않는한 space의 낭비를 가져올 수 있다.\nrun_mom에서 runlen, dtts, dtuv, dtsf 등을 고친 후 실행. dtuv와 dtsf는 dtts의 24배 정도 작은 값을 채택.\n- How to port MOM2 on Digital Unix v4.0D\n$MOMpath/run_mom_sgi를 $MOMpath/run_mom_dec로 카피한다.\nrun_mom_dec를 편집하여 \u0026ldquo;COMPILER_OPTIONS\u0026quot;의 \u0026ldquo;-mips2\u0026quot;와 \u0026ldquo;-align64\u0026quot;를 빼고 다음을 추가한다.\n\u0026ldquo;-convert big_endian\u0026rdquo;\nLEN_TRIM 함수는 iomngr.F와 util.F, timer.F에 있는데 이것이 컴파일시 중복이 되므로 util.F와 timer.F에 있는 LEN_TRIM함수는 모두 comment처리한다. 참고로 f90으로 컴파일하면 LEN_TRIM이 Intrinsic Procedure로써 제공된다.\nrun_mom_dec를 편집하여 \u0026ldquo;COMPILER_SINGLE\u0026quot;에 \u0026ldquo;-convert big_endian\u0026quot;을 추가한다 (여기에는 \u0026ldquo;-r8\u0026quot;을 사용하면 안됨).\nrun_iomngr을 test할 때 iomngr.F에 sform=\u0026lsquo;SYSTEM\u0026rsquo;이라고 써있는 부분이 있는데 이 format문은 Digital Unix에 맞지 않으므로 \u0026lsquo;UNFORMATTED\u0026rsquo;라고 고치거나 f77을 사용하지 맡고 f90을 사용하되 컴파일 옵션에 \u0026lsquo;-Df90\u0026rsquo;을 추가한다.\nGFDL에서 제공하는 DATABASE는 32bit IEEE unformatted 화일이므로 이것을 읽으려면 위의 모든 scripts 화일에서 compile option에 \u0026ldquo;-r8\u0026rdquo; 부분을 빼주어야 하는데 (Digital Unix Fortran의 Default real size는 4이다) 이 옵션을 빼면 namelist나 그외 몇몇 부분에서 real size가 잘 맞지 않아 결과의 소수점 아래부분이 값이 많이 틀림을 알 수 있다. 이것은 수치모형에서 치명적인 에라를 유발할 수 있으므로 PREP_UPDATES에서 제공하는 모든 data를 real*8로 바꾸어서 만들어야 하는데 이것의 간단한 설명은 다음과 같고 자세한 것을 알고 싶으면 mail(\n) 주시기 바랍니다.\n우선 $MOMpath/PREP_DATA에서 sbc.F와 ic.F를 PREP_UPDATES에 copy한다 (sponge.F는 run_ic에서 만든 데이타를 이용하므로 고쳐줄 필요없다.).\n각 화일을 편집하여 데이타를 read하는 부분(doit()서브루틴 내에 있음)을 찾아서 각각의 변수 중 real인 것 만 골라서 이것과 비슷한 이름으로 real*4로 정의한 변수를 만든다.\n이렇게 만든 real4변수로 read문의 변수를 대체하고 각각 읽은 후에 다시 원래의 real8의 변수에 값을 치환하여 집어 넣어 주면 된다.\nCASE=2를 사용할 경우, 즉 SBC를 MONTHLY로 읽어 들이는 부분에서 Digital Unix 상에서는 error이 나는데 그것은 SBC/MONTHLY/setatm.F에서 file을 open할 때 direct access의 record length의 값이 맞지 않기 때문이다. 왜냐하면 이 값이 Cray와도 맞지 않고 SGI에도 맞지 않기 때문이다. 정확한 record length의 값은 현재 테스트 중에 있으므로 결과가 검증이 되는대로 값을 제시하도록 하겠다 (검증 전에라도 값이 필요하신 분은 mail( ) 주시기 바랍니다).\n- Result files\nFile Name Title Variables cmix.dta[.nc] Estimated mixing coefficients diff_cet(t,z,y,x) diff_cnt(t,z,y,x) diff_cbt(t,z,y,x) diff_ceu(t,z,y,x) diff_cnu(t,z,y,x) diff_cbu(t,z,y,x) period(t) cvct.dta[.nc] Rate of Convection convect(t,z,y,x) : Rate of convection period(t) : Averaging period diag_surf.dta[.nc] Diagnostic Surface Height dsp(t,y,x) : diag surf height dspper(t) : averaging period energy_int.dta[.nc] Energyanalysis ddt_int(t) : internal mode energy change hadv_int(t) : internal mode work by hor adv vadv_int(t) : internal mode work by vert adv hfric_int(t) : internal mode work by hor fric vfric_int(t) : internal mode work by vert fric press_int(t) : internal mode work by pressure imbal_int(t) : internal mode imbalance wind_int(t) : internal mode work by wind drag_int(t) : internal mode work by bottom drag ddt_ext(t) : external mode energy change hadv_ext(t) : external mode work by hor adv vadv_ext(t) : external mode work by vert adv hfric_ext(t) : external mode work by hor fric vfric_ext(t) : external mode work by vert fric press_ext(t) : external mode work by pressure imbal_ext(t) : external mode imbalance wind_ext(t) : external mode work by wind drag_ext(t) : external mode work by bottom drag buoy(t) : buoyancy buoy_err(t) : buoyancy error energy_leak(t) : non-linear error period(t) : Averaging period gyre_comp.dta[.nc] Gyre northward transport components zonal_mean_T(t,y) : x mean_T zonal_eddy_T(t,y) : x eddy_T vert_mean_T(t,y) : z mean_T vert_eddy_T(t,y) : z eddy T ekman_T(t,y) : ekman_T adv_T(t,y) : total advection_T diff_T(t,y) : diffusion_T total_T(t,y) : total transport_T zonal_mean_S(t,y) : x overturn.dta[.nc] Meridional Overturning particles.dta[.nc] Particle trajectories psi.dta[.nc] External mode snapshots.dta[.nc] Snapshots term_bal.dta[.nc] Term balances time_mean.dta[.nc] Time averages tracer_avg.dta[.nc] Tracer Averages tracer_bud.dta[.nc] Meridional Tracer Budget ts_intgrls.dta[.nc] Time Step Monitor xbt.dta[.nc] XBTs zmean_sbc.dta[.nc] Zonal mean of Surface BoundaryConditons #수치모형 #OGCM #해양순환모형 #Numerical Models #GFDL #MOM2\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/GFDL-MOM2/","section":"글","summary":"GFDL MOM2를 설치하고 전지구 실험을 구성하는 절차. 격자 생성부터 실행까지.","title":"GFDL MOM2","type":"posts"},{"content":"**- How to set up MOM3\n%setenv MOMpath /usr1/ocean/MOM/MOM_3\n%mkdir $MOMpath/EXP/GLOBE\n%mkdir $MOMpath/EXP/GLOBE/MOM_UPDATES $MOMpath/EXP/GLOBE/PREP_UPDATES\n%cd $MOMpath/EXP/GLOBE/MOM_UPDATES\n%cp $MOMpath/grids.F .\n%cp $MOMpath/run_grids .\n-\u0026gt; run_grids를 편집하여 \u0026ldquo;OPTIONS\u0026rdquo; 변수의 마지막에 \u0026ldquo;-Dsgi\u0026quot;를 추가한다.\n-\u0026gt; run_grids를 편집하여 \u0026ldquo;MOM2\u0026rdquo; 변수를 위의 \u0026ldquo;MOMpath\u0026quot;와 같게 고쳐준다.\n-\u0026gt; grid resolution과 region을 바꾸려면 grids.F를 알맞게 편집한다 (manual의 7장 p79 참조).\n%./run_grids\n-\u0026gt; 제대로 결과가 나왔는지 results_grids를 확인한다.\n%cp $MOMpath/size.h .\n-\u0026gt; results_grids의 맨뒤에 나오는 해상도(imt,jmt,km)에 맞추어서 방금 카피한 size.h를 고친다.\n%cp $MOMpath/topog.F .\n%cp $MOMpath/run_topog .\n-\u0026gt; run_topog를 편집하여 \u0026ldquo;MOMpath\u0026rdquo; 변수를 위의 \u0026ldquo;MOMpath\u0026quot;와 같게 고쳐준다.\n-\u0026gt; NetCDF를 사용한다면 알맞은 library path와 include path를 정해 주어야 하는데 자세한 내용은 netCDF-3.4 와 udunits-1.11.6을 참조하면 된다.\n$MOMpath/NETCDF에 있는 ncsetup.F, nctfind.F, ncymdhms.F, sincestr.F에 \u0026ldquo;/usr/local/etc/udunits.dat\u0026quot;의 부분도 알맞게 고쳐준다.\n-\u0026gt; run_topog를 편집하여 \u0026ldquo;PLATFORM\u0026rdquo; 변수를 \u0026ldquo;-Dsgi\u0026quot;에 맞게 uncomment한다.\n-\u0026gt; topography를 바꾸려면 topog.F를 편집해야되는데 manual의 9장을 참조하면 된다.\n-\u0026gt; run_topog를 실행하여 results_topog의 결과를 확인한다.\n%cp $MOMpath/run_mom_sgi .\n-\u0026gt; run_mom_sgi를 편집하여 \u0026ldquo;myEXP = GLOBE\u0026quot;로 고친다.\n-\u0026gt; datainpath는 PREP_UPDATES에서 만들어준 data의 path를 가리킨다.\n-\u0026gt; DATABASE는 GFDL에서 제공하는 database들이 들어있는 path를 가리킨다.\n-\u0026gt; MOMpath에서 NETCDFlib까지도 알맞게 고쳐주는데 WORKDIR 변수의 디렉토리는 고친후에 직접 자신이 만들어 주어야 한다.\n-\u0026gt; PLATFORM_OPTION을 sgi에 맞춘다. (Digital Unix용 옵션은 아래항목 참조)\n%./run_mom_sgi\nHow to port MOM3 on Digital Unix v4.0D $MOMpath/run_mom_sgi를 $MOMpath/run_mom_dec로 카피한다.\nrun_mom_dec를 편집하여 \u0026ldquo;COMPILER_OPTIONS\u0026quot;의 \u0026ldquo;-r8\u0026quot;과 \u0026ldquo;-mips2\u0026rdquo;, \u0026ldquo;-align64\u0026quot;를 빼고 다음을 추가한다.\n\u0026ldquo;-convert big_endian\u0026rdquo;\nrun_mom_dec를 편집하여 \u0026ldquo;COMPILER_SINGLE\u0026quot;에 \u0026ldquo;-convert big_endian\u0026quot;을 추가한다.\nDigital Unix f90 에서는 run_mom_dec안의 인자들이 너무 많아 컴파일이 되지 않으므로 run_mom_dec를 편집하여 f90으로 직접 컴파일 하는 부분을 -P로 우선 preprocessor를 실행 후 -c로 컴파일 한다.\n### Note : 현재(\u0026lsquo;98. 7) MOM3는 공식적이지는 않지만 alpha 버전을 구할 수 있는데 이것을 테스트 해 본 바로는 아직 완벽하게 세팅되어 있지 않아서 TEST run 결과도 없으므로 Digital Unix에 Proting하기는 아직 이른 감이 있어 현재 보류 중에 있다. 당분간 MOM3에 관하여 alpha 버전이라도 정식으로 발표될 때 까지 기다리는 것이 좋지 않은가 생각된다 (\u0026lsquo;98. 7). ###**\n#수치모형 #OGCM #해양순환모형 #Numerical Models #GFDL #MOM3\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/GFDL-MOM3/","section":"글","summary":"GFDL MOM3를 설치하고 전지구 실험을 구성하는 절차.","title":"GFDL MOM3","type":"posts"},{"content":"세계적으로 연구되고 있는 대기순환모형을 인터넷의 WWW를 이용하여 사용가능한 모형들에 대해서 아는데로 적어보았다. 아직 알려지지 않은 대기순환모형들도 많이 있지만 여기에 열거하는 모형들의 적용 범위로는 지역적인 것에서 부터 전 지구에 이르기 까지, CPU의 갯수로는 하나에서 부터 다중 프로세서까지 열거하고 있으며 앞으로 계속 새로운 소식을 추가할 예정이다.\nCCM3 - The NCAR Community Climate Model :\nIt is a stable, efficient, documented, state of the art atmospheric general circulation model designed for climate research on high-speed supercomputers and select upper-end workstations.\nCCM3 is a free resource for scientists and graduate students in a wide array of specialties to use in conducting global modeling experiments in their particular area of expertise without spending decades of their careers developing a complete global climate model of this complexity.\nOver the last 10 years, CCM0, CCM1 and CCM2 have been used by numerous scientific institutions around the world for basic research into such areas as CO2 warming and climate change, climate prediction and predictability, atmospheric chemistry, paleoclimate, biosphere-atmosphere transfer and nuclear winter.\nCCCma - Canadian Centre for Climate Modelling and Analysis :\nCCCma has develped a number of climate simulation models for climate prediction, study of climate change and variability, and to better understand the various processes which govern our climate system. A brief description of these models and their corresponding references can be found in this section.\nGCMI The first generation atmospheric GCM. GCMII The second generation atmospheric GCM. GCMIII The third generation atmospheric GCM. CGCMI The first generation coupled GCM. CCCma also participates in several Climate Research Network model development projects including:\nMAM The Middle Atmosphere Model. RCM The Regional Climate Model. CSU GCM - Colorado State University General Circulation Model\nThe CSU GCM is expressed in 175 subroutines and 29 common blocks totalling nearly 40,000 lines of the FORTRAN language to perform its calculations on a computer. The bulk of the code conforms to the FORTRAN77 standard, with the FORTRAN90 extensions of array syntax, dynamic array allocation, and the WHERE statement also in use. The use of computer specific extensions is minimized and their use is controlled by use of C-preprocessor statements that are executed before the compilation step.\nThe CSU GCM is run on vector processing supercomputers including the Cray YMP, Cray C90, Cray2 and J90 using a single processor with 64 bit arithmetic. It also is run on HP-PA Risc, SGI and SUN workstations with 32 bit precision. At its standard resolution of 4x5 degrees latitude-longitude resolution with 17 levels, it requires 20Mwords of memory on a Cray system, and 128Mbytes of memory on a 32 bit workstation. On the Cray vector machines, the code is capable of multitasking, with a speedup of 4.8 on 6 processors.\nMM5 - The Fifth-Generation NCAR / Penn State Mesoscale Model :\nThe PSU/NCAR mesoscale model is a limited-area, hydrostatic or nonhydrostatic, sigma-coordinate model designed to simulate or predict mesoscale and regional-scale atmospheric circulation. It has been developed at Penn State and NCAR as a community mesoscale model and is continuously being improved by contributions from users at several universities and government laboratories.\nRAMS - CSU The Regional Atmospheric Modeling System :\nThe numerical atmospheric models developed independently under the direction of William R. Cotton and Roger A. Pielke have recently been combined into the CSU Regional Atmospheric Modelling System (RAMS). Development of many of the physical modules has been accomplished over the past 15 years and has involved over 50 man years of effort. RAMS is a general and flexible modelling system rather than a single purpose model. For example, current research using RAMS includes atmospheric scales ranging from large eddy simulations to mesoscale simulations of convective systems . This paper will discuss the options available in RAMS, the engineering aspects of the system and how the flexibility is attained.\nYONU GCM - Yonsei University GCM :\n기타\u0026hellip;\nBMRC Climate Change Modelling Group - BUREAU OF METEOROLOGY RESEARCH CENTRE :\nCCCma - The Canadian Centre for Climate Modelling and Analysis :\nCCSR - Center for Climate System Research, University of Tokyo :\nCNRM - :\nCOLA - The Center for Ocean-Land-Atmosphere Studies :\nCSIRO - The Commonwealth Scientific and Industrial Research Organisation :\nCSU - Colorado State University General Circulation Model :\nDNM - Department of Numerical Mathematics Russian Academy of Sciences :\nECMWF - European Centre for Medium-Range Weather Forecasts (ECMWF) :\nGFDL/DERF -Geophysical Fluid Dynamics Laboratory :\nGISS - NASA Goddard Institute for Space Studies :\nGLA - the Goddard Laboratory for Atmospheres :\nGSFC - Goddard Space Flight Center :\nIAP -\nJMA - Japan Meteorological Agency :\nLMD - Laboratoire de Météorologie Dynamique du C.N.R.S. :\nMGO - :\nMPI -\nMRI - the Meteorological Research Institute :\nNCAR - The National Center for Atmospheric Research :\nNCEP - National Centers for Environmental Prediction :\nNRL - Naval Research Laboratory :\nNTU -\nPNNL - Pacific Northwest National Laboratory :\nRPN - RECHERCHE EN PREVISION NUMERIQUE : GEM(The Gelobal Environmental Multiscale Model) :\nSUNYA - State University of New York at Albany :\nUKMO - United Kingdom Meteorological Office :\nUGAMP - UK Universities\u0026rsquo; Global Atmospheric Modelling Programme :\nUIUC - University of Illinois at Urbana-Champaign : CRG(Climate Research Group) Climate Models :\nYONU - Yonsei University\nLast modified or updated: June, 1998\n#수치모형 #Numerical Models #대기순환모형 #AGCMs\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/%EC%A0%84%EC%84%B8%EA%B3%84-%EB%8C%80%EA%B8%B0%EB%8C%80%EC%88%9C%ED%99%98%EB%AA%A8%ED%98%95%EC%9D%98-%EA%B0%9C%EA%B4%80/","section":"글","summary":"전 세계 대기대순환모형을 한자리에 모은 목록. 각 모형의 개요와 원본 링크를 함께 정리했습니다.","title":"전세계 대기대순환모형의 개관","type":"posts"},{"content":"**CCSM3의 CSIM5 해빙 모형이 만들어 내는 변수들\nnetcdf b30.030b.ES01.csim.h.1870-ann {\ndimensions:\nnlon = 320 ;\nnlat = 384 ;\ntime = UNLIMITED ; // (1 currently)\nd2 = 2 ;\nvariables:\nfloat time(time) ;\ntime:long_name = \u0026ldquo;model time\u0026rdquo; ;\ntime:units = \u0026ldquo;days since 0001-01-01 00:00:00\u0026rdquo; ;\ntime:calendar = \u0026ldquo;noleap\u0026rdquo; ;\ntime:bounds = \u0026ldquo;time_bounds\u0026rdquo; ;\nfloat time_bounds(time, d2) ;\ntime_bounds:long_name = \u0026ldquo;boundaries for time-averaging interval\u0026rdquo; ;\ntime_bounds:units = \u0026ldquo;days since 0001-01-01 00:00:00\u0026rdquo; ;\nfloat TLON(nlat, nlon) ;\nTLON:long_name = \u0026ldquo;T grid center longitude\u0026rdquo; ;\nTLON:units = \u0026ldquo;degrees_east\u0026rdquo; ;\nfloat TLAT(nlat, nlon) ;\nTLAT:long_name = \u0026ldquo;T grid center latitude\u0026rdquo; ;\nTLAT:units = \u0026ldquo;degrees_north\u0026rdquo; ;\nfloat ULON(nlat, nlon) ;\nULON:long_name = \u0026ldquo;U grid center longitude\u0026rdquo; ;\nULON:units = \u0026ldquo;degrees_east\u0026rdquo; ;\nfloat ULAT(nlat, nlon) ;\nULAT:long_name = \u0026ldquo;U grid center latitude\u0026rdquo; ;\nULAT:units = \u0026ldquo;degrees_north\u0026rdquo; ;\nULAT:comment = \u0026ldquo;Latitude of NE corner of T grid cell\u0026rdquo; ;\nfloat tmask(nlat, nlon) ;\ntmask:long_name = \u0026ldquo;ocean grid mask\u0026rdquo; ;\ntmask:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\ntmask:comment = \u0026ldquo;0 = land, 1 = ocean\u0026rdquo; ;\nfloat tarea(nlat, nlon) ;\ntarea:long_name = \u0026ldquo;area of T grid cells\u0026rdquo; ;\ntarea:units = \u0026ldquo;m^2\u0026rdquo; ;\ntarea:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat uarea(nlat, nlon) ;\nuarea:long_name = \u0026ldquo;area of U grid cells\u0026rdquo; ;\nuarea:units = \u0026ldquo;m^2\u0026rdquo; ;\nuarea:coordinates = \u0026ldquo;ULON ULAT\u0026rdquo; ;\nfloat dxt(nlat, nlon) ;\ndxt:long_name = \u0026ldquo;T cell width through middle\u0026rdquo; ;\ndxt:units = \u0026ldquo;m\u0026rdquo; ;\ndxt:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat dyt(nlat, nlon) ;\ndyt:long_name = \u0026ldquo;T cell height through middle\u0026rdquo; ;\ndyt:units = \u0026ldquo;m\u0026rdquo; ;\ndyt:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat dxu(nlat, nlon) ;\ndxu:long_name = \u0026ldquo;U cell width through middle\u0026rdquo; ;\ndxu:units = \u0026ldquo;m\u0026rdquo; ;\ndxu:coordinates = \u0026ldquo;ULON ULAT\u0026rdquo; ;\nfloat dyu(nlat, nlon) ;\ndyu:long_name = \u0026ldquo;U cell height through middle\u0026rdquo; ;\ndyu:units = \u0026ldquo;m\u0026rdquo; ;\ndyu:coordinates = \u0026ldquo;ULON ULAT\u0026rdquo; ;\nfloat HTN(nlat, nlon) ;\nHTN:long_name = \u0026ldquo;T cell width on North side\u0026rdquo; ;\nHTN:units = \u0026ldquo;m\u0026rdquo; ;\nHTN:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat HTE(nlat, nlon) ;\nHTE:long_name = \u0026ldquo;T cell width on East side\u0026rdquo; ;\nHTE:units = \u0026ldquo;m\u0026rdquo; ;\nHTE:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat ANGLET(nlat, nlon) ;\nANGLET:long_name = \u0026ldquo;angle grid makes with latitude line on T grid\u0026rdquo; ;\nANGLET:units = \u0026ldquo;radians\u0026rdquo; ;\nANGLET:coordinates = \u0026ldquo;TLON TLAT\u0026rdquo; ;\nfloat ANGLE(nlat, nlon) ;\nANGLE:long_name = \u0026ldquo;angle grid makes with latitude line on U grid\u0026rdquo; ;\nANGLE:units = \u0026ldquo;radians\u0026rdquo; ;\nANGLE:coordinates = \u0026ldquo;ULON ULAT\u0026rdquo; ;\nfloat ice_present(time, nlat, nlon) ;\nice_present:units = \u0026ldquo;1\u0026rdquo; ;\nice_present:long_name = \u0026ldquo;fraction of time-averaging interval that any ice is present\u0026rdquo; ;\nice_present:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nfloat hi(time, nlat, nlon) ;\nhi:units = \u0026ldquo;m\u0026rdquo; ;\nhi:long_name = \u0026ldquo;grid box mean ice thickness\u0026rdquo; ;\nhi:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nhi:missing_value = 1.e+30f ;\nhi:_FillValue = 1.e+30f ;\nhi:comment = \u0026ldquo;Ice volume distributed evenly over grid cell\u0026rdquo; ;\nhi:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat hs(time, nlat, nlon) ;\nhs:units = \u0026ldquo;m\u0026rdquo; ;\nhs:long_name = \u0026ldquo;grid box mean snow thickness\u0026rdquo; ;\nhs:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nhs:missing_value = 1.e+30f ;\nhs:_FillValue = 1.e+30f ;\nhs:comment = \u0026ldquo;Snow volume distributed evenly over grid cell\u0026rdquo; ;\nhs:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Tsfc(time, nlat, nlon) ;\nTsfc:units = \u0026ldquo;C\u0026rdquo; ;\nTsfc:long_name = \u0026ldquo;snow/ice surface temperature\u0026rdquo; ;\nTsfc:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nTsfc:missing_value = 1.e+30f ;\nTsfc:_FillValue = 1.e+30f ;\nTsfc:comment = \u0026ldquo;Tf is averaged in if no ice is present\u0026rdquo; ;\nTsfc:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat aice(time, nlat, nlon) ;\naice:units = \u0026ldquo;%\u0026rdquo; ;\naice:long_name = \u0026ldquo;ice area (aggregate)\u0026rdquo; ;\naice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\naice:missing_value = 1.e+30f ;\naice:_FillValue = 1.e+30f ;\naice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat u(time, nlat, nlon) ;\nu:units = \u0026ldquo;cm/s\u0026rdquo; ;\nu:long_name = \u0026ldquo;ice velocity (x)\u0026rdquo; ;\nu:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nu:missing_value = 1.e+30f ;\nu:_FillValue = 1.e+30f ;\nu:comment = \u0026ldquo;positive is x direction on U grid\u0026rdquo; ;\nu:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat v(time, nlat, nlon) ;\nv:units = \u0026ldquo;cm/s\u0026rdquo; ;\nv:long_name = \u0026ldquo;ice velocity (y)\u0026rdquo; ;\nv:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nv:missing_value = 1.e+30f ;\nv:_FillValue = 1.e+30f ;\nv:comment = \u0026ldquo;positive is y direction on U grid\u0026rdquo; ;\nv:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fswdn(time, nlat, nlon) ;\nFswdn:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFswdn:long_name = \u0026ldquo;down solar flux\u0026rdquo; ;\nFswdn:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFswdn:missing_value = 1.e+30f ;\nFswdn:_FillValue = 1.e+30f ;\nFswdn:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFswdn:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Flwdn(time, nlat, nlon) ;\nFlwdn:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFlwdn:long_name = \u0026ldquo;down longwave flux\u0026rdquo; ;\nFlwdn:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFlwdn:missing_value = 1.e+30f ;\nFlwdn:_FillValue = 1.e+30f ;\nFlwdn:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFlwdn:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat snow(time, nlat, nlon) ;\nsnow:units = \u0026ldquo;cm/day\u0026rdquo; ;\nsnow:long_name = \u0026ldquo;snowfall rate (cpl)\u0026rdquo; ;\nsnow:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nsnow:missing_value = 1.e+30f ;\nsnow:_FillValue = 1.e+30f ;\nsnow:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat snow_aice(time, nlat, nlon) ;\nsnow_aice:units = \u0026ldquo;cm/day\u0026rdquo; ;\nsnow_aice:long_name = \u0026ldquo;snowfall rate\u0026rdquo; ;\nsnow_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nsnow_aice:missing_value = 1.e+30f ;\nsnow_aice:_FillValue = 1.e+30f ;\nsnow_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nsnow_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat rain(time, nlat, nlon) ;\nrain:units = \u0026ldquo;cm/day\u0026rdquo; ;\nrain:long_name = \u0026ldquo;rainfall rate (cpl)\u0026rdquo; ;\nrain:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nrain:missing_value = 1.e+30f ;\nrain:_FillValue = 1.e+30f ;\nrain:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat rain_aice(time, nlat, nlon) ;\nrain_aice:units = \u0026ldquo;cm/day\u0026rdquo; ;\nrain_aice:long_name = \u0026ldquo;rainfall rate\u0026rdquo; ;\nrain_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nrain_aice:missing_value = 1.e+30f ;\nrain_aice:_FillValue = 1.e+30f ;\nrain_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nrain_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fswabs(time, nlat, nlon) ;\nFswabs:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFswabs:long_name = \u0026ldquo;snow/ice/ocn absorbed solar flux (cpl)\u0026rdquo; ;\nFswabs:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFswabs:missing_value = 1.e+30f ;\nFswabs:_FillValue = 1.e+30f ;\nFswabs:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFswabs:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fswabs_aice(time, nlat, nlon) ;\nFswabs_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFswabs_aice:long_name = \u0026ldquo;snow/ice/ocn absorbed solar flux\u0026rdquo; ;\nFswabs_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFswabs_aice:missing_value = 1.e+30f ;\nFswabs_aice:_FillValue = 1.e+30f ;\nFswabs_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFswabs_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat albsni(time, nlat, nlon) ;\nalbsni:units = \u0026ldquo;%\u0026rdquo; ;\nalbsni:long_name = \u0026ldquo;snw/ice broad band albedo\u0026rdquo; ;\nalbsni:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nalbsni:missing_value = 1.e+30f ;\nalbsni:_FillValue = 1.e+30f ;\nalbsni:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Flat(time, nlat, nlon) ;\nFlat:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFlat:long_name = \u0026ldquo;latent heat flux (cpl)\u0026rdquo; ;\nFlat:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFlat:missing_value = 1.e+30f ;\nFlat:_FillValue = 1.e+30f ;\nFlat:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFlat:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Flat_aice(time, nlat, nlon) ;\nFlat_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFlat_aice:long_name = \u0026ldquo;latent heat flux\u0026rdquo; ;\nFlat_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFlat_aice:missing_value = 1.e+30f ;\nFlat_aice:_FillValue = 1.e+30f ;\nFlat_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFlat_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fsens(time, nlat, nlon) ;\nFsens:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFsens:long_name = \u0026ldquo;sensible heat flux (cpl)\u0026rdquo; ;\nFsens:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFsens:missing_value = 1.e+30f ;\nFsens:_FillValue = 1.e+30f ;\nFsens:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFsens:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fsens_aice(time, nlat, nlon) ;\nFsens_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFsens_aice:long_name = \u0026ldquo;sensible heat flux\u0026rdquo; ;\nFsens_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFsens_aice:missing_value = 1.e+30f ;\nFsens_aice:_FillValue = 1.e+30f ;\nFsens_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFsens_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Flwout(time, nlat, nlon) ;\nFlwout:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFlwout:long_name = \u0026ldquo;upward longwave flx (cpl)\u0026rdquo; ;\nFlwout:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFlwout:missing_value = 1.e+30f ;\nFlwout:_FillValue = 1.e+30f ;\nFlwout:comment = \u0026ldquo;positive downward\u0026rdquo; ;\nFlwout:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Flwout_aice(time, nlat, nlon) ;\nFlwout_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFlwout_aice:long_name = \u0026ldquo;upward longwave flux\u0026rdquo; ;\nFlwout_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFlwout_aice:missing_value = 1.e+30f ;\nFlwout_aice:_FillValue = 1.e+30f ;\nFlwout_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFlwout_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat evap(time, nlat, nlon) ;\nevap:units = \u0026ldquo;cm/day\u0026rdquo; ;\nevap:long_name = \u0026ldquo;evaporative water flux (cpl)\u0026rdquo; ;\nevap:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nevap:missing_value = 1.e+30f ;\nevap:_FillValue = 1.e+30f ;\nevap:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat evap_aice(time, nlat, nlon) ;\nevap_aice:units = \u0026ldquo;cm/day\u0026rdquo; ;\nevap_aice:long_name = \u0026ldquo;evaporative water flux\u0026rdquo; ;\nevap_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nevap_aice:missing_value = 1.e+30f ;\nevap_aice:_FillValue = 1.e+30f ;\nevap_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nevap_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Tref(time, nlat, nlon) ;\nTref:units = \u0026ldquo;C\u0026rdquo; ;\nTref:long_name = \u0026ldquo;2m reference temperature\u0026rdquo; ;\nTref:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nTref:missing_value = 1.e+30f ;\nTref:_FillValue = 1.e+30f ;\nTref:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Qref(time, nlat, nlon) ;\nQref:units = \u0026ldquo;g/kg\u0026rdquo; ;\nQref:long_name = \u0026ldquo;2m reference specific humidity\u0026rdquo; ;\nQref:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nQref:missing_value = 1.e+30f ;\nQref:_FillValue = 1.e+30f ;\nQref:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat growb(time, nlat, nlon) ;\ngrowb:units = \u0026ldquo;cm/day\u0026rdquo; ;\ngrowb:long_name = \u0026ldquo;congelation ice growth\u0026rdquo; ;\ngrowb:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ngrowb:missing_value = 1.e+30f ;\ngrowb:_FillValue = 1.e+30f ;\ngrowb:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat frazil(time, nlat, nlon) ;\nfrazil:units = \u0026ldquo;cm/day\u0026rdquo; ;\nfrazil:long_name = \u0026ldquo;frazil ice growth\u0026rdquo; ;\nfrazil:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nfrazil:missing_value = 1.e+30f ;\nfrazil:_FillValue = 1.e+30f ;\nfrazil:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat snoice(time, nlat, nlon) ;\nsnoice:units = \u0026ldquo;cm/day\u0026rdquo; ;\nsnoice:long_name = \u0026ldquo;snow-ice formation\u0026rdquo; ;\nsnoice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nsnoice:missing_value = 1.e+30f ;\nsnoice:_FillValue = 1.e+30f ;\nsnoice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat meltt(time, nlat, nlon) ;\nmeltt:units = \u0026ldquo;cm/day\u0026rdquo; ;\nmeltt:long_name = \u0026ldquo;top ice melt\u0026rdquo; ;\nmeltt:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nmeltt:missing_value = 1.e+30f ;\nmeltt:_FillValue = 1.e+30f ;\nmeltt:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat meltb(time, nlat, nlon) ;\nmeltb:units = \u0026ldquo;cm/day\u0026rdquo; ;\nmeltb:long_name = \u0026ldquo;basal ice melt\u0026rdquo; ;\nmeltb:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nmeltb:missing_value = 1.e+30f ;\nmeltb:_FillValue = 1.e+30f ;\nmeltb:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat meltl(time, nlat, nlon) ;\nmeltl:units = \u0026ldquo;cm/day\u0026rdquo; ;\nmeltl:long_name = \u0026ldquo;lateral ice melt\u0026rdquo; ;\nmeltl:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nmeltl:missing_value = 1.e+30f ;\nmeltl:_FillValue = 1.e+30f ;\nmeltl:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fresh(time, nlat, nlon) ;\nFresh:units = \u0026ldquo;cm/day\u0026rdquo; ;\nFresh:long_name = \u0026ldquo;frshwtr flx ice to ocn (cpl)\u0026rdquo; ;\nFresh:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFresh:missing_value = 1.e+30f ;\nFresh:_FillValue = 1.e+30f ;\nFresh:comment = \u0026ldquo;positive represents ocean gaining fresh water\u0026rdquo; ;\nFresh:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fresh_aice(time, nlat, nlon) ;\nFresh_aice:units = \u0026ldquo;cm/day\u0026rdquo; ;\nFresh_aice:long_name = \u0026ldquo;frshwtr flx ice to ocn\u0026rdquo; ;\nFresh_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFresh_aice:missing_value = 1.e+30f ;\nFresh_aice:_FillValue = 1.e+30f ;\nFresh_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFresh_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fsalt(time, nlat, nlon) ;\nFsalt:units = \u0026ldquo;kg/m^2/day\u0026rdquo; ;\nFsalt:long_name = \u0026ldquo;salt flux ice to ocn (cpl)\u0026rdquo; ;\nFsalt:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFsalt:missing_value = 1.e+30f ;\nFsalt:_FillValue = 1.e+30f ;\nFsalt:comment = \u0026ldquo;positive represents ocean gaining salt\u0026rdquo; ;\nFsalt:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fsalt_aice(time, nlat, nlon) ;\nFsalt_aice:units = \u0026ldquo;kg/m^2/day\u0026rdquo; ;\nFsalt_aice:long_name = \u0026ldquo;salt flux ice to ocean\u0026rdquo; ;\nFsalt_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFsalt_aice:missing_value = 1.e+30f ;\nFsalt_aice:_FillValue = 1.e+30f ;\nFsalt_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFsalt_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fhnet(time, nlat, nlon) ;\nFhnet:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFhnet:long_name = \u0026ldquo;heat flux ice to ocn (cpl)\u0026rdquo; ;\nFhnet:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFhnet:missing_value = 1.e+30f ;\nFhnet:_FillValue = 1.e+30f ;\nFhnet:comment = \u0026ldquo;positive represents ocean gaining heat\u0026rdquo; ;\nFhnet:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fhnet_aice(time, nlat, nlon) ;\nFhnet_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFhnet_aice:long_name = \u0026ldquo;heat flux ice to ocean\u0026rdquo; ;\nFhnet_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFhnet_aice:missing_value = 1.e+30f ;\nFhnet_aice:_FillValue = 1.e+30f ;\nFhnet_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFhnet_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fswthru(time, nlat, nlon) ;\nFswthru:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFswthru:long_name = \u0026ldquo;SW thru ice to ocean (cpl)\u0026rdquo; ;\nFswthru:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFswthru:missing_value = 1.e+30f ;\nFswthru:_FillValue = 1.e+30f ;\nFswthru:comment = \u0026ldquo;positive represents ice gaining heat\u0026rdquo; ;\nFswthru:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat Fswthru_aice(time, nlat, nlon) ;\nFswthru_aice:units = \u0026ldquo;W/m^2\u0026rdquo; ;\nFswthru_aice:long_name = \u0026ldquo;SW flux thru ice to ocean\u0026rdquo; ;\nFswthru_aice:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nFswthru_aice:missing_value = 1.e+30f ;\nFswthru_aice:_FillValue = 1.e+30f ;\nFswthru_aice:comment = \u0026ldquo;weighted by ice area\u0026rdquo; ;\nFswthru_aice:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strairx(time, nlat, nlon) ;\nstrairx:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrairx:long_name = \u0026ldquo;atm/ice stress (x)\u0026rdquo; ;\nstrairx:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrairx:missing_value = 1.e+30f ;\nstrairx:_FillValue = 1.e+30f ;\nstrairx:comment = \u0026ldquo;positive is x direction on U grid\u0026rdquo; ;\nstrairx:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strairy(time, nlat, nlon) ;\nstrairy:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrairy:long_name = \u0026ldquo;atm/ice stress (y)\u0026rdquo; ;\nstrairy:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrairy:missing_value = 1.e+30f ;\nstrairy:_FillValue = 1.e+30f ;\nstrairy:comment = \u0026ldquo;positive is y direction on U grid\u0026rdquo; ;\nstrairy:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strcorx(time, nlat, nlon) ;\nstrcorx:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrcorx:long_name = \u0026ldquo;coriolis stress (x)\u0026rdquo; ;\nstrcorx:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrcorx:missing_value = 1.e+30f ;\nstrcorx:_FillValue = 1.e+30f ;\nstrcorx:comment = \u0026ldquo;positive is x direction on U grid\u0026rdquo; ;\nstrcorx:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strcory(time, nlat, nlon) ;\nstrcory:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrcory:long_name = \u0026ldquo;coriolis stress (y)\u0026rdquo; ;\nstrcory:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrcory:missing_value = 1.e+30f ;\nstrcory:_FillValue = 1.e+30f ;\nstrcory:comment = \u0026ldquo;positive is y direction on U grid\u0026rdquo; ;\nstrcory:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strocnx(time, nlat, nlon) ;\nstrocnx:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrocnx:long_name = \u0026ldquo;ocean/ice stress (x)\u0026rdquo; ;\nstrocnx:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrocnx:missing_value = 1.e+30f ;\nstrocnx:_FillValue = 1.e+30f ;\nstrocnx:comment = \u0026ldquo;positive is x direction on U grid\u0026rdquo; ;\nstrocnx:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strocny(time, nlat, nlon) ;\nstrocny:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrocny:long_name = \u0026ldquo;ocean/ice stress (y)\u0026rdquo; ;\nstrocny:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrocny:missing_value = 1.e+30f ;\nstrocny:_FillValue = 1.e+30f ;\nstrocny:comment = \u0026ldquo;positive is y direction on U grid\u0026rdquo; ;\nstrocny:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strintx(time, nlat, nlon) ;\nstrintx:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrintx:long_name = \u0026ldquo;internal ice stress (x)\u0026rdquo; ;\nstrintx:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrintx:missing_value = 1.e+30f ;\nstrintx:_FillValue = 1.e+30f ;\nstrintx:comment = \u0026ldquo;positive is x direction on U grid\u0026rdquo; ;\nstrintx:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strinty(time, nlat, nlon) ;\nstrinty:units = \u0026ldquo;N/m^2\u0026rdquo; ;\nstrinty:long_name = \u0026ldquo;internal ice stress (y)\u0026rdquo; ;\nstrinty:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nstrinty:missing_value = 1.e+30f ;\nstrinty:_FillValue = 1.e+30f ;\nstrinty:comment = \u0026ldquo;positive is y direction on U grid\u0026rdquo; ;\nstrinty:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat strength(time, nlat, nlon) ;\nstrength:units = \u0026ldquo;N/m\u0026rdquo; ;\nstrength:long_name = \u0026ldquo;compressive ice strength\u0026rdquo; ;\nstrength:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nstrength:missing_value = 1.e+30f ;\nstrength:_FillValue = 1.e+30f ;\nstrength:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat divu(time, nlat, nlon) ;\ndivu:units = \u0026ldquo;%/day\u0026rdquo; ;\ndivu:long_name = \u0026ldquo;strain rate (divergence)\u0026rdquo; ;\ndivu:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ndivu:missing_value = 1.e+30f ;\ndivu:_FillValue = 1.e+30f ;\ndivu:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat shear(time, nlat, nlon) ;\nshear:units = \u0026ldquo;%/day\u0026rdquo; ;\nshear:long_name = \u0026ldquo;strain rate (shear)\u0026rdquo; ;\nshear:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nshear:missing_value = 1.e+30f ;\nshear:_FillValue = 1.e+30f ;\nshear:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat sig1(time, nlat, nlon) ;\nsig1:units = \u0026ldquo;1\u0026rdquo; ;\nsig1:long_name = \u0026ldquo;norm. principal stress 1\u0026rdquo; ;\nsig1:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nsig1:missing_value = 1.e+30f ;\nsig1:_FillValue = 1.e+30f ;\nsig1:comment = \u0026ldquo;sig1 is instantaneous\u0026rdquo; ;\nsig1:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat sig2(time, nlat, nlon) ;\nsig2:units = \u0026ldquo;1\u0026rdquo; ;\nsig2:long_name = \u0026ldquo;norm. principal stress 2\u0026rdquo; ;\nsig2:coordinates = \u0026ldquo;ULON ULAT time\u0026rdquo; ;\nsig2:missing_value = 1.e+30f ;\nsig2:_FillValue = 1.e+30f ;\nsig2:comment = \u0026ldquo;sig2 is instantaneous\u0026rdquo; ;\nsig2:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat dvidtt(time, nlat, nlon) ;\ndvidtt:units = \u0026ldquo;cm/day\u0026rdquo; ;\ndvidtt:long_name = \u0026ldquo;volume tendency thermo\u0026rdquo; ;\ndvidtt:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ndvidtt:missing_value = 1.e+30f ;\ndvidtt:_FillValue = 1.e+30f ;\ndvidtt:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat dvidtd(time, nlat, nlon) ;\ndvidtd:units = \u0026ldquo;cm/day\u0026rdquo; ;\ndvidtd:long_name = \u0026ldquo;volume tendency dynamics\u0026rdquo; ;\ndvidtd:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ndvidtd:missing_value = 1.e+30f ;\ndvidtd:_FillValue = 1.e+30f ;\ndvidtd:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat daidtt(time, nlat, nlon) ;\ndaidtt:units = \u0026ldquo;%/day\u0026rdquo; ;\ndaidtt:long_name = \u0026ldquo;area tendency thermo\u0026rdquo; ;\ndaidtt:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ndaidtt:missing_value = 1.e+30f ;\ndaidtt:_FillValue = 1.e+30f ;\ndaidtt:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat daidtd(time, nlat, nlon) ;\ndaidtd:units = \u0026ldquo;%/day\u0026rdquo; ;\ndaidtd:long_name = \u0026ldquo;area tendency dynamics\u0026rdquo; ;\ndaidtd:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\ndaidtd:missing_value = 1.e+30f ;\ndaidtd:_FillValue = 1.e+30f ;\ndaidtd:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat opening(time, nlat, nlon) ;\nopening:units = \u0026ldquo;%/day\u0026rdquo; ;\nopening:long_name = \u0026ldquo;lead area opening rate\u0026rdquo; ;\nopening:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\nopening:missing_value = 1.e+30f ;\nopening:_FillValue = 1.e+30f ;\nopening:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat aice1(time, nlat, nlon) ;\naice1:units = \u0026ldquo;%\u0026rdquo; ;\naice1:long_name = \u0026ldquo;ice area (category 1)\u0026rdquo; ;\naice1:coordinates = \u0026ldquo;TLON TLAT time\u0026rdquo; ;\naice1:missing_value = 1.e+30f ;\naice1:_FillValue = 1.e+30f ;\naice1:comment = \u0026ldquo;0.000 m \u0026lt; hi Cat 1 \u0026lt; 0.645 m\u0026rdquo; ;\naice1:cell_methods = \u0026ldquo;time:mean\u0026rdquo; ;\nfloat aice2(time, nlat, nlon) ;\n\u0026amp;nb**\n#CGCM #접합모형 #CCSM3 #CSIM5 #해빙순환모형\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/CCSM3%EC%9D%98-CSIM5-%ED%95%B4%EB%B9%99-%EB%AA%A8%ED%98%95%EC%9D%B4-%EB%A7%8C%EB%93%A4%EC%96%B4-%EB%82%B4%EB%8A%94-%EB%B3%80%EC%88%98%EB%93%A4/","section":"글","summary":"CCSM3의 CSIM5 해빙모형이 출력하는 변수 전체를 netcdf 헤더 그대로 옮긴 참고표.","title":"CCSM3의 CSIM5 해빙 모형이 만들어 내는 변수들","type":"posts"},{"content":"CCSM3의 CAM3 대기 모형이 만들어 내는 변수들\nnetcdf b30.040b.ES01.cam2.h0.2000 {\ndimensions:\nlat = 128 ;\nlon = 256 ;\nlev = 26 ;\nilev = 27 ;\nisccp_prs = 7 ;\nisccp_tau = 7 ;\nisccp_prstau = 49 ;\ntime = UNLIMITED ; // (1 currently)\ntbnd = 2 ;\nvariables:\ndouble P0 ;\nP0:long_name = \u0026ldquo;reference pressure\u0026rdquo; ;\nP0:units = \u0026ldquo;Pa\u0026rdquo; ;\ndouble lat(lat) ;\nlat:long_name = \u0026ldquo;latitude\u0026rdquo; ;\nlat:units = \u0026ldquo;degrees_north\u0026rdquo; ;\ndouble lon(lon) ;\nlon:long_name = \u0026ldquo;longitude\u0026rdquo; ;\nlon:units = \u0026ldquo;degrees_east\u0026rdquo; ;\ndouble lev(lev) ;\nlev:long_name = \u0026ldquo;hybrid level at midpoints (1000*(A+B))\u0026rdquo; ;\nlev:units = \u0026ldquo;level\u0026rdquo; ;\nlev:positive = \u0026ldquo;down\u0026rdquo; ;\nlev:standard_name = \u0026ldquo;atmosphere_hybrid_sigma_pressure_coordinate\u0026rdquo; ;\nlev:formula_terms = \u0026ldquo;a: hyam b: hybm p0: P0 ps: PS\u0026rdquo; ;\ndouble ilev(ilev) ;\nilev:long_name = \u0026ldquo;hybrid level at interfaces (1000*(A+B))\u0026rdquo; ;\nilev:units = \u0026ldquo;level\u0026rdquo; ;\nilev:positive = \u0026ldquo;down\u0026rdquo; ;\nilev:standard_name = \u0026ldquo;atmosphere_hybrid_sigma_pressure_coordinate\u0026rdquo; ;\nilev:formula_terms = \u0026ldquo;a: hyai b: hybi p0: P0 ps: PS\u0026rdquo; ;\ndouble isccp_prs(isccp_prs) ;\nisccp_prs:long_name = \u0026ldquo;Mean ISCCP pressure\u0026rdquo; ;\nisccp_prs:units = \u0026ldquo;mb\u0026rdquo; ;\nisccp_prs:isccp_prs_bnds = 0., 180., 310., 440., 560., 680., 800., 1000. ;\ndouble isccp_tau(isccp_tau) ;\nisccp_tau:long_name = \u0026ldquo;Mean ISCCP optical depth\u0026rdquo; ;\nisccp_tau:units = \u0026ldquo;unitless\u0026rdquo; ;\nisccp_tau:isccp_tau_bnds = 0., 0.3, 1.3, 3.6, 9.4, 23., 60., 379. ;\ndouble isccp_prstau(isccp_prstau) ;\nisccp_prstau:long_name = \u0026ldquo;Mean pressure (mb).mean optical depth (unitless)/1000\u0026rdquo; ;\nisccp_prstau:units = \u0026ldquo;mixed\u0026rdquo; ;\ndouble time(time) ;\ntime:long_name = \u0026ldquo;time\u0026rdquo; ;\ntime:units = \u0026ldquo;days since 1870-01-01 00:00:00\u0026rdquo; ;\ntime:calendar = \u0026ldquo;noleap\u0026rdquo; ;\ntime:bounds = \u0026ldquo;time_bnds\u0026rdquo; ;\ndouble time_bnds(time, tbnd) ;\ntime_bnds:long_name = \u0026ldquo;time interval endpoints\u0026rdquo; ;\nint ntrm ;\nntrm:long_name = \u0026ldquo;spectral truncation parameter M\u0026rdquo; ;\nint ntrn ;\nntrn:long_name = \u0026ldquo;spectral truncation parameter N\u0026rdquo; ;\nint ntrk ;\nntrk:long_name = \u0026ldquo;spectral truncation parameter K\u0026rdquo; ;\nint ndbase ;\nndbase:long_name = \u0026ldquo;base day\u0026rdquo; ;\nint nsbase ;\nnsbase:long_name = \u0026ldquo;seconds of base day\u0026rdquo; ;\nint nbdate ;\nnbdate:long_name = \u0026ldquo;base date (YYYYMMDD)\u0026rdquo; ;\nint nbsec ;\nnbsec:long_name = \u0026ldquo;seconds of base date\u0026rdquo; ;\nint mdt ;\nmdt:long_name = \u0026ldquo;timestep\u0026rdquo; ;\nmdt:units = \u0026ldquo;s\u0026rdquo; ;\nint nlon(lat) ;\nnlon:long_name = \u0026ldquo;number of longitudes\u0026rdquo; ;\nint wnummax(lat) ;\nwnummax:long_name = \u0026ldquo;cutoff Fourier wavenumber\u0026rdquo; ;\ndouble hyai(ilev) ;\nhyai:long_name = \u0026ldquo;hybrid A coefficient at layer interfaces\u0026rdquo; ;\ndouble hybi(ilev) ;\nhybi:long_name = \u0026ldquo;hybrid B coefficient at layer interfaces\u0026rdquo; ;\ndouble hyam(lev) ;\nhyam:long_name = \u0026ldquo;hybrid A coefficient at layer midpoints\u0026rdquo; ;\ndouble hybm(lev) ;\nhybm:long_name = \u0026ldquo;hybrid B coefficient at layer midpoints\u0026rdquo; ;\ndouble gw(lat) ;\ngw:long_name = \u0026ldquo;gauss weights\u0026rdquo; ;\nint ndcur(time) ;\nndcur:long_name = \u0026ldquo;current day (from base day)\u0026rdquo; ;\nint nscur(time) ;\nnscur:long_name = \u0026ldquo;current seconds of current day\u0026rdquo; ;\nint date(time) ;\ndate:long_name = \u0026ldquo;current date (YYYYMMDD)\u0026rdquo; ;\nint datesec(time) ;\ndatesec:long_name = \u0026ldquo;current seconds of current date\u0026rdquo; ;\nint nsteph(time) ;\nnsteph:long_name = \u0026ldquo;current timestep\u0026rdquo; ;\nfloat AEROD_v(time, lat, lon) ;\nAEROD_v:units = \u0026ldquo;None\u0026rdquo; ;\nAEROD_v:long_name = \u0026ldquo;Total Aerosol Optical Depth in visible\u0026rdquo; ;\nAEROD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CAROD_v(time, lat, lon) ;\nCAROD_v:units = \u0026ldquo;None\u0026rdquo; ;\nCAROD_v:long_name = \u0026ldquo;Carbon Optical Depth in visible\u0026rdquo; ;\nCAROD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CFC11(time, lev, lat, lon) ;\nCFC11:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nCFC11:long_name = \u0026ldquo;CFC11\u0026rdquo; ;\nCFC11:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CFC12(time, lev, lat, lon) ;\nCFC12:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nCFC12:long_name = \u0026ldquo;CFC12\u0026rdquo; ;\nCFC12:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CH4(time, lev, lat, lon) ;\nCH4:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nCH4:long_name = \u0026ldquo;Methane\u0026rdquo; ;\nCH4:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDHGH(time, lat, lon) ;\nCLDHGH:units = \u0026ldquo;fraction\u0026rdquo; ;\nCLDHGH:long_name = \u0026ldquo;Vertically-integrated high cloud\u0026rdquo; ;\nCLDHGH:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDICE(time, lev, lat, lon) ;\nCLDICE:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nCLDICE:long_name = \u0026ldquo;Grid box averaged ice condensate amount\u0026rdquo; ;\nCLDICE:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDLIQ(time, lev, lat, lon) ;\nCLDLIQ:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nCLDLIQ:long_name = \u0026ldquo;Grid box averaged liquid condensate amount\u0026rdquo; ;\nCLDLIQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDLOW(time, lat, lon) ;\nCLDLOW:units = \u0026ldquo;fraction\u0026rdquo; ;\nCLDLOW:long_name = \u0026ldquo;Vertically-integrated low cloud\u0026rdquo; ;\nCLDLOW:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDMED(time, lat, lon) ;\nCLDMED:units = \u0026ldquo;fraction\u0026rdquo; ;\nCLDMED:long_name = \u0026ldquo;Vertically-integrated mid-level cloud\u0026rdquo; ;\nCLDMED:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLDTOT(time, lat, lon) ;\nCLDTOT:units = \u0026ldquo;fraction\u0026rdquo; ;\nCLDTOT:long_name = \u0026ldquo;Vertically-integrated total cloud\u0026rdquo; ;\nCLDTOT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CLOUD(time, lev, lat, lon) ;\nCLOUD:units = \u0026ldquo;fraction\u0026rdquo; ;\nCLOUD:long_name = \u0026ldquo;Cloud fraction\u0026rdquo; ;\nCLOUD:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CMFDQ(time, lev, lat, lon) ;\nCMFDQ:units = \u0026ldquo;kg/kg/s\u0026rdquo; ;\nCMFDQ:long_name = \u0026ldquo;Q tendency - Hack convection\u0026rdquo; ;\nCMFDQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CMFDQR(time, lev, lat, lon) ;\nCMFDQR:units = \u0026ldquo;kg/kg/s\u0026rdquo; ;\nCMFDQR:long_name = \u0026ldquo;Q tendency - shallow convection rainout\u0026rdquo; ;\nCMFDQR:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CMFDT(time, lev, lat, lon) ;\nCMFDT:units = \u0026ldquo;K/s\u0026rdquo; ;\nCMFDT:long_name = \u0026ldquo;T tendency - Hack convection\u0026rdquo; ;\nCMFDT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CMFMC(time, ilev, lat, lon) ;\nCMFMC:units = \u0026ldquo;kg/m2/s\u0026rdquo; ;\nCMFMC:long_name = \u0026ldquo;Moist convection mass flux\u0026rdquo; ;\nCMFMC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat CONCLD(time, lev, lat, lon) ;\nCONCLD:units = \u0026ldquo;fraction\u0026rdquo; ;\nCONCLD:long_name = \u0026ldquo;Convective cloud cover\u0026rdquo; ;\nCONCLD:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DCQ(time, lev, lat, lon) ;\nDCQ:units = \u0026ldquo;kg/kg/s\u0026rdquo; ;\nDCQ:long_name = \u0026ldquo;Q tendency due to moist processes\u0026rdquo; ;\nDCQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DMS(time, lev, lat, lon) ;\nDMS:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nDMS:long_name = \u0026ldquo;DMS\u0026rdquo; ;\nDMS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DTCOND(time, lev, lat, lon) ;\nDTCOND:units = \u0026ldquo;K/s\u0026rdquo; ;\nDTCOND:long_name = \u0026ldquo;T tendency - moist processes\u0026rdquo; ;\nDTCOND:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DTH(time, lev, lat, lon) ;\nDTH:units = \u0026ldquo;K/s\u0026rdquo; ;\nDTH:long_name = \u0026ldquo;T horizontal diffusive heating\u0026rdquo; ;\nDTH:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DTV(time, lev, lat, lon) ;\nDTV:units = \u0026ldquo;K/s\u0026rdquo; ;\nDTV:long_name = \u0026ldquo;T vertical diffusion\u0026rdquo; ;\nDTV:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat DUSTOD_v(time, lat, lon) ;\nDUSTOD_v:units = \u0026ldquo;None\u0026rdquo; ;\nDUSTOD_v:long_name = \u0026ldquo;Dust Optical Depth in visible\u0026rdquo; ;\nDUSTOD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FICE(time, lev, lat, lon) ;\nFICE:units = \u0026ldquo;fraction\u0026rdquo; ;\nFICE:long_name = \u0026ldquo;Fractional ice content within cloud\u0026rdquo; ;\nFICE:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLN200(time, lat, lon) ;\nFLN200:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLN200:long_name = \u0026ldquo;Net longwave flux at 200 mb\u0026rdquo; ;\nFLN200:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLN200C(time, lat, lon) ;\nFLN200C:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLN200C:long_name = \u0026ldquo;Clearsky net longwave flux at 200 mb\u0026rdquo; ;\nFLN200C:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLNS(time, lat, lon) ;\nFLNS:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLNS:long_name = \u0026ldquo;Net longwave flux at surface\u0026rdquo; ;\nFLNS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLNSC(time, lat, lon) ;\nFLNSC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLNSC:long_name = \u0026ldquo;Clearsky net longwave flux at surface\u0026rdquo; ;\nFLNSC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLNSOI(time, lat, lon) ;\nFLNSOI:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLNSOI:long_name = \u0026ldquo;FLNS over open ocn and ice\u0026rdquo; ;\nFLNSOI:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLNT(time, lat, lon) ;\nFLNT:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLNT:long_name = \u0026ldquo;Net longwave flux at top of model\u0026rdquo; ;\nFLNT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLNTC(time, lat, lon) ;\nFLNTC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLNTC:long_name = \u0026ldquo;Clearsky net longwave flux at top of model\u0026rdquo; ;\nFLNTC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLUT(time, lat, lon) ;\nFLUT:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLUT:long_name = \u0026ldquo;Upwelling longwave flux at top of model\u0026rdquo; ;\nFLUT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FLUTC(time, lat, lon) ;\nFLUTC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFLUTC:long_name = \u0026ldquo;Clearsky upwelling longwave flux at top of model\u0026rdquo; ;\nFLUTC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSDS(time, lat, lon) ;\nFSDS:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSDS:long_name = \u0026ldquo;Downwelling solar flux at surface\u0026rdquo; ;\nFSDS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSDSC(time, lat, lon) ;\nFSDSC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSDSC:long_name = \u0026ldquo;Clearsky downwelling solar flux at surface\u0026rdquo; ;\nFSDSC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSN200(time, lat, lon) ;\nFSN200:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSN200:long_name = \u0026ldquo;Net shortwave flux at 200 mb\u0026rdquo; ;\nFSN200:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSN200C(time, lat, lon) ;\nFSN200C:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSN200C:long_name = \u0026ldquo;Clearsky net shortwave flux at 200 mb\u0026rdquo; ;\nFSN200C:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNS(time, lat, lon) ;\nFSNS:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNS:long_name = \u0026ldquo;Net solar flux at surface\u0026rdquo; ;\nFSNS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNSC(time, lat, lon) ;\nFSNSC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNSC:long_name = \u0026ldquo;Clearsky net solar flux at surface\u0026rdquo; ;\nFSNSC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNSOI(time, lat, lon) ;\nFSNSOI:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNSOI:long_name = \u0026ldquo;FSNS over open ocn and ice\u0026rdquo; ;\nFSNSOI:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNT(time, lat, lon) ;\nFSNT:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNT:long_name = \u0026ldquo;Net solar flux at top of model\u0026rdquo; ;\nFSNT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNTC(time, lat, lon) ;\nFSNTC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNTC:long_name = \u0026ldquo;Clearsky net solar flux at top of model\u0026rdquo; ;\nFSNTC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNTOA(time, lat, lon) ;\nFSNTOA:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNTOA:long_name = \u0026ldquo;Net solar flux at top of atmosphere\u0026rdquo; ;\nFSNTOA:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat FSNTOAC(time, lat, lon) ;\nFSNTOAC:units = \u0026ldquo;W/m2\u0026rdquo; ;\nFSNTOAC:long_name = \u0026ldquo;Clearsky net solar flux at top of atmosphere\u0026rdquo; ;\nFSNTOAC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat GCLDLWP(time, lev, lat, lon) ;\nGCLDLWP:units = \u0026ldquo;gram/m2\u0026rdquo; ;\nGCLDLWP:long_name = \u0026ldquo;Grid-box cloud water path\u0026rdquo; ;\nGCLDLWP:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat ICEFRAC(time, lat, lon) ;\nICEFRAC:units = \u0026ldquo;fraction\u0026rdquo; ;\nICEFRAC:long_name = \u0026ldquo;Fraction of sfc area covered by sea-ice\u0026rdquo; ;\nICEFRAC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat ICLDLWP(time, lev, lat, lon) ;\nICLDLWP:units = \u0026ldquo;gram/m2\u0026rdquo; ;\nICLDLWP:long_name = \u0026ldquo;In-cloud cloud water path\u0026rdquo; ;\nICLDLWP:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat LANDFRAC(time, lat, lon) ;\nLANDFRAC:units = \u0026ldquo;fraction\u0026rdquo; ;\nLANDFRAC:long_name = \u0026ldquo;Fraction of sfc area covered by land\u0026rdquo; ;\nLANDFRAC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat LHFLX(time, lat, lon) ;\nLHFLX:units = \u0026ldquo;W/m2\u0026rdquo; ;\nLHFLX:long_name = \u0026ldquo;Surface latent heat flux\u0026rdquo; ;\nLHFLX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat LWCF(time, lat, lon) ;\nLWCF:units = \u0026ldquo;W/m2\u0026rdquo; ;\nLWCF:long_name = \u0026ldquo;Longwave cloud forcing\u0026rdquo; ;\nLWCF:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat N2O(time, lev, lat, lon) ;\nN2O:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nN2O:long_name = \u0026ldquo;Nitrous Oxide\u0026rdquo; ;\nN2O:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat O3(time, lev, lat, lon) ;\nO3:units = \u0026ldquo;mol/mol\u0026rdquo; ;\nO3:long_name = \u0026ldquo;Ozone\u0026rdquo; ;\nO3:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat OCNFRAC(time, lat, lon) ;\nOCNFRAC:units = \u0026ldquo;fraction\u0026rdquo; ;\nOCNFRAC:long_name = \u0026ldquo;Fraction of sfc area covered by ocean\u0026rdquo; ;\nOCNFRAC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat OMEGA(time, lev, lat, lon) ;\nOMEGA:units = \u0026ldquo;Pa/s\u0026rdquo; ;\nOMEGA:long_name = \u0026ldquo;Vertical velocity (pressure)\u0026rdquo; ;\nOMEGA:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat OMEGAT(time, lev, lat, lon) ;\nOMEGAT:units = \u0026ldquo;K Pa/s\u0026rdquo; ;\nOMEGAT:long_name = \u0026ldquo;Vertical heat flux\u0026rdquo; ;\nOMEGAT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PBLH(time, lat, lon) ;\nPBLH:units = \u0026ldquo;m\u0026rdquo; ;\nPBLH:long_name = \u0026ldquo;PBL height\u0026rdquo; ;\nPBLH:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PHIS(time, lat, lon) ;\nPHIS:units = \u0026ldquo;m2/s2\u0026rdquo; ;\nPHIS:long_name = \u0026ldquo;Surface geopotential\u0026rdquo; ;\nPHIS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECC(time, lat, lon) ;\nPRECC:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECC:long_name = \u0026ldquo;Convective precipitation rate\u0026rdquo; ;\nPRECC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECL(time, lat, lon) ;\nPRECL:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECL:long_name = \u0026ldquo;Large-scale (stable) precipitation rate\u0026rdquo; ;\nPRECL:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECSC(time, lat, lon) ;\nPRECSC:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECSC:long_name = \u0026ldquo;Convective snow rate (water equivalent)\u0026rdquo; ;\nPRECSC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECSH(time, lat, lon) ;\nPRECSH:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECSH:long_name = \u0026ldquo;Shallow Convection precipitation rate\u0026rdquo; ;\nPRECSH:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECSL(time, lat, lon) ;\nPRECSL:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECSL:long_name = \u0026ldquo;Large-scale (stable) snow rate (water equivalent)\u0026rdquo; ;\nPRECSL:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PRECTMX(time, lat, lon) ;\nPRECTMX:units = \u0026ldquo;m/s\u0026rdquo; ;\nPRECTMX:long_name = \u0026ldquo;Maximum (convective and large-scale) precipitation rate\u0026rdquo; ;\nPRECTMX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PS(time, lat, lon) ;\nPS:units = \u0026ldquo;Pa\u0026rdquo; ;\nPS:long_name = \u0026ldquo;Surface pressure\u0026rdquo; ;\nPS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat PSL(time, lat, lon) ;\nPSL:units = \u0026ldquo;Pa\u0026rdquo; ;\nPSL:long_name = \u0026ldquo;Sea level pressure\u0026rdquo; ;\nPSL:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat Q(time, lev, lat, lon) ;\nQ:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nQ:long_name = \u0026ldquo;Specific humidity\u0026rdquo; ;\nQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat QC(time, lev, lat, lon) ;\nQC:units = \u0026ldquo;kg/kg/s\u0026rdquo; ;\nQC:long_name = \u0026ldquo;Q tendency - shallow convection LW export\u0026rdquo; ;\nQC:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat QFLX(time, lat, lon) ;\nQFLX:units = \u0026ldquo;kg/m2/s\u0026rdquo; ;\nQFLX:long_name = \u0026ldquo;Surface water flux\u0026rdquo; ;\nQFLX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat QREFHT(time, lat, lon) ;\nQREFHT:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nQREFHT:long_name = \u0026ldquo;Reference height humidity\u0026rdquo; ;\nQREFHT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat QRL(time, lev, lat, lon) ;\nQRL:units = \u0026ldquo;K/s\u0026rdquo; ;\nQRL:long_name = \u0026ldquo;Longwave heating rate\u0026rdquo; ;\nQRL:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat QRS(time, lev, lat, lon) ;\nQRS:units = \u0026ldquo;K/s\u0026rdquo; ;\nQRS:long_name = \u0026ldquo;Solar heating rate\u0026rdquo; ;\nQRS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat RELHUM(time, lev, lat, lon) ;\nRELHUM:units = \u0026ldquo;percent\u0026rdquo; ;\nRELHUM:long_name = \u0026ldquo;Relative humidity\u0026rdquo; ;\nRELHUM:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SHFLX(time, lat, lon) ;\nSHFLX:units = \u0026ldquo;W/m2\u0026rdquo; ;\nSHFLX:long_name = \u0026ldquo;Surface sensible heat flux\u0026rdquo; ;\nSHFLX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SNOWHLND(time, lat, lon) ;\nSNOWHLND:units = \u0026ldquo;m\u0026rdquo; ;\nSNOWHLND:long_name = \u0026ldquo;Water equivalent snow depth\u0026rdquo; ;\nSNOWHLND:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SO4(time, lev, lat, lon) ;\nSO4:units = \u0026ldquo;kg/kg\u0026rdquo; ;\nSO4:long_name = \u0026ldquo;SO4\u0026rdquo; ;\nSO4:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SOLIN(time, lat, lon) ;\nSOLIN:units = \u0026ldquo;W/m2\u0026rdquo; ;\nSOLIN:long_name = \u0026ldquo;Solar insolation\u0026rdquo; ;\nSOLIN:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SRFRAD(time, lat, lon) ;\nSRFRAD:units = \u0026ldquo;W/m2\u0026rdquo; ;\nSRFRAD:long_name = \u0026ldquo;Net radiative flux at surface\u0026rdquo; ;\nSRFRAD:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SSLTOD_v(time, lat, lon) ;\nSSLTOD_v:units = \u0026ldquo;None\u0026rdquo; ;\nSSLTOD_v:long_name = \u0026ldquo;Sea Salt Optical Depth in visible\u0026rdquo; ;\nSSLTOD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SULOD_v(time, lat, lon) ;\nSULOD_v:units = \u0026ldquo;None\u0026rdquo; ;\nSULOD_v:long_name = \u0026ldquo;Sulfate Optical Depth in visible\u0026rdquo; ;\nSULOD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat SWCF(time, lat, lon) ;\nSWCF:units = \u0026ldquo;W/m2\u0026rdquo; ;\nSWCF:long_name = \u0026ldquo;Shortwave cloud forcing\u0026rdquo; ;\nSWCF:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat T(time, lev, lat, lon) ;\nT:units = \u0026ldquo;K\u0026rdquo; ;\nT:long_name = \u0026ldquo;Temperature\u0026rdquo; ;\nT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TAUX(time, lat, lon) ;\nTAUX:units = \u0026ldquo;N/m2\u0026rdquo; ;\nTAUX:long_name = \u0026ldquo;Zonal surface stress\u0026rdquo; ;\nTAUX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TAUY(time, lat, lon) ;\nTAUY:units = \u0026ldquo;N/m2\u0026rdquo; ;\nTAUY:long_name = \u0026ldquo;Meridional surface stress\u0026rdquo; ;\nTAUY:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TGCLDIWP(time, lat, lon) ;\nTGCLDIWP:units = \u0026ldquo;gram/m2\u0026rdquo; ;\nTGCLDIWP:long_name = \u0026ldquo;Total grid-box cloud ice water path\u0026rdquo; ;\nTGCLDIWP:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TGCLDLWP(time, lat, lon) ;\nTGCLDLWP:units = \u0026ldquo;gram/m2\u0026rdquo; ;\nTGCLDLWP:long_name = \u0026ldquo;Total grid-box cloud liquid water path\u0026rdquo; ;\nTGCLDLWP:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TMQ(time, lat, lon) ;\nTMQ:units = \u0026ldquo;kg/m2\u0026rdquo; ;\nTMQ:long_name = \u0026ldquo;Total (vertically integrated) precipitatable water\u0026rdquo; ;\nTMQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TREFHT(time, lat, lon) ;\nTREFHT:units = \u0026ldquo;K\u0026rdquo; ;\nTREFHT:long_name = \u0026ldquo;Reference height temperature\u0026rdquo; ;\nTREFHT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TREFMNAV(time, lat, lon) ;\nTREFMNAV:units = \u0026ldquo;K\u0026rdquo; ;\nTREFMNAV:long_name = \u0026ldquo;Average of TREFHT daily minimum\u0026rdquo; ;\nTREFMNAV:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TREFMXAV(time, lat, lon) ;\nTREFMXAV:units = \u0026ldquo;K\u0026rdquo; ;\nTREFMXAV:long_name = \u0026ldquo;Average of TREFHT daily maximum\u0026rdquo; ;\nTREFMXAV:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TS(time, lat, lon) ;\nTS:units = \u0026ldquo;K\u0026rdquo; ;\nTS:long_name = \u0026ldquo;Surface temperature (radiative)\u0026rdquo; ;\nTS:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TSMN(time, lat, lon) ;\nTSMN:units = \u0026ldquo;K\u0026rdquo; ;\nTSMN:long_name = \u0026ldquo;Minimum surface temperature over output period\u0026rdquo; ;\nTSMN:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat TSMX(time, lat, lon) ;\nTSMX:units = \u0026ldquo;K\u0026rdquo; ;\nTSMX:long_name = \u0026ldquo;Maximum surface temperature over output period\u0026rdquo; ;\nTSMX:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat U(time, lev, lat, lon) ;\nU:units = \u0026ldquo;m/s\u0026rdquo; ;\nU:long_name = \u0026ldquo;Zonal wind\u0026rdquo; ;\nU:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat UU(time, lev, lat, lon) ;\nUU:units = \u0026ldquo;m2/s2\u0026rdquo; ;\nUU:long_name = \u0026ldquo;Zonal velocity squared\u0026rdquo; ;\nUU:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat V(time, lev, lat, lon) ;\nV:units = \u0026ldquo;m/s\u0026rdquo; ;\nV:long_name = \u0026ldquo;Meridional wind\u0026rdquo; ;\nV:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VD01(time, lev, lat, lon) ;\nVD01:units = \u0026ldquo;kg/kg/s\u0026rdquo; ;\nVD01:long_name = \u0026ldquo;Vertical diffusion of Q\u0026rdquo; ;\nVD01:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VOLCOD_v(time, lat, lon) ;\nVOLCOD_v:units = \u0026ldquo;None\u0026rdquo; ;\nVOLCOD_v:long_name = \u0026ldquo;Volcanic Aerosol Optical Depth in visible\u0026rdquo; ;\nVOLCOD_v:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VQ(time, lev, lat, lon) ;\nVQ:units = \u0026ldquo;m/skg/kg\u0026rdquo; ;\nVQ:long_name = \u0026ldquo;Meridional water transport\u0026rdquo; ;\nVQ:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VT(time, lev, lat, lon) ;\nVT:units = \u0026ldquo;K m/s\u0026rdquo; ;\nVT:long_name = \u0026ldquo;Meridional heat transport\u0026rdquo; ;\nVT:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VU(time, lev, lat, lon) ;\nVU:units = \u0026ldquo;m2/s2\u0026rdquo; ;\nVU:long_name = \u0026ldquo;Meridional flux of zonal momentum\u0026rdquo; ;\nVU:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat VV(time, lev, lat, lon) ;\nVV:units = \u0026ldquo;m2/s2\u0026rdquo; ;\nVV:long_name = \u0026ldquo;Meridional velocity squared\u0026rdquo; ;\nVV:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat Z3(time, lev, lat, lon) ;\nZ3:units = \u0026ldquo;m\u0026rdquo; ;\nZ3:long_name = \u0026ldquo;Geopotential Height (above sea level)\u0026rdquo; ;\nZ3:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\nfloat frc_day(time, lat, lon) ;\nfrc_day:units = \u0026ldquo;None\u0026rdquo; ;\nfrc_day:long_name = \u0026ldquo;Portion of time column is lit\u0026rdquo; ;\nfrc_day:cell_method = \u0026ldquo;time: mean\u0026rdquo; ;\n// global attributes:\n:Conventions = \u0026ldquo;CF-1.0\u0026rdquo; ;\n:source = \u0026ldquo;CAM\u0026rdquo; ;\n:case = \u0026ldquo;b30.040b.ES01\u0026rdquo; ;\n:title = \u0026ldquo;b30.040b.ES01 T85_gx1v3 FUTURE_A1 from b30.030b.ES01 year 2000-01-01\u0026rdquo; ;\n:logname = \u0026ldquo;d0301\u0026rdquo; ;\n:host = \u0026quot;\u0026quot; ;\n:Version = \u0026ldquo;$Name: ccsm3_0_vector06 $\u0026rdquo; ;\n:revision_Id = \u0026ldquo;$Id: history.F90,v 1.26.2.40.2.2 2004/02/26 18:14:03 eaton Exp $\u0026rdquo; ;\n:history = \u0026ldquo;Sun Dec 19 07:58:13 2004: ncra -x -v date_written,time_written ./mdps/b30.040b.ES01.cam2.h0.2000-01.nc ./mdps/b30.040b.ES01.cam2.h0.2000-02.nc ./mdps/b30.040b.ES01.cam2.h0.2000-03.nc ./mdps/b30.040b.ES01.cam2.h0.2000-04.nc ./mdps/b30.040b.ES01.cam2.h0.2000-05.nc ./mdps/b30.040b.ES01.cam2.h0.2000-06.nc ./mdps/b30.040b.ES01.cam2.h0.2000-07.nc ./mdps/b30.040b.ES01.cam2.h0.2000-08.nc ./mdps/b30.040b.ES01.cam2.h0.2000-09.nc ./mdps/b30.040b.ES01.cam2.h0.2000-10.nc ./mdps/b30.040b.ES01.cam2.h0.2000-11.nc ./mdps/b30.040b.ES01.cam2.h0.2000-12.nc ./hist/b30.040b.ES01.cam2.h0.2000.nc\u0026rdquo; ;\n#CGCM #접합모형 #CCSM3 #CAM3 #대기순환모형\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/CCSM3%EC%9D%98-CAM3-%EB%8C%80%EA%B8%B0-%EB%AA%A8%ED%98%95%EC%9D%B4-%EB%A7%8C%EB%93%A4%EC%96%B4-%EB%82%B4%EB%8A%94-%EB%B3%80%EC%88%98%EB%93%A4/","section":"글","summary":"CCSM3의 CAM3 대기모형이 출력하는 변수 전체를 netcdf 헤더 그대로 옮긴 참고표.","title":"CCSM3의 CAM3 대기 모형이 만들어 내는 변수들","type":"posts"},{"content":"CCSM3의 POP1 해양 모형이 만들어 내는 변수들\nnetcdf b30.030b.ES01.pop.h.1870 {\ndimensions:\ntime = UNLIMITED ; // (1 currently)\nnlon = 320 ;\nnlat = 384 ;\nz_t = 40 ;\nz_w = 40 ;\nnchar = 256 ;\nd2 = 2 ;\nlat_aux_grid = 395 ;\nmoc_z = 41 ;\nmoc_comp = 1 ;\ntransport_comp = 3 ;\ntransport_reg = 2 ;\nvariables:\ndouble time(time) ;\ntime:long_name = \u0026ldquo;time\u0026rdquo; ;\ntime:units = \u0026ldquo;days since 0000-01-01 00:00:00\u0026rdquo; ;\ntime:bounds = \u0026ldquo;time_bound\u0026rdquo; ;\ntime:calendar = \u0026ldquo;noleap\u0026rdquo; ;\nfloat z_t(z_t) ;\nz_t:long_name = \u0026ldquo;depth from surface to midpoint of layer\u0026rdquo; ;\nz_t:units = \u0026ldquo;centimeters\u0026rdquo; ;\nz_t:positive = \u0026ldquo;down\u0026rdquo; ;\nz_t:valid_min = 500.622f ;\nz_t:valid_max = 537499.9f ;\nfloat z_w(z_w) ;\nz_w:long_name = \u0026ldquo;depth from surface to top of layer\u0026rdquo; ;\nz_w:units = \u0026ldquo;centimeters\u0026rdquo; ;\nz_w:positive = \u0026ldquo;down\u0026rdquo; ;\nz_w:valid_min = 0.f ;\nz_w:valid_max = 524999.9f ;\nfloat ULAT(nlat, nlon) ;\nULAT:long_name = \u0026ldquo;array of u-grid latitudes\u0026rdquo; ;\nULAT:units = \u0026ldquo;degrees_north\u0026rdquo; ;\nfloat ULONG(nlat, nlon) ;\nULONG:long_name = \u0026ldquo;array of u-grid longitudes\u0026rdquo; ;\nULONG:units = \u0026ldquo;degrees_east\u0026rdquo; ;\nfloat TLAT(nlat, nlon) ;\nTLAT:long_name = \u0026ldquo;array of t-grid latitudes\u0026rdquo; ;\nTLAT:units = \u0026ldquo;degrees_north\u0026rdquo; ;\nfloat TLONG(nlat, nlon) ;\nTLONG:long_name = \u0026ldquo;array of t-grid longitudes\u0026rdquo; ;\nTLONG:units = \u0026ldquo;degrees_east\u0026rdquo; ;\nfloat dz(z_t) ;\ndz:long_name = \u0026ldquo;thickness of layer k\u0026rdquo; ;\ndz:units = \u0026ldquo;centimeters\u0026rdquo; ;\ndz:_FillValue = 9.96921e+36f ;\ndz:missing_value = 9.96921e+36f ;\nfloat dzw(z_w) ;\ndzw:long_name = \u0026ldquo;midpoint of k to midpoint of k+1\u0026rdquo; ;\ndzw:units = \u0026ldquo;centimeters\u0026rdquo; ;\ndzw:_FillValue = 9.96921e+36f ;\ndzw:missing_value = 9.96921e+36f ;\nint KMT(nlat, nlon) ;\nKMT:long_name = \u0026ldquo;k Index of Deepest Grid Cell on T Grid\u0026rdquo; ;\nKMT:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nKMT:_FillValue = -2147483647 ;\nKMT:missing_value = -2147483647 ;\nint KMU(nlat, nlon) ;\nKMU:long_name = \u0026ldquo;k Index of Deepest Grid Cell on U Grid\u0026rdquo; ;\nKMU:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nKMU:_FillValue = -2147483647 ;\nKMU:missing_value = -2147483647 ;\nint REGION_MASK(nlat, nlon) ;\nREGION_MASK:long_name = \u0026ldquo;basin index number (signed integers)\u0026rdquo; ;\nREGION_MASK:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nREGION_MASK:_FillValue = -2147483647 ;\nREGION_MASK:missing_value = -2147483647 ;\nfloat UAREA(nlat, nlon) ;\nUAREA:long_name = \u0026ldquo;area of U cells\u0026rdquo; ;\nUAREA:units = \u0026ldquo;centimeter^2\u0026rdquo; ;\nUAREA:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nUAREA:_FillValue = 9.96921e+36f ;\nUAREA:missing_value = 9.96921e+36f ;\nfloat TAREA(nlat, nlon) ;\nTAREA:long_name = \u0026ldquo;area of T cells\u0026rdquo; ;\nTAREA:units = \u0026ldquo;centimeter^2\u0026rdquo; ;\nTAREA:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nTAREA:_FillValue = 9.96921e+36f ;\nTAREA:missing_value = 9.96921e+36f ;\nfloat HU(nlat, nlon) ;\nHU:long_name = \u0026ldquo;ocean depth at U points\u0026rdquo; ;\nHU:units = \u0026ldquo;centimeter\u0026rdquo; ;\nHU:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nHU:_FillValue = 9.96921e+36f ;\nHU:missing_value = 9.96921e+36f ;\nfloat HT(nlat, nlon) ;\nHT:long_name = \u0026ldquo;ocean depth at T points\u0026rdquo; ;\nHT:units = \u0026ldquo;centimeter\u0026rdquo; ;\nHT:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nHT:_FillValue = 9.96921e+36f ;\nHT:missing_value = 9.96921e+36f ;\nfloat DXU(nlat, nlon) ;\nDXU:long_name = \u0026ldquo;x-spacing centered at U points\u0026rdquo; ;\nDXU:units = \u0026ldquo;centimeters\u0026rdquo; ;\nDXU:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nDXU:_FillValue = 9.96921e+36f ;\nDXU:missing_value = 9.96921e+36f ;\nfloat DYU(nlat, nlon) ;\nDYU:long_name = \u0026ldquo;y-spacing centered at U points\u0026rdquo; ;\nDYU:units = \u0026ldquo;centimeters\u0026rdquo; ;\nDYU:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nDYU:_FillValue = 9.96921e+36f ;\nDYU:missing_value = 9.96921e+36f ;\nfloat DXT(nlat, nlon) ;\nDXT:long_name = \u0026ldquo;x-spacing centered at T points\u0026rdquo; ;\nDXT:units = \u0026ldquo;centimeters\u0026rdquo; ;\nDXT:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nDXT:_FillValue = 9.96921e+36f ;\nDXT:missing_value = 9.96921e+36f ;\nfloat DYT(nlat, nlon) ;\nDYT:long_name = \u0026ldquo;y-spacing centered at T points\u0026rdquo; ;\nDYT:units = \u0026ldquo;centimeters\u0026rdquo; ;\nDYT:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nDYT:_FillValue = 9.96921e+36f ;\nDYT:missing_value = 9.96921e+36f ;\nfloat HTN(nlat, nlon) ;\nHTN:long_name = \u0026ldquo;cell widths on North sides of T cell\u0026rdquo; ;\nHTN:units = \u0026ldquo;centimeters\u0026rdquo; ;\nHTN:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nHTN:_FillValue = 9.96921e+36f ;\nHTN:missing_value = 9.96921e+36f ;\nfloat HTE(nlat, nlon) ;\nHTE:long_name = \u0026ldquo;cell widths on East sides of T cell\u0026rdquo; ;\nHTE:units = \u0026ldquo;centimeters\u0026rdquo; ;\nHTE:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nHTE:_FillValue = 9.96921e+36f ;\nHTE:missing_value = 9.96921e+36f ;\nfloat HUS(nlat, nlon) ;\nHUS:long_name = \u0026ldquo;cell widths on South sides of U cell\u0026rdquo; ;\nHUS:units = \u0026ldquo;centimeters\u0026rdquo; ;\nHUS:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nHUS:_FillValue = 9.96921e+36f ;\nHUS:missing_value = 9.96921e+36f ;\nfloat HUW(nlat, nlon) ;\nHUW:long_name = \u0026ldquo;cell widths on West sides of U cell\u0026rdquo; ;\nHUW:units = \u0026ldquo;centimeters\u0026rdquo; ;\nHUW:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nHUW:_FillValue = 9.96921e+36f ;\nHUW:missing_value = 9.96921e+36f ;\nfloat ANGLE(nlat, nlon) ;\nANGLE:long_name = \u0026ldquo;angle grid makes with latitude line\u0026rdquo; ;\nANGLE:units = \u0026ldquo;radians\u0026rdquo; ;\nANGLE:coordinates = \u0026ldquo;ULONG ULAT\u0026rdquo; ;\nANGLE:_FillValue = 9.96921e+36f ;\nANGLE:missing_value = 9.96921e+36f ;\nfloat ANGLET(nlat, nlon) ;\nANGLET:long_name = \u0026ldquo;angle grid makes with latitude line on T grid\u0026rdquo; ;\nANGLET:units = \u0026ldquo;radians\u0026rdquo; ;\nANGLET:coordinates = \u0026ldquo;TLONG TLAT\u0026rdquo; ;\nANGLET:_FillValue = 9.96921e+36f ;\nANGLET:missing_value = 9.96921e+36f ;\ndouble days_in_norm_year ;\ndays_in_norm_year:long_name = \u0026ldquo;Calendar Length\u0026rdquo; ;\ndays_in_norm_year:units = \u0026ldquo;days\u0026rdquo; ;\ndouble grav ;\ngrav:long_name = \u0026ldquo;Acceleration Due to Gravity\u0026rdquo; ;\ngrav:units = \u0026ldquo;centimeter/s^2\u0026rdquo; ;\ndouble omega ;\nomega:long_name = \u0026ldquo;Earths Angular Velocity\u0026rdquo; ;\nomega:units = \u0026ldquo;1/second\u0026rdquo; ;\ndouble radius ;\nradius:long_name = \u0026ldquo;Earths Radius\u0026rdquo; ;\nradius:units = \u0026ldquo;centimeters\u0026rdquo; ;\ndouble cp_sw ;\ncp_sw:long_name = \u0026ldquo;Specific Heat of Sea Water\u0026rdquo; ;\ncp_sw:units = \u0026ldquo;erg/g/K\u0026rdquo; ;\ndouble sound ;\nsound:long_name = \u0026ldquo;Speed of Sound\u0026rdquo; ;\nsound:units = \u0026ldquo;centimeter/s\u0026rdquo; ;\ndouble vonkar ;\nvonkar:long_name = \u0026ldquo;von Karman Constant\u0026rdquo; ;\ndouble cp_air ;\ncp_air:long_name = \u0026ldquo;Heat Capacity of Air\u0026rdquo; ;\ncp_air:units = \u0026ldquo;joule/kg/degK\u0026rdquo; ;\ndouble rho_air ;\nrho_air:long_name = \u0026ldquo;Ambient Air Density\u0026rdquo; ;\nrho_air:units = \u0026ldquo;kg/m^3\u0026rdquo; ;\ndouble rho_sw ;\nrho_sw:long_name = \u0026ldquo;Density of Sea Water\u0026rdquo; ;\nrho_sw:units = \u0026ldquo;gram/centimeter^3\u0026rdquo; ;\ndouble rho_fw ;\nrho_fw:long_name = \u0026ldquo;Density of Fresh Water\u0026rdquo; ;\nrho_fw:units = \u0026ldquo;gram/centimeter^3\u0026rdquo; ;\ndouble stefan_boltzmann ;\nstefan_boltzmann:long_name = \u0026ldquo;Stefan-Boltzman Constant\u0026rdquo; ;\nstefan_boltzmann:units = \u0026ldquo;watt/m^2/degK^4\u0026rdquo; ;\ndouble latent_heat_vapor ;\nlatent_heat_vapor:long_name = \u0026ldquo;Latent Heat of Vaporization\u0026rdquo; ;\nlatent_heat_vapor:units = \u0026ldquo;erg/g\u0026rdquo; ;\ndouble latent_heat_fusion ;\nlatent_heat_fusion:long_name = \u0026ldquo;Latent Heat of Fusion\u0026rdquo; ;\nlatent_heat_fusion:units = \u0026ldquo;erg/g\u0026rdquo; ;\ndouble ocn_ref_salinity ;\nocn_ref_salinity:long_name = \u0026ldquo;Ocean Reference Salinity\u0026rdquo; ;\nocn_ref_salinity:units = \u0026ldquo;g/kg\u0026rdquo; ;\ndouble sea_ice_salinity ;\nsea_ice_salinity:long_name = \u0026ldquo;Salinity of Sea Ice\u0026rdquo; ;\nsea_ice_salinity:units = \u0026ldquo;g/kg\u0026rdquo; ;\ndouble T0_Kelvin ;\nT0_Kelvin:long_name = \u0026ldquo;Zero Point for Celsius\u0026rdquo; ;\nT0_Kelvin:units = \u0026ldquo;degK\u0026rdquo; ;\ndouble salt_to_ppt ;\nsalt_to_ppt:long_name = \u0026ldquo;Convert Salt in gram/gram to g/kg\u0026rdquo; ;\ndouble ppt_to_salt ;\nppt_to_salt:long_name = \u0026ldquo;Convert Salt in g/kg to gram/gram\u0026rdquo; ;\ndouble mass_to_Sv ;\nmass_to_Sv:long_name = \u0026ldquo;Convert Mass Flux to Sverdrups\u0026rdquo; ;\ndouble heat_to_PW ;\nheat_to_PW:long_name = \u0026ldquo;Convert Heat Flux to Petawatts\u0026rdquo; ;\ndouble salt_to_Svppt ;\nsalt_to_Svppt:long_name = \u0026ldquo;Convert Salt Flux to Sverdrups*g/kg\u0026rdquo; ;\ndouble salt_to_mmday ;\nsalt_to_mmday:long_name = \u0026ldquo;Convert Salt to Water (millimeters/day)\u0026rdquo; ;\ndouble momentum_factor ;\nmomentum_factor:long_name = \u0026ldquo;Convert Windstress to Velocity Flux\u0026rdquo; ;\ndouble hflux_factor ;\nhflux_factor:long_name = \u0026ldquo;Convert Heat and Solar Flux to Temperature Flux\u0026rdquo; ;\ndouble fwflux_factor ;\nfwflux_factor:long_name = \u0026ldquo;Convert Net Fresh Water Flux to Salt Flux (in model units)\u0026rdquo; ;\ndouble salinity_factor ;\ndouble sflux_factor ;\nsflux_factor:long_name = \u0026ldquo;Convert Salt Flux to Salt Flux (in model units)\u0026rdquo; ;\ndouble nsurface_t ;\nnsurface_t:long_name = \u0026ldquo;Number of Ocean T Points at Surface\u0026rdquo; ;\ndouble nsurface_u ;\nnsurface_u:long_name = \u0026ldquo;Number of Ocean U Points at Surface\u0026rdquo; ;\ndouble time_bound(time, d2) ;\ntime_bound:long_name = \u0026ldquo;boundaries for time-averaging interval\u0026rdquo; ;\ntime_bound:units = \u0026ldquo;days since 0000-01-01 00:00:00\u0026rdquo; ;\nfloat SHF(time, nlat, nlon) ;\nSHF:long_name = \u0026ldquo;Total Surface Heat Flux, Including SW\u0026rdquo; ;\nSHF:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nSHF:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSHF:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSHF:_FillValue = 9.96921e+36f ;\nSHF:missing_value = 9.96921e+36f ;\nfloat SHF_QSW(time, nlat, nlon) ;\nSHF_QSW:long_name = \u0026ldquo;Solar Short-Wave Heat Flux\u0026rdquo; ;\nSHF_QSW:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nSHF_QSW:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSHF_QSW:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSHF_QSW:_FillValue = 9.96921e+36f ;\nSHF_QSW:missing_value = 9.96921e+36f ;\nfloat SFWF(time, nlat, nlon) ;\nSFWF:long_name = \u0026ldquo;Virtual Salt Flux in FW Flux formulation\u0026rdquo; ;\nSFWF:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nSFWF:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSFWF:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSFWF:_FillValue = 9.96921e+36f ;\nSFWF:missing_value = 9.96921e+36f ;\nfloat PREC_F(time, nlat, nlon) ;\nPREC_F:long_name = \u0026ldquo;Precipitation Flux from Cpl (rain+snow)\u0026rdquo; ;\nPREC_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nPREC_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nPREC_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nPREC_F:_FillValue = 9.96921e+36f ;\nPREC_F:missing_value = 9.96921e+36f ;\nfloat SNOW_F(time, nlat, nlon) ;\nSNOW_F:long_name = \u0026ldquo;Snow Flux from Coupler\u0026rdquo; ;\nSNOW_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nSNOW_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSNOW_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSNOW_F:_FillValue = 9.96921e+36f ;\nSNOW_F:missing_value = 9.96921e+36f ;\nfloat EVAP_F(time, nlat, nlon) ;\nEVAP_F:long_name = \u0026ldquo;Evaporation Flux from Coupler\u0026rdquo; ;\nEVAP_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nEVAP_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nEVAP_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nEVAP_F:_FillValue = 9.96921e+36f ;\nEVAP_F:missing_value = 9.96921e+36f ;\nfloat MELT_F(time, nlat, nlon) ;\nMELT_F:long_name = \u0026ldquo;Melt Flux from Coupler\u0026rdquo; ;\nMELT_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nMELT_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nMELT_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nMELT_F:_FillValue = 9.96921e+36f ;\nMELT_F:missing_value = 9.96921e+36f ;\nfloat ROFF_F(time, nlat, nlon) ;\nROFF_F:long_name = \u0026ldquo;Runoff Flux from Coupler\u0026rdquo; ;\nROFF_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nROFF_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nROFF_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nROFF_F:_FillValue = 9.96921e+36f ;\nROFF_F:missing_value = 9.96921e+36f ;\nfloat SALT_F(time, nlat, nlon) ;\nSALT_F:long_name = \u0026ldquo;Salt Flux from Coupler (kg of salt/m^2/s)\u0026rdquo; ;\nSALT_F:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nSALT_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSALT_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSALT_F:_FillValue = 9.96921e+36f ;\nSALT_F:missing_value = 9.96921e+36f ;\nfloat SENH_F(time, nlat, nlon) ;\nSENH_F:long_name = \u0026ldquo;Sensible Heat Flux from Coupler\u0026rdquo; ;\nSENH_F:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nSENH_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSENH_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSENH_F:_FillValue = 9.96921e+36f ;\nSENH_F:missing_value = 9.96921e+36f ;\nfloat LWUP_F(time, nlat, nlon) ;\nLWUP_F:long_name = \u0026ldquo;Longwave Heat Flux (up) from Coupler\u0026rdquo; ;\nLWUP_F:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nLWUP_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nLWUP_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nLWUP_F:_FillValue = 9.96921e+36f ;\nLWUP_F:missing_value = 9.96921e+36f ;\nfloat LWDN_F(time, nlat, nlon) ;\nLWDN_F:long_name = \u0026ldquo;Longwave Heat Flux (dn) from Coupler\u0026rdquo; ;\nLWDN_F:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nLWDN_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nLWDN_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nLWDN_F:_FillValue = 9.96921e+36f ;\nLWDN_F:missing_value = 9.96921e+36f ;\nfloat MELTH_F(time, nlat, nlon) ;\nMELTH_F:long_name = \u0026ldquo;Melt Heat Flux from Coupler\u0026rdquo; ;\nMELTH_F:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nMELTH_F:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nMELTH_F:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nMELTH_F:_FillValue = 9.96921e+36f ;\nMELTH_F:missing_value = 9.96921e+36f ;\nfloat SSH(time, nlat, nlon) ;\nSSH:long_name = \u0026ldquo;Sea Surface Height\u0026rdquo; ;\nSSH:units = \u0026ldquo;centimeter\u0026rdquo; ;\nSSH:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nSSH:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSSH:_FillValue = 9.96921e+36f ;\nSSH:missing_value = 9.96921e+36f ;\nfloat TAUX(time, nlat, nlon) ;\nTAUX:long_name = \u0026ldquo;Windstress in grid-x direction\u0026rdquo; ;\nTAUX:units = \u0026ldquo;dyne/centimeter^2\u0026rdquo; ;\nTAUX:coordinates = \u0026ldquo;ULONG ULAT time\u0026rdquo; ;\nTAUX:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nTAUX:_FillValue = 9.96921e+36f ;\nTAUX:missing_value = 9.96921e+36f ;\nfloat TAUY(time, nlat, nlon) ;\nTAUY:long_name = \u0026ldquo;Windstress in grid-y direction\u0026rdquo; ;\nTAUY:units = \u0026ldquo;dyne/centimeter^2\u0026rdquo; ;\nTAUY:coordinates = \u0026ldquo;ULONG ULAT time\u0026rdquo; ;\nTAUY:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nTAUY:_FillValue = 9.96921e+36f ;\nTAUY:missing_value = 9.96921e+36f ;\nfloat SU(time, nlat, nlon) ;\nSU:long_name = \u0026ldquo;Vertically Integrated Velocity in grid-x direction\u0026rdquo; ;\nSU:units = \u0026ldquo;centimeter^2/s\u0026rdquo; ;\nSU:coordinates = \u0026ldquo;ULONG ULAT time\u0026rdquo; ;\nSU:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSU:_FillValue = 9.96921e+36f ;\nSU:missing_value = 9.96921e+36f ;\nfloat SV(time, nlat, nlon) ;\nSV:long_name = \u0026ldquo;Vertically Integrated Velocity in grid-y direction\u0026rdquo; ;\nSV:units = \u0026ldquo;centimeter^2/s\u0026rdquo; ;\nSV:coordinates = \u0026ldquo;ULONG ULAT time\u0026rdquo; ;\nSV:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nSV:_FillValue = 9.96921e+36f ;\nSV:missing_value = 9.96921e+36f ;\nfloat HMXL(time, nlat, nlon) ;\nHMXL:long_name = \u0026ldquo;Mixed-Layer Depth\u0026rdquo; ;\nHMXL:units = \u0026ldquo;centimeter\u0026rdquo; ;\nHMXL:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nHMXL:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nHMXL:_FillValue = 9.96921e+36f ;\nHMXL:missing_value = 9.96921e+36f ;\nfloat XMXL(time, nlat, nlon) ;\nXMXL:long_name = \u0026ldquo;Maximum Mixed-Layer Depth\u0026rdquo; ;\nXMXL:units = \u0026ldquo;centimeter\u0026rdquo; ;\nXMXL:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nXMXL:cell_methods = \u0026ldquo;time: maximum\u0026rdquo; ;\nXMXL:_FillValue = 9.96921e+36f ;\nXMXL:missing_value = 9.96921e+36f ;\nfloat TMXL(time, nlat, nlon) ;\nTMXL:long_name = \u0026ldquo;Minimum Mixed-Layer Depth\u0026rdquo; ;\nTMXL:units = \u0026ldquo;centimeter\u0026rdquo; ;\nTMXL:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nTMXL:cell_methods = \u0026ldquo;time: minimum\u0026rdquo; ;\nTMXL:_FillValue = 9.96921e+36f ;\nTMXL:missing_value = 9.96921e+36f ;\nfloat HBLT(time, nlat, nlon) ;\nHBLT:long_name = \u0026ldquo;Boundary-Layer Depth\u0026rdquo; ;\nHBLT:units = \u0026ldquo;centimeter\u0026rdquo; ;\nHBLT:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nHBLT:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nHBLT:_FillValue = 9.96921e+36f ;\nHBLT:missing_value = 9.96921e+36f ;\nfloat XBLT(time, nlat, nlon) ;\nXBLT:long_name = \u0026ldquo;Maximum Boundary-Layer Depth\u0026rdquo; ;\nXBLT:units = \u0026ldquo;centimeter\u0026rdquo; ;\nXBLT:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nXBLT:cell_methods = \u0026ldquo;time: maximum\u0026rdquo; ;\nXBLT:_FillValue = 9.96921e+36f ;\nXBLT:missing_value = 9.96921e+36f ;\nfloat TBLT(time, nlat, nlon) ;\nTBLT:long_name = \u0026ldquo;Minimum Boundary-Layer Depth\u0026rdquo; ;\nTBLT:units = \u0026ldquo;centimeter\u0026rdquo; ;\nTBLT:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nTBLT:cell_methods = \u0026ldquo;time: minimum\u0026rdquo; ;\nTBLT:_FillValue = 9.96921e+36f ;\nTBLT:missing_value = 9.96921e+36f ;\nfloat RESID_T(time, nlat, nlon) ;\nRESID_T:long_name = \u0026ldquo;Free-Surface Residual Flux (T)\u0026rdquo; ;\nRESID_T:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nRESID_T:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nRESID_T:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nRESID_T:_FillValue = 9.96921e+36f ;\nRESID_T:missing_value = 9.96921e+36f ;\nfloat RESID_S(time, nlat, nlon) ;\nRESID_S:long_name = \u0026ldquo;Free-Surface Residual Flux (S)\u0026rdquo; ;\nRESID_S:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nRESID_S:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nRESID_S:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nRESID_S:_FillValue = 9.96921e+36f ;\nRESID_S:missing_value = 9.96921e+36f ;\nfloat FW(time, nlat, nlon) ;\nFW:long_name = \u0026ldquo;Freshwater Flux\u0026rdquo; ;\nFW:units = \u0026ldquo;centimeter/s\u0026rdquo; ;\nFW:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nFW:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nFW:_FillValue = 9.96921e+36f ;\nFW:missing_value = 9.96921e+36f ;\nfloat TFW_T(time, nlat, nlon) ;\nTFW_T:long_name = \u0026ldquo;T flux due to freshwater flux\u0026rdquo; ;\nTFW_T:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nTFW_T:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nTFW_T:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nTFW_T:_FillValue = 9.96921e+36f ;\nTFW_T:missing_value = 9.96921e+36f ;\nfloat TFW_S(time, nlat, nlon) ;\nTFW_S:long_name = \u0026ldquo;S flux due to freshwater flux (kg of salt/m^2/s)\u0026rdquo; ;\nTFW_S:units = \u0026ldquo;kg/m^2/s\u0026rdquo; ;\nTFW_S:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nTFW_S:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nTFW_S:_FillValue = 9.96921e+36f ;\nTFW_S:missing_value = 9.96921e+36f ;\nfloat BSF(time, nlat, nlon) ;\nBSF:long_name = \u0026ldquo;Diagnostic barotropic streamfunction\u0026rdquo; ;\nBSF:units = \u0026ldquo;Sv\u0026rdquo; ;\nBSF:coordinates = \u0026ldquo;ULONG ULAT time\u0026rdquo; ;\nBSF:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nBSF:_FillValue = 9.96921e+36f ;\nBSF:missing_value = 9.96921e+36f ;\nfloat QSW_HTP(time, nlat, nlon) ;\nQSW_HTP:long_name = \u0026ldquo;Solar Short-Wave Heat Flux in top layer\u0026rdquo; ;\nQSW_HTP:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nQSW_HTP:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nQSW_HTP:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nQSW_HTP:_FillValue = 9.96921e+36f ;\nQSW_HTP:missing_value = 9.96921e+36f ;\nfloat QSW_HBL(time, nlat, nlon) ;\nQSW_HBL:long_name = \u0026ldquo;Solar Short-Wave Heat Flux in bndry layer\u0026rdquo; ;\nQSW_HBL:units = \u0026ldquo;watt/m^2\u0026rdquo; ;\nQSW_HBL:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nQSW_HBL:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nQSW_HBL:_FillValue = 9.96921e+36f ;\nQSW_HBL:missing_value = 9.96921e+36f ;\nfloat ADVT(time, nlat, nlon) ;\nADVT:long_name = \u0026ldquo;Vertically-Integrated T Advection Tendency\u0026rdquo; ;\nADVT:units = \u0026ldquo;centimeter degC/s\u0026rdquo; ;\nADVT:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nADVT:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nADVT:_FillValue = 9.96921e+36f ;\nADVT:missing_value = 9.96921e+36f ;\nfloat ADVS(time, nlat, nlon) ;\nADVS:long_name = \u0026ldquo;Vertically-Integrated S Advection Tendency\u0026rdquo; ;\nADVS:units = \u0026ldquo;centimeter gram/kilogram/s\u0026rdquo; ;\nADVS:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nADVS:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nADVS:_FillValue = 9.96921e+33f ;\nADVS:missing_value = 9.96921e+33f ;\nfloat HDIFT(time, nlat, nlon) ;\nHDIFT:long_name = \u0026ldquo;Vertically-Integrated Horz Diff T tendency\u0026rdquo; ;\nHDIFT:units = \u0026ldquo;centimeter degC/s\u0026rdquo; ;\nHDIFT:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nHDIFT:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nHDIFT:_FillValue = 9.96921e+36f ;\nHDIFT:missing_value = 9.96921e+36f ;\nfloat HDIFS(time, nlat, nlon) ;\nHDIFS:long_name = \u0026ldquo;Vertically-Integrated Horz Diff S tendency\u0026rdquo; ;\nHDIFS:units = \u0026ldquo;centimeter gram/kilogram/s\u0026rdquo; ;\nHDIFS:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nHDIFS:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nHDIFS:_FillValue = 9.96921e+33f ;\nHDIFS:missing_value = 9.96921e+33f ;\nfloat QFLUX(time, nlat, nlon) ;\nQFLUX:long_name = \u0026ldquo;Internal Ocean Heat Flux Due to Ice Formation; heat of fusion \u0026gt; 0 or ice-melting potential \u0026lt; 0\u0026rdquo; ;\nQFLUX:units = \u0026ldquo;Watts/meter^2\u0026rdquo; ;\nQFLUX:coordinates = \u0026ldquo;TLONG TLAT time\u0026rdquo; ;\nQFLUX:_FillValue = 9.96921e+36f ;\nQFLUX:missing_value = 9.96921e+36f ;\nfloat lat_aux_grid(lat_aux_grid) ;\nlat_aux_grid:long_name = \u0026ldquo;latitude grid for transport diagnostics\u0026rdquo; ;\nlat_aux_grid:units = \u0026ldquo;degrees_north\u0026rdquo; ;\nlat_aux_grid:valid_min = -9.96921e+36f ;\nfloat moc_z(moc_z) ;\nmoc_z:long_name = \u0026ldquo;depth from surface to top of layer\u0026rdquo; ;\nmoc_z:units = \u0026ldquo;centimeters\u0026rdquo; ;\nmoc_z:positive = \u0026ldquo;down\u0026rdquo; ;\nmoc_z:valid_min = 0.f ;\nmoc_z:valid_max = 549999.9f ;\nchar moc_components(moc_comp, nchar) ;\nmoc_components:long_name = \u0026ldquo;MOC component names\u0026rdquo; ;\nchar transport_components(transport_comp, nchar) ;\ntransport_components:long_name = \u0026ldquo;T,S transport components\u0026rdquo; ;\nchar transport_regions(transport_reg, nchar) ;\ntransport_regions:long_name = \u0026ldquo;regions for all transport diagnostics\u0026rdquo; ;\nfloat MOC(time, transport_reg, moc_comp, moc_z, lat_aux_grid) ;\nMOC:long_name = \u0026ldquo;Meridional Overturning Circulation\u0026rdquo; ;\nMOC:units = \u0026ldquo;Sverdrups\u0026rdquo; ;\nMOC:coordinates = \u0026ldquo;lat_aux_grid moc_z moc_components transport_regions time\u0026rdquo; ;\nMOC:_FillValue = 9.96921e+36f ;\nMOC:missing_value = 9.96921e+36f ;\nfloat N_HEAT(time, transport_reg, transport_comp, lat_aux_grid) ;\nN_HEAT:long_name = \u0026ldquo;Northward Heat Transport\u0026rdquo; ;\nN_HEAT:units = \u0026ldquo;Pwatt\u0026rdquo; ;\nN_HEAT:coordinates = \u0026ldquo;lat_aux_grid transport_components transport_regions time\u0026rdquo; ;\nN_HEAT:_FillValue = 9.96921e+36f ;\nN_HEAT:missing_value = 9.96921e+36f ;\nfloat N_SALT(time, transport_reg, transport_comp, lat_aux_grid) ;\nN_SALT:long_name = \u0026ldquo;Northward Salt Transport\u0026rdquo; ;\nN_SALT:units = \u0026ldquo;gram centimeter^3/kg/s\u0026rdquo; ;\nN_SALT:coordinates = \u0026ldquo;lat_aux_grid transport_components transport_regions time\u0026rdquo; ;\nN_SALT:_FillValue = 9.96921e+36f ;\nN_SALT:missing_value = 9.96921e+36f ;\nfloat UVEL(time, z_t, nlat, nlon) ;\nUVEL:long_name = \u0026ldquo;Velocity in grid-x direction\u0026rdquo; ;\nUVEL:units = \u0026ldquo;centimeter/s\u0026rdquo; ;\nUVEL:coordinates = \u0026ldquo;ULONG ULAT z_t time\u0026rdquo; ;\nUVEL:cell_methods = \u0026ldquo;time: mean\u0026rdquo; ;\nUVEL:_FillValue\n#해양순환모형 #CGCM #접합모형 #CCSM3 #POP1\n","date":"2006년 4월 17일","externalUrl":null,"permalink":"/2006/04/CCSM3%EC%9D%98-POP1-%ED%95%B4%EC%96%91-%EB%AA%A8%ED%98%95%EC%9D%B4-%EB%A7%8C%EB%93%A4%EC%96%B4-%EB%82%B4%EB%8A%94-%EB%B3%80%EC%88%98%EB%93%A4/","section":"글","summary":"CCSM3의 POP1 해양모형이 출력하는 변수 전체를 netcdf 헤더 그대로 옮긴 참고표. 변수명·단위·차원을 찾아볼 때 씁니다.","title":"CCSM3의 POP1 해양 모형이 만들어 내는 변수들","type":"posts"},{"content":"아직도 잊을 수 없는 그날의 감동을 되새기며\u0026hellip;\n2002년 월드컵 당시 가장 재미있었던 경기인\n대 이탈리아전 (대전)에서 경기시작 전에 찍은 것 입니다.\n몇시간의 후의 감동을 전혀 알지 못하고 있는 표정이죠 ^-^\u0026hellip;\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%82%AC%EC%A7%842002%EC%9B%94%EB%93%9C%EC%BB%B5%EC%9D%B4%ED%83%88%EB%A6%AC%EC%95%84%EC%A0%84/","section":"글","summary":"2002년 월드컵 이탈리아전, 경기 시작 전에 찍은 사진.","title":"사진:2002월드컵(이탈리아전)","type":"posts"},{"content":"","date":"2006년 3월 15일","externalUrl":null,"permalink":"/tags/%EC%9E%A1%EB%AC%B8/","section":"태그","summary":"","title":"잡문","type":"tags"},{"content":"저의 박사학위(\u0026lsquo;99) 논문 입니다.\n전지구 지구온난화 예측 및 해수면 변화 예측에 대하여\n한반도 지역 상세 결과를 도출 한 것은 이 논문이 처음인 것으로 알고 있으며,\n이 결과는 JMSJ(일본기상학회지,Vol80.No6.,2002)에 게재되었습니다.\n**Sea Level Change due to Global Warming in the Northwestern Pacific\n북서태평양에서의 지구온난화에 의한 해수면 변화 -** 성균관대학교 토목환경공학과(사회환경시스템공학과)\n해안 및 해양공학 전공\n김동훈\n발표 자료 (지금은 보잘것 없지만, 그 당시(1999)만해도 인터넷에 의한 발표와 플래쉬 사용은 흔하지 않았죠. ^^)\nIntroduction (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter1/index.html — 링크 소실) - 진행: 플래쉬의 지구버튼을 누르세요. Coupled Model Characteristics (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter2/index.html — 링크 소실) - 진행: 화면 아래의 앞뒤 버튼을 누르세요. Experimental Implementation (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter3/index.html — 링크 소실) - 진행: 화면 아래의 앞뒤 버튼을 누르세요. Global Warming (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter4/index.html — 링크 소실) - 진행: 화면 아래의 앞뒤 버튼을 누르세요. Sea Level Change (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter5/index.html — 링크 소실) - 진행: 화면 아래의 앞뒤 버튼을 누르세요. Conclusion (http://data.dhkim.info/www/research/misc/my_dissertation/Chapter6/index.html — 링크 소실) - 진행: 플래쉬에서 지구버튼을 누르세요. Appendix 논문 원본 - http://data.dhkim.info/www/research_topics/my_papers/KDHthesis.ps.gz (http://data.dhkim.info/www/research_topics/my_papers/KDHthesis.ps.gz — 링크 소실) (13.7MB)\nPDF버전 : http://data.dhkim.info/www/research_topics/my_papers/KDHthesis.990709.last.pdf (http://data.dhkim.info/www/research_topics/my_papers/KDHthesis.990709.last.pdf — 링크 소실) (23.3MB)\n참고) 1999년도에 작성된 것이라 여러가지 링크가 깨어진 부분이 있습니다.\n특히, 그 당시에 제가 가지고 있던 도메인인 \u0026ldquo;www.nubi.net\u0026quot;으로의 연결은\n모두 잘못된 것이니 양해 바랍니다.\n#지구온난화 #기후변화 #CGCM #Climate Change #NCAR CCSM #박사학위 논문 #접합모형\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/Sea-Level-Change-due-to-Global-Warming-in-the-Northwestern-Pacific/","section":"글","summary":"1999년 박사학위 논문. 지구온난화에 따른 북서태평양 해수면 변화를 한반도 주변까지 상세화해 예측했고, 결과는 일본기상학회지에 실렸습니다.","title":"Sea Level Change due to Global Warming in the Northwestern Pacific","type":"posts"},{"content":" Sea Surface Temperature \u0026amp; Salinity Animations using Povray\n(http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/Povray/esTl01.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/Povray/esTl01_2.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/Povray/esTl01n.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/Povray/esSl01_2.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/Povray/esSl01n.mpg — 링크 소실)\nAnimations using TDV (The Data Visualizer - Wavefront Inc.)\nsst.mpg (http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/TDV/from.CHKim/sst.mpg — 링크 소실) (6.08MB) - 이 애니메이션은 일본에 계신분에게 제공한 것이라 제목에 East Sea가 아니라 Japan Sea로 되어 있는 점 양해 바랍니다. sss.mpg (http://data.dhkim.info/www/research_topics/East_Sea/TS/Animations/TDV/from.CHKim/sss.mpg — 링크 소실) (5.46MB) - 이 애니메이션은 일본에 계신분에게 제공한 것이라 제목에 East Sea가 아니라 Japan Sea로 되어 있는 점 양해 바랍니다. 소스 코드TS by Povray (http://data.dhkim.info/www/research_topics/East_Sea/TS/Sources/ts_by_Povray.zip — 링크 소실)(인증필요) - 애니메이션에 사용된 Povray 데이타 및 프로그램들\nCurrents Animations using GMT\n(http://data.dhkim.info/www/research_topics/East_Sea/UV_and_SF/Animations/GMT/sfuv.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/UV_and_SF/Animations/GMT/sfuv_2.mpg — 링크 소실)\nLarge Size (3,540KB) Small Size (730KB)\nDrift Simulation Animations using Povray\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/A103.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/A109.mpg — 링크 소실)\n(A103.mpg: 3,332KB) (A109.mpg: 3,338KB)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/B103.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/B109.mpg — 링크 소실)\n(B103.mpg: 3,287KB) (B109.mpg: 2,857KB)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/F103.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/F109.mpg — 링크 소실)\n(F103.mpg: 2,972KB) (F109.mpg: 2,555KB)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/I103.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/Povray/I109.mpg — 링크 소실)\n(I103.mpg: 3,317KB) (I109.mpg: 3,452KB)\nAnimations using TAV (The Advanced Visualizer - Wavefront Inc.)\nA1.mpg (http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/TAV/A1.mpg — 링크 소실) (3.20MB) esA1.mpg (http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Animations/TAV/esA1.mpg — 링크 소실) (1.85MB) 소스 코드 drift model (http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Sources/drift_model.zip — 링크 소실)(인증필요) - 추적자에 사용된 모형 소스 drift by Povray (http://data.dhkim.info/www/research_topics/East_Sea/Drifts/Sources/drift_by_Povray.zip — 링크 소실)(인증필요) - 추적자 애니메이션에 사용된 Povray 데이타 #동해 #Scientific Visualization #과학가시화 #수치모형 #Numerical Models #Ocean Circulation #East Sea #무치모델\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EB%8F%99%ED%95%B4%EC%88%9C%ED%99%98-%EB%AA%A8%EC%82%AC/","section":"글","summary":"동해 순환 모의 결과. 표층 수온·염분과 연직 단면 애니메이션을 Povray와 TDV로 만들었습니다. 원본 파일은 소실되었습니다.","title":"동해순환 모사","type":"posts"},{"content":" Temperature Animations using TDV\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/TS/Animations/TDV/ts.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/TS/Animations/TDV/tsH1.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/TS/Animations/TDV/tsH2.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/TS/Animations/TDV/tsV1.mpg — 링크 소실)\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/TS/Animations/TDV/tsV1.mpg — 링크 소실)\nCurrents Animation using TDV (size: 9.44MB)\n(http://data.dhkim.info/www/research_topics/Yellow_Sea/UV_and_SF/Animations/TDV/from.HCLee/uvwb.mpg — 링크 소실)\n#Scientific Visualization #과학가시화 #수치모델 #수치모형 #Numerical Models #Ocean Circulation #Yellow Sea #해양순환 #황해\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%ED%99%A9%ED%95%B4%EC%88%9C%ED%99%98-%EB%AA%A8%EC%82%AC/","section":"글","summary":"황해 순환 모의 결과. 수온·염분 애니메이션을 만들어 두었으나 원본 파일은 서버와 함께 사라졌습니다.","title":"황해순환 모사","type":"posts"},{"content":"원본링크 : http://www-ocean.tamu.edu/~baum/ocean_models.html\n세계적으로 연구되고 있는 해양순환모형을 인터넷의 WWW를 이용하여 사용가능한 모형들에 대해서 아는데로 적어보았다. 아직 알려지지 않은 해양 순환모형들도 많이 있지만 여기에 열거하는 모형들은 primitive equation에서부터 quasi-geostrophic에 이르기 까지 다양하게 열거하고 있으며 수직적으로는 level모형에서 layer모형까지, 적용 범위로는 지역적인 것에서 부터 전 지구에 이르기 까지, CPU의 갯수로는 하나에서 부터 다중 프로세서까지 열거하고 있으며 앞으로 계속 새로운 소식을 추가할 예정이다.\nACOM - Australian Community Ocean Model : \u0026lt;emmg height=\u0026quot;60\u0026quot; width=\u0026quot;75\u0026quot; src=\u0026quot;http://dhkim.info/blog/owner/entry/edit/images/ACOM_logo.gif\u0026quot;\u0026gt; The Australian Community Ocean Model (ACOM) is a synthesis of Australian enhancements and additions to the GFDL Modular Ocean Model (MOM). It is a collaborative project between interested ocean researchers in Australia from many organisations. ACOM consists of the latest MOM code and database files as modified by Australian researchers. A number of different grids will become available as new model versions are submitted to the project.: ACOM1 : [http://www.marine.csiro.au/acom/get_acom1.html]: Scott Power\u0026rsquo;s original enhanced tropical resolution global model, based on MOM1, and developed at the Bureau of Meteorology Research Centre (BMRC).: ACOM2.0_et : [http://www.marine.csiro.au/acom/get_acom2.0_et.html]: Tthe ACOM1 enhanced tropical grid global model updated so that it is now based on MOM2.0, and with further enhancements. Developed by Andreas Schiller and Peter McIntosh at the CSIRO Division of Marine Research. For further details, see the detailed description of ACOM2.0 . This includes instructions for getting the model going on various computers. ECOM-si - Estuarine, Coastal and Ocean Model (semi-implicit) : [http://crusty.er.usgs.gov/ecomsi.html] Princeton 대학에서 Blumberg and Mellor (1987)에 의해 개발된 POM과 거의 유사하며 3차원 해양 순환모형이다. The difference is that this model uses an implicit scheme developed by Vincenzo Casulli for solving the gravity wave so that the need for separate barotropic and baroclinic time steps is eliminated. 이 모형은 메일로서만 제공 받을 수 있는데 상기에 적은 주소를 참조하기 바란다. FRAM - Fine Resolution Antarctic Model : [http://www.mth.uea.ac.uk/ocean/fram.html] 남반구 해양(24S~79S)에 적용된 원시방정식을 사용한 수치모형이며 MOM 모형의 원조격인 Cox모형에서 발전된 수치 모형이다. 상기에 적은 주소에서는 모형 자체를 구할 수 없지만 이것은 MOM모형을 이 지역에 대해서 적용한 것과 마찬가지이므로 꼭 이 모형을 이용할 필요는 없다. 다만, 이 주소에서는 FRAM 모형의 결과를 tape로 구하는 방법 등을 얻을 수 있다.\u0026lt;strongr\u0026gt;남반구 해양에 적용된 제원은 다음과 같다. :\u0026lt;strongr\u0026gt; Geographic Coverage: 24S-79S, 1/4 lat x 1/2 long Depths: 32 levels (6 in top 200m.) 21m thick at top, 233m at bottom Time: 16 year simulation Topography: DBDB5\nFUNDY5 : [http://fundy.dartmouth.edu/gom/fundy5/]\nMICOM - Miami Isopycnic Coordinate Ocean Model : [http://www.rsmas.miami.edu/groups/micom.html] The RSMAS MICOM group is based in the Division of Meteorology and Physical Oceanography (MPO). \u0026lt;strongr\u0026gt;An isopycnic coordinate ocean circulation model available in several versions. This is a link to the original MICOM home site at the University of Miami. \u0026lt;strongr\u0026gt;A User\u0026rsquo;s Manual and Theory Guide for MICOM version 2.6 can be accessed via URL http://www.acl.lanl.gov/CHAMMP/micom.html.: MICOM - Parallel : [http://everest.ee.umn.edu/~okeefe/micom/] This is the Miami Isopycnic Coordinate Ocean Model that has been done at the University of Minnesota. A version of MICOM that runs on the Cray T3D, SGI workstations, and other workstations on which MPI has been installed. They have developed a message-passing version of MICOM called MP-MICOM that uses SHMEM on the Cray T3D/T3E and MPI on other machines. We also have a shared-memory, multi-threaded version (SC-MICOM) for SMP clusters that uses MPI to communicate between machines and direct shared memory within each machine. MICOM - Box : [ftp://nutmeg.rsmas.miami.edu/bleck/] This version of the MICOM model has a Kraus-Turner mixed layer and is bounded by a box comprised of latitude and longitude lines. The coordinates are set using Mercator projection scale factors. It is briefly described in boxmix.notes and contained in boxmix.tar. MICOM - Global : [ftp://nutmeg.rsmas.miami.edu/bleck/global/] This is a 127x256 grid point global version of MICOM with all of the appropriate forcing function files. MICOM - Atlantic : [ftp://nutmeg.rsmas.miami.edu/bleck/] This version of the Miami model has a Kraus-Turner mixed layer, separate equations for T and S, allows variable bathymetry and irregular coastlines. It comes with a North Atlantic Ocean basin configuration and related appropriate initialization files. It is briefly described in micom.notes and is contained in micom_..tar. MICOM - Realistic Basin Version This version of the Miami model has a Kraus-Turner mixed layer, separate equations for T and S, allows variable bathymetry and irregular coastlines, and is briefly described in micom.notes and is contained in micom_..tar. MOM - GFDL Modular Ocean Model : [http://www.gfdl.gov/~kd/MOMwebpages/MOMWWW.html] The GFDL Modular Ocean Model (acronym MOM) is a three-dimensional primitive equation general ocean circulation model. The model is intended to be a flexible tool for exploring ocean and coupled air-sea applications over a wide range of space and time scales. \u0026lt;strongr\u0026gt;The current state of the art in three dimensional z-coordinate primitive equation ocean models at GFDL is MOM 2, which was first released in October 1995. Beta testing of MOM 2 version 2 began during the November of 1996. MOMA ocean model for array processor computers :\nNaval Research Laboratory Large Scale Models (LSM) Project : [http://www7320.nrlssc.navy.mil/html/lsm-home.html] This is part of the Ocean Dynamics and Prediction Branch of the Oceanography Division of the Naval Research Laboratory at the Stennis Space Center. The chief project is the Ocean Prediction System, part of a coordinated effort to develop efficient and effective ocean nowcast/forecast systems that are eddy resolving (i.e. resolution of 1/8 deg. or better). This involves developing and validating both basin and global scale thermodynamic ocean circulation models that can run on existing and planned operational computers and realistically depict fronts, eddies, and the upper-ocean thermal structure. Images and movies from various simulations are shown and lists of publications and related activity links are given. They have a model called the Navy Layered Ocean Model (NLOM) available by request. NLOM - Navy Layered Ocean Model (NLOM) : [http://www7320.nrlssc.navy.mil/html/lsm-home.html] The NLOM has become the world\u0026rsquo;s first scalable portable ocean model. It will run efficiently and interchangeably on massively parallel computers (distributed memory - CM5, CRAY T3D/T3E, IBM SP2, SGI Power Challenge Array, Convex Exemplar), multi-processor shared memory computers (CRAY YMP/C90/T90, SGI Power Challenge, Convex Exemplar), or scalar computers (single processor workstations). To obtain a copy of the NLOM and related software, e-mail harley.hurlburt@nrlssc.navy.mil\nNCAR Spectral Transform SWM - Parallel Version : [http://www.epm.ornl.gov/chammp/pstswm/index.html]\nNUBBLE : [http://fundy.dartmouth.edu/gom/nubble/]\nOCCAM - The Ocean Circulation and Climate Advanced Modelling Project : [http://www.soc.soton.ac.uk/JRD/OCCAM/welcome.html] The OCCAM Project aims to build a high resolution (1/4 deg.) model of the world ocean. It is a parallelized model, similar to the FRAM model in the area of basic physics, that runs on a T3D machine at Edinburgh. The site contains various information about the project and some pictures and animations of current results.: Model details Geographic Coverage: Full Globe, 1/4 lat x 1/4 long Depths: 36 levels, 20m thick near surface, 255m at 5500m. (A table of exact values is available) Topography: DBDB5 Time: 14 year simulation OCCAM is a primitive equation numerical model of the global ocean. It is based on the GFDL MOM version of the Bryan-Cox-Semtner ocean model but includes a free surface and improved advection schemes. A regular longitude-latitude grid is used for the Pacific, Indian and South Atlantic Oceans. A rotated longitude-latitude grid is used for the Artic and North Atlantic Oceans, which has its poles on the equator in the Indian and Pacific Oceans. This overcomes the singularity that otherwise arises at the North Pole. A simple channel model is used to connect the two grids through the Bering Strait. The model depths are based on the DBDB5 data set. The model was started from the Levitus annual mean temperature and salinity fields. The surface forcing uses ECMWF monthly mean winds and relaxation to the Levitus seasonal surface temperature and salinity fields. The initial model run for 12 model years will be completed by September 1996.\nOPA - Ocean General Circulation Model : [http://www.ipsl.jussieu.fr/modelisation/lodyc/english/opa_GB.html] OPA is an ocean general circulation model in primitive equations developed at the LODYC in France. This site tells a bit about the model and has some pictures of simulations performed with it. There\u0026rsquo;s no info about obtaining the model. It follows the Navier-Stokes equations with the following assumptions: The earth is considered as a sphere: - Thin-shell assumption: - Turbulent closure scheme: - Quasi-Boussinesq hypothesis: - Hydrostatism: - The fluid is uncompressible: Moreover, in order to filter external gravity waves, a \u0026ldquo;rigid lid\u0026rdquo; assumption is used. POCM : [http://vislab-www.nps.navy.mil/~rtt/] The Parallel Ocean Circulation Model is a descendant of the Bryan/Cox/Semtner chain of model development designed to run on massively parallel computers like the CM5. This site contains a model description, references, and an online from for obtaining parts of the model output.\nA complete 10yr model run is available for use : the POCM_4B run covers the period from 1987 through 1996.\nA new model run (POCM_4C) with daily forcing of heat,freshwater, and winds from ECMWF reanalysis fields for 1979-93 is coming. Resolution : 0.4 deg X 0.4 deg (the model has the properties of a 1/3-degree model at latitude 33 degrees and the properties of a 1/5-degree model at latitude 60 degrees. The average latitudinal spacing is 1/4 degree.)\nPOM - Princeton Ocean Model : [http://www.aos.princeton.edu/WWWPUBLIC/htdocs.pom/] The POM is a sigma coordinate, free surface, primitive equation model which includes a turbulence sub-model. It was developed in the late 1970\u0026rsquo;s by Blumberg and Mellor, with subsequent contributions from other people. The model has been used for modeling of estuaries, coastal regions and open oceans. Currently, 287 users from 33 different countries are registered in the POM users group. POP - Parallel Ocean Program : [http://dubhe.cc.nps.navy.mil/~braccio/] The POP model is based on the model of Bryan \u0026amp; Cox but is reformulated to run at 1/6 deg. and 20 levels resolution for a full year of simulation in less than a day of computer time. It is forced at the surface by observed temperature, salinity, and wind stress. It runs on the 1024 node CM-5 and was developed at the Advanced Computing Laboratory at LANL. This site tells a bit about the model and how the output was processed to obtain the pictures and movies available there. QUODDY : [ftp://nml.dartmouth.edu/pub/] : TriGrid : [http://www.channel.bc.ca/trigrid/trigdoc.html] : ### DROG3D : [http://fundy.dartmouth.edu/gom/drog3d/] QGBOX - Reduced Gravity Quasigeostrophic Box Model : [http://reality.sgi.com/mccalpin/download/qgbox/] This site has a reduced gravity, quasigeostrophic box model (2-D) for use in studies of idealized geophysical fluid dynamics written by John McCalpin using the FWEB literate programming tool which allows the documentation and program to reside in the same file, either of which can be recovered separately via appropriate processing. The package is in the file qgbox.tar.Z. SESWEM - Spectral Element Shallow Water Equation Model : [ftp://tashtego.rutgers.edu/pub/mohamed/]\nSPEM 5.1 - S-coordinate Primitive Equation Model : [http://marine.rutgers.edu/po/spem.html] The S-coordinate Primitive Equation Model (SPEM) is a finite difference ocean circulation model. It replaces the semi-spectral vertical representation with an s-coordinate that allows better resolution above the thermocline. The model is currently at version 5.1 and we also have an implicit free surface version being constructed, which will be known as version 6.0. SPEM 3.9 - Semi-spectral Primitive Equation Model : [ftp://tashtego.rutgers.edu/pub/spem/src/]\nThis FTP site contains the SPEM 3.9 model developed by Haidvogel and programmed by Hedstrom. The model uses a semi-spectral Chebyshev polynomial representation in the vertical and finite differences in the horizontal.\nSTSWM - NCAR Spectral Transform Shallow Water Model : [http://www.epm.ornl.gov/chammp/pstswm/index.html]\nThe shallow water equations are used as a kernel for both oceanic and atmospheric general circulation models and are of interest in evaluating numerical methods for weather forecasting and climate modeling. The DOE CHAMMP program is interested in the development of new mathematical methods for these problems. This model is a parallel version of the NCAR spectral transform SWM designed for message passing parallel computers using the PICL library for portability. The NCAR spectral transform shallow water model (STSWM) and documentation can be down loaded by clicking on stswm.tar.gz .\nTide Models AG95.1 - Long wavelength partial adjustment of the FES94.1 pure hydrodynamic model\nCSR 3.0 - Long wavelength adjustment of the FES94.1 pure hydrodynamic model\nDW95.1 - Empirical Ocean tide model\nFES 95.2 - Assimilates altimetry onto the FES94.1 hydrodynamic model.\nSP 95 - Corrections to the Schwiderski model.\nKANTHA.2 - High-resolution, data assimilated, fully nonlinear barotropic ocean tidel model\nORI.96 - Harmonic analysis of data from crossover points.\nRSC94 -\nSR95.1 -\nTPXO.2 - Numerical Tidal model with data assimilation\nME-SCHW - Modified, Enhanced (1992) version of Schwiderski\u0026rsquo;s 1980 hydrodynamic model\nCR91 -\nSPOTL - An improved TIDAL LOADING program given a pure ocean tide model #Numerical Model #수치모델 #수치모형 #OGCM #해양순환모형\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%ED%95%B4%EC%96%91%EC%88%9C%ED%99%98%EB%AA%A8%ED%98%95%EB%93%A4-%EC%86%8C%EA%B0%9C/","section":"글","summary":"전 세계 해양순환모형 수십 종을 한자리에 모은 목록. primitive equation 계열부터 quasi-geostrophic까지, 각 모형의 개요와 원본 링크를 함께 정리했습니다.","title":"해양순환모형들 소개","type":"posts"},{"content":" Vertical coordinates Z-level Sigma coordinates Isopycnal coordinates Horizontal coordinates Rectilinear Curvilinear Orthogonal Non-orthogonal Vertical diffusion Local models Constant diffusivity Convective adjustment Richardson number modified diffusivity Turbulence closure Bulk models Bulk mixed layer models Horizontal diffusion Null diffusivity Constant diffusivity Smagorinsky diffusivity Biharmonic smoother Filters Sea surface treatment Free surface Rigid lid Basis functions Local Finite differences Finite elements Finite volume Global Spectral Mixed Spectral element #Numerical Model #수치모델 #수치모형\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/Classification-by-Model-Characteristics/","section":"글","summary":"해양순환모형을 연직·수평 좌표계, 연직 확산, 난류 종결 방식 등 특성별로 분류한 표.","title":"Classification by Model Characteristics","type":"posts"},{"content":"","date":"2006년 3월 15일","externalUrl":null,"permalink":"/tags/%EC%93%B0%EB%82%98%EB%AF%B8/","section":"태그","summary":"","title":"쓰나미","type":"tags"},{"content":"인하대 교수인 동기가 미국 유학시절에 만든 타이완 쓰나미 동영상인데 제가 가지고 있네요. ^-^\n허락없이 올려도, 친구인데 큰일 나겠습니까? ^^\n#쓰나미 #Scientific Visualization #과학가시화 #Tsunami\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Taiwan-Tsunami-Simulation-%EB%8C%80%EB%A7%8C/","section":"글","summary":"대만 쓰나미 모의 영상. 유학 시절 동기가 만든 것을 옮겨 두었습니다.","title":"쓰나미: Taiwan Tsunami Simulation (대만)","type":"posts"},{"content":"- Images using GMT\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Images/GMT/z2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Images/GMT/Lz2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Images/GMT/zmax.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Images/GMT/zdif.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Images/GMT/zdif.con.jpg — 링크 소실)\n- Animation using TAV\n(http://nas.dhkim.info/www/research_topics/tsunami/Puka/Animations/TAV/puka.mpg. — 링크 소실)\n#쓰나미 #Scientific Visualization #과학가시화 #Tsunami\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Puka-Tsunami-Simulation/","section":"글","summary":"Puka 쓰나미 모의 결과. 그림 파일은 소실되고 시뮬레이션 영상만 남았습니다.","title":"쓰나미: Puka Tsunami Simulation","type":"posts"},{"content":"- Images using GMT\n(http://nas.dhkim.info/www/research_topics/tsunami/Okusiri/Images/GMT/z2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Okusiri/Images/GMT/Lz2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Okusiri/Images/GMT/zmax.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Okusiri/Images/GMT/zdif.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Okusiri/Images/GMT/zdif.con.jpg — 링크 소실)\n- Animation using TAV\nP\u0026gt;\n#쓰나미 #Scientific Visualization #과학가시화 #Tsunami\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Okusiri-Tsunami-Simulation/","section":"글","summary":"일본 오쿠시리 쓰나미 모의 결과. 그림 파일은 소실되고 시뮬레이션 영상만 남았습니다.","title":"쓰나미: Okusiri Tsunami Simulation","type":"posts"},{"content":"- Images using GMT\n(http://nas.dhkim.info/www/research_topics/tsunami/Nigata/Images/GMT/z2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Nigata/Images/GMT/Lz2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Nigata/Images/GMT/zmax.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Nigata/Images/GMT/zdif.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Nigata/Images/GMT/zdif.con.jpg — 링크 소실)\n- Animation using TAV\n#쓰나미 #Scientific Visualization #과학가시화 #Tsunami\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Nigata-Tsunami-Simulation-%EC%9D%BC%EB%B3%B8-%EB%8B%88%EA%B0%80%ED%83%80/","section":"글","summary":"일본 니가타 쓰나미 모의 결과. 그림 파일은 소실되고 시뮬레이션 영상만 남았습니다.","title":"쓰나미: Nigata Tsunami Simulation (일본 니가타)","type":"posts"},{"content":"- Images using GMT\n(http://nas.dhkim.info/www/research_topics/tsunami/Chungbu/Images/GMT/z2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Chungbu/Images/GMT/Lz2200.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Chungbu/Images/GMT/zmax.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Chungbu/Images/GMT/zdif.jpg — 링크 소실)\n(http://nas.dhkim.info/www/research_topics/tsunami/Chungbu/Images/GMT/zdif.con.jpg — 링크 소실)\n- Animation using TAV\n#쓰나미 #Scientific Visualization #과학가시화 #Tsunami\n","date":"2006년 3월 15일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Chungbu-Tsunami-Simulation/","section":"글","summary":"Chungbu 쓰나미 모의 결과. GMT로 그린 그림은 당시 서버와 함께 사라졌고 시뮬레이션 영상만 남았습니다.","title":"쓰나미: Chungbu Tsunami Simulation","type":"posts"},{"content":"20 여년전 석사시절에 Ray-Tracing 모형으로 과거 쓰나미 재현한 것인데,\n이것도 남아 있는 자료가 거의 없네요. -_-\n- How to run the model\nallpac.f의 몇몇 variables를 수정하고 run을 시키면 c.bin, dcdf.bin, dcdt.bin의 결과 화일을 얻을 수 있다. maxlat, maxlon - 위도와 경도의 범위를 간격으로 나눈 값 (nlat, nlon) 보다 크면 됨.\nnlat = int((alat1 - alat0)/(latm/60.) + 0.5) + 1\nnlon = int((alon1 - alon0)/(lonm/60.) + 0.5) + 1 alon0, alon1, lonm - 주어진 지역의 서쪽과 동쪽의 경도(degree), 경도 간격(minute) alat0, alat1, latm - 주어진 지역의 남쪽과 북쪽의 위도(degree), 위도 간격(minute) rtrace.f의 몇몇 variables를 수정하고 run을 시키면 ray2.xy, time.xy의 결과 화일을 얻을 수 있다. ny, npnt, mazmt, npltsz - dt, depmin - Delta Time (sec), Minimum Depth (meter) elat0, elon0 - Tsunami가 일어난 위치 theta0, dthdeg, raynum - theth0에서 부터 dthdeg 간격으로 raynum개의 ray를 추적 (ex. 0, 2, 180) hstop, hplend, htick - ## Note ### - cread 함수내의 배열 크기를 c.bin에 생성된 크기와 같게 맞춰 줄 것. ### 결과는 c.bin을 color로 그리고 ray2.xy는 line으로 time.xy는 \u0026lsquo;x\u0026rsquo;표시로 그리면 된다. - How to port on Digital Unix v4.0D\nallpac.f\nallpac에서 읽는 수심 데이타는 ETOPO5의 binary data인데 현재 가지고 있는 etopo5.b가 제대로 읽히지 않아서 다음과 같이 고쳤다.\n원래 소스에서는 b_read.c라는 C function으로 binary를 읽고 있는데 Digital Unix는 little_endian이므로 읽으면서 바로 swap을 시켜야 한다. 그래서 여러가지 방법으로 swap을 시켜봤지만 제대로 데이타를 읽지 못해서 이 방법은 포기하고 fortran에서 직접 읽는 방법을 취하였다. 그 방법은 우선 화일을 form=\u0026lsquo;unformatted\u0026rsquo;, access=\u0026lsquo;direct\u0026rsquo;, recl=2160, convert=\u0026lsquo;big_endian\u0026rsquo;으로 오픈하고 \u0026lsquo;call b_read(idat)\u0026rsquo; 부분은 지우고 \u0026lsquo;read(5,rec=irec) (idat(k),k=1,4320)으로 읽는데 irec의 값은 1부터 2160까지 증가 시켜주면 된다. 그외에는 별로 문제가 없는 것 같으므로 혹시 다른 문제가 있으면 알려 주시면 고맙겠습니다. - Simulation\nChungbu\nNigata\nOkusiri\nPuka\nPago Pago -\n(http://nas.dhkim.info/www/research_topics/tsunami/Ray-Tracing/Rays.jpg — 링크 소실)\n#쓰나미 #Tsunami\n","date":"2006년 3월 14일","externalUrl":null,"permalink":"/2006/03/%EC%93%B0%EB%82%98%EB%AF%B8-Tsunami-Ray-Tracing-Model-and-Simulation/","section":"글","summary":"Ray-Tracing 모형으로 과거 쓰나미를 재현한 석사 시절 작업. 모형 실행 절차와 입력 변수 설정을 정리했습니다.","title":"쓰나미: Tsunami Ray-Tracing Model and Simulation","type":"posts"},{"content":"","date":"2006년 3월 13일","externalUrl":null,"permalink":"/tags/%ED%8C%8C%EB%9E%91/","section":"태그","summary":"","title":"파랑","type":"tags"},{"content":"10 여년 전 석사시절에 울산항 방파제 시뮬레이션 한 것인데,\n내용은 거의 생각이 안나네요. 남아 있는 자료도 없고\u0026hellip;\n달랑 애니메이션 자료 3개 뿐\u0026hellip;^^\n그리고 그 당시에 사용해 보았던 wave 모델들 입니다.\n저작권문제가 있을지 몰라 관계자에게만 배포합니다.\nHCODE (http://data.dhkim.info/www/research_topics/wave/models/HCODE/hcode.f — 링크 소실) - This program is for the calculation of wave heights in the harbor and\nit uses mild-slope equation as governing equation.\nHMI (http://data.dhkim.info/www/research_topics/wave/models/HMI/hmi.f — 링크 소실) - Hyperbolic type I model developed by ADI finite difference method\ncombined for Pohang Harbour at KORDI \u0026lsquo;94.\nPR (http://data.dhkim.info/www/research_topics/wave/models/PR.zip — 링크 소실) - Elliptic type model developed by crank-nicholson finite difference method\ncombined for Pohang harbour at KORDI \u0026lsquo;94.\nHMSE (http://data.dhkim.info/www/research_topics/wave/models/HMSE.zip — 링크 소실) - Numerical analysis of wave propagation by hyperbolic type mild slope equation\n#wave #방파제 #Scientific Visualization #과학가시화\n","date":"2006년 3월 13일","externalUrl":null,"permalink":"/2006/03/%ED%8C%8C%EB%9E%91-Wave-Simulation-%EC%9A%B8%EC%82%B0%ED%95%AD-%EB%B0%A9%ED%8C%8C%EC%A0%9C/","section":"글","summary":"석사 시절에 울산항 방파제를 대상으로 돌린 파랑 시뮬레이션. 남은 것은 애니메이션 세 편과 당시 쓰던 파랑 모델 목록뿐입니다.","title":"파랑: Wave Simulation - 울산항 방파제","type":"posts"},{"content":" 김동훈 # 대기와 해양을 수치로 푸는 일을 합니다. 해안·해양공학에서 출발해 대기대순환모형과 해양순환모형, 그리고 둘을 붙인 접합모형을 개발하고 운용해 왔고, 최근에는 그렇게 쌓인 자료를 바탕으로 인공신경망을 이용한 해양–대기 예측 모형을 개발하는 데 무게를 두고 있습니다.\n이 블로그의 전신은 2006년 3월에 시작한 블로그입니다. 그 전에는 별도의 홈페이지가 있었습니다. 오래된 글의 첨부파일 링크는 당시 자체 운영하던 서버가 사라져 대부분 열리지 않습니다.\n지금은 제주대학교 태풍연구센터에서 부센터장 겸 학술연구교수로 일하고 있습니다.\n걸어온 길 # 제주대학교 태풍연구센터 부센터장 / 학술연구교수 인하대학교 인공지능융합연구센터 산학연구교수 한국외국어대학교 WISE 사업단 연구개발본부장 연세대학교 대기과학과 지구환경연구소 연구교수 — 대기–해양 결합모형 개발 및 물리모수화 개선 기상청 기후예측과 기상연구관 — 차세대 계절예측시스템 개발, 이상기후 분석 기상청 국립기상연구소 예보연구팀 기상연구관 — 수치예보모형 개발 기상청 슈퍼컴퓨터팀 기상연구관 — 기상용 슈퍼컴퓨터 최적화 및 효율화 일본 전력중앙연구소(CRIEPI) 환경과학연구소 선임(특별계약)연구원 — 기후변화, 고해상도 해양모형 서울대학교 기후환경시스템연구센터(대기과학과) 박사후연구원 — 해양–대기 접합모형 개발 (지도: 강인식) 연세대학교 지구환경연구소(대기과학과) 박사후연구원 — 대기대순환모형 최적화 (지도: 김정우) 학위 # 박사 성균관대학교 대학원 해안 및 해양공학 — 기후변화에 의한 해수면 변화 (지도: 최병호) 석사 성균관대학교 대학원 해안 및 해양공학 — 3차원 동해순환 연구 학사 성균관대학교 토목환경공학과 학위논문 # Kim, D.-H., 1999: Sea Level Change due to Global Warming in the Northwestern Pacific Ocean. Ph.D. thesis, Sungkyunkwan University. Kim, D.-H., 1995: A Study on Diagnostic Three-Dimensional Baroclinic Circulation Model of the East Sea. M.S. thesis, Sungkyunkwan University. (in Korean) 논문 # Jung, H., I.-J. Moon, D.-H. Kim, and J. Lee, 2025: Automated tropical cyclone intensity estimation through integration of historical information and self-diagnosis using AI models. IEEE Transactions on Geoscience and Remote Sensing. doi:10.1109/TGRS.2025.3632317 Lee, J., I.-J. Moon, J. Im, D.-H. Kim, and H. Jung, 2025: Multi-task feature transfer deep learning-based tropical cyclone center estimation (MFT–TC) using geostationary satellite observations. Weather and Climate Extremes, 100796. Latos, B., I.-J. Moon, D.-H. Kim, and D. Lee, 2025: Atlantic–Pacific winter warming as an early indicator of major hurricane activity over the North Atlantic. Quarterly Journal of the Royal Meteorological Society. doi:10.1002/qj.5048 김동훈, 문일주, 조민수, 2025: 인공지능형 전지구 대기대순환 모형의 기술 개발 동향. 대기(Atmosphere), 35(2), 263–276. doi:10.14191/Atmos.2025.35.2.263 — 전문 읽기 김동훈, 문일주, 2025: 대기 및 해양 예측을 위한 인공신경망 학습의 새로운 패러다임 — 물리정보 신경망과 연산자 학습. Ocean and Polar Research, 47, 1–15. doi:10.4217/OPR.2025001 — 전문 읽기 Kim, D.-H., I.-J. Moon, C. Lim, and S.-B. Woo, 2024: Improved prediction of extreme ENSO events using an artificial neural network with weighted loss functions. Frontiers in Marine Science, 10, 1309609. doi:10.3389/fmars.2023.1309609 — 전문 읽기 신용탁, 김동훈, 김현재, 임채욱, 우승범, 2022: 다변수 Bidirectional RNN을 이용한 표층수온 결측 데이터 보간. 한국해안·해양공학회논문집, 34(4), 109–118. 김현재, 김동훈, 임채욱, 신용탁, 이상철, 최영진, 우승범, 2021: 해양 이상 자료 탐지를 위한 오토인코더 활용 기법 최적화 연구. 한국해안·해양공학회논문집, 33(6), 265–274. Lim, C., D.-H. Kim, S.-B. Woo, M. Joh, J. An, and I.-J. Moon, 2020: Performance comparisons on parallel optimization of atmospheric and ocean numerical circulation models using KISTI supercomputer Nurion system. Applied Sciences, 10(8), 2883. doi:10.3390/app10082883 김동훈, 임채욱, 조민수, 안준언, 문일주, 우승범, 2020: KISTI 슈퍼컴퓨터 5호기 누리온 시스템을 이용한 지역해양모델의 병렬 최적화 연구. 정보과학회논문지, 47(1), 1–10. Jang, Y.-S., J.-S. Kug, Y.-H. Kim, and D.-H. Kim, 2012: Simulation of two types of El Niño from different convective parameters. Asia-Pacific Journal of Atmospheric Sciences. Ham, Y.-G., J.-S. Kug, D. Kim, Y.-H. Kim, and D.-H. Kim, 2012: What controls phase-locking of ENSO to boreal winter in coupled GCMs? Climate Dynamics. doi:10.1007/s00382-012-1420-2 Kim, D., Y.-S. Jang, D.-H. Kim, Y.-H. Kim, M. Watanabe, F.-F. Jin, and J.-S. Kug, 2011: El Niño–Southern Oscillation sensitivity to cumulus entrainment in a coupled general circulation model. J. Geophys. Res., 116, D22112. (교신저자) doi:10.1029/2011JD016526 Noh, Y., E. Lee, D.-H. Kim, S.-Y. Hong, M.-J. Kim, and M.-L. Ou, 2011: Prediction of the diurnal warming of sea surface temperature using an atmosphere–ocean mixed layer coupled model. J. Geophys. Res., 116, C11023. doi:10.1029/2011JC006970 Tsutsui, J., Y. Yoshida, D.-H. Kim, H. Kitabata, K. Nishizawa, and K. Maruyama, 2007: Long-term climate response to stabilized and overshoot anthropogenic forcings beyond the 21st century. Climate Dynamics, 28, 199–214. Nakashiki, N., D.-H. Kim, F. O. Bryan, Y. Yoshida, D. Tsumune, K. Maruyama, and H. Kitabata, 2006: Recovery of thermohaline circulation under CO₂ stabilization and overshoot scenarios. Ocean Modelling, 15(3–4), 200–217. Kim, D.-H., 2006: 접합 대순환 모형의 국내 개발 현황 및 이를 이용한 기후변화 연구 동향. 기후변화 뉴스레터, 4(3), 12–15. Bryan, F. O., G. Danabasoglu, N. Nakashiki, Y. Yoshida, D.-H. Kim, J. Tsutsui, and S. C. Doney, 2006: Response of the North Atlantic thermohaline circulation and ventilation to increasing carbon dioxide in CCSM3. Journal of Climate, 19, 2382–2397. Kim, D.-H., 2006: A study on the scientific visualization in ocean–atmospheric sciences. J. Korean Soc. of Visualization, 4(1), 3–7. (in Korean) Kim, D.-H., N. Nakashiki, Y. Yoshida, K. Maruyama, and F. O. Bryan, 2005: Regional cooling in the South Pacific sector of the Southern Ocean due to global warming. Geophys. Res. Lett., 32, L19607. Kim, D.-H., N. Nakashiki, D. Tsumune, Y. Yoshida, K. Maruyama, and F. O. Bryan, 2005: Ocean climate change in the western North Pacific under the multi-century three-member ensemble predictions. J. Korean Meteor. Soc., 41(2-1), 239–247. Choi, B. H., D.-H. Kim, Y. J. Choi, and J. H. Yuk, 2005: Projections of ocean climate for the northwestern Pacific Ocean. Acta Oceanologica Sinica, 24, 134–145. Choi, B. H., D.-H. Kim, and J. W. Kim, 2002: Regional responses of climate in the northwestern Pacific Ocean to gradual global warming for a CO₂ quadrupling. J. Meteor. Soc. Japan, 80(6), 1427–1442. Choi, B. H., D.-H. Kim, and Y. Fang, 1999: Tides in the East Asian Seas from a fine-resolution global ocean tidal model. Marine Technology Society Journal, 33(1), 36–44. Choi, B. H., D. G. Kim, and D.-H. Kim, 1997: A numerical tidal model for the Southeast Asian Seas. J. Korean Soc. of Coastal and Ocean Engineers, 9(2), 63–73. 연락 # 홈페이지 — dhkim.info GitHub — @dohnkim GitLab — @dohnkim ","externalUrl":null,"permalink":"/about/","section":"NWP \u0026 NNN","summary":" 김동훈 # 대기와 해양을 수치로 푸는 일을 합니다. 해안·해양공학에서 출발해 대기대순환모형과 해양순환모형, 그리고 둘을 붙인 접합모형을 개발하고 운용해 왔고, 최근에는 그렇게 쌓인 자료를 바탕으로 인공신경망을 이용한 해양–대기 예측 모형을 개발하는 데 무게를 두고 있습니다.\n","title":"소개","type":"page"}]