34
35
36
37
38
39
40
41
42
43
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "param_c.inc"
55
56
57
58 INTEGER,INTENT(INOUT) :: NALE(NUMNOD)
59 INTEGER,INTENT(IN) :: IXS(NIXS,NUMELS), IXQ(NIXQ,NUMELQ), IXC(NIXC,NUMELC), IXT(NIXT,NUMELT), IXTG(NIXTG
60INTEGER,INTENT(IN) :: ITAB(NUMNOD), NALE_R2R(*),FLAG_R2R, IGEO(NPROPGI,NUMGEO)
61 my_real,
INTENT(IN) :: pm(npropm,nummat)
62
63
64
65 INTEGER M, IAL, I, N, , IMAT, IPROP
66 INTEGER JALE_FROM_MAT, JALE_FROM_PROP
67
68
69
70
71
72
73
74 jwarn=0
75 IF(numelq /= 0)THEN
76 DO m=1,numelq
77 imat = iabs(ixq(1,m))
78 iprop = iabs(ixq(6,m))
79 IF(imat == 0)cycle
80 jale_from_mat = nint(pm(72,imat))
81
82
83 IF(ial /= 0)cycle
84 DO i=2,5
85 n=ixq(i,m)
86 IF(iabs(nale(n)) == 2)THEN
87 jwarn=1
88
89 CALL ancmsg(msgid=336,msgtype=msgwarning,anmode=aninfo_blind_1,i1=itab(n),prmod=msg_cumu,c1=
'QUAD')
90 ENDIF
91 nale(n)=0
92 ENDDO
93 ENDDO
94 ENDIF
95 CALL ancmsg(msgid=336,msgtype=msgwarning,anmode=aninfo_blind_1, prmod=msg_print,c1=
'QUAD',c2=
'QUAD')
96
97
98
99
100 IF(numels /= 0)THEN
101 DO m=1,numels
102 imat = iabs(ixs(1,m))
103 iprop = iabs(ixs(10,m))
104 IF(imat == 0)cycle
105 jale_from_mat = nint(pm(72,imat))
106 jale_from_prop = igeo(62,iprop)
107 ial = jale_from_mat + jale_from_prop
108 IF(ial /= 0)cycle
109 DO i=2,9
110 n=ixs(i,m)
111 IF(iabs(nale(n)) == 2)THEN
112 jwarn=1
113
114 CALL ancmsg(msgid=336,msgtype=msgwarning,anmode=aninfo_blind_1,i1=itab(n),prmod=msg_cumu,c1=
'SOLID')
115 ENDIF
116 nale(n)=0
117 ENDDO
118 ENDDO
119 ENDIF
120 CALL ancmsg(msgid=336,msgtype=msgwarning,anmode=aninfo_blind_1,prmod=msg_print,c1='solid
',C2='solid
')
121
122
123
124
125 IF(NUMELC /= 0)THEN
126 DO M=1,NUMELC
127 DO I=2,5
128 N=IXC(I,M)
129 IF(IABS(NALE(N)) == 2)THEN
130 JWARN=1
131 !WARNING NODE CONNECTS SHELL (LAGRANGIAN) TO EULERIAN SOLID
132 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,I1=ITAB(N),PRMOD=MSG_CUMU,C1='shell')
133 ENDIF
134 NALE(N)=0
135 ENDDO !I=2,5
136 ENDDO !M=1,NUMELC
137 ENDIF !IF(NUMELC /= 0)
138 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,PRMOD=MSG_PRINT,C1='shell',C2='solid')
139
140
141
142
143.AND. IF(NUMELTG /= 0 N2D == 0)THEN
144 DO M=1,NUMELTG
145 DO I=2,4
146 N=IXTG(I,M)
147 IF(IABS(NALE(N)) == 2)THEN
148 JWARN=1
149 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,I1=ITAB(N),PRMOD=MSG_CUMU,C1='sh3n')
150 ENDIF
151 NALE(N)=0
152 ENDDO
153 ENDDO
154 ENDIF
155 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,PRMOD=MSG_PRINT,C1='shell-3n',C2='solid')
156
157
158
159
160 IF(NUMELT /= 0)THEN
161 DO M=1,NUMELT
162 DO I=2,3
163 N=IXT(I,M)
164 IF(IABS(NALE(N)) == 2)THEN
165 JWARN=1
166 !WARNING NODE CONNECTS TRUSS (LAGRANGIAN) TO EULERIAN PART
167 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,I1=ITAB(N),PRMOD=MSG_CUMU,C1='truss')
168 ENDIF
169 NALE(N)=0
170 ENDDO !I=2,3
171 ENDDO !M=1,NUMELT
172 ENDIF !IF(NUMELT /= 0)
173 CALL ANCMSG(MSGID=336,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1,PRMOD=MSG_PRINT,C1='truss',C2='part')
174
175
176 !WARNING LAGRANGIAN PART CONNECTED TO EULERIAN PART
177
178 IF(JWARN == 1) THEN
179 CALL ANCMSG(MSGID=337,MSGTYPE=MSGWARNING, ANMODE=ANINFO)
180 ENDIF
181
182
183
184
185 IF(IALE /= 0)THEN !this subroutine alebcs is also now called even if IALE=0 and IEULER=1, this block was previously only treated if IALE /= 0
186 !-----------------------------------!
187 IF (FLAG_R2R > 0) THEN
188 DO N=1,NUMNOD
189 NALE(N) = NALE_R2R(N)*NALE(N)
190 END DO
191 ENDIF
192 !-----------------------------------!
193 ENDIF
194
195 RETURN
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)