teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助画像・ファイル<IMG>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]

スレッド一覧

  1. スレッドが使えます(2)
  2. Paract BASIC(22)
  3. Amusement_Program(10)
  4. 改修予定のJIS非互換(3)
  5. 複数ページ長編プログラム(新規投稿)(16)
  6. 「十進BASIC第2掲示板」投稿記事リスト(17)
  7. Full BASIC互換ライブラリ(8)
  8. 「十進BASIC掲示板過去ログ」インデックス(トピック)(17)
  9. 人の色覚の数理(14)
  10. 「十進BASIC掲示板過去ログ」インデックス(ツリー)(91)
スレッド一覧(全10)  他のスレッドを探す  スレッド作成

*掲示板をお持ちでない方へ、まずは掲示板を作成しましょう。無料掲示板作成


仕様でしょうか?

 投稿者:しばっち  投稿日:2018年12月11日(火)19時04分26秒
返信・引用
  LOCATE VALUE 文において
配列変数名だとスライドバーの左横側に変数名が表示されません

DIM A(2)
LOCATE VALUE (1):A(1) !'変数名が表示されない
LOCATE VALUE (2):B12345 !'変数名が表示される
LOCATE VALUE (3):A(2) !'変数名が表示されない
LOCATE VALUE (4):A12345 !'変数名が表示される
END



また、下記のようにPROMPT句を書いて各スライドバーの上側か、右横側等に
文字列表示させるようにできませんか?

LOCATE VALUE (1),RANGE 0 TO 360,AT 0,PROMPT "角度":THETA
LOCATE VALUE (2),RANGE 0 TO 100,AT 0,PROMPT "X-移動":XMOVE
LOCATE VALUE (3),RANGE 0 TO 100,AT 0,PROMPT "Y-移動":YMOVE
 
 

配管保温計算

 投稿者:ちゃとら  投稿日:2018年12月 3日(月)12時07分15秒
返信・引用
  配管の保温計算を行うプログラムを作成しましたので投稿させて頂きます。

白石様、しばっち様、nagram様 有り難うございました。

その2

REM *****************************************************************
MODULE aa                        ! モジュール名 aa
REM SET WINDOW 0,1.0,0,1.0
SHARE NUMERIC n
LET n=6                               !対象気体数      6種類  N2,O2,CO2,CO,He,Air
REM TK                                !絶対温度    K
REM Pa                                !圧力  パスカル
SHARE NUMERIC  rho(7)                 !各気体の密度
SHARE NUMERIC  CP(7)                  !  〃    定圧比熱
SHARE NUMERIC CVv(7)                  !  〃    定容比熱
SHARE NUMERIC CPO(7)                  !  〃    定圧分子熱
SHARE STRING  n$(6)                   !気体名称    N2  ,  O2  ,  CO2  ,  CO  ,  He  ,  Air
SHARE NUMERIC mwp(6)                  !質量分率    重量%
SHARE NUMERIC mw(6)                   !分子量      molecular weight
REM Mave                              !平均モル質量
SHARE NUMERIC Xmol(7)                 !モル数
SHARE NUMERIC Xmolb(6)                !モル分率(体積分率)
SHARE NUMERIC mu(7)                   !粘性係数
SHARE NUMERIC phi(6,6)                !粘性係数計算係数
SHARE NUMERIC phix(6,6)
SHARE NUMERIC nu(7)                   !動粘性係数
SHARE NUMERIC alpha(7)                !温度伝導率
SHARE NUMERIC Pr(7)                   !プラントル数
SHARE NUMERIC kk(6)
SHARE NUMERIC lambda(7)               !熱伝導率
SHARE NUMERIC Tc(6)                   !臨界温度    critical temperature
SHARE NUMERIC Pc(6)                   !臨界圧力    critical pressure
SHARE NUMERIC zeta(6)                 !偏心因子
SHARE NUMERIC Ac0(6)                  !Ac0         定圧分子熱の推算式に於ける係数
SHARE NUMERIC Bc0(6)                  !Bc0              〃              〃
SHARE NUMERIC Cc0(6)                  !Cc0              〃              〃
SHARE NUMERIC Dc0(6)                  !Dc0              〃              〃
SHARE NUMERIC Ac1(6)                  !Ac1         定圧比熱の推算式に於ける係数
SHARE NUMERIC Bc1(6)                  !Bc1              〃              〃
SHARE NUMERIC Cc1(6)                  !Cc1              〃              〃
SHARE NUMERIC Dc1(6)                  !Dc1              〃              〃
SHARE NUMERIC Ac2(6)                  !Ac2         定容比熱の推算式に於ける係数
SHARE NUMERIC Bc2(6)                  !Bc2              〃              〃
SHARE NUMERIC Cc2(6)                  !Cc2              〃              〃
SHARE NUMERIC Dc2(6)                  !Dc2              〃              〃
SHARE NUMERIC shiguma (6)             ! σ          各成分気体の特性直径
SHARE NUMERIC epsilonk(6)             ! ε/k        各成分気体の特性エネルギー
SHARE NUMERIC ohmv(6)                 ! Ωv         粘性の衝突積分
SHARE NUMERIC ohmd(8)                 ! Ωd         拡散の衝突積分
SHARE NUMERIC Av,Bv,Cv,Dv,Ev,Fv,Ad,Bd,Cd,Dd,Ed,Fd,Gd,Hd
REM       N2        O2        CO2       CO        He        Air
DATA      N2   ,    O2   ,    CO2  ,    CO   ,    He   ,    Air
DATA  28.0134  ,31.999   ,44.010   ,28.010   ,4.0026   ,28.964   !molecular weight 分子量
DATA    126.2  ,154.6    ,304.2    ,132.9    ,5.19     ,132.5    !Tc               臨界温度    K
DATA     33.5  ,50.1     ,72.8     ,34.5     ,2.24     ,37.2     !Pc               臨界圧力    atm  760mmhg  101325Pa
DATA    0.040  ,0.021    ,0.225    ,0.049    ,-0.387   ,0        !ζ   zeta        偏心因子
DATA    7.440  ,6.713    ,4.728    ,7.373    ,0        ,0        !Ac0              定圧分子熱の推算式に於ける係数
DATA   -0.324  ,-8.79E-5 ,1.754    ,-0.307   ,0        ,0        !Bc0(×10^-2)          〃              〃
DATA    6.400  ,4.170    ,-13.38   ,6.662    ,0        ,0        !Cc0(×10^-6)          〃              〃
DATA   -2.790  ,-2.544   ,4.097    ,-3.037   ,0        ,0        !Dc0(×10^-9)          〃              〃
DATA  0.938314 ,0.817026 ,0.618542 ,0.929207 ,0        ,0.905673 !Ac1              定圧比熱の推算式に於ける係数
DATA  2.95732  ,3.87124  ,9.43157  ,3.43656  ,0        ,3.10391  !Bc1(×10^-4)          〃              〃
DATA -7.31507  ,-14.1476 ,-39.2290 ,-10.0711 ,0        ,-8.59483 !Cc1(×10^-8)          〃              〃
DATA  5.81796  ,19.9678  ,54.4078  ,10.1493  ,0        ,8.56212  !Dc1(×10^-12)         〃              〃
DATA  0.656848 ,0.547045 ,0.396046 ,0.641668 ,0        ,0.625027 !Ac2              定容比熱の推算式に於ける係数
DATA  2.46015  ,4.12982  ,10.5300  ,3.13564  ,0        ,2.89050  !Bc2(×10^-4)          〃              〃
DATA -3.16796  ,-16.1964 ,-48.3891 ,-7.57080 ,0        ,-6.76530 !Cc2(×10^-8)          〃              〃
DATA -3.91928  ,24.6892  ,75.8699  ,4.29183  ,0        ,4.17504  !Dc2(×10^-12)         〃              〃
DATA  3.798    ,3.467    ,3.941    ,3.690    ,2.551    ,3.711    !σ               各成分気体の特性直径
DATA  71.4     ,106.7    ,195.2    ,91.7     ,10.22    ,78.6     !ε/k                     と特性エネルギー
REM     Av        Bv        Cv        Dv        Ev        Fv      Ωv              粘性の衝突積分
DATA  1.16145  ,0.14874  ,0.52487  ,0.77320  ,2.16178  ,2.43787  !
REM     Ad        Bd        Cd        Dd        Ed        Fd        Gd        Hd         !Ωd    拡散の衝突積分
DATA  1.06036  ,0.15610  ,0.19300  ,0.47635  ,1.03587  ,1.52996   ,1.76474  ,3.89411     !
REM *******************************************************************
REM *           定数の読み込み                                        *
REM *******************************************************************
FOR i=1 TO n
   READ n$(i)
NEXT i
FOR i=1 TO n
   READ mw(i)
NEXT i
FOR i=1 TO n
   READ Tc(i)
NEXT i
FOR i=1 TO n
   READ Pc(i)
NEXT i
FOR i=1 TO n
   READ zeta(i)
NEXT i
FOR i=1 TO n
   READ Ac0(i)
NEXT i
FOR i=1 TO n
   READ Bc0(i)
   LET Bc0(i)=Bc0(i)*1E-2
NEXT i
FOR i=1 TO n
   READ Cc0(i)
   LET Cc0(i)=Cc0(i)*1E-6
NEXT i
FOR i=1 TO n
   READ Dc0(n)
   LET Dc0(i)=Dc0(i)*1E-9
NEXT i
FOR i=1 TO n
   READ Ac1(i)
NEXT i
FOR i=1 TO n
   READ Bc1(i)
   LET Bc1(i)=Bc1(i)*1E-4
NEXT i
FOR i=1 TO n
   READ Cc1(i)
   LET Cc1(i)=Cc1(i)*1E-8
NEXT i
FOR i=1 TO n
   READ Dc1(i)
   LET Dc1(i)=Dc1(i)*1E-12
NEXT i
FOR i=1 TO n
   READ Ac2(i)
NEXT i
FOR i=1 TO n
   READ Bc2(i)
   LET Bc2(i)=Bc2(i)*1E-4
NEXT I
FOR i=1 TO n
   READ Cc2(i)
   LET Cc2(i)=Cc2(i)*1E-8
NEXT i
FOR i=1 TO n
   READ Dc2(i)
   LET Dc2(i)=Dc2(i)*1E-12
NEXT i
FOR i=1 TO n
   READ shiguma(i)
NEXT i
FOR i=1 TO n
   READ epsilonk(i)
NEXT i

READ Av
READ Bv
READ Cv
READ Dv
READ Ev
READ Fv
READ Ad
READ Bd
READ Cd
READ Dd
READ Ed
READ Fd
READ Gd
READ Hd


