Index of /arch/comptech/fct/src-2D
      Name                    Last modified       Size  Description

[DIR] Parent Directory 13-Feb-2006 13:02 - [TXT] Makefile 17-Nov-1997 14:35 1k [TXT] SIGEN.htm 12-Oct-2008 09:52 1k [TXT] cal_module.f90 20-Jan-1998 15:07 17k [TXT] dcl_module.f90 20-Jan-1998 14:46 4k [TXT] main.f90 20-Jan-1998 15:30 5k [TXT] param_module.f90 22-Nov-1997 17:18 1k

 表題	二次元トレーサー移流モデル(剛体回転)

 履歴	97/11/20	小高正嗣
 	98/01/20	小高正嗣

●ファイル構成

	./Makefile		コンパイル用メイクファイル
				(Linux用  nag f90 コンパイラ対応)
	./main.f90		メインプログラム
	./param_module.f90	パラメータモジュール
	./cal_module.f90	各種計算実行モジュール
	./dcl_module.f90	dcl5 描画モジュール

●変数の格子配置

	Arakawa C グリッド配置.
		

●メインルーチンのフローチャート

	0. 各種モジュールの読み込み
		USE param_module
		USE cal_module
		USE dcl_module

	1. 変数の定義
		TRC_1	上流差分
		TRC_2	二次中心差分
		TRC_3	MPDATA
		TRC_4	FCT

	2. 初期値の設定( 円錐形分布 )
		
		円筒分布も計算できるように追加(1998/01/20)

	3. 描画の前処理( dennou_set )

	4. 初期値の描画( get_ptval, dennou_draw )

	5. メインループ
		二次/四次中心差分, FCT を用いた計算では, 時間方向に
		2次のルンゲクッタ(修正オイラー法)を用いている.
		MPDATA では時間方向に前進差分で計算.
		
	6. 描画の終了( dennou_cls )


