• 検索結果がありません。

manual osc0d 最近の更新履歴 A First Course in Numerical AtmosphericOceanic Modelling manual osc0d

N/A
N/A
Protected

Academic year: 2018

シェア "manual osc0d 最近の更新履歴 A First Course in Numerical AtmosphericOceanic Modelling manual osc0d"

Copied!
10
0
0

読み込み中.... (全文を見る)

全文

(1)

2.振動方程式

2.1 出

今回 振動現象を表現 簡単 形 方程式を考え 。振動論 関 知識 ,

波動現象を理解 基礎 ,今回 内容 ,大気 海洋 け 波,光 =

電磁波 性質を理解 うえ 非常 役 立 。

い ,あ 物体 バネ い 状況を考え 。 々 経験的 ,バネを引 張

際 ,バネ 伸び 大 け 大 いほ バネ 復元力 大 く を知 い 。こ

を数学的 表現 フッ 法則 あ 。フッ 法則 ,バネ 伸びをx

バネ 復元力=kx, (2.1)

表さ 。右辺 負号 ,バネ 伸び 方向 逆向 バネを引 戻 う 力 働

くこ を意味 い 。ここ ,k バネ定数 呼 定数 あ 。今,物体 居

位置 x け動い 。こ こ を 物体 変位 x あ 言う。今,バネ 物

体 い ,物体 変位 x あ バネ x け伸び こ 。

物体 度 ,物体 変位x 時間微分 =微 時間内 x 変化 表さ 。

わ , dt dx

v= / , (2.2)

あ 。 ,物体 加 度 a 度 時間微分 =微 時間内 v 変化 ,

dt dv

a= / , (2.3) あ 。式(2.4) (2.5) ,

2 2

dt x d dt dx dt

a d =

 

=  , (2.4)

。今,物体 質量をm 。物体 働く力 バネ 復元力 け 仮定 ,式

(2.2) ニュ トン 運動 第 2 法則 , kx

dt x md =−

2 2

, (2.5)

いう方程式 得 。式(2.5)を,ここ 便宜的 振動方程式 称 。

練習 1 m= k =1, x=1.0v=0.0 (at t=0) (2.5) 解析解(x, v)を求 。 練習 2 (2.7)式 表さ 振動 周期を m, k, πを使 表せ。

2.2 数値解

式(2.7)を数値的 解く 若干 工夫 必要 あ 。式(2.5) 時間t 2 階微分

さ ,こ を直接数値積分 や い あ 。ここ ,式(2.5)を う

(2)

2 分け 考えv

dt

dx/ = , (2.6) kx

dt

dv/ = , (2.7)

式(2.12),(2.13)を前進差分 近似 , , )

) ( ( )

( v t

t t x t t

x =

+ , (2.8)

) ) (

( )

( x t

m k t

t v t t

v =−

+ , (2.9)

。今回 式(2.8) (2.9)を数値的 解い 。

練習 3 m=1, k=0.1, x(t=0)=1, v(t=0)=0, t=0.1 , t=0 0.3 x vを手計算 計算

せ 。電卓 使用可。

演習 1

末尾 添付 プロ ム(osc0d.f90) (2.8), (2.9) 相当 部分を作 せ 。

演習 2

完 させ プロ ム 内容 各部 う 処理を行 い ,口頭 説明せ 次

回行う 。

演習 3

初期条件 練習 1 同 。時間刻 を∆t=0.05 プロ ム osc0d.f90 を動 ,

以 示 図を作図せ 。

i)横軸 t, 縦軸 x, v を フ 時系列 呼ぶ 。

ii)横軸 x,縦軸 vを フ 相図 呼 こ あ 。

iii)横軸 t, 縦軸 x 解析解 x 数値解 差を フ

計算回数(n) 少 く 振動 5 周期以 う 設定せ 。

実行用シェ ス プト(osc0d.run.sh) 作図用ス プト サンプ (plot.sh)を末尾 添付

osc0d.run.sh 実行例

$ osc0d.run.sh

-rw-rw-r-- 1 am am 1.1K 9 月 29 10:12 osc0d.f90

(3)

Done Compile.

-rwxrwxr-x 1 am am 788K 9 月 29 10:21 osc0d.exe

osc0d.exe is running ...

# Parameters:

# m = 1.00000 # k = 1.00000 # t0= 0.00000 # te= 30.00000 # x0= 1.00000 # v0= 0.00000 # dt= 0.05000 # n = 600 Output file : osc0d_result.txt

Done osc0d.exe.

プロ ム例(osc0d.f90)

(2.8), (2.9) 相当 部分 自分 追加 program osc0d

character(len=5000)::outfile real::m, k, t0, te, x0, v0, dt

namelist /para/m, k,t0, te, x0, v0, dt, outfile

read(*,para)

pi = atan(1.)*4.

(4)

n=(te-t0)/dt

open(20,file=outfile)

write(20,'(A,f10.5)')'# m =',m write(20,'(A,f10.5)')'# k =',k write(20,'(A,f10.5)')'# t0=',t0 write(20,'(A,f10.5)')'# te=',te write(20,'(A,f10.5)')'# x0=',x0 write(20,'(A,f10.5)')'# v0=',v0 write(20,'(A,f10.5)')'# dt=',dt write(20,'(A,i10 )')'# n =',n write(20,'(A )')'# t, x, v'

t=t0 x=x0 v=v0

write(20,'(f10.5,2e14.6)')t,x,v

do i=1,N

t=t0+dt*float(i)

!ADD YOUR OWN CODE HERE

x=xnew v=vnew

