OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
dim_s10edg.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!|| dim_s10edg ../starter/source/elements/solid/solide10/dim_s10edg.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||====================================================================
28 SUBROUTINE dim_s10edg(NEDG, IXS10 ,IPARG ,ITAGND)
29C=======================================================================
30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35C A n a l y s e M o d u l e
36C-----------------------------------------------
37#include "param_c.inc"
38#include "com01_c.inc"
39
40C-----------------------------------------------
41C D u m m y A r g u m e n t s
42C-----------------------------------------------
43 INTEGER NEDG,ITAGND(*)
44 INTEGER IXS10(6,*),IPARG(NPARG,NGROUP)
45C REAL
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "com04_c.inc"
50C-----------------------------------------------
51C L o c a l V a r i a b l e s
52C-----------------------------------------------
53 INTEGER I,J,NG, NEL, NFT,II, NF2, N, ITY,ISOLNOD,ISROT
54C REAL
55C-----------------------------------------------
56 nedg = 0
57 DO ng=1,ngroup
58 nel=iparg(2,ng)
59 nft=iparg(3,ng)
60 ity=iparg(5,ng)
61 isolnod = iparg(28,ng)
62 isrot = iparg(41,ng)
63 IF(isolnod == 10) isrot = iparg(74,ng)
64 IF(ity == 1.AND.isolnod == 10.AND.isrot == 2)THEN
65 nf2 = nft-numels8
66C
67 DO i=1,nel
68 ii = i+nf2
69 DO j = 1 , 6
70 n = ixs10(j,ii)
71 IF (n >0) THEN
72 IF (itagnd(n)==0) THEN
73 nedg = nedg + 1
74 itagnd(n)=nedg
75 END IF
76 END IF
77 ENDDO
78 ENDDO
79 END IF
80 ENDDO
81C
82 RETURN
83 END
84!||====================================================================
85!|| ind_s10edg ../starter/source/elements/solid/solide10/dim_s10edg.F
86!||--- called by ------------------------------------------------------
87!|| lectur ../starter/source/starter/lectur.f
88!||====================================================================
89 SUBROUTINE ind_s10edg(ICNDS10, IXS, IXS10 ,IPARG,ITAGND)
90C=======================================================================
91C-----------------------------------------------
92C I m p l i c i t T y p e s
93C-----------------------------------------------
94#include "implicit_f.inc"
95C-----------------------------------------------
96C A n a l y s e M o d u l e
97C-----------------------------------------------
98#include "param_c.inc"
99#include "com01_c.inc"
100
101C-----------------------------------------------
102C D u m m y A r g u m e n t s
103C-----------------------------------------------
104 INTEGER ITAGND(*)
105 INTEGER ICNDS10(3,*),IXS(NIXS,*),IXS10(6,*),IPARG(NPARG,*)
106C REAL
107C-----------------------------------------------
108C C o m m o n B l o c k s
109C-----------------------------------------------
110#include "com04_c.inc"
111C-----------------------------------------------
112C L o c a l V a r i a b l e s
113C-----------------------------------------------
114 INTEGER I,J,K,NG, NEL, NFT,NF1, NF2, N, ITY,ISOLNOD,ISROT,NC(4)
115 INTEGER IPERM1(6),IPERM2(6),N1,N2,NEDG,ND,II,JJ
116C REAL
117 DATA iperm1/1,2,3,1,2,3/
118 DATA iperm2/2,3,1,4,4,4/
119C-----------------------------------------------
120 nedg = 0
121 DO ng=1,ngroup
122 nel=iparg(2,ng)
123 nft=iparg(3,ng)
124 ity=iparg(5,ng)
125 isolnod = iparg(28,ng)
126 isrot = iparg(41,ng)
127 IF(isolnod == 10) isrot = iparg(74,ng)
128 IF(ity == 1.AND.isolnod == 10.AND.isrot == 2)THEN
129 nf1 = nft
130 nf2 = nft-numels8
131C
132 DO i=1,nel
133 ii = i + nf1
134 jj = i + nf2
135 nc(1) =ixs(2,ii)
136 nc(2) =ixs(4,ii)
137 nc(3) =ixs(7,ii)
138 nc(4) =ixs(6,ii)
139 DO j = 1 , 6
140 n = ixs10(j,jj)
141 IF (n >0) THEN
142 IF (itagnd(n)==0) THEN
143 nedg = nedg + 1
144 itagnd(n) = nedg
145 n1=iperm1(j)
146 n2=iperm2(j)
147 icnds10(1,nedg) = n
148 icnds10(2,nedg) = nc(n1)
149 icnds10(3,nedg) = nc(n2)
150 END IF
151 END IF
152 END DO
153 END DO
154 END IF
155 ENDDO
156 IF (nedg/=ns10e) THEN
157 print *,'error!!! NEDG,NS10EDG=',nedg,ns10e
158 END IF
159
160C ----- ITAGND : > 0 < NS10E : Id of ICNDS10 (Nd)
161C < 0 to be degenerated
162C > NS10E : to be tagged first and be degenerated after
163C
164 RETURN
165 END
166!||====================================================================
167!|| reord_icnd ../starter/source/elements/solid/solide10/dim_s10edg.F
168!||--- called by ------------------------------------------------------
169!|| lectur ../starter/source/starter/lectur.F
170!||====================================================================
171 SUBROUTINE reord_icnd(ICNDS10, ITAGND)
172C=======================================================================
173C-----------------------------------------------
174C I m p l i c i t T y p e s
175C-----------------------------------------------
176#include "implicit_f.inc"
177C-----------------------------------------------
178C D u m m y A r g u m e n t s
179C-----------------------------------------------
180 INTEGER ICNDS10(3,*), ITAGND(*)
181C REAL
182C-----------------------------------------------
183C C o m m o n B l o c k s
184C-----------------------------------------------
185#include "com04_c.inc"
186C-----------------------------------------------
187C L o c a l V a r i a b l e s
188C-----------------------------------------------
189 INTEGER I,J,ICND_CP(3,NS10E),IE,N
190C REAL
191C------reordering for P/ON----------------------------
192 icnd_cp(1:3,1:ns10e)=icnds10(1:3,1:ns10e)
193C
194 ie = 0
195 DO n= 1,numnod
196 IF (itagnd(n)>0) THEN
197 j = itagnd(n)
198 ie = ie + 1
199 icnds10(1:3,ie)=icnd_cp(1:3,j)
200 itagnd(n) = ie
201 END IF
202 END DO
203 IF (ie /= ns10e) print *,'Error of re-ordering in REORD_ICND',ie,ns10e
204C
205 RETURN
206 END
207!||====================================================================
208!|| remove_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
209!||--- called by ------------------------------------------------------
210!|| hm_read_grav ../starter/source/loads/general/grav/hm_read_grav.f
211!|| hm_read_rwall_cyl ../starter/source/constraints/general/rwall/hm_read_rwall_cyl.F
212!|| hm_read_rwall_lagmul ../starter/source/constraints/general/rwall/hm_read_rwall_lagmul.F
213!|| hm_read_rwall_paral ../starter/source/constraints/general/rwall/hm_read_rwall_paral.F
214!|| hm_read_rwall_plane ../starter/source/constraints/general/rwall/hm_read_rwall_plane.f
215!|| hm_read_rwall_spher ../starter/source/constraints/general/rwall/hm_read_rwall_spher.F
216!|| hm_read_rwall_therm ../starter/source/constraints/general/rwall/hm_read_rwall_therm.F
217!||====================================================================
218 SUBROUTINE remove_nd(NN, INN, ITAGND)
219C=======================================================================
220C-----------------------------------------------
221C I m p l i c i t T y p e s
222C-----------------------------------------------
223#include "implicit_f.inc"
224C-----------------------------------------------
225C D u m m y A r g u m e n t s
226C-----------------------------------------------
227 INTEGER NN, INN(*), ITAGND(*)
228C-----------------------------------------------
229C L o c a l V a r i a b l e s
230C-----------------------------------------------
231 INTEGER I,J,NG, NEL, NFT,NF1, NF2, N,ND
232C REAL
233C------remove tagged nodes in INN(*)----------------------------
234 nd = 0
235 DO i=1,nn
236 n = inn(i)
237 IF (itagnd(n) ==0 ) THEN
238 nd = nd + 1
239 inn(nd) =inn(i)
240 END IF
241 ENDDO
242C
243 nn = nd
244C
245 RETURN
246 END
247!||====================================================================
248!|| remdeg_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
249!||====================================================================
250 SUBROUTINE remdeg_nd(NN, INN, ITAGND)
251C=======================================================================
252C-----------------------------------------------
253C I m p l i c i t T y p e s
254C-----------------------------------------------
255#include "implicit_f.inc"
256C-----------------------------------------------
257C D u m m y A r g u m e n t s
258C-----------------------------------------------
259 INTEGER NN, INN(*), ITAGND(*)
260C-----------------------------------------------
261C L o c a l V a r i a b l e s
262C-----------------------------------------------
263 INTEGER I,J,NG, NEL, NFT,NF1, NF2, N,ND
264C REAL
265C------remove tagged nodes in INN(*) and will be degenerated-----------
266 nd = 0
267 DO i=1,nn
268 n = inn(i)
269 IF (itagnd(n) ==0 ) THEN
270 nd = nd + 1
271 inn(nd) =inn(i)
272 ELSEIF (itagnd(n) >0 ) THEN
273 itagnd(n) = -itagnd(n)
274 END IF
275 ENDDO
276C
277 nn = nd
278C
279 RETURN
280 END
281!||====================================================================
282!|| rigmodif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
283!||--- called by ------------------------------------------------------
284!|| hm_read_rbody ../starter/source/constraints/general/rbody/hm_read_rbody.F
285!||--- calls -----------------------------------------------------
286!|| ancmsg ../starter/source/output/message/message.F
287!|| intab ../starter/source/interfaces/inter3d1/i24tools.F
288!||--- uses -----------------------------------------------------
289!|| message_mod ../starter/share/message_module/message_mod.f
290!||====================================================================
291 SUBROUTINE rigmodif_nd(NN, INN, ITAGND,ICNDS10,IU,TITR,ITAB)
292C=======================================================================
293 USE message_mod
294C-----------------------------------------------
295C I m p l i c i t T y p e s
296C-----------------------------------------------
297#include "implicit_f.inc"
298C-----------------------------------------------
299C C o m m o n B l o c k s
300C-----------------------------------------------
301#include "com04_c.inc"
302#include "scr03_c.inc"
303C-----------------------------------------------
304C D u m m y A r g u m e n t s
305C-----------------------------------------------
306 INTEGER NN, INN(*), ITAGND(*),ICNDS10(3,*),IU,ITAB(*)
307 CHARACTER TITR*(*)
308C REAL
309C-----------------------------------------------
310C External function
311C-----------------------------------------------
312 LOGICAL INTAB
313 EXTERNAL intab
314C-----------------------------------------------
315C L o c a l V a r i a b l e s
316C-----------------------------------------------
317 INTEGER I,J,NG, NEL, NFT,NF1, NF2, N,ND,N1,N2,NNEW,ID,IER1,IER2
318 LOGICAL IS1,IS2
319C REAL
320C------treatment for tagged nodes in INN(*) first passe-
321C----- IER >0 warning; <0 error out
322C--- 1: (1,nd,2) are in Rbody, nd will be removed from Rbody
323C--- 2: (1,nd) or (2,nd) are in Rbody, nd will be removed from Rbody
324C--- -1: nd alone is in Rbody
325 nnew = 0
326 ier1 = 0
327 ier2 = 0
328 DO i=1,nn
329 n = inn(i)
330 IF (itagnd(n) /=0 ) THEN
331 id = iabs(itagnd(n))
332 nd = icnds10(1,id)
333 n1 = icnds10(2,id)
334 n2 = icnds10(3,id)
335 is1 = intab(nn,inn,n1)
336 is2 = intab(nn,inn,n2)
337 IF (is1.AND.is2) THEN
338C----removed from INN and degenerating in 2nd passe----------
339 itagnd(n) = itagnd(n) + ns10e
340 nnew = nnew + 1
341 inn(nnew) =inn(i)
342 ier1 =1
343 IF (ipri>=5)
344 . CALL ancmsg(msgid=1213,
345 . msgtype=msginfo,
346 . anmode=aninfo_blind_1,
347 . c1='RIGID BODY ',
348 . i1=itab(nd),
349 . prmod=msg_cumu)
350 ELSEIF (.NOT.(is1).AND..NOT.(is2)) THEN
351C----error out ND is along in RB
352 CALL ancmsg(msgid=1216,
353 . msgtype=msgerror,
354 . anmode=aninfo_blind_1,
355 . i1=itab(nd),
356 . c1='RIGID BODY ',
357 . i2=iu,
358 . c2='RIGID BODY ')
359 ELSE
360C----removed from INN directly----------
361 ier2 =1
362 IF (ipri>=5)
363 . CALL ancmsg(msgid=1210,
364 . msgtype=msginfo,
365 . anmode=aninfo_blind_1,
366 . c1='RIGID BODY ',
367 . i1=itab(nd),
368 . prmod=msg_cumu)
369 END IF
370 ELSE
371 nnew = nnew + 1
372 inn(nnew) =inn(i)
373 END IF
374 ENDDO
375C
376 nn = nnew
377 IF (ier1 >0.AND.ipri>=5) THEN
378 CALL ancmsg(msgid=1213,
379 . msgtype=msginfo,
380 . anmode=aninfo_blind_1,
381 . c1='RIGID BODY ',
382 . c2='RIGID BODY ',
383 . i1=iu,
384 . prmod=msg_print)
385 END IF
386 IF (ier2 >0.AND.ipri>=5) THEN
387 CALL ancmsg(msgid=1210,
388 . msgtype=msginfo,
389 . anmode=aninfo_blind_1,
390 . c1='RIGID BODY ',
391 . c2='RIGID BODY ',
392 . i1=iu,
393 . prmod=msg_print)
394 END IF
395 RETURN
396 END
397!||====================================================================
398!|| rigmodif1_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
399!||--- called by ------------------------------------------------------
400!|| lectur ../starter/source/starter/lectur.F
401!||====================================================================
402 SUBROUTINE rigmodif1_nd(NPBY,LPBY,ITAGND)
403C=======================================================================
404C-----------------------------------------------
405C I m p l i c i t T y p e s
406C-----------------------------------------------
407#include "implicit_f.inc"
408C-----------------------------------------------
409C C o m m o n B l o c k s
410C-----------------------------------------------
411#include "com04_c.inc"
412#include "param_c.inc"
413C-----------------------------------------------
414C D u m m y A r g u m e n t s
415C-----------------------------------------------
416 INTEGER NPBY(NNPBY,*), LPBY(*) ,ITAGND(*)
417C REAL
418C-----------------------------------------------
419C L o c a l V a r i a b l e s
420C-----------------------------------------------
421 INTEGER I,J,N,K,KK,NSL,NSL_N,K_N,NN
422C REAL
423C------removing Nd from LPBY(*)--degenerating--
424 k = 0
425 k_n = 0
426 DO n = 1, nrbykin
427 nsl=npby(2,n)
428 nsl_n = 0
429 DO kk = 1, nsl
430 nn = lpby(k+kk)
431 IF(itagnd(nn)>ns10e)THEN
432 itagnd(nn) = -(itagnd(nn)-ns10e)
433 ELSE
434 nsl_n = nsl_n + 1
435 lpby(k_n+nsl_n) =nn
436 END IF
437 ENDDO
438 k = k + nsl
439 k_n = k_n + nsl_n
440 npby(2,n) = nsl_n
441 ENDDO
442C
443 RETURN
444 END
445!||====================================================================
446!|| rbe2modif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
447!||--- called by ------------------------------------------------------
448!|| hm_read_rbe2 ../starter/source/constraints/general/rbe2/hm_read_rbe2.F
449!||--- calls -----------------------------------------------------
450!|| ancmsg ../starter/source/output/message/message.F
451!|| intab ../starter/source/interfaces/inter3d1/i24tools.F
452!||--- uses -----------------------------------------------------
453!|| message_mod ../starter/share/message_module/message_mod.F
454!||====================================================================
455 SUBROUTINE rbe2modif_nd(NN, INN, ITAGND,ICNDS10,IU,ITAB,ITAGM,M,ITAGIC)
456C=======================================================================
457 USE message_mod
458C-----------------------------------------------
459C I m p l i c i t T y p e s
460C-----------------------------------------------
461#include "implicit_f.inc"
462C-----------------------------------------------
463C D u m m y A r g u m e n t s
464C-----------------------------------------------
465 INTEGER NN, INN(*), ITAGND(*),ICNDS10(3,*),ITAGM(*),IU,ITAB(*),
466 . M,ITAGIC(*)
467C REAL
468C-----------------------------------------------
469C External function
470C-----------------------------------------------
471 LOGICAL INTAB
472 EXTERNAL intab
473C-----------------------------------------------
474C C o m m o n B l o c k s
475C-----------------------------------------------
476#include "com04_c.inc"
477#include "scr03_c.inc"
478C-----------------------------------------------
479C L o c a l V a r i a b l e s
480C-----------------------------------------------
481 INTEGER I,J,NG, NEL, NFT,NF1, NF2, N,ND,N1,N2,NNEW,IER1,ID,IER2,M_1,M_2
482 LOGICAL IS1,IS2
483C REAL
484C----- IER >0 warning; <0 error out
485C--- 1: (1,nd,2) are in RBE2, nd will be removed from RBE2
486C--- 2: (1,nd) or (2,nd) are in RBE2, nd will be removed from RBE2
487C--- -1: nd alone is in RBE2
488C--- -2: RBE2 has partial dof
489C------treatment for tagged nodes in INN(*)---ICPAT=1: partial dof------------
490 nnew = 0
491 ier1 = 0
492 ier2 = 0
493C----Allow only +2 Hierarchy levers
494 m_1= itagm(m)
495 IF (m_1==0) THEN
496 m_2=0
497 ELSE
498 m_2= itagm(m_1)
499 END IF
500 DO i=1,nn
501 n = inn(i)
502C---- ITAGND(N) > NS10E due the same N defined in sereval RBE2 (per dof)
503 IF (itagnd(n) > ns10e) THEN
504C---- removed in the 2nd passe
505 nnew = nnew + 1
506 inn(nnew) =inn(i)
507 ELSEIF (itagnd(n) /=0 ) THEN
508 id = iabs(itagnd(n))
509 nd = icnds10(1,id)
510 n1 = icnds10(2,id)
511 n2 = icnds10(3,id)
512 IF (n1==m.OR.n1==m_1.OR.n1==m_2) THEN
513 is1 = .true.
514 ELSEIF (itagm(n1)==0) THEN
515 is1 = .false.
516 ELSEIF (itagm(n1)==m.OR.itagm(n1)==m_1.OR.itagm(n1)==m_2) THEN
517 IF (itagic(n1)==itagic(nd)) THEN
518 is1 = .true.
519 ELSE
520 is1 = .false.
521 END IF
522 ELSE
523 is1 = .false.
524 END IF
525C
526 IF (n2==m.OR.n2==m_1.OR.n2==m_2) THEN
527 is2 = .true.
528 ELSEIF (itagm(n2)==0) THEN
529 is2 = .false.
530 ELSEIF (itagm(n2)==m.OR.itagm(n2)==m_1.OR.itagm(n2)==m_2) THEN
531 IF (itagic(n2)==itagic(nd)) THEN
532 is2 = .true.
533 ELSE
534C------!!!!add detail for message
535 is2 = .false.
536 END IF
537 ELSE
538 is2 = .false.
539 END IF
540 IF (is1.AND.is2) THEN
541C----degenerating in 2nd passe------ and removed from RBE2 in 2nd passe
542 nnew = nnew + 1
543 inn(nnew) =inn(i)
544 itagnd(n) = itagnd(n) + ns10e
545 ier1 = 1
546 IF (ipri>=5)
547 . CALL ancmsg(msgid=1213,
548 . msgtype=msginfo,
549 . anmode=aninfo_blind_1,
550 . i1=itab(nd),
551 . c1='RBE2 ',
552 . prmod=msg_cumu)
553 ELSEIF (.NOT.(is1).AND..NOT.(is2)) THEN
554C----error out ND is along in RBE2
555 CALL ancmsg(msgid=1216,
556 . msgtype=msgerror,
557 . anmode=aninfo_blind_1,
558 . i1=itab(nd),
559 . c1='RBE2 ',
560 . i2=iu,
561 . c2='RBE2 ')
562 ELSE
563C----remove Nd from RBE2 directly
564 ier2 = 1
565 IF (ipri>=5)
566 . CALL ancmsg(msgid=1210,
567 . msgtype=msginfo,
568 . anmode=aninfo_blind_1,
569 . c1='RBE2 ',
570 . i1=itab(nd),
571 . prmod=msg_cumu)
572 END IF
573 ELSE
574 nnew = nnew + 1
575 inn(nnew) =inn(i)
576 END IF !IF (ITAGND(N) /=0 )
577 ENDDO
578C
579 nn = nnew
580 IF (ier1 >0.AND.ipri>=5) THEN
581 CALL ancmsg(msgid=1213,
582 . msgtype=msginfo,
583 . anmode=aninfo_blind_1,
584 . c1='RBE2 ',
585 . c2='RBE2 ',
586 . i1=iu,
587 . prmod=msg_print)
588 END IF
589 IF (ier2 >0.AND.ipri>=5) THEN
590 CALL ancmsg(msgid=1210,
591 . msgtype=msginfo,
592 . anmode=aninfo_blind_1,
593 . c1='RBE2 ',
594 . c2='RBE2 ',
595 . i1=iu,
596 . prmod=msg_print)
597 END IF
598C
599 RETURN
600 END
601!||====================================================================
602!|| rbe2modif1_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
603!||--- called by ------------------------------------------------------
604!|| lectur ../starter/source/starter/lectur.F
605!||--- uses -----------------------------------------------------
606!|| message_mod ../starter/share/message_module/message_mod.F
607!||====================================================================
608 SUBROUTINE rbe2modif1_nd(IRBE2,LRBE2,ITAGND)
609C=======================================================================
610 USE message_mod
611C-----------------------------------------------
612C I m p l i c i t T y p e s
613C-----------------------------------------------
614#include "implicit_f.inc"
615C-----------------------------------------------
616C C o m m o n B l o c k s
617C-----------------------------------------------
618#include "com04_c.inc"
619#include "param_c.inc"
620C-----------------------------------------------
621C D u m m y A r g u m e n t s
622C-----------------------------------------------
623 INTEGER IRBE2(NRBE2L,*), LRBE2(*), ITAGND(*)
624C REAL
625C-----------------------------------------------
626C L o c a l V a r i a b l e s
627C-----------------------------------------------
628 INTEGER I,J,N,K,KK,NSL,NSL_N,K_N,NS
629 INTEGER ITAG(NUMNOD)
630C REAL
631C-----
632 IF (nrbe2==0) RETURN
633 itag(1:numnod) = itagnd(1:numnod)
634 DO i = 1, nrbe2
635 nsl = irbe2(5,i)
636 k = irbe2(1,i)
637 nsl_n = 0
638 DO j = 1, nsl
639 ns = lrbe2(k+j)
640 IF(itag(ns)>ns10e)THEN
641 IF(itagnd(ns)>ns10e) itagnd(ns) = -(itagnd(ns)-ns10e)
642 ELSE
643 nsl_n = nsl_n + 1
644 lrbe2(k+nsl_n) =ns
645 END IF
646 ENDDO
647 irbe2(5,i) = nsl_n
648 ENDDO
649C
650 RETURN
651 END
652!||====================================================================
653!|| bcsmodif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
654!||--- called by ------------------------------------------------------
655!|| lectur ../starter/source/starter/lectur.F
656!||--- calls -----------------------------------------------------
657!|| ancmsg ../starter/source/output/message/message.F
658!||--- uses -----------------------------------------------------
659!|| message_mod ../starter/share/message_module/message_mod.F
660!||====================================================================
661 SUBROUTINE bcsmodif_nd(ICODE, ITAGND,ICNDS10,ITAB)
662C=======================================================================
663 USE message_mod
664C-----------------------------------------------
665C I m p l i c i t T y p e s
666C-----------------------------------------------
667#include "implicit_f.inc"
668C-----------------------------------------------
669C D u m m y A r g u m e n t s
670C-----------------------------------------------
671 INTEGER ICODE(*), ITAGND(*),ICNDS10(3,*),ITAB(*)
672C REAL
673C-----------------------------------------------
674C C o m m o n B l o c k s
675C-----------------------------------------------
676#include "com04_c.inc"
677#include "scr03_c.inc"
678C-----------------------------------------------
679C L o c a l V a r i a b l e s
680C-----------------------------------------------
681 INTEGER I,J,NG, NEL, NFT,NF1, NF2, N,ND,N1,N2,ID,IPR
682 INTEGER IS1,IS2,ISMIN
683C REAL
684C------treatment for /BCS ----------------------------
685 ipr = 0
686 DO n=1,numnod
687 IF (icode(n)>0 .AND. itagnd(n) /=0 ) THEN
688 id = iabs(itagnd(n))
689 nd = icnds10(1,id)
690 n1 = icnds10(2,id)
691 n2 = icnds10(3,id)
692 is1 = icode(n1)
693 is2 = icode(n2)
694 ismin = min(is1,is2)
695 IF (is1/=icode(n).AND.is2/=icode(n).AND.ismin<icode(n)) THEN
696C----error out ND has more /BCS than edge node
697 CALL ancmsg(msgid=1208,
698 . msgtype=msgerror,
699 . anmode=aninfo_blind_1,
700 . i1=itab(nd),
701 . c1='boundary conditions ',
702 . C2='boundary conditions')
703 ELSE
704C----remove Nd from /BCS +degenerating
705 ICODE(N) = 0
706 IPR = 1
707 IF (ITAGND(N)>0)ITAGND(N) = -ITAGND(N)
708 IF (IPRI>=5)
709 . CALL ANCMSG(MSGID=1207,
710 . MSGTYPE=MSGINFO,
711 . ANMODE=ANINFO_BLIND_1,
712 . I1=ITAB(ND),
713 . PRMOD=MSG_CUMU)
714 END IF
715 END IF
716 ENDDO
717.AND. IF (IPR >0IPRI>=5) THEN
718 CALL ANCMSG(MSGID=1207,
719 . MSGTYPE=MSGINFO,
720 . ANMODE=ANINFO_BLIND_1,
721 . C1='boundary conditions ',
722 . C2='boundary conditions',
723 . PRMOD=MSG_PRINT)
724 END IF
725C
726 RETURN
727 END
728!||====================================================================
729!|| fixmodif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
730!||--- called by ------------------------------------------------------
731!|| lectur ../starter/source/starter/lectur.F
732!||--- calls -----------------------------------------------------
733!|| ancmsg ../starter/source/output/message/message.F
734!|| samefvid ../starter/source/elements/solid/solide10/dim_s10edg.F
735!||--- uses -----------------------------------------------------
736!|| message_mod ../starter/share/message_module/message_mod.F
737!||====================================================================
738 SUBROUTINE FIXMODIF_ND(IBFV, ITAGND,ICNDS10,ITAB)
739C=======================================================================
740 USE MESSAGE_MOD
741C-----------------------------------------------
742C I m p l i c i t T y p e s
743C-----------------------------------------------
744#include "implicit_f.inc"
745C-----------------------------------------------
746C C o m m o n B l o c k s
747C-----------------------------------------------
748#include "param_c.inc"
749#include "com04_c.inc"
750#include "scr03_c.inc"
751C-----------------------------------------------
752C D u m m y A r g u m e n t s
753C-----------------------------------------------
754 INTEGER IBFV(NIFV,*), ITAGND(*),ICNDS10(3,*),ITAB(*)
755C REAL
756C-----------------------------------------------
757C L o c a l V a r i a b l e s
758C-----------------------------------------------
759 INTEGER I,J,NG, NEL, DIR, N,ND,N1,N2,K,ID,IPR
760 LOGICAL IS1,IS2
761C-----------------------------------------------
762C External function
763C-----------------------------------------------
764 LOGICAL SAMEFVID
765 EXTERNAL SAMEFVID
766C REAL
767C------treatment for tagged nodes in INN(*)----------------------------
768 IPR = 0
769 DO I=1,NFXVEL
770 N = IABS(IBFV(1,I))
771 K = IBFV(12,I)
772 IF (ITAGND(N) /=0 ) THEN
773 ID = IABS(ITAGND(N))
774 ND = ICNDS10(1,ID)
775 N1 = ICNDS10(2,ID)
776 N2 = ICNDS10(3,ID)
777C--------quadratic, but---
778 IS1 = SAMEFVID(K,IBFV,N1)
779 IS2 = SAMEFVID(K,IBFV,N2)
780c IF (IS1.AND.IS2) THEN
781C----remove Nd from ICNDS10
782c ITAGND(N) = ITAGND(N) + NS10E
783.NOT..AND..NOT. IF ((IS1)(IS2)) THEN
784C----error out ND is along in FV
785 CALL ANCMSG(MSGID=1208,
786 . MSGTYPE=MSGERROR,
787 . ANMODE=ANINFO_BLIND_1,
788 . I1=ITAB(ND),
789 . C1='imposed vel/disp/acc ',
790 . C2='imposed vel/disp/acc')
791 ELSE
792C----remove Nd from FV and warning out-- will be done in ddsplit
793 IPR = 1
794 IF (IBFV(3,I)>0) IBFV(3,I) = -IBFV(3,I)
795 IF (ITAGND(N)>0)ITAGND(N) = -ITAGND(N)
796 IF (IPRI>=5)
797 . CALL ANCMSG(MSGID=1207,
798 . MSGTYPE=MSGINFO,
799 . ANMODE=ANINFO_BLIND_1,
800 . I1=ITAB(ND),
801 . PRMOD=MSG_CUMU)
802 END IF
803 END IF
804 ENDDO
805C
806.AND. IF (IPR >0IPRI>=5) THEN
807 CALL ANCMSG(MSGID=1207,
808 . MSGTYPE=MSGINFO,
809 . ANMODE=ANINFO_BLIND_1,
810 . C1='imposed vel/disp/acc',
811 . C2='imposed vel/disp/acc',
812 . PRMOD=MSG_PRINT)
813 END IF
814C
815 RETURN
816 END
817!||====================================================================
818!|| samefvid ../starter/source/elements/solid/solide10/dim_s10edg.F
819!||--- called by ------------------------------------------------------
820!|| fixmodif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
821!||====================================================================
822 LOGICAL FUNCTION SAMEFVID(ID,IBFV,N)
823C----6---------------------------------------------------------------7---------8
824C I m p l i c i t T y p e s
825C-----------------------------------------------
826#include "implicit_f.inc"
827C-----------------------------------------------
828C C o m m o n B l o c k s
829C-----------------------------------------------
830#include "param_c.inc"
831#include "com04_c.inc"
832C-----------------------------------------------------------------
833C D u m m y A r g u m e n t s
834C-----------------------------------------------
835 INTEGER ID,IBFV(NIFV,*),N
836C-----------------------------------------------
837C L o c a l V a r i a b l e s
838C-----------------------------------------------
839 INTEGER I,J,NI,K
840C----6---------------------------------------------------------------7---------8
841 SAMEFVID=.FALSE.
842 DO I =1,NFXVEL
843 NI = IABS(IBFV(1,I))
844 IF (NI==N) THEN
845 K = IBFV(12,I)
846 IF (K==ID) SAMEFVID=.TRUE.
847 RETURN
848 ENDIF
849 ENDDO
850C
851 RETURN
852 END
853!||====================================================================
854!|| int2modif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
855!||--- called by ------------------------------------------------------
856!|| inintr2 ../starter/source/interfaces/inter3d1/inintr2.F
857!||--- calls -----------------------------------------------------
858!|| ancmsg ../starter/source/output/message/message.F
859!|| intab ../starter/source/interfaces/inter3d1/i24tools.F
860!||--- uses -----------------------------------------------------
861!|| message_mod ../starter/share/message_module/message_mod.F
862!||====================================================================
863 SUBROUTINE INT2MODIF_ND(IPARI,INTBUF_TAB,ITAGND,ICNDS10,ITAB)
864C-----------------------------------------------
865C M o d u l e s
866C-----------------------------------------------
867 USE MESSAGE_MOD
868 USE INTBUFDEF_MOD
869 USE NAMES_AND_TITLES_MOD , ONLY : NCHARTITLE
870C-----------------------------------------------
871C I m p l i c i t T y p e s
872C-----------------------------------------------
873#include "implicit_f.inc"
874C-----------------------------------------------
875C C o m m o n B l o c k s
876C-----------------------------------------------
877#include "param_c.inc"
878#include "com04_c.inc"
879#include "scr03_c.inc"
880C-----------------------------------------------
881C D u m m y A r g u m e n t s
882C-----------------------------------------------
883 INTEGER IPARI(NPARI,NINTER),ITAGND(*),ITAB(*),ICNDS10(3,*)
884 TYPE(INTBUF_STRUCT_), DIMENSION(NINTER) :: INTBUF_TAB
885C-----------------------------------------------
886C External function
887C-----------------------------------------------
888 LOGICAL INTAB
889 EXTERNAL INTAB
890C-----------------------------------------------
891C L o c a l V a r i a b l e s
892C-----------------------------------------------
893 INTEGER I,J,N,NTY,NSN,NMN,ISL,NKIN,NOINT,IMODI,II,N1,N2,ND
894 INTEGER K,ILEV,NUVAR,IDEL7N,INTTH,IPR,IML,ICOM
895 INTEGER, DIMENSION(NUMNOD) :: ITAGS,ITAGMD
896 CHARACTER(LEN=NCHARTITLE):: TITR
897 LOGICAL IS1,IS2,ISD
898C=======================================================================
899C--------done before : switch to penalty if only ND is secnd (N1,N2 not)
900C-----------NOT necessary after tests---------------
901c DO N=1,NINTER
902c NTY = IPARI(7,N)
903c IF (NTY == 2 ) THEN
904c NSN = IPARI(5,N)
905c NOINT = IPARI(15,N)
906c IPR = 0
907c DO I=1,NS10E
908c ND = ICNDS10(1,I)
909c N1 = ICNDS10(2,I)
910c N2 = ICNDS10(3,I)
911c IF (ITAGND(ND)>NS10E) CYCLE
912c ISD = INTAB(NSN,INTBUF_TAB(N)%NSV,ND)
913c IF (.NOT.(ISD)) THEN
914c IS1 = INTAB(NSN,INTBUF_TAB(N)%NSV,N1)
915c IF (IS1) THEN
916c IS2 = INTAB(NSN,INTBUF_TAB(N)%NSV,N2)
917c IF (IS2.AND.ITAGND(ND)>0) THEN
918c ITAGND(ND)=-ITAGND(ND)
919c IPR = IPR +1
920c CALL ANCMSG(MSGID=1212,
921c . MSGTYPE=MSGWARNING,
922c . ANMODE=ANINFO_BLIND_1,
923c . I1=ITAB(ND),
924c . I2=ITAB(N1),
925c . I3=ITAB(N2),
926c . PRMOD=MSG_CUMU)
927c END IF
928c END IF
929c END IF
930c END DO
931c IF (IPR >0) THEN
932c CALL ANCMSG(MSGID=1212,
933c . MSGTYPE=MSGWARNING,
934c . ANMODE=ANINFO_BLIND_1,
935c . I1=NOINT,
936c . PRMOD=MSG_PRINT)
937c END IF
938c END IF !(NTY == 2 ) THEN
939c END DO
940C--error out in case N1,N2 are S of int2 (kinematic)and Nd is M or S (/w penality)
941 ITAGMD(1:NUMNOD) = 0
942 ITAGS(1:NUMNOD) = 0
943 DO N=1,NINTER
944 NTY = IPARI(7,N)
945 IF (NTY == 2 ) THEN
946 NMN =IPARI(6,N)
947 NSN = IPARI(5,N)
948 ILEV = IPARI(20,N)
949 NOINT = IPARI(15,N)
950.or. IF (ILEV <= 5 ILEV == 30) THEN
951 DO I=1,NSN
952 ISL = INTBUF_TAB(N)%NSV(I)
953 IF (ITAGS(ISL)==0) ITAGS(ISL)=NOINT
954 END DO
955 END IF
956 END IF
957 END DO
958C
959 DO I = 1, NS10E
960 N = IABS(ICNDS10(1,I))
961 ITAGMD(N) = I
962 END DO
963 DO N=1,NINTER
964 NTY = IPARI(7,N)
965 ILEV = IPARI(20,N)
966 IF (NTY == 2 ) THEN
967 NMN =IPARI(6,N)
968 DO I=1,NMN
969 IML = INTBUF_TAB(N)%MSR(I)
970 IF (ITAGMD(IML)>0) ITAGMD(IML) = ITAGMD(IML) + NS10E
971 ENDDO
972 NSN = IPARI(5,N)
973.or. IF (ILEV == 27 ILEV == 28) THEN
974 DO I=1,NSN
975 ISL = INTBUF_TAB(N)%NSV(I)
976.AND. IF (ITAGMD(ISL)>0 INTBUF_TAB(N)%IRUPT(I) == 1) ITAGMD(IML)=-ITAGMD(ISL)
977 ENDDO
978.or. ELSEIF (ILEV == 25 ILEV == 26) THEN
979 DO I=1,NSN
980 ISL = INTBUF_TAB(N)%NSV(I)
981 IF (ITAGMD(ISL)>0 ) ITAGMD(IML)=-ITAGMD(ISL)
982 ENDDO
983 END IF
984 END IF
985 END DO
986C
987 ICOM = 0
988 ISL=0
989 NOINT =0
990 DO I = 1, NS10E
991 N = IABS(ICNDS10(1,I))
992 N1 = ICNDS10(2,I)
993 N2 = ICNDS10(3,I)
994.OR. IF (ITAGMD(N)>NS10EITAGMD(N)<0) THEN
995.OR. IF (ITAGS(N1)>0ITAGS(N2)>0) THEN
996 ICOM=ICOM+1
997 IF (ITAGS(N1)>0) ITAGS(N1)=-ITAGS(N1)
998 IF (ITAGS(N2)>0) ITAGS(N2)=-ITAGS(N2)
999 IF (ISL==0) ISL = N
1000.AND. IF (NOINT==0ITAGS(N1)<0)NOINT = -ITAGS(N1)
1001.AND. IF (NOINT==0ITAGS(N2)<0)NOINT = -ITAGS(N2)
1002 END IF
1003 END IF
1004 END DO
1005 IF (ICOM>0) THEN
1006 CALL ANCMSG(MSGID=1638,
1007 . MSGTYPE=MSGERROR,
1008 . ANMODE=ANINFO_BLIND_1,
1009 . I1=ICOM,
1010 . I2=ITAB(ISL),
1011 . I3=NOINT,
1012 . I4=NOINT)
1013 END IF
1014C
1015 DO N=1,NINTER
1016 NTY = IPARI(7,N)
1017 ILEV = IPARI(20,N)
1018 IF (NTY == 2 ) THEN
1019 NSN = IPARI(5,N)
1020 NOINT = IPARI(15,N)
1021 IMODI = 0
1022 IPR = 0
1023.or. IF (ILEV == 25 ILEV == 26) THEN
1024.or. ELSEIF (ILEV == 27 ILEV == 28) THEN
1025 DO I=1,NSN
1026 ISL = INTBUF_TAB(N)%NSV(I)
1027.AND. IF (ITAGND(ISL)/=0 INTBUF_TAB(N)%IRUPT(I) /= 1)THEN
1028 INTBUF_TAB(N)%NSV(I) = -ISL
1029 IF (ITAGND(ISL)>0 ) ITAGND(ISL) = -ITAGND(ISL)
1030 IMODI = IMODI + 1
1031 END IF
1032 ENDDO
1033 ELSE
1034 DO I=1,NSN
1035 ISL = INTBUF_TAB(N)%NSV(I)
1036 IF (ITAGND(ISL)/=0 )THEN
1037 INTBUF_TAB(N)%NSV(I) = -ISL
1038 IF (ITAGND(ISL)>0 ) ITAGND(ISL) = -ITAGND(ISL)
1039 IMODI = IMODI + 1
1040 END IF
1041 ENDDO
1042 END IF
1043C-----------------------------------------------
1044C Compact INT,REAL BUFFER
1045C-----------------------------------------------
1046 IF (IMODI > 0 ) THEN
1047 IDEL7N = IPARI(17,N)
1048 NUVAR = IPARI(35,N)
1049 INTTH = IPARI(47,N)
1050 II = 0
1051 DO I = 1,NSN
1052 IF (INTBUF_TAB(N)%NSV(I) > 0) THEN
1053 II = II+1
1054 INTBUF_TAB(N)%NSV(II) = INTBUF_TAB(N)%NSV(I)
1055 INTBUF_TAB(N)%IRTLM(II) = INTBUF_TAB(N)%IRTLM(I)
1056.AND..OR..OR. IF ((ILEV >= 10ILEV <= 22)ILEV == 27ILEV == 28) THEN
1057 INTBUF_TAB(N)%IRUPT(II) = INTBUF_TAB(N)%IRUPT(I)
1058 END IF
1059 INTBUF_TAB(N)%CSTS(1+2*(II-1)) = INTBUF_TAB(N)%CSTS(1+2*(I-1))
1060 INTBUF_TAB(N)%CSTS(1+2*(II-1)+1) = INTBUF_TAB(N)%CSTS(1+2*(I-1)+1)
1061 INTBUF_TAB(N)%DPARA(1+7*(II-1)) = INTBUF_TAB(N)%DPARA(1+7*(I-1))
1062 INTBUF_TAB(N)%DPARA(1+7*(II-1)+1) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+1)
1063 INTBUF_TAB(N)%DPARA(1+7*(II-1)+2) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+2)
1064 INTBUF_TAB(N)%DPARA(1+7*(II-1)+3) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+3)
1065 INTBUF_TAB(N)%DPARA(1+7*(II-1)+4) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+4)
1066 INTBUF_TAB(N)%DPARA(1+7*(II-1)+5) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+5)
1067 INTBUF_TAB(N)%DPARA(1+7*(II-1)+6) = INTBUF_TAB(N)%DPARA(1+7*(I-1)+6)
1068 IF (IDEL7N /= 0)THEN
1069 INTBUF_TAB(N)%SMAS(II) = INTBUF_TAB(N)%SMAS(I)
1070 INTBUF_TAB(N)%SINER(II) = INTBUF_TAB(N)%SINER(I)
1071 END IF
1072.AND..OR. IF ((ILEV>=10 ILEV<=22 ) INTTH > 0) THEN
1073 INTBUF_TAB(N)%AREAS2(II) = INTBUF_TAB(N)%AREAS2(I)
1074 DO K = 0,NUVAR-1
1075 INTBUF_TAB(N)%UVAR(1+NUVAR*(II-1)+K) =
1076 . INTBUF_TAB(N)%UVAR(1+NUVAR*(I-1)+K)
1077 ENDDO
1078 END IF
1079.AND..OR..AND. IF (( ILEV>=10 ILEV<=12)( ILEV>=20 ILEV<=22)) THEN
1080 INTBUF_TAB(N)%SMAS(II) = INTBUF_TAB(N)%SMAS(I)
1081 INTBUF_TAB(N)%SINER(II) = INTBUF_TAB(N)%SINER(I)
1082 DO K = 0,NUVAR-1
1083 INTBUF_TAB(N)%UVAR(1+NUVAR*(II-1)+K) =
1084 . INTBUF_TAB(N)%UVAR(1+NUVAR*(I-1)+K)
1085 ENDDO
1086 DO K = 0,2
1087 INTBUF_TAB(N)%XM0(1+3*(II-1)+K) = INTBUF_TAB(N)%XM0(1+3*(I-1)+K)
1088 INTBUF_TAB(N)%DSM(1+3*(II-1)+K) = INTBUF_TAB(N)%DSM(1+3*(I-1)+K)
1089 INTBUF_TAB(N)%FSM(1+3*(II-1)+K) = INTBUF_TAB(N)%FSM(1+3*(I-1)+K)
1090 ENDDO
1091.OR. ELSEIF (ILEV==27 ILEV==28) THEN
1092 INTBUF_TAB(N)%SMAS(II) = INTBUF_TAB(N)%SMAS(I)
1093 INTBUF_TAB(N)%SINER(II) = INTBUF_TAB(N)%SINER(I)
1094 INTBUF_TAB(N)%SPENALTY(II) = INTBUF_TAB(N)%SPENALTY(I)
1095 INTBUF_TAB(N)%STFR_PENALTY(II) = INTBUF_TAB(N)%STFR_PENALTY(I)
1096 DO K = 0,8
1097 INTBUF_TAB(N)%SKEW(1+9*(II-1)+K) = INTBUF_TAB(N)%SKEW(1+9*(I-1)+K)
1098 ENDDO
1099 DO K = 0,2
1100 INTBUF_TAB(N)%DSM(1+3*(II-1)+K) = INTBUF_TAB(N)%DSM(1+3*(I-1)+K)
1101 INTBUF_TAB(N)%FSM(1+3*(II-1)+K) = INTBUF_TAB(N)%FSM(1+3*(I-1)+K)
1102 INTBUF_TAB(N)%FINI(1+3*(II-1)+K) = INTBUF_TAB(N)%FINI(1+3*(I-1)+K)
1103 ENDDO
1104 END IF
1105 IF (INTBUF_TAB(N)%S_CSTS_BIS>0) THEN
1106 DO K = 0,1
1107 INTBUF_TAB(N)%CSTS_BIS(1+2*(II-1)+K) = INTBUF_TAB(N)%CSTS_BIS(1+2*(I-1)+K)
1108 ENDDO
1109 END IF
1110 ELSE
1111C-----warning out
1112 ISL = -INTBUF_TAB(N)%NSV(I)
1113 IPR = 1
1114 IF (IPRI>=5)
1115 . CALL ANCMSG(MSGID=1209,
1116 . MSGTYPE=MSGINFO,
1117 . ANMODE=ANINFO_BLIND_1,
1118 . I1=ITAB(ISL),
1119 . PRMOD=MSG_CUMU)
1120 ENDIF
1121 ENDDO
1122 IPARI(5,N) = II
1123 END IF !(IMODI > 0 )
1124.AND. IF (IPR >0IPRI>=5) THEN
1125 CALL ANCMSG(MSGID=1209,
1126 . MSGTYPE=MSGINFO,
1127 . ANMODE=ANINFO_BLIND_1,
1128 . C1='Interface type2 ',
1129 . I1=NOINT,
1130 . PRMOD=MSG_PRINT)
1131 END IF
1132 END IF !(NTY == 2 )
1133 ENDDO
1134C
1135c-----------
1136 RETURN
1137 END
1138!||====================================================================
1139!|| pre_cndpon ../starter/source/elements/solid/solide10/dim_s10edg.F
1140!||--- called by ------------------------------------------------------
1141!|| lectur ../starter/source/starter/lectur.F
1142!||--- calls -----------------------------------------------------
1143!|| nlocal ../starter/source/spmd/node/ddtools.F
1144!||====================================================================
1145 SUBROUTINE PRE_CNDPON(ICNDS10,ADSKYCND,CEPCND,CELCND ,ITAGND)
1146C-----------------------------------------------
1147C I m p l i c i t T y p e s
1148C-----------------------------------------------
1149#include "implicit_f.inc"
1150C-----------------------------------------------
1151C C o m m o n B l o c k s
1152C-----------------------------------------------
1153#include "com04_c.inc"
1154#include "com01_c.inc"
1155C-----------------------------------------------
1156C D u m m y A r g u m e n t s
1157C-----------------------------------------------
1158 INTEGER
1159 . ICNDS10(3,*), ADSKYCND(0:*),CEPCND(*),CELCND(*),ITAGND(*)
1160C-----------------------------------------------
1161C E x t e r n a l F u n c t i o n s
1162C-----------------------------------------------
1163 INTEGER NLOCAL
1164 EXTERNAL NLOCAL
1165C-----------------------------------------------
1166C L o c a l V a r i a b l e s
1167C-----------------------------------------------
1168 INTEGER K, I, IS,IAD, J, KK, N, NL,NIR,NL_L,P,NI,ICOMP(NSPMD)
1169C-----------------------------------------------------
1170C S o u r c e L i n e s
1171C-----------------------------------------------------
1172C
1173C Itet=2 of Tetra10 same than int2
1174C
1175C-----------------------------------------------------
1176C Preparation de ADDCNCND : Adresse matrice CNCND
1177C-----------------------------------------------------
1178 DO N=0,NUMNOD+1
1179 ADSKYCND(N) = 0
1180 ENDDO
1181C
1182 NIR = 2
1183 DO I=1,NS10E
1184 K = IABS(ICNDS10(1,I))
1185 IF (ITAGND(K)>NS10E) CYCLE
1186 DO J=1,NIR
1187 KK = ICNDS10(1+J,I)
1188 ADSKYCND(KK) = ADSKYCND(KK) + 1
1189 END DO
1190 END DO
1191C-----------------------------------------------
1192C CALCUL DES ADRESSES DU VECTEUR SKYLINE
1193C-----------------------------------------------
1194C------remove zero value nodes at the beginning---
1195 IF (ADSKYCND(1)>0) THEN
1196 NI= 1
1197 ELSE
1198 NI = 0
1199 DO I=2,NUMNOD
1200 IF (ADSKYCND(I)>0) THEN
1201 NI = I
1202 GOTO 100
1203 END IF
1204 ENDDO
1205 100 CONTINUE
1206 END IF
1207C-----------first activate node should begin from 1
1208 IF (NI==1) THEN
1209 ADSKYCND(1) = ADSKYCND(1)+1
1210 ELSE
1211 ADSKYCND(1) = 1
1212 END IF
1213 DO I=2,NUMNOD+1
1214 ADSKYCND(I)=ADSKYCND(I)+ADSKYCND(I-1)
1215 ENDDO
1216 DO I=NUMNOD+1,NI+1,-1
1217 ADSKYCND(I)=ADSKYCND(I-1)
1218 ENDDO
1219 ADSKYCND(1:NI) = 1
1220C-----------------------------------------------
1221C Remplissage de CEPCND : connection Element/Local
1222C-----------------------------------------------
1223 ICOMP(1:NSPMD)=0
1224 DO I=1,NS10E
1225 K = IABS(ICNDS10(1,I))
1226 IF (ITAGND(K)>NS10E) CYCLE
1227 DO P = 1, NSPMD
1228 IF(NLOCAL(K,P)==1)THEN
1229 CEPCND(I) = P-1
1230 ICOMP(P) = ICOMP(P) + 1
1231 CELCND(I)= ICOMP(P)
1232 GOTO 200
1233 ENDIF
1234 ENDDO
1235 200 CONTINUE
1236 ENDDO
1237C-----------------------------------------------
1238C Remplissage de CEL : connection Element/Local
1239C-----------------------------------------------
1240c DO P = 1, NSPMD
1241c NL_L = 0
1242c DO I=1,NS10E
1243c K = IABS(ICNDS10(1,I))
1244c IF (ITAGND(K)>NS10E) CYCLE
1245c IF(CELCND(I)==0) THEN
1246c IF(NLOCAL(K,P)==1)THEN
1247c NL_L = NL_L + 1
1248c CELCND(I) = NL_L
1249c END IF
1250c END IF
1251c END DO
1252c END DO
1253C
1254 RETURN
1255 END
1256!||====================================================================
1257!|| fillcncnd ../starter/source/elements/solid/solide10/dim_s10edg.F
1258!||--- called by ------------------------------------------------------
1259!|| lectur ../starter/source/starter/lectur.F
1260!||====================================================================
1261 SUBROUTINE FILLCNCND(CNCND ,ADDCNCND, ICNDS10,ITAGND)
1262C-----------------------------------------------
1263C I m p l i c i t T y p e s
1264C-----------------------------------------------
1265#include "implicit_f.inc"
1266C-----------------------------------------------
1267C C o m m o n B l o c k s
1268C-----------------------------------------------
1269#include "com04_c.inc"
1270C-----------------------------------------------
1271C D u m m y A r g u m e n t s
1272C-----------------------------------------------
1273 INTEGER ADDCNCND(0:*), CNCND(*),ICNDS10(3,*),ITAGND(*)
1274C-----------------------------------------------
1275C L o c a l V a r i a b l e s
1276C-----------------------------------------------
1277 INTEGER I, J, L, K, N, OFF, NTY, NRTS, NRTM, NSN, NMN,
1278 . KK, NIR,ADSKY(NUMNOD+1)
1279C-----------------------------------------------
1280C CALCUL DE CNE ADDCNE
1281C-----------------------------------------------
1282 DO I = 1, NUMNOD+1
1283 ADSKY(I) = ADDCNCND(I)
1284 ENDDO
1285C
1286C ADDCNCND(I+1)-ADDCNCND(I): nb of node I (main)
1287 NIR = 2
1288 DO I=1,NS10E
1289 K = ICNDS10(1,I)
1290 IF (ITAGND(K)>NS10E) CYCLE
1291 DO J=1,NIR
1292 KK = ICNDS10(1+J,I)
1293 CNCND(ADSKY(KK)) = I
1294 ADSKY(KK) = ADSKY(KK) + 1
1295 END DO
1296 END DO
1297C
1298 RETURN
1299 END
1300!||====================================================================
1301!|| stifn0_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
1302!||--- called by ------------------------------------------------------
1303!|| lectur ../starter/source/starter/lectur.F
1304!||====================================================================
1305 SUBROUTINE STIFN0_ND(ICNDS10,STIFN)
1306C=======================================================================
1307C-----------------------------------------------
1308C I m p l i c i t T y p e s
1309C-----------------------------------------------
1310#include "implicit_f.inc"
1311C-----------------------------------------------
1312C C o m m o n B l o c k s
1313C-----------------------------------------------
1314#include "com04_c.inc"
1315C-----------------------------------------------
1316C D u m m y A r g u m e n t s
1317C-----------------------------------------------
1318 INTEGER ICNDS10(3,*)
1319C REAL
1320 my_real
1321 . STIFN(*)
1322C-----------------------------------------------
1323C L o c a l V a r i a b l e s
1324C-----------------------------------------------
1325 INTEGER I,J,ND
1326C REAL
1327C------put STIFN(ND)=0 for mscalling dt estimation
1328 DO I=1,NS10E
1329 ND = IABS(ICNDS10(1,I))
1330 STIFN(ND)=ZERO
1331 ENDDO
1332C
1333 RETURN
1334 END
1335!||====================================================================
1336!|| stifn1_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
1337!||--- called by ------------------------------------------------------
1338!|| lectur ../starter/source/starter/lectur.F
1339!||====================================================================
1340 SUBROUTINE STIFN1_ND(ICNDS10,STIFN)
1341C=======================================================================
1342C-----------------------------------------------
1343C I m p l i c i t T y p e s
1344C-----------------------------------------------
1345#include "implicit_f.inc"
1346C-----------------------------------------------
1347C C o m m o n B l o c k s
1348C-----------------------------------------------
1349#include "com04_c.inc"
1350C-----------------------------------------------
1351C D u m m y A r g u m e n t s
1352C-----------------------------------------------
1353 INTEGER ICNDS10(3,*)
1354C REAL
1355 my_real
1356 . STIFN(*)
1357C-----------------------------------------------
1358C L o c a l V a r i a b l e s
1359C-----------------------------------------------
1360 INTEGER I,J,ND,N1,N2
1361C REAL
1362 my_real
1363 . STIF
1364C------condense STIFN(ND)
1365 DO I=1,NS10E
1366 ND = IABS(ICNDS10(1,I))
1367 IF (STIFN(ND)<=ZERO) CYCLE
1368 STIF =HALF*STIFN(ND)
1369 N1 = ICNDS10(2,I)
1370 N2 = ICNDS10(3,I)
1371 STIFN(N1)=STIFN(N1)+STIF
1372 STIFN(N2)=STIFN(N2)+STIF
1373 STIFN(ND)=ZERO
1374 ENDDO
1375C
1376 RETURN
1377 END
1378!||====================================================================
1379!|| bcscycmodif_nd ../starter/source/elements/solid/solide10/dim_s10edg.F
1380!||--- called by ------------------------------------------------------
1381!|| lectur ../starter/source/starter/lectur.F
1382!||--- calls -----------------------------------------------------
1383!|| ancmsg ../starter/source/output/message/message.F
1384!||--- uses -----------------------------------------------------
1385!|| message_mod ../starter/share/message_module/message_mod.F
1386!||====================================================================
1387 SUBROUTINE BCSCYCMODIF_ND(IBCSCYC,LBCSCYC,ITAGND,ITAB)
1388C=======================================================================
1389 USE MESSAGE_MOD
1390C-----------------------------------------------
1391C I m p l i c i t T y p e s
1392C-----------------------------------------------
1393#include "implicit_f.inc"
1394C-----------------------------------------------
1395C C o m m o n B l o c k s
1396C-----------------------------------------------
1397#include "com04_c.inc"
1398C-----------------------------------------------
1399C D u m m y A r g u m e n t s
1400C-----------------------------------------------
1401 INTEGER IBCSCYC(4,*), LBCSCYC(2,*), ITAGND(*),ITAB(*)
1402C-----------------------------------------------
1403C L o c a l V a r i a b l e s
1404C-----------------------------------------------
1405 INTEGER I,J,N,K,KK,NSL,NSL_N,K_N,NS,ID,N1,N2
1406C REAL
1407C------removing Nd from LBCSCYC(*)--
1408 DO I = 1, NBCSCYC
1409 K = IBCSCYC(1,I)
1410 NSL =IBCSCYC(3,I)
1411 NSL_N = 0
1412 ID =IBCSCYC(4,I)
1413 DO J = 1, NSL
1414 N1 = LBCSCYC(1,K+J)
1415 N2 = LBCSCYC(2,K+J)
1416.AND. IF(ITAGND(N1)==0ITAGND(N2)==0)THEN
1417 NSL_N = NSL_N + 1
1418 LBCSCYC(1,K+NSL_N) =N1
1419 LBCSCYC(2,K+NSL_N) =N2
1420.AND. ELSEIF(ITAGND(N1)/=0ITAGND(N2)/=0) THEN
1421C--- remove
1422 ELSE
1423C--- error out
1424 CALL ANCMSG(MSGID=1758,ANMODE=ANINFO,MSGTYPE=MSGERROR,I1=ID)
1425 END IF
1426 ENDDO
1427 IF (NSL>NSL_N) THEN
1428 KK = NSL-NSL_N
1429 IBCSCYC(3,I) = NSL_N
1430 IBCSCYC(1,I) = K+NSL_N
1431 CALL ANCMSG(MSGID=1759,ANMODE=ANINFO,MSGTYPE=MSGWARNING,I1=KK,I2=ID)
1432 END IF
1433 ENDDO
1434C
1435 RETURN
1436 END
subroutine bcsmodif_nd(icode, itagnd, icnds10, itab)
Definition dim_s10edg.F:662
subroutine ind_s10edg(icnds10, ixs, ixs10, iparg, itagnd)
Definition dim_s10edg.F:90
subroutine reord_icnd(icnds10, itagnd)
Definition dim_s10edg.F:172
subroutine rigmodif1_nd(npby, lpby, itagnd)
Definition dim_s10edg.F:403
subroutine rigmodif_nd(nn, inn, itagnd, icnds10, iu, titr, itab)
Definition dim_s10edg.F:292
subroutine remove_nd(nn, inn, itagnd)
Definition dim_s10edg.F:219
subroutine rbe2modif1_nd(irbe2, lrbe2, itagnd)
Definition dim_s10edg.F:609
subroutine remdeg_nd(nn, inn, itagnd)
Definition dim_s10edg.F:251
subroutine rbe2modif_nd(nn, inn, itagnd, icnds10, iu, itab, itagm, m, itagic)
Definition dim_s10edg.F:456
subroutine dim_s10edg(nedg, ixs10, iparg, itagnd)
Definition dim_s10edg.F:29
subroutine hm_read_grav(igrv, lgrav, grav, itab, itabm1, igrnod, npc, sensors, unitab, iskn, itagnd, lsubmodel)
subroutine hm_read_rwall_plane(rwl, nprw, lprw, ifi, ms, v, itab, itabm1, x, ikine, igrnod, mfi, imerge, unitab, iddlevel, lsubmodel, rtrans, nom_opt, itagnd, nchplan, k, offs, ikine1)
#define min(a, b)
Definition macros.h:20
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 lectur(multi_fvm, lsubmodel, is_dyna, detonators, ebcs_tab, seatbelt_converted_elements, nb_seatbelt_shells, nb_dyna_include, user_windows, output, mat_elem, names_and_titles, defaults, glob_therm, pblast, sensor_user_struct)
Definition lectur.F:533
program starter
Definition starter.F:39