/work2/kunoki/to_manda_sensei/Tools/U10.Ship/01.Raw.UTC
#!/bin/sh
exe=nagasaki.maru.meteo.UTC
namelist=namelist.${exe}
indir=/work2/kunoki/to_manda_sensei/Data/ECS_OBS/Ship_weather
#in=20120616.DAT
in=20120615.DAT
out=$(basename $in .DAT).raw.UTC.txt
cat <<EOF > $namelist
¶
infle="${indir}/${in}" ! input file
&end
EOF
echo Input: ${indir}/${in}
echo Output: ${out}
$exe < $namelist > $out
exit 0
makefile
#j 参考文献
#j makefile の書き方
#j http://www.eis.osakafu-u.ac.jp/~yabu/soft/makefile.html
#j Makefile小技と新バージョンのDelFEM(FEMとUIの日記@New York)
#j http://d.hatena.ne.jp/etopirika5/20091207/1260207955
#
#-----------------------------------------
#j マクロの定義
#-----------------------------------------
#j コンパイラの指定
FC=ifort
#FC=gfortran
#FC=g77
#FC=f77
#j OBJDIR (オブジェクトファイルをおくディレクトリ)
OBJDIR=../obj
#-----------------------------------------
#j コンパイルオプション(ifort)
#-----------------------------------------
#j デバッグ用オプション(はじめて実行するときには必ずこのオプションをつけてコンパイルする)
FDFLAGS= -CB -traceback -fpe0
#j コンパイルオプション
FFLAGS=-module ${OBJDIR}
#j -module : モジュールファイル(.mod)を置く場所を指定する
#j 最適化用(他にも何種類かある. ifort -helpかマニュアルを見て調べる)
#FFLAGS = -O3 -module ${OBJDIR}
#j 倍精度
#FFLAGS = -r8 -module ${OBJDIR}
#j 入力データのバイト・スワップ(大型計算機のバイナリデータを読む時などにつかう)
#FFLAGS = #-convert big_endian -module ${OBJDIR}
#-----------------------------------------
#j リンク用のオプション
#-----------------------------------------
LDFLAGS=-module ${OBJDIR}
#j ターゲット名(最終的に作りたい実行ファイル名)
TARGET1=nagasaki.maru.meteo.UTC
TARGET2=
TARGETS=$(TARGET1) $(TARGET2)
#j MOD (Fortran90以降のモジュールファイル)
MOD=
#j SRC7 (Fortran77のソースファイル)
SRC7=
#j SRC9 (Fortran90のソースファイル)
SRC9=nagasaki.maru.meteo.UTC.f90
#j OBJ1 (ターゲットを作るのに必要なオブジェクトファイル名)
OBJM=$(MOD:.f90=.o)
OBJ7=$(SRC7:.f=.o)
OBJ9=$(SRC9:.f90=.o)
OBJTMP=$(OBJM) $(OBJ7) $(OBJ9)
OBJ1=$(OBJTMP:%=${OBJDIR}/%)
MOD2=
#j SRC7 (Fortran77のソースファイル)
SRC72=
#j SRC9 (Fortran90のソースファイル)
SRC92=
#j OBJ (ターゲットを作るのに必要なオブジェクトファイル名)
OBJM2=$(MOD2:.f90=.o)
OBJ72=$(SRC72:.f=.o)
OBJ92=$(SRC92:.f90=.o)
OBJTMP2=$(OBJM2) $(OBJ72) $(OBJ92)
OBJ2=$(OBJTMP2:%=${OBJDIR}/%)
OBJ=$(OBJ1) $(OBJ2)
#-----------------------------------------
#j ここからコンパイルのルールの記述
#-----------------------------------------
all: mkobjd $(TARGETS)
$(TARGET1): $(OBJ1)
$(FC) -o $@ $(OBJ1) ${LDFLAGS}
$(TARGET2): $(OBJ2)
$(FC) -o $@ $(OBJ2) ${LDFLAGS}
#j 暗黙のサフィックスルールを無効にする
.SUFFIXES:
#j サフィックスの追加
.SUFFIXES: .o .f .f90
#j f77のソースファイルのコンパイル(.f用のサフィックスルール)
${OBJDIR}/%.o : %.f
$(FC) -c ${FDFLAGS} ${FFLAGS} -c -o $@ $<
#j f90のソースファイルのコンパイル(.f90用のサフィックスルール)
${OBJDIR}/%.o : %.f90
$(FC) -c ${FDFLAGS} ${FFLAGS} -c -o $@ $<
#j オブジェクトファイルを削除
clean:
rm -rf $(OBJ) ${OBJDIR}/*.mod
#j オブジェクトファイルと実行ファイルを削除
distclean:
rm -rf $(OBJ) ${OBJDIR}/*.mod $(TARGETS) \
rm -rf ${OBJDIR}
#j オブジェクトファイルを置くディレクトリを作成
mkobjd:
if [ ! -d ${OBJDIR} ]; then \
mkdir -p ${OBJDIR} ; \
fi
#j tarファイルを作る
tar:
tar cvf $(TARGET1).tar ./*.f90 ./*.f ./*.c ./*.h ./*.txt makefile
nagasaki.maru.meteo.UTC.f90
program meteo
! Description: Read Nagasaki-Maru's Meteorol. data
! 列 データの種類 変数の名前
! 1 日付 yy,mm,dd
! 2 時刻 hh,mm
! 3 緯度 lat(dd,mm.mmm)
! 4 経度 lon(ddd,mm.mmm)
! 5 波高 wh(m)
! 6 周期 wp(s)
! 7 真風向 wd(deg)
! 8 風速(knot) ws(knot) 1 knot=0.514 m/s
! 9 気温 ta(deg)
!10 水温 ts(deg)
!11 気圧 pr(hPa)
!12 ジャイロ方位 gyr(deg)
!13 速力 ss(knots)
! 真風向の定義:北=0度、時計回りにはかる。北より(南向き)の風=0度、東より(西向き)の風=90度
!
! Author: aym
!
! Host: aofd30
! Directory: /work1/aym/11.Work10/03.ECS/01.Obs_Amami/21.check_raw
!
! Revision history:
! 2011-01-14 16:55
! Initial Version
! use
! implicit none
character(len=500)::infle
character strm*500,ymd*12,hms*10,lat*14,lon*15
integer yr,mo,dy,hr,mi,sc,latd,lond
integer uyr, umo, udy, uhr !UTC
real latm,lonm
namelist /para/infle
read(*,nml=para)
print '(A)','# date(yyyy,mm,dd) time_UTC(hh,mm) lat(dd,mm.mmm) lon(ddd,mm.mmm) wh(m) wp(s) wd(deg) ws(knot) ta(degC) ts(degC) p(hPa) gyr ss'
open(10,file=infle,action="read")
10 continue
read(10,'(A)',end=20)strm
if(strm(1:1)=="#")goto 10
read(strm(1:54),'(A,1x,A,1x,A,1x,A)')ymd,hms,lat,lon
read(strm(56:),*)wvh,wvp,wid,wis,ta,tw,pr,gyd,shs
read(ymd(2:5),*)yr
read(ymd(7:9),*)mo
read(ymd(10:11),*)dy
read(hms(2:3),*)hr
read(hms(5:6),*)mi
read(hms(8:9),*)sc
read(lat(2:3),*)latd
read(lat(6:11),*)latm
read(lon(2:4),*)lond
read(lon(7:12),*)lonm
call lst2utc(yr,mo,dy,hr, uyr, umo, udy, uhr, +9)
print '(i5.4,2i3.2,3i3.2, i3,f7.3, i4,f7.3, f7.1,f7.1,f10.3,f8.1,f7.2,f7.1,f7.1,2f8.1)',&
uyr,umo,udy,uhr,mi,sc, latd,latm,lond,lonm ,wvh,wvp,wid,wis,ta,tw,pr,gyd,shs
goto 10
20 continue
write(*,*)
end program meteo
subroutine lst2utc(lyr,lmo,ldy, lhr, uyr, umo, udy, uhr, tdh)
! Description:
!
! Author: am
!
! Host: aofd165.fish.nagasaki-u.ac.jp
! Directory: /work2/kunoki/to_manda_sensei/Tools/MGDSST.AlongTrack
!
! Revision history:
! This file is created by /usr/local/mybin/nff.sh at 09:19 on 09-12-2014.
! Reference
! 1行で書けるうるう年判別法
! http://d.hatena.ne.jp/Kappuccino/20081025/1224906495
!
implicit none
integer,intent(in):: lyr,lmo,ldy, lhr
integer,intent(inout)::uyr,umo,udy, uhr
integer,intent(in):: tdh
integer y
integer,dimension(12)::last_day
data last_day/31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31/
uyr=lyr
umo=lmo
udy=ldy
uhr=lhr
uhr=lhr-tdh
if(uhr<0)then
uhr=uhr+24
udy=udy-1
endif
if(udy<=0)then
umo=umo-1
udy=last_day(umo)
if(umo == 2)then
y=uyr
udy = 28 + (1 / (y - y / 4 * 4 + 1)) * &
& (1 - 1 / (y - y / 100 * 100 + 1)) &
& + (1 / (y - y / 400 * 400 + 1));
endif
endif
if(umo<=0)then
umo=1
uyr=uyr-1
endif
end subroutine lst2utc
入力データのサンプル: 20120615.DAT
"2012/06/15","09:31:00","32°48.680'N","129°46.313'E",0.4,10,104.9,0.9,24,22.6,1010.5,27,0
"2012/06/15","09:32:00","32°48.681'N","129°46.313'E",0.4,10,116.8,2,24,22.6,1010.5,27,0
"2012/06/15","09:33:00","32°48.680'N","129°46.313'E",0.4,10,126.8,2.4,23.7,22.6,1010.7,27,0
"2012/06/15","09:34:00","32°48.681'N","129°46.314'E",0.4,10,125.9,2.1,23.7,22.6,1010.5,27.2,0
"2012/06/15","09:35:00","32°48.680'N","129°46.314'E",0.4,10,126,1.2,23.9,22.5,1010.5,27.2,0
"2012/06/15","09:36:00","32°48.681'N","129°46.314'E",0.4,10,127,0.4,24,22.5,1010.4,27,0
"2012/06/15","09:37:00","32°48.680'N","129°46.313'E",0.4,10,127.4,0.5,24,22.6,1010.4,27.3,0
"2012/06/15","09:38:00","32°48.680'N","129°46.313'E",0.4,10,131.5,2.6,23.8,22.5,1010.5,27,0
"2012/06/15","09:39:00","32°48.680'N","129°46.313'E",0.4,10,133.7,3.3,23.8,22.6,1010.4,27.2,0
"2012/06/15","09:40:00","32°48.680'N","129°46.314'E",0.4,10,129.8,3.5,23.8,22.5,1010.6,27.2,0
"2012/06/15","09:41:00","32°48.680'N","129°46.313'E",0.4,10,125.5,3.1,23.8,22.5,1010.5,27.2,0
"2012/06/15","09:42:00","32°48.681'N","129°46.313'E",0.4,10,124.7,2.4,23.9,22.5,1010.5,27.2,0
"2012/06/15","09:43:00","32°48.680'N","129°46.313'E",0.4,10,118.3,2.8,23.8,22.6,1010.5,27.2,0
"2012/06/15","09:44:00","32°48.680'N","129°46.313'E",0.4,10,117.7,2.3,23.9,22.6,1010.5,27.4,0
"2012/06/15","09:45:00","32°48.680'N","129°46.314'E",0.4,10,108.5,2.2,23.9,22.5,1010.4,27.2,0
"2012/06/15","09:46:00","32°48.681'N","129°46.314'E",0.4,10,96.9,1.3,23.9,22.5,1010.6,27.2,0