We have an exciting announcement about badges coming in May 2025. Until then, we will temporarily stop issuing new badges for course completions and certifications. However, all completions will be recorded and fulfilled after May 2025.
流体全般

流体全般

POLYFLOWのUDFサンプル(1)

    • FAQFAQ
      Participant

      ・POLYFLOW UDFサンプル(1) XY平面上に、原点を中心とした径方向温度分布をつけるUDF 式は T(半径) =(500-半径^2)で設定 (半径はX座標値とY座標値から算出する。) POLYDATAの設定(Thermal boundary conditionから) 1.UDFで温度分布を設定する境界面を選択しModifyをクリック 2.Temperature imposedをクリック 3.User Defined Functionをクリック 4.Modify function name をクリックし、関数名を入力 5.New valueに”XYZ”と入力しOKをクリック 6.Modify nd. of fields=0をクリックし、UDFで扱うパラメータ数を入力。 7.今回はX座標とY座標の2つを使用するので、New valueに”2″を入力してOkをクリック   Upper level menu の下に、以下の行が追加されます。 Change field X1 = X-Coordnate Change field X2 = X-Coordnate   今回のUDFは、X座標とY座標を使用して計算するUDFなので、   Change field X1は、設定変更なし 8.Change field X2 = X-Coordnateをクリック 9.Y-Coordnateを選択し、Upper level menuをクリック Modify function name = XYZ Modify nd. of fields = 2 Upper level menu Change field X1 = X-Coordnate Change field X2 = Y-Coordnate 10.上記のようになっていればPOLYDATA内のUDF設定は終了。 UDFの書き方 POLYFLOWのUDFの言語はCLIPSです。 UDFの作成の大まかな流れは”deffunction”でPOLYDATAとの関連ずけを行い、 その中の”bind”で計算をして、?○○でPOLYDATAで設定したUDFに戻すといった設定になります。 今回のUDFは、以下のように記述します (deffunction XYZ (?X1 ?Y1) (bind ?RR ( sqrt (+ (* ?X1 ?X1)(* ?Y1 ?Y1)))) (bind ?TT (- 500 (* ?RR ?RR))) ?TT) 1行目 (deffunction XYZ (?X1 ?Y1) deffunction の後ろの”XYZ”は、POLYDATAの設定の”5.”で入力した関数名と同じものを設定します。 XYZの後ろの(?X1 ?Y1)は、POLYDATAの設定の”7.~8.”で設定したパラメータが入ります。 ?X1 = X-Coordnate ?Y1 = Y-Coordnate 2行目 (bind ?RR ( sqrt (+ (* ?X1 ?X1)(* ?Y1 ?Y1)))) 1行目の?X1と?Y1から半径を計算しています。計算した結果は、”bind”で設定した”?RR”になります。 CLIPSの計算方法 1+1(+ 1 1) 1-1(- 1 1) 1*1(* 1 1) 1/1(/ 1 1) sqrt 1     (sqrt 1) 3行目 (bind ?TT (- 500 (* ?RR ?RR))) (500-半径^2)の計算を行い、計算した結果は、”bind”で設定した”?TT”になります。 4行目 ?TT) ?TTをPOLYDATAで設定した境界に返しています。 作成したUDFは、qaコマンドで確認することができます。 詳細は 2057431 のFAQをご覧ください。