OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
spmd_i20tool.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!|| spmd_fiadd20_pon ../engine/source/mpi/interfaces/spmd_i20tool.F
25!||--- called by ------------------------------------------------------
26!|| spmd_i7fcom_pon ../engine/source/mpi/forces/spmd_i7fcom_pon.F
27!||--- calls -----------------------------------------------------
28!|| getdpdaanc ../engine/source/mpi/interfaces/spmd_i7tool.F
29!||====================================================================
30 SUBROUTINE spmd_fiadd20_pon(
31 1 NB, LEN, NSVSI, BUFR, DAANC6, NSV, ALPHAK)
32C-----------------------------------------------
33C I m p l i c i t T y p e s
34C-----------------------------------------------
35#include "implicit_f.inc"
36C-----------------------------------------------
37C C o m m o n B l o c k s
38C-----------------------------------------------
39#include "scr05_c.inc"
40C-----------------------------------------------
41C D u m m y A r g u m e n t s
42C-----------------------------------------------
43 INTEGER NB, LEN, NSVSI(*),NSV(*)
45 . bufr(len,*), alphak(3,*)
46 DOUBLE PRECISION DAANC6(3,6,*)
47C-----------------------------------------------
48C L o c a l V a r i a b l e s
49C-----------------------------------------------
50 INTEGER I, N, INC ,ISIGN
51 DOUBLE PRECISION DAANC6L(3,6)
52C-----------------------------------------------
53C S o u r c e L i n e s
54C-----------------------------------------------
55C
56 DO i = 1, nb
57 n = nsv(nsvsi(i))
58 isign = 1
59 IF(alphak(2,n) < zero .or. bufr(1,i) < zero)isign = -1
60 alphak(2,n) = isign*min(abs(alphak(2,n)),abs(bufr(1,i)))
61 CALL getdpdaanc(daanc6l,bufr(2,i),iresp,inc)
62 daanc6(1,1,n) = daanc6(1,1,n)+daanc6l(1,1)
63 daanc6(1,2,n) = daanc6(1,2,n)+daanc6l(1,2)
64 daanc6(1,3,n) = daanc6(1,3,n)+daanc6l(1,3)
65 daanc6(1,4,n) = daanc6(1,4,n)+daanc6l(1,4)
66 daanc6(1,5,n) = daanc6(1,5,n)+daanc6l(1,5)
67 daanc6(1,6,n) = daanc6(1,6,n)+daanc6l(1,6)
68 daanc6(2,1,n) = daanc6(2,1,n)+daanc6l(2,1)
69 daanc6(2,2,n) = daanc6(2,2,n)+daanc6l(2,2)
70 daanc6(2,3,n) = daanc6(2,3,n)+daanc6l(2,3)
71 daanc6(2,4,n) = daanc6(2,4,n)+daanc6l(2,4)
72 daanc6(2,5,n) = daanc6(2,5,n)+daanc6l(2,5)
73 daanc6(2,6,n) = daanc6(2,6,n)+daanc6l(2,6)
74 daanc6(3,1,n) = daanc6(3,1,n)+daanc6l(3,1)
75 daanc6(3,2,n) = daanc6(3,2,n)+daanc6l(3,2)
76 daanc6(3,3,n) = daanc6(3,3,n)+daanc6l(3,3)
77 daanc6(3,4,n) = daanc6(3,4,n)+daanc6l(3,4)
78 daanc6(3,5,n) = daanc6(3,5,n)+daanc6l(3,5)
79 daanc6(3,6,n) = daanc6(3,6,n)+daanc6l(3,6)
80 END DO
81C
82 RETURN
83 END
84C
85!||====================================================================
86!|| spmd_fiadd20e_pon ../engine/source/mpi/interfaces/spmd_i20tool.F
87!||--- called by ------------------------------------------------------
88!|| spmd_i7fcom_pon ../engine/source/mpi/forces/spmd_i7fcom_pon.F
89!||--- calls -----------------------------------------------------
90!|| getdpdaanc ../engine/source/mpi/interfaces/spmd_i7tool.F
91!||====================================================================
93 1 NB, LEN, NSVSI, BUFR, DAANC6, IXLINS, ALPHAK)
94C-----------------------------------------------
95C I m p l i c i t T y p e s
96C-----------------------------------------------
97#include "implicit_f.inc"
98C-----------------------------------------------
99C C o m m o n B l o c k s
100C-----------------------------------------------
101#include "scr05_c.inc"
102C-----------------------------------------------
103C D u m m y A r g u m e n t s
104C-----------------------------------------------
105 INTEGER NB, LEN, NSVSI(*), IXLINS(2,*)
106 my_real
107 . bufr(len,*), alphak(3,*)
108 DOUBLE PRECISION DAANC6(3,6,*)
109C-----------------------------------------------
110C L o c a l V a r i a b l e s
111C-----------------------------------------------
112 INTEGER I, N, NL1, NL2, INC ,ISIGN
113 DOUBLE PRECISION DAANC6L(3,6)
114C-----------------------------------------------
115C S o u r c e L i n e s
116C-----------------------------------------------
117C
118 DO i = 1, nb
119 n = nsvsi(i)
120 nl1 = ixlins(1,n)
121 nl2 = ixlins(2,n)
122 isign = 1
123 IF(alphak(2,nl1) < zero .or. bufr(1,i) < zero)isign = -1
124 alphak(2,nl1) = isign*min(abs(alphak(2,nl1)),abs(bufr(1,i)))
125 isign = 1
126 IF(alphak(2,nl2) < zero .or. bufr(2,i) < zero)isign = -1
127 alphak(2,nl2) = isign*min(abs(alphak(2,nl2)),abs(bufr(2,i)))
128 CALL getdpdaanc(daanc6l,bufr(3,i),iresp,inc)
129 daanc6(1,1,nl1) = daanc6(1,1,nl1)+daanc6l(1,1)
130 daanc6(1,2,nl1) = daanc6(1,2,nl1)+daanc6l(1,2)
131 daanc6(1,3,nl1) = daanc6(1,3,nl1)+daanc6l(1,3)
132 daanc6(1,4,nl1) = daanc6(1,4,nl1)+daanc6l(1,4)
133 daanc6(1,5,nl1) = daanc6(1,5,nl1)+daanc6l(1,5)
134 daanc6(1,6,nl1) = daanc6(1,6,nl1)+daanc6l(1,6)
135 daanc6(2,1,nl1) = daanc6(2,1,nl1)+daanc6l(2,1)
136 daanc6(2,2,nl1) = daanc6(2,2,nl1)+daanc6l(2,2)
137 daanc6(2,3,nl1) = daanc6(2,3,nl1)+daanc6l(2,3)
138 daanc6(2,4,nl1) = daanc6(2,4,nl1)+daanc6l(2,4)
139 daanc6(2,5,nl1) = daanc6(2,5,nl1)+daanc6l(2,5)
140 daanc6(2,6,nl1) = daanc6(2,6,nl1)+daanc6l(2,6)
141 daanc6(3,1,nl1) = daanc6(3,1,nl1)+daanc6l(3,1)
142 daanc6(3,2,nl1) = daanc6(3,2,nl1)+daanc6l(3,2)
143 daanc6(3,3,nl1) = daanc6(3,3,nl1)+daanc6l(3,3)
144 daanc6(3,4,nl1) = daanc6(3,4,nl1)+daanc6l(3,4)
145 daanc6(3,5,nl1) = daanc6(3,5,nl1)+daanc6l(3,5)
146 daanc6(3,6,nl1) = daanc6(3,6,nl1)+daanc6l(3,6)
147 CALL getdpdaanc(daanc6l,bufr(3+inc,i),iresp,inc)
148 daanc6(1,1,nl2) = daanc6(1,1,nl2)+daanc6l(1,1)
149 daanc6(1,2,nl2) = daanc6(1,2,nl2)+daanc6l(1,2)
150 daanc6(1,3,nl2) = daanc6(1,3,nl2)+daanc6l(1,3)
151 daanc6(1,4,nl2) = daanc6(1,4,nl2)+daanc6l(1,4)
152 daanc6(1,5,nl2) = daanc6(1,5,nl2)+daanc6l(1,5)
153 daanc6(1,6,nl2) = daanc6(1,6,nl2)+daanc6l(1,6)
154 daanc6(2,1,nl2) = daanc6(2,1,nl2)+daanc6l(2,1)
155 daanc6(2,2,nl2) = daanc6(2,2,nl2)+daanc6l(2,2)
156 daanc6(2,3,nl2) = daanc6(2,3,nl2)+daanc6l(2,3)
157 daanc6(2,4,nl2) = daanc6(2,4,nl2)+daanc6l(2,4)
158 daanc6(2,5,nl2) = daanc6(2,5,nl2)+daanc6l(2,5)
159 daanc6(2,6,nl2) = daanc6(2,6,nl2)+daanc6l(2,6)
160 daanc6(3,1,nl2) = daanc6(3,1,nl2)+daanc6l(3,1)
161 daanc6(3,2,nl2) = daanc6(3,2,nl2)+daanc6l(3,2)
162 daanc6(3,3,nl2) = daanc6(3,3,nl2)+daanc6l(3,3)
163 daanc6(3,4,nl2) = daanc6(3,4,nl2)+daanc6l(3,4)
164 daanc6(3,5,nl2) = daanc6(3,5,nl2)+daanc6l(3,5)
165 daanc6(3,6,nl2) = daanc6(3,6,nl2)+daanc6l(3,6)
166 END DO
167C
168 RETURN
169 END
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
subroutine spmd_fiadd20_pon(nb, len, nsvsi, bufr, daanc6, nsv, alphak)
subroutine spmd_fiadd20e_pon(nb, len, nsvsi, bufr, daanc6, ixlins, alphak)
subroutine getdpdaanc(daanc6, buf, iresp, inc)