●モジュール・サブルーチン説明

	./param_module.f90

		機能
			基本パラメータの設定.	

		注意
			メインプログラムを含めた全てのルーチンに呼ばれる.
			各ルーチンにおいて陽に定義されてないパラメータは
			全てこのモジュールにおいて定義されている.


	./cal_module.f90

	   ・get_dtrc_C2_2D

		機能	
			二次中央差分による増分計算ルーチン.
		
		呼出方法
			call get_dtrc_C2_2D( u, v, TRC, DTRC )

		パラメータ
			 u	(R)	流速1(in)
			 v	(R)	流速2(in)
			 TRC	(R)	変数(in)
			 DTRC	(R)	変数増分(out)

		注意
			内部で get_mval_2D, bound2 を呼ぶ.
			

	   ・get_dtrc_C4_2D

		機能	
			四次中央差分による増分計算ルーチン.
		
		呼出方法
			call get_dtrc_C4_2D( u, v, TRC, DTRC )

		パラメータ
			get_dtrc_C2_2D に同じ.

		注意
			get_dtrc_C2_2D に同じ.


	   ・get_dtrc_u1_2D

		機能
			一次上流差分による増分計算ルーチン.

		呼出方法
			call get_dtrc_u1_2D( u, v, TRC, DTRC )

		パラメータ
			get_dtrc_C2_2D に同じ

		注意
			内部で bound2 を呼ぶ.
			get_dtrc_u_mpdata_2D から呼ばれる.


	   ・get_dtrc_u_mpdata_2D

		機能	
			MPDATA スキームのための反復計算用ルーチン.

		呼出方法
			call get_dtrc_u_mpdata_2D( u, v, TRC, \
			                           udif, vdif, DTRC )

		パラメータ
			u	(R)	流速1(in)
			v	(R)	流速2(in)
			TRC	(R)	変数(in)
			udif	(R)	拡散流速1(out)
			vdif	(R)	拡散流速1(out)
			DTRC	(R)	変数増分(out)
		
		注意
			内部で get_dtrc_u1_2D, get_mval_2D, get_mval_utov,
			get_mval_vtou, bound2 を呼ぶ.


	   ・get_dtrc_fct_2D

		機能	
			FCT スキームのための増分計算用ルーチン.
			上流差分と2次中心差分を用いている.

		呼出方法
			call get_dtrc_fct_2D( u, v, TRC, DTRC )

		パラメータ
			u	(R)	流速1(in)
			v	(R)	流速2(in)
			TRC	(R)	変数(in)
			DTRC	(R)	変数増分(out)
		
		注意
			内部で get_dtrc_u1_2D, bound2 を呼ぶ.
			また専用の内部計算ルーチン get_aflux, limit_aflux,
			get_limitval, get_cfact を呼ぶ.

	   ・get_mval_2D

		機能	
			半整数格子上のスカラー変数値計算ルーチン.

		呼出方法
			call get_mval_2D( val, mval_x, mval_y )

		パラメータ
			val	(R)	変数(in)
			mval_x	(R)	変数(半整数格子上: 第1座標方向)(out)
			mval_y	(R)	変数(半整数格子上: 第2座標方向)(out)

		注意
			get_dtrc_C2_2D, get_dtrc_C2_2D, get_dtrc_u_mpdata_2D
			から呼ばれる下位ルーチン
			
			2 点平均だと計算不安定を起こしやすいので, 
			6 点平均で求めてある.


	   ・get_mval_utov

		機能	
			u 格子上変数の v 格子上変数値計算ルーチン.

		呼出方法
			call get_mval_utov( val_u, val_v )

		パラメータ
			val_u	(R)	u 格子上変数(in)
			val_v	(R)	v 格子上変数(out)

		注意
			get_dtrc_u_mpdata_2D から呼ばれる下位ルーチン
			
			周囲の 4 点の平均値を求めている.
			境界で val_u を対称と仮定している.


	   ・get_mval_vtou

		機能	
			v 格子上変数の u 格子上変数値計算ルーチン.

		呼出方法
			call get_mval_vtou( val_v, val_u )

		パラメータ
			val_v	(R)	v 格子上変数(in)
			val_u	(R)	u 格子上変数(out)

		注意
			get_dtrc_u_mpdata_2D から呼ばれる下位ルーチン
			
			周囲の 4 点の平均値を求めている.
			境界で val_v を対称と仮定している.


	   ・get_plotval( val, pval )

		機能	
			座標格子点上のスカラー変数値計算ルーチン.
			周囲の 4 点の平均値を求める.

		呼出方法
			call get_plotval( val, pval )

		パラメータ
			val	(R)	変数(in)
			pval	(R)	変数(座標格子上)(out)


	   ・bound2

		機能
			境界条件計算ルーチン.

		呼出方法
			call bound2( val )
		
		パラメータ
			val	(R)	変数(inout)

		注意
			各増分計算ルーチンからも呼ばれる.
			壁で対称な条件を与えている.


	./dcl_module.f90

	   ・dennou_set

		機能
			dcl5 の初期設定

		呼出方法
			call dennou_set(pictn)

		パラメータ
			pictnm	(I)	1 画面に描く絵の数(in)
					  2: 	 2枚
					  4: 	 4枚
					  その他:1枚

	   ・dennou_draw

		機能
			dcl5 による 3D 描画

		呼出方法
			call dennou_draw( xplot, yplot, vplot, \
					  theader, header )

		パラメータ
			xplot	(R)	第1方向座標配列(in)
			yplot	(R)	第2方向座標配列(in)
			vplot	(R)	描画変数配列(in)
			theader	(C)	時刻ヘッダー(in)
			header	(C)	ヘッダー(in)

		注意
			dcl5 のサンプルプログラム map3d6.f
			($DCLDIR/demo/rakuraku/map3d/map3d6.f)を
			ほぼそのまま使用した.
			但し全ての点を描画すると線が込むので半分に
			間引いてある.
			


	   ・dennou_cls

		機能
			dcl5 の終了

		呼出方法
			call dennou_cls