45
46
47
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "scr17_c.inc"
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64
65
66
67 INTEGER ICODE(*), ISKEW(*), ITAB(*), ITABM1(*), IKINE(*),
68 . IBCSLAG(5,*),
69 . LAG_NCF,LAG_NKF,LAG_NHF,IKINE1LAG(*),ISKN(,*)
70 INTEGER NOM_OPT(LNOPT1,*)
71 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
72
73 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
74
75
76
77 INTEGER I,JJ(12), IC, , N, NUSR, IS, IC1, IC2, IC3, IC4,
78 . NOSYS, J,J10(10),IGR,IGRS,ISU,IBCALE,J6(6),K,
79 . IC0, IC01, IC02, IC03, IC04, ID ,ILAGM, NBCSLAG,
80 . FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,SUB_ID,
81 . CHKCOD,ISERR,NOD,SUB_INDEX,NNOD
82 INTEGER IUN
83 CHARACTER MESS*40
84 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
85 CHARACTER :: CODE*7
86 CHARACTER(LEN=NCHARFIELD) :: STRING
87 CHARACTER(LEN=NCHARTITLE) :: TITR
88 CHARACTER :: OPT*8
89 LOGICAL IS_AVAILABLE
90 INTEGER, DIMENSION(:), ALLOCATABLE :: IKINE1
91
92
93
94 INTEGER USR2SYS,MY_OR,CHECK_NEW,NGR2USR
95
96 INTEGER, DIMENSION(:), POINTER :: INGR2USR
97
98
99
100
101 DATA iun/1/
102 DATA mess/'BOUNDARY CONDITIONS '/
103
104
105 is_available = .false.
106 flag_fmt = 0
107
108 ALLOCATE(ikine1(3*numnod))
109 DO i=1,3*numnod
110 ikine1(i) = 0
111 ENDDO
112
113
114
115
117
118
119
120 DO i=1,numbcsn
121 titr = ''
122
123
124
127 . option_titr = titr,
128 . submodel_index = sub_index,
129 . keyword2 = key)
130
131 nom_opt(1,numbcs+i)=
id
132 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,numbcs+i),ltitr)
133
134 CALL hm_get_intv(
'number_of_nodes',nnod,is_available,lsubmodel)
135
136 DO k=1,nnod
137
144
146 IF(is == 0 .AND. sub_index /= 0 ) is = lsubmodel(sub_index)%SKEW
147
149
151 IF (nod == 0) THEN
153 . msgtype=msgerror,
154 . anmode=aninfo,
155 . c1='/NBCS/1',
157 . i2=nod)
158 ENDIF
159
160 iserr = 0
162 IF(is == iskn(4,j+1)) THEN
163 is=j+1
164 iserr = 1
165 ENDIF
166 ENDDO
167 IF(iserr == 0 ) THEN
168 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
169 . c1='BOUNDARY CONDITION',
170 . c2='BOUNDARY CONDITION',
171 . i2=is,i1=
id,c3=titr)
172 ENDIF
173
174 chkcod = 0
175 DO j=1,6
176 IF (j6(j) >= 2) THEN
177 chkcod = 1
178 ENDIF
179 ENDDO
180 IF(chkcod == 1)
181 .
CALL ancmsg(msgid=1051,anmode=aninfo_blind,
182 . msgtype=msgerror,i1=
id,c1=titr,c2=code)
183
184 ic1=j6(1)*4 +j6(2)*2 +j6(3)
185 ic2=j6(4)*4 +j6(5)*2 +j6(6)
186 ic =ic1*512+ic2*64
187
188 IF(nosys /= 0) THEN
189 icode(nosys)=
my_or(ic,icode(nosys))
190 IF(iskew(nosys)==-1.OR.iskew(nosys)==is)THEN
191 check_new=is
192 ELSE
193 CALL ancmsg(msgid=148,anmode=aninfo,msgtype=msgerror,
194 . i1=itab(nosys),prmod=msg_cumu
195 ENDIF
196 iskew(nosys)=check_new
197
198 DO j=1,6
199 IF(j6(j)/=0)
200 .
CALL kinset(1,itab(nosys),ikine(nosys),j,iskew(nosys)
201 . ,ikine1(nosys))
202 ENDDO
203 ENDIF
204
205 ENDDO
206
207 ENDDO
208
209 DEALLOCATE(ikine1)
210 RETURN
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_start(entity_type)
subroutine kinset(ik, node, ikine, idir, isk, ikine1)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
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)
integer function usr2sys(iu, itabm1, mess, id)