EXTERNAL SUB airpro(k,rho7,cp7,mu7,nu7,lambda7,alpha7,pr7)

   REM *****************************************************
   REM *     各気体の質量分率=重量%を入力                *
   REM *****************************************************
   REM PRINT"各気体の重量%を入力してください"
   REM DO WHILE mwp(1)+mwp(2)+mwp(3)+mwp(4)+mwp(5)+mwp(6)<>100
   REM    INPUT PROMPT"N2 , O2 , CO2 , CO , He , Air":mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
   REM LOOP
   LET mwp(1)=0
   LET mwp(2)=0
   LET mwp(3)=0
   LET mwp(4)=0
   LET mwp(5)=0
   LET mwp(6)=100
   LET Mkongou=0
   FOR i=1 TO n
      IF mwp(i)<>0 THEN
         LET Mkongou=(mwp(i)/100/mw(i))+Mkongou
      END IF
   NEXT i
   LET Mkongou=1/Mkongou                                    ! 混合気体の分子量
   FOR i = 1 TO n
      IF mwp(i)<>0 THEN
         LET Xmolb(i)=Mkongou/mw(i)*mwp(i)                  ! 体積分率の計算
      END IF
   NEXT i
   FOR i=1 TO n
      LET Xmol(i)=mwp(i)/mw(i)
   NEXT i
   REM *****************************************************
   REM *     圧力、温度の設定                              *
   REM *****************************************************
   REM PRINT"計算条件  温度(℃) , 圧力を指示してください。"
   REM INPUT PROMPT"    T  C'   ,    P  atm      ":T,Patm      !T  C' : T  ℃      P  atm  : P 気圧
   LET T=k
   LET Patm=1.0
   LET TK=T+273.15                                         !TK    :  絶対温度  K
   LET Pa=Patm*101325                                      !Pa    :  パスカル
   REM PRINT TK ;"K  " ; TK-273.15;"C'  ";Pa;"Pa  "
   REM *****************************************************
   REM *     密度の計算  kg/m^3                            *
   REM *****************************************************
   LET rho(7)=0
   FOR i=1 TO n
      LET rho(i)=Pa*mw(i)/8.314/TK/1000
      LET rho(7)=rho(i)*Xmolb(i)/100+rho(7)
   NEXT i
   LET rho7=rho(7)
   REM *****************************************************
   REM *    定圧比熱の計算   KJ/kgK                        *
   REM *****************************************************
   LET CP(7)=0
   FOR i=1 TO n
      IF i=5 THEN
         LET CP(i)=5193/1000
      ELSE
         LET CP(i)=Ac1(i)+Bc1(i)*TK+Cc1(i)*TK^2+Dc1(i)*TK^3
      END IF
      LET CP0=CP(i)*Xmolb(i)/100+CP0
   NEXT i
   REM PRINT CP0
   REM LET Mmix=0
   REM FOR i=1 TO n
   REM    LET Mmix=mw(i)*Xmolb(i)/100+Mmix
   REM NEXT i
   REM PRINT Mmix
   LET CP(7)=CP0
   LET cp7=cp(7)
   REM ****************************************************
   REM *    粘性率の計算     Pa・s                        *
   REM ****************************************************
   FOR i=1 TO  n
      LET tdot=TK/epsilonk(i)
      IF i=5 THEN
         IF  TK>1100 THEN
            LET visc =Av/tdot^Bv
         ELSE
            LET visc=Av/tdot^Bv+Cv/EXP(Dv*tdot)
         END IF
         LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/visc*1E-7*1E6
      ELSE
         LET ohmv(i)=(Av/tdot^Bv+Cv/EXP(Dv*tdot)+Ev/EXP(Fv*tdot))
         LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/ohmv(I)*1E-7*1E6
      END IF
   NEXT i
   LET mu(7)=0
   FOR i=1 TO n
      FOR j=1 TO n
         IF mwp(j)<>0 THEN
            IF mwp(i)<>0 THEN
               LET phi(i,j)=(1+(mu(i)/mu(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
            END IF
         END IF
      NEXT j
   NEXT i
   LET ZZ=0
   FOR i=1 TO n
      IF mwp(i)<>0 THEN
         LET Z=0
         FOR j= 1 TO n
            IF mwp(j)<>0 THEN
               LET Z=Z+xmolb(j)*phi(i,j)
            END IF
         NEXT j
         LET ZZ=ZZ+Xmolb(i)*mu(i)/Z
      END IF
   NEXT i
   LET mu(7)=ZZ
   LET mu7=mu(7)
   REM ***************************************************
   REM *    熱伝導率の計算  mW/mK                        *
   REM ***************************************************
   FOR i=1 TO n
      LET CVv(i)=Ac2(i)+Bc2(i)*TK+Cc2(i)*TK^2+Dc2(i)*TK^3
      LET tdot=TK/epsilonk(i)
      IF i=5 THEN
         LET CVv(i)=3114
         IF  TK > 1100 THEN
            LET Ohmvh=Av/tdot^Bv
         ELSE
            LET ohmvh=Av/tdot^Bv+Cv/EXP(Dv*tdot)
         END IF
         LET lambdahe=2.669*SQR(mw(i)*TK)/shiguma(i)^2/ohmvh*1E-7*1E6
         LET lambda(i)=(1.32*CVv(i)*mw(i)*0.001/4.186+3.52)*lambdahe/mw(i)*4.186*10
      ELSE
         LET lambda(i)=(1.32*CVv(i)*mw(i)/4.186+3.52)*mu(i)/mw(i)*4.186
      END IF
   NEXT i
   LET lambda(7)=0
   FOR i=1 TO n
      FOR j=1 TO n
         IF mwp(j)<>0 THEN
            IF mwp(i)<>0 THEN
               LET phi(i,j)=(1+(lambda(i)/lambda(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
            END IF
         END IF
      NEXT j
   NEXT i
   LET ZZ=0
   FOR i=1 TO n
      IF mwp(i)<>0 THEN
         LET Z=0
         FOR j= 1 TO n
            IF mwp(j)<>0 THEN
               LET Z=Z+xmolb(j)*phi(i,j)
            END IF
         NEXT j
         LET ZZ=ZZ+Xmolb(i)*lambda(i)/Z
      END IF
   NEXT i
   LET lambda(7)=ZZ
   LET lambda7=lambda(7)
   REM *************************************************
   REM *    動粘性係数    mm^2/s                       *
   REM *************************************************
   FOR i= 1TO 7
      IF rho(i)<>0 THEN
         LET nu(i)=mu(i)/rho(i)
      END IF
   NEXT i
   LET nu7=nu(7)
   REM *************************************************
   REM *    温度伝導率    mm^2/s                       *
   REM *************************************************
   FOR i=1 TO 7
      IF Rho(i)<> 0 THEN
         LET alpha(i)=lambda(i)/rho(i)/CP(I)
      END IF
   NEXT i
   LET alpha7=alpha(7)
   REM *************************************************
   REM *    プラントル数                                   *
   REM *************************************************
   FOR i=1TO 7
      IF alpha(i)<>0 THEN
         LET Pr(i)=nu(i)/alpha(i)
      END IF
   NEXT i
   LET pr7=pr(7)
   REM *************************************************
   REM *    計算結果  打ち出し                         *
   REM *************************************************
   REM PLOT TEXT ,AT 0.05,0.95 ,USING "温度、圧力           絶対温度  ---%.# K    摂氏  ---%.# ℃      圧力  -%.##MPa           ":TK,T,Pa/1000000
   REM PLOT TEXT ,AT 0.05,0.90:"                       N2         O2        CO2         CO         He        Air "
   REM PLOT TEXT ,AT 0.05,0.88 ,USING "質量分率     ##    ---%.#     ---%.#     ---%.#     ---%.#     ---%.#     ---%.#   ":"%",mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
   REM PLOT TEXT ,AT 0.05,0.86 ,USING "モル数    n mol    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":Xmol(1),Xmol(2),Xmol(3),Xmol(4),Xmol(5),Xmol(6)
   REM PLOT TEXT ,AT 0.05,0.84 ,USING "体積分率     ##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"%",Xmolb(1),Xmolb(2),Xmolb(3),Xmolb(4),Xmolb(5),Xmolb(6)
   REM PLOT TEXT ,AT 0.05,0.80 ,USING "混合気体分子量       ---%.##":Mkongou
   REM PLOT TEXT ,AT 0.05,0.76: "                       N2         O2        CO2         CO         He         Air        Mix"
   REM PLOT TEXT ,AT 0.05,0.74 ,USING "密度  ######         -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"kg/m^3",rho(1),rho(2),rho(3),rho(4),rho(5),rho(6),rho(n+1)
   REM PLOT TEXT ,AT 0.05,0.72 ,USING "定圧比熱  ######     -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"KJ/kgK",CP(1),CP(2),CP(3),CP(4),CP(5),CP(6),CP(n+1)
   REM PLOT TEXT ,AT 0.05,0.70 ,USING "粘性率の計算 ###### --%.##     --%.##     --%.##     --%.##     --%.##     --%.##      --%.##":"uPa.s",mu(1),mu(2),mu(3),mu(4),mu(5),mu(6),mu(n+1)
   REM PLOT TEXT ,AT 0.05,0.68 ,USING "動粘性係数 #####   ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",nu(1),nu(2),nu(3),nu(4),nu(5),nu(6),nu(n+1)
   REM PLOT TEXT ,AT 0.05,0.66 ,USING "熱伝導率  #####    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mW/mK",lambda(1),lambda(2),lambda(3),lambda(4),lambda(5),lambda(6),lambda(n+1)
   REM PLOT TEXT ,AT 0.05,0.64 ,USING "温度伝導率  #####  ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",alpha(1),alpha(2),alpha(3),alpha(4),alpha(5),alpha(6),alpha(n+1)
   REM PLOT TEXT ,AT 0.05,0.62 ,USING "プラントル数             -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":Pr(1),Pr(2),Pr(3),Pr(4),Pr(5),Pr(6),Pr(n+1)

END SUB
END MODULE
 

配管保温計算

 投稿者:ちゃとら  投稿日:2018年12月 3日(月)12時06分15秒
返信・引用
  配管の保温計算を行うプログラムを作成しましたので投稿させて頂きます。

白石様、しばっち様、nagram様 有り難うございました。

その1
REM **********************************************************************
REM       配管保温計算
REM    4種類の配管の保温計算を行います。保温材は2層保温までとします。
REM    配管サイズ、保温材種類に不足がある場合は該当するデータを書き換えて
REM  使用してください。
REM *********************************************************************

DECLARE EXTERNAL SUB aa.airpro      ! 混合気体の物性値計算
DIM pipe(19,4)                      ! 配管サイズの設定
DIM ps(4)                           ! 配管サイズ番号
DIM ins$(10)                        ! 保温材名称
DIM insm(4,2)                       ! 1,2層目保温材番号
DIM insth(4,3)                      ! 1,2層目保温厚さ、全厚
DIM ins(10,3)                       ! 保温材番号順の熱伝導率データ
DIM facek(4)                        ! 保温表面温度  K
DIM airdat(4,8)                     ! 各保温表面温度  K と外気の平均温度に於ける気体物性値
DIM midt(4,2)
DIM t(4)                            ! 仮2層保温中間温度
DIM kekka(4,14)                     ! 計算結果
DIM Rth(4,4)                        ! 熱抵抗
REM **********************************************************************
MAT READ pipe(19,4)              ! 配管サイズの設定
MAT READ ins$(10)                ! 保温材名称
MAT READ ins(10,3)               ! 保温材データの設定
REM ******************************************
INPUT PROMPT "配管ライン名称      ":name$
INPUT PROMPT "保 持 温 度     (C')":maint
INPUT PROMPT "外 気 温 度    (C')":ambi
INPUT PROMPT "風       速    (m/s)":wv
INPUT PROMPT "設 計 裕 度         ":df
INPUT PROMPT "効       率         ":eff

PRINT "   番号   配管 (A)    番号   配管 (A)    番号   配管 (A)"
PRINT "    1       15         7       65         14     200 "
PRINT "    2       20         8       80         15     250 "
PRINT "    3       25         9       90         16     300 "
PRINT "    4       32        10      100         17     350 "
PRINT "    5       40        11      125         18     400 "
PRINT "    6       50        12      150         19     450 "

LET pn=1
INPUT PROMPT "配管 1  番号        ":ps(1)
INPUT PROMPT "配管 2  番号 無い場合は 0":ps(2)
LET pn=2
IF ps(2)=0 THEN
   LET ps(2)=ps(1)
   LET ps(3)=ps(1)
   LET ps(4)=ps(1)
   LET pn=1
END IF
IF pn=2 THEN
   INPUT PROMPT "配管 3  番号 無い場合は 0":ps(3)
   LET pn=3
   IF ps(3)=0 THEN
      LET ps(3)=ps(1)
      LET ps(4)=ps(1)
      LET pn=2
   END IF
END IF
IF pn=3 THEN
   INPUT PROMPT "配管 4  番号 無い場合は 0":ps(4)
   LET pn=4
   IF ps(4)=0 THEN
      LET ps(4)=ps(1)
      LET pn=3
   END IF
END IF
PRINT "    bangou   kigou         λ0        λ1       λ3        "
PRINT "       1     clc13-300   0.04070   1.28E-04       0        "
PRINT "       2     clc13-800   0.05550   2.05E-05   1.93E- 7     "
PRINT "       3     clc22-300   0.05350   1.16E-04       0        "
PRINT "       4     clc22-800   0.06120   3.38E-05   1.95E-07     "
PRINT "       5     gwc         0.03330   1.21E-04   6.56E-07     "
PRINT "       6     T#1260      0.11000   -1.40E-04  2.60E-07     "
PRINT "       7     rwc100      0.03140   1.74E-04       0        "
PRINT "       8     rwc600      0.04070   1.16E-04   7.67E-07     "
PRINT "       9     T#5120      0.02470   1.014E-04  7.55E-08     "
IF pn=1 THEN
   LET insmn=1
   INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
   INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は ”0,0”":insm(1,2),insth(1,2)
   IF insm(1,2)=0 THEN
      LET insmn=0
      LET insm(1,2)=insm(1,1)
      LET insth(1,2)=0
   END IF
   LET insm(2,1)=insm(1,1)
   LET insth(2,1)=insth(1,1)
   LET insm(2,2)=insm(1,2)
   LET insth(2,2)=insth(1,2)
   LET insm(3,1)=insm(1,1)
   LET insth(3,1)=insth(1,1)
   LET insm(3,2)=insm(1,2)
   LET insth(3,2)=insth(1,2)
   LET insm(4,1)=insm(1,1)
   LET insth(4,1)=insth(1,1)
   LET insm(4,2)=insm(1,2)
   LET insth(4,2)=insth(1,2)
END IF
IF pn=2 THEN
   LET insmn=1
   INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
   INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
   IF insm(1,2)=0 THEN
      LET insmn=0
      LET insm(1,2)=insm(1,1)
      LET insth(1,2)=0
   END IF
   LET insmn=1
   INPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
   INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
   IF insm(2,2)=0 THEN
      LET insmn=0
      LET insm(2,2)=insm(2,1)
      LET insth(2,2)=0
   END IF
   LET insm(3,1)=insm(1,1)
   LET insth(3,1)=insth(1,1)
   LET insm(3,2)=insm(1,2)
   LET insth(3,2)=insth(1,2)
   LET insm(4,1)=insm(1,1)
   LET insth(4,1)=insth(1,1)
   LET insm(4,2)=insm(1,2)
   LET insth(4,2)=insth(1,2)
END IF
IF pn=3 THEN
   LET insmn=1
   INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
   INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
   IF insm(1,2)=0 THEN
      LET insmn=0
      LET insm(1,2)=insm(1,1)
      LET insth(1,2)=0
   END IF
   LET insmn=1
   INPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
   INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
   IF insm(2,2)=0 THEN
      LET insmn=0
      LET insm(2,2)=insm(2,1)
      LET insth(2,2)=0
   END IF
   LET insmn=1
   INPUT PROMPT "配管 3  1層目 保温材番号,厚みmm":insm(3,1),insth(3,1)
   INPUT PROMPT "配管 3  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(3,2),insth(3,2)
   IF insm(3,2)=0 THEN
      LET insmn=0
      LET insm(3,2)=insm(3,1)
      LET insth(3,2)=0
   END IF
   LET insm(4,1)=insm(1,1)
   LET insth(4,1)=insth(1,1)
   LET insm(4,2)=insm(1,2)
   LET insth(4,2)=insth(1,2)
END IF
IF pn=4 THEN
   LET insmn=1
   INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
   INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
   LET insm(1,2)=0
   LET insth(1,2)=0
   IF insm(1,2)=0 THEN
      LET insmn=0
      LET insm(1,2)=insm(1,1)
      LET insth(1,2)=0
   END IF
   LET insmn=1
   iNPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
   INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
   IF insm(2,2)=0 THEN
      LET insmn=0
      LET insm(2,2)=insm(2,1)
      LET insth(2,2)=0
   END IF
   LET insmn=1
   INPUT PROMPT "配管 3  1層目 保温材番号,厚みmm":insm(3,1),insth(3,1)
   INPUT PROMPT "配管 3  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(3,2),insth(3,2)
   IF insm(3,2)=0 THEN
      LET insmn=0
      LET insm(3,2)=insm(3,1)
      LET insth(3,2)=0
   END IF
   LET insmn=1
   INPUT PROMPT "配管 4  1層目 保温材番号,厚みmm":insm(4,1),insth(4,1)
   INPUT PROMPT "配管 4  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(4,2),insth(4,2)
   IF insm(4,2)=0 THEN
      LET insmn=0
      LET insm(4,2)=insm(4,1)
      LET insth(4,2)=0
   END IF
END IF
REM ********** 初期温度の設定 **********
LET face1 = ambi+273+0.1
FOR i=1 TO 4
   LET facek(i)=face1                                ! 仮保温表面温度
   LET t(i)=(maint+(facek(i)-273))/2                ! 仮2層保温中間温度
NEXT i
REM ********** 保温材熱伝導率の計算  **************************
FOR i=1 TO 4
   LET t1=(maint+t(i))/2
   LET t2=(t(i)+(facek(i)-273))/2
   LET x=1
   DO
      REM ********** 空気物性値の計算  ****************************
      CALL airpro(facek(i)-273,k2,k3,k4,k5,k6,k7,k8)
      LET airdat(i,2)=k2         !  比重          kg/m^3
      LET airdat(i,3)=k3         !  比熱          kJ/kgK
      LET airdat(i,4)=k4         !  粘性係数      μPa・S
      LET airdat(i,5)=k5         !  動粘性係数    mm^2/S
      LET airdat(i,6)=k6         !  熱伝導率      mW/mK
      LET airdat(i,7)=k7         !  温度伝導率    mm^2/S
      LET airdat(i,8)=k8         !  プラントル数
      LET d0=pipe(ps(i),4)                                                                  ! 保温材内径
      LET d1=pipe(ps(i),4)+2*insth(i,1)/1000                                                ! 1層目保温材外径
      LET d2=pipe(ps(i),4)+2*insth(i,1)/1000+2*insth(i,2)/1000                              ! 2層目保温材外径
      LET t1=(maint+t(i))/2                                                                 ! 1層目保温平均温度
      LET c1=(maint^2+maint*t(i)+t(i)^2)/3                                                  ! 熱伝導率計算係数
      LET r1=(ins(insm(i,1),1)+ins(insm(i,1),2)*t1+ins(insm(i,1),3)*c1 )                    ! 保温材熱伝導率
      LET Rth(i,1)=1/(2*PI*r1)*LOG(d1/d0)                                                   ! 1層目保温層熱抵抗
      LET t2=(t(i)+(facek(i)-273))/2                                                        ! 2層目保温平均温度
      LET c2=(t(i)^2+t(i)*(facek(i)-273)+(facek(i)-273)^2)/3                                ! 熱伝導率計算係数
      LET r2=(ins(insm(i,2),1)+ins(insm(i,2),2)*t2+ins(insm(i,2),3)*c2 )                    ! 保温材熱伝導率
      LET Rth(i,2)=1/(2*PI*r2)*LOG(d2/d1)
      LET re=wv*3600*d2/(airdat(i,5)*3600/1000000)
      LET ac=1.12*(0.373*re^0.5+0.057*re^(2/3))*airdat(i,8)^(1/3)*airdat(i,6)/1000/d2
      LET ar=0.8*5.67E-8*(faceK(i)^4-(ambi+273)^4)/(facek(i)-(ambi+273))
      LET Rth(i,3)=1/(PI*d2*(ac+ar))
      LET Rth(i,4)=Rth(i,1)+Rth(i,2)+Rth(i,3)
      LET hloss=(maint-ambi)/Rth(i,4)
      LET fk=hloss*Rth(i,3)+ambi+273
      LET faceK(i) = fk
      LET t(i)=hloss*(Rth(i,2)+Rth(i,3))+ambi
      LET x=x+1
   LOOP WHILE X<=20
   LET kekka(i,1)=t1
   LET kekka(i,2)=c1
   LET kekka(i,3)=r1
   LET kekka(i,4)=t2
   LET kekka(i,5)=c2
   LET kekka(i,6)=r2
   LET kekka(i,7)=re
   LET kekka(i,8)=ac
   LET kekka(i,9)=ar
   LET kekka(i,10)=fk
   LET kekka(i,11)=t(i)
   LET kekka(i,12)=d0
   LET kekka(i,13)=d1
   LET kekka(i,14)=d2
NEXT i
REM *********************** 計算結果の表示  ***********************
PLOT TEXT ,AT 0.1,0.95:"配管ライン名称      "
PLOT TEXT ,AT 0.35,0.95: name$
PLOT TEXT ,AT 0.1,0.92:"保 持 温 度     (C')"
PLOT TEXT ,AT 0.35,0.92: STR$(maint)
PLOT TEXT ,AT 0.1,0.89:"外 気 温 度     (C')"
PLOT TEXT ,AT 0.35,0.89: STR$(ambi)
PLOT TEXT ,AT 0.5,0.95:"風       速    (m/s)"
PLOT TEXT ,AT 0.75,0.95: STR$(wv)
PLOT TEXT ,AT 0.5,0.92:"設 計 裕 度         "
PLOT TEXT ,AT 0.75,0.92: STR$(df)
PLOT TEXT ,AT 0.5,0.89:"効       率         "
PLOT TEXT ,AT 0.75,0.89: STR$(eff)
PLOT TEXT ,AT 0.25,0.85:"配管サイズ"
PLOT TEXT ,AT 0.40,0.85:"保温層"
PLOT TEXT ,AT 0.50,0.85:"保温材"
PLOT TEXT ,AT 0.60,0.85:"保温厚さ"
PLOT TEXT ,AT 0.15,0.82:"配管  1"
PLOT TEXT ,AT 0.28,0.82,USING"###": pipe(ps(1),1)
PLOT TEXT ,AT 0.40,0.82:"1層目"
PLOT TEXT ,AT 0.49,0.82:ins$(insm(1,1))
PLOT TEXT ,AT 0.62,0.82,USING"###":insth(1,1)
LET ygyou =0.82
IF insth(1,2)<>0 THEN LET ygyou=ygyou-0.02
IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou :"2層目"
IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(1,2))
IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(1,2)
IF pn => 2 THEN LET ygyou=ygyou-0.02
IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou :"配管  2"
IF pn => 2 THEN PLOT TEXT ,AT 0.28,ygyou ,USING"###": pipe(ps(2),1)
IF pn => 2 THEN PLOT TEXT ,AT 0.40,ygyou :"1層目"
IF pn => 2 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(2,1))
IF pn => 2 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(2,1)
IF pn => 2 AND insth(2,2)<>0 THEN LET ygyou =ygyou-0.02
IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou :"2層目"
IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(2,2))
IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(2,2)
IF pn => 3 THEN LET ygyou=ygyou-0.02
IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
IF pn => 3 THEN PLOT TEXT ,AT 0.28,ygyou,USING"###": pipe(ps(3),1)
IF pn => 3 THEN PLOT TEXT ,AT 0.40,ygyou:"1層目"
IF pn => 3 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(3,1))
IF pn => 3 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(3,1)
IF pn => 3 AND insth(3,2)<>0 THEN LET ygyou=ygyou-0.02
IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou:"2層目"
IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(3,2))
IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(3,2)
IF pn = 4 THEN LET ygyou=ygyou-0.02
IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
IF pn = 4 THEN PLOT TEXT ,AT 0.28,ygyou,USING"###": pipe(ps(4),1)
IF pn = 4 THEN PLOT TEXT ,AT 0.40,ygyou:"1層目"
IF pn = 4 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(4,1))
IF pn = 4 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(4,1)
IF pn = 4  AND insth(4,2)<>0 THEN LET ygyou=ygyou-0.02
IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou:"2層目"
IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(4,2))
IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(4,2)
LET ygyou=ygyou-0.02*2
PLOT TEXT ,AT 0.25,ygyou:"保温筒内径   保温筒外径     Re      αc     αr      α    "
LET ygyou=ygyou-0.02
PLOT TEXT ,AT 0.15,ygyou:"配管  1"
PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(1,12),kekka(1,13),kekka(1,7),kekka(1,8),kekka(1,9),kekka(1,8)+kekka(1,9)
IF insth(1,2)<>0 THEN  LET ygyou=ygyou-0.02
IF insth(1,2)<>0 THEN  PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(1,13),kekka(1,14)
IF pn => 2 THEN LET ygyou=ygyou-0.02
IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  2"
IF pn => 2 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(2,12),kekka(2,13),kekka(2,7),kekka(2,8),kekka(2,9),kekka(2,8)+kekka(2,9)
IF pn => 2 AND insth(2,2)<> 0 THEN LET ygyou=ygyou-0.02
IF pn => 2 AND insth(2,2)<> 0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(2,13),kekka(2,14)
IF pn => 3 THEN LET ygyou=ygyou-0.02
IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
IF pn => 3 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(3,12),kekka(3,13),kekka(3,7),kekka(3,8),kekka(3,9),kekka(3,8)+kekka(3,9)
IF pn => 3 AND insth(3,2)<>0 THEN LET ygyou=ygyou-0.02
IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(3,13),kekka(3,14)
IF pn = 4 THEN LET ygyou=ygyou-0.02
IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
IF pn = 4 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(4,12),kekka(4,13),kekka(4,7),kekka(4,8),kekka(4,9),kekka(4,8)+kekka(4,9)
IF pn = 4 AND insth(4,2)<>0 THEN LET ygyou=ygyou-0.02
IF pn = 4 AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(4,13),kekka(4,14)
LET ygyou=ygyou-0.02*3
PLOT TEXT ,AT 0.25,ygyou:"  Rth1    Rth2    Rth3     Rth     hloss     Pr      θmid      θf"
LET ygyou=ygyou-0.02
PLOT TEXT ,AT 0.25,ygyou:"                          C'm/W     W/m      W/m       C'        C' "
LET ygyou=ygyou-0.02
PLOT TEXT ,AT 0.15,ygyou:"配管  1"
PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(1,1),Rth(1,2),Rth(1,3),Rth(1,4),(maint-ambi)/Rth(1,4),(maint-ambi)/Rth(1,4)*df/eff,kekka(1,11),kekka(1,10)-273
LET ygyou=ygyou-0.02
IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  2"
IF pn => 2 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(2,1),Rth(2,2),Rth(2,3),Rth(2,4),(maint-ambi)/Rth(2,4),(maint-ambi)/Rth(2,4)*df/eff,kekka(2,11),kekka(2,10)-273
LET ygyou=ygyou-0.02
IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
IF pn => 3 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(3,1),Rth(3,2),Rth(3,3),Rth(3,4),(maint-ambi)/Rth(3,4),(maint-ambi)/Rth(3,4)*df/eff,kekka(3,11),kekka(3,10)-273
LET ygyou=ygyou-0.02
IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
IF pn = 4 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(4,1),Rth(4,2),Rth(4,3),Rth(4,4),(maint-ambi)/Rth(4,4),(maint-ambi)/Rth(4,4)*df/eff,kekka(4,11),kekka(4,10)-273
REM ********** 配管データ **********
REM  si     d2        t      di
DATA 15 , 0.0217 , 0.0028 , 0.034
DATA 20 , 0.0272 , 0.0029 , 0.034
DATA 25 , 0.034  , 0.0034 , 0.0427
DATA 32 , 0.0427 , 0.0036 , 0.0486
DATA 40 , 0.0486 , 0.0037 , 0.0605
DATA 50 , 0.0605 , 0.0039 , 0.0763
DATA 65 , 0.0763 , 0.0052 , 0.0891
DATA 80 , 0.0891 , 0.0055 , 0.1016
DATA 90 , 0.1016 , 0.0057 , 0.1143
DATA 100, 0.1143 , 0.0060 , 0.1398
DATA 125, 0.1398 , 0.0066 , 0.1652
DATA 150, 0.1652 , 0.0071 , 0.1910
DATA 200, 0.2163 , 0.0082 , 0.2419
DATA 250, 0.2674 , 0.0093 , 0.2930
DATA 300, 0.3185 , 0.0103 , 0.3370
DATA 350, 0.3556 , 0.0111 , 0.3810
DATA 400, 0.4064 , 0.0127 , 0.4320
DATA 450, 0.4572 , 0.0143 , 0.4830
DATA 500, 0.5080 , 0.0151 , 0.5330
REM *********************************
REM ********** 保温材データ **********
DATA clc13-300 , clc13-800 , clc22-300 , clc22-800 , gwc
DATA Ts1260    , rwc100    , rwc600    , Ts5120    , daipa
REM ********** 保温材熱伝導率 **********
REM     r1         r2         r3
DATA 0.04070 , 1.28E-04 , 0
DATA 0.05550 , 2.05E-05 , 1.93E-07
DATA 0.05350 , 1.16E-04 , 0
DATA 0.06120 , 3.38E-05 , 1.95E-07
DATA 0.03330 , 1.21E-04 , 6.56E-07
DATA 0.11000 , -1.40E-04, 2.60E-07
DATA 0.03140 , 1.74E-04 , 0
DATA 0.04070 , 1.16E-04 , 7.67E-07
DATA 0.02470 , 1.14E-04 , 7.55E-08
DATA 0.05550 , 2.05E-05 , 1.93E-07
REM ***********************************
END
 

