投稿者 スレッド: 【熱応力解析関係】 線形静解析!SOLUTION, TYPE=STATICの場合の初期温度について  (参照数 1521 回)

ghashimoto

  • Okulab
  • Newbie
  • *****
  • 投稿: 17
    • プロフィールを見る
熱伝導解析の後,温度分布を読み込んで,線形熱応力解析を行う場合,初期温度が設定できないバグに気づきました.

初期温度は
!INITIAL CONDITION, TYPE=TEMPERATURE
 NODE_ALL, 300.15
のようにメッシュファイルに記述されます.

線形静解析!SOLUTION, TYPE=STATICのルーチンを通ります.
サブルーチンFSTR_SOLVE_LINEARにおいて,初期温度の設定は
      if( fstrSOLID%TEMP_ngrp_tot>0 .and. hecMESH%hecmw_flag_initcon==1 ) then
        do j=1, hecMESH%n_node
          fstrSOLID%last_temp(j) = hecMESH%node_init_val_item(j)
          fstrSOLID%temperature(j) = hecMESH%node_init_val_item(j)
        end do
      endif
のように行われます.

サブルーチンfstr_setup_TEMPERATUREでは
        if( n > 0 ) then
          if( P%SOLID%TEMP_irres == 0 ) then
            P%SOLID%TEMP_ngrp_tot = new_size
            call node_grp_name_to_id_ex( P%MESH, '!TEMPERATURE', &
                    n, grp_id_name, P%SOLID%TEMP_ngrp_ID(old_size+1:))
          endif
          deallocate( grp_id_name )
        endif
のようになっています.
温度分布を読み込むとfstrSOLID%TEMP_irres>0となりますので,
fstrSOLID%TEMP_ngrp_tot>0となるのは温度分布を読み込まず,
解析制御ファイル内に温度を設定するときです.

そこで,
      if( fstrSOLID%TEMP_ngrp_tot>0 .or. fstrSOLID%TEMP_irres > 0 ) then
       if( hecMESH%hecmw_flag_initcon==1 ) then
        do j=1, hecMESH%n_node
          fstrSOLID%last_temp(j) = hecMESH%node_init_val_item(j)
          fstrSOLID%temperature(j) = hecMESH%node_init_val_item(j)
        end do
       endif
      endif
とすると良いように思います.
« 最終編集: 10月 17, 2015, 11:15:40 午後 by ghashimoto »