OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
stherm.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| stherm ../engine/source/elements/solid/solide/stherm.F
25!||--- called by ------------------------------------------------------
26!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
27!|| szforc3 ../engine/source/elements/solid/solidez/szforc3.F
28!||--- uses -----------------------------------------------------
29!|| matparam_def_mod ../common_source/modules/mat_elem/matparam_def_mod.F90
30!||====================================================================
31 SUBROUTINE stherm(MAT_PARAM,
32 1 VOL, NC1, NC2, NC3, NC4,
33 2 NC5, NC6, NC7, NC8, PX1,
34 3 PX2, PX3, PX4, PY1,
35 4 PY2, PY3, PY4, PZ1,
36 5 PZ2, PZ3, PZ4, DT1,
37 6 TEMPNC, TEMPEL, HEAT, FPHI,
38 7 OFFG, OFF, PARTSAV, IPARTS,
39 8 VOL0, NEL, NUMNOD ,THEACCFACT)
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
135 END
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)
Definition stherm.F:40