40 . IPART,IPARTS,ISOLNOD,IXS10 ,IXS20,IXS16 ,
41 . IGEO ,LSUBMODEL,IS_DYNA,X )
69 use element_mod ,
only : nixs
73#include "implicit_f.inc"
77#include "analyse_name.inc"
88 INTEGER,
INTENT(IN)::ITAB(*)
89 INTEGER,
INTENT(IN)::ITABM1(*)
90 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
91 INTEGER,
INTENT(IN)::IGEO(NPROPGI,*)
92 INTEGER,
INTENT(IN)::IS_DYNA
93 my_real,
INTENT(IN)::pm(npropm,*)
94 my_real,
DIMENSION(3,NUMNOD),
INTENT(IN):: x
97 INTEGER,
INTENT(OUT)::ISOLNOD(*)
98 INTEGER,
INTENT(OUT)::IXS(NIXS,*)
99 INTEGER,
INTENT(OUT)::(6,*)
100 INTEGER,
INTENT(OUT)::IXS16(8,*)
101 INTEGER,
INTENT(OUT)::IXS20(12,*)
102 INTEGER,
INTENT(OUT)::IPARTS(*)
106 INTEGER I, , MT, I10,I20,I16
107 INTEGER ,IC2,IC3,IC4,IPID,N,STAT
108 INTEGER 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)
526 SUBROUTINE lce16s3(IXS ,ISEL ,PM ,IPOINT ,ITAB ,ITABM1 ,
527 . ICODE ,IPARTS ,IGRBRIC ,GEO ,ISOLNOD ,
528 . IXS10 ,IPART ,IXS20 ,IXS16 ,KNOD2ELS ,NOD2ELS,
529 . IGRSURF,SPH2SOL ,SOL2SPH )
534 use element_mod ,
only : nixs
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(*)
558 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
559 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
563 INTEGER I, J, MT, MLAW, JTUR, I1, I2, INEW, K, N, NN
564 INTEGER IC,IC1,IC2,IC3,IC4
565 CHARACTER MESS*40, MESS2*40
570 DATA mess/
'3D SOLID ELEMENTS DEFINITION '/
571 DATA mess2/
'3D SOLID ELEMENTS SELECTION FOR TH PLOT '/
582 IF((mlaw==6.AND.jtur/=0) .OR. mlaw==46)
THEN
586 ic3=(ic-512*ic1-64*ic2)/8
587 ic4=(ic-512*ic1-64*ic2-8*ic3)
588 IF(ic1==7 .OR. ic4==7)ixs(1,i)=-iabs(ixs(1,i))
595 CALL reordr(ixs ,nixs ,numels8,pm ,ipoint ,
596 . iparts,ngrbric,igrbric,nummat)
603 IF (igrsurf(i)%ELTYP(j) == 1)
THEN
604 IF (igrsurf(i)%ELEM(j) <= numels8)
605 . igrsurf(i)%ELEM(j)=ipoint(1,igrsurf(i)%ELEM(j))
614 IF(sph2sol(i)/=0)sph2sol(i)=ipoint(1,sph2sol(i))
622 n=sph2sol(first_sphsol)
624 sol2sph(2,n)=sol2sph(1,n)+1
625 DO i=first_sphsol+1,first_sphsol+nsphsol-1
626 IF(sph2sol(i)==n)
THEN
627 sol2sph(2,n)=sol2sph(2,n)+1
631 sol2sph(2,n)=sol2sph(1,n)+1
639 ipoint(2,i)=isolnod(i)
642 isolnod(ipoint(1,i))=ipoint(2,i)
650 knod2els(n) = knod2els(n) + 1
651 IF(n/=0) nod2els(knod2els(n)) = i
659 knod2els(n) = knod2els(n) + 1
660 nod2els(knod2els(n)) = numels8+i
669 knod2els(n) = knod2els(n) + 1
670 nod2els(knod2els(n)) = numels10+numels8+i
679 knod2els(n) = knod2els(n) + 1
680 nod2els(knod2els(n)) = numels20+numels10+numels8+i
686 knod2els(n+1)=knod2els(n)
696 WRITE (iout,
'(//A//)') titre(206)
699 WRITE (iout,
'(//A/A//A/A,A/)')
700 . titre(90),titre(91),
701 .
' ELEMENT INTERNAL PART MATER PRSET',
702 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
703 .
' NODE6 NODE7 NODE8'
706 WRITE (iout,
'(5I10)')
707 . ixs(11,inew),inew,ipart(4,iparts(inew)),
708 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
709 IF(isolnod(inew)==4)
THEN
710 WRITE (iout,
'(8I10)')
711 . itab(ixs(2,inew)),itab(ixs(4,inew)),
712 . itab(ixs(7,inew)),itab(ixs(6,inew))
713 ELSEIF(isolnod(inew)==6)
THEN
714 WRITE (iout,
'(6I10)')
715 . itab(ixs(5,inew)),itab(ixs(3,inew)),itab(ixs(4,inew)),
716 . itab(ixs(6,inew)),itab(ixs(7,inew)),itab(ixs(8,inew))
718 WRITE (iout,
'(8I10)')
719 . (itab(ixs(j,inew)),j=2,9)
722 IF(i2==numels8)
GOTO 200
732 WRITE (iout,
'(//A/A//A/A,A/)')
733 .
' TEN NODE TETRA ELEMENTS',
734 .
' -----------------------',
735 .
' ELEMENT INTERNAL PART MATER PRSET',
736 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
737 .
' NODE6 NODE7 NODE8 NODE9 NODE10'
741 WRITE (iout,
'(5I10)')
742 . ixs(11,inew),inew,ipart(4,iparts(inew)),
743 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
744 WRITE (iout,
'(10I10)')
745 . itab(ixs(2,inew)),itab(ixs(4,inew)),
746 . itab(ixs(7,inew)),itab(ixs(6,inew)),
747 . (itab(ixs10(j,i)),j=1,6)
749 IF(i2==numels10)
GOTO 300
758 dowhile(i1<=numels20)
759 WRITE (iout,
'(//A/A//A/A,A/A/A)')
760 .
' TWENTY NODE BRICK ELEMENTS',
761 .
' --------------------------',
762 .
' ELEMENT INTERNAL PART MATER PRSET',
763 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
764 .
' NODE6 NODE7 NODE8',
765 .
' NODE9 NODE10 NODE11 NODE12 NODE13 NODE14',
766 .
' NODE15 NODE16 NODE17 NODE18 NODE19 NODE20'
769 inew=i+numels8+numels10
770 WRITE (iout,
'(5I10)')
771 . ixs(11,inew),inew,ipart(4,iparts(inew)),
772 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
773 WRITE (iout,
'(8I10/6I10/6I10)')
774 . (itab(ixs(j,inew)),j=2,9),
775 . (itab(ixs20(j,i)),j=1,12)
783 dowhile(i1<=numels16)
784 WRITE (iout,
'(//A/A//A/A,A/A,A)')
785 .
' SIXTEEN NODE SHELL ELEMENTS',
786 .
' ---------------------------',
787 .
' ELEMENT INTERNAL PART MATER PRSET',
788 .
' NODE1 NODE2 NODE3 NODE4 NODE5',
789 .
' NODE6 NODE7 NODE8',
790 .
' NODE9 NODE10 NODE11 NODE12 NODE13 NODE14',
794 inew=i+numels8+numels10+numels20
795 WRITE (iout,
'(5I10)')
796 . ixs(11,inew),inew,ipart(4,iparts(inew)),
797 . ipart(5,iparts(inew)),ipart(6,iparts(inew))
798 WRITE (iout,
'(8I10/8I10)')
799 . (itab(ixs(j,inew)),j=2,9),
800 . (itab(ixs16(j,i)),j=1,8)
874 SUBROUTINE hm_prelce16s(IPART, IGEO, IXS, NSPHSOL ,LSUBMODEL, IS_DYNA )
880 USE reader_old_mod ,
ONLY : line
881 USE user_id_mod ,
ONLY : id_limit
882 use element_mod ,
only : nixs
886#include "implicit_f.inc"
890#include "scr17_c.inc"
891#include "com04_c.inc"
892#include "param_c.inc"
896 INTEGER IPART(LIPART1,*), IGEO(NPROPGI,NUMGEO), IXS(NIXS,*), NSPHSOL
897 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
898 INTEGER,
INTENT(IN)::IS_DYNA
904 INTEGER FLAG_FMT,INDEX_PART
906 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IPARTS
907 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_SOL
912 DATA mess/
'3D SOLID ELEMENTS DEFINITION '/
919 ALLOCATE (sub_sol(numels),stat=stat)
920 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
923 sub_sol(1:numels) = 0
928 ALLOCATE(iparts(numels))
929 CALL cpp_brick_read(ixs,nixs,iparts,sub_sol)
937 IF( ipart(4,index_part) /= iparts(i) )
THEN
939 IF(ipart(4,j)== iparts(i) )index_part = j
942 iparts(i) = index_part
944 IF (ixs(11,i)>id_limit%GLOBAL)
THEN
945 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
946 . i1=ixs(11,i),c1=line,c2=
'/SOLID')
949 IF (ipart(2,iparts(i)) > 0)
THEN
950 nsphdir=igeo(37,ipart(2,iparts(i)))
951 IF(ixs(6,i)+ixs(7,i)+ixs(8,i)+ixs(9,i)==0)
THEN
957 ELSEIF(ixs(8,i)+ixs(9,i)==0)
THEN
962 nsphsol=nsphsol+nsphdir*nt
964 nsphsol=nsphsol+nsphdir*nsphdir*nsphdir
975 CALL cpp_tetra4_read(ixs,nixs,numbrick,iparts,sub_sol)
979 DO i=numbrick+1,numbrick+numtetra4
983 IF( ipart(4,index_part) /= iparts(i) )
THEN
985 IF(ipart(4,j)== iparts(i) )index_part = j
988 iparts(i) = index_part
991 nsphdir=igeo(37,ipart(2,iparts(i)))
992 IF (ixs(11,i)>id_limit%GLOBAL)
THEN
993 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
994 . i1=ixs(11,i),c1=line,c2=
'/SOLID')
1005 IF (is_dyna ==0)
CALL cpp_penta6_read(ixs,nixs,numbrick+numtetra4,iparts,sub_sol)
1009 DO i=numbrick+numtetra4+1,numbrick+numtetra4+numpenta6
1013 IF( ipart(4,index_part) /= iparts(i) )
THEN
1015 IF(ipart(4,j)== iparts(i) )index_part = j
1018 iparts(i) = index_part
1020 nsphdir=igeo(37,iparts(i-numbrick))
1021 IF (ixs(11,i)>id_limit%GLOBAL)
THEN
1022 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,
1023 . i1=ixs(11,i),c1=line,c2=
'/SOLID')
1031 IF (
ALLOCATED(iparts))
DEALLOCATE(iparts)
1032 IF (
ALLOCATED(sub_sol))
DEALLOCATE(sub_sol)
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)