CalculiX で使用できない熱的挙動についてはサブルーチン「umatht.f」でコードを追加することができます。これは浅水理論などの熱方程式モデルによる任意の挙動についても言えます。例えば潤滑における油膜の厚みは伝導係数と同等なもののひとつです。 熱材料ユーザーサブルーチンでの油膜厚みの機械的挙動の効果と組み合わせることで機械挙動を油領域と連成することが可能です。umatthr ルーチンのヘッダーと入出力変数は以下の通りです。
subroutine umatht(u,dudt,dudg,flux,dfdt,dfdg,
& statev,temp,dtemp,dtemdx,time,dtime,predef,dpred,
& cmname,ntgrd,nstatv,props,nprops,coords,pnewdt,
& noel,npt,layer,kspt,kstep,kinc,vold,co,lakonl,konl,
& ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,mi)
!
! 熱伝達材料サブルーチン
!
! 入力:
!
! statev(nstatv) インクリメント開始時の内部変数
! temp インクリメント開始時の温度
! dtemp 温度増分
! dtemdx(ntgrd) 温度の空間勾配の現在の値
! time(1) インクリメント開始時のステップ時間
! time(2) インクリメント開始時の総時間
! dtime 時間インクリメント
! predef 不使用
! dpred 不使用
! cmname 材料名
! ntgrd 温度の空間勾配の数
! nstatv *DEPVAR カードで定義された内部状態変数の数
! props(nprops) キーワードカード *USER MATERIAL,TYPE=THERMAL で定義されたユーザー定義定数
! nprops *USER MATERIAL,TYPE=THERMAL カードで指定されたユーザー定義定数の数
! coords 積分点でのグローバル座標
! pnewd 不使用
! noel 要素番号
! npt 積分点番号
! layer 不使用
! kspt 不使用
! kstep 不使用
! kinc 不使用
! vold(0..4,1..nk) 全節点で解かれる場
! 0: 温度
! 1: グローバル X 方向の変位
! 2: グローバル Y 方向の変位
! 3: グローバル Z 方向の変位
! 4: 静圧
! co(3,1..nk) 全節点の座標
! 1: グローバル X 方向の座標
! 2: グローバル Y 方向の座標
! 3: グローバル Z 方向の座標
! lakonl 要素ラベル
! konl(1..20) 要素に属する節点
! ipompc(1..nmpc) ipompc(i) は場 nodempc の MPC i の最初の項を指す
! nodempc(1,*) MPC の項の節点番号
! nodempc(2,*) MPC の項の座標方向
! nodempc(3,*) 0以外の場合:場 nodempc の MPC の次の項を指す
! 0の場合:MPC 定義終了
! coefmpc(*) MPC の項の係数
! nmpc MPC の数
! ikmpc(1..nmpc) 順序付けられたMPCのグローバルな自由度
! グローバルな自由度は MPC の依存項の 8*(node-1)+direction(direction = 0:温度, 1-3:変位, 4:静圧, 5-7:回転)
! ilmpc(1..nmpc) ilmpc(i) は ikmpc(i) での参照番号に対応する MPC 番号
! mi(1) 要素あたりの積分点の最大数(全要素にわたる最大値)
! mi(2) 場での節点あたりの最大自由度(全節点にわたる最大値)。例 v(0:mi(2))。
!
! 出力:
!
! u 不使用
! dudt 不使用
! dudg(ntgrd) 不使用
! flux(ntgrd) インクリメント終了時の熱フラックス
! dfdt(ntgrd) 不使用
! dfdg(ntgrd,ntgrd) 熱フラックスの空間温度勾配に対する変動
! statev(nstatv) インクリメント終了時の内部状態変数
!