OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i24pxfem.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!|| i24pxfem ../engine/source/interfaces/int24/i24pxfem.F
25!||--- called by ------------------------------------------------------
26!|| resol ../engine/source/engine/resol.F
27!||--- calls -----------------------------------------------------
28!|| i24gap ../engine/source/interfaces/int24/i24pxfem.F
29!|| spmd_exch_i24_gap ../engine/source/mpi/interfaces/spmd_exch_i24_gap.F
30!||--- uses -----------------------------------------------------
31!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
32!||====================================================================
33 SUBROUTINE i24pxfem(
34 1 IPARI ,INTBUF_TAB,WAGAP ,IAD_ELEM,FR_ELEM)
35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE intbufdef_mod
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43#include "comlock.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "com01_c.inc"
48#include "com04_c.inc"
49#include "param_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER IPARI(NPARI,*), IAD_ELEM(2,*),FR_ELEM(*)
54C REAL
56 . wagap(*)
57
58 TYPE(intbuf_struct_) INTBUF_TAB(*)
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER SIZE,LENR ,ITY,NG,NRTM,INTPLY
64 . gapmax,dgapmax
65C=======================================================================
66
67C------------------------------------------------------------
68 IF (nspmd > 1 ) THEN
69C---
70 SIZE = 2
71 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
72 CALL spmd_exch_i24_gap( wagap,iad_elem,fr_elem,SIZE ,lenr )
73 ENDIF
74C------------------------------------------------------------
75 DO ng=1,ninter
76 gapmax = zero
77 dgapmax = zero
78 ity = ipari(7,ng)
79 intply = ipari(66,ng)
80 IF(ity == 24 .AND. intply > 0) THEN
81 nrtm =ipari(4,ng)
82 CALL i24gap(
83 1 nrtm ,intbuf_tab(ng)%IRECTM,wagap, intbuf_tab(ng)%GAP_NM,
84 . intbuf_tab(ng)%GAP_M,
85 2 intbuf_tab(ng)%MSEGTYP24,gapmax,intbuf_tab(ng)%NVOISIN,
86 . intbuf_tab(ng)%DGAP_NM,
87 3 intbuf_tab(ng)%DGAP_M,dgapmax,intbuf_tab(ng)%STFM)
88#include "lockon.inc"
89 intbuf_tab(ng)%VARIABLES(16) =
90 . max(gapmax,intbuf_tab(ng)%VARIABLES(16))
91 intbuf_tab(ng)%DELTA_PMAX_DGAP(1) = dgapmax
92#include "lockoff.inc"
93 END IF
94 END DO
95C
96 RETURN
97 END
98C
99!||====================================================================
100!|| i24gap ../engine/source/interfaces/int24/i24pxfem.F
101!||--- called by ------------------------------------------------------
102!|| i24pxfem ../engine/source/interfaces/int24/i24pxfem.F
103!||====================================================================
104 SUBROUTINE i24gap(
105 1 NRTM,IRECT,WAGAP,GAP_MN,GAP_M,MSEGTYP, GAPMAX,NVOISIN,DGAP_MN,
106 . DGAP_M ,DGAPMAX,STFM)
107C-----------------------------------------------
108C I m p l i c i t T y p e s
109C-----------------------------------------------
110#include "implicit_f.inc"
111#include "comlock.inc"
112C-----------------------------------------------
113C D u m m y A r g u m e n t s
114C-----------------------------------------------
115 INTEGER NRTM, IRECT(4,*),MSEGTYP(*), NVOISIN(8,*)
116 my_real
117 . XMAX, YMAX, ZMAX, XMIN, YMIN, ZMIN, C_MAX,
118 . gap_mn(12,*),wagap(2,*),gap_m(*),gapmax,dgap_mn(4,*),
119 . dgap_m(*),dgapmax,stfm(*)
120C-----------------------------------------------
121C L o c a l V a r i a b l e s
122C-----------------------------------------------
123 INTEGER II,M1,M2,M3,M4,NE,L
124 my_real
125 . GAPN_OLD(4),GAP_MMAX
126C-----------------------------------------------
127C S o u r c e L i n e s
128C-----------------------------------------------
129C
130C
131 DO ne=1,nrtm
132 IF(stfm(ne) == zero) cycle
133 gap_mmax = zero
134 m1 = irect(1,ne)
135 m2 = irect(2,ne)
136 m3 = irect(3,ne)
137 m4 = irect(4,ne)
138C
139 gapn_old(1) = gap_mn(1,ne)
140 gapn_old(2) = gap_mn(2,ne)
141 gapn_old(3) = gap_mn(3,ne)
142 gapn_old(4) = gap_mn(4,ne)
143C
144 IF(msegtyp(ne) > 0 ) THEN
145C
146 gap_mn(1,ne) =max(gap_mn(1,ne), wagap(1,m1))
147 gap_mmax = max(gap_mmax,gap_mn(1,ne))
148 gap_mn(2,ne) = max(gap_mn(2,ne), wagap(1,m2))
149 gap_mmax = max(gap_mmax,gap_mn(2,ne))
150 gap_mn(3,ne) = max(gap_mn(3,ne), wagap(1,m3))
151 gap_mmax = max(gap_mmax,gap_mn(3,ne))
152 gap_mn(4,ne) = max(gap_mn(4,ne), wagap(1,m4))
153 gap_mmax = max(gap_mmax,gap_mn(4,ne))
154! voisin
155 l = iabs(nvoisin(1,ne))
156 IF(l > 0) gap_mn(5,ne) =max(gap_mn(5,ne), wagap(1,l))
157 l = iabs(nvoisin(2,ne))
158 IF(l > 0) gap_mn(6,ne) =max(gap_mn(6,ne), wagap(1,l))
159 l = iabs(nvoisin(3,ne))
160 IF(l > 0) gap_mn(7,ne) =max(gap_mn(7,ne), wagap(1,l))
161 l = iabs(nvoisin(4,ne))
162 IF(l > 0) gap_mn(8,ne) =max(gap_mn(8,ne), wagap(1,l))
163 l = iabs(nvoisin(5,ne))
164 IF(l > 0) gap_mn(9,ne) =max(gap_mn(9,ne), wagap(1,l))
165 l = iabs(nvoisin(6,ne))
166 IF(l > 0) gap_mn(10,ne) =max(gap_mn(10,ne), wagap(1,l))
167 l = iabs(nvoisin(7,ne))
168 IF(l > 0) gap_mn(11,ne) =max(gap_mn(11,ne), wagap(1,l))
169 l = iabs(nvoisin(8,ne))
170 IF(l > 0) gap_mn(12,ne) =max(gap_mn(12,ne), wagap(1,l))
171 ELSEIF(msegtyp(ne) < 0) THEN
172 gap_mn(1,ne) =max(gap_mn(1,ne), wagap(2,m1))
173 gap_mmax = max(gap_mmax,gap_mn(1,ne))
174 gap_mn(2,ne) = max(gap_mn(2,ne), wagap(2,m2))
175 gap_mmax = max(gap_mmax,gap_mn(2,ne))
176 gap_mn(3,ne) = max(gap_mn(3,ne), wagap(2,m3))
177 gap_mmax = max(gap_mmax,gap_mn(3,ne))
178 gap_mn(4,ne) = max(gap_mn(4,ne), wagap(2,m4))
179 gap_mmax = max(gap_mmax,gap_mn(4,ne))
180C
181 l = iabs(nvoisin(1,ne))
182 IF(l > 0) gap_mn(5,ne) =max(gap_mn(5,ne), wagap(2,l))
183 l = iabs(nvoisin(2,ne))
184 IF(l > 0) gap_mn(6,ne) =max(gap_mn(6,ne), wagap(2,l))
185 l = iabs(nvoisin(3,ne))
186 IF(l > 0) gap_mn(7,ne) =max(gap_mn(7,ne), wagap(2,l))
187 l = iabs(nvoisin(4,ne))
188 IF(l > 0) gap_mn(8,ne) =max(gap_mn(8,ne), wagap(2,l))
189 l = iabs(nvoisin(5,ne))
190 IF(l > 0) gap_mn(9,ne) =max(gap_mn(9,ne), wagap(2,l))
191 l = iabs(nvoisin(6,ne))
192 IF(l > 0) gap_mn(10,ne) =max(gap_mn(10,ne), wagap(2,l))
193 l = iabs(nvoisin(7,ne))
194 IF(l > 0) gap_mn(11,ne) =max(gap_mn(11,ne), wagap(2,l))
195 l = iabs(nvoisin(8,ne))
196 IF(l > 0) gap_mn(12,ne) =max(gap_mn(12,ne), wagap(2,l))
197 ENDIF
198 gap_m(ne) = gap_mmax
199 gapmax = max(gapmax,gap_mmax)
200 dgap_mn(1,ne)= gap_mn(1,ne) - gapn_old(1)
201 dgap_mn(2,ne)= gap_mn(2,ne) - gapn_old(2)
202 dgap_mn(3,ne)= gap_mn(3,ne) - gapn_old(3)
203 dgap_mn(4,ne)= gap_mn(4,ne) - gapn_old(4)
204 dgap_m(ne) = max(dgap_mn(1,ne), dgap_mn(2,ne),
205 . dgap_mn(3,ne), dgap_mn(4,ne))
206#include "lockon.inc"
207 dgapmax = max(dgapmax, dgap_m(ne))
208#include "lockoff.inc"
209 ENDDO
210C
211 RETURN
212 END
213
#define my_real
Definition cppsort.cpp:32
subroutine i24pxfem(ipari, intbuf_tab, wagap, iad_elem, fr_elem)
Definition i24pxfem.F:35
subroutine i24gap(nrtm, irect, wagap, gap_mn, gap_m, msegtyp, gapmax, nvoisin, dgap_mn, dgap_m, dgapmax, stfm)
Definition i24pxfem.F:107
#define max(a, b)
Definition macros.h:21
subroutine spmd_exch_i24_gap(wa, iad_elem, fr_elem, size, lenr)