write(20,'(f10.5,2e14.6)')t, x, v

enddo !i

(5)

print '(A)','# Parameters:' print '(A,f10.5)',' # m =',m print '(A,f10.5)',' # k =',k print '(A,f10.5)',' # t0=',t0 print '(A,f10.5)',' # te=',te print '(A,f10.5)',' # x0=',x0 print '(A,f10.5)',' # v0=',v0 print '(A,f10.5)',' # dt=',dt print '(A,i10 )',' # n =',n print *

print '(A)', 'Output file : ',trim(adjustl(outfile)) print *

end program osc0d

実行用シェ ス プト (osc0d.run.sh)

#!/bin/bash

#

# Description:

#

src=$(basename $0 .run.sh).f90 exe=$(basename $0 .run.sh).exe nml=$(basename $0 .run.sh).nml

f90=ifort

opt="-CB -traceback -fpe0"

# SET PARAMETERS m=1.0

k=1.0 t0=0.0 te=30.0 x0=1.0 v0=0.0 dt=0.05

outfile=$(basename $0 .run.sh)_result.txt

(6)

# CHECK IF SOURCE FILE SURELY EXISTS. if [ ! -f $src ]; then

echo

echo ERROR in $0 : No such file, $src echo

exit 1 fi

echo

ls -lh $src echo

# CREATE NAMELIST FILE cat <<EOF>$nml

&para m=${m}, k=${k}, t0=${t0}, te=${te}, x0=${x0}, v0=${v0}, dt=${dt},

outfile="${outfile}",

&end EOF

# COMPILE SOURCE FILE echo Compiling $src ... ifort $opt $src -o $exe if [ $? -ne 0 ]; then echo

(7)

echo

echo Terminated. echo

exit 1 fi

echo "Done Compile." echo

ls -lh $exe echo

# RUN THE PROGRAM 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

作図用ス プト サンプ (plot.sh) Generic Mapping Tools 4.4.0 使用

#!/bin/bash

# Description:

#

# Author: am

#

# Host: localhost

# Directory: /work2/am/TEACHING/Numerical.Modelling/01.damp0d

(8)

#

# Revision history:

# This file is created by /usr/local/mybin/ngmt.sh at 09:58 on 09-28-2017.

echo "Bash script $0 starts."

gmtset MEASURE_UNIT INCH gmtset LABEL_FONT_SIZE 18 gmtset HEADER_FONT_SIZE 20 gmtset ANOT_FONT_SIZE 18 gmtset TICK_PEN 4

dash="t15_5:15" sp="¥040"

range=0/30/-3.0/3.0 size=X4/4

xanot=a5f1 yanot=a1.0f0.5

anot=${xanot}:"t":/${yanot}:"x${sp}or${sp}v":WSne

in=$1

if [ ! -f $in ]; then

echo Error in $0 : No such file, $in exit 1

fi

out=${figdir}$(basename $in .txt).ps

awk '{if ($1!="#") print $1,$2}' $in |

psxy -R$range -J$size -B$anot -W3 -X1.5 -Y3 -P -K >$out

awk '{if ($1!="#") print $1,$3}' $in |

(9)

psxy <<EOF -R -J -W3 -O -K >>$out 20 -1.2

22 -1.2 EOF

pstext <<EOF -R -J -O -K >>$out 22.5 -1.2 12 0 0 CM x

EOF

psxy <<EOF -R -J -W3${dash} -O -K >>$out 20 -1.4

22 -1.4 EOF

pstext <<EOF -R -J -O -K >>$out 22.5 -1.4 12 0 0 CM v

EOF

# PRINT HEADER export LANG=C xoffset=

yoffset=5 comment=

currentdir=`pwd`

if [ ${#currentdir} -gt 90 ]; then curdir1=${currentdir:1:90}

curdir2=${currentdir:91} else

curdir1=$currentdir curdir2="¥ "

fi

now=`date`

host=`hostname`

#comment=" "

time1=$(ls -l $in | awk '{print $6, $7, $8}')

pstext -JX6/1.2 -R0/1/0/1.2 -N -X${xoffset:-0} -Y${yoffset:-0} << EOF -O >> $out

(10)

0 1.1 9 0 1 LM $0 $@ 0 0.95 9 0 1 LM ${now} 0 0.80 9 0 1 LM ${host} 0 0.65 9 0 1 LM ${curdir1} 0 0.50 9 0 1 LM ${curdir2}

0 0.35 9 0 1 LM Input: ${in} (${time1}) 0 0.1 9 0 1 LM ${comment:-""}

EOF

# Output: ${out}

echo

echo Input : $in echo Output : $out echo

echo "Done $0"

参照

関連したドキュメント

マユ はい。.

BC107 は、電源を入れて自動的に GPS 信号を受信します。GPS

ZoomのHP https://zoom.us にアクセスし、画面右上の「サインアップは無料です」をクリッ

[r]

必要な情報をすぐ探せない ▶ 部品単位でのリンク参照が冊子横断で可能 二次利用、活用に制約がある ▶

Windows Mobile デバイスセンターまたは ActiveSync をインストールすることで、パソコ ンと FC-250 との間でパートナーシップの設定や、Microsoft Outlook

Therefore, on the EVB, remove the appropriate resistors such that CLK1A &amp; CLK1B defaults to LVCMOS output configuration, and the CLK1AB SMA connector is open (Figure 13).. Use

VCC When using DC−DC converter powered by different voltage as the primary side of the driver Power supply for DC−DC converter need to be connected to the VCC pin on P1.. ANB SET