1ヶ月の日数を計算する
コンパイルと実行例
$ make
if [ ! -d ../obj ]; then \
mkdir -p ../obj ; \
fi
ifort -c -module ../obj -c -o ../obj/num_day.o num_day.f90
ifort -o ../test_monthly_mean ../obj/test_monthly_mean.o ../obj/num_day.o ../obj/leapyr.o -module ../obj
$ cd ..
$ ./test_monthly_mean
mclim= 2
ys, ye, yn= 2000 2009 10
yr,mclim,mn= 2000 2 29
yr,mclim,mn= 2001 2 28
yr,mclim,mn= 2002 2 28
yr,mclim,mn= 2003 2 28
yr,mclim,mn= 2004 2 29
yr,mclim,mn= 2005 2 28
yr,mclim,mn= 2006 2 28
yr,mclim,mn= 2007 2 28
yr,mclim,mn= 2008 2 29
yr,mclim,mn= 2009 2 28
主プログラム
program test_monthly_mean
! Description:
!
! Author: am
!
! Host: aofd30
! Directory: /work2/am/12.Work11/22.Climatology_2/71.Monthly_Mean/11.Test_Monthly_Mean/src
!
! Revision history:
! This file is created by /usr/local/mybin/nff.sh at 13:29 on 09-21-2011.
integer ys,ye,yn,yr
namelist/para/mclim
open(1,file="para.txt",action="read")
read(1,para)
close(1)
print *,"mclim= ",mclim
ys=2000
ye=2009
yn=ye-ys+1
print *,"ys, ye, yn= ",ys, ye, yn
do n=1,yn
yr=ys+n-1
call num_day(yr,mclim,mn)
print '(A,i5,2i3)','yr,mclim,mn= ',yr,mclim,mn
do m=1,mn
enddo !m
enddo !n
end program test_monthly_mean
副プログラム1
subroutine num_day(year,month,day)
! Description:
!
! Author: am
!
! Host: aofd30
! Directory: /work2/am/12.Work11/22.Climatology_2/71.Monthly_Mean/11.Test_Monthly_Mean/src
!
! Revision history:
! This file is created by /usr/local/mybin/nff.sh at 13:38 on 09-21-2011.
implicit none
integer,intent(in)::year,month
integer,intent(out)::day
integer leapyr
if(month == 1)day=31
if(month == 3)day=31
if(month == 4)day=30
if(month == 5)day=31
if(month == 6)day=30
if(month == 7)day=31
if(month == 8)day=31
if(month == 9)day=30
if(month == 10)day=31
if(month == 11)day=30
if(month == 12)day=31
if(month == 2)then
if(leapyr(year) == 0)then
day=28
else
day=29
endif
endif
if(month > 12 .or. month < 1)then
stop "Error in num_day : invalid month"
endif
end subroutine num_day
副プログラム2
! Description:
!
! Author: am
!
! Host: aofd30
! Directory: /work2/am/12.Work11/22.Climatology_2/71.Monthly_Mean/11.Test_Monthly_Mean/src
!
! Revision history:
! This file is created by /usr/local/mybin/nff.sh at 14:21 on 09-21-2011.
!
integer FUNCTION LEAPYR(Y)
integer,intent(in)::Y
LEAPYR=0
IF(MOD(Y,4)/= 0) RETURN
IF((MOD(Y,100) /= 0).AND.(MOD(Y,400) /= 0) ) RETURN
LEAPYR=1
END
makefile
- makefile - 2011/09/20 22:32、A M (バージョン 1) 削除
- 3KB ダウンロード
パラメータファイル para.txt
¶
mclim=2
&end