OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
stherm.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine stherm (mat_param, vol, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, dt1, tempnc, tempel, heat, fphi, offg, off, partsav, iparts, vol0, nel, numnod, theaccfact)

Function/Subroutine Documentation

◆ stherm()

subroutine stherm ( type (matparam_struct_), intent(in) mat_param,
vol,
integer, dimension(mvsiz) nc1,
integer, dimension(mvsiz) nc2,
integer, dimension(mvsiz) nc3,
integer, dimension(mvsiz) nc4,
integer, dimension(mvsiz) nc5,
integer, dimension(mvsiz) nc6,
integer, dimension(mvsiz) nc7,
integer, dimension(mvsiz) nc8,
px1,
px2,
px3,
px4,
py1,
py2,
py3,
py4,
pz1,
pz2,
pz3,
pz4,
dt1,
tempnc,
tempel,
dimension(mvsiz), intent(in) heat,
fphi,
offg,
off,
partsav,
integer, dimension(*) iparts,
vol0,
integer, intent(in) nel,
integer, intent(in) numnod,
intent(in) theaccfact )

Definition at line 31 of file stherm.F.

40!-----------------------------------------------
41! m o d u l e s
42!-----------------------------------------------
43 use matparam_def_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C G l o b a l P a r a m e t e r s
50C-----------------------------------------------
51#include "mvsiz_p.inc"
52#include "param_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: NUMNOD
58 INTEGER NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),NC4(MVSIZ),
59 . NC5(MVSIZ),NC6(MVSIZ),NC7(MVSIZ),NC8(MVSIZ)
60 INTEGER IPARTS(*)
61 my_real :: dt1
62 my_real ,INTENT(IN) :: theaccfact
63 my_real ,INTENT(IN) :: heat(mvsiz)
64 my_real :: tempnc(numnod)
65 my_real :: tempel(nel)
66 my_real :: off(nel)
67 my_real :: offg(nel)
68 my_real :: vol(nel)
69 my_real :: vol0(nel)
70 my_real :: px1(*), px2(*), px3(*), px4(*),
71 . py1(*), py2(*), py3(*), py4(*),
72 . pz1(*), pz2(*), pz3(*), pz4(*)
73 my_real :: fphi(mvsiz,8)
74 my_real :: partsav(npsav,*)
75 type (matparam_struct_) ,intent(in) :: mat_param
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER I,M
80 my_real as, bs, kc, phix, phiy, phiz, a, b, rhocp, t0
81!==============================================================================
82 as = mat_param%THERM%AS !< thermal conductivity coefficient A for solid phase
83 bs = mat_param%THERM%BS !< thermal conductivity coefficient B for solid phase
84 rhocp = mat_param%THERM%RHOCP
85 t0 = mat_param%THERM%TINI
86C
87C calculate thermal flux
88C
89 DO i=1,nel
90 IF(off(i)==zero.OR.offg(i)<=zero) cycle
91 phix = tempnc(nc1(i))*px1(i) + tempnc(nc2(i))*px2(i) +
92 . tempnc(nc3(i))*px3(i) + tempnc(nc4(i))*px4(i) -
93 . tempnc(nc5(i))*px3(i) - tempnc(nc6(i))*px4(i) -
94 . tempnc(nc7(i))*px1(i) - tempnc(nc8(i))*px2(i)
95
96 phiy = tempnc(nc1(i))*py1(i) + tempnc(nc2(i))*py2(i) +
97 . tempnc(nc3(i))*py3(i) + tempnc(nc4(i))*py4(i) -
98 . tempnc(nc5(i))*py3(i) - tempnc(nc6(i))*py4(i) -
99 . tempnc(nc7(i))*py1(i) - tempnc(nc8(i))*py2(i)
100
101 phiz = tempnc(nc1(i))*pz1(i) + tempnc(nc2(i))*pz2(i) +
102 . tempnc(nc3(i))*pz3(i) + tempnc(nc4(i))*pz4(i) -
103 . tempnc(nc5(i))*pz3(i) - tempnc(nc6(i))*pz4(i) -
104 . tempnc(nc7(i))*pz1(i) - tempnc(nc8(i))*pz2(i)
105C
106 kc = (as + bs*tempel(i))*vol(i)*dt1*theaccfact
107 phix = kc*phix
108 phiy = kc*phiy
109 phiz = kc*phiz
110C
111C ! nodal thermal force
112C
113 a = one_over_8 * heat(i)
114 b = phix*px1(i) + phiy*py1(i) + pz1(i)*phiz
115 fphi(i,1) = a - b
116 fphi(i,7) = a + b
117 b = phix*px2(i) + phiy*py2(i) + pz2(i)*phiz
118 fphi(i,2) = a - b
119 fphi(i,8) = a + b
120 b = phix*px3(i) + phiy*py3(i) + pz3(i)*phiz
121 fphi(i,3) = a - b
122 fphi(i,5) = a + b
123 b = phix*px4(i) + phiy*py4(i) + pz4(i)*phiz
124 fphi(i,4) = a - b
125 fphi(i,6) = a + b
126 ENDDO
127C
128 DO i=1,nel
129 IF (off(i)==zero.OR.offg(i)<=zero) cycle
130 m = iparts(i)
131 partsav(28,m) = partsav(28,m) + rhocp*vol0(i)*(tempel(i)-t0) + heat(i)
132 ENDDO
133!-----------
134 RETURN
#define my_real
Definition cppsort.cpp:32