54 SUBROUTINE read_ebcs(IGRSURF,MULTI_FVM,NPC1,LSUBMODEL,EBCS_TAB)
73#include "implicit_f.inc"
83 TYPE (SURF_),
DIMENSION(NSURF),
TARGET,
INTENT(IN) :: IGRSURF
84 TYPE (MULTI_FVM_STRUCT),
INTENT(INOUT) :: MULTI_FVM
85 INTEGER,
INTENT(IN) :: NPC1
87 TYPE(t_ebcs_tab),
INTENT(INOUT) :: EBCS_TAB
93 INTEGER :: II, SURF_ID, JJ, SUB_INDEX
94 CHARACTER(LEN=NCHARTITLE) :: TITR
95 CHARACTER(LEN=NCHARKEY) :: KEY, KEY2
96 LOGICAL :: IS_AVAILABLE, IS_EBCS_PARALLEL
103 WRITE(istdo,
'(A)')titre(69)
104 CALL ebcs_tab%CREATE(
nebcs)
112 . keyword2 = key, keyword3 = key2, submodel_index = sub_index)
114 SELECT CASE(key(1:len_trim(key)))
118 allocate (t_ebcs_gradp0 :: ebcs_tab%tab(ii)%poly)
119 select type (twf => ebcs_tab%tab(ii)%poly)
120 type is (t_ebcs_gradp0)
127 allocate (t_ebcs_pres :: ebcs_tab%tab(ii)%poly)
128 select type (twf => ebcs_tab%tab(ii)%poly)
129 type is (t_ebcs_pres)
136 allocate (t_ebcs_valvin :: ebcs_tab%tab(ii)%poly)
137 select type (twf => ebcs_tab%tab(ii)%poly)
138 type is (t_ebcs_valvin)
145 allocate (t_ebcs_valvout :: ebcs_tab%tab(ii)%poly)
146 select type (twf => ebcs_tab%tab(ii)%poly)
147 type is (t_ebcs_valvout)
154 allocate (t_ebcs_vel :: ebcs_tab%tab(ii)%poly)
155 select type (twf => ebcs_tab%tab(ii)%poly)
163 allocate (t_ebcs_normv :: ebcs_tab%tab(ii)%poly)
164 select type (twf => ebcs_tab%tab(ii)%poly)
166 type is (t_ebcs_normv)
173 allocate (t_ebcs_inip :: ebcs_tab%tab(ii)%poly)
174 select type (twf => ebcs_tab%tab(ii)%poly)
175 type is (t_ebcs_inip)
182 allocate (t_ebcs_iniv :: ebcs_tab%tab(ii)%poly)
183 select type (twf => ebcs_tab%tab(ii)%poly)
184 type is (t_ebcs_iniv)
191 allocate (t_ebcs_inlet :: ebcs_tab%tab(ii)%poly)
192 select type (twf => ebcs_tab%tab(ii)%poly)
193 type is (t_ebcs_inlet)
194 CALL hm_read_ebcs_inlet(igrsurf, npc1, multi_fvm,
unitab, id, titr, uid, lsubmodel, key2, sub_index, twf)
200 allocate (t_ebcs_fluxout :: ebcs_tab%tab(ii)%poly)
201 select type (twf => ebcs_tab%tab(ii)%poly)
202 type is (t_ebcs_fluxout)
209 allocate (t_ebcs_nrf :: ebcs_tab%tab(ii)%poly)
210 select type (twf => ebcs_tab%tab(ii)%poly)
218 allocate (t_ebcs_propellant :: ebcs_tab%tab(ii)%poly)
219 select type (twf => ebcs_tab%tab(ii)%poly)
220 type is (t_ebcs_propellant)
221 CALL hm_read_ebcs_propellant(igrsurf, multi_fvm,
unitab, id, titr, uid, lsubmodel,nsurf, twf)
227 allocate (t_ebcs_monvol :: ebcs_tab%tab(ii)%poly)
228 select type (twf => ebcs_tab%tab(ii)%poly)
229 type is (t_ebcs_monvol)
235 CALL ancmsg(msgid = 1602, msgtype = msgerror, anmode = aninfo,
236 . i1 = id, c1 = trim(titr), c2 =
"\'"//trim(key)//
"\'"//
" IS NOT A VALID KEYWORD FOR EBCS OPTIONS"
239 ebcs_tab%tab(ii)%poly%type = typ
240 ebcs_tab%tab(ii)%poly%ebcs_id = id
242 CALL hm_get_intv(
'entityid', surf_id, is_available, lsubmodel)
244 IF (surf_id > 0)
THEN
245 ebcs_tab%tab(ii)%poly%surf_id = 0
247 IF (igrsurf(jj)%ID == surf_id)
THEN
248 ebcs_tab%tab(ii)%poly%surf_id = jj
253 IF (ebcs_tab%tab(ii)%poly%surf_id > 0)
THEN
254 CALL ebcs_tab%tab(ii)%poly%set_nodes_elems(igrsurf(jj)%NSEG, numnod, igrsurf(jj)%NODES)
256 is_ebcs_parallel = .false.
257 IF(ebcs_tab%tab(ii)%poly%type == 10 .OR. ebcs_tab%tab(ii)%poly%type == 11)
THEN
258 is_ebcs_parallel = .true.
261 IF(.NOT. is_ebcs_parallel)
THEN
262 DO jj = 1, ebcs_tab%tab(ii)%poly%nb_node
263 CALL ifrontplus(ebcs_tab%tab(ii)%poly%node_list(jj), 1)
267 DO jj = 1, ebcs_tab%tab(ii)%poly%nb_node
268 flagkin(ebcs_tab%tab(ii)%poly%node_list(jj)) = 1
279 & 5x,
' ELEMENTARY BOUNDARY CONDITIONS'/,
280 & 5x,
' ------------------------------')
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)