生活の中のシミュレーション(番外編)


 巨大隕石衝突後の熱シミュレーション 条件/隕石衝突後1年間が、4000度の場合

    (隕石衝突の後、10年後の結果)


※温室効果ガス(水蒸気など)が考慮されていないのでもっと厳しい結果になる。
※衝突点の反対側の極(北極又は南極)地方は、直射の太陽光の熱供給は考慮し
 なくてよい分、このモデルに近くなる。 
------------------------------------------------------------------------------------------
 十進BASIC

!  ■■■■巨大隕石衝突後の熱伝導シミュレーション■■■■
 
!----------初期設定0-------------
OPTION ARITHMETIC NATIVE
OPTION BASE 0
LET  WID=200
LET  depth=600
DIM T(depth)
LET  K273=273
LET  B=10  !標準文字サイズ
SET TEXT FONT "MS ゴシック",B
SET WINDOW  -1,WID,-depth,depth
SET TEXT COLOR 4  !  白0黒1青2緑3赤4水5黄6
LET  MAX_TE=4000+K273
!--------------------------------

!----------初期設定1-------------
LET  d=1.5   !土の熱伝導率  J/(sec・m・K)  温度差が1℃の時、1mの厚さを1秒に流れる熱量
!  コンクリートの体積比熱(≒1.92倍)を参考にした仮の値
LET  J_BOX=1.9*(4.18*10^6) !  土の熱容量  J/(m3・K)
LET  σ=5.67*10^(-8)  !  (watt/udeg4)
!  放射の速度は、シュテファン・ボルツマンの法則
!  M=σ・T^4(watt/u)    T:絶対温度
!  σ:5.67×10^-8(watt/udeg4) 
!--------------------------------


CALL ini ! 地中の温度を40℃に設定
PLOT TEXT ,AT 0,depth*0.9 : "■熱伝導シミュレーション■  〜巨大隕石衝突後〜  しばらくおまちください"
PLOT TEXT ,AT 0,depth*0.2 : "  巨大隕石が衝突!!"
PLOT TEXT ,AT 0,depth*0.05 : "地表面"
PRINT "隕石が衝突!!"
CALL ini4000
PRINT "地表を4000℃に設定で描画"
CALL DRAWING


PRINT "本計算開始!!"

DO
   IF TIM<24*365.25  THEN
      CALL ini4000
   ELSE
      LET  T(0)=T(0)-σ*T(0)^4/J_BOX  !  熱放射式  シュテファン・ボルツマン
   END IF
   
   IF INT(TIM/1000)=TIM/1000  THEN 
      PRINT TIM;"時間経過"
      ! beep 1000,100
   END  IF
   CALL CALC1    !計算部モジュール
   CALL TEXT1    !文字表示モジュール
   LET  TIM=TIM+1
   CALL MAXTEMP !最大の温度を検知
LOOP UNTIL MAX_TE<=50+K273 AND TIM>0

PRINT "終了!!"


!-------------------サブルーチン-------------------------
SUB TEXT1
   IF TIM<>0 AND  INT(TIM/1000)=TIM/1000  THEN
      CLEAR
      PLOT TEXT ,AT 0,depth*0.9 : "■熱伝導シミュレーション■  〜巨大隕石衝突後〜"
      PLOT TEXT ,AT 0,depth*0.8 :   "  隕石衝突後  "&STR$(TIM)&"時間(= "&STR$(ROUND(TIM/24/365.25,2))&"年)経過"
      PLOT TEXT ,AT 0,depth*0.57 : "  土の熱伝導率(仮):  "&STR$(d)&"W/(m・deg)"
      PLOT TEXT ,AT 0,depth*0.5 : "  土の熱容量(仮):  "&STR$(J_BOX/1000)&"kJ/(m3・deg)"
      
      
      IF TIM>24*365.25  THEN
         SET TEXT COLOR 2
         PLOT TEXT ,AT 0,depth*0.2 : "◆地球が冷える・・・熱放射式  W = σ・T^4"
         SET TEXT COLOR 4
      ELSEIF TIM<24*365.25  THEN
         PLOT TEXT ,AT 0,depth*0.2 : "  地球は岩石蒸気で覆われる・・・ 約1年間"
      END IF
      
      IF T(0)<100+K273  THEN
         SET TEXT COLOR 2
         PLOT TEXT ,AT 0,depth*0.12 : "  そして、雨も降りはじめた・・・ "
         SET TEXT COLOR 4
      END IF
      
      
      PLOT TEXT ,AT 0,depth*0.05 : "地表面  温度  "&STR$(ROUND(T(1)-K273,2))&"℃"
      CALL DRAWING
      
      SET TEXT COLOR 4
      PLOT TEXT ,AT WID*0.8,depth*0.2  :"■〜400℃"
      SET TEXT COLOR 6
      PLOT TEXT ,AT WID*0.8,depth*0.15 :"■400〜100℃"
      SET TEXT COLOR 3
      PLOT TEXT ,AT WID*0.8,depth*0.1 :"■100〜50℃"
      SET TEXT COLOR 2
      PLOT TEXT ,AT WID*0.8,depth*0.05 :"■50℃以下"
      SET TEXT COLOR 5
      PLOT TEXT ,AT WID*0.45,-depth*0.0 : "深さ:"&STR$(depth*0)&"m"
      PLOT TEXT ,AT WID*0.45,-depth*0.5 : "深さ:"&STR$(depth*0.5)&"m"
      PLOT TEXT ,AT WID*0.45,-depth : "深さ:"&STR$(depth)&"m"
      SET TEXT COLOR 4  ! 白0黒1青2緑3赤4水5黄6
   END IF
END SUB


SUB ini4000  ! 地表1mを4000℃に設定
   FOR J=0 TO 1
      LET  T(J)=4000+K273
   NEXT J
END SUB


SUB CALC1
   FOR J=1 TO depth-1
      LET  冲emp=T(J-1)-T(J)  !  境界面の温度差を計算 
      LET  價=(d*1)*冲emp*60*60  !  1m  1時間に移動するエネルギー
      LET  T(J)=價/J_BOX+T(J)
      LET  T(J-1)=-價/J_BOX+T(J-1)
   NEXT J
END SUB


SUB   DRAWING
!    ///〜400℃赤/400〜100℃黄/100〜50℃緑/50℃以下青///
   FOR J=0 TO depth
      IF T(J)<=50+K273  THEN  SET LINE COLOR 2 ! 白0黒1青2緑3赤4水5黄6
      IF T(J)>50+K273  AND  T(J)<=100+K273    THEN  SET LINE COLOR 3
      IF T(J)>100+K273  AND  T(J)<=400+K273    THEN  SET LINE COLOR 6
      IF T(J)>400+K273    THEN  SET LINE COLOR 4
      SET LINE STYLE 1 ! 1実線  2破線  3点線  4一点鎖線
      SET LINE WIDTH 1
      PLOT LINES:0,-J;WID,-J
   NEXT J
END SUB

SUB ini
   FOR J=0 TO depth
      LET  T(J)=40+K273
   NEXT J
END SUB

SUB  MAXTEMP
   LET  MAX_TP=50+K273
   FOR J=0 TO depth
      IF  MAX_TP+K273<T(J)+K273    THEN
         LET  MAX_TP=T(J)
         !  PRINT MAX_TE
      END  IF
      IF  MAX_TP+K273<MAX_TE+K273  THEN LET  MAX_TE=MAX_TP
   NEXT J
END SUB

END


Math TOP