多成分混合気体の熱物性値

 投稿者:ちゃとら  投稿日:2018年12月 3日(月)11時59分42秒
返信・引用
  旧日本原子力研究所のレーポートで気体の熱物性値を求める資料を見つけ、今,作成中の保温計算プログラムに組み込む為に,十進basicで作成しましたので登校させていただきます。

 元資料 旧日本原子力研究所 JAERI-M 92-131
          多成分混合気体の熱物性値 1992年9月 武田哲明・Bing HAN・小川益郎

REM ********************************************************************
REM         多成分混合気体の熱物性値
REM   元になっているのは 旧日本原子力研究所のレポートです。
REM  JAERI-M 92-131 多成分混合気体の熱物性値 1992年9月
REM    武田 哲明・Bing HAN ・小川 益郎
REM ********************************************************************
REM
REM   N2,O2,CO2,CO,He,Air 6種類の気体からなる多成分混合気体の熱物性値を
REM  計算、表示します。
REM
REM  指示に従って各組成気体の百分率を入力してください。
REM    混合気体の温度、気圧を入力してください。
REM    その温度に於ける、N2,O2,CO2,CO,He,Air の熱物性値と混合気体の
REM  熱物性値を表示します。
REM
SET WINDOW 0,1.0,0,1.0
LET n=6                     !対象気体数      6種類  N2,O2,CO2,CO,He,Air
DIM rho(n+1)                !各気体の密度
DIM CP(n+1)                 !  〃    定圧比熱
DIM CVv(n+1)                !  〃    定容比熱
DIM CPO(n+1)                !  〃    定圧分子熱
DIM n$(n)                   !気体名称    N2  ,  O2  ,  CO2  ,  CO  ,  He  ,  Air
DIM mwp(n)                  !質量分率    重量%
DIM mw(n)                   !分子量      molecular weight
DIM Xmol(n+1)               !モル数
DIM Xmolb(n)                !モル分率(体積分率)
DIM mu(n+1)                 !粘性係数
DIM phi(n,n)                !粘性係数計算係数
DIM phix(n,n)
DIM nu(n+1)                 !動粘性係数

DIM alpha(n+1)              !温度伝導率
DIM Pr(n+1)                      !プラントル数
DIM kk(n)
DIM lambda(n+1)             !熱伝導率
DIM Tc(n)                   !臨界温度    critical temperature
DIM Pc(n)                   !臨界圧力    critical pressure
DIM zeta(n)                 !偏心因子
DIM Ac0(n)                  !Ac0         定圧分子熱の推算式に於ける係数
DIM Bc0(n)                  !Bc0              〃              〃
DIM Cc0(n)                  !Cc0              〃              〃
DIM Dc0(n)                  !Dc0              〃              〃
DIM Ac1(n)                  !Ac1         定圧比熱の推算式に於ける係数
DIM Bc1(n)                  !Bc1              〃              〃
DIM Cc1(n)                  !Cc1              〃              〃
DIM Dc1(n)                  !Dc1              〃              〃
DIM Ac2(n)                  !Ac2         定容比熱の推算式に於ける係数
DIM Bc2(n)                  !Bc2              〃              〃
DIM Cc2(n)                  !Cc2              〃              〃
DIM Dc2(n)                  !Dc2              〃              〃
DIM shiguma (n)             !σ          各成分気体の特性直径
DIM epsilonk(n)            !ε/k        各成分気体の特性エネルギー
DIM ohmv(6)                 !Ωv         粘性の衝突積分
DIM ohmd(8)                 !Ωd         拡散の衝突積分
REM *******************************************************************
REM *           定数の読み込み                                        *
REM *******************************************************************
FOR i=1 TO n
   READ n$(i)
NEXT i
FOR i=1 TO n
   READ mw(i)
NEXT i
FOR i=1 TO n
   READ Tc(i)
NEXT i
FOR i=1 TO n
   READ Pc(i)
NEXT i
FOR i=1 TO n
   READ zeta(i)
NEXT i
FOR i=1 TO n
   READ Ac0(i)
NEXT i
FOR i=1 TO n
   READ Bc0(i)
   LET Bc0(i)=Bc0(i)*1E-2
NEXT i
FOR i=1 TO n
   READ Cc0(i)
   LET Cc0(i)=Cc0(i)*1E-6
NEXT i
FOR i=1 TO n
   READ Dc0(n)
   LET Dc0(i)=Dc0(i)*1E-9
NEXT i
FOR i=1 TO n
   READ Ac1(i)
NEXT i
FOR i=1 TO n
   READ Bc1(i)
   LET Bc1(i)=Bc1(i)*1E-4

NEXT i
FOR i=1 TO n
   READ Cc1(i)
   LET Cc1(i)=Cc1(i)*1E-8

