OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i25sms_e2s.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!|| i25sms_e2s ../engine/source/interfaces/int25/i25sms_e2s.F
25!||--- called by ------------------------------------------------------
26!|| i25for3_e2s ../engine/source/interfaces/int25/i25for3_e2s.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!||--- uses -----------------------------------------------------
31!|| message_mod ../engine/share/message_module/message_mod.F
32!|| tri7box ../engine/share/modules/tri7box.F
33!||====================================================================
34 SUBROUTINE i25sms_e2s(JLT ,CS_LOC ,N1 ,N2 ,M1 ,
35 2 M2 ,HS1 ,HS2 ,HM1 ,HM2 ,
36 3 STIF ,NIN ,NOINT ,MSKYI_SMS ,ISKYI_SMS,
37 4 NSMS ,K1 ,K2 ,K3 ,K4 ,
38 5 C1 ,C2 ,C3 ,C4 ,NEDGE , EDGE_ID)
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE tri7box
43 USE message_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48#include "comlock.inc"
49C-----------------------------------------------
50C G l o b a l P a r a m e t e r s
51C-----------------------------------------------
52#include "mvsiz_p.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "assert.inc"
57#include "parit_c.inc"
58#include "task_c.inc"
59#include "sms_c.inc"
60C-----------------------------------------------
61C D u m m y A r g u m e n t s
62C-----------------------------------------------
63 INTEGER, INTENT(IN) :: EDGE_ID(2,4*MVSIZ)
64 INTEGER JLT, NIN, NOINT, CS_LOC(*),
65 . N1(*), N2(*), M1(*), M2(*),
66 . NSMS(4*MVSIZ), ISKYI_SMS(LSKYI_SMS,*), NEDGE
68 . hs1(*),hs2(*),hm1(*),hm2(*),stif(*), mskyi_sms(*),
69 . k1(*), k2(*), k3(*), k4(*),
70 . c1(*), c2(*), c3(*), c4(*)
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER I, IG, NISKYL1, NISKYL, NN
75 my_real
76 . MAS1, MAS2, MAS3, MAS4, DTS
77C
78C
79 niskyl1 = 0
80 DO i=1,jlt
81 IF(nsms(i)==0.OR.stif(i)==zero) cycle
82 IF (hm1(i)/=zero) niskyl1 = niskyl1 + 2
83 IF (hm2(i)/=zero) niskyl1 = niskyl1 + 2
84 ENDDO
85#include "lockon.inc"
86 niskyl = nisky_sms
87 nisky_sms = nisky_sms + niskyl1
88#include "lockoff.inc"
89C
90 IF (niskyl+niskyl1 > lskyi_sms) THEN
91 CALL ancmsg(msgid=26,anmode=aninfo)
92 CALL arret(2)
93 ENDIF
94C
95 DO i=1,jlt
96 debug_e2e(edge_id(1,i)==d_em .AND. edge_id(2,i) == d_es,nsms(i))
97
98 IF(nsms(i)==0.OR.stif(i)==zero) cycle
99C
100 IF(nsms(i)>0)THEN
101 assert(dtfacs > 0)
102 dts = dtmins/dtfacs
103 ELSE
104 dts = dtmins_int/dtfacs_int
105 END IF
106C
107 mas1= half * dts * ( dts * k1(i) + c1(i) )
108 mas2= half * dts * ( dts * k2(i) + c2(i) )
109 mas3= half * dts * ( dts * k3(i) + c3(i) )
110 mas4= half * dts * ( dts * k4(i) + c4(i) )
111C
112 IF(cs_loc(i)<=nedge) THEN
113 IF(hm1(i)/=zero)THEN
114 niskyl=niskyl+1
115 mskyi_sms(niskyl)=max(mas1,mas3)
116 iskyi_sms(niskyl,1)=n1(i)
117 iskyi_sms(niskyl,2)=m1(i)
118 iskyi_sms(niskyl,3)=ispmd+1
119 niskyl=niskyl+1
120 mskyi_sms(niskyl)=max(mas2,mas3)
121 iskyi_sms(niskyl,1)=n2(i)
122 iskyi_sms(niskyl,2)=m1(i)
123 iskyi_sms(niskyl,3)=ispmd+1
124 END IF
125 IF(hm2(i)/=zero)THEN
126 niskyl=niskyl+1
127 mskyi_sms(niskyl)=max(mas1,mas4)
128 iskyi_sms(niskyl,1)=n1(i)
129 iskyi_sms(niskyl,2)=m2(i)
130 iskyi_sms(niskyl,3)=ispmd+1
131 niskyl=niskyl+1
132 mskyi_sms(niskyl)=max(mas2,mas4)
133 iskyi_sms(niskyl,1)=n2(i)
134 iskyi_sms(niskyl,2)=m2(i)
135 iskyi_sms(niskyl,3)=ispmd+1
136 END IF
137 ELSE
138 IF(hm1(i)/=zero)THEN
139 niskyl=niskyl+1
140 mskyi_sms(niskyl)=max(mas1,mas3)
141 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n1(i))
142 iskyi_sms(niskyl,2)=m1(i)
143 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n1(i))
144 niskyl=niskyl+1
145 mskyi_sms(niskyl)=max(mas2,mas3)
146 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n2(i))
147 iskyi_sms(niskyl,2)=m1(i)
148 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n2(i))
149 END IF
150 IF(hm2(i)/=zero)THEN
151 niskyl=niskyl+1
152 mskyi_sms(niskyl)=max(mas1,mas4)
153 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n1(i))
154 iskyi_sms(niskyl,2)=m2(i)
155 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n1(i))
156 niskyl=niskyl+1
157 mskyi_sms(niskyl)=max(mas2,mas4)
158 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n2(i))
159 iskyi_sms(niskyl,2)=m2(i)
160 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n2(i))
161 END IF
162 END IF
163 ENDDO
164C
165 RETURN
166 END
#define my_real
Definition cppsort.cpp:32
subroutine i25sms_e2s(jlt, cs_loc, n1, n2, m1, m2, hs1, hs2, hm1, hm2, stif, nin, noint, mskyi_sms, iskyi_sms, nsms, k1, k2, k3, k4, c1, c2, c3, c4, nedge, edge_id)
Definition i25sms_e2s.F:39
#define max(a, b)
Definition macros.h:21
type(int_pointer), dimension(:), allocatable procamsfie
Definition tri7box.F:440
type(int_pointer), dimension(:), allocatable nodamsfie
Definition tri7box.F:440
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87