Translate

2012/08/29

TRNSYSのコンポーネントライブラリ


TRNSYSの特徴の一つにモジュラー構造があります。コンポーネントと呼ばれるモジュールを追加することで、機能を拡張することができます。

標準でかなりの数のコンポーネントが用意されていますが、それ以外にも、複数の会社、組織からコンポーネントライブラリがリリースされています。

有償、無償含めて、あちこちで公開さていますが、オフィシャルサイトでは標準ライブラリを含め、すべてのライブラリのリストが公開されています。 

 TRNSYS.COM  Libraries

このサイトから、各ライブラリの詳しい情報へのリンクが貼られています。コンポーネント詳しい資料なんかも参照できますから、特殊な計算が必要な場合など、ここから調べることができます。

以下、このURLで紹介されているライブラリの概要です。

TRNSYS Standard Components

TRNSYS標準添付のコンポーネント。
シミュレーションに必要な一般的なコンポーネント。 

TESS Libraries

TESS社が開発、販売するコンポーネント。設備関係が充実しています。

TRNLIB Components

ユーザーが作成、公開している無償コンポーネント。 

TRNAUS Components

オーストラリアのTRNSYS15ユーザー向けライブラリ。(TRNSYS17対応作業中) 

Transsolar Non-Standard Components 

ドイツ、TRANSSOLAR社が開発、販売する設備関係のコンポーネントライブラリ。


しかし、主だったのは知っていたけど、TRNAUSっての知らなかった。あちこちでいろんなものが開発されているんですね。


やろうと思っている計算に、なーかなかジャストフィットするコンポーネントが見当たらないときには、こういうところから探してみるのも一案です。


2012/08/23

TRNSYSでPMVを計算する

まだまだ暑いですね。このところ8時頃には出社していますが、その時間でも室温は30℃以上。エアコンが効き始めるまでの数分間がなかなか不快な朝のひとときです。

不快ついでにTRNSYSでどれぐらい不快なのか計算してみました。TRNSYS/Type56では室温や負荷量の他、さまざまな計算機能が付いています。快適性を表す指標の一つ、PMVなんかも計算できます。

さっそくうちのオフィスをモデル化して。。。。
っと思いましたがメンドクサイのでExamplesのデータを使って計算してみます。
Examplesに入っている3D_Building。これの2階部分で計算してみます。

まずはTRNBuildでOutputsの追加。対象ゾーンを選んで、PMVの出力を追加します。
2013/2/15 追記
PMVの説明をよくよく見たらobsolete(旧式!)って書いてありました。TRNSYS17からcomfort outpusという項目が追加されたので、現在はそちらが推奨です。


計算上Clo,Met値が必要になるのでComfort Typeをゾーンに追加しておきます。

設定が済んだら、まずはエアコンの入った状態で計算。
8月の下旬あたりを抜き出してみると。。。
PMVで0.6から0.85ぐらいの値です。まあまあ快適な感じでしょうかね?

では、エアコンの入っていない状態はというと。。。。
3以上でてます。。。
普通は2で「あつい」なので、相当な不快感ですね、これ。

数字で見たら、なんか余計に不快感が増しました。。。

ちなみに同じやり方でPPDも計算できます。

2012/08/22

作ってみようTRNSYSコンポーネント [目次]

「作ってみようTRNSYSコンポーネント」シリーズの目次です。


いろいろ書くことがあったため、数回の記事に分けて書いたら、さすがに(自分でも)見難いので目次にまとめました。

(1) 準備編
(2) プロフォルマ
(3) ソースコードの生成
(4) ソースコードの編集
(5) Simulation Studioで実行
(6) デバッグしてみる

補足:2012/11/5追記
FORTRANの環境設定






2012/08/21

TRNSYSで使えるワイルドカード

タイトルにワイルドカードって書いて、ふと思ったんですが、今時コマンドラインを使うケースも少ないので「ワイルドカードって何?」ってな感じなんじゃ無いだろうか?

カードって言ったらなにを連想します?クレジットカード?トレーディングカード?それとかSuica、PASMO?

情報処理用語でワイルドカードと言ったら特殊文字のことなんですが、通じるかな?
詳しくはこちら→Wikipedia:ワイルドカード

