OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i20sms2.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!|| i20sms2e ../engine/source/interfaces/int20/i20sms2.F
25!||--- called by ------------------------------------------------------
26!|| i20for3e ../engine/source/interfaces/int20/i20for3.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 i20sms2e(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 ,NRTS )
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 "parit_c.inc"
57#include "task_c.inc"
58#include "sms_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER JLT, NIN, NOINT, CS_LOC(*),
63 . N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
64 . NSMS(*), ISKYI_SMS(LSKYI_SMS,*), NRTS
65 my_real
66 . hs1(mvsiz),hs2(mvsiz),hm1(mvsiz),hm2(mvsiz),stif(mvsiz),
67 . mskyi_sms(*), k1(mvsiz), k2(mvsiz), k3(mvsiz), k4(mvsiz),
68 . c1(mvsiz), c2(mvsiz), c3(mvsiz), c4(mvsiz)
69C-----------------------------------------------
70C L o c a l V a r i a b l e s
71C-----------------------------------------------
72 INTEGER I, IG, NISKYL1, NISKYL, NN
73 my_real
74 . MAS1, MAS2, MAS3, MAS4, DTS
75C
76C
77 niskyl1 = 0
78 DO i=1,jlt
79 IF(nsms(i)==0.OR.stif(i)==zero) cycle
80 IF (hm1(i)/=zero) niskyl1 = niskyl1 + 2
81 IF (hm2(i)/=zero) niskyl1 = niskyl1 + 2
82 ENDDO
83#include "lockon.inc"
84 niskyl = nisky_sms
85 nisky_sms = nisky_sms + niskyl1
86#include "lockoff.inc"
87C
88 IF (niskyl+niskyl1 > lskyi_sms) THEN
89 CALL ancmsg(msgid=26,anmode=aninfo)
90 CALL arret(2)
91 ENDIF
92C
93 DO i=1,jlt
94 IF(nsms(i)==0.OR.stif(i)==zero) cycle
95C
96 IF(nsms(i)>0)THEN
97 dts = dtmins/dtfacs
98 ELSE
99 dts = dtmins_int/dtfacs_int
100 END IF
101C
102 mas1= half * dts * ( dts * k1(i) + c1(i) )
103 mas2= half * dts * ( dts * k2(i) + c2(i) )
104 mas3= half * dts * ( dts * k3(i) + c3(i) )
105 mas4= half * dts * ( dts * k4(i) + c4(i) )
106C
107 IF(cs_loc(i)<=nrts) THEN
108 IF(hm1(i)/=zero)THEN
109 niskyl=niskyl+1
110 mskyi_sms(niskyl)=max(mas1,mas3)
111 iskyi_sms(niskyl,1)=n1(i)
112 iskyi_sms(niskyl,2)=m1(i)
113 iskyi_sms(niskyl,3)=ispmd+1
114 niskyl=niskyl+1
115 mskyi_sms(niskyl)=max(mas2,mas3)
116 iskyi_sms(niskyl,1)=n2(i)
117 iskyi_sms(niskyl,2)=m1(i)
118 iskyi_sms(niskyl,3)=ispmd+1
119 END IF
120 IF(hm2(i)/=zero)THEN
121 niskyl=niskyl+1
122 mskyi_sms(niskyl)=max(mas1,mas4)
123 iskyi_sms(niskyl,1)=n1(i)
124 iskyi_sms(niskyl,2)=m2(i)
125 iskyi_sms(niskyl,3)=ispmd+1
126 niskyl=niskyl+1
127 mskyi_sms(niskyl)=max(mas2,mas4)
128 iskyi_sms(niskyl,1)=n2(i)
129 iskyi_sms(niskyl,2)=m2(i)
130 iskyi_sms(niskyl,3)=ispmd+1
131 END IF
132 ELSE
133 IF(hm1(i)/=zero)THEN
134 niskyl=niskyl+1
135 mskyi_sms(niskyl)=max(mas1,mas3)
136 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n1(i))
137 iskyi_sms(niskyl,2)=m1(i)
138 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n1(i))
139 niskyl=niskyl+1
140 mskyi_sms(niskyl)=max(mas2,mas3)
141 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n2(i))
142 iskyi_sms(niskyl,2)=m1(i)
143 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n2(i))
144 END IF
145 IF(hm2(i)/=zero)THEN
146 niskyl=niskyl+1
147 mskyi_sms(niskyl)=max(mas1,mas4)
148 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n1(i))
149 iskyi_sms(niskyl,2)=m2(i)
150 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n1(i))
151 niskyl=niskyl+1
152 mskyi_sms(niskyl)=max(mas2,mas4)
153 iskyi_sms(niskyl,1)=nodamsfie(nin)%P(n2(i))
154 iskyi_sms(niskyl,2)=m2(i)
155 iskyi_sms(niskyl,3)=procamsfie(nin)%P(n2(i))
156 END IF
157 END IF
158 ENDDO
159C
160 RETURN
161 END
162C
subroutine i20sms2e(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, nrts)
Definition i20sms2.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