OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ini_outmax.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!|| ini_tmax ../engine/source/output/ini_outmax.F
25!||--- called by ------------------------------------------------------
26!|| resol_init ../engine/source/engine/resol_init.F
27!||--- calls -----------------------------------------------------
28!|| ini_tmnorm2 ../engine/source/output/outmaxsubr.F
29!|| my_barrier ../engine/source/system/machine.F
30!|| sig2d2pin ../engine/source/output/outmaxsubr.F
31!|| sig3d2pin ../engine/source/output/outmaxsubr.F
32!|| upd_tmax ../engine/source/output/upd_outmax.F
33!||--- uses -----------------------------------------------------
34!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.f90
35!|| outmax_mod ../common_source/modules/outmax_mod.F
36!|| stack_mod ../engine/share/modules/stack_mod.F
37!||====================================================================
38 SUBROUTINE ini_tmax(ELBUF_TAB,IPARG ,GEO ,PM ,
39 . IXS ,IXS10 ,IXS16 ,IXS20 ,IXQ ,
40 . IXC ,IXTG ,IXT ,IXP ,IXR ,
41 . X ,D ,V ,IAD_ELEM,FR_ELEM ,
42 . WEIGHT ,IPM ,IGEO ,STACK ,ITASK )
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE elbufdef_mod
47 USE outmax_mod
48 USE stack_mod
49C-----------------------------------------------------------------------
50C I m p l i c i t T y p e s
51C-----------------------------------------------
52#include "implicit_f.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "com08_c.inc"
59#include "param_c.inc"
60#include "tabsiz_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER, INTENT(IN):: ITASK
65 INTEGER, DIMENSION(NPARG,NGROUP) ,INTENT(IN):: IPARG
66 INTEGER, DIMENSION(NIXC,NUMELC) ,INTENT(IN):: IXC
67 INTEGER, DIMENSION(NIXTG,NUMELTG) ,INTENT(IN):: IXTG
68 INTEGER, DIMENSION(NIXS,NUMELS) ,INTENT(IN):: IXS
69 INTEGER, DIMENSION(NIXQ,NUMELQ) ,INTENT(IN):: IXQ
70 INTEGER, DIMENSION(NIXT,NUMELT) ,INTENT(IN):: IXT
71 INTEGER, DIMENSION(NIXP,NUMELP) ,INTENT(IN):: IXP
72 INTEGER, DIMENSION(NIXR,NUMELR) ,INTENT(IN):: IXR
73 INTEGER, DIMENSION(6,NUMELS10) ,INTENT(IN):: IXS10
74 INTEGER, DIMENSION(8,NUMELS16) ,INTENT(IN):: IXS16
75 INTEGER, DIMENSION(12,NUMELS20) ,INTENT(IN):: IXS20
76 INTEGER, DIMENSION(2,NSPMD+1) ,INTENT(IN):: IAD_ELEM
77 INTEGER, DIMENSION(SFR_ELEM) ,INTENT(IN):: FR_ELEM
78 INTEGER, DIMENSION(NUMNOD) ,INTENT(IN):: WEIGHT
79 INTEGER, DIMENSION(NPROPMI,NUMMAT) ,INTENT(IN):: IPM
80 INTEGER, DIMENSION(NPROPGI,NUMGEO) ,INTENT(IN):: IGEO
81 my_real, DIMENSION(NPROPG,NUMGEO) ,INTENT(IN):: geo
82 my_real, DIMENSION(NPROPM,NUMMAT) ,INTENT(IN):: pm
83 my_real, DIMENSION(3,NUMNOD) ,INTENT(IN):: x,d,v
84 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
85 TYPE (STACK_PLY) :: STACK
86C-----------------------------------------------
87C L o c a l V a r i a b l e s
88C-----------------------------------------------
89 INTEGER N, I, J,NG,ITY,NEL
90 TYPE(G_BUFEL_) ,POINTER :: GBUF
91 TYPE(L_BUFEL_) ,POINTER :: LBUF
92 TYPE(BUF_LAY_) ,POINTER :: BUFLY
93C-----------------------------------------------
94C S o u r c e L i n e s
95C-----------------------------------------------
96c-----doing TT=0 initialization instead of Starter; elementary first
97 IF(itask == 0) nmax_e = 0
98 IF (tt==zero) THEN
99 IF (itask==0) THEN
100 DO ng=1,ngroup
101 ity=iparg(5,ng)
102 nel=iparg(2,ng)
103 IF (ity /= 1 .AND. ity /= 3 .AND. ity /= 7) cycle
104 gbuf => elbuf_tab(ng)%GBUF
105 nmax_e = nmax_e + gbuf%G_TM_YIELD
106 nmax_e = nmax_e + gbuf%G_TM_SEQ
107 nmax_e = nmax_e + gbuf%G_TM_EINT
108 nmax_e = nmax_e + gbuf%G_TM_DMG
109 nmax_e = nmax_e + gbuf%G_TM_SIG
110 nmax_e = nmax_e + gbuf%G_TM_STRA
111 END DO
113 IF (nmax_n>0) THEN
114 IF (lmax_dis>0) tm_pdis = zero
115 IF (lmax_vel>0) tm_pvel = zero
116 IF (lmax_nsig>0) THEN
117 tm_pnsig(1:numnod) = zero
118 tm_pnsig(numnod+1:2*numnod) = ep30
119 END IF
120 IF (lmax_nstra>0) THEN
121 tm_pnstra(1:numnod) = zero
122 tm_pnstra(numnod+1:2*numnod) = ep30
123 END IF
124 END IF
125 END IF !(ITASK==0) THEN
126C-----------------
127 CALL my_barrier()
128C-----------------
129 CALL upd_tmax(elbuf_tab,iparg ,geo ,pm ,
130 . ixs ,ixs10 ,ixs16 ,ixs20 ,ixq ,
131 . ixc ,ixtg ,ixt ,ixp ,ixr ,
132 . x ,d ,v ,iad_elem,fr_elem ,
133 . weight ,ipm ,igeo ,stack ,itask )
134C
135 ELSEIF (itask==0) THEN
136 DO ng=1,ngroup
137 ity=iparg(5,ng)
138 nel=iparg(2,ng)
139 IF (ity /= 1 .AND. ity /= 3 .AND. ity /= 7) cycle
140 gbuf => elbuf_tab(ng)%GBUF
141 nmax_e = nmax_e + gbuf%G_TM_YIELD
142 nmax_e = nmax_e + gbuf%G_TM_SEQ
143 nmax_e = nmax_e + gbuf%G_TM_EINT
144 nmax_e = nmax_e + gbuf%G_TM_DMG
145 nmax_e = nmax_e + gbuf%G_TM_SIG
146 nmax_e = nmax_e + gbuf%G_TM_STRA
147 SELECT CASE (ity)
148 CASE(1)
149 IF (gbuf%G_TM_SIG>0) THEN
150 CALL sig3d2pin(gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
151 END IF
152 IF (gbuf%G_TM_STRA>0) THEN
153 CALL sig3d2pin(gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
154 END IF
155 CASE(3,7)
156 IF (gbuf%G_TM_SIG>0) THEN
157 CALL sig2d2pin(gbuf%TM_SIG1,gbuf%TM_SIG3,gbuf%TM_PSIG,nel)
158 END IF
159 IF (gbuf%G_TM_STRA>0) THEN
160 CALL sig2d2pin(gbuf%TM_STRA1,gbuf%TM_STRA3,gbuf%TM_PSTRA,nel)
161 END IF
162 END SELECT
163 END DO
165 IF (nmax_n>0) THEN
166 IF (lmax_dis>0) CALL ini_tmnorm2(tm_dis,tm_pdis,numnod)
167 IF (lmax_vel>0) CALL ini_tmnorm2(tm_vel,tm_pvel,numnod)
168 IF (lmax_nsig>0)CALL sig3d2pin(tm_nsig1,tm_nsig3,tm_pnsig,numnod)
169 IF (lmax_nstra>0)CALL sig3d2pin(tm_nstra1,tm_nstra3,tm_pnstra,numnod)
170 END IF
171 END IF !(TT==ZERO) THEN
172
173 RETURN
174 END
#define my_real
Definition cppsort.cpp:32
subroutine ini_tmax(elbuf_tab, iparg, geo, pm, ixs, ixs10, ixs16, ixs20, ixq, ixc, ixtg, ixt, ixp, ixr, x, d, v, iad_elem, fr_elem, weight, ipm, igeo, stack, itask)
Definition ini_outmax.F:43
integer lmax_vel
Definition outmax_mod.F:61
integer lmax_nstra
Definition outmax_mod.F:63
integer nmax_e
Definition outmax_mod.F:59
integer lmax_dis
Definition outmax_mod.F:60
integer lmax_nsig
Definition outmax_mod.F:62
integer nmax_n
Definition outmax_mod.F:58
subroutine ini_tmnorm2(tm_d, tm_norm2, nnod)
Definition outmaxsubr.F:380
subroutine sig2d2pin(sig1, sig3, pin, nel)
Definition outmaxsubr.F:349
subroutine sig3d2pin(sig1, sig3, pin, nel)
Definition outmaxsubr.F:316
subroutine my_barrier
Definition machine.F:31
subroutine upd_tmax(elbuf_tab, iparg, geo, pm, ixs, ixs10, ixs16, ixs20, ixq, ixc, ixtg, ixt, ixp, ixr, x, d, v, iad_elem, fr_elem, weight, ipm, igeo, stack, itask)
Definition upd_outmax.F:56