TRNSYSの地表面反射日射の扱われかたは?
前回は日射の扱いについて投稿しました。
その後、日射のうち地表面反射の扱いについて調べてみました。というのも、Type56で壁面や開口部にあたる日射の値はIT(全天日射)、IB(直達日射)、ID(天空日射)として出力できます。ところが地表面反射分に関しては出力項目が見当たりません。さて、どのように扱われているのでしょうか?
Type56のドキュメントの記載を調べる
TRNSYSに関しての情報はドキュメントに記載されています。あまりに一般的すぎる事については省略されていたり、逆に複雑な物は参考文献として記載されている事はありますが、概ね必要な情報はドキュメントから見つけることができます。
Type56のドキュメント(05.MultizoneBuilding (Type56 –TRNBuild))の記載を探してみましたが、どうも見当たりません。見落としている気もしますが。。。
とはいえ日射の扱いに関しては、あるバージョンから(たしかTRNSYS17だったと思います)TRNSYSの内部関数に統一されています。コンポーネントが違っても日射処理は同じ内部関数が使われています。
Type56の日射の処理は、Type16 Radiation Processorと同じ処理を行っているはずなので、そちらの仕様から調べてみます。
Type16 Radiation Processor
念のため、Type16の設定項目を確認すると、InputにGround reflectanceが用意されています。Type56と同様ですね。
ドキュメント(4.8.1. Type 16: Solar Radiation Processing)を確認すると、こちらにも詳しい記載がありません。あまり人に優しくないようです。
それでは、次はソースコードを調べてみます。TRNSYSのソースコードは「C:\TRNSYS18\SourceCode」フォルダに格納されています。実際にどのような処理が行われているか確認する事ができます。
ここでType16のソースコード(”C:\TRNSYS18\SourceCode\Types\Type16.f90″)を覗いてみると。。。
まずは変数rhoでGrand refrectanceを取得しています。
その後、処理を辿るとTRNSYSの内部関数、GetTiltedRadiationを呼び出して、傾斜面日射量の計算を行っています。
Outputの処理を確認すると、上記関数の戻り値から変数solarの値を出力しています。図中の赤文字は関数内部の処理を確認した内容です。(後述)
GetTiltedRadiationの内部処理
GetTiltedRadiation関数はTRNSYSに用意されている関数です。ドキュメント(Vol.7 Developer’s/Programmer’s Guide )に記載されています。Solarの処理はどうなっているのかの確認してみます。
ここで地表面の反射分は全天日射に対して計算されていることが分ります。
7.4.4.5. GetHorizontalRadiation and GetTiltedRadiation
The contribution of reflected radiation on a titled surface is calculated by assuming the ground acts as an isotropic reflector and defining Rr as the ratio of reflected radiation on a tilted surface to the total radiation on a horizontal surface is:
β Slope of surface, positive when tilted in the direction of the azimuth specification
I Total radiation on a horizontal surface
ρg Ground reflectance
IgT Ground reflected radiation on a tilted surface
SolarRaditationRuotines.f90
関数のソースコードから実際の処理を抜粋すると以下の部分です。直達、天空、反射分をまととめて全天日射としています。
hhor = solar(7) !水平面全天日射の取得 total solar radiation on the horizontal [kJ/h.m2]
grf = hhor*rhog*0.5d0*(1.d0 - cosslp) !傾斜面に対する地表面の反射分の日射量(Eq.7.4-25,26)
! Fill the array
solar(4) = slope
solar(5) = azimuth
solar(6) = theta
solar(10) = beam + diff + grf ←直達、天空、反射分をまとめて出力
solar(11) = beam
solar(12) = diff
solar(13) = grf
solar(14) = diff_iso
solar(15) = diff_circ
solar(16) = diff_hbright
まとめ
ここまでの内容をまとめて検討すると。。。
- Type16では地表面からの反射分については、全天日射から計算している。(beam + diff + grf)
- Type56については、そのあたりの記述が見当たらないがType16と同等と考えられる。
- 試しにType56/GRDREF 0.2→0.0へ変更して、IB,ID,ITを出力すると
- IB 変化なし(同じ)
- ID 減る(反射分が無くなるので減る)
- IT 減る。これはIDが減っているので、その影響。
ということで、地表面反射分はType16と同様にIDに含めているようです。
Type56で日射量をEXTERNALで扱う場合、入力としてはIT、IBになります。ID=IT-IBで計算していると考えると、IDにGRDREF*全天日射量が含まれているのは妥当だと考えられます。
整理すると、以下のように反射分は天空日射として扱われているようです。
地表面反射 = 全天日射 * 地表面反射率
全天日射‘ = 直達日射 + 天空日射 + 地表面反射
直達日射 =直達日射
天空日射‘ =全天日射‘ – 直達日射
=天空日射 + 地表面反射
動作環境
以下の環境で動作を確認しています。
- Windows11 Pro(64bit, 23H2)
- TRNSYS18.06.0002(64bit)