NEXT i
FOR i=1 TO n
   READ Dc1(i)
   LET Dc1(i)=Dc1(i)*1E-12

NEXT i
FOR i=1 TO n
   READ Ac2(i)
NEXT i
FOR i=1 TO n
   READ Bc2(i)
   LET Bc2(i)=Bc2(i)*1E-4
NEXT I
FOR i=1 TO n
   READ Cc2(i)
   LET Cc2(i)=Cc2(i)*1E-8
NEXT i
FOR i=1 TO n
   READ Dc2(i)
   LET Dc2(i)=Dc2(i)*1E-12
NEXT i
FOR i=1 TO n
   READ shiguma(i)
NEXT i
FOR i=1 TO n
   READ epsilonk(i)
NEXT i

READ Av
READ Bv
READ Cv
READ Dv
READ Ev
READ Fv
READ Ad
READ Bd
READ Cd
READ Dd
READ Ed
READ Fd
READ Gd
READ Hd

REM *****************************************************
REM *     各気体の質量分率=重量%を入力                *
REM *****************************************************

REM 百分率の合計が100にならなければ再入力となります。

DO WHILE mwp(1)+mwp(2)+mwp(3)+mwp(4)+mwp(5)+mwp(6)<>100
   INPUT PROMPT"各気体の重量%を入力してください。 N2 , O2 , CO2 , CO , He , Air":mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
LOOP

FOR i=1 TO n
   IF mwp(i)<>0 THEN
      LET Mkongou=(mwp(i)/100/mw(i))+Mkongou
   END IF
NEXT i
LET Mkongou=1/Mkongou                                    ! 混合気体の分子量
FOR i = 1 TO n
   IF mwp(i)<>0 THEN
      LET Xmolb(i)=Mkongou/mw(i)*mwp(i)                  ! 体積分率の計算
   END IF
NEXT i
FOR i=1 TO n
   LET Xmol(i)=mwp(i)/mw(i)
NEXT i
REM *****************************************************
REM *     圧力、温度の設定                              *
REM *****************************************************
INPUT PROMPT"計算条件  温度(℃) , 圧力を指示してください。 T  C', P  atm ":T,Patm      !T  C' : T  ℃      P  atm  : P 気圧

LET TK=T+273.15                                         !TK    :  絶対温度  K
LET Pa=Patm*101325                                      !Pa    :  パスカル

REM *****************************************************
REM *     密度の計算  kg/m^3                            *
REM *****************************************************
LET rho(n+1)=0
FOR i=1 TO n
   LET rho(i)=Pa*mw(i)/8.314/TK/1000
   LET rho(n+1)=rho(i)*Xmolb(i)/100+rho(n+1)
NEXT i

REM *****************************************************
REM *    定圧比熱の計算   KJ/kgK                        *
REM *****************************************************
LET CP(n+1)=0
FOR i=1 TO n
   IF i=5 THEN
      LET CP(i)=5193/1000
   ELSE
      LET CP(i)=Ac1(i)+Bc1(i)*TK+Cc1(i)*TK^2+Dc1(i)*TK^3
   END IF
   LET CP0=CP(i)*Xmolb(i)/100+CP0
NEXT i
LET CP(n+1)=CP0

REM ****************************************************
REM *    粘性率の計算     Pa・s                        *
REM ****************************************************

FOR i=1 TO  n
   LET tdot=TK/epsilonk(i)
   IF i=5 THEN
      IF  TK>1100 THEN
         LET visc =Av/tdot^Bv
      ELSE
         LET visc=Av/tdot^Bv+Cv/EXP(Dv*tdot)
      END IF
      LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/visc*1E-7*1E6
   ELSE
      LET ohmv(i)=(Av/tdot^Bv+Cv/EXP(Dv*tdot)+Ev/EXP(Fv*tdot))
      LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/ohmv(I)*1E-7*1E6
   END IF
