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
────────────────────────
Parents
  • 残念ながら何をやりたいのかのイメージはわかりません。
    何をどう評価するためのユーザー定義変数でしょうか?
    それはどのような意味を持ち、どのような目的で見ようとしているのでしょうか?
    などの説明があれば何かコメント、アドバイスができるかもしれません。
     
    ちなみに過去の値を保存して再利用したい場合は、要素分データを保存しないといけないので配列にする必要があります。FORTRANの文法の話になりますので調べて自身で方法を習得してください。
Reply
  • 残念ながら何をやりたいのかのイメージはわかりません。
    何をどう評価するためのユーザー定義変数でしょうか?
    それはどのような意味を持ち、どのような目的で見ようとしているのでしょうか?
    などの説明があれば何かコメント、アドバイスができるかもしれません。
     
    ちなみに過去の値を保存して再利用したい場合は、要素分データを保存しないといけないので配列にする必要があります。FORTRANの文法の話になりますので調べて自身で方法を習得してください。
Children
No Data