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
  • 大変お世話になっております。
    FLDファイルから値を読み込むことは難しかったため、datファイルに値を出力し、その​ファイルから値を読み込むことを考えています。
    ユーザー定義変数作成の初期段階として、以下を試みました。
    ────────────────​
    内容:10サイクル目で変数の初期値を入力し、その初期値をdatファイルに入力
    結果:Unknown error is detected by mpiexec Exitcode of mpiexec = 10
    ────────────────​
    ​上記のようなエラーが出てしまいました。リファレンスを見たのですが、エラー内容が分かりませんでした。このエラーの意味は何になりますでしょうか?
    また、以下が​試みたプログラム内容になります。
    バイナリでない場合も同じ結果となりました。​
    ※可視化したい変数は「Tsk」​
    ────────────────
       Double precision::Tsk(IM,JM,KM)
       Character::filename_Tsk*20
    C === USER SET AREA (STATEMENT START) ===
        IF (NCUCY==10) Then
        write(filename_Tsk,*)NCUCY
        filename_Tsk="Tsk"//trim(adjustl(filename_Tsk))//".dat"
        open(11000,file=filename_Tsk,form="unformatted",status="new")
        DO 100 K=1,KM
        DO 100 J=1,JM
        DO 100 I=1,IM
        Tsk(I,J,K)=33.7d0​
        write(11000)Tsk(I,J,K)
        
    !出力----------------------------------------------------------------------------------------
        CALL RPUTVA(I,J,K,IUS00+1,Tsk(I,J,K))
    100  CONTINUE
        
        close(11000)
        
        End If 
    C === USER SET AREA (STATEMENT END ) ===​
    ​────────────────
    ご多用の折、大変恐縮ではございますが、誤り等をご教示いただけますと幸いです。
    何卒よろしくお願い申し上げます。​
Reply
  • 大変お世話になっております。
    FLDファイルから値を読み込むことは難しかったため、datファイルに値を出力し、その​ファイルから値を読み込むことを考えています。
    ユーザー定義変数作成の初期段階として、以下を試みました。
    ────────────────​
    内容:10サイクル目で変数の初期値を入力し、その初期値をdatファイルに入力
    結果:Unknown error is detected by mpiexec Exitcode of mpiexec = 10
    ────────────────​
    ​上記のようなエラーが出てしまいました。リファレンスを見たのですが、エラー内容が分かりませんでした。このエラーの意味は何になりますでしょうか?
    また、以下が​試みたプログラム内容になります。
    バイナリでない場合も同じ結果となりました。​
    ※可視化したい変数は「Tsk」​
    ────────────────
       Double precision::Tsk(IM,JM,KM)
       Character::filename_Tsk*20
    C === USER SET AREA (STATEMENT START) ===
        IF (NCUCY==10) Then
        write(filename_Tsk,*)NCUCY
        filename_Tsk="Tsk"//trim(adjustl(filename_Tsk))//".dat"
        open(11000,file=filename_Tsk,form="unformatted",status="new")
        DO 100 K=1,KM
        DO 100 J=1,JM
        DO 100 I=1,IM
        Tsk(I,J,K)=33.7d0​
        write(11000)Tsk(I,J,K)
        
    !出力----------------------------------------------------------------------------------------
        CALL RPUTVA(I,J,K,IUS00+1,Tsk(I,J,K))
    100  CONTINUE
        
        close(11000)
        
        End If 
    C === USER SET AREA (STATEMENT END ) ===​
    ​────────────────
    ご多用の折、大変恐縮ではございますが、誤り等をご教示いただけますと幸いです。
    何卒よろしくお願い申し上げます。​
Children
No Data