728x90

Fortran 9

Fortran으로 netCDF 파일 작성 (nf90_def_dim, def_var, put_att, put_var)

이번 포스팅부터는 제목 앞에 작업이란 단어를 지우기로 했습니다 저는 나름대로 몇 가지 일을 했고 하나 하나가 제가 계획을 꾸려서 하는 작업이라고 생각했는데 논문을 써보면서 작업이라고 할 만한 것들이 아니라고 생각했습니다 앞으로는 제목을 간단하게 적고 중요했던 키포인트를 뒤쪽 괄호에 적는 식으로 제목을 바꿔보려고 합니다 오늘은 포트란으로 NetCDF 파일을 작성해보겠습니다 먼저 코드입니다 PROGRAM net2 2 use netcdf 3 4 IMPLICIT NONE 5 6 INTEGER :: status, ncid 7 INTEGER :: nx, ny, ii, jj, x, y, xx, yy 8 REAL, DIMENSION(239, 239) :: field 9 REAL, DIMENSION(239, 239) :..

Fortran 2023.08.31

Fortran으로 netCDF 파일 읽고 평균 구하기(gfortran 컴파일 에러)

이번 포스팅은 정말 오랜만에 포트란입니다 WRF 결과물인 netCDF 파일을 읽고 격자들 전체의 평균 값을 구하는 코드를 해보겠습니다 전체 코드입니다 1 PROGRAM net1 2 use netcdf 3 4 IMPLICIT NONE 5 6 CHARACTER(len = 256) :: fi 7 REAL, ALLOCATABLE :: T2(:,:,:) 8 9 INTEGER :: dx, dy 10 INTEGER :: ncid, varid 11 INTEGER :: start(3), count(3) 12 13 14 fi = "wrfout_d01_2016-10-06_00.nc" 15 dx = 209 16 dy = 209 17 18 call check(nf90_open(fi, NF90_NOWRITE, ncid), "op..

Fortran 2023.08.24

작업7 : Fortran으로 파장 별 방출에너지 구하기

오늘은 온도별 방출 에너지를 구해보겠습니다 개념 설명) 태양의 온도를 저희는 흔히 6000도 또는 5777K라고도 합니다 이 온도에서 방출하는 복사에너지 덕분에 지구에 빛이 들어오고 사람이 살 수 있는 온도가 생기는 겁니다 그럼 태양보다 더 뜨거운 항성은 태양과 똑같은 에너지를 방출할까요?? 아닙니다 물체는 온도가 높을수록 방출하는 에너지가 큽니다 가지고 있는 열을 방출하는게 복사 에너지이기 때문입니다 그럼 첫번째 사실을 하나 알았죠?? 온도가 높으면 복사에너지가 크다 두번째는 파장으로 알아보겠습니다 복사는 파동의 형태로 전달되기 때문에 파장과 진동수라는 개념이 있습니다 파장은 골과 골, 마루와 마루 사이의 길이를 말하고 진동수는 이 파장이 1초에 진동하는 횟수를 말합니다 진동한다는 말의 의미는 처음 위..

Fortran 2022.10.26

작업6 : Fortran으로 합성 풍속 풍향 구하기2

저번 포스팅과 이어집니다 저번 포스팅에서 포트란에 바람 방향을 입력시켜주기 위한 각도 변환 과정을 알아봤습니다 오늘은 직접 코드로 계산을 해보겠습니다 준비물) 오늘 코딩은 미리 준비물이 필요합니다 1시간 간격으로 24시간 동안 관측된 하루 동안의 바람을 가지고 계산을 해볼 것이기 때문에 시간대 별 풍속과 풍향 자료가 필요합니다 0:00 1.1 290 1:00 0.5 20 2:00 0.5 200 3:00 2.9 50 4:00 3.3 50 5:00 1.6 340 6:00 1.5 320 7:00 2.0 360 8:00 2.1 50 9:00 2.3 70 10:00 2.1 90 11:00 1.6 70 12:00 2.3 90 13:00 2.3 90 14:00 1.6 90 15:00 1.7 90 16:00 1.7 5..

Fortran 2022.10.26

작업5 : Fortran으로 합성 풍향 풍속 구하기1

