13 real(kind=kreal) :: coef(3)
14 integer(kind=kint) :: i, in, imat, itab, ntab
15 real(kind=kreal) :: tpoi, temp(ntab), funca(ntab+1), funcb(ntab+1)
18 if(tpoi < temp(1))
then
20 elseif(temp(ntab) <= tpoi)
then
24 if(temp(in) <= tpoi .and. tpoi < temp(in+1))
then
31 coef(1) = funca(itab)*tpoi + funcb(itab)
36 subroutine heat_capacity_c1(etype, nn, ecoord, temperature, IMAT, surf, lumped, mass, &
37 ntab1, temp1, funcA1, funcB1, ntab2, temp2, funcA2, funcB2)
40 integer(kind=kint),
intent(in) :: etype
41 integer(kind=kint),
intent(in) :: nn
42 real(kind=kreal),
intent(in) :: temperature(nn)
43 real(kind=kreal),
intent(out) :: mass(:,:)
44 real(kind=kreal),
intent(out) :: lumped(:)
45 integer(kind=kint),
parameter :: ndof = 1
46 integer(kind=kint) :: i, j, IMAT
47 integer(kind=kint) :: ntab1, ntab2
48 real(kind=kreal) :: ecoord(3, nn)
49 real(kind=kreal) :: dx, dy, dz, surf, val, temp, length
50 real(kind=kreal) :: spe(3), den(3)
51 real(kind=kreal) :: temp1(ntab1), funca1(ntab1+1), funcb1(ntab1+1)
52 real(kind=kreal) :: temp2(ntab2), funca2(ntab2+1), funcb2(ntab2+1)
55 ecoord(1,2) = ecoord(1,3); ecoord(2,2) = ecoord(2,3); ecoord(3,2) = ecoord(3,3)
58 dx = ecoord(1,2) - ecoord(1,1)
59 dy = ecoord(2,2) - ecoord(2,1)
60 dz = ecoord(3,2) - ecoord(3,1)
61 length = dsqrt(dx*dx + dy*dy + dz*dz)
64 temp = (temperature(1) + temperature(2))*0.5d0
68 lumped(1) = val*spe(1)*den(1)*0.5d0
69 lumped(2) = val*spe(1)*den(1)*0.5d0
72 subroutine heat_capacity_c2(etype, nn, ecoord, temperature, IMAT, thick, lumped, mass, &
73 ntab1, temp1, funcA1, funcB1, ntab2, temp2, funcA2, funcB2)
79 integer(kind=kint),
intent(in) :: etype
80 integer(kind=kint),
intent(in) :: nn
81 real(kind=kreal),
intent(in) :: ecoord(2,nn)
82 real(kind=kreal),
intent(out) :: mass(:,:)
83 real(kind=kreal),
intent(out) :: lumped(:)
84 real(kind=kreal),
intent(in) :: temperature(nn)
85 type(tmaterial),
pointer :: matl
86 integer(kind=kint) :: i, j, lx, imat, ntab1, ntab2
87 real(kind=kreal) :: naturalcoord(2)
88 real(kind=kreal) :: func(nn), thick, temp
89 real(kind=kreal) :: det, wg, rho, diag_mass, total_mass
90 real(kind=kreal) :: d(1,1), n(1,nn), dn(1,nn)
91 real(kind=kreal) :: gderiv(nn,2)
92 real(kind=kreal) :: spe(3), den(3)
93 real(kind=kreal) :: temp1(ntab1), funca1(ntab1+1), funcb1(ntab1+1)
94 real(kind=kreal) :: temp2(ntab2), funca2(ntab2+1), funcb2(ntab2+1)
106 temp = dot_product(func, temperature)
110 d(1,1) = spe(1)*den(1)*thick
119 forall(i = 1:nn, j = 1:nn)
120 mass(i,j) = mass(i,j) + dot_product(n(:,i), dn(:,j))*wg
129 ntab1, temp1, funcA1, funcB1, ntab2, temp2, funcA2, funcB2)
135 integer(kind=kint),
intent(in) :: etype
136 integer(kind=kint),
intent(in) :: nn
137 real(kind=kreal),
intent(in) :: ecoord(3,nn)
138 real(kind=kreal),
intent(out) :: mass(:,:)
139 real(kind=kreal),
intent(out) :: lumped(:)
140 real(kind=kreal),
intent(in),
optional :: temperature(nn)
141 type(tmaterial),
pointer :: matl
142 integer(kind=kint) :: i, j, lx, imat, ntab1, ntab2
143 real(kind=kreal) :: naturalcoord(3)
144 real(kind=kreal) :: func(nn), temp
145 real(kind=kreal) :: det, wg, rho, diag_mass, total_mass
146 real(kind=kreal) :: d(1, 1), n(1, nn), dn(1, nn)
147 real(kind=kreal) :: gderiv(nn, 3)
148 real(kind=kreal) :: spe(3), den(3)
149 real(kind=kreal) :: temp1(ntab1), funca1(ntab1+1), funcb1(ntab1+1)
150 real(kind=kreal) :: temp2(ntab2), funca2(ntab2+1), funcb2(ntab2+1)
162 temp = dot_product(func, temperature)
167 d(1,1) = spe(1)*den(1)
176 forall(i = 1:nn, j = 1:nn)
177 mass(i,j) = mass(i,j) + dot_product(n(:,i), dn(:,j))*wg
186 ntab1, temp1, funcA1, funcB1, ntab2, temp2, funcA2, funcB2)
193 integer(kind=kint),
intent(in) :: etype
194 integer(kind=kint),
intent(in) :: nn
195 real(kind=kreal),
intent(in) :: ecoord(3,nn)
196 real(kind=kreal),
intent(out) :: mass(:,:)
197 real(kind=kreal),
intent(out) :: lumped(:)
198 real(kind=kreal),
intent(in),
optional :: temperature(nn)
199 type(tmaterial),
pointer :: matl
200 integer(kind=kint) :: i, j, lx, imat, ntab1, ntab2
201 real(kind=kreal) :: surf, thick, temp
202 real(kind=kreal) :: det, wg, rho, diag_mass, total_mass
203 real(kind=kreal) :: spe(3), den(3)
204 real(kind=kreal) :: temp1(ntab1), funca1(ntab1+1), funcb1(ntab1+1)
205 real(kind=kreal) :: temp2(ntab2), funca2(ntab2+1), funcb2(ntab2+1)
215 temp = temperature(i)
219 mass(i,i) = mass(i,i) + surf*thick*spe(1)*den(1)/3.0d0
227 ntab1, temp1, funcA1, funcB1, ntab2, temp2, funcA2, funcB2)
233 integer(kind=kint),
intent(in) :: etype
234 integer(kind=kint),
intent(in) :: nn
235 real(kind=kreal),
intent(in) :: ecoord(3,nn)
236 real(kind=kreal),
intent(out) :: mass(:,:)
237 real(kind=kreal),
intent(out) :: lumped(:)
238 real(kind=kreal),
intent(in),
optional :: temperature(nn)
239 type(tmaterial),
pointer :: matl
240 integer(kind=kint) :: i, j, lx, ly, imat, ntab1, ntab2
241 real(kind=kreal) :: naturalcoord(2)
242 real(kind=kreal) :: func(nn), thick, temp
243 real(kind=kreal) :: det, wg, rho, diag_mass, total_mass
244 real(kind=kreal) :: d(1,1), n(1, nn), dn(1, nn)
245 real(kind=kreal) :: gderiv(nn,2)
246 real(kind=kreal) :: spe(3), den(3)
247 real(kind=kreal) :: temp1(ntab1), funca1(ntab1+1), funcb1(ntab1+1)
248 real(kind=kreal) :: temp2(ntab2), funca2(ntab2+1), funcb2(ntab2+1)
249 real(kind=kreal) :: xg(2), ri, si, rp, sp, rm, sm, hr(4), hs(4)
250 real(kind=kreal) :: xr, xs, yr, ys, zr, zs
251 real(kind=kreal) :: h(4), x(4), y(4), z(4)
258 x(1) = ecoord(1,1); y(1) = ecoord(2,1); z(1) = ecoord(3,1)
259 x(2) = ecoord(1,2); y(2) = ecoord(2,2); z(2) = ecoord(3,2)
260 x(3) = ecoord(1,3); y(3) = ecoord(2,3); z(3) = ecoord(3,3)
261 x(4) = ecoord(1,4); y(4) = ecoord(2,4); z(4) = ecoord(3,4)
263 xg(1) = -0.5773502691896258d0
294 xr = hr(1)*x(1) + hr(2)*x(2) + hr(3)*x(3) + hr(4)*x(4)
295 xs = hs(1)*x(1) + hs(2)*x(2) + hs(3)*x(3) + hs(4)*x(4)
296 yr = hr(1)*y(1) + hr(2)*y(2) + hr(3)*y(3) + hr(4)*y(4)
297 ys = hs(1)*y(1) + hs(2)*y(2) + hs(3)*y(3) + hs(4)*y(4)
298 zr = hr(1)*z(1) + hr(2)*z(2) + hr(3)*z(3) + hr(4)*z(4)
299 zs = hs(1)*z(1) + hs(2)*z(2) + hs(3)*z(3) + hs(4)*z(4)
301 det = (yr*zs - zr*ys)**2 + (zr*xs - xr*zs)**2 + (xr*ys - yr*xs)**2
306 temp = temp + temperature(i)*h(i)
312 mass(i,i) = mass(i,i) + spe(1)*den(1)*h(i)*det*thick
318 if(is_lumped)
call get_lumped_mass(nn, 1, mass, lumped)
This module encapsulate the basic functions of all elements provide by this software.
subroutine getshapefunc(fetype, localcoord, func)
Calculate the shape function in natural coodinate system.
subroutine getquadpoint(fetype, np, pos)
Fetch the coordinate of gauss point.
subroutine getglobalderiv(fetype, nn, localcoord, elecoord, det, gderiv)
Calculate shape derivative in global coordinate system.
real(kind=kreal) function getweight(fetype, np)
Fetch the weight value in given gauss point.
integer function numofquadpoints(fetype)
Obtains the number of quadrature points of the element.
This module contains subroutines used in 3d eigen analysis for.
real(kind=kreal) function get_face3(ecoord)
subroutine get_lumped_mass(nn, ndof, mass, lumped)
subroutine heat_capacity_c2(etype, nn, ecoord, temperature, imat, thick, lumped, mass, ntab1, temp1, funca1, funcb1, ntab2, temp2, funca2, funcb2)
subroutine heat_get_coefficient(tpoi, imat, coef, ntab, temp, funca, funcb)
subroutine heat_capacity_shell_741(etype, nn, ecoord, temperature, imat, thick, lumped, mass, ntab1, temp1, funca1, funcb1, ntab2, temp2, funca2, funcb2)
subroutine heat_capacity_shell_731(etype, nn, ecoord, temperature, imat, thick, lumped, mass, ntab1, temp1, funca1, funcb1, ntab2, temp2, funca2, funcb2)
subroutine heat_capacity_c1(etype, nn, ecoord, temperature, imat, surf, lumped, mass, ntab1, temp1, funca1, funcb1, ntab2, temp2, funca2, funcb2)
subroutine heat_capacity_c3(etype, nn, ecoord, temperature, imat, lumped, mass, ntab1, temp1, funca1, funcb1, ntab2, temp2, funca2, funcb2)
This module manages calculation relates with materials.
This modules defines a structure to record history dependent parameter in static analysis.