[S0067] メッシュチャネル条件を作成し、熱伝達境界を設定する

メッシュチャネル条件は、モデル形状を変更せずにメッシュ生成時、指定した断面形状と配置のチャネルを設定できます。円形または矩形断面のチャネルを断面の大きさとピッチ直径、管の本数などを指定し、中心軸を指定して円状に配置できます。また、作成したメッシュチャネルは熱伝達境界条件の設定対象として参照できます。
このスクリプトでは、円形および矩形の軸方向メッシュチャネル条件を作成し、それぞれを既存の熱伝達境界条件および熱伝達境界(層状)条件の対象に設定します。

前提条件

  • スタディが1つ以上作成されていること
    このスクリプト例では、プロジェクトツリー上でアクティブな熱解析スタディに対して実行している
  • 熱伝達境界条件は熱解析、熱応力解析スタディで使用可能
  • 熱伝達境界条件および熱伝達境界(層状)条件が作成済みであり、それぞれの条件タイトルが既知であること
  • 設定値の単位は、作成されているモデルに設定されている単位系に従う
  • メッシュチャネル条件はJMAG-Designer v25.1以降で使用可能

スクリプトにおける設定内容

  • 軸方向タイプの円形メッシュチャネル条件を作成し、管形状、配置及び基準軸を設定する
    メッシュチャネルは基準軸を指定し、指定された本数を円状に配置する
  • 軸方向タイプの矩形メッシュチャネル条件を作成し、管形状、配置及び基準軸を設定する
  • 熱伝達境界条件の設定対象をメッシュ領域とし、作成した円形メッシュチャネルを指定する
  • 熱伝達境界(層状)条件の設定対象をメッシュ領域とし、作成した矩形メッシュチャネルを指定する
# Copyright (c) 2026 JSOL CORPORATION
#
# 本スクリプトはMITライセンスのもとで公開しています。
# ライセンス全文は以下を参照してください。
# https://www.jmag-international.com/jp/scriptlibrary/jmag_script_library_mit/

app = designer.GetApplication()

# 条件名
CircularChannelName = u"circle"
RectangularChannelName = u"rectangle"
HeatTransferConditionName = u"left"
HeatTransferLayeredConditionName = u"right"

# 円形チャネルの設定
CircularDiameter = 8
CircularNumberOfChannel = 2
CircularChannelLengthUpper = 80
CircularChannelLengthLower = 0
CircularReferenceAxisAngle = 45
CircularPitchDiameter = 40
CircularOriginX = -100
CircularOriginY = 50
CircularOriginZ = 0
CircularAxisX = 0
CircularAxisY = 0
CircularAxisZ = 1
CircularReferenceDirectionX = 1
CircularReferenceDirectionY = 0
CircularReferenceDirectionZ = 0

# 矩形チャネルの設定
RectangularChannelWidth = 20
RectangularChannelHeight = 20
RectangularNumberOfChannel = 2
RectangularChannelLengthUpper = 80
RectangularChannelLengthLower = 0
RectangularReferenceAxisAngle = 0
RectangularPitchDiameter = 50
RectangularOriginX = 60
RectangularOriginY = 50
RectangularOriginZ = 40
RectangularAxisX = 1
RectangularAxisY = 0
RectangularAxisZ = 0
RectangularReferenceDirectionX = 0
RectangularReferenceDirectionY = 1
RectangularReferenceDirectionZ = 0


def createCircularMeshChannel(meshControl):
    """円形断面の軸方向メッシュチャネルを作成する。"""
    channel = meshControl.CreateCondition(u"MeshChannel", CircularChannelName)
    channel.SetValue(u"ChannelType", u"AxialDirection")
    channel.SetValue(u"ChannelShape", u"CircularChannel")
    channel.SetValue(u"CircularDiameter", CircularDiameter)
    channel.SetValue(u"NumberOfChannel", CircularNumberOfChannel)
    channel.SetValue(u"ChannelLengthUpper", CircularChannelLengthUpper)
    channel.SetValue(u"ChannelLengthLower", CircularChannelLengthLower)
    channel.SetValue(u"ReferenceAxisAngle", CircularReferenceAxisAngle)
    channel.SetValue(u"PitchDiameter", CircularPitchDiameter)

    origin = app.CreatePoint(CircularOriginX, CircularOriginY, CircularOriginZ)
    axis = app.CreatePoint(CircularAxisX, CircularAxisY, CircularAxisZ)
    referenceDirection = app.CreatePoint(
        CircularReferenceDirectionX,
        CircularReferenceDirectionY,
        CircularReferenceDirectionZ
    )
    channel.SetPoint(u"Origin", origin)
    channel.SetPoint(u"Axis", axis)
    channel.SetPoint(u"ReferenceDirection", referenceDirection)

    return channel


def createRectangularMeshChannel(meshControl):
    """矩形断面の軸方向メッシュチャネルを作成する。"""
    channel = meshControl.CreateCondition(u"MeshChannel", RectangularChannelName)
    channel.SetValue(u"ChannelType", u"AxialDirection")
    channel.SetValue(u"ChannelShape", u"RectangularChannel")
    channel.SetValue(u"RectangularChannelWidth", RectangularChannelWidth)
    channel.SetValue(u"RectangularChannelHeight", RectangularChannelHeight)
    channel.SetValue(u"NumberOfChannel", RectangularNumberOfChannel)
    channel.SetValue(u"ChannelLengthUpper", RectangularChannelLengthUpper)
    channel.SetValue(u"ChannelLengthLower", RectangularChannelLengthLower)
    channel.SetValue(u"ReferenceAxisAngle", RectangularReferenceAxisAngle)
    channel.SetValue(u"PitchDiameter", RectangularPitchDiameter)

    origin = app.CreatePoint(RectangularOriginX, RectangularOriginY, RectangularOriginZ)
    axis = app.CreatePoint(RectangularAxisX, RectangularAxisY, RectangularAxisZ)
    referenceDirection = app.CreatePoint(
        RectangularReferenceDirectionX,
        RectangularReferenceDirectionY,
        RectangularReferenceDirectionZ
    )
    channel.SetPoint(u"Origin", origin)
    channel.SetPoint(u"Axis", axis)
    channel.SetPoint(u"ReferenceDirection", referenceDirection)

    return channel


def setMeshChannelToHeatTransferCondition(condition, meshChannel):
    """熱伝達境界条件の設定対象にメッシュチャネルを指定する。"""
    condition.SetValue(u"TargetType", u"Mesh")
    condition.SetLinkWithType(u"LinkedMeshChannel", meshChannel.GetName())


def main():
    """メッシュチャネルを作成し、熱伝達境界条件の設定対象に指定する。"""
    study = app.GetCurrentStudy()
    meshControl = study.GetMeshControl()

    circularChannel = createCircularMeshChannel(meshControl)
    rectangularChannel = createRectangularMeshChannel(meshControl)

    heatTransferCondition = study.GetCondition(HeatTransferConditionName)
    setMeshChannelToHeatTransferCondition(heatTransferCondition, circularChannel)
    heatTransferLayeredCondition = study.GetCondition(HeatTransferLayeredConditionName)
    setMeshChannelToHeatTransferCondition(
        heatTransferLayeredCondition,
        rectangularChannel
    )


main()

Download Python source code

ファイルご利用の注意点
JMAGスクリプトライブラリをご利用されるに際し、以下をよくお読みいただき、ご同意の上ご利用くださるようお願い申し上げます。
絞込み検索
  • カテゴリー 一覧

JMAG-Express Online
An engineer's diary