이번에는 합성 풍속과 풍향을 구해보겠습니다 평균 풍속 풍향이라고만 하면 하루동안 측정한 자료를 모아서 24시간으로 나누면 되지 않냐 생각하실 수도 있습니다 풍속은 1시간마다 측정하여 24로 나누는 산술평균 방법을 사용해도 괜찮지만 방향을 포함하고 있는 풍향은 얘기가 좀 다릅니다 벡터 형태이기 때문에 방향이 정말 중요합니다 바람의 성분) 바람 벡터를 동서 성분과 남북 성분으로 나누어서 주로 생각합니다 쉽게 표현하기 위해 동서 성분은 u성분, 남북 성분을 v성분이라고 부릅니다 합성 풍향 풍속을 구하기 위해서는 평균 풍향 풍속을 먼저 구해야합니다 원래는 이런 공식을 사용해서 구한 다음 해야하지만 조금 더 쉬운 공식을 사용하겠습니다 그전에 기상학적 바람 벡터와 수학적 바람벡터부터 알아보겠습니다 기상학적 바람 벡..

Fortran 2022.10.26

작업4 : Fortran으로 시간방정식 계산하기

이번에는 저희 대기복사 교재에 있는 시간방정식을 계산해보겠습니다 개념 자체는 조금 어려울 수 있습니다 시간방정식의 의미) 균시차라고 부르기도 합니다 쉽게 말해서 해시계로 읽은 시간과 기계적으로 읽은 시간의 차이를 말합니다 흔히 저희가 사용하는 시계는 24시간이지만 실제 태양시는 24시간이 아닙니다 하루하루 차이는 작을 수 있지만 1년 동안 누적되면 생각보다 커집니다 이 차이가 생기는 이유는 지구의 자전축의 경사와 공전 궤도의 이심률 때문입니다 지구의 공전궤도가 타원이기 때문에 태양에 가까워 질수록 공전속도가 빨라지고 멀어질수록 느려지게 됩니다 이를 근일점과 원일점이라고 합니다 자전축이 기울어진 채 공전궤도 위를 지나기 때문에 태양이 지나가는 길, 즉 황도가 일정할 수 없습니다 이 두 가지 이유로 인해 차..

Fortran 2022.10.26

작업3: Fortran으로 태양의 적위 계산하기

오늘은 태양의 적위를 계산해보겠습니다 먼저 적위가 뭔지 알아볼께여 적위를 이해하기 위해선 천구라는 것부터 알아야합니다 천구는 관측자나 지구를 중심으로 반지름이 무한대인 커다란 구를 말합니다 별들이 이 천구에 박혀있다라는 표현을 쓰기도 합니다 천구 안의 지구는 자전축이 23.5 도 기울어진채 자전을 합니다 지구의 적도에서 천구로 적도를 무한히 확장했을 때 생기는 원을 천구의 적도라고 합니다 본론으로 돌아와서 그럼 적위는 무엇일까요?? 천구의 적도와 태양이 이루는 각을 적위라고 합니다 말로만 하면 이해가 어려우니 그림을 가져올께여 위의 사진을 보시면 이해가 되실 겁니다 저번 포스팅에서 이심률을 계산하는 공식이 2개라고 했었는데 적위는 1개 더 많은 3개나 됩니다 이렇게 3개나 됩니다 길어보이지만 충분히 할 ..

Fortran 2022.10.26

작업2 : 이심률 구하기

이번에 한 내용은 이심률 구하는 작업입니다 ​ 이심률이란 원운동하는 물체가 궤도에서 벗어난 정도를 뜻합니다 ​ 이걸 지구에 적용하면 태양을 도는 공전 궤도의 변화 정도를 말합니다 ​ 먼저 이심률 공식을 설명하기 전에 Day Number 라는 숫자를 알아보겠습니다 1년은 총 365일로 구성이 되어있습니다 1월 1일을 0으로 두고 12월 31일을 365로 계산합니다 ​ 2월은 4년마다 29일이 되지만 이는 포함하지 않습니다 이심률 공식입니다 ​ 2가지가 있는데 위에 공식이 조금 더 정밀하게 값이 나옵니다 ​ 위에 식을 가지고 만든 코드입니다 fortran 90까지는 한 줄에 입력 가능한 글자수가 제한이 있기 때문에 자동으로 줄바꿈이 됩니다 그럴때는 넘어간 줄 맨 앞으로 커서를 옮겨서 백스페이스바를 한 번 눌..

Fortran 2022.10.18

작업1 : 태양의 유효복사온도 계산

먼저 태양의 유효복사 온도를 계산하는 공식입니다 ​ 다음은 제 코드입니다 ​ 여기서 설명 드릴만 한거는 read 정도 인거 같습니다 read는 값을 읽어들이는 메소드로 제가 설정한 변수 e를 읽어들입니다 ​ 이게 출력 결과입니다 ​ 네이버 블로그 작성할 때 탭키가 안먹는 탓도 있지만 코드는 작성해보고 수정해보면서 알아가는 것이 빨리 실력이 늘기 때문에 사진으로 올려드립니다 ​ 코드 해석도 해보시기 바랍니다

Fortran 2022.10.18