42
43
44
45
46
47
48
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "scr17_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "scr10_c.inc"
65
66
67
68 INTEGER,INTENT(IN) :: ITAB(NUMNOD), ITABM1(*), IKINE(*), IBCSLAG(5,*), LAG_NCF,LAG_NKF,LAG_NHF,IKINE1LAG(*),ISKN(LISKN,*)
69 INTEGER,INTENT(IN) :: NOM_OPT(LNOPT1,*)
70 INTEGER,INTENt(INOUT) :: ISKEW(*),ICODE(NUMNOD)
71 TYPE(SUBMODEL_DATA), INTENT(IN), DIMENSION(NSUBMOD) :: LSUBMODEL
72
73 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
74
75
76
77 INTEGER I, IC, N, IS, IC1, IC2,
78 . NOSYS, J,IGR,IGRS,J6(6),
79 . ID ,
80 . CHKCOD,SUB_INDEX
81 INTEGER IUN
82 CHARACTER MESS*40,CODE*7
83 CHARACTER(LEN=NCHARFIELD) :: STRING
84 CHARACTER(LEN=NCHARTITLE) :: TITR
85 LOGICAL :: IS_AVAILABLE, FOUND
86
87
88
89 INTEGER MY_OR,CHECK_NEW,NGR2USR
90 INTEGER, DIMENSION(:), POINTER :: INGR2USR
91
92
93
94 DATA iun/1/
95 DATA mess/'BOUNDARY CONDITIONS '/
96
97
98
99 is_available = .false.
100 sub_index = 0
101
103
104 DO i = 1, nalebcs
107 . option_titr = titr,
108 . submodel_index = sub_index)
110 CALL hm_get_intv(
'inputsystem', is, is_available, lsubmodel)
111 IF(is == 0 .AND. sub_index /= 0 ) is = lsubmodel(sub_index)%SKEW
112 CALL hm_get_intv(
'entityid', igr, is_available, lsubmodel)
113 found = .false.
115 IF(is == iskn(4, j + 1)) THEN
116 is = j + 1
117 found = .true.
118 EXIT
119 ENDIF
120 ENDDO
121 IF (.NOT. found) THEN
122 CALL ancmsg(msgid = 137, anmode = aninfo, msgtype = msgerror,
123 . c1 = 'BOUNDARY CONDITION', c2 = 'BOUNDARY CONDITION',
124 . i2 = is, i1 = n, c3 = titr)
125 ENDIF
126
127 code = string(1:7)
128 READ(code,fmt='(3I1,1X,3I1)') j6
129 chkcod = 0
130 DO j=1,6
131 IF (j6(j) >= 2) THEN
132 chkcod = 1
133 ENDIF
134 ENDDO
135 IF (chkcod == 1) THEN
136 CALL ancmsg(msgid = 1051, anmode = aninfo_blind,msgtype = msgerror, i1 =
id, c1 = titr, c2 = code)
137 ENDIF
138 ic1=j6(1)*4 +j6(2)*2 +j6(3)
139 ic2=j6(4)*4 +j6(5)*2 +j6(6)
140 ic=ic1*8+ic2
141 ingr2usr => igrnod(1:ngrnod)%ID
142 igrs=
ngr2usr(igr,ingr2usr,ngrnod)
143 IF(igrs /= 0)THEN
144 DO j=1,igrnod(igrs)%NENTITY
145 nosys=igrnod(igrs)%ENTITY(j)
146 icode(nosys)=
my_or(ic,icode(nosys))
147 IF(iskew(nosys) == -1.OR.iskew(nosys) == is)THEN
148 check_new=is
149 ELSE
150 CALL ancmsg(msgid=148,anmode=aninfo,msgtype=msgerror,i1=itab(nosys),prmod=msg_cumu)
151 ENDIF
152 iskew(nosys)=check_new
153 ENDDO
154 CALL ancmsg(msgid=148,anmode=aninfo,msgtype=msgerror,i1=
id,c1=titr,prmod=msg_print)
155 ELSE
156 CALL ancmsg(msgid=678,anmode=aninfo,msgtype=msgerror,i1=
id,i2=igr,c1=titr)
157 ENDIF
158 ENDDO
159
160 RETURN
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharfield
integer function ngr2usr(iu, igr, ngr)
int my_or(int *a, int *b)
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)