OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mat11check.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!|| mat11check ../starter/source/materials/mat/mat011/mat11check.F
25!||--- called by ------------------------------------------------------
26!|| matini ../starter/source/materials/mat_share/matini.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../starter/share/message_module/message_mod.F
31!||====================================================================
32 SUBROUTINE mat11check(PM,NIX,IX,ALE_CONNECTIVITY,NUMEL,JALE_FROM_PROP,NEL,NFT,MAT_ID,NUMMAT,NPROPM)
33C-----------------------------------------------
34C D e s c r i p t i o n
35C-----------------------------------------------
36C This subroutines is checking if material boundary
37C law11 has compatible material law with adjacent element
38C
39C This subroutine is called when group of elem (LFT,LLT)
40C is associated with material law 11
41C
42C NUMEL : total number of solid elements (2d or 3d)
43C IX : element connectivity + mat_id (size NIX,NUMEL)
44C PM : material properties (real)
45C ALE_CONNECTIVITY : connectivity buffer (ALE)
46C JALE_FROM_PROP : property flag which set ALE or EULER
47C NEL : number of element in current group
48C MFT : shift index to retrieve global internal identifier
49C
50C-----------------------------------------------
51C M o d u l e s
52C-----------------------------------------------
53 USE message_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62C
63C-----------------------------------------------
64C D u m m y A r g u m e n t s
65C-----------------------------------------------
66 INTEGER,INTENT(IN) :: NUMEL,NIX,IX(NIX,NUMEL),JALE_FROM_PROP,NEL,NFT
67 INTEGER,INTENT(IN) :: MAT_ID,NUMMAT, NPROPM
68 my_real,INTENT(IN) :: pm(npropm,nummat)
69 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
70C-----------------------------------------------
71C L o c a l V a r i a b l e s
72C-----------------------------------------------
73 INTEGER I, IVMAT,IMAT, ELEM_UID, MLN, J, IE, IEV, IAD1,LGTH
74 INTEGER lFOUND_monomat, lFOUND_multimat
75C-----------------------------------------------
76C S o u r c e L i n e s
77C-----------------------------------------------
78 IF(jale_from_prop == 0)THEN
79 CALL ancmsg(msgid = 122,msgtype=msgerror,anmode=aninfo,
80 . i1 = mat_id,
81 . c1 = "MATERIAL LAW 11 MUST BE DEFINED WITH ALE OR EULER FRAMEWORK" )
82 ENDIF
83
84 DO i=1,nel
85 ie = i + nft
86 elem_uid = ix(nix,ie)
87 imat = ix(1,ie)
88 lfound_monomat = 0
89 lfound_multimat = 0
90 !loop over all adjacent elems
91 iad1 = ale_connectivity%ee_connect%iad_connect(ie)
92 lgth = ale_connectivity%ee_connect%iad_connect(ie+1) - iad1
93 DO j=1,lgth
94 iev = ale_connectivity%ee_connect%connected(iad1 + j - 1)
95 IF(iev == 0)cycle
96 ivmat = abs(ix(1,iev))
97 mln = nint(pm(19,ivmat))
98 IF(mln == 51 .OR. mln == 151 .OR. mln == 37)lfound_multimat = lfound_multimat + 1
99 IF(mln /= 11)lfound_monomat = lfound_monomat + 1
100 enddo! next J
101
102 IF(lfound_multimat /= 0)THEN
103 CALL ancmsg(msgid = 122,msgtype=msgerror,anmode=aninfo,
104 . i1 = elem_uid,
105 . c1 = "MATERIAL LAW 11 IS NOT COMPATIBLE WITH MULTIMATERIAL FORMULATION" )
106 ENDIF
107 IF(lfound_monomat == 0)THEN
108 CALL ancmsg(msgid = 123,msgtype=msgwarning,anmode=aninfo,
109 . i1 = elem_uid,
110 . c1 = "HAS NO ADJACENT FACE IN COMPUTATION DOMAIN (MATERIAL LAW11)" )
111 ENDIF
112 IF(lfound_monomat >= 2)THEN
113 CALL ancmsg(msgid = 122,msgtype=msgerror,anmode=aninfo,
114 . i1 = elem_uid,
115 . c1 = "MUST HAVE ONLY ONE FACE ADJACENT TO COMPUTATION DOMAIN (MATERIAL LAW11)" )
116 ENDIF
117 ENDDO !next I
118C-----------------------------------------------
119 RETURN
120 END SUBROUTINE mat11check
#define my_real
Definition cppsort.cpp:32
subroutine mat11check(pm, nix, ix, ale_connectivity, numel, jale_from_prop, nel, nft, mat_id, nummat, npropm)
Definition mat11check.F:33
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