話が横道にそれました(それてはいないか?)が、TRNSYSで使えるワイルドカードのお話です。

TRNSYSの出力系のコンポーネントの多くでは出力先のファイル名にワイルドカードが使えるようになっています。
以下、Type65(Online Plotter)の例ですが、出力先として既定では"***.plt"が指定されています。この"***"は計算実行時にDckファイルと同じ名前に置き換えられて出力されます。
計算を実行した後にフォルダの中身を確認すると"***"の部分がDckファイル名、ここではCase_A.dckを実行しているので、"Case_A"に置き換えられて出力されているのがわかります。
この指定が便利なのはDckファイル名が変われば、出力されるファイル名も自動的に変わる点です。シミュレーションをやっていると、あれこれパラメータを変更して計算結果を比較したいケースってありますよね?そういう時に出力先のファイルが同じ名前で上書きされてしまっては面倒ですよね。

先ほどのCase_Aを別名保存Case_Bという名前で保存して実行してみましょう。
あれ?同じ名前で上書きされている。

これ、結構陥りやすい罠で、"***"の部分が置き換えられるのは"DCKファイル"の名前になります。ついついSimulation Studioで*.tpfを別名保存したら反映されるような気になってしまいますが、違います。
じゃ、Dckファイルの名前はどこで決まるかといえばControl Cardsの中で設定されています。
この部分を"Case_B.dck"に書き換えてもいいのですが、ここもワイルドカードで"***.dck"のように指定することが可能です。
こうすると*.tpfの名前に合わせてDckファイルの名前も変更してくれます。この例ではCase_B.tpfという名前になっているので、Dckファイルの名前もそれに合わせてCase_B.dckという名前になります。でもって玉突き式に出力のファイル名もそれに合わせてCase_B.pltになります。

再度実行してみると、今度はちゃんと思惑通り"Case_B.plt"という名前でファイルが出力されました。
まとめると、以下の2箇所でワイルドカードを指定しておけば*.tpfの名前に合わせて出力するファイル名も自動的に変更されます。

  • Control Cards/Deck file name
  • 出力用コンポーネント(Type65,Type25など)


計算内容を複数検討したい場合に憶えておくと便利な機能です。

おまけ

出力先のファイル名をワイルドカードを使って、以下のように指定することもできます。
こうすると、出力先のファイルが複数ある場合も区別しやすくなります。





2012/08/15

作ってみようTRNSYSコンポーネント(6) デバッグしてみる

作ってみようTRNSYSコンポーネントシリーズのおまけです。
コンポーネントの作成といっても、これはいわゆるプログラミングです。プログラミングといえば欠かせないのはデバッグ作業。という事で新しく作ったコンポーネントをデバッグしてみましょう。

コンポーネントをデバッグする場合、TRNSYS側もデバッグモードでビルドされている必要があります。具体的にはTRNDLL.DLLがデバッグモードじゃないとデバッグができません。

で、どうするかですが、幸いにもTRNSYSには、はじめからTRNDLL.DLLをビルドするためのソリューションが用意されています。これを使ってデバッグの準備をします。

1. TRNDLL.DLLのソリューションを開く

Intel Visual Fortran Composer XE 2011を起動して、以下のソリューションを開きます。

C:\Trnsys17.01.0016\Compilers\IvfCXE2011\IvfCXE2011.sln

VS2008用なのでVS2010を使われている場合、開くと変換ウィザードが立ち上がります。ここは素直に「次へ」を選択して変換を行います。

2. コンポーネントのプロジェクトを追加する

ソリューションが無事に開けたら、新しく作成したコンポーネントのプロジェクトを追加します。ソリューションエクスプローラーで「IvfCXE2011」を選んで右ボタンクリックで表示されるメニューから[追加]-[既存のプロジェクト]の順で選択します。
 ここで前回までに作成したコンポーネントのプロジェクトを指定します。
これで新しいコンポーネントとTRNDll.DLLをまとめてビルド出来るようになりました。

3. プロジェクトの設定を変更する

