hexagon logo

ユーザー定義変数を作成し、非定常解析を行い、その変数のPOSTでの可視化を試みています。 ユーザー定義変数を作成・可視化するにあたり、前のサイクルの値や算出したFLDファイルから値を読み込み、利用したいと考えています。 (ただし1サイクル目に関しては初期値を与える予定) 以下にやりたいことの『イメージ』を記載しましたので参照していただけますと幸いです。 上記や『イメージ』のようなことは可能でしょうか。 また、可能である場合、どのような変数やコマンド等を用いれば良いのでしょうか。

『イメージ』
────────────────────────
SUBROUTINE USRVAR(IUSNO,UNAME,ISWGRP,ISWRST)
C ... USER DEFINED VARIABLES ...
C IUSNO : THE NUMBER OF USER DEFINED VARIABLES [0<=IUSNO<=30]
C UNAME : NAME OF USER DEFINED VARIABLES
C ISWGRP : 0 = NOT OUTPUT USER DEFINED VARIABLES TO GRAPHIC FILES
C 1 = OUTPUT USER DEFINED VARIABLES TO GRAPHIC FILES
C ISWRST : 0 = NOT OUTPUT/INPUT USER DEFINED VARIABLES TO/FROM
C RESTART FILE
C 1 = OUTPUT/INPUT USER DEFINED VARIABLES TO/FROM
C RESTART FILE
USE GLOBAL_DATA
IMPLICIT REAL(KIND_OF_REAL)(A-H,O-Z),INTEGER(KIND_OF_INTEGER)(I-N)
CHARACTER*(MXLB) UNAME(MXUSVAR)
DIMENSION ISWGRP(MXUSVAR), ISWRST(MXUSVAR)
C === USER SET AREA (STATEMENT START) ===
IUSNO =2
UNAME(1) = 'aX' !ユーザー定義変数①
ISWGRP(1) = 1
ISWRST(1) = 0
UNAME(2) = 'bX' !ユーザー定義変数②
ISWGRP(2) = 1
ISWRST(2) = 0
C === USER SET AREA (STATEMENT END ) ===
RETURN
END
SUBROUTINE USRVST(IM,JM,KM,IUSNO,UNAME,ISWGRP,ISWRST)
C ... USER DEFINED VARIABLES ...
C I,J,K : ADRESS
C IM : END OF I
C JM : END OF J
C KM : END OF K
C IUSNO : NUMBER OF USER DEFINED VARIABLES
C UNAME : NAME OF USER DEFINED VARIABLES
C ISWGRP : 0 = NOT OUTPUT USER DEFINED VARIABLES TO GRAPHIC FILES
C 1 = OUTPUT USER DEFINED VARIABLES TO GRAPHIC FILES
C ISWRST : 0 = NOT OUTPUT/INPUT USER DEFINED VARIABLES TO/FROM
C RESTART FILE
C 1 = OUTPUT/INPUT USER DEFINED VARIABLES TO/FROM
C RESTART FILE
C
USE SODB
USE SODC
USE SORE
USE GASX
USE GLOBAL_DATA
IMPLICIT REAL(KIND_OF_REAL)(A-H,O-Z),INTEGER(KIND_OF_INTEGER)(I-N)
CHARACTER*(MXLB) UNAME(MXUSVAR)
DIMENSION ISWGRP(MXUSVAR), ISWRST(MXUSVAR)
C === USER SET AREA (STATEMENT START) ===
DO 100 K=1,KM
DO 100 J=1,JM
DO 100 I=1,IM
If (NCUCY==1) Then
aX=1.0 !ユーザー定義変数①の初期値(1サイクル目の値)
bX=2.0 !ユーザー定義変数②の初期値(1サイクル目の値)
aX_old=aX !次サイクル以降の計算のため、変数「aX」の前のサイクルの値を「aX_old」として設定
bX_old=bX !次サイクル以降の計算のため、変数「bX」の前のサイクルの値を「bX_old」として設定
CALL RPUTVA(I,J,K,IUS00+1,aX)
CALL RPUTVA(I,J,K,IUS00+2,bX)
Else
Ta=RCATCH(I,J,K,ITEMP) !空気温度
Tmr=RCATCH(I,J,K,ISMRT) !平均放射温度
!ここで前のサイクルの値や算出したFLDファイルの空間分布の値を読み込む
!この場合、「aX_old」「bX_old」の値を読み込む
aX=aX_old+Ta
bX=bX_old+Tmr
aX_old=bX !次サイクル以降の計算のため、変数「aX」の前のサイクルの値を「aX_old」として設定
bX_old=aX !次サイクル以降の計算のため、変数「bX」の前のサイクルの値を「bX_old」として設定
CALL RPUTVA(I,J,K,IUS00+1,aX)
CALL RPUTVA(I,J,K,IUS00+2,bX)
End If
100 CONTINUE
C === USER SET AREA (STATEMENT END ) ===
RETURN
END
────────────────────────
  • 残念ながら何をやりたいのかのイメージはわかりません。
    何をどう評価するためのユーザー定義変数でしょうか?
    それはどのような意味を持ち、どのような目的で見ようとしているのでしょうか?
    などの説明があれば何かコメント、アドバイスができるかもしれません。
     
    ちなみに過去の値を保存して再利用したい場合は、要素分データを保存しないといけないので配列にする必要があります。FORTRANの文法の話になりますので調べて自身で方法を習得してください。
  • ご多用の中、ご返信いただきありがとうございます。
    そして説明が足りず申し訳ございません。
    やりたいことの目的やイメージをPDFファイルにし、添付いたしました。
    もし可能でしたら参照していただき、ご返答いただけますと幸いです。
    何卒よろしくお願い申し上げます。
    配列に関しましては勉強してみます。​
  • 肝心のTskinはどのように定義された変数ですか? 
    既存の変数である要素の温度や平均輻射温度から計算するつもりの変数でしょうか?
    定義式を教えてください。
  • 予想平均温冷感申告 predicted mean vote(PMV)ですか?
  • ご返信いただき誠にありがとうございます。
    Tskinは既存の変数である室内空気温度や平均放射温度を用いて算出いたします。
    標準新有効温度(SET*)の皮膚表面温度の算出式を想定いただけたらと思います。
    式は仮定のものですがTskinの算出式のイメージをPDFファイルにし、念のため添付いたしました。ご参照いただけますと幸いです。
    何卒よろしくお願い申し上げます。​
  • 標準新有効温度(SET*)ならポスト内で作成して、空間分布を可視化することができます。リファレンス(ポスト編)で’SETSTAR’を検索してページを確認してください。
    特殊変数として定義して作成できます。
    当然ですが、非定常な変化を確認したい場合は、FLDファイルの出力を多くする必要があります。
     
    ユーザー関数を使うことより​遥かに簡単ですね。確認ください。
  • 私の記載の仕方が悪かったかもしれませんが、算出したいのはSET*でなく、あくまで非定常的(本日添付した2つのPDFファイルのように)に皮膚表面温度が算出したいと思っています。
    SET*のことは忘れていただきたいです。
    どのようにしたら、前のサイクルの皮膚表面温度の値、またはFLDファイルから皮膚表面温度の値を読み込むことが可能でしょうか。
    何度も質問をしてしまい申し訳ございませんが、現在やり方の検討がついておらず困惑しておりますので、ご教示いただけますと幸いです。よろしくお願いいたします。。​
  • 何か代替がないか検討してみましたが、残念ながら無いようですね。​
    現サイクルのTskinが1サイクル前のTskin_old+Δa​になるということが意味として分かっていませんが、さておき1サイクル前のデータを要素毎に保存するということをFOTRANでコーディングするだけの話になります。最初に回答したように文法を学習して実現してください。
     
  • 大変お世話になっております。
    現在、アドバイス通り配列等を学習し、皮膚表面温度の可視化を試みています。
    1点質問なのですが、OPEN文やREAD文等を使用して、『FLDファイルから』要素ごとのユーザー定義変数の値を読み取ることは可能でしょうか。
    試してみたのですが、上記ができなくて困っております。
    ご多用の折、大変恐縮ではございますがご教示いただけますと幸いです。
    よろしくお願いいたします。​
  • 可能です。
    FLDファイルを読み込むプログラムは、FLDファイルの出力形式がないと作れませんが、それはリファレンス(ソルバー編)に公開されています。
    ’FLDファイル出力フォーマット’で検索して確認ください。
    読み込むプログラムの作成にはFORTRANの高いスキルが必要になると思います。