OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
reduce_mmx.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/.
23C
24!||====================================================================
25!|| reduce_mmx ../engine/source/mpi/interfaces/reduce_mmx.F
26!||====================================================================
27 SUBROUTINE reduce_mmx(RIN,RINOUT,LEN,TYPE)
28C-----------------------------------------------
29C I m p l i c i t T y p e s
30C-----------------------------------------------
31#include "implicit_f.inc"
32C-----------------------------------------------
33C D u m m y A r g u m e n t s
34C-----------------------------------------------
35 INTEGER LEN, TYPE
37 . rin(*), rinout(*)
38C-----------------------------------------------
39C L o c a l V a r i a b l e s
40C-----------------------------------------------
41#ifdef MPI
42 INTEGER I, L, I_LEN
43 parameter(i_len = 46)
44C-----------------------------------------------
45C S o u r c e L i n e s
46C-----------------------------------------------
47 l = 1
48 DO i=1,len
49C X MIN/MAX
50 rinout(l) = max(rinout(l),rin(l))
51 rinout(l+1) = max(rinout(l+1),rin(l+1))
52 rinout(l+2) = max(rinout(l+2),rin(l+2))
53 rinout(l+3) = min(rinout(l+3),rin(l+3))
54 rinout(l+4) = min(rinout(l+4),rin(l+4))
55 rinout(l+5) = min(rinout(l+5),rin(l+5))
56
57 rinout(l+6) = max(rinout(l+6),rin(l+6))
58 rinout(l+7) = max(rinout(l+7),rin(l+7))
59 rinout(l+8) = max(rinout(l+8),rin(l+8))
60
61 rinout(l+ 9) = min(rinout(l+9),rin(l+9))
62 rinout(l+10) = min(rinout(l+10),rin(l+10))
63 rinout(l+11) = min(rinout(l+11),rin(l+11))
64
65 rinout(l+12) = max(rinout(l+12),rin(l+12))
66 rinout(l+13) = max(rinout(l+13),rin(l+13))
67 rinout(l+14) = max(rinout(l+14),rin(l+14))
68
69 rinout(l+15) = min(rinout(l+15),rin(l+15))
70 rinout(l+16) = min(rinout(l+16),rin(l+16))
71 rinout(l+17) = min(rinout(l+17),rin(l+17))
72
73 l = l + 18
74C
75 rinout(l) = max(rinout(l),rin(l))
76 rinout(l+1) = max(rinout(l+1),rin(l+1))
77 rinout(l+2) = max(rinout(l+2),rin(l+2))
78 rinout(l+3) = min(rinout(l+3),rin(l+3))
79 rinout(l+4) = min(rinout(l+4),rin(l+4))
80 rinout(l+5) = min(rinout(l+5),rin(l+5))
81 rinout(l+6) = max(rinout(l+6),rin(l+6))
82 rinout(l+7) = max(rinout(l+7),rin(l+7))
83 rinout(l+8) = max(rinout(l+8),rin(l+8))
84 rinout(l+9) = min(rinout(l+9),rin(l+9))
85 rinout(l+10) = min(rinout(l+10),rin(l+10))
86 rinout(l+11) = min(rinout(l+11),rin(l+11))
87
88 l = l + 12
89C V MIN/MAX
90 rinout(l) = max(rinout(l),rin(l))
91 rinout(l+1) = max(rinout(l+1),rin(l+1))
92 rinout(l+2) = max(rinout(l+2),rin(l+2))
93 rinout(l+3) = min(rinout(l+3),rin(l+3))
94 rinout(l+4) = min(rinout(l+4),rin(l+4))
95 rinout(l+5) = min(rinout(l+5),rin(l+5))
96 l = l + 6
97C
98 rinout(l) = max(rinout(l),rin(l))
99 rinout(l+1) = max(rinout(l+1),rin(l+1))
100 rinout(l+2) = max(rinout(l+2),rin(l+2))
101 rinout(l+3) = min(rinout(l+3),rin(l+3))
102 rinout(l+4) = min(rinout(l+4),rin(l+4))
103 rinout(l+5) = min(rinout(l+5),rin(l+5))
104 l = l + 6
105C NEWFRONT / SIZE
106 rinout(l) = rinout(l)+rin(l)
107 l = l + 1
108C TZINF
109 rinout(l) = min(rinout(l),rin(l))
110 l = l + 1
111C TZINF
112 rinout(l) = max(rinout(l),rin(l))
113 l = l + 1
114C T25 main gap changes with thickness change
115 rinout(l) = max(rinout(l),rin(l))
116 l = l + 1
117 END DO
118C
119#endif
120 RETURN
121 END
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine reduce_mmx(rin, rinout, len, type)
Definition reduce_mmx.F:28