プロジェクトに追加されたら、右ボタンクリックで表示されるメニューから[スタートアッププロジェクトに設定]を選択します。
さらに右ボタンクリックで表示されるメニューから[プロパティ]を選んで、デバッグの設定を行います。
下の図のように実行用の指定を行います。
「コマンド」の項目にはTRNSYSを実行するためのTRNexe.exeを指定します。
「コマンド引数」の項目は、新しいコンポーネントを実行するためのDckファイルを指定します。ここでは「(5) Simulation Studioで実行」で作成したプロジェクトの*.dckファイルを指定します。

4. デバッグモードで実行する

[ビルド]-[構成マネージャー]を選んで、表示されるダイアログで「アクティブソリューション構成」の項目を[Debug]にしてビルドします。

デバッグの状態を確認するため、出力値を設定している行にブレークポイントを設定します。
で、実行してみます。ここでいきなり警告メッセージが表示されます。これはTRNEXE.exeがデバッグモードでビルドされていないのが原因です。ここは警告を無視して「はい」を選んで続行します。
TRNSYSが起動して、ブレークポイントでプログラムの実行が一時停止したら、変数の内容が適切な値になっているか確認します。以下の図のような内容であればOKです。

これで何か問題があってもデバッグモードで処理内容を確認することができます。

2012/08/14

TRNSYSコンポーネントのType No. を確認する

Simulation Studioで配置されたコンポーネントのType No.を確認する簡単な方法です。

まずは通常のSimulation Studioの表示。
ここでキーボードの[F2]キーを押しっぱなしにすると、表示が切り替わります。
コンポーネントのキャプションがUnit No. Type No.の表示に切り替わります。
例題などで、使っているコンポーネントのType No.を確認したい時など、簡単に調べることができます。

2012/08/09

作ってみようTRNSYSコンポーネント(5) Simulation Studioで実行

前回まででコンポーネントのビルドが済みました。これでももう計算に使える状態です。

Simulation Studioを起動して動作を確認します。

1. プロジェクトの準備


1.1 コンポーネントの配置
新しいプロジェクトを用意して、画面右側のツリーから作成したコンポーネント、Type201を配置します。(ちなみにこの右側のツリーですが、正式にはDirect Access Toolbarという名前が付いています)
もし、ツリーにType201が表示されていなければメニューから[Direct Access]-[Refresh tree]を選んで、表示を更新して下さい。

1.2 Equationを追加する

コンポーネント単体では動作確認できませんから、Inputs側のデータを作るためのEquationを用意します。
メニューから[Assembly]-[Insert new equation]を選んで、新しいEquationを作成して、以下の2つの変数を追加します。

変数             設定
-------   ------------
First            time
Second        time*2

1.3 Online Plotter

出力の確認用に、ツリーからOnline Plotterを配置しておきます。

2. コンポーネントの接続

以下の画面のように接続します。

Equa->Type201
Type201->Type65c
Equa->Type65c

3. 実行

実行して以下のようなグラフが表示されたらOKです。

まとめ

シンプルなコンポーネントを作成しましたが、複雑な処理でも基本的には同じ方法で作り込めます。コンポーネントが作れると、独自の複雑な計算や、条件判定を含んだ処理を組み込むことができるようになります。TRNSYSの計算の幅がグ、グ、グッと広がりますので、ぜひお試しください。



関連記事

--------
(1) 準備編
(2) プロフォルマ
(3) ソースコードの生成
(4) ソースコードの編集
(5) Simulation Studioで実行
(6) デバッグしてみる

補足 FORTRANの環境設定

2012/08/08

作ってみようTRNSYSコンポーネント(4) ソースコードの編集

前回まででソースコードのスケルトン(雛形)の書き出しとコンパイラの設定が終わったので、今回はソースコードを書き換えて計算式を記述していきます。

はじめる前にちょっとプロフォルマで設定した内容のおさらいです。プロフォルマでは以下の様な設定を行なっていました。

Parameters
   Mult (デフォルト:1)
Inputs:
   Inp1
   Inp2
Outputs:
   Out1
この設定を頭に入れてソースコードを見て行きます。

1. ソースコードの確認

まず、ソリューションエクスプローラーからType201.forをダブルクリックしてソースコードを表示します。

