------------------------------
List of the following files:
------------------------------
aphro.jp.read.sh
------------------------------
Machine info
------------------------------
localhost
/work2/am/2017.Heavy.Rain/APHRO.vs.OA.Fortran
Mon Oct 16 17:06:38 JST 2017
======================
aphro.jp.read.sh
======================
#!/bin/bash
#
# Description:
#
src=$(basename $0 .sh).f90
exe=$(basename $0 .sh).exe
nml=$(basename $0 .sh).nml
tmp=$(basename $0 .sh)
prg=$(echo $tmp| sed -e 's/\./_/g')
ctl=$(basename $0 .sh).ctl
f90=ifort
opt="-CB -traceback -fpe0"
opt="$opt -assume byterecl"
#opt="$opt -L/usr/local/netcdf-4.1.3/lib -lnetcdf -lnetcdff -I/usr/local/netcdf-4.1.3/include"
yyyy=1985
if [ $yyyy -le 2011 ]; then
ver=V1207
infle=AphroJP_V1207_DPREC.${yyyy}
else
ver=V1707
infle=AphroJP_JST_DPREC.${yyyy}
fi
indir=/misc/raid112MANDA/KakenA.H28/APHRODITE/${ver}
odir=output
mkdir -vp $odir
ofle=AphroJP_DPREC.${yyyy}.bin
cat<<EOF>$nml
¶
yyyy=$yyyy,
indir="$indir",
infle="$infle",
odir="$odir",
ofle="$ofle",
&end
EOF
cat <<EOF>${src}
program ${prg}
integer yyyy,y
integer jd0,jd,yyyy1,mm1,dd1
character(len=500)::indir,infle,odir,ofle
integer,parameter::nx=460, ny=440, nbyte=4
integer:: nd, nrecl
real precip(nx,ny)
namelist /para/yyyy,indir,infle,odir,ofle
read(*,nml=para)
y=int(yyyy)
n=(1/(y-y/4*4+1))*(1-1/(y-y/100*100+1)) + (1/(y-y/400*400+1))
print *,'n=',n
nd=365+n
nrecl=nx*ny*nbyte
open(11,file=trim(indir)//"/"//trim(infle), action="read", &
form="unformatted", access='direct', recl=nrecl)
open(21,file=trim(odir)//"/"//trim(ofle), form="unformatted", &
access='direct', recl=nrecl)
jd0=julday(yyyy,1,1)
do n=1,nd
jd=(n-1)+jd0
call caldat(jd,yyyy1,mm1,dd1)
print *,yyyy1,mm1,dd1
read (11,rec=n)precip
write(21,rec=n)precip
end do
close(11)
close(21)
print *
print '(A,I4)','Year=',yyyy
print '(A,A)','Input: ',trim(indir)//'/'//trim(infle)
print '(A,A)','Output: ',trim(odir) //'/'//trim(ofle)
print *
stop
end program ${prg}
INTEGER FUNCTION JULDAY(IYYY,MONTH,DD)
INTEGER,intent(inout):: IYYY,MONTH,DD
!
! NAME IN/OUT DESCRIPTION
!
! IYYY I YEAR
! MONTH I MONTH (1 TO 12)
! DD I DAY OF MONTH
!
INTEGER IGREG
PARAMETER (IGREG = 15 + 31*(10 + 12*1582))
INTEGER JY,JM,JA
!
IF (IYYY .LT. 0) IYYY = IYYY + 1
IF (MONTH .GT. 2) THEN
JY = IYYY
JM = MONTH + 1
ELSE
JY = IYYY - 1
JM = MONTH + 13
ENDIF
JULDAY = INT(365.25*JY) + INT(30.6001*JM) + DD + 1720995
IF (DD + 31*(MONTH + 12*IYYY) .GE. IGREG) THEN
JA = INT(0.01*JY)
JULDAY = JULDAY + 2 - JA + INT(0.25*JA)
ENDIF
RETURN
end function julday
subroutine caldat(JULIAN,IYYY,MONTH,DD)
! Description:
INTEGER,intent(in):: JULIAN
integer,intent(out)::IYYY,MONTH,DD
!
! NAME IN/OUT DESCRIPTION
!
! JULIAN I THE JULIAN DAY
! IYYY O THE YEAR
! MONTH O THE MONTH (1 TO 12)
! DD O THE DAY OF THE MONTH
!
INTEGER IGREG
PARAMETER (IGREG=2299161)
INTEGER JALPHA,JA,JB,JC,JD,JE
!
IF (JULIAN .GE. IGREG) THEN
JALPHA = INT(((JULIAN - 1867216) - 0.25)/36524.25)
JA = JULIAN + 1 + JALPHA - INT(0.25*JALPHA)
ELSE
JA = JULIAN
ENDIF
JB = JA + 1524
JC = INT(6680. + ((JB - 2439870) - 122.1)/365.25)
JD = 365*JC + INT(0.25*JC)
JE = INT((JB - JD)/30.6001)
DD = JB - JD - INT(30.6001*JE)
MONTH = JE - 1
IF (MONTH .GT. 12) MONTH = MONTH - 12
IYYY = JC - 4715
IF (MONTH .GT. 2) IYYY = IYYY - 1
IF (IYYY .LE. 0) IYYY = IYYY - 1
RETURN
end subroutine caldat
EOF
echo
echo Created ${src}.
echo
ls -lh ${src}
echo
echo Compiling ${src} ...
echo
echo ${f90} ${opt} ${src} -o ${exe}
echo
${f90} ${opt} ${src} -o ${exe}
if [ $? -ne 0 ]; then
echo
echo COMPILE ERROR!!!
echo
echo Terminated.
echo
exit 1
fi
echo "Done Compile."
echo
ls -lh ${exe}
echo
echo
echo ${exe} is running ...
echo
${exe} <$nml
if [ $? -ne 0 ]; then
echo
echo ERROR in ${exe}: RUNTIME ERROR!!!
echo
echo Terminated.
echo
exit 1
fi
echo
echo "Done ${exe}"
echo
cat <<EOF>$ctl
DSET ${odir}/${ofle}
UNDEF -99.9
OPTIONS little_endian template
TITLE APHRO_JP V1207 daily precipitation
XDEF 460 LINEAR 123.025 0.05
YDEF 440 LINEAR 24.025 0.05
ZDEF 01 LEVELS 1
TDEF 365 LINEAR 01JAN${yyyy} 1dy
VARS 1
precip 1 00 daily precipitation (mm/day)
ENDVARS
EOF
echo
echo GrADS ctl file: $ctl
echo
echo
echo Done $(basename $0).
echo
----------------------
End of aphro.jp.read.sh
----------------------