45#include "implicit_f.inc"
57 INTEGER ISPMD, MCHECK, IGEO(NPROPGI,*)
60 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
64 INTEGER I, J, K, IOK, IANIS0, NIPMAX, IHBE,
65 . IUS,IPT,IGTYP,NPT,NPTS,NPTR,NPTT,NPTT_PLY,CPtPLY,NMAX,IGTYP15,
66 . ,NIPMAX_BEAM, NIPMAX_SOL,ICSTR,N14R,N14S,N14T
76 ALLOCATE (sensors%ANIM(sensors%NANIM))
80 IF (ispmd == 0 .AND. mcheck == 0)
THEN
84 ianis0 = sensors%ANIM_ID
86 DO i=1,sensors%NSENSOR
87 IF (ianis0 == sensors%SENSOR_TAB(i)%SENS_ID) sensors%ANIM_ID=i
93 ianis0 = sensors%ANIM_TMP(k)
95 DO i=1,sensors%NSENSOR
96 IF (ianis0 == sensors%SENSOR_TAB(i)%SENS_ID)
THEN
104 CALL ancmsg(msgid=228,msgtype=msgerror,anmode=aninfo,i1=ianis0)
110 IF (mcheck == 0 )
THEN
111 IF( istresall == 1 .OR. istraiall == 1 .OR.
112 . iepsdoall == 1 .OR. iepspall == 1 .OR.
116 . istresfull > 0 .OR.
118 . istresall_ply>0 .OR.
119 . istrainall_ply>0 .OR.
120 . iepsdotall_ply>0 .OR.
121 . iepspall_ply>0 .OR.
122 . idamaall_ply>0 .OR.
123 . iphiall_ply > 0 .OR.
124 . ibrick_stressall > 0 .OR.
125 . ibrick_strainall > 0 .OR.
126 . ibrick_epspall > 0 .OR.
128 . istrainfull > 0 .OR.
129 . iepsdofull > 0 .OR.
132 . ibeam_epspall > 0 .OR.
133 . iepspnlall == 1 .OR.
134 . iepsdnlall == 1 .OR.
135 . itsaiwuall > 0 .OR.
136 . itsaiwufull > 0)
THEN
139 nipmax =
max(nipmax,nint(geo(6,i)))
141 IF(nipmax ==0) nipmax=1
146 IF (igtyp == 18)
THEN
147 nipmax_beam =
max(nipmax_beam,igeo(3,i))
150 IF(nipmax_beam == 0) nipmax_beam=1
152 IF (istresall == 1)
THEN
153 IF (anim_ct(3) == 0)
THEN
155 nct_ani = nct_ani + 1
157 IF (anim_ct(4) == 0)
THEN
159 nct_ani = nct_ani + 1
164 nct_ani = nct_ani + 1
168 IF (istraiall == 1)
THEN
169 IF (anim_ct(7) == 0)
THEN
171 nct_ani = nct_ani + 1
173 IF (anim_ct(8) == 0)
THEN
175 nct_ani = nct_ani + 1
180 nct_ani = nct_ani + 1
184 IF (iepsdoall == 1)
THEN
185 IF (anim_ct(93) == 0)
THEN
187 nct_ani = nct_ani + 1
189 IF (anim_ct(94) == 0)
THEN
191 nct_ani = nct_ani + 1
196 nct_ani = nct_ani + 1
200 IF (iepspall == 1)
THEN
201 IF (anim_ce(2040) == 0)
THEN
203 nce_ani = nce_ani + 1
205 IF (anim_ce(2041) == 0)
THEN
207 nce_ani = nce_ani + 1
211 IF (anim_ce(2041+i) == 0)
THEN
213 nce_ani = nce_ani + 1
219 IF (iepspfull == 1)
THEN
221 IF (nipmax <= 100)
THEN
225 IF (anim_ce(10877 + ius) == 0 .AND. anim_epsp(i) > 0)
THEN
226 anim_ce(10877 + ius) = 1
227 nce_ani = nce_ani + 1
234 IF (nipmax <= 100)
THEN
238 IF (anim_ce(10877 + ius) == 0)
THEN
239 anim_ce(10877 + ius) = 1
240 nce_ani = nce_ani + 1
247 IF (istresfull == 1)
THEN
249 IF (nipmax <= 100)
THEN
253 IF (anim_ct(600 + ius) == 0 .AND. anim_stress(i) >
THEN
254 anim_ct(600 + ius) = 1
255 nct_ani = nct_ani + 1
260 ELSEIF (istresfull == 2)
THEN
262 IF (nipmax <= 100)
THEN
266 IF (anim_ct(600 + ius) == 0)
THEN
267 anim_ct(600 + ius) = 1
268 nct_ani = nct_ani + 1
275 IF (iphiall == 1)
THEN
279 nce_ani = nce_ani + 1
285 IF( iorthdall == 1 )
THEN
288 nipmax_sol =
max(nipmax_sol,igeo(30,i))
291 anim_se(286+3*(i-1)+1) = 1
292 anim_se(286+3*(i-1)+2) = 1
293 anim_se(286+3*(i-1)+3) = 1
294 nse_ani = nse_ani + 3
298 IF (idamaall == 1)
THEN
302 nce_ani = nce_ani + 1
307 IF (inxtfall == 1)
THEN
311 nce_ani = nce_ani + 1
316 IF (sigh1all == 1)
THEN
320 nce_ani = nce_ani + 1
325 IF (sigh2all == 1)
THEN
329 nce_ani = nce_ani + 1
334 IF( iplyall == 1 )
THEN
337 IF(igeo(11,i) == 19)
THEN
339 ply_anim( 3 * (cptply - 1) + 1) = igeo(1,i)
340 ply_anim( 3 * (cptply - 1) + 2) = 1
341 IF(cptply < mx_ply_anim)
THEN
342 anim_ce(11925 + cptply) = 1
343 nce_ani = nce_ani + 1
345 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
352 ply_anim( 3 * (cptply - 1) + 1) =
ply_info(1,i)
353 ply_anim( 3 * (cptply - 1) + 2) = 1
354 IF(cptply < mx_ply_anim)
THEN
355 anim_ce(11925 + cptply) = 1
356 nce_ani = nce_ani + 1
358 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
366 IF(igeo(11,i) == 19)
THEN
369 ply_anim_stress( 3 * (cptply - 1) + 1) = igeo(1,i)
370 ply_anim_stress( 3 * (cptply - 1) + 2) = 2
371 ply_anim_stress( 3 * (cptply - 1) + 3) = ipt
372 IF( cptply < mx_ply_anim)
THEN
373 anim_ct(1610 + cptply) = 1
374 nct_ani = nct_ani + 1
385 ply_anim_stress( 3 * (cptply - 1)
386 ply_anim_stress( 3 * (cptply - 1) + 2) = 2
387 ply_anim_stress( 3 * (cptply - 1) + 3) = ipt
388 IF(cptply < mx_ply_anim)
THEN
389 anim_ct(1610 + cptply) = 1
390 nct_ani = nct_ani + 1
392 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
398 IF( istrainall_ply == 1 )
THEN
401 IF(igeo(11,i) == 19)
THEN
404 ply_anim_strain( 3 * (cptply - 1) + 1) = igeo(1,i)
405 ply_anim_strain( 3 * (cptply - 1) + 2) = 3
406 ply_anim_strain( 3 * (cptply - 1) + 3) = ipt
407 IF(cptply < mx_ply_anim)
THEN
408 anim_ct( (1610+mx_ply_anim) + cptply) = 1
409 nct_ani = nct_ani + 1
411 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
420 ply_anim_strain( 3 * (cptply - 1) + 1) =
ply_info(1,i)
421 ply_anim_strain( 3 * (cptply - 1) + 2) = 3
422 ply_anim_strain( 3 * (cptply - 1) + 3) = ipt
423 IF(cptply < mx_ply_anim)
THEN
424 anim_ct( (1610 + mx_ply_anim) + cptply) = 1
425 nct_ani = nct_ani + 1
427 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
433 IF( iepsdotall_ply == 1 )
THEN
436 IF(igeo(11,i) == 19)
THEN
439 ply_anim_epsdot( 3 * (cptply - 1) + 1) = igeo(1,i)
441 ply_anim_epsdot( 3 * (cptply - 1) + 3) = ipt
442 IF(cptply < mx_ply_anim)
THEN
443 anim_ct( (1610+ 2*mx_ply_anim) + cptply) = 1
444 nct_ani = nct_ani + 1
446 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim
455 ply_anim_epsdot( 3 * (cptply - 1) + 1) =
ply_info(1,i
456 ply_anim_epsdot( 3 * (cptply - 1) + 2) = 6
457 ply_anim_epsdot( 3 * (cptply - 1) + 3) = ipt
458 IF(cptply < mx_ply_anim)
THEN
459 anim_ct( (1610 + 2*mx_ply_anim) + cptply) = 1
460 nct_ani = nct_ani + 1
462 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
468 IF (istrainfull == 1)
THEN
469 idx = 1810 + 3*mx_ply_anim
471 IF (nipmax <= 100)
THEN
475 IF (anim_ct(idx + ius) == 0 .AND. anim_strain(i) > 0)
THEN
476 anim_ct(idx + ius) = 1
477 nct_ani = nct_ani + 1
482 ELSEIF (istrainfull == 2)
THEN
483 idx = 1810 + 3*mx_ply_anim
485 IF (nipmax <= 100)
THEN
489 IF (anim_ct(idx + ius) == 0)
THEN
490 anim_ct(idx + ius) = 1
491 nct_ani = nct_ani + 1
498 IF (iepsdofull == 1)
THEN
499 idx = 2820 + 3*mx_ply_anim
501 IF (nipmax <= 100)
THEN
505 IF (anim_ct(idx + ius) == 0 .AND. anim_epsdot(i) > 0)
THEN
506 anim_ct(idx + ius) = 1
507 nct_ani = nct_ani + 1
512 ELSEIF (iepsdofull == 2)
THEN
513 idx = 2820 + 3*mx_ply_anim
515 IF (nipmax <= 100)
THEN
519 IF (anim_ct(idx + ius) == 0)
THEN
520 anim_ct(idx + ius) = 1
521 nct_ani = nct_ani + 1
529 IF( iphiall_ply == 1 )
THEN
532 IF(igeo(11,i) == 19)
THEN
535 ply_anim_phi( 3 * (cptply - 1) + 1) = igeo(1,i)
536 ply_anim_phi( 3 * (cptply - 1) + 2) = 4
537 ply_anim_phi( 3 * (cptply - 1) + 3) = ipt
538 IF( cptply < mx_ply_anim)
THEN
539 anim_ce( (11925 + mx_ply_anim) + cptply) = 1
540 nce_ani = nce_ani + 1
542 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
551 ply_anim_phi( 3 * (cptply - 1) + 1) =
ply_info(1,i)
552 ply_anim_phi( 3 * (cptply - 1) + 2) = 4
553 ply_anim_phi( 3 * (cptply - 1) + 3) = ipt
554 IF( cptply < 11925)
THEN
555 anim_ce( (11925 + mx_ply_anim) + cptply) = 1
556 nce_ani = nce_ani + 1
558 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
564 IF( iepspall_ply == 1 )
THEN
567 IF(igeo(11,i) == 19)
THEN
570 ply_anim_epsp( 3 * (cptply - 1) + 1) = igeo(1,i)
571 ply_anim_epsp( 3 * (cptply - 1) + 2) = 5
572 ply_anim_epsp( 3 * (cptply - 1) + 3) = ipt
573 IF( cptply < mx_ply_anim)
THEN
574 anim_ce( (11925 + ( 2*mx_ply_anim ) ) + cptply) = 1
575 nce_ani = nce_ani + 1
586 ply_anim_epsp( 3 * (cptply - 1) + 1) =
ply_info(1,i)
587 ply_anim_epsp( 3 * (cptply - 1) + 2) = 5
588 ply_anim_epsp( 3 * (cptply - 1) + 3) = ipt
589 IF( cptply < mx_ply_anim)
THEN
590 anim_ce( (11925 + (2*mx_ply_anim)) + cptply) = 1
591 nce_ani = nce_ani + 1
593 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo
599 IF( idamaall_ply == 1 )
THEN
602 IF(igeo(11,i) == 19)
THEN
605 ply_anim_dama( 3 * (cptply - 1) + 1) = igeo(1,i)
606 ply_anim_dama( 3 * (cptply - 1) + 2) = 5
607 ply_anim_dama( 3 * (cptply - 1) + 3) = ipt
608 IF( cptply < mx_ply_anim)
THEN
609 anim_ce( (11925 + ( 3*mx_ply_anim ) ) + cptply) = 1
610 nce_ani = nce_ani + 1
612 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
621 ply_anim_dama( 3 * (cptply - 1) + 1) =
ply_info(1,i)
622 ply_anim_dama( 3 * (cptply - 1) + 2) = 7
623 ply_anim_dama( 3 * (cptply - 1) + 3) = ipt
624 IF( cptply < mx_ply_anim)
THEN
625 anim_ce( (11925 + (3*mx_ply_anim)) + cptply) = 1
626 nce_ani = nce_ani + 1
628 CALL ancmsg(msgid=268,msgtype=msgwarning,i1=mx_ply_anim,anmode=aninfo)
634 IF (idamafull == 1)
THEN
635 idx = 11931 + 4*mx_ply_anim
637 IF (nipmax <= 100)
THEN
641 IF (anim_ce(idx + 300 + ius) == 0 .AND. anim_dama(i) > 0)
THEN
642 anim_ce(idx + 300 + ius) = 1
643 nce_ani = nce_ani + 1
648 ELSEIF (idamafull == 2)
THEN
649 idx = 11931 + 4*mx_ply_anim
651 IF (nipmax <= 100)
THEN
655 IF (anim_ce(idx + 300 + ius) ==
THEN
656 anim_ce(idx + 300 + ius) = 1
657 nce_ani = nce_ani + 1
664 IF (ibrick_stressall == 1 .OR. ibrick_strainall == 1 . or.
665 . ibrick_epspall == 1)
THEN
675 IF(igtyp == 6 .OR. igtyp == 14 )
THEN
678 IF (npt == 0) npt = 222
679 nptr=
max(nptr,npt/100)
680 npts=
max(npts,mod(npt/10,10))
681 nptt=
max(nptt,mod(npt,10))
686 CASE(12,112,13,17,18)
691 ELSE IF(igtyp == 20 .OR. igtyp == 21 .OR. igtyp == 22)
THEN
700 IF (n14t==0) n14t= igeo(15,i)
702 IF (n14s==0) n14s= igeo(15,i)
704 IF (n14r==0) n14r= igeo(15,i)
709 n14s=
max(n14r,n14s,n14t)
711 npts=
max(npts,igeo(15,i),n14s)
719 IF (npt == 0) npt = 222
720 nptr=
max(nptr,npt/100)
721 npts=
max(npts,mod(npt/10,10))
722 nptt=
max(nptt,mod(npt,10))
737 IF(igtyp == 19) nptt_ply =
max(nptt_ply, igeo(44,i))
743 IF (iwplaall == 1)
THEN
744 idx = 13247 + 4*mx_ply_anim
745 nmax =
min(100,nipmax)
747 IF (anim_ce(idx + i) == 0)
THEN
749 nce_ani = nce_ani + 1
753 IF (iwplafull == 1)
THEN
755 idx = 13547 + 4*mx_ply_anim
756 nmax =
min(100,nipmax)
760 IF (anim_ce(idx + ius) == 0 .AND. anim_wpla(i) > 0)
THEN
761 anim_ce(idx + ius) = 1
762 nce_ani = nce_ani + 1
766 ELSEIF (iwplafull == 2)
THEN
768 idx = 13547 + 4*mx_ply_anim
769 nmax =
min(100,nipmax)
773 IF (anim_ce(idx + ius) == 0)
THEN
774 anim_ce(idx + ius) = 1
775 nce_ani = nce_ani + 1
779 ENDIF !
IF (iwplafull == 1)
781 IF( ibrick_stressall == 1 )
THEN
787 anim_st(10+ (i*100) + (j*10) + k)=1
788 nst_ani = nst_ani + 1
797 anim_st(2010+ k + (j*10) + (i*2010) ) = 1
798 nst_ani = nst_ani + 1
804 IF( igtyp15 == 1 )
THEN
806 anim_st(2010+ (j*10) ) = 1
807 nst_ani = nst_ani + 1
812 IF( ibrick_strainall == 1 )
THEN
818 anim_st(1010+ (i*100) + (j*10) + k)=1
819 nst_ani = nst_ani + 1
828 anim_st(22110+ k + (j*10) + (i*2010) ) = 1
829 nst_ani = nst_ani + 1
835 IF( igtyp15 == 1 )
THEN
837 anim_st(22110+ (j*10) ) = 1
838 nst_ani = nst_ani + 1
843 IF( ibrick_epspall == 1)
THEN
848 anim_st(42210 + (i*100) + (j*10) + k) = 1
849 nst_ani = nst_ani + 1
857 anim_st(43210 + k + (j*10) + (i*2010)) = 1
858 nst_ani = nst_ani + 1
864 IF (igtyp15 == 1)
THEN
866 anim_st(43210 + (j*10)) = 1
867 nst_ani = nst_ani + 1
872 IF ( ibeam_epspall > 0 )
THEN
873 IF (nipmax_beam <= 100)
THEN
876 nfe_ani = nfe_ani + 1
882 IF (iepspnlall == 1)
THEN
883 idx = 4*mx_ply_anim + 14567
884 IF (anim_ce(idx) ==
THEN
886 nce_ani = nce_ani + 1
888 IF (anim_ce(idx+1) == 0)
THEN
890 nce_ani = nce_ani + 1
892 IF (anim_ce(idx+2) == 0)
THEN
894 nce_ani = nce_ani + 1
896 IF (nipmax <= 11)
THEN
898 IF (anim_ce(idx+2+i) == 0)
THEN
900 nce_ani = nce_ani + 1
906 ! non-local plastic strain rate
for shells
907 IF (iepsdnlall == 1)
THEN
908 idx = 4*mx_ply_anim + 14581
909 IF (anim_ce(idx) == 0)
THEN
911 nce_ani = nce_ani + 1
913 IF (anim_ce(idx+1) == 0)
THEN
915 nce_ani = nce_ani + 1
917 IF (anim_ce(idx+2) == 0)
THEN
919 nce_ani = nce_ani + 1
921 IF (nipmax <= 11)
THEN
923 IF (anim_ce(idx+2+i) == 0)
THEN
925 nce_ani = nce_ani + 1
932 IF (itsaiwuall == 1)
THEN
933 idx = 14597 + 4*mx_ply_anim
934 nmax =
min(100,nipmax)
936 IF (anim_ce(idx + i) == 0)
THEN
938 nce_ani = nce_ani + 1
941 ELSEIF (itsaiwuall == 2)
THEN
943 idx = 14897 + 4*mx_ply_anim
944 nmax =
min(100,nipmax)
948 IF (anim_ce(idx + ius) == 0)
THEN
949 anim_ce(idx + ius) = 1
950 nce_ani = nce_ani + 1
956 IF (itsaiwufull > 0)
THEN
958 idx = 14897 + 4*mx_ply_anim
959 itsaiwufull =
min(100,itsaiwufull)
961 ius = 10*(itsaiwufull-1) + j
962 IF (anim_ce(idx + ius) == 0)
THEN
963 anim_ce(idx + ius) = 1
964 nce_ani = nce_ani + 1
971 nv_ani = nv_ani + anim_v(i)
972 nt_ani = nt_ani + anim_t(i)
973 ne_ani = ne_ani + anim_e(i)
974 nn_ani = nn_ani + anim_n(i)
975 nst_ani = nst_ani + anim_st(i)
976 nse_ani = nse_ani + anim_se(i)
977 nct_ani = nct_ani + anim_ct(i)
978 nce_ani = nce_ani + anim_ce(i)
979 nft_ani = nft_ani + anim_ft(i)
980 nfe_ani = nfe_ani + anim_fe(i)
982 IF(anim_v(12) == 1)nv_ani=nv_ani+1
983 IF(anim_v(4)==1.AND.animcont == 0) nv_ani=nv_ani-1
984 IF(anim_v(27)==1)nv_ani=nv_ani+1
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)