ソースコードを上から順に見ていくと60行目付近に変数の宣言箇所があります。(Ctrl+Gで直接指定行にジャンプできます。これ使うと探しやすいです)
プロフォルマの設定と見比べると分かりやすいですが、Parameters, Inputsの項目として登録したものが宣言されているのがわかります。

さらに下の方を見ていくと、150行目付近にPrameterとInputsに値を設定している箇所があります。この分でSimulation Studioで設定した値や他のコンポーネントから受け取った値(Inputsの値)を変数でに設定しています。

でもって、最後は200行目付近にOutputを処理している箇所があります。ここで、コンポーネントの中で計算した結果をOutputsの値して書き出しています。
生成されたばかりのソースコードでは、とりあえず"0"を書きだすように指定されています。

2. 処理の追加

それでは、実際に処理を記述してみましょう。処理内容はInputsの値2つを足してPrameterの値を掛けるシンプルなものです。

Out1 = (Inp1 + Inp2) * Mult


2.1 出力用の変数の追加

まず計算結果を収める変数を用意しておきます。50行目付近に戻って計算結果を収める変数の宣言を追加します。

2.2 計算式の追加

200行目付近に先ほどの式を記述します。つづけてOutputの値の指定を変数に変更します。
以上で、ソースコードの変更は終了です。
コンポーネントの処理内容は、
     Parameters,Inputsの値を受け取る
             ↓
           計算する
             ↓
            出力する
の流れの繰り返しです。簡単ですよね?
いろいろ複雑なことをやり始めると大変になってきますが、コンポーネントは基本的にはこのようにシンプルな仕組みで動いています。

3. ビルドする

ソースコードの変更が終わったらビルドします。
この時、メニューから[ビルド]-[構成マネージャー]を選択して、「アクテイブソリューションの構成」で「Release」を選択しておきます。(DebugモードだとTRNSYSが認識てくれないので必ずReleseでビルドしてください)

[ビルド]-[ソリューションのビルド]を選択してビルドします。エラーにならずビルドができたらコンポーネントの完成です。

次回は、実際にこのコンポーネントの動作確認をしてみます。

つづく。



関連記事

--------
(1) 準備編
(2) プロフォルマ
(3) ソースコードの生成
(4) ソースコードの編集
(5) Simulation Studioで実行
(6) デバッグしてみる

補足 FORTRANの環境設定





2012/08/07

作ってみようTRNSYSコンポーネント(3) ソースコードの生成

さて、前回までにプロフォルマまで出来上がったので、今回はソースコードの書き出しです。

Simulation Stuidoにはプロフォルマで設定された内容から、ソースコードを書きだしてくれる便利なコマンドがあります。これを使ってソースコードのスケルトン(雛形)の書き出しを行います。
また、書きだされたソースコードをビルド(コンパイル、リンク)するためのプロジェクト設定もあわせて行います。


1. ソースコードの生成

メニューから[File]-[Export as]-[Fortran]の順で選択します。
保存先は、基本的にどこでもOKですが、個人的にはコンパイラ関係の例が収められている"C:\Trnsys17\Compilers\"フォルダがオススメです。このフォルダに分かりやすいように"My Components"というフォルダを作って保存します。

保存先: C:\Trnsys17\Compilers\My Components
ファイル名:Type201.for

ファイルが保存されるとメッセージが表示されます。保存先などの情報を確認したら「OK」をクリックします。
  つづけて以下のメッセージが表示されます。これはSimulation Stuidoが書き出すプロジェクトファイル形式が、以前のバージョンの形式に対応のため更新を促すメッセージです。
ここは素直に「はい」をクリックして次へ進みます。
変換が終わるとVisual Fortran Composer XE 2011が起動します。(見た目はというか、Visual Studioと同じShellを使っているので、画面はまったく同じになります)

2. プロジェクトの設定

プロジェクトの変換作業を行います。Simulation Stuidoが書き出したFORTRANのソースコードはCompaq Visual Fortran(以下CVF)形式になっています。
今回使用するIntel Visual Fortran Composer XE 2011に合わせて変換する必要があります。

ソリューションエクスプローラーでプロジェクト(Type201lib)を選んで、右クリックで表示されるメニューから「COMPAQ Visual Fortran プロジェクト項目の抽出」を選択します。
ここで変換対象のファイルを聞いてきます。先ほどエクスポートしたプロジェクトファイル「Type201.dsp」を選択して「OK」ボタンをクリックします。
つづけてコンパイラ関係の設定です。
メニューから[プロジェクト]-[プロパティ]で選択されるダイアログで「構成」で「すべての構成」を選択してFORTRANコンパイラの設定を行います。赤枠内の項目を設定します。

データ

2017/06/27追記 

Intel Parallel Studio XE2017ではデータの項目が以下のように変更されている

image

浮動小数点
外部プロシージャ

2013/2/8追記
3.2.3 Debug/Release設定


Debug/Releseモードでは参照するインクルードファイル、Objファイルの参照先が変わります。
以下、Debugモードを例に説明しています。Releaseモードでも再度、同様の設定を行なって下さい。


インクルードファイル


Fortranの「追加のインクルード・ディレクトリ」のパスを開発環境に合わせて書き換えます。以下はDebugモードの例です。Releaseモードでは対応するフォルダに読み替えて下さい。
Intel Fortran
C:\Trnsys17\Compilers\IvfCXE2011\TRNDll\Debug
Compaq Visual Fortran
C:\Trnsys17\Compilers\Cvf66\TRNDll\Debug





リンカー



リンカーの「追加のインクルード・ディレクトリ」のパスを開発環境に合わせて書き換えます。以下はDebugモードの例です。Releaseモードでは対応するフォルダに読み替えて下さい。
Intel Fortran
C:\Trnsys17\Compilers\IvfCXE2011\TRNDll\Debug
Compaq Visual Fortran
C:\Trnsys17\Compilers\Cvf66\TRNDll\Debug






以上でコンパイラの準備は完了です。

3. ビルド

とりあえずビルドできるか試してみます。
メニューから[ビルド]-[ソリューションのビルド]を選択してビルドします。ここでソリューションの保存先を聞いてくるので、コンポーネントと同じフォルダを指定します。
ビルドがエラーなく終わったらひとまず終了です。

次回はソースコードの編集です。

つづく。



関連記事

--------
(1) 準備編
(2) プロフォルマ
(3) ソースコードの生成
(4) ソースコードの編集
(5) Simulation Studioで実行
(6) デバッグしてみる

補足 FORTRANの環境設定

2012/08/06

TRNSYSの計算を速くする

TRNSYS-usersを読んでいたら、Online Plotterの設定を変更して計算を速くする話が載っていました。
[TRNSYS-users] Speeding up runs
これ、グラフの描画をしない分だけ速くなるのは理屈としては分かるんですが、はて、どれぐらい速くなるのか半信半疑だったので試してみました。

TRNSYSのExamplesに含まれる3D_Buildingというモデルを使ってグラフのOn/Offでどれぐらい計算時間が変わるか比べてみました。
このモデル、計算自体はシンプルなんですが、グラフを3個使用しています。つまり、グラフの描画の負荷が多そうです。

早速何もせずに実行してみると、グラフをどかどかと描きながら計算が進みます。
計算時間は約22秒。

今度はグラフの表示をOffにしてみます。Type65の9番目のParameterを"-1"に設定します。
で、実行してみると。
なんと約17秒で終了です。5秒ほど短縮です。結構効果ありますね。

これ計算を何回も回したい時には便利そうな設定です。必要な時だけグラフを表示して、必要ないときは表示をOffにするのが良さそうです。

しかし、グラフが3個もあるとOn/Off切り替えるの面倒くさいですよね?
幸いグラフのOn/Offは数字で設定するので、こういう時はEquationを使って楽しましょう。

はじめにEquationを用意して変数を追加します。この例ではPlotOnという変数を用意して-1に設定しています。
で、次はType65のパラメータに、この変数を設定します。
9番目のパラメータのUnitでstringを選択します。次にValueの項目には先ほどEquationで定義したPlotOnを入力します。←ここ順番が逆だと設定できないので注意してください。

全部のグラフが設定できたら、これでOn/Offの設定終了です。PlotOnには-1が設定されていますから、これで実行すればグラフはOffの状態で計算されます。
表示したい場合はEquationの設定でPlotOn=0とすればグラフが表示されるようになります。

3個のグラフが一気に設定変更できて楽ですねー。

以上です。