46
47
48
49
50
51
52
53
54
55
56 USE python_funct_mod, only : python_
60 USE sensor_mod
62 USE matparam_def_mod, ONLY : matparam_struct_
63 use glob_therm_mod
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "com04_c.inc"
72#include "param_c.inc"
73#include "scr03_c.inc"
74#include "scr17_c.inc"
75
76
77
78 TYPE(PYTHON_), INTENT(IN) :: PYTHON
79 TYPE(glob_therm_) ,intent(in) :: glob_therm
80 INTEGER IBFV(NIFV,*),NPC(*), NPC1(*), IBCL(NIBCLD,*), IPRES(NIBCLD,*),
81 . ISKEW(*), ISKN(LISKN,*), ITABM1(*),
82 . LACCELM(3,*),INSEL(*),IBCSLAG(5,*),
83 . IPM(NPROPMI,), IGEO(NPROPGI,NUMGEO),IBCV(GLOB_THERM%NICONV,*),
84 . IBCR(GLOB_THERM%NIRADIA,*),IBFFLUX(GLOB_THERM%NITFLUX,*)
85 INTEGER ,DIMENSION(NIFV,NFXVEL) ,INTENT(INOUT) :: IBFVEL
86 INTEGER, INTENT(IN) :: NIMPVEL, NIMPDISP, NIMPACC
87 INTEGER ,DIMENSION(GLOB_THERM%NIFT,GLOB_THERM%NFXTEMP) ,INTENT(INOUT) :: IBFT
88 my_real pm(npropm,nummat), geo(npropg,numgeo),skew(lskew,*), pld(*),bufmat(*)
89 TYPE(TTABLE) , DIMENSION(NTABLE) ::
90 DOUBLE PRECISION BUFGEO(*)
91 INTEGER NOM_OPT(LNOPT1,*)
92 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
93 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
94
95
96
97 INTEGER ISERV(18), IFLAG1, IFLAG2, IFLAG3, I,II,ILAW,J,JJ,K,I1,
98 . IS,IGTYP,NF,NOSKEW,ND,IUN,IFAIL,IADD,NFUNC,NFUND,IEXPAN,IFUNC,
99 . IERR1,IERR2,IP,IR, KDIR, ICOND, IFUNCT, OK, ITABLE,
100 . ISK,IFC,IFD,IC1,IC2,ID1,ID2,NMUAL,NOGD,NC,IFLAG,ITENS,
101 . ICHK, IFLAG0, NI,EFUNC,IE,IE2,IFE,NRATE,,H,NP1,NP2,J1,K1,
102 . LOAD,UNLOAD, NTY,IDN,IDT,PN1,PN2,PT1,PT2,KK,
103 . IFRIC1,IFRIC2,IDAMP1,IDAMP2,LOAD0,UNLOAD0,NF2,FUNC,FUND,IOK,ISENS,IMAT,IEOS,
104 . A_FUNC, B_FUNC
105 LOGICAL IS_FOUND
106
107 INTEGER NINTRI
108
110 . pun,x0,dx,dy,deri,e,g,mual(10),mu,gs,rbulk,emax,gmax,e0,epsmax,
111 . yfac,deri0,x1,eps0,epst1,epst2,y0,y1,dydx,dtds,fac(6),fac1,fac2,
112 . s1,s2,t1,t2,xx1,x2,yy1,y2,sx,ty,xscale,alpha1,
alpha2,
113 . stiff,stiff0,kc,kt,nu,young,derik(20),x_scale
115 . , DIMENSION(:), ALLOCATABLE :: stress,stretch
116 INTEGER ID
117 CHARACTER(LEN=NCHARTITLE) :: TITR
118 CHARACTER*40 MESS
119 CHARACTER*80 MESS1
120 DATA iun/1/
121
122
123
124
125
126
127
128 INTEGER ICHECK
129 INTEGER NSTART
130
131
132
134
135
136
137 INTEGER USR2SYS
138
139 DATA mess/'11TH MATERIAL LAW DEFINITION '/
140 DATA pun/0.1/
141
142
143
144 iflag1=0
145 iflag2=0
146 nf=0
147
148
149
150
151
152 15 CONTINUE
153
154
155
156 DO 300 i=1,nummat
157
159 CALL fretitl2(titr,ipm(npropmi-ltitr+1,i),ltitr)
160 ilaw=nint(pm(19,i))
161
162 IF(ilaw == 11) THEN
163
164
165 IF(nint(pm(51,i))/=0)THEN
166 pm(51,i) =
usr2sys(nint(pm(51,i)),itabm1,mess,
id)+pun
167 ENDIF
168
169 DO j=1,10
170 iserv(j)=ipm(10+j,i)
171 enddo
172 DO 230 k=1,10
173 IF(iserv(k)/=0) THEN
174 DO j=1,nfunct
175 IF(iserv(k) == npc1(j)) THEN
176 ipm(10+k,i)=j
177
178
179 IF(k == 1)THEN
180 ic1 = npc(j)
181 ic2 = npc(j+1)
182 jj=0
183 DO ii = ic1,ic2-2,2
184 jj = jj+1
185 y0 = pld(ii+1)
186 IF(y0 <= zero)THEN
187 CALL ancmsg(msgid=132,msgtype=msgerror,anmode=aninfo,
188 . i1=
id, i2=iserv(k), i3=jj,
189 . c1=titr,
190 . r1=y0)
191 EXIT
192 ENDIF
193 ENDDO
194 ENDIF
195
196 GOTO 230
197 ENDIF
198 enddo
199 ipm(10+k,i) = 0
200 CALL ancmsg(msgid=126,msgtype=msgerror,anmode=aninfo_blind_1,
202 . c1=titr,
203 . i2=iserv(k))
204 ENDIF
205 230 CONTINUE
206
207 ELSE IF(ilaw == 18) THEN
208 nf=ipm(10,i)
209 DO 250 k=1,nf
210 is=ipm(10+k,i)
211 IF(is/=0)THEN
212 DO j=1,nfunct
213 IF(is == npc1(j)) THEN
214 ipm(10+k,i)=j
215 GOTO 250
216 ENDIF
217 ENDDO
219 . msgtype=msgerror,
220 . anmode=aninfo_blind_1,
222 . c1=titr,
223 . i2=is)
224 ENDIF
225 250 CONTINUE
226
227 ELSE IF(ilaw == 21) THEN
228
229 is=ipm(11,i)
230 IF(is/=0) THEN
231 DO 260 j=1,nfunct
232 IF(is == npc1(j)) THEN
233 ipm(11,i)=j
234 GOTO 183
235 ENDIF
236 260 CONTINUE
237 ENDIF
239 . msgtype=msgerror,
240 . anmode=aninfo_blind_1,
242 . c1=titr,
243 . i2=is)
244
245
246 ELSE IF(ilaw == 43) THEN
247 efunc = 0
248 nf=ipm(10,i)
249 IF(ipm(10+nf,i) /= 0)efunc=1
250 DO 243 k=1,nf
251 is=ipm(10+k,i)
252 IF(is/=0)THEN
253 DO j=1,nfunct
254 IF(is == npc1(j)) THEN
255 ipm(10+k,i)=j
256 GOTO 243
257 ENDIF
258 ENDDO
260 . msgtype=msgerror,
261 . anmode=aninfo_blind_1,
263 . c1=titr,
264 . i2=is)
265 ENDIF
266 243 CONTINUE
267 IF (efunc > 0) THEN
268 ife=ipm(10+nf,i)
269 IF(nf > efunc)THEN
270 ie =npc(ife)
271 ie2=npc(ife+1)
272 DO ii = ie+1,ie2-3,2
273 IF(pld(ii) < pld(ii+2))THEN
275 . msgtype=msgerror,
276 . anmode=aninfo,
278 . c1=titr)
279 EXIT
280 ENDIF
281 ENDDO
282 ENDIF
283 ENDIF
284
285 ELSE IF (ilaw == 52) THEN
286 DO 52 k = 1,ipm(226,i)
287 itable = ipm(226+k,i)
288 IF(itable/=0)THEN
289 DO j=1,ntable
290 IF(itable == table(j)%NOTABLE) THEN
291 ipm(226+k,i)=j
292 itable=ipm(226+k,i)
293 GOTO 52
294 ENDIF
295 END DO
297 . msgtype=msgerror,
298 . anmode=aninfo,
300 . c1=titr,
301 . i2=itable)
302 ENDIF
303 52 CONTINUE
304
305
306 ELSE IF(ilaw == 59) THEN
307 nf = ipm(10,i)
308 DO 280 k=1,nf
309 is = ipm(10+k,i)
310 IF (is /= 0) THEN
311 DO j=1,nfunct
312 IF(is == npc1(j)) THEN
313 ipm(10+k,i)=j
314 GOTO 280
315 ENDIF
316 ENDDO
318 . msgtype=msgerror,
319 . anmode=aninfo_blind_1,
321 . c1=titr,
322 . i2=is)
323 ENDIF
324 280 CONTINUE
325
326 IF (nf > 0)THEN
327 iadd = ipm(7,i) - 1
328 e = bufmat(iadd+1)
329 g = bufmat(iadd+2)
330 nrate = bufmat(iadd+3)
331 emax = zero
332 gmax = zero
333 DO k=1,2*nrate-1,2
334 idn = ipm(10+k,i)
335 idt = ipm(10+k+1,i)
336 pn1 = npc(idn)
337 pn2 = npc(idn+1)
338 pt1 = npc(idt)
339 pt2 = npc(idt+1)
340 kk = (k+1)/2
341 yfac= bufmat(iadd+7+kk)
342 DO jj = pn1,pn2-4,2
343 dx = pld(jj+2) - pld(jj)
344 dy = pld(jj+3) - pld(jj+1)
345 deri = abs(dy*yfac / dx)
346 emax =
max(emax, deri)
347 ENDDO
348 DO jj = pt1,pt2-4,2
349 dx = pld(jj+2) - pld(jj)
350 dy = pld(jj+3) - pld(jj+1)
351 deri = abs(dy*yfac / dx)
352 gmax =
max(gmax, deri)
353 ENDDO
354 ENDDO
355 IF (emax > e) THEN
356 bufmat(iadd+1) = emax
358 . msgtype=msgwarning,
359 . anmode=aninfo,
361 . c1=titr,c2='YOUNG MODULUS',r1=emax)
362 ENDIF
363 IF (gmax > g) THEN
364 bufmat(iadd+2) = gmax
366 . msgtype=msgwarning,
367 . anmode=aninfo,
369 . c1=titr,c2='SHEAR MODULUS',r1=gmax)
370 ENDIF
371 ENDIF
372
373
374 ELSE IF(ilaw == 60) THEN
375 efunc = 0
376 nf=ipm(10,i)
377 IF(ipm(10+nf,i) /= 0)THEN
378 efunc=1
379 IF(ipm(10+nf-1,i) /= 0 ) efunc =2
380 ENDIF
381 DO 287 k=1,nf
382 is=ipm(10+k,i)
383 IF(is/=0)THEN
384 DO j=1,nfunct
385 IF(is == npc1(j)) THEN
386 ipm(10+k,i)=j
387 GOTO 287
388 ENDIF
389 ENDDO
391 . msgtype=msgerror,
392 . anmode=aninfo_blind_1,
394 . c1=titr,
395 . i2=is)
396 ENDIF
397 287 CONTINUE
398 IF (efunc > 0) THEN
399 ife=ipm(10+nf,i)
400 IF(nf > efunc)THEN
401 ie =npc(ife)
402 ie2=npc(ife+1)
403 DO ii = ie+1,ie2-3,2
404 IF(pld(ii) < pld(ii+2))THEN
406 . msgtype=msgerror,
407 . anmode=aninfo,
409 . c1=titr)
410 EXIT
411 ENDIF
412 ENDDO
413 ENDIF
414 ENDIF
415
416 ELSE IF (ilaw == 65) THEN
417 nf = ipm(10,i)
418 DO 296 k=1,nf
419 is = ipm(10+k,i)
420 IF (is /=0)THEN
421 DO j=1,nfunct
422 IF(is == npc1(j)) THEN
423 ipm(10+k,i)=j
424 GOTO 296
425 ENDIF
426 ENDDO
428 . msgtype=msgerror,
429 . anmode=aninfo_blind_1,
431 . c1=titr,
432 . i2=is)
433 ENDIF
434 296 CONTINUE
435
436 IF (nf > 0) THEN
437 iadd = ipm(7,i) - 1
438 nrate= bufmat(iadd+1)
439 e = bufmat(iadd+2)
440 g = bufmat(iadd+8)
441
442
443 DO k=1,nrate
444 ifc = ipm(10+k,i)
445 ifd = ipm(10+k+nrate,i)
446 yfac=bufmat(iadd+14+nrate+k)
447 IF (ifc > 0 .AND. ifd > 0) THEN
448 ic1 = npc(ifc)
449 ic2 = npc(ifc+1)
450 id1 = npc(ifd)
451 id2 = npc(ifd+1)
452 ierr1 = 0
453 ierr2 = 0
454
455 x0 = pld(ic1)
456 DO ii = ic1,ic2-4,2
457 jj = ii+2
458 dx = pld(jj) - x0
459 dy = pld(jj+1) - pld(ii+1)
460 deri = dy*yfac / dx
461 dx = dx*(e - deri)/e
462 x0 = pld(jj)
463 IF (dx < zero) ierr1 = 1
464
465 ENDDO
466
467 x0 = pld(id1)
468 DO ii = id1,id2-4,2
469 jj = ii+2
470 dx = pld(jj) - x0
471 dy = pld(jj+1) - pld(ii+1)
472 deri = dy *yfac/ dx
473 dx = dx*(e - deri)/e
474 IF (dx < zero) ierr2 = 1
475 x0 = pld(jj)
476
477 ENDDO
478 IF (ierr1 == 1) THEN
480 . msgtype=msgerror,
481 . anmode=aninfo_blind_1,
483 . c1=titr,
484 . i2=npc1(ifc))
485 ENDIF
486 IF (ierr2 == 1) THEN
488 . msgtype
489 . anmode=aninfo_blind_1,
491 . c1=titr,
492 . i2=npc1(ifd))
493 ENDIF
494 ENDIF
495 ENDDO
496 ENDIF
497
498 ELSE IF (ilaw == 75) THEN
499
500 iadd = ipm(7,i)-1
501 ii = nint(bufmat(iadd+6)
502 jj =
nintri(ii,ipm,npropmi,nummat,1)
503 bufmat(iadd+6) = jj
504 IF(jj == 0) THEN
506 . msgtype=msgerror,
507 . anmode=aninfo,
509 . c1=titr)
510 ENDIF
511
512 ELSE IF (ilaw == 78) THEN
513 nf = ipm(10,i)
514 DO 378 k=1,nf
515 is = ipm(10+k,i)
516 IF (is /=0)THEN
517 DO j=1,nfunct
518 IF(is == npc1(j)) THEN
519 ipm(10+k,i)=j
520 GOTO 378
521 ENDIF
522 ENDDO
524 . msgtype=msgerror,
525 . anmode=aninfo_blind_1,
527 . c1=titr,
528 . i2=is)
529 ENDIF
530 378 CONTINUE
531 IF (nf > 0) THEN
532 ife=ipm(10+nf,i)
533 ie =npc(ife)
534 ie2=npc(ife+1)
535 DO ii = ie+1,ie2-3,2
536 IF(pld(ii) < pld(ii+2))THEN
538 . msgtype=msgerror,
539 . anmode=aninfo,
541 . c1=titr)
542 EXIT
543 ENDIF
544 ENDDO
545 ENDIF
546
547 ELSEIF (ilaw < 29) THEN
548
549 nf = ipm(10,i)
550 IF (nf > 0) THEN
551 DO k=1,nf
552 is = ipm(10+k,i)
553 ok = 0
554 IF (is > 0) THEN
555 DO j=1,nfunct
556 IF(is == npc1(j)) THEN
557 ipm(10+k,i)=j
558 ok = 1
559 EXIT
560 ENDIF
561 ENDDO
562 IF (ok == 0) THEN
564 . msgtype=msgerror,
565 . anmode=aninfo_blind_1,
567 . c1=titr,
568 . i2=is)
569 ENDIF
570 ENDIF
571 ENDDO
572 ENDIF
573 ENDIF
574
575183 iexpan = ipm(218,i)
576 IF(iexpan > 0)THEN
577 is=ipm(219,i)
578 IF(is > 0)THEN
579 DO j=1,nfunct
580 IF(is == npc1(j)) THEN
581 ipm(219,i)=j
582 GOTO 299
583 ENDIF
584 ENDDO
586 . msgtype=msgerror,
587 . anmode=aninfo_blind_1,
589 . c1=titr,
590 . i2=is)
591 ENDIF
592 ENDIF
593 299 CONTINUE
594
595
596 300 CONTINUE
597
598
599
600 DO imat=1,nummat
601 ieos = ipm(4,imat)
602
603 IF(ieos == 17)THEN
604
606 CALL fretitl2(titr,ipm(npropmi-ltitr+1,imat),ltitr)
607 ilaw=nint(pm(19,i))
608
609 a_func = pm(35,imat)
610 IF(a_func /= 0)THEN
611 is_found = .false.
612 DO j=1,nfunct
613 IF(a_func == npc1(j)) THEN
614 pm(35,imat)=j
615 is_found = .true.
616 EXIT
617 ENDIF
618 ENDDO
619 IF(.NOT.is_found)
CALL ancmsg(msgid=125,msgtype=msgerror,anmode=aninfo_blind_1, i1=
id, c1=titr, i2=a_func)
620 ENDIF
621
622 b_func = pm(36,imat)
623 IF(b_func /= 0)THEN
624 is_found = .false.
625 DO j=1,nfunct
626 IF(b_func == npc1(j)) THEN
627 pm(36,imat)=j
628 is_found = .true.
629 EXIT
630 ENDIF
631 ENDDO
632 IF(.NOT.is_found)
CALL ancmsg(msgid=125,msgtype=msgerror,anmode=aninfo_blind_1, i1=
id, c1=titr, i2=b_func)
633 ENDIF
634
635 ENDIF
636
637 ENDDO
638
639
640
641
642
643 DO 420 i=1,numgeo
644
645 igtyp=igeo(11,i)
646
648 CALL fretitl2(titr,igeo(npropgi-ltitr+1,i),ltitr)
649
650 IF (igtyp == 4) THEN
651
652 iserv(1)=igeo(101,i)
653 iserv(2)=igeo(102,i)
654 iserv(3)=igeo(103,i)
655 load0 =igeo(101,i)
656 unload0=igeo(103,i)
657 iserv(4)=4
658 iserv(5)=14
659 iserv(6)=18
660 h = geo(7,i)
661 DO 330 k=1,3
662 IF(iserv(k)/=0) THEN
663 DO 320 j=1,nfunct
664 IF(iserv(k) == npc1(j)) THEN
665 geo(iserv(k+3),i)=j+pun
666 igeo(100+k,i)=j
667 GO TO 330
668 ENDIF
669 320 CONTINUE
671 . msgtype=msgerror,
672 . anmode=aninfo_blind_1,
674 . c1=titr,
675 . i2=iserv(k))
676 ENDIF
677 330 CONTINUE
678 IF (igeo(119,i) /=0)THEN
679 errf = 1
680 DO j=1,nfunct
681 IF(igeo(119,i) == npc1(j)) THEN
682 igeo(119,i)=j
683 errf = 0
684 EXIT
685 ENDIF
686 ENDDO
687 IF (errf == 1) THEN
689 . msgtype=msgerror,
690 . anmode=aninfo_blind_1,
692 . c1=titr,
693 . i2=igeo(119,i))
694 ENDIF
695 ENDIF
696
697 yfac = geo(132,i)
698 ifunc = igeo(119,i)
699 x_scale = geo(18,i)
700 IF (ifunc /= 0)THEN
701 ic1 = npc(ifunc)
702 ic2 = npc(ifunc+1)
703 x0 = pld(ic1)
704 emax = zero
705 DO ii = ic1,ic2-4,2
706 jj = ii+2
707 dx = pld(jj) - x0
708 dy = pld(jj+1) - pld(ii+1)
709 y0 = pld(ii+1)
710 y1 = pld(jj+1)
711 deri = yfac * x_scale * dy / dx
712 x1 = pld(jj)
713 emax =
max(emax, deri)
714 x0 = pld(jj)
715 ENDDO
716 geo(141,i) = emax
717 ENDIF
718
719 IF (h == 7)THEN
720 xscale=geo(39,i)
721 load=igeo(101,i)
722 unload=igeo(103,i)
723 np1 = (npc(load+1)-npc(load)) / 2
724 np2 = (npc(unload+1)-npc(unload)) / 2
725 alpha1=zero
727
728 IF(.false.) THEN
729
730 ELSE
731 DO 777 j=2,np1
732 j1=2*(j-2)
733 s1=pld(npc(load)+j1)*xscale
734 s2=pld(npc(load)+j1+2)*xscale
735 t1=pld(npc(load)+j1+1)
736 t2=pld(npc(load)+j1+3)
737 ty=zero
738 sx=zero
739 IF ( s1<=zero .AND.s2> zero)alpha1=(t2-t1)/(s2-s1)
740 DO k=2,np2
741 k1=2*(k-2)
742 xx1=pld(npc(unload)+k1)*xscale
743 x2 =pld(npc(unload)+k1+2)*xscale
744 yy1=pld(npc(unload)+k1+1)
745 y2 =pld(npc(unload)+k1+3)
746 IF ( xx1<=zero .AND.x2> zero)
alpha2=(y2-yy1)/(x2-xx1)
747 IF (y2>=t1 .AND.yy1<=t2.AND.x2>=s1.AND.xx1<=s2)THEN
748 dydx = (y2-yy1) / (x2-xx1)
749 dtds = (t2-t1) / (s2-s1)
750 IF (dydx > dtds) THEN
751 sx = (t1-yy1-dtds*s1+dydx*xx1) / (dydx-dtds)
752 ty = t1 + dtds*(sx - s1)
753 ENDIF
754 IF (ty/=zero .AND. sx/=zero )THEN
755 IF (ty>=yy1.AND.ty<=y2.AND.sx>=xx1.AND.sx<=x2
756 . .AND.sx>=s2.AND.ty<=t2)THEN
757
759 . msgtype=msgerror,
760 . anmode=aninfo_blind_1,
761 . c1=titr,
762 . i1=unload0,
763 . i2=load0)
764 GOTO 777
765 ENDIF
766 ENDIF
767 ENDIF
768 ENDDO
769 777 CONTINUE
772 . msgtype=msgerror,
773 . anmode=aninfo_blind_1,
774 . c1=titr,
775 . i1=unload,
776 . i2=load)
777 ENDIF
778 ENDIF
779 ENDIF
780
781 ELSEIF(igtyp == 12) THEN
782
783 iserv(1)=igeo(101,i)
784 iserv(2)=igeo(102,i)
785 iserv(3)=igeo(103,i)
786 h = geo(7,i)
787 DO 331 k=1,3
788 IF(iserv(k)/=0) THEN
789 DO j=1,nfunct
790 IF(iserv(k) == npc1(j)) THEN
791 igeo(100+k,i)=j
792 GO TO 331
793 ENDIF
794 ENDDO
796 . msgtype=msgerror,
797 . anmode=aninfo_blind_1,
799 . c1=titr,
800 . i2=iserv(k))
801 ENDIF
802 331 CONTINUE
803 IF (igeo(201,i) > 0) THEN
804 DO j=1,ntable
805 IF (igeo(201,i) == table(j)%NOTABLE) THEN
806 igeo(201,i) = j
807 GOTO 332
808 ENDIF
809 END DO
811 . msgtype=msgerror,
812 . anmode=aninfo,
814 . c1=titr,
815 . i2=itable)
816 ENDIF
817 332 CONTINUE
818
819 IF (igeo(119,i) /=0)THEN
820 errf = 1
821 DO j=1,nfunct
822 IF(igeo(119,i) == npc1(j)) THEN
823 igeo(119,i)=j
824 errf = 0
825 EXIT
826 ENDIF
827 ENDDO
828 IF (errf == 1) THEN
830 . msgtype=msgerror,
831 . anmode=aninfo_blind_1,
833 . c1=titr,
834 . i2=igeo(119,i))
835 ENDIF
836 ENDIF
837
838 yfac = geo(132,i)
839 ifunc = igeo(119,i)
840 x_scale = geo(18,i)
841 IF (ifunc /= 0)THEN
842 ic1 = npc(ifunc)
843 ic2 = npc(ifunc+1)
844 x0 = pld(ic1)
845 emax = zero
846 DO ii = ic1,ic2-4,2
847 jj = ii+2
848 dx = pld(jj) - x0
849 dy = pld(jj+1) - pld(ii+1)
850 y0 = pld(ii+1)
851 y1 = pld(jj+1)
852 deri = yfac * x_scale * dy / dx
853 x1 = pld(jj)
854 emax =
max(emax, deri)
855 x0 = pld(jj)
856 ENDDO
857 geo(141,i) = emax
858 ENDIF
859
860 IF (h == 7)THEN
861 xscale=geo(39,i)
862 load=igeo(101,i)
863 unload=igeo(103,i)
864 np1 = (npc(load+1)-npc(load)) / 2
865 np2 = (npc(unload+1)-npc(unload)) / 2
866 alpha1=zero
868
869 IF(.false.) THEN
870
871 ELSE
872
873
874 DO 778 j=2,np1
875 j1=2*(j-2)
876 s1=pld(npc(load)+j1)*xscale
877 s2=pld(npc(load)+j1+2)*xscale
878 t1=pld(npc(load)+j1+1)
879 t2=pld(npc(load)+j1+3)
880 ty=zero
881 sx=zero
882 IF ( s1<=zero .AND.s2> zero)alpha1=(t2-t1)/(s2-s1)
883 DO k=2,np2
884 k1=2*(k-2)
885 xx1=pld(npc(unload)+k1)*xscale
886 x2=pld(npc(unload)+k1+2)*xscale
887 yy1=pld(npc(unload)+k1+1)
888 y2=pld(npc(unload)+k1+3)
889 IF ( xx1<=zero .AND.x2> zero)
alpha2=(y2-yy1)/(x2-xx1)
890 IF (y2>=t1 .AND.yy1<=t2.AND.x2>=s1.AND.xx1<=s2)THEN
891 dydx = (y2-yy1) / (x2-xx1)
892 dtds = (t2-t1) / (s2-s1)
893 IF (dydx > dtds) THEN
894 sx = (t1-yy1-dtds*s1+dydx*xx1) / (dydx-dtds)
895 ty = t1 + dtds*(sx - s1)
896 ENDIF
897 IF (ty/=zero .AND. sx/=zero )THEN
898 IF (ty>=yy1.AND.ty<=y2.AND.sx>=xx1.AND.sx<=x2
899 . .AND.sx>=s2.AND.ty<=t2)THEN
901 . msgtype=msgerror,
902 . anmode=aninfo_blind_1,
903 . c1=titr,
904 . i1=unload,
905 . i2=load)
906 GOTO 778
907 ENDIF
908 ENDIF
909 ENDIF
910 ENDDO
911 778 CONTINUE
914 . msgtype=msgerror,
915 . anmode=aninfo_blind_1,
916 . c1=titr,
917 . i1=unload,
918 . i2=load)
919 ENDIF
920 ENDIF
921 ENDIF
922
923 ELSE IF(igtyp == 7) THEN
924
925 iserv(1)=nint(geo(19,i))
926 iserv(2)=nint(geo(44,i))
927 iserv(3)=19
928 iserv(4)=44
929 DO 360 k=1,2
930 DO 340 j=1,nfunct
931 IF(iserv(k) == npc1(j)) THEN
932 geo(iserv(k+2),i)=j+pun
933 GO TO 360
934 ENDIF
935 340 CONTINUE
937 . msgtype=msgerror,
938 . anmode=aninfo_blind_1,
940 . c1=titr,
941 . i2=iserv(k))
942 360 CONTINUE
943
944 ELSEIF(igtyp==8.OR.igtyp==13) THEN
945
946 DO 400 j=1,6
947 iserv(1)=igeo(101+3*(j-1),i)
948 iserv(2)=igeo(102+3*(j-1),i)
949 iserv(3)=igeo(103+3*(j-1),i)
950 iflag1 = 0
951 iflag2 = 0
952 iflag3 = 0
953 IF(iserv(1) == 0)iflag1=1
954 IF(iserv(2) == 0)iflag2=1
955 IF(iserv(3) == 0)iflag3=1
956 IF(iflag1+iflag2GOTO 400
957 DO 380 k=1,nfunct
958 IF(iserv(1) == npc1(k)) THEN
959 igeo(101+3*(j-1),i) = k
960 iflag1=1
961 ENDIF
962 IF(iserv(2) == npc1(k)) THEN
963 igeo(102+3*(j-1),i) = k
964 iflag2=1
965 ENDIF
966 IF(iserv(3) == npc1(k)) THEN
967 igeo(103+3*(j-1),i) = k
968 iflag3=1
969 ENDIF
970 IF(iflag1+iflag2+iflag3 == 3)GOTO 400
971 380 CONTINUE
972
973 IF(iflag1 == 0) id1=iserv(1)
974 IF(iflag2 == 0) id1=iserv(2)
975 IF(iflag3 == 0) id1=iserv(3)
977 . msgtype=msgerror,
978 . anmode=aninfo_blind_1,
980 . c1=titr,
981 . i2=id1)
982 400 CONTINUE
983
984 DO j=1, 6
985 errf = 1
986 IF (igeo(119+j-1,i) /=0)THEN
987 DO k=1,nfunct
988 IF(igeo(119+j-1,i) == npc1(k)) THEN
989 igeo(119+j-1,i) = k
990 errf = 0
991 EXIT
992 ENDIF
993 ENDDO
994 IF (errf == 1)THEN
995 IF (igtyp == 8)THEN
996 ELSE
997 ENDIF
999 . msgtype=msgerror,
1000 . anmode=aninfo_blind_1,
1002 .
1003 . i2=igeo(119+j-1,i))
1004 ENDIF
1005 ENDIF
1006 ENDDO
1007
1008 DO j=1, 6
1009 yfac = geo(131+j,i)
1010 ifunc = igeo(118+j,i)
1011 x_scale=geo(44+4*(j-1),i)
1012 IF (ifunc /= 0)THEN
1013 ic1 = npc(ifunc)
1014 ic2 = npc(ifunc+1)
1015 x0 = pld(ic1)
1016 emax = zero
1017 DO ii = ic1,ic2-4,2
1018 jj = ii+2
1019 dx = pld(jj) - x0
1020 dy = pld(jj+1) - pld(ii+1)
1021 y0 = pld(ii+1)
1022 y1 = pld(jj+1)
1023 deri = yfac * x_scale * dy / dx
1024 x1 = pld(jj)
1025 emax =
max(emax, deri)
1026 x0 = pld(jj)
1027 ENDDO
1028 geo(140+j,i) = emax
1029 ENDIF
1030 ENDDO
1031
1032 DO 877 j=1, 6
1033 IF(j<= 2)THEN
1034 h=geo(7*j,i)
1035 ELSE
1036 h=geo(14+(j-2)*4,i)
1037 ENDIF
1038 IF (h == 7)THEN
1039 IF (j==1)THEN
1040 xscale=geo(39,i)
1041 ELSE
1042 xscale=geo(172+j,i)
1043 ENDIF
1044 load=igeo(101+3*(j-1),i)
1045 unload=igeo(103+3*(j-1),i)
1046 np1 = (npc(load+1)-npc(load))*half
1047 np2 = (npc(unload+1)-npc(unload))*half
1048 alpha1=zero
1050
1051 IF(.false.) THEN
1052
1053 ELSE
1054
1055
1056 DO jj=2,np1
1057 j1=2*(jj-2)
1058 s1=pld(npc(load)+j1)*xscale
1059 s2=pld(npc(load)+j1+2)*xscale
1060 t1=pld(npc(load)+j1+1)
1061 t2=pld(npc(load)+j1+3)
1062 ty=zero
1063 sx=zero
1064 IF ( s1<=zero .AND.s2> zero)alpha1=(t2-t1)/(s2-s1)
1065 DO k=2,np2
1066 k1=2*(k-2)
1067 xx1=pld(npc(unload)+k1)*xscale
1068 x2=pld(npc(unload)+k1+2)*xscale
1069 yy1=pld(npc(unload)+k1+1)
1070 y2=pld(npc(unload)+k1+3)
1071 IF ( xx1<=zero .AND.x2> zero)
alpha2=(y2-yy1)/(x2-xx1)
1072 IF (y2>=t1 .AND.yy1<=t2.AND.x2>=s1.AND.xx1<=s2)THEN
1073 dydx = (y2-yy1) / (x2-xx1)
1074 dtds = (t2-t1) / (s2-s1)
1075 IF (dydx > dtds) THEN
1076 sx = (t1-yy1-dtds*s1+dydx*xx1) / (dydx-dtds)
1077 ty = t1 + dtds*(sx - s1)
1078 ENDIF
1079 IF (ty/=zero .AND. sx/=zero )THEN
1080 IF (ty>=yy1.AND.ty<=y2.AND.sx>=xx1.AND.sx<=x2
1081 . .AND.sx>=s2.AND.ty<=t2)THEN
1082 IF (igtyp == 8)THEN
1083 ELSE
1084 ENDIF
1086 . msgtype=msgerror,
1087 . anmode=aninfo_blind_1,
1088 . c1=titr,
1089 . i1=unload,
1090 . i2=load)
1091 GOTO 877
1092 ENDIF
1093 ENDIF
1094 ENDIF
1095 ENDDO
1096 ENDDO
1098 IF (igtyp == 8)THEN
1099 ELSE
1100 ENDIF
1102 . msgtype=msgerror,
1103 . anmode=aninfo_blind_1,
1104 . c1=titr,
1105 . i1=unload,
1106 . i2=load)
1107 ENDIF
1108 ENDIF
1109 ENDIF
1110 877 CONTINUE
1111
1112
1113
1114
1115 ELSEIF (igtyp==25) THEN
1116
1117 DO 401 j=1,4
1118 iserv(1)=igeo(102+4*(j-1),i)
1119 iserv(2)=igeo(103+4*(j-1),i)
1120 iserv(3)=igeo(104+4*(j-1),i)
1121 iflag1 = 0
1122 iflag2 = 0
1123 iflag3 = 0
1124 IF(iserv(1) == 0)iflag1=1
1125 IF(iserv(2) == 0)iflag2=1
1126 IF(iserv(3) == 0)iflag3=1
1127 IF(iflag1+iflag2+iflag3 == 3)GOTO 401
1128 DO 381 k=1,nfunct
1129 IF(iserv(1) == npc1(k)) THEN
1130 igeo(102+4*(j-1),i) = k
1131 iflag1=1
1132 ENDIF
1133 IF(iserv(2) == npc1(k)) THEN
1134 igeo(103+4*(j-1),i) = k
1135 iflag2=1
1136 ENDIF
1137 IF(iserv(3) == npc1(k)) THEN
1138 igeo(104+4*(j-1),i) = k
1139 iflag3=1
1140 ENDIF
1141 IF(iflag1+iflag2+iflag3 == 3)GOTO 401
1142 381 CONTINUE
1143 IF(iflag1 == 0) id1=iserv(1)
1144 IF(iflag2 == 0) id1=iserv(2)
1145 IF(iflag3 == 0) id1=iserv(3)
1147 . msgtype=msgerror,
1148 . anmode=aninfo_blind_1,
1150 . c1=titr,
1151 . i2=id1)
1152 401 CONTINUE
1153
1154
1155 DO j=1,4
1156 errf = 1
1157 IF (igeo(119+j-1,i) /=0)THEN
1158 DO k=1,nfunct
1159 IF(igeo(119+j-1,i) == npc1(k)) THEN
1160 igeo(119+j-1,i) = k
1161 errf = 0
1162 EXIT
1163 ENDIF
1164 ENDDO
1165 IF (errf == 1)THEN
1167 . msgtype=msgerror,
1168 . anmode=aninfo_blind_1,
1170 . c1=titr,
1171 . i2=igeo(119+j-1,i))
1172 ENDIF
1173 ENDIF
1174 ENDDO
1175
1176 DO j=1, 4
1177 yfac = geo(131+j,i)
1178 ifunc = igeo(118+j,i)
1179 IF (j==1) x_scale = geo(44,i)
1180 IF (j==2) x_scale = geo(48,i)
1181 IF (j==3) x_scale = geo(56,i)
1182 IF (j==4) x_scale = geo(60,i)
1183 IF (ifunc /= 0)THEN
1184 ic1 = npc(ifunc)
1185 ic2 = npc(ifunc+1)
1186 x0 = pld(ic1)
1187 emax = zero
1188 DO ii = ic1,ic2-4,2
1189 jj = ii+2
1190 dx = pld(jj) - x0
1191 dy = pld(jj+1) - pld(ii+1)
1192 y0 = pld(ii+1)
1193 y1 = pld(jj+1)
1194 deri = yfac * x_scale * dy / dx
1195 x1 = pld(jj)
1196 emax =
max(emax, deri)
1197 x0 = pld(jj)
1198 ENDDO
1199 geo(140+j,i) = emax
1200 ENDIF
1201 ENDDO
1202
1203 DO 888 j=1,4
1204 h=igeo(101+(j-1)*4,i)
1205 IF (h == 7)THEN
1206 IF (j==1)THEN
1207 xscale=geo(39,i)
1208 ELSEIF (j==2)THEN
1209 xscale=geo(174,i)
1210 ELSEIF (j==3)THEN
1211 xscale=geo(176,i)
1212 ELSEIF (j==4)THEN
1213 xscale=geo(177,i)
1214 ENDIF
1215 load=igeo(102+4*(j-1),i)
1216 unload=igeo(103+4*(j-1),i)
1217 np1 = (npc(load+1)-npc(load))*half
1218 np2 = (npc(unload+1)-npc(unload))*half
1219 alpha1=zero
1221
1222 IF(.false.) THEN
1223
1224 ELSE
1225
1226 DO jj=2,np1
1227 j1=2*(jj-2)
1228 s1=pld(npc(load)+j1)*xscale
1229 s2=pld(npc(load)+j1+2)*xscale
1230 t1=pld(npc(load)+j1+1)
1231 t2=pld(npc(load)+j1+3)
1232 ty=zero
1233 sx=zero
1234 IF ( s1<=zero .AND.s2> zero)alpha1=(t2-t1)/(s2-s1)
1235 DO k=2,np2
1236 k1=2*(k-2)
1237 xx1=pld(npc(unload)+k1)*xscale
1238 x2=pld(npc(unload)+k1+2)*xscale
1239 yy1=pld(npc(unload)+k1+1)
1240 y2=pld(npc(unload)+k1+3)
1241 IF ( xx1<=zero .AND.x2> zero)
alpha2=(y2-yy1)/(x2-xx1)
1242 IF (y2>=t1 .AND.yy1<=t2.AND.x2>=s1.AND.xx1<=s2)THEN
1243 dydx = (y2-yy1) / (x2-xx1)
1244 dtds = (t2-t1) / (s2-s1)
1245 IF (dydx > dtds) THEN
1246 sx = (t1-yy1-dtds*s1+dydx*xx1) / (dydx-dtds)
1247 ty = t1 + dtds*(sx - s1)
1248 ENDIF
1249 IF (ty/=zero .AND. sx/=zero )THEN
1250 IF (ty>=yy1.AND.ty<=y2.AND.sx>=xx1.AND.sx<=x2
1251 . .AND.sx>=s2.AND.ty<=t2)THEN
1253 .
1254 . anmode=aninfo_blind_1,
1255 . c1=titr,
1256 . i1=unload,
1257 . i2=load)
1258 GOTO 888
1259 ENDIF
1260 ENDIF
1261 ENDIF
1262 ENDDO
1263 ENDDO
1266 . msgtype=msgerror,
1267 . anmode=aninfo_blind_1,
1268 . c1=titr,
1269 . i1=unload,
1270 . i2=load)
1271 ENDIF
1272 ENDIF
1273 ENDIF
1274 888 CONTINUE
1275
1276 ELSEIF (igtyp == 26) THEN
1277 nfunc = igeo(20,i)
1278 nfund = igeo(21,i)
1279 iadd = 100
1280 DO k=1,nfunc
1281 iflag1 = 0
1282 DO j=1,nfunct
1283 IF (igeo(iadd+k,i) == npc1(j)) THEN
1284 igeo(iadd+k,i) = j
1285 iflag1 = 1
1286 EXIT
1287 ENDIF
1288 ENDDO
1289 IF (iflag1 == 0) THEN
1290 ENDIF
1291 ENDDO
1292 iadd = nfunc+100
1293 DO k=1,nfund
1294 iflag1 = 0
1295 DO j=1,nfunct
1296 IF (igeo(iadd+k,i) == npc1(j)) THEN
1297 igeo(iadd+k,i) = j
1298 iflag1 = 1
1299 EXIT
1300 ENDIF
1301 ENDDO
1302 IF (iflag1 == 0) THEN
1303 ENDIF
1304 ENDDO
1305
1306 ELSEIF (igtyp == 27) THEN
1307
1308
1309 iserv(1) = igeo(101,i)
1310 iserv(2) = igeo(102,i)
1311 iserv(3) = 4
1312 iserv(4) = 14
1313 DO k=1,2
1314 iflag1 = 0
1315 IF (iserv(k) /= 0) THEN
1316 DO j=1,nfunct
1317 IF (iserv(k) == npc1(j)) THEN
1318 geo(iserv(k+2),i) = j+pun
1319 igeo(100+k,i) = j
1320 iflag1 = 1
1321 EXIT
1322 ENDIF
1323 ENDDO
1324 IF (iflag1 == 0) THEN
1326 . msgtype=msgerror,
1327 . anmode=aninfo_blind_1,
1329 . c1=titr,
1330 . i2=iserv(k+2))
1331 ENDIF
1332 ENDIF
1333 ENDDO
1334
1335 ifunc = igeo(102,i)
1336 IF (ifunc /= 0)THEN
1337 yfac = geo(132,i)
1338 x_scale = geo(18,i)
1339 ic1 = npc(ifunc)
1340 ic2 = npc(ifunc+1)
1341 x0 = pld(ic1)
1342 emax = zero
1343 DO ii = ic1,ic2-4,2
1344 jj = ii+2
1345 dx = pld(jj) - x0
1346 dy = pld(jj+1) - pld(ii+1)
1347 y0 = pld(ii+1)
1348 y1 = pld(jj+1)
1349 deri = yfac * x_scale * dy / dx
1350 x1 = pld(jj)
1351 emax =
max(emax,deri)
1352 x0 = pld(jj)
1353 ENDDO
1354 geo(141,i) = emax
1355 ENDIF
1356 ENDIF
1357
1358 420 CONTINUE
1359
1360
1361
1362
1363
1364 DO 460 i=1,nconld-npreld
1365 DO 440 j=1,nfunct
1366 IF(ibcl(3,i) == npc1(j)) THEN
1367 ibcl(3,i)=j
1368 GOTO 460
1369 ENDIF
1370 440 CONTINUE
1372 . msgtype=msgerror,
1373 . anmode=aninfo_blind_1,
1374 . c1='CONCENTRED LOADS',
1375 . i1=ibcl(3,i))
1376 460 CONTINUE
1377
1378
1379
1380 DO 500 i=1,npreld
1381 DO 480 j=1,nfunct
1382 IF(ipres(5,i) == npc1(j)) THEN
1383 ipres(5,i)=j
1384 GO TO 500
1385 ENDIF
1386 480 CONTINUE
1388 . msgtype=msgerror,
1389 . anmode=aninfo_blind_1,
1390 . c1='PRESSURE LOADS',
1391 . i1=ipres(5,i))
1392 500 CONTINUE
1393
1394
1395
1396
1397 DO i=1,nimpdisp
1398 ok = 0
1399 DO j=1,nfunct
1400 IF(ibfv(3,i) == npc1(j)) THEN
1401 ibfv(3,i)=j
1402 ok = 1
1403 EXIT
1404 END IF
1405 END DO
1406
1407 IF (ok == 0) THEN
1409 . msgtype=msgerror,
1410 . anmode=aninfo_blind_1,
1411 . c1='IMPOSED DISPLACEMENTS',
1412 . i1=ibfv(3,i))
1413 END IF
1414 END DO
1415
1416 DO i=1,nimpdisp
1417 ok = 0
1418 DO j=1,nfunct
1419 IF (ibfv(15,i)== 0) THEN
1420 ok = 1
1421 EXIT
1422 ELSE
1423 IF(ibfv(15,i) == npc1(j)) THEN
1424 ibfv(15,i)=j
1425 ok = 1
1426 EXIT
1427 ENDIF
1428 ENDIF
1429 END DO
1430 IF (ok == 0) THEN
1432 . msgtype=msgerror,
1433 . anmode=aninfo_blind_1,
1434 . c1='IMPOSED DISPLACEMENTS',
1435 . i1=ibfv(3,i))
1436 END IF
1437 END DO
1438
1439
1440
1441 DO i=1+nimpdisp,nimpvel+nimpdisp
1442 ok = 0
1443 DO j=1,nfunct
1444 IF(ibfv(3,i) == npc1(j)) THEN
1445 ibfv(3,i)=j
1446 ok = 1
1447 EXIT
1448 END IF
1449 END DO
1450 IF (ok == 0) THEN
1452 . msgtype=msgerror,
1453 . anmode=aninfo_blind_1,
1454 . c1='IMPOSED VELOCITIES',
1455 . i1=ibfv(3,i))
1456 END IF
1457 END DO
1458
1459 DO i=1+nimpdisp,nimpvel+nimpdisp
1460 ok = 0
1461 DO j=1,nfunct
1462 IF (ibfv(15,i)== 0) THEN
1463 ok = 1
1464 EXIT
1465 ELSE
1466 IF(ibfv(15,i) == npc1(j)) THEN
1467 ibfv(15,i)=j
1468 ok = 1
1469 EXIT
1470 END IF
1471 END IF
1472 END DO
1473 IF(ok == 0) THEN
1475 . msgtype=msgerror,
1476 . anmode=aninfo_blind_1,
1477 . c1='IMPOSED VELOCITIES',
1478 . i1=ibfv(3,i))
1479 END IF
1480 END DO
1481
1482
1483
1484 DO i=1+nimpvel+nimpdisp,nimpacc+nimpvel+nimpdisp
1485 ok = 0
1486 DO j=1,nfunct
1487 IF(ibfv(3,i) == npc1(j)) THEN
1488 ibfv(3,i)=j
1489 ok = 1
1490 EXIT
1491 END IF
1492 END DO
1493
1494 IF (ok == 0) THEN
1496 . msgtype=msgerror,
1497 . anmode=aninfo_blind_1,
1498 . c1='IMPOSED ACCELERATIONS',
1499 . i1=ibfv(3,i))
1500 END IF
1501 END DO
1502
1503 DO i=1+nimpvel+nimpdisp,nimpacc+nimpvel+nimpdisp
1504 ok = 0
1505 DO j=1,nfunct
1506 IF (ibfv(15,i)== 0) THEN
1507 ok = 1
1508 EXIT
1509 ELSE
1510 IF(ibfv(15,i) == npc1(j)) THEN
1511 ibfv(15,i)=j
1512 ok = 1
1513 EXIT
1514 ENDIF
1515 ENDIF
1516 END DO
1517 IF (ok == 0) THEN
1519 . msgtype=msgerror,
1520 . anmode=aninfo_blind_1,
1521 . c1='IMPOSED ACCELERATIONS',
1522 . i1=ibfv(3,i))
1523 END IF
1524 END DO
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593 DO 751 i=1,glob_therm%NFXTEMP
1594 DO 750 j=1,nfunct
1595 IF(ibft(2,i) == npc1(j)) THEN
1596 ibft(2,i)=j
1597 GOTO 751
1598 ENDIF
1599 750 CONTINUE
1601 . msgtype=msgerror,
1602 . anmode=aninfo_blind_1,
1603 . c1='IMPOSED TEMPERATURE',
1604 . i1=ibft(2,i))
1605 751 CONTINUE
1606
1607
1608
1609 DO 753 i=1,glob_therm%NUMCONV
1610 DO 752 j=1,nfunct
1611 IF(ibcv(5,i) == npc1(j)) THEN
1612 ibcv(5,i)=j
1613 GOTO 753
1614 ENDIF
1615 752 CONTINUE
1617 . msgtype=msgerror,
1618 . anmode=aninfo_blind_1,
1619 . c1='FIXED FLUX',
1620 . i1=ibcv(5,i))
1621 753 CONTINUE
1622
1623
1624
1625 DO 755 i=1,glob_therm%NUMRADIA
1626 DO 754 j=1,nfunct
1627 IF(ibcr(5,i) == npc1(j)) THEN
1628 ibcr(5,i)=j
1629 GOTO 755
1630 ENDIF
1631 754 CONTINUE
1633 . msgtype=msgerror,
1634 . anmode=aninfo_blind_1,
1635 . c1='FIXED RADIATIVE FLUX',
1636 . i1=ibcr(5,i))
1637 755 CONTINUE
1638
1639
1640
1641 DO 757 i=1,glob_therm%NFXFLUX
1642 DO 756 j=1,nfunct
1643 IF(ibfflux(5,i) == npc1(j)) THEN
1644 ibfflux(5,i)=j
1645 GOTO 757
1646 ENDIF
1647 756 CONTINUE
1649 . msgtype=msgerror,
1650 . anmode=aninfo_blind_1,
1651 . c1='FIXED HEAT FLUX',
1652 . i1=ibfflux(5,i))
1653 757 CONTINUE
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783 DO i=1,glob_therm%NUMCONV
1784 isens = ibcv(6,i)
1785 IF(isens/=0) THEN
1786 DO j=1,sensors%NSENSOR
1787 IF(isens == sensors%SENSOR_TAB(j)%SENS_ID) THEN
1788 ibcv(6,i) = j
1789 GO TO 801
1790 ENDIF
1791 ENDDO
1792 CALL ancmsg(msgid=1605,msgtype=msgerror,anmode=aninfo_blind_1,
1793 . c1='CONVECTIVE HEAT FLUX',i1=isens)
1794 ENDIF
1795 801 CONTINUE
1796 ENDDO
1797
1798
1799
1800 DO i=1,glob_therm%NUMRADIA
1801 isens = ibcr(6,i)
1802 IF(isens/=0) THEN
1803 DO j=1,sensors%NSENSOR
1804 IF(isens == sensors%SENSOR_TAB(j)%SENS_ID) THEN
1805 ibcr(6,i) = j
1806 GO TO 802
1807 ENDIF
1808 ENDDO
1809 CALL ancmsg(msgid=1605,msgtype=msgerror,anmode=aninfo_blind_1,
1810 . c1='RADIATIVE HEAT FLUX',i1=isens)
1811 ENDIF
1812 802 CONTINUE
1813 ENDDO
1814
1815
1816
1817 DO i=1,glob_therm%NFXFLUX
1818 isens = ibfflux(6,i)
1819 IF(isens/=0) THEN
1820 DO j=1,sensors%NSENSOR
1821 IF(isens == sensors%SENSOR_TAB(j)%SENS_ID) THEN
1822 ibfflux(6,i) = j
1823 GO TO 803
1824 ENDIF
1825 ENDDO
1826 CALL ancmsg(msgid=1605,msgtype=msgerror,anmode=aninfo_blind_1,
1827 . c1='IMPOSED HEAT FLUX',i1=isens)
1828 ENDIF
1829 803 CONTINUE
1830 ENDDO
1831
1832
1833
1834
1835 DO i=1,glob_therm%NFXTEMP
1836 isens = ibft(3,i)
1837 IF (isens > 0) THEN
1838 DO j=1,sensors%NSENSOR
1839 IF (isens == sensors%SENSOR_TAB(j)%SENS_ID) THEN
1840 ibft(3,i) = j
1841 EXIT
1842 ENDIF
1843 ENDDO
1844 END IF
1845 ENDDO
1846
1847
1848
1849
1850 DO i=1,nfxvel
1851 isens = ibfvel(4,i)
1852 IF (isens > 0) THEN
1853 DO j=1,sensors%NSENSOR
1854 IF (isens == sensors%SENSOR_TAB(j)%SENS_ID) THEN
1855 ibfvel(4,i) = j
1856 EXIT
1857 ENDIF
1858 ENDDO
1859 END IF
1860 ENDDO
1861
1862
1863
1864
1865
1866
1867
1868 DO i=1,nummat
1869
1870 ilaw=nint(pm(19,i))
1871
1873 CALL fretitl2(titr,ipm(npropmi-ltitr+1,i),ltitr)
1874 IF(ilaw == 73) THEN
1875 itable=ipm(227,i)
1876 IF(itable/=0)THEN
1877 DO j=1,ntable
1878 IF(itable == table(j)%NOTABLE) THEN
1879 ipm(227,i)=j
1880 GOTO 900
1881 ENDIF
1882 END DO
1884 . msgtype=msgerror,
1885 . anmode=aninfo,
1887 . c1=titr,
1888 . i2=itable)
1889 ENDIF
1890 900 CONTINUE
1891 itable=ipm(227,i)
1892 IF(table(itable)%NDIM/=3)THEN
1894 . msgtype=msgerror,
1895 . anmode=aninfo_blind_1,
1897 . c1=titr,
1898 . i2=itable)
1899 END IF
1900
1901 IF (nf > 0) THEN
1902 ife=ipm(10+nf,i)
1903 IF (ife /= 0)THEN
1904 ie =npc(ife)
1905 ie2=npc(ife+1)
1906 DO ii = ie+1,ie2-3,2
1907 IF(pld(ii) < pld(ii+2))THEN
1909 . msgtype=msgerror,
1910 . anmode=aninfo,
1912 . c1=titr)
1913 EXIT
1914 ENDIF
1915 ENDDO
1916 ENDIF
1917 ENDIF
1918
1919 ELSEIF(ilaw == 74)THEN
1920 itable=ipm(227,i)
1921 IF(itable/=0)THEN
1922 DO j=1,ntable
1923 IF(itable == table(j)%NOTABLE) THEN
1924 ipm(227,i)=j
1925 GOTO 901
1926 ENDIF
1927 END DO
1929 . msgtype=msgerror,
1930 . anmode=aninfo,
1932 . c1=titr,
1933 . i2=itable)
1934 ENDIF
1935 901 CONTINUE
1936 itable=ipm(227,i)
1937 IF(table(itable)%NDIM/=2.AND.table(itable)%NDIM/=3)THEN
1939 . msgtype=msgerror,
1940 . anmode=aninfo_blind_1,
1942 . c1=titr,
1943 . i2=itable)
1944 END IF
1945
1946 IF (nf > 0) THEN
1947 ife=ipm(10+nf,i)
1948 IF(ife /= 0)THEN
1949 ie =npc(ife)
1950 ie2=npc(ife+1)
1951 DO ii = ie+1,ie2-3,2
1952 IF(pld(ii) < pld(ii+2))THEN
1954 . msgtype=msgerror,
1955 . anmode=aninfo,
1957 . c1=titr)
1958 EXIT
1959 ENDIF
1960 ENDDO
1961 ENDIF
1962 ENDIF
1963
1964
1965 ELSEIF(ilaw == 80)THEN
1966 DO 980 k = 1,ipm(226,i)
1967 itable= ipm(226+k,i)
1968 iadd = ipm(7,i) - 1
1969 IF(itable/=0)THEN
1970 DO j=1,ntable
1971 IF(itable == table(j)%NOTABLE) THEN
1972 ipm(226+k,i)=j
1973 itable=ipm(226+k,i)
1974 IF(table(itable)%NDIM >= 2 )THEN
1975 bufmat(iadd+15) = zero
1976 ENDIF
1977 IF(table(itable)%NDIM > 3 )THEN
1979 . msgtype=msgerror,
1980 . anmode=aninfo_blind_1,
1982 . c1=titr,
1983 . i2=itable)
1984 EXIT
1985 END IF
1986 GOTO 980
1987 ENDIF
1988 END DO
1990 . msgtype=msgerror,
1991 . anmode=aninfo,
1993 . c1=titr,
1994 . i2=itable)
1995 ENDIF
1996 980 CONTINUE
1997
1998 IF (nf > 0) THEN
1999 ife=ipm(10+nf,i)
2000 IF(ife /= 0)THEN
2001 ie =npc(ife)
2002 ie2=npc(ife+1)
2003 DO ii = ie+1,ie2-3,2
2004 IF(pld(ii) < pld(ii+2))THEN
2006 . msgtype=msgerror,
2007 . anmode=aninfo,
2009 . c1=titr)
2010 EXIT
2011 ENDIF
2012 ENDDO
2013 ENDIF
2014 ENDIF
2015
2016 ENDIF
2017 END DO
2018
2019
2020
2021 CALL iniguser(bufgeo,igeo,ipm,npc1)
2022
2023
2024
2025
2026
2027
2028
2029
2030 RETURN
2031
subroutine iniguser(bufgeo, igeo, ipm, npc)
integer, parameter nchartitle
integer function nintri(iext, antn, m, n, m1)
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)
integer function usr2sys(iu, itabm1, mess, id)