NEXT i
LET mu(n+1)=0
FOR i=1 TO n
   FOR j=1 TO n
      IF mwp(j)<>0 THEN
         IF mwp(i)<>0 THEN
            LET phi(i,j)=(1+(mu(i)/mu(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
         END IF
      END IF
   NEXT j
NEXT i
LET ZZ=0
FOR i=1 TO n
   IF mwp(i)<>0 THEN
      LET Z=0
      FOR j= 1 TO n
         IF mwp(j)<>0 THEN
            LET Z=Z+xmolb(j)*phi(i,j)
         END IF
      NEXT j
      LET ZZ=ZZ+Xmolb(i)*mu(i)/Z
   END IF
NEXT i
LET mu(n+1)=ZZ

REM ***************************************************
REM *    熱伝導率の計算  mW/mK                        *
REM ***************************************************
FOR i=1 TO n
   LET CVv(i)=Ac2(i)+Bc2(i)*TK+Cc2(i)*TK^2+Dc2(i)*TK^3
   LET tdot=TK/epsilonk(i)
   IF i=5 THEN
      LET CVv(i)=3114
      IF  TK > 1100 THEN
         LET Ohmvh=Av/tdot^Bv
      ELSE
         LET ohmvh=Av/tdot^Bv+Cv/EXP(Dv*tdot)
      END IF
      LET lambdahe=2.669*SQR(mw(i)*TK)/shiguma(i)^2/ohmvh*1E-7*1E6
      LET lambda(i)=(1.32*CVv(i)*mw(i)*0.001/4.186+3.52)*lambdahe/mw(i)*4.186*10

   ELSE
      LET lambda(i)=(1.32*CVv(i)*mw(i)/4.186+3.52)*mu(i)/mw(i)*4.186
   END IF
NEXT i
LET lambda(n+1)=0
FOR i=1 TO n
   FOR j=1 TO n
      IF mwp(j)<>0 THEN
         IF mwp(i)<>0 THEN
            LET phi(i,j)=(1+(lambda(i)/lambda(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
         END IF
      END IF
   NEXT j
NEXT i
LET ZZ=0
FOR i=1 TO n
   IF mwp(i)<>0 THEN
      LET Z=0
      FOR j= 1 TO n
         IF mwp(j)<>0 THEN
            LET Z=Z+xmolb(j)*phi(i,j)
         END IF
      NEXT j
      LET ZZ=ZZ+Xmolb(i)*lambda(i)/Z
   END IF
NEXT i
LET lambda(n+1)=ZZ


REM *************************************************
REM *    動粘性係数    mm^2/s                       *
REM *************************************************
FOR i= 1TO n+1
   IF rho(i)<>0 THEN
      LET nu(i)=mu(i)/rho(i)
   END IF
NEXT i

REM *************************************************
REM *    温度伝導率    mm^2/s                       *
REM *************************************************
FOR i=1 TO n+1
   IF Rho(i)<> 0 THEN
      LET alpha(i)=lambda(i)/rho(i)/CP(I)
   END IF
NEXT i

REM *************************************************
REM *    プラントル数                                   *
REM *************************************************
FOR i=1TO n+1
   IF alpha(i)<>0 THEN
      LET Pr(i)=nu(i)/alpha(i)
   END IF
NEXT i

REM *************************************************
REM *    計算結果  打ち出し                         *
REM *************************************************
PLOT TEXT ,AT 0.05,0.95 ,USING "温度、圧力           絶対温度  ---%.# K    摂氏  ---%.# ℃      圧力  -%.##MPa           ":TK,T,Pa/1000000
PLOT TEXT ,AT 0.05,0.90:"                       N2         O2        CO2         CO         He        Air "
PLOT TEXT ,AT 0.05,0.88 ,USING "質量分率     ##    ---%.#     ---%.#     ---%.#     ---%.#     ---%.#     ---%.#   ":"%",mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
PLOT TEXT ,AT 0.05,0.86 ,USING "モル数    n mol    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":Xmol(1),Xmol(2),Xmol(3),Xmol(4),Xmol(5),Xmol(6)
PLOT TEXT ,AT 0.05,0.84 ,USING "体積分率     ##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"%",Xmolb(1),Xmolb(2),Xmolb(3),Xmolb(4),Xmolb(5),Xmolb(6)

PLOT TEXT ,AT 0.05,0.80 ,USING "混合気体分子量       ---%.##":Mkongou

PLOT TEXT ,AT 0.05,0.76: "                       N2         O2        CO2         CO         He         Air        Mix"
PLOT TEXT ,AT 0.05,0.74 ,USING "密度  ######         -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"kg/m^3",rho(1),rho(2),rho(3),rho(4),rho(5),rho(6),rho(n+1)
PLOT TEXT ,AT 0.05,0.72 ,USING "定圧比熱  ######     -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"KJ/kgK",CP(1),CP(2),CP(3),CP(4),CP(5),CP(6),CP(n+1)
PLOT TEXT ,AT 0.05,0.70 ,USING "粘性率の計算 ###### --%.##     --%.##     --%.##     --%.##     --%.##     --%.##      --%.##":"uPa.s",mu(1),mu(2),mu(3),mu(4),mu(5),mu(6),mu(n+1)
PLOT TEXT ,AT 0.05,0.68 ,USING "動粘性係数 #####   ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",nu(1),nu(2),nu(3),nu(4),nu(5),nu(6),nu(n+1)
PLOT TEXT ,AT 0.05,0.66 ,USING "熱伝導率  #####    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mW/mK",lambda(1),lambda(2),lambda(3),lambda(4),lambda(5),lambda(6),lambda(n+1)
PLOT TEXT ,AT 0.05,0.64 ,USING "温度伝導率  #####  ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",alpha(1),alpha(2),alpha(3),alpha(4),alpha(5),alpha(6),alpha(n+1)
PLOT TEXT ,AT 0.05,0.62 ,USING "プラントル数             -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":Pr(1),Pr(2),Pr(3),Pr(4),Pr(5),Pr(6),Pr(n+1)

REM       N2        O2        CO2       CO        He        Air
DATA      N2   ,    O2   ,    CO2  ,    CO   ,    He   ,    Air
DATA  28.0134  ,31.999   ,44.010   ,28.010   ,4.0026   ,28.964   !molecular weight 分子量
DATA    126.2  ,154.6    ,304.2    ,132.9    ,5.19     ,132.5    !Tc               臨界温度    K
DATA     33.5  ,50.1     ,72.8     ,34.5     ,2.24     ,37.2     !Pc               臨界圧力    atm  760mmhg  101325Pa
DATA    0.040  ,0.021    ,0.225    ,0.049    ,-0.387   ,0        !ζ   zeta        偏心因子
DATA    7.440  ,6.713    ,4.728    ,7.373    ,0        ,0        !Ac0              定圧分子熱の推算式に於ける係数
DATA   -0.324  ,-8.79E-5 ,1.754    ,-0.307   ,0        ,0        !Bc0(×10^-2)          〃              〃
DATA    6.400  ,4.170    ,-13.38   ,6.662    ,0        ,0        !Cc0(×10^-6)          〃              〃
DATA   -2.790  ,-2.544   ,4.097    ,-3.037   ,0        ,0        !Dc0(×10^-9)          〃              〃
DATA  0.938314 ,0.817026 ,0.618542 ,0.929207 ,0        ,0.905673 !Ac1              定圧比熱の推算式に於ける係数
DATA  2.95732  ,3.87124  ,9.43157  ,3.43656  ,0        ,3.10391  !Bc1(×10^-4)          〃              〃
DATA -7.31507  ,-14.1476 ,-39.2290 ,-10.0711 ,0        ,-8.59483 !Cc1(×10^-8)          〃              〃
DATA  5.81796  ,19.9678  ,54.4078  ,10.1493  ,0        ,8.56212  !Dc1(×10^-12)         〃              〃
DATA  0.656848 ,0.547045 ,0.396046 ,0.641668 ,0        ,0.625027 !Ac2              定容比熱の推算式に於ける係数
DATA  2.46015  ,4.12982  ,10.5300  ,3.13564  ,0        ,2.89050  !Bc2(×10^-4)          〃              〃
DATA -3.16796  ,-16.1964 ,-48.3891 ,-7.57080 ,0        ,-6.76530 !Cc2(×10^-8)          〃              〃
DATA -3.91928  ,24.6892  ,75.8699  ,4.29183  ,0        ,4.17504  !Dc2(×10^-12)         〃              〃
DATA  3.798    ,3.467    ,3.941    ,3.690    ,2.551    ,3.711    !σ               各成分気体の特性直径
DATA  71.4     ,106.7    ,195.2    ,91.7     ,10.22    ,78.6     !ε/k                     と特性エネルギー
REM     Av        Bv        Cv        Dv        Ev        Fv      Ωv              粘性の衝突積分
DATA  1.16145  ,0.14874  ,0.52487  ,0.77320  ,2.16178  ,2.43787  !
REM     Ad        Bd        Cd        Dd        Ed        Fd        Gd        Hd         !Ωd    拡散の衝突積分
DATA  1.06036  ,0.15610  ,0.19300  ,0.47635  ,1.03587  ,1.52996   ,1.76474  ,3.89411     !

END




 

Re: 実行順序がおかしい

 投稿者:SHIRAISHI Kazuo  投稿日:2018年12月 2日(日)08時45分23秒
返信・引用 編集済
  > No.4582[元記事へ]

しばっちさんへのお返事です。

> FOR I=1 TO 10
>    PRINT I !' <--- 先にテキストウィンドゥに文字が表示されるはず
> NEXT I
> EXECUTE "cmd.exe"
> END
>
PRINT文出力高速化の弊害です。
十進BASIC 8.0やBASICAccと異なる機構で動かしているので対応が個別的になってしまいます(EXECUTE文を実行するとき……など)。
同様の問題があればお知らせください。
まとめて修正します。
 

Re: ラインが描かれません

 投稿者:SHIRAISHI Kazuo  投稿日:2018年12月 2日(日)08時42分3秒
返信・引用 編集済
  > No.4581[元記事へ]

しばっちさんへのお返事です。

> LET N=5
> OPTION BASE 0
> DIM X(N),Y(N)
> SET WINDOW -1,1,-1,1
> FOR I=0 TO N
>    LET X(I)=COS(I/N*2*PI)
>    LET Y(I)=SIN(I/N*2*PI)
> NEXT I
> FOR I=0 TO N
>    PLOT POINTS:X(I),Y(I) !'<--これを注釈にするとラインが描かれる
>    PLOT LINES:X(I),Y(I);
> NEXT I
> END
>
JISに厳格に適合させた結果で正しい動作です。
JISの規定を無視させたいときは,
SET BEAM MODE "IMMORTAL"
を実行してください。
詳細は
http://hp.vector.co.jp/authors/VA008683/QA-plot.htm
を参照してください。
 

Re: これは仕様でしょうか

 投稿者:SHIRAISHI Kazuo  投稿日:2018年12月 2日(日)08時40分10秒
返信・引用 編集済
  > No.4580[元記事へ]

しばっちさんへのお返事です。

> SET LINE STYLE 2
> SET AREA COLOR 1
> PLOT AREA:0,0;1,0;1,1;0,1 !'淵にラインスタイルが見える
> SET LINE STYLE 3
> SET AREA COLOR 2
> PLOT AREA:0,0;.5,.5;1,0
> END
>
バグです(修正容易)。
 

実行順序がおかしい

 投稿者:しばっち  投稿日:2018年12月 1日(土)20時43分2秒
返信・引用
  FOR I=1 TO 10
   PRINT I !' <--- 先にテキストウィンドゥに文字が表示されるはず
NEXT I
EXECUTE "cmd.exe"
END
 

ラインが描かれません

 投稿者:しばっち  投稿日:2018年12月 1日(土)20時42分17秒
返信・引用
  LET N=5
OPTION BASE 0
DIM X(N),Y(N)
SET WINDOW -1,1,-1,1
FOR I=0 TO N
   LET X(I)=COS(I/N*2*PI)
   LET Y(I)=SIN(I/N*2*PI)
NEXT I
FOR I=0 TO N
   PLOT POINTS:X(I),Y(I) !'<--これを注釈にするとラインが描かれる
   PLOT LINES:X(I),Y(I);
NEXT I
END
 

これは仕様でしょうか

 投稿者:しばっち  投稿日:2018年12月 1日(土)20時40分17秒
返信・引用
  SET LINE STYLE 2
SET AREA COLOR 1
PLOT AREA:0,0;1,0;1,1;0,1 !'淵にラインスタイルが見える
SET LINE STYLE 3
SET AREA COLOR 2
PLOT AREA:0,0;.5,.5;1,0
END
 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年12月 1日(土)18時18分16秒
返信・引用
  nagram 様、白石様、しばっち様

  皆様のおかげで思った通りの動作に書き換える事が出来ました。
  有り難うございました。
  今後とも勉強させていただきますのでよろしくお願いいたします。
 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年12月 1日(土)13時01分39秒
返信・引用
  nagram 様

  早速のご教示有り難うございます。

  今後もよろしくお願いいたします。

  白石様,しばっち様お手数を掛けました。御礼申し上げます。

  動作を確認しまして改めたご報告いたします。



 

Re: 外部関数定義部のデータ読み込み

 投稿者:nagram  投稿日:2018年12月 1日(土)08時42分15秒
返信・引用 編集済
  > No.4576[元記事へ]

ちゃとらさんへのお返事です。

次のようにモジュールを利用すれば可能です。
モジュール本体では配列の宣言は数値定数でしか出来ないことに注意が必要です。
もし外部副プログラムairpro内でnがn=6より大きな値をとる可能性があるならば、共用される配列を十分大きな数値定数でshare宣言しておく必要があります。

修正箇所は次の(A)~(D)です。
(A) 1000行の外部副プログラム宣言にモジュール名を含める(仮にaaとする)。
1000 DECLARE EXTERNAL SUB aa.airpro         ! 混合気体の物性値計算

(B) data文の読込みを外部副プログラムからモジュール本体に移動する。
5000行のexternal-sub行を6250行の手前に移動します。
6245 EXTERNAL SUB airpro(k,rho7,cp7,mu7,nu7,lambda7,alpha7,pr7)   ! 5000行から移動

(C) 5000行以降をmoduleに組込む。
     外部副プログラムairproをpublic宣言する。
     配列や変数をshare宣言する。
     8200行~8430行のdata文をモジュール本体に移動する。
5000行~5420行の手前までを、次のように修正します。
5000 MODULE aa     ! モジュール名aa
5005 PUBLIC SUB airpro
5010 REM SET WINDOW 0,1.0,0,1.0
5015 SHARE NUMERIC n
5020 LET n=6                     !対象気体数      6種類  N2,O2,CO2,CO,He,Air
5030 REM TK                      !絶対温度    K
5040 REM Pa                      !圧力  パスカル
5050 SHARE NUMERIC rho(7)                !各気体の密度
5060 SHARE NUMERIC CP(7)                 !  〃    定圧比熱
5070 SHARE NUMERIC CVv(7)                !  〃    定容比熱
5080 SHARE NUMERIC CPO(7)                !  〃    定圧分子熱
5090 SHARE STRING n$(6)                   !気体名称    N2  ,  O2  ,  CO2  ,  CO  ,  He  ,  Air
5100 SHARE NUMERIC mwp(6)                  !質量分率    重量%
5110 SHARE NUMERIC mw(6)                   !分子量      molecular weight
5120 REM Mave                    !平均モル質量
5130 SHARE NUMERIC Xmol(7)               !モル数
5140 SHARE NUMERIC Xmolb(6)                !モル分率(体積分率)
5150 SHARE NUMERIC mu(7)                 !粘性係数
5160 SHARE NUMERIC phi(6,6)                !粘性係数計算係数
5170 SHARE NUMERIC phix(6,6)
5180 SHARE NUMERIC nu(7)                 !動粘性係数
5190 SHARE NUMERIC alpha(7)              !温度伝導率
5200 SHARE NUMERIC Pr(7)                 !プラントル数
5210 SHARE NUMERIC kk(6)
5220 SHARE NUMERIC lambda(7)             !熱伝導率
5230 SHARE NUMERIC Tc(6)                   !臨界温度    critical temperature
5240 SHARE NUMERIC Pc(6)                   !臨界圧力    critical pressure
5250 SHARE NUMERIC zeta(6)                 !偏心因子
5260 SHARE NUMERIC Ac0(6)                  !Ac0         定圧分子熱の推算式に於ける係数
5270 SHARE NUMERIC Bc0(6)                  !Bc0              〃              〃
5280 SHARE NUMERIC Cc0(6)                  !Cc0              〃              〃
5290 SHARE NUMERIC Dc0(6)                  !Dc0              〃              〃
5300 SHARE NUMERIC Ac1(6)                  !Ac1         定圧比熱の推算式に於ける係数
5310 SHARE NUMERIC Bc1(6)                  !Bc1              〃              〃
5320 SHARE NUMERIC Cc1(6)                  !Cc1              〃              〃
5330 SHARE NUMERIC Dc1(6)                  !Dc1              〃              〃
5340 SHARE NUMERIC Ac2(6)                  !Ac2         定容比熱の推算式に於ける係数
5350 SHARE NUMERIC Bc2(6)                  !Bc2              〃              〃
5360 SHARE NUMERIC Cc2(6)                  !Cc2              〃              〃
5370 SHARE NUMERIC Dc2(6)                  !Dc2              〃              〃
5380 SHARE NUMERIC shiguma (6)             !σ          各成分気体の特性直径
5390 SHARE NUMERIC epsilonk(6)            !ε/k        各成分気体の特性エネルギー
5400 SHARE NUMERIC ohmv(6)                 !Ωv         粘性の衝突積分
5410 SHARE NUMERIC ohmd(8)                 !Ωd         拡散の衝突積分
5415 SHARE NUMERIC Av,Bv,Cv,Dv,Ev,Fv,Ad,Bd,Cd,Dd,Ed,Fd,Gd,Hd
     ! 元8200行~8430行のdata文
     REM       N2        O2        CO2       CO        He        Air
     DATA      N2   ,    O2   ,    CO2  ,    CO   ,    He   ,    Air
     DATA  28.0134  ,31.999   ,44.010   ,28.010   ,4.0026   ,28.964   !molecular weight 分子量
     DATA    126.2  ,154.6    ,304.2    ,132.9    ,5.19     ,132.5    !Tc               臨界温度    K
     DATA     33.5  ,50.1     ,72.8     ,34.5     ,2.24     ,37.2     !Pc               臨界圧力    atm  760mmhg  101325Pa
     DATA    0.040  ,0.021    ,0.225    ,0.049    ,-0.387   ,0        !ζ   zeta        偏心因子
     DATA    7.440  ,6.713    ,4.728    ,7.373    ,0        ,0        !Ac0              定圧分子熱の推算式に於ける係数
     DATA   -0.324  ,-8.79E-5 ,1.754    ,-0.307   ,0        ,0        !Bc0(×10^-2)          〃              〃
     DATA    6.400  ,4.170    ,-13.38   ,6.662    ,0        ,0        !Cc0(×10^-6)          〃              〃
     DATA   -2.790  ,-2.544   ,4.097    ,-3.037   ,0        ,0        !Dc0(×10^-9)          〃              〃
     DATA  0.938314 ,0.817026 ,0.618542 ,0.929207 ,0        ,0.905673 !Ac1              定圧比熱の推算式に於ける係数
     DATA  2.95732  ,3.87124  ,9.43157  ,3.43656  ,0        ,3.10391  !Bc1(×10^-4)          〃              〃
     DATA -7.31507  ,-14.1476 ,-39.2290 ,-10.0711 ,0        ,-8.59483 !Cc1(×10^-8)          〃              〃
     DATA  5.81796  ,19.9678  ,54.4078  ,10.1493  ,0        ,8.56212  !Dc1(×10^-12)         〃              〃
     DATA  0.656848 ,0.547045 ,0.396046 ,0.641668 ,0        ,0.625027 !Ac2              定容比熱の推算式に於ける係数
     DATA  2.46015  ,4.12982  ,10.5300  ,3.13564  ,0        ,2.89050  !Bc2(×10^-4)          〃              〃
     DATA -3.16796  ,-16.1964 ,-48.3891 ,-7.57080 ,0        ,-6.76530 !Cc2(×10^-8)          〃              〃
     DATA -3.91928  ,24.6892  ,75.8699  ,4.29183  ,0        ,4.17504  !Dc2(×10^-12)         〃              〃
     DATA  3.798    ,3.467    ,3.941    ,3.690    ,2.551    ,3.711    !σ               各成分気体の特性直径
     DATA  71.4     ,106.7    ,195.2    ,91.7     ,10.22    ,78.6     !ε/k                     と特性エネルギー
     REM     Av        Bv        Cv        Dv        Ev        Fv      Ωv              粘性の衝突積分
     DATA  1.16145  ,0.14874  ,0.52487  ,0.77320  ,2.16178  ,2.43787  !
     REM     Ad        Bd        Cd        Dd        Ed        Fd        Gd        Hd         !Ωd    拡散の衝突積分
     DATA  1.06036  ,0.15610  ,0.19300  ,0.47635  ,1.03587  ,1.52996   ,1.76474  ,3.89411     !
     ! この次の行が5420行

(D) 8440行のend-sub行の次にend-module行を挿入する。
8450 END MODULE
 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年12月 1日(土)00時15分28秒
返信・引用
  多成分気体の熱物性値を計算する部分のプログラムです。


4990 REM *****************************************************************
5000 EXTERNAL SUB airpro(k,rho7,cp7,mu7,nu7,lambda7,alpha7,pr7)
5010 REM SET WINDOW 0,1.0,0,1.0
5020 LET n=6                     !対象気体数      6種類  N2,O2,CO2,CO,He,Air
5030 REM TK                      !絶対温度    K
5040 REM Pa                      !圧力  パスカル
5050 DIM rho(n+1)                !各気体の密度
5060 DIM CP(n+1)                 !  〃    定圧比熱
5070 DIM CVv(n+1)                !  〃    定容比熱
5080 DIM CPO(n+1)                !  〃    定圧分子熱
5090 DIM n$(n)                   !気体名称    N2  ,  O2  ,  CO2  ,  CO  ,  He  ,  Air
5100 DIM mwp(n)                  !質量分率    重量%
5110 DIM mw(n)                   !分子量      molecular weight
5120 REM Mave                    !平均モル質量
5130 DIM Xmol(n+1)               !モル数
5140 DIM Xmolb(n)                !モル分率(体積分率)
5150 DIM mu(n+1)                 !粘性係数
5160 DIM phi(n,n)                !粘性係数計算係数
5170 DIM phix(n,n)
5180 DIM nu(n+1)                 !動粘性係数
5190 DIM alpha(n+1)              !温度伝導率
5200 DIM Pr(n+1)                 !プラントル数
5210 DIM kk(n)
5220 DIM lambda(n+1)             !熱伝導率
5230 DIM Tc(n)                   !臨界温度    critical temperature
5240 DIM Pc(n)                   !臨界圧力    critical pressure
5250 DIM zeta(n)                 !偏心因子
5260 DIM Ac0(n)                  !Ac0         定圧分子熱の推算式に於ける係数
5270 DIM Bc0(n)                  !Bc0              〃              〃
5280 DIM Cc0(n)                  !Cc0              〃              〃
5290 DIM Dc0(n)                  !Dc0              〃              〃
5300 DIM Ac1(n)                  !Ac1         定圧比熱の推算式に於ける係数
5310 DIM Bc1(n)                  !Bc1              〃              〃
5320 DIM Cc1(n)                  !Cc1              〃              〃
5330 DIM Dc1(n)                  !Dc1              〃              〃
5340 DIM Ac2(n)                  !Ac2         定容比熱の推算式に於ける係数
5350 DIM Bc2(n)                  !Bc2              〃              〃
5360 DIM Cc2(n)                  !Cc2              〃              〃
5370 DIM Dc2(n)                  !Dc2              〃              〃
5380 DIM shiguma (n)             !σ          各成分気体の特性直径
5390 DIM epsilonk(n)            !ε/k        各成分気体の特性エネルギー
5400 DIM ohmv(6)                 !Ωv         粘性の衝突積分
5410 DIM ohmd(8)                 !Ωd         拡散の衝突積分
5420 REM *******************************************************************
5430 REM *           定数の読み込み                                        *
5440 REM *******************************************************************
5450 FOR i=1 TO n
5460    READ n$(i)
5470 NEXT i
5480 FOR i=1 TO n
5490    READ mw(i)
5500 NEXT i
5510 FOR i=1 TO n
5520    READ Tc(i)
5530 NEXT i
5540 FOR i=1 TO n
5550    READ Pc(i)
5560 NEXT i
5570 FOR i=1 TO n
5580    READ zeta(i)
5590 NEXT i
5600 FOR i=1 TO n
5610    READ Ac0(i)
5620 NEXT i
5630 FOR i=1 TO n
5640    READ Bc0(i)
5650    LET Bc0(i)=Bc0(i)*1E-2
5660 NEXT i
5670 FOR i=1 TO n
5680    READ Cc0(i)
5690    LET Cc0(i)=Cc0(i)*1E-6
5700 NEXT i
5710 FOR i=1 TO n
5720    READ Dc0(n)
5730    LET Dc0(i)=Dc0(i)*1E-9
5740 NEXT i
5750 FOR i=1 TO n
5760    READ Ac1(i)
5770 NEXT i
5780 FOR i=1 TO n
5790    READ Bc1(i)
5800    LET Bc1(i)=Bc1(i)*1E-4
5810 NEXT i
5820 FOR i=1 TO n
5830    READ Cc1(i)
5840    LET Cc1(i)=Cc1(i)*1E-8
5850 NEXT i
5860 FOR i=1 TO n
5870    READ Dc1(i)
5880    LET Dc1(i)=Dc1(i)*1E-12
5890 NEXT i
5900 FOR i=1 TO n
5910    READ Ac2(i)
5920 NEXT i
5930 FOR i=1 TO n
5940    READ Bc2(i)
5950    LET Bc2(i)=Bc2(i)*1E-4
5960 NEXT I
5970 FOR i=1 TO n
5980    READ Cc2(i)
5990    LET Cc2(i)=Cc2(i)*1E-8
6000 NEXT i
6010 FOR i=1 TO n
6020    READ Dc2(i)
6030    LET Dc2(i)=Dc2(i)*1E-12
6040 NEXT i
6050 FOR i=1 TO n
6060    READ shiguma(i)
6070 NEXT i
6080 FOR i=1 TO n
6090    READ epsilonk(i)
6100 NEXT i
6110 READ Av
6120 READ Bv
6130 READ Cv
6140 READ Dv
6150 READ Ev
6160 READ Fv
6170 READ Ad
6180 READ Bd
6190 READ Cd
6200 READ Dd
6210 READ Ed
6220 READ Fd
6230 READ Gd
6240 READ Hd
6250 REM *****************************************************
6260 REM *     各気体の質量分率=重量%を入力                *
6270 REM *****************************************************
6280 REM PRINT"各気体の重量%を入力してください"
6290 REM DO WHILE mwp(1)+mwp(2)+mwp(3)+mwp(4)+mwp(5)+mwp(6)<>100
6300 REM    INPUT PROMPT"N2 , O2 , CO2 , CO , He , Air":mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
6310 REM LOOP
6320 LET mwp(1)=0
6330 LET mwp(2)=0
6340 LET mwp(3)=0
6350 LET mwp(4)=0
6360 LET mwp(5)=0
6370 LET mwp(6)=100
6380 LET Mkongou=0
6390 FOR i=1 TO n
6400    IF mwp(i)<>0 THEN
6410       LET Mkongou=(mwp(i)/100/mw(i))+Mkongou
6420    END IF
6430 NEXT i
6440 LET Mkongou=1/Mkongou                                    ! 混合気体の分子量
6450 FOR i = 1 TO n
6460    IF mwp(i)<>0 THEN
6470       LET Xmolb(i)=Mkongou/mw(i)*mwp(i)                  ! 体積分率の計算
6480    END IF
6490 NEXT i
6500 FOR i=1 TO n
6510    LET Xmol(i)=mwp(i)/mw(i)
6520 NEXT i
6530 REM *****************************************************
6540 REM *     圧力、温度の設定                              *
6550 REM *****************************************************
6560 REM PRINT"計算条件  温度(℃) , 圧力を指示してください。"
6570 REM INPUT PROMPT"    T  C'   ,    P  atm      ":T,Patm      !T  C' : T  ℃      P  atm  : P 気圧
6580 LET T=k
6590 LET Patm=1.0
6600 LET TK=T+273.15                                         !TK    :  絶対温度  K
6610 LET Pa=Patm*101325                                      !Pa    :  パスカル
6620 REM PRINT TK ;"K  " ; TK-273.15;"C'  ";Pa;"Pa  "
6630 REM *****************************************************
6640 REM *     密度の計算  kg/m^3                            *
6650 REM *****************************************************
6660 LET rho(n+1)=0
6670 FOR i=1 TO n
6680    LET rho(i)=Pa*mw(i)/8.314/TK/1000
6690    LET rho(n+1)=rho(i)*Xmolb(i)/100+rho(n+1)
6700 NEXT i
6710 LET rho7=rho(n+1)
6720 REM *****************************************************
6730 REM *    定圧比熱の計算   KJ/kgK                        *
6740 REM *****************************************************
6750 LET CP(n+1)=0
6760 FOR i=1 TO n
6770    IF i=5 THEN
6780       LET CP(i)=5193/1000
6790    ELSE
6800       LET CP(i)=Ac1(i)+Bc1(i)*TK+Cc1(i)*TK^2+Dc1(i)*TK^3
6810    END IF
6820    LET CP0=CP(i)*Xmolb(i)/100+CP0
6830 NEXT i
6840 REM PRINT CP0
6850 REM LET Mmix=0
6860 REM FOR i=1 TO n
6870 REM    LET Mmix=mw(i)*Xmolb(i)/100+Mmix
6880 REM NEXT i
6890 REM PRINT Mmix
6900 LET CP(n+1)=CP0
6910 LET cp7=cp(n+1)
6920 REM ****************************************************
6930 REM *    粘性率の計算     Pa・s                        *
6940 REM ****************************************************
6950 FOR i=1 TO  n
6960    LET tdot=TK/epsilonk(i)
6970    IF i=5 THEN
6980       IF  TK>1100 THEN
6990          LET visc =Av/tdot^Bv
7000       ELSE
7010          LET visc=Av/tdot^Bv+Cv/EXP(Dv*tdot)
7020       END IF
7030       LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/visc*1E-7*1E6
7040    ELSE
7050       LET ohmv(i)=(Av/tdot^Bv+Cv/EXP(Dv*tdot)+Ev/EXP(Fv*tdot))
7060       LET mu(i)=26.69*SQR(mw(i)*TK)/shiguma(i)^2/ohmv(I)*1E-7*1E6
7070    END IF
7080 NEXT i
7090 LET mu(n+1)=0
7100 FOR i=1 TO n
7110    FOR j=1 TO n
7120       IF mwp(j)<>0 THEN
7130          IF mwp(i)<>0 THEN
7140             LET phi(i,j)=(1+(mu(i)/mu(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
7150          END IF
7160       END IF
7170    NEXT j
7180 NEXT i
7190 LET ZZ=0
7200 FOR i=1 TO n
7210    IF mwp(i)<>0 THEN
7220       LET Z=0
7230       FOR j= 1 TO n
7240          IF mwp(j)<>0 THEN
7250             LET Z=Z+xmolb(j)*phi(i,j)
7260          END IF
7270       NEXT j
7280       LET ZZ=ZZ+Xmolb(i)*mu(i)/Z
7290    END IF
7300 NEXT i
7310 LET mu(n+1)=ZZ
7320 LET mu7=mu(n+1)
7330 REM ***************************************************
7340 REM *    熱伝導率の計算  mW/mK                        *
7350 REM ***************************************************
7360 FOR i=1 TO n
7370    LET CVv(i)=Ac2(i)+Bc2(i)*TK+Cc2(i)*TK^2+Dc2(i)*TK^3
7380    LET tdot=TK/epsilonk(i)
7390    IF i=5 THEN
7400       LET CVv(i)=3114
7410       IF  TK > 1100 THEN
7420          LET Ohmvh=Av/tdot^Bv
7430       ELSE
7440          LET ohmvh=Av/tdot^Bv+Cv/EXP(Dv*tdot)
7450       END IF
7460       LET lambdahe=2.669*SQR(mw(i)*TK)/shiguma(i)^2/ohmvh*1E-7*1E6
7470       LET lambda(i)=(1.32*CVv(i)*mw(i)*0.001/4.186+3.52)*lambdahe/mw(i)*4.186*10
7480    ELSE
7490       LET lambda(i)=(1.32*CVv(i)*mw(i)/4.186+3.52)*mu(i)/mw(i)*4.186
7500    END IF
7510 NEXT i
7520 LET lambda(n+1)=0
7530 FOR i=1 TO n
7540    FOR j=1 TO n
7550       IF mwp(j)<>0 THEN
7560          IF mwp(i)<>0 THEN
7570             LET phi(i,j)=(1+(lambda(i)/lambda(j))^0.5*(mw(j)/mw(i))^0.25)^2/(8*(1+mw(i)/mw(j)))^0.5
7580          END IF
7590       END IF
7600    NEXT j
7610 NEXT i
7620 LET ZZ=0
7630 FOR i=1 TO n
7640    IF mwp(i)<>0 THEN
7650       LET Z=0
7660       FOR j= 1 TO n
7670          IF mwp(j)<>0 THEN
7680             LET Z=Z+xmolb(j)*phi(i,j)
7690          END IF
7700       NEXT j
7710       LET ZZ=ZZ+Xmolb(i)*lambda(i)/Z
7720    END IF
7730 NEXT i
7740 LET lambda(n+1)=ZZ
7750 LET lambda7=lambda(n+1)
7760 REM *************************************************
7770 REM *    動粘性係数    mm^2/s                       *
7780 REM *************************************************
7790 FOR i= 1TO n+1
7800    IF rho(i)<>0 THEN
7810       LET nu(i)=mu(i)/rho(i)
7820    END IF
7830 NEXT i
7840 LET nu7=nu(n+1)
7850 REM *************************************************
7860 REM *    温度伝導率    mm^2/s                       *
7870 REM *************************************************
7880 FOR i=1 TO n+1
7890    IF Rho(i)<> 0 THEN
7900       LET alpha(i)=lambda(i)/rho(i)/CP(I)
7910    END IF
7920 NEXT i
7930 LET alpha7=alpha(n+1)
7940 REM *************************************************
7950 REM *    プラントル数                                   *
7960 REM *************************************************
7970 FOR i=1TO n+1
7980    IF alpha(i)<>0 THEN
7990       LET Pr(i)=nu(i)/alpha(i)
8000    END IF
8010 NEXT i
8020 LET pr7=pr(n+1)
8030 REM *************************************************
8040 REM *    計算結果  打ち出し                         *
8050 REM *************************************************
8060 REM PLOT TEXT ,AT 0.05,0.95 ,USING "温度、圧力           絶対温度  ---%.# K    摂氏  ---%.# ℃      圧力  -%.##MPa           ":TK,T,Pa/1000000
8070 REM PLOT TEXT ,AT 0.05,0.90:"                       N2         O2        CO2         CO         He        Air "
8080 REM PLOT TEXT ,AT 0.05,0.88 ,USING "質量分率     ##    ---%.#     ---%.#     ---%.#     ---%.#     ---%.#     ---%.#   ":"%",mwp(1),mwp(2),mwp(3),mwp(4),mwp(5),mwp(6)
8090 REM PLOT TEXT ,AT 0.05,0.86 ,USING "モル数    n mol    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":Xmol(1),Xmol(2),Xmol(3),Xmol(4),Xmol(5),Xmol(6)
8100 REM PLOT TEXT ,AT 0.05,0.84 ,USING "体積分率     ##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"%",Xmolb(1),Xmolb(2),Xmolb(3),Xmolb(4),Xmolb(5),Xmolb(6)
8110 REM PLOT TEXT ,AT 0.05,0.80 ,USING "混合気体分子量       ---%.##":Mkongou
8120 REM PLOT TEXT ,AT 0.05,0.76: "                       N2         O2        CO2         CO         He         Air        Mix"
8130 REM PLOT TEXT ,AT 0.05,0.74 ,USING "密度  ######         -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"kg/m^3",rho(1),rho(2),rho(3),rho(4),rho(5),rho(6),rho(n+1)
8140 REM PLOT TEXT ,AT 0.05,0.72 ,USING "定圧比熱  ######     -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":"KJ/kgK",CP(1),CP(2),CP(3),CP(4),CP(5),CP(6),CP(n+1)
8150 REM PLOT TEXT ,AT 0.05,0.70 ,USING "粘性率の計算 ###### --%.##     --%.##     --%.##     --%.##     --%.##     --%.##      --%.##":"uPa.s",mu(1),mu(2),mu(3),mu(4),mu(5),mu(6),mu(n+1)
8160 REM PLOT TEXT ,AT 0.05,0.68 ,USING "動粘性係数 #####   ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",nu(1),nu(2),nu(3),nu(4),nu(5),nu(6),nu(n+1)
8170 REM PLOT TEXT ,AT 0.05,0.66 ,USING "熱伝導率  #####    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mW/mK",lambda(1),lambda(2),lambda(3),lambda(4),lambda(5),lambda(6),lambda(n+1)
8180 REM PLOT TEXT ,AT 0.05,0.64 ,USING "温度伝導率  #####  ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##    ---%.##":"mm2/s",alpha(1),alpha(2),alpha(3),alpha(4),alpha(5),alpha(6),alpha(n+1)
8190 REM PLOT TEXT ,AT 0.05,0.62 ,USING "プラントル数             -%.####    -%.####    -%.####    -%.####    -%.####    -%.####    -%.####":Pr(1),Pr(2),Pr(3),Pr(4),Pr(5),Pr(6),Pr(n+1)
8200 REM       N2        O2        CO2       CO        He        Air
8210 DATA      N2   ,    O2   ,    CO2  ,    CO   ,    He   ,    Air
8220 DATA  28.0134  ,31.999   ,44.010   ,28.010   ,4.0026   ,28.964   !molecular weight 分子量
8230 DATA    126.2  ,154.6    ,304.2    ,132.9    ,5.19     ,132.5    !Tc               臨界温度    K
8240 DATA     33.5  ,50.1     ,72.8     ,34.5     ,2.24     ,37.2     !Pc               臨界圧力    atm  760mmhg  101325Pa
8250 DATA    0.040  ,0.021    ,0.225    ,0.049    ,-0.387   ,0        !ζ   zeta        偏心因子
8260 DATA    7.440  ,6.713    ,4.728    ,7.373    ,0        ,0        !Ac0              定圧分子熱の推算式に於ける係数
8270 DATA   -0.324  ,-8.79E-5 ,1.754    ,-0.307   ,0        ,0        !Bc0(×10^-2)          〃              〃
8280 DATA    6.400  ,4.170    ,-13.38   ,6.662    ,0        ,0        !Cc0(×10^-6)          〃              〃
8290 DATA   -2.790  ,-2.544   ,4.097    ,-3.037   ,0        ,0        !Dc0(×10^-9)          〃              〃
8300 DATA  0.938314 ,0.817026 ,0.618542 ,0.929207 ,0        ,0.905673 !Ac1              定圧比熱の推算式に於ける係数
8310 DATA  2.95732  ,3.87124  ,9.43157  ,3.43656  ,0        ,3.10391  !Bc1(×10^-4)          〃              〃
8320 DATA -7.31507  ,-14.1476 ,-39.2290 ,-10.0711 ,0        ,-8.59483 !Cc1(×10^-8)          〃              〃
8330 DATA  5.81796  ,19.9678  ,54.4078  ,10.1493  ,0        ,8.56212  !Dc1(×10^-12)         〃              〃
8340 DATA  0.656848 ,0.547045 ,0.396046 ,0.641668 ,0        ,0.625027 !Ac2              定容比熱の推算式に於ける係数
8350 DATA  2.46015  ,4.12982  ,10.5300  ,3.13564  ,0        ,2.89050  !Bc2(×10^-4)          〃              〃
8360 DATA -3.16796  ,-16.1964 ,-48.3891 ,-7.57080 ,0        ,-6.76530 !Cc2(×10^-8)          〃              〃
8370 DATA -3.91928  ,24.6892  ,75.8699  ,4.29183  ,0        ,4.17504  !Dc2(×10^-12)         〃              〃
8380 DATA  3.798    ,3.467    ,3.941    ,3.690    ,2.551    ,3.711    !σ               各成分気体の特性直径
8390 DATA  71.4     ,106.7    ,195.2    ,91.7     ,10.22    ,78.6     !ε/k                     と特性エネルギー
8400 REM     Av        Bv        Cv        Dv        Ev        Fv      Ωv              粘性の衝突積分
8410 DATA  1.16145  ,0.14874  ,0.52487  ,0.77320  ,2.16178  ,2.43787  !
8420 REM     Ad        Bd        Cd        Dd        Ed        Fd        Gd        Hd         !Ωd    拡散の衝突積分
8430 DATA  1.06036  ,0.15610  ,0.19300  ,0.47635  ,1.03587  ,1.52996   ,1.76474  ,3.89411     !
8440 END sub

 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年12月 1日(土)00時12分33秒
返信・引用
  白石様、しばっち様

  大切な御時間を割きお教えいただき有り難うございます。 しかし、未だできあがらずの状態です。

  お知恵を拝借させてください。

  本プログラムは配管の保温計算を行う物で、在職中はエクセルにて行っていました。ネットで日本原子力研究所のレポートで
 ”多成分混合気体の熱物性値”JAERI-M 92-131  1992年9月 を見つけ、今まで気体の物性値は日本機械学会の”伝熱工学資料”等の物性値表から
 単純に保管して求めていた物を近似計算式で求める方式に書き換えてみた物です。

  行番号1000~4980までが主計算、結果表示部で

  号番号5000~8440までが気体の物性値を計算する部分です。

   この、5010~6240 までが変数の定義、データの読み込み部になっています。ここの部分を1度読み込むだけにしたいと言うのが
  今取り組んでいる問題です。将来的にはこの保温計算をさらに別のプログラムに組み込みたいと考えています。従って、計算時間の
  無駄を少しでも減らしたいと思います。

   よろしくお願いいたします。 プログラムの入力はすべて書き込んでありますのでRUNさせるとすぐに結果を表示いたします。

主プログラムです。


1000 DECLARE EXTERNAL SUB airpro         ! 混合気体の物性値計算
1010 DIM pipe(19,4)                      ! 配管サイズの設定
1020 DIM ps(4)                           ! 配管サイズ番号
1030 DIM ins$(10)                        ! 保温材名称
1040 DIM insm(4,2)                       ! 1,2層目保温材番号
1050 DIM insth(4,3)                      ! 1,2層目保温厚さ、全厚
1060 DIM ins(10,3)                       ! 保温材番号順の熱伝導率データ
1070 DIM facek(4)                        ! 保温表面温度  K
1080 DIM airdat(4,8)                     ! 各保温表面温度  K と外気の平均温度に於ける気体物性値
1090 DIM midt(4,2)
1100 DIM t(4)                            ! 仮2層保温中間温度
1110 DIM kekka(4,14)                     ! 計算結果
1120 DIM Rth(4,4)                        ! 熱抵抗
1130 REM **********************************************************************
1140 MAT READ pipe(19,4)              ! 配管サイズの設定
1150 MAT READ ins$(10)                ! 保温材名称
1160 MAT READ ins(10,3)               ! 保温材データの設定
1170 REM ******************************************
1180 REM LET q=0
1190 REM INPUT PROMPT "配管ライン名称      ":name$
1200 LET name$="pi"
1210 REM INPUT PROMPT "保 持 温 度     (C')":maint
1220 LET maint=200
1230 REM INPUT PROMPT "外 気 温 度    (C')":ambi
1240 LET ambi=0
1250 REM INPUT PROMPT "風       速    (m/s)":wv
1260 LET wv=10
1270 REM INPUT PROMPT "設 計 裕 度         ":df
1280 LET df=1.3
1290 REM INPUT PROMPT "効       率         ":eff
1300 LET eff=0.95
1310 PRINT "   番号   配管 (A)    番号   配管 (A)    番号   配管 (A)"
1320 PRINT "    1       15         7       65         14     200 "
1330 PRINT "    2       20         8       80         15     250 "
1340 PRINT "    3       25         9       90         16     300 "
1350 PRINT "    4       32        10      100         17     350 "
1360 PRINT "    5       40        11      125         18     400 "
1370 PRINT "    6       50        12      150         19     450 "
1380 LET pn=1
1390 REM INPUT PROMPT "配管 1  番号        ":ps(1)
1400 LET ps(1)=10                                ! 仮の値
1410 REM INPUT PROMPT "配管 2  番号 無い場合は 0":ps(2)
1420 LET ps(2)=12                                ! 仮の値
1430 LET pn=2
1440 IF ps(2)=0 THEN
1450    LET ps(2)=ps(1)
1460    LET ps(3)=ps(1)
1470    LET ps(4)=ps(1)
1480    LET pn=1
1490 END IF
1500 IF pn=2 THEN
1510    REM INPUT PROMPT "配管 3  番号 無い場合は 0":ps(3)
1520    LET ps(3)=14                                ! 仮の値
1530    LET pn=3
1540    IF ps(3)=0 THEN
1550       LET ps(3)=ps(1)
1560       LET ps(4)=ps(1)
1570       LET pn=2
1580    END IF
1590 END IF
1600 IF pn=3 THEN
1610    REM INPUT PROMPT "配管 4  番号 無い場合は 0":ps(4)
1620    LET ps(4)=16                                ! 仮の値  配管4種類にしています。
1630    LET pn=4                                    ! pn=4 の条件に設定
1640    IF ps(4)=0 THEN
1650       LET ps(4)=ps(1)
1660       LET pn=3
1670    END IF
1680 END IF
1690 PRINT "    bangou   kigou         λ0        λ1       λ3        "
1700 PRINT "       1     clc13-300   0.04070   1.28E-04       0        "
1710 PRINT "       2     clc13-800   0.05550   2.05E-05   1.93E- 7     "
1720 PRINT "       3     clc22-300   0.05350   1.16E-04       0        "
1730 PRINT "       4     clc22-800   0.06120   3.38E-05   1.95E-07     "
1740 PRINT "       5     gwc         0.03330   1.21E-04   6.56E-07     "
1750 PRINT "       6     T#1260      0.11000   -1.40E-04  2.60E-07     "
1760 PRINT "       7     rwc100      0.03140   1.74E-04       0        "
1770 PRINT "       8     rwc600      0.04070   1.16E-04   7.67E-07     "
1780 PRINT "       9     T#5120      0.02470   1.014E-04  7.55E-08     "
1790 IF pn=1 THEN
1800    LET insmn=1
1810    INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
1820    INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は ”0,0”":insm(1,2),insth(1,2)
1830    IF insm(1,2)=0 THEN
1840       LET insmn=0
1850       LET insm(1,2)=insm(1,1)
1860       LET insth(1,2)=0
1870    END IF
1880    LET insm(2,1)=insm(1,1)
1890    LET insth(2,1)=insth(1,1)
1900    LET insm(2,2)=insm(1,2)
1910    LET insth(2,2)=insth(1,2)
1920    LET insm(3,1)=insm(1,1)
1930    LET insth(3,1)=insth(1,1)
1940    LET insm(3,2)=insm(1,2)
1950    LET insth(3,2)=insth(1,2)
1960    LET insm(4,1)=insm(1,1)
1970    LET insth(4,1)=insth(1,1)
1980    LET insm(4,2)=insm(1,2)
1990    LET insth(4,2)=insth(1,2)
2000 END IF
2010 IF pn=2 THEN
2020    LET insmn=1
2030    INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
2040    INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
2050    IF insm(1,2)=0 THEN
2060       LET insmn=0
2070       LET insm(1,2)=insm(1,1)
2080       LET insth(1,2)=0
2090    END IF
2100    LET insmn=1
2110    INPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
2120    INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
2130    IF insm(2,2)=0 THEN
2140       LET insmn=0
2150       LET insm(2,2)=insm(2,1)
2160       LET insth(2,2)=0
2170    END IF
2180    LET insm(3,1)=insm(1,1)
2190    LET insth(3,1)=insth(1,1)
2200    LET insm(3,2)=insm(1,2)
2210    LET insth(3,2)=insth(1,2)
2220    LET insm(4,1)=insm(1,1)
2230    LET insth(4,1)=insth(1,1)
2240    LET insm(4,2)=insm(1,2)
2250    LET insth(4,2)=insth(1,2)
2260 END IF
2270 IF pn=3 THEN
2280    LET insmn=1
2290    INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
2300    INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
2310    IF insm(1,2)=0 THEN
2320       LET insmn=0
2330       LET insm(1,2)=insm(1,1)
2340       LET insth(1,2)=0
2350    END IF
2360    LET insmn=1
2370    INPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
2380    INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
2390    IF insm(2,2)=0 THEN
2400       LET insmn=0
2410       LET insm(2,2)=insm(2,1)
2420       LET insth(2,2)=0
2430    END IF
2440    LET insmn=1
2450    INPUT PROMPT "配管 3  1層目 保温材番号,厚みmm":insm(3,1),insth(3,1)
2460    INPUT PROMPT "配管 3  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(3,2),insth(3,2)
2470    IF insm(3,2)=0 THEN
2480       LET insmn=0
2490       LET insm(3,2)=insm(3,1)
2500       LET insth(3,2)=0
2510    END IF
2520    LET insm(4,1)=insm(1,1)
2530    LET insth(4,1)=insth(1,1)
2540    LET insm(4,2)=insm(1,2)
2550    LET insth(4,2)=insth(1,2)
2560 END IF
2570 IF pn=4 THEN
2580    LET insmn=1
2590    REM INPUT PROMPT "配管1  1層目 保温材番号,厚みmm":insm(1,1),insth(1,1)
2600    LET insm(1,1)=1
2610    LET insth(1,1)=65
2620    REM INPUT PROMPT "配管 1  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(1,2),insth(1,2)
2630    LET insm(1,2)=0
2640    LET insth(1,2)=0
2650    IF insm(1,2)=0 THEN
2660       LET insmn=0
2670       LET insm(1,2)=insm(1,1)
2680       LET insth(1,2)=0
2690    END IF
2700    LET insmn=1
2710    REM INPUT PROMPT "配管 2  1層目 保温材番号,厚みmm":insm(2,1),insth(2,1)
2720    LET insm(2,1)=1
2730    LET insth(2,1)=75
2740    REM INPUT PROMPT "配管 2  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(2,2),insth(2,2)
2750    LET insm(2,2)=0
2760    LET insth(2,2)=0
2770    IF insm(2,2)=0 THEN
2780       LET insmn=0
2790       LET insm(2,2)=insm(2,1)
2800       LET insth(2,2)=0
2810    END IF
2820    LET insmn=1
2830    REM INPUT PROMPT "配管 3  1層目 保温材番号,厚みmm":insm(3,1),insth(3,1)
2840    LET insm(3,1)=1
2850    LET insth(3,1)=75
2860    REM INPUT PROMPT "配管 3  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(3,2),insth(3,2)
2870    LET insm(3,2)=1
2880    LET insth(3,2)=15
2890    IF insm(3,2)=0 THEN
2900       LET insmn=0
2910       LET insm(3,2)=insm(3,1)
2920       LET insth(3,2)=0
2930    END IF
2940    LET insmn=1
2950    REM INPUT PROMPT "配管 4  1層目 保温材番号,厚みmm":insm(4,1),insth(4,1)
2960    LET insm(4,1)=1
2970    LET insth(4,1)=75
2980    REM INPUT PROMPT "配管 4  2層目 保温材番号,厚みmm 無い場合は”0,0”":insm(4,2),insth(4,2)
2990    LET insm(4,2)=1
3000    LET insth(4,2)=25
3010    IF insm(4,2)=0 THEN
3020       LET insmn=0
3030       LET insm(4,2)=insm(4,1)
3040       LET insth(4,2)=0
3050    END IF
3060 END IF
3070 REM ********** 初期温度の設定 **********
3080 LET face1 = ambi+273+0.1
3090 FOR i=1 TO 4
3100    LET facek(i)=face1                                ! 仮保温表面温度
3110    LET t(i)=(maint+(facek(i)-273))/2                ! 仮2層保温中間温度
3120 NEXT i
3130 REM ********** 保温材熱伝導率の計算  **************************
3140 FOR i=1 TO 4
3150    LET t1=(maint+t(i))/2
3160    LET t2=(t(i)+(facek(i)-273))/2
3170    LET x=1
3180    DO
3190       REM ********** 空気物性値の計算  ****************************
3200       CALL airpro(facek(i)-273,k2,k3,k4,k5,k6,k7,k8)
3210       LET airdat(i,2)=k2         !  比重          kg/m^3
3220       LET airdat(i,3)=k3         !  比熱          kJ/kgK
3230       LET airdat(i,4)=k4         !  粘性係数      μPa・S
3240       LET airdat(i,5)=k5         !  動粘性係数    mm^2/S
3250       LET airdat(i,6)=k6         !  熱伝導率      mW/mK
3260       LET airdat(i,7)=k7         !  温度伝導率    mm^2/S
3270       LET airdat(i,8)=k8         !  プラントル数
3280       LET d0=pipe(ps(i),4)                                                                  ! 保温材内径
3290       LET d1=pipe(ps(i),4)+2*insth(i,1)/1000                                                ! 1層目保温材外径
3300       LET d2=pipe(ps(i),4)+2*insth(i,1)/1000+2*insth(i,2)/1000                              ! 2層目保温材外径
3310       LET t1=(maint+t(i))/2                                                                 ! 1層目保温平均温度
3320       LET c1=(maint^2+maint*t(i)+t(i)^2)/3                                                  ! 熱伝導率計算係数
3330       LET r1=(ins(insm(i,1),1)+ins(insm(i,1),2)*t1+ins(insm(i,1),3)*c1 )                    ! 保温材熱伝導率
3340       LET Rth(i,1)=1/(2*PI*r1)*LOG(d1/d0)                                                   ! 1層目保温層熱抵抗
3350       LET t2=(t(i)+(facek(i)-273))/2                                                        ! 2層目保温平均温度
3360       LET c2=(t(i)^2+t(i)*(facek(i)-273)+(facek(i)-273)^2)/3                                ! 熱伝導率計算係数
3370       LET r2=(ins(insm(i,2),1)+ins(insm(i,2),2)*t2+ins(insm(i,2),3)*c2 )                    ! 保温材熱伝導率
3380       LET Rth(i,2)=1/(2*PI*r2)*LOG(d2/d1)
3390       LET re=wv*3600*d2/(airdat(i,5)*3600/1000000)
3400       LET ac=1.12*(0.373*re^0.5+0.057*re^(2/3))*airdat(i,8)^(1/3)*airdat(i,6)/1000/d2
3410       LET ar=0.8*5.67E-8*(faceK(i)^4-(ambi+273)^4)/(facek(i)-(ambi+273))
3420       LET Rth(i,3)=1/(PI*d2*(ac+ar))
3430       LET Rth(i,4)=Rth(i,1)+Rth(i,2)+Rth(i,3)
3440       LET hloss=(maint-ambi)/Rth(i,4)
3450       LET fk=hloss*Rth(i,3)+ambi+273
3460       LET faceK(i) = fk
3470       LET t(i)=hloss*(Rth(i,2)+Rth(i,3))+ambi
3480       LET x=x+1
3490    LOOP WHILE X<=20
3500    LET kekka(i,1)=t1
3510    LET kekka(i,2)=c1
3520    LET kekka(i,3)=r1
3530    LET kekka(i,4)=t2
3540    LET kekka(i,5)=c2
3550    LET kekka(i,6)=r2
3560    LET kekka(i,7)=re
3570    LET kekka(i,8)=ac
3580    LET kekka(i,9)=ar
3590    LET kekka(i,10)=fk
3600    LET kekka(i,11)=t(i)
3610    LET kekka(i,12)=d0
3620    LET kekka(i,13)=d1
3630    LET kekka(i,14)=d2
3640 NEXT i
3650 REM *********************** 計算結果の表示  ***********************
3660 PLOT TEXT ,AT 0.1,0.95:"配管ライン名称      "
3670 PLOT TEXT ,AT 0.35,0.95: name$
3680 PLOT TEXT ,AT 0.1,0.92:"保 持 温 度     (C')"
3690 PLOT TEXT ,AT 0.35,0.92: STR$(maint)
3700 PLOT TEXT ,AT 0.1,0.89:"外 気 温 度     (C')"
3710 PLOT TEXT ,AT 0.35,0.89: STR$(ambi)
3720 PLOT TEXT ,AT 0.5,0.95:"風       速    (m/s)"
3730 PLOT TEXT ,AT 0.75,0.95: STR$(wv)
3740 PLOT TEXT ,AT 0.5,0.92:"設 計 裕 度         "
3750 PLOT TEXT ,AT 0.75,0.92: STR$(df)
3760 PLOT TEXT ,AT 0.5,0.89:"効       率         "
3770 PLOT TEXT ,AT 0.75,0.89: STR$(eff)
3780 PLOT TEXT ,AT 0.25,0.85:"配管サイズ"
3790 PLOT TEXT ,AT 0.40,0.85:"保温層"
3800 PLOT TEXT ,AT 0.50,0.85:"保温材"
3810 PLOT TEXT ,AT 0.60,0.85:"保温厚さ"
3820 PLOT TEXT ,AT 0.15,0.82:"配管  1"
3830 PLOT TEXT ,AT 0.28,0.82,USING"###": pipe(ps(1),1)
3840 PLOT TEXT ,AT 0.40,0.82:"1層目"
3850 PLOT TEXT ,AT 0.49,0.82:ins$(insm(1,1))
3860 PLOT TEXT ,AT 0.62,0.82,USING"###":insth(1,1)
3870 LET ygyou =0.82
3880 IF insth(1,2)<>0 THEN LET ygyou=ygyou-0.02
3890 IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou :"2層目"
3900 IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(1,2))
3910 IF insth(1,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(1,2)
3920 IF pn => 2 THEN LET ygyou=ygyou-0.02
3930 IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou :"配管  2"
3940 IF pn => 2 THEN PLOT TEXT ,AT 0.28,ygyou ,USING"###": pipe(ps(2),1)
3950 IF pn => 2 THEN PLOT TEXT ,AT 0.40,ygyou :"1層目"
3960 IF pn => 2 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(2,1))
3970 IF pn => 2 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(2,1)
3980 IF pn => 2 AND insth(2,2)<>0 THEN LET ygyou =ygyou-0.02
3990 IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou :"2層目"
4000 IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou :ins$(insm(2,2))
4010 IF pn => 2 AND insth(2,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou ,USING"###":insth(2,2)
4020 IF pn => 3 THEN LET ygyou=ygyou-0.02
4030 IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
4040 IF pn => 3 THEN PLOT TEXT ,AT 0.28,ygyou,USING"###": pipe(ps(3),1)
4050 IF pn => 3 THEN PLOT TEXT ,AT 0.40,ygyou:"1層目"
4060 IF pn => 3 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(3,1))
4070 IF pn => 3 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(3,1)
4080 IF pn => 3 AND insth(3,2)<>0 THEN LET ygyou=ygyou-0.02
4090 IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou:"2層目"
4100 IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(3,2))
4110 IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(3,2)
4120 IF pn = 4 THEN LET ygyou=ygyou-0.02
4130 IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
4140 IF pn = 4 THEN PLOT TEXT ,AT 0.28,ygyou,USING"###": pipe(ps(4),1)
4150 IF pn = 4 THEN PLOT TEXT ,AT 0.40,ygyou:"1層目"
4160 IF pn = 4 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(4,1))
4170 IF pn = 4 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(4,1)
4180 IF pn = 4  AND insth(4,2)<>0 THEN LET ygyou=ygyou-0.02
4190 IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.40,ygyou:"2層目"
4200 IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.49,ygyou:ins$(insm(4,2))
4210 IF pn = 4  AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.62,ygyou,USING"###":insth(4,2)
4220 LET ygyou=ygyou-0.02*2
4230 PLOT TEXT ,AT 0.25,ygyou:"保温筒内径   保温筒外径     Re      αc     αr      α    "
4240 LET ygyou=ygyou-0.02
4250 PLOT TEXT ,AT 0.15,ygyou:"配管  1"
4260 PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(1,12),kekka(1,13),kekka(1,7),kekka(1,8),kekka(1,9),kekka(1,8)+kekka(1,9)
4270 IF insth(1,2)<>0 THEN  LET ygyou=ygyou-0.02
4280 IF insth(1,2)<>0 THEN  PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(1,13),kekka(1,14)
4290 IF pn => 2 THEN LET ygyou=ygyou-0.02
4300 IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  2"
4310 IF pn => 2 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(2,12),kekka(2,13),kekka(2,7),kekka(2,8),kekka(2,9),kekka(2,8)+kekka(2,9)
4320 IF pn => 2 AND insth(2,2)<> 0 THEN LET ygyou=ygyou-0.02
4330 IF pn => 2 AND insth(2,2)<> 0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(2,13),kekka(2,14)
4340 IF pn => 3 THEN LET ygyou=ygyou-0.02
4350 IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
4360 IF pn => 3 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(3,12),kekka(3,13),kekka(3,7),kekka(3,8),kekka(3,9),kekka(3,8)+kekka(3,9)
4370 IF pn => 3 AND insth(3,2)<>0 THEN LET ygyou=ygyou-0.02
4380 IF pn => 3 AND insth(3,2)<>0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(3,13),kekka(3,14)
4390 IF pn = 4 THEN LET ygyou=ygyou-0.02
4400 IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
4410 IF pn = 4 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###     ######    ###.#    ##.#     ###.# ":kekka(4,12),kekka(4,13),kekka(4,7),kekka(4,8),kekka(4,9),kekka(4,8)+kekka(4,9)
4420 IF pn = 4 AND insth(4,2)<>0 THEN LET ygyou=ygyou-0.02
4430 IF pn = 4 AND insth(4,2)<>0 THEN PLOT TEXT ,AT 0.27,ygyou,USING"%.###        %.###":kekka(4,13),kekka(4,14)
4440 LET ygyou=ygyou-0.02*3
4450 PLOT TEXT ,AT 0.25,ygyou:"  Rth1    Rth2    Rth3     Rth     hloss     Pr      θmid      θf"
4460 LET ygyou=ygyou-0.02
4470 PLOT TEXT ,AT 0.25,ygyou:"                          C'm/W     W/m      W/m       C'        C' "
4480 LET ygyou=ygyou-0.02
4490 PLOT TEXT ,AT 0.15,ygyou:"配管  1"
4500 PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(1,1),Rth(1,2),Rth(1,3),Rth(1,4),(maint-ambi)/Rth(1,4),(maint-ambi)/Rth(1,4)*df/eff,kekka(1,11),kekka(1,10)-273
4510 LET ygyou=ygyou-0.02
4520 IF pn => 2 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  2"
4530 IF pn => 2 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(2,1),Rth(2,2),Rth(2,3),Rth(2,4),(maint-ambi)/Rth(2,4),(maint-ambi)/Rth(2,4)*df/eff,kekka(2,11),kekka(2,10)-273
4540 LET ygyou=ygyou-0.02
4550 IF pn => 3 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  3"
4560 IF pn => 3 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(3,1),Rth(3,2),Rth(3,3),Rth(3,4),(maint-ambi)/Rth(3,4),(maint-ambi)/Rth(3,4)*df/eff,kekka(3,11),kekka(3,10)-273
4570 LET ygyou=ygyou-0.02
4580 IF pn = 4 THEN PLOT TEXT ,AT 0.15,ygyou:"配管  4"
4590 IF pn = 4 THEN PLOT TEXT ,AT 0.26,ygyou,USING"##.##   ##.##    %.##    ##.##    ###.#    ###.#    ###.#    ###.#    ##.##":Rth(4,1),Rth(4,2),Rth(4,3),Rth(4,4),(maint-ambi)/Rth(4,4),(maint-ambi)/Rth(4,4)*df/eff,kekka(4,11),kekka(4,10)-273
4600 REM ********** 配管データ **********
4610 REM  si     d2        t      di
4620 DATA 15 , 0.0217 , 0.0028 , 0.034
4630 DATA 20 , 0.0272 , 0.0029 , 0.034
4640 DATA 25 , 0.034  , 0.0034 , 0.0427
4650 DATA 32 , 0.0427 , 0.0036 , 0.0486
4660 DATA 40 , 0.0486 , 0.0037 , 0.0605
4670 DATA 50 , 0.0605 , 0.0039 , 0.0763
4680 DATA 65 , 0.0763 , 0.0052 , 0.0891
4690 DATA 80 , 0.0891 , 0.0055 , 0.1016
4700 DATA 90 , 0.1016 , 0.0057 , 0.1143
4710 DATA 100, 0.1143 , 0.0060 , 0.1398
4720 DATA 125, 0.1398 , 0.0066 , 0.1652
4730 DATA 150, 0.1652 , 0.0071 , 0.1910
4740 DATA 200, 0.2163 , 0.0082 , 0.2419
4750 DATA 250, 0.2674 , 0.0093 , 0.2930
4760 DATA 300, 0.3185 , 0.0103 , 0.3370
4770 DATA 350, 0.3556 , 0.0111 , 0.3810
4780 DATA 400, 0.4064 , 0.0127 , 0.4320
4790 DATA 450, 0.4572 , 0.0143 , 0.4830
4800 DATA 500, 0.5080 , 0.0151 , 0.5330
4810 REM *********************************
4820 REM ********** 保温材データ **********
4830 DATA clc13-300 , clc13-800 , clc22-300 , clc22-800 , gwc
4840 DATA Ts1260    , rwc100    , rwc600    , Ts5120    , daipa
4850 REM ********** 保温材熱伝導率 **********
4860 REM     r1         r2         r3
4870 DATA 0.04070 , 1.28E-04 , 0
4880 DATA 0.05550 , 2.05E-05 , 1.93E-07
4890 DATA 0.05350 , 1.16E-04 , 0
4900 DATA 0.06120 , 3.38E-05 , 1.95E-07
4910 DATA 0.03330 , 1.21E-04 , 6.56E-07
4920 DATA 0.11000 , -1.40E-04, 2.60E-07
4930 DATA 0.03140 , 1.74E-04 , 0
4940 DATA 0.04070 , 1.16E-04 , 7.67E-07
4950 DATA 0.02470 , 1.14E-04 , 7.55E-08
4960 DATA 0.05550 , 2.05E-05 , 1.93E-07
4970 REM ***********************************
4980 END
 

Re: 外部関数定義部のデータ読み込み

 投稿者:白石和夫  投稿日:2018年11月29日(木)10時34分31秒
返信・引用
  > No.4571[元記事へ]

データの読み込み部を副プログラムで書くとしたら次のような形になります。
1030行でshare宣言した変数aがmodule mで共用になります。


100 DECLARE EXTERNAL FUNCTION m.f
110 DECLARE EXTERNAL SUB m.s
120 CALL s
130 FOR k=1 TO 10
140    PRINT f(k)
150 NEXT k
160 END
1000 MODULE m
1010 PUBLIC FUNCTION f
1020 PUBLIC SUB s
1030 SHARE NUMERIC a(10)
1040 EXTERNAL SUB s
1050    DATA 10,20,30,40,50,60,70,80,90,100
1060    MAT READ a
1070 END SUB
1080 EXTERNAL FUNCTION f(x)
1090    LET f=a(x)
1100 END FUNCTION
1110 END MODULE

 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年11月29日(木)04時47分1秒
返信・引用
  しばっち様

  有り難うございます。試させていただきます。現在は数値変数はmodule内で共用されて
 いるのですが数値配列が共用出来ていない状況です。


 
 

Re: 外部関数定義部のデータ読み込み

 投稿者:しばっち  投稿日:2018年11月28日(水)23時28分31秒
返信・引用
  > No.4568[元記事へ]

ちゃとらさんへのお返事です。

> 一つ教えてください。外部関数定義の中で少し多めのデータ読み込みがあります。外部関数を
> 呼び出すたびに、データの読み込みを繰り返します。一度、読み込んだらもう読み込まないで
> 済ますテクニックはありませんでしょうか。 よろしくお願いいたします。


これは私流のやり方ですが、プログラムの流れを制御したい箇所にflag(旗)を使うと
簡単に制御できます。


ちゃとらさんのプログラムが、どんなプログラムなのかがわかりませんので

これは呼び出す側で制御する方法で、複数の箇所で呼び出す場合です。
SUB TEST(X,Y)の引数を一つ増やして、メインルーチン側で制御します。
(※引数 X,Yはここではダミーです)


要は制御したい部分をIF...THENとEND IFでくくってしまうことです。
ちゃとらさんの場合は、データの読み込み部に当たると思います。


PRINT "-------SUB TEST 呼び出し"
CALL TEST(X,Y,0) !'引数FLGの部分に0、又はそれ以外の数値を書きます


!'ここは何らかのプログラムが続きます。


PRINT "-------SUB TEST 呼び出し"
CALL TEST(X,Y,1) !'引数FLGの部分に0、又はそれ以外の数値を書きます
END

EXTERNAL  SUB TEST(X,Y,FLG)
IF FLG=0 THEN !'ここから制御したい部分が始まります


   PRINT "ABCDE"  !'何らかの処理


END IF
PRINT "12345"
END SUB


次はループ内で呼び出す場合です。ここでは、呼び出される側で制御します。
PUBLIC NUMERIC文で変数FLをグローバル変数宣言します。
すると、メインルーチンと外部副プログラムで共通になります。


PUBLIC NUMERIC FL !'グローバル変数FLの宣言
LET FL=0
FOR I=1 TO 5
   PRINT "------SUB TEST 呼び出し"
   CALL TEST(X,Y) !'ループ内での呼び出し
NEXT I

!'
!'ここは何らかのプログラムが続きます。
!'

LET FL=0 !'フラグをリセットする
PRINT "------SUB TEST 呼び出し"
CALL TEST(X,Y)
END

EXTERNAL  SUB TEST(X,Y)
IF FL=0 THEN  !'ここから制御したい部分が始まります


   PRINT "ABCDEF"  !'何らかの処理

   LET FL=1 !'フラグを立てる
END IF
PRINT "12345"
END SUB


また、フラグを使ってループ内で交互に実行させる等もできます。

LET FL=0
DO

!'ここは何らかのプログラムが続きます。

IF FL=0 THEN

PRINT "FL=0"  !'何らかの処理 1

ELSE

PRINT "FL<>0" !'何らかの処理 2

END IF
LET FL=1-FL !'フラグの切り替え(他にも FL=MOD(FL+1,2)、LET FL=BITXOR(FL,1) 等) ※変数FLが0,1,0,1,0,1...と繰り返す

!'ここは何らかのプログラムが続きます。

LOOP
END

他にもいろいろなやり方、書き方はあるかと思いますが、
とりあえずは、ご参考までに。
 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年11月28日(水)11時32分52秒
返信・引用
  白石様
  ご提示頂いた参考プログラムを見ながら試していますが上手く出来ません。
  外部関数定義部のデータ読み込み部と、計算部を分けてshare 宣言をしているのですが
  変数、配列ともに共用されません。 今一度、tryして見ます。

 
 

外部関数定義部のデータ読み込み

 投稿者:ちゃとら  投稿日:2018年11月23日(金)12時14分32秒
返信・引用
  白石様

 有り難うございます。早速試してみます。

 

レンタル掲示板
/160