40 . IPART,IPARTS,ISOLNOD,IXS10 ,IXS20,IXS16 ,
41 . IGEO ,LSUBMODEL,IS_DYNA,X )
72#include "implicit_f.inc"
76#include "analyse_name.inc"
87 INTEGER,
INTENT(IN)::ITAB(*)
88 INTEGER,
INTENT(IN)::ITABM1(*)
89 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
90 INTEGER,
INTENT(IN)::IGEO(NPROPGI,*)
91 INTEGER,
INTENT(IN)::IS_DYNA
92 my_real,
INTENT(IN)::pm(npropm,*)
93 my_real,
DIMENSION(3,NUMNOD),
INTENT(IN):: x
94 TYPE(),
INTENT(IN)::LSUBMODEL(*)
96 INTEGER,
INTENT(OUT)::ISOLNOD(*)
97 INTEGER,
INTENT(OUT)::IXS(NIXS,*)
98 INTEGER,
INTENT(OUT)::IXS10(6,*)
99 INTEGER,
INTENT(OUT)::IXS16(8,*)
100 INTEGER,
INTENT(OUT)::IXS20(12,*)
101 INTEGER,
INTENT(OUT)::IPARTS(*)
105 INTEGER I, J, MT, MLAW, JTUR, I1, I2, INEW,I10,I20,I16
106 INTEGER IC,IC1,IC2,IC3,IC4,IPID,ID,IDS,N,JC,NSPHDIR,STAT
107 INTEGER FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,NUMELS_READ,
108 . ioutn, ierror, index_part,ixs10_sav(6),ic5,ic6,
111 CHARACTER MESS*40, MESS2*40
112 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_SOL
123 DATA mess/
'3D SOLID ELEMENTS DEFINITION '/
124 DATA mess2/
'3D SOLID ELEMENTS SELECTION FOR TH PLOT '/
129 ALLOCATE (sub_sol(numels),stat=stat)
130 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
133 sub_sol(1:numels) = 0
138 CALL cpp_brick_read(ixs,nixs,iparts,sub_sol)
145 IF(ixs(6,i)+ixs(7,i)+ixs(8,i)+ixs(9,i)==0)
THEN
147 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
148 CALL anodset(ixs(j,i), check_volu)
166 ELSEIF(ixs(8,i)+ixs(9,i)==0)
THEN
168 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
169 CALL anodset(ixs(j,i), check_volu)
194 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
195 CALL anodset(ixs(j,i), check_volu)
221 IF( ipart(4,index_part) /= iparts(i) )
THEN
223 IF(ipart(4,j)== iparts(i) ) index_part = j
226 IF( ipart(4,index_part) /= iparts(i) )
THEN
229 . anmode=aninfo_blind_1,
235 iparts(i) = index_part
236 mt=ipart(1,index_part)
237 ipid=ipart(2,index_part)
244 CALL cpp_tetra4_read(ixs,nixs,numbrick,iparts,sub_sol)
254 IF( ipart(4,index_part) /= iparts(i) )
THEN
256 IF(ipart(4,j)== iparts(i) ) index_part = j
259 IF( ipart(4,index_part) /= iparts(i) )
THEN
262 . anmode=aninfo_blind_1,
268 iparts(i) = index_part
270 mt=ipart(1,index_part)
271 ipid=ipart(2,index_part)
275 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
276 CALL anodset(ixs(j,i), check_volu)
298 IF (is_dyna ==0)
CALL cpp_penta6_read(ixs,nixs,numbrick+numtetra4,iparts,sub_sol)
308 IF( ipart(4,index_part) /= iparts(i) )
THEN
310 IF(ipart(4,j)== iparts(i) ) index_part = j
313 IF( ipart(4,index_part) /= iparts(i) )
THEN
316 . anmode=aninfo_blind_1,
322 iparts(i) = index_part
324 mt=ipart(1,index_part)
325 ipid=ipart(2,index_part)
329 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
330 CALL anodset(ixs(j,i), check_volu)
342 CALL cpp_tetra10_read(ixs,nixs,ixs10,6,numbrick+numtetra4+numpenta6,iparts,sub_sol)
354 IF( ipart(4,index_part) /= iparts(i) )
THEN
356 IF(ipart(4,j)== iparts(i) ) index_part = j
359 IF( ipart(4,index_part) /= iparts(i) )
THEN
362 . anmode=aninfo_blind_1,
368 iparts(i) = index_part
370 mt=ipart(1,index_part)
371 ipid=ipart(2,index_part)
375 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
376 CALL anodset(ixs(j,i), check_volu)
380 IF(ixs10(j,i10)/=0)
THEN
381 ixs10(j,i10)=usr2sys(ixs10(j,i10),itabm1,mess,ixs(11,i))
382 CALL anodset(ixs10(j,i10), check_volu)
397 ixs10_sav(1:6) = ixs10(1:6,i10)
402 ixs10(1,i10) = ixs10_sav(4)
403 ixs10(2,i10) = ixs10_sav(6)
404 ixs10(4,i10) = ixs10_sav(1)
405 ixs10(6,i10) = ixs10_sav(2)
411 IF (is_dyna ==0)
CALL cpp_brick20_read(ixs,nixs,ixs20,12,numbrick+numtetra4+numpenta6+numels10,iparts,sub_sol)
423 IF( ipart(4,index_part) /= iparts(i) )
THEN
425 IF(ipart(4,j)== iparts(i) ) index_part = j
428 IF( ipart(4,index_part) /= iparts(i) )
THEN
431 . anmode=aninfo_blind_1,
437 iparts(i) = index_part
439 mt=ipart(1,index_part)
440 ipid=ipart(2,index_part)
444 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i)
445 CALL anodset(ixs(j,i), check_volu)
449 IF(ixs20(j,i20)/=0)
THEN
450 ixs20(j,i20)=usr2sys(ixs20(j,i20),itabm1,mess,ixs(11,i))
451 CALL anodset(ixs20(j,i20), check_volu)
459 IF (is_dyna ==0)
CALL cpp_shel16_read(ixs,nixs,ixs16,8,numbrick+numtetra4+numpenta6+numels10+numels20,iparts,sub_sol)
471 IF( ipart(4,index_part) /= iparts(i) )
THEN
473 IF(ipart(4,j)== iparts(i) ) index_part = j
476 IF( ipart(4,index_part) /= iparts(i) )
THEN
479 . anmode=aninfo_blind_1,
485 iparts(i) = index_part
487 mt=ipart(1,index_part)
488 ipid=ipart(2,index_part)
492 ixs(j,i)=usr2sys(ixs(j,i),itabm1,mess,ixs(11,i))
493 CALL anodset(ixs(j,i), check_volu)
497 IF(ixs16(j,i16)/=0)
THEN
498 ixs16(j,i16)=usr2sys(ixs16(j,i16),itabm1,mess,ixs(11,i))
499 CALL anodset(ixs16(j,i16), check_volu)
507 . anmode=aninfo_blind_1,
510 IF (
ALLOCATED(sub_sol))
DEALLOCATE(sub_sol)
514 CALL udouble(ixs(nixs,1),nixs,numels,mess,0,bid)
527 SUBROUTINE lce16s3(IXS ,ISEL ,PM ,IPOINT ,ITAB ,ITABM1 ,
528 . ICODE ,IPARTS ,IGRBRIC ,GEO ,ISOLNOD ,
529 . IXS10 ,IPART ,IXS20 ,IXS16 ,KNOD2ELS ,NOD2ELS,
530 . IGRSURF,SPH2SOL ,SOL2SPH )
538#include "implicit_f.inc"
542#include "com04_c.inc"
543#include "units_c.inc"
544#include "scr03_c.inc"
546#include "param_c.inc"
548#include
"scr17_c.inc"
552 INTEGER IXS(NIXS,*), ISEL(*), IPOINT(2,*), ITAB(*), ITABM1(*),
553 . (*),IPARTS(*),ISOLNOD(*),
554 . IXS10(6,*),IPART(LIPART1,*),IXS20(12,*),IXS16(8,*),
555 . KNOD2ELS(*),NOD2ELS(*),SPH2SOL(*),SOL2SPH(2,*)
556 my_real PM(NPROPM,NUMMAT),GEO(NPROPG,*)
558 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
559 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
563 INTEGER I, J, MT, MLAW, JTUR, I1, I2, INEW, K, N, IAD, NN
564 INTEGER IC,IC1,IC2,IC3,IC4,MID,PID
565 CHARACTER MESS*40, MESS2*40
571 DATA mess/
'3D SOLID ELEMENTS DEFINITION '/
572 DATA mess2/
'3D SOLID ELEMENTS SELECTION FOR TH PLOT '/
583 IF((mlaw==6.AND.jtur/=0) .OR. mlaw==46)
THEN
587 ic3=(ic-512*ic1-64*ic2)/8
588 ic4=(ic-512*ic1-64*ic2-8*ic3)
589 IF(ic1==7 .OR. ic4==7)ixs(1,i)=-iabs(ixs(1,i
596 CALL reordr(ixs ,nixs ,numels8,pm ,ipoint ,
597 . iparts,ngrbric,igrbric,nummat)
604 IF (igrsurf(i)%ELTYP(j) == 1)
THEN
605 IF (igrsurf(i)%ELEM(j) <= numels8)
606 . igrsurf(i)%ELEM(j)=ipoint
615 IF(sph2sol(i)/=0)sph2sol(i)=ipoint(1,sph2sol(i))
623 n=sph2sol(first_sphsol)
625 sol2sph(2,n)=sol2sph(1,n)+1
626 DO i=first_sphsol+1,first_sphsol+nsphsol-1
627 IF(sph2sol(i)==n)
THEN
628 sol2sph(2,n)=sol2sph(2,n)+1
632 sol2sph(2,n)=sol2sph(1,n)+1
640 ipoint(2,i)=isolnod(i)
643 isolnod(ipoint(1,i))=ipoint(2,i)
651 knod2els(n) = knod2els(n) + 1
652 IF(n/=0) nod2els(knod2els(n)) = i
660 knod2els(n) = knod2els(n) + 1
661 nod2els(knod2els(n)) = numels8+i
670 knod2els(n) = knod2els(n) + 1
671 nod2els(knod2els(n)) = numels10+numels8+i
680 knod2els(n) = knod2els(n) + 1
681 nod2els(knod2els(n)) = numels20+numels10+numels8+i
687 knod2els(n+1)=knod2els(n)
697 WRITE (iout,
'(//A//)') titre(206)
700 WRITE (iout,
'(//A/A//A/A,A/)')
701 . titre(90),titre(91),
702 .
' ELEMENT INTERNAL PART MATER PRSET',
703 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
704 .
' NODE6 NODE7 NODE8'
707 WRITE (iout,
'(5I10)')
708 . ixs(11,inew),inew,ipart(4,iparts(inew)),
709 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
710 IF(isolnod(inew)==4)
THEN
711 WRITE (iout,
'(8I10)')
712 . itab(ixs(2,inew)),itab(ixs(4,inew)),
713 . itab(ixs(7,inew)),itab(ixs(6,inew))
714 ELSEIF(isolnod(inew)==6)
THEN
715 WRITE (iout,
'(6I10)')
716 . itab(ixs(5,inew)),itab(ixs(3,inew)),itab(ixs(4,inew)),
717 . itab(ixs(6,inew)),itab(ixs(7,inew)),itab(ixs(8,inew))
719 WRITE (iout,
'(8I10)')
720 . (itab(ixs(j,inew)),j=2,9)
723 IF(i2==numels8)
GOTO 200
733 WRITE (iout,
'(//A/A//A/A,A/)')
734 .
' TEN NODE TETRA ELEMENTS',
735 .
' -----------------------',
736 .
' ELEMENT INTERNAL PART MATER PRSET',
737 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
738 .
' NODE6 NODE7 NODE8 NODE9 NODE10'
742 WRITE (iout,
'(5I10)')
743 . ixs(11,inew),inew,ipart(4,iparts(inew)),
744 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
745 WRITE (iout,
'(10I10)')
746 . itab(ixs(2,inew)),itab(ixs(4,inew)),
747 . itab(ixs(7,inew)),itab(ixs(6,inew)),
748 . (itab(ixs10(j,i)),j=1,6)
750 IF(i2==numels10)
GOTO 300
759 dowhile(i1<=numels20)
760 WRITE (iout,
'(//A/A//A/A,A/A/A)')
761 .
' TWENTY NODE BRICK ELEMENTS',
762 .
' --------------------------',
763 .
' ELEMENT INTERNAL PART MATER PRSET',
764 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
765 .
' NODE6 NODE7 NODE8',
766 .
' NODE9 NODE10 NODE11 NODE12 NODE13 NODE14',
767 .
' NODE15 NODE16 NODE17 NODE18 NODE19 NODE20'
770 inew=i+numels8+numels10
771 WRITE (iout,
'(5I10)')
772 . ixs(11,inew),inew,ipart(4,iparts(inew)),
773 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
774 WRITE (iout,
'(8I10/6I10/6I10)')
775 . (itab(ixs(j,inew)),j=2,9),
776 . (itab(ixs20(j,i)),j=1,12)
784 dowhile(i1<=numels16)
785 WRITE (iout,
'(//A/A//A/A,A/A,A)')
786 .
' SIXTEEN NODE SHELL ELEMENTS',
787 .
' ---------------------------',
788 .
' ELEMENT INTERNAL PART MATER PRSET',
789 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
790 .
' NODE6 NODE7 NODE8',
791 .
' NODE9 NODE10 NODE11 NODE12 NODE13 NODE14',
795 inew=i+numels8+numels10+numels20
796 WRITE (iout,'(5i10)
')
797 . IXS(11,INEW),INEW,IPART(4,IPARTS(INEW)),
798 . IPART(5,IPARTS(INEW)),IPART(6,IPARTS(INEW))
799 WRITE (IOUT,'(8i10/8i10)
')
800 . (ITAB(IXS(J,INEW)),J=2,9),
801 . (ITAB(IXS16(J,I)),J=1,8)
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)