57 SUBROUTINE read_ebcs(IGRSURF,MULTI_FVM,NPC1,LSUBMODEL,EBCS_TAB,N2D)
73 use hm_read_ebcs_propellant_mod,
only : hm_read_ebcs_propellant
74 use hm_read_ebcs_cyclic_mod,
only : hm_read_ebcs_cyclic
78#include "implicit_f.inc"
88 TYPE (SURF_),
DIMENSION(NSURF),
TARGET,
INTENT(IN) :: IGRSURF
89 TYPE (MULTI_FVM_STRUCT),
INTENT(INOUT) :: MULTI_FVM
90 INTEGER,
INTENT(IN) :: NPC1
92 TYPE(t_ebcs_tab),
INTENT(INOUT) :: EBCS_TAB
93 INTEGER,
INTENT(IN) :: N2D
98 INTEGER :: ID,TYP,UID,SURF_ID2
99 INTEGER :: II, SURF_ID, JJ, SUB_INDEX
100 CHARACTER(LEN=NCHARTITLE) :: TITR
101 CHARACTER(LEN=NCHARKEY) :: KEY, KEY2
102 LOGICAL :: IS_AVAILABLE, IS_EBCS_PARALLEL
109 WRITE(istdo,
'(A)')titre(69)
110 CALL ebcs_tab%CREATE(
nebcs)
118 . keyword2 = key, keyword3 = key2, submodel_index = sub_index)
120 SELECT CASE(key(1:len_trim(key)))
124 allocate (t_ebcs_gradp0 :: ebcs_tab%tab(ii)%poly)
125 select type (twf => ebcs_tab%tab(ii)%poly)
126 type is (t_ebcs_gradp0)
133 allocate (t_ebcs_pres :: ebcs_tab%tab(ii)%poly)
134 select type (twf => ebcs_tab%tab(ii)%poly)
135 type is (t_ebcs_pres)
142 allocate (t_ebcs_valvin :: ebcs_tab%tab(ii)%poly)
143 select type (twf => ebcs_tab%tab(ii)%poly)
144 type is (t_ebcs_valvin)
151 allocate (t_ebcs_valvout :: ebcs_tab%tab(ii)%poly)
152 select type (twf => ebcs_tab%tab(ii)%poly)
153 type is (t_ebcs_valvout)
160 allocate (t_ebcs_vel :: ebcs_tab%tab(ii)%poly)
161 select type (twf => ebcs_tab%tab(ii)%poly)
169 allocate (t_ebcs_normv :: ebcs_tab%tab(ii)%poly)
170 select type (twf => ebcs_tab%tab(ii)%poly)
172 type is (t_ebcs_normv)
179 allocate (t_ebcs_inip :: ebcs_tab%tab(ii)%poly)
180 select type (twf => ebcs_tab%tab(ii)%poly)
181 type is (t_ebcs_inip)
188 allocate (t_ebcs_iniv :: ebcs_tab%tab(ii)%poly)
189 select type (twf => ebcs_tab%tab(ii)%poly)
190 type is (t_ebcs_iniv)
197 allocate (t_ebcs_inlet :: ebcs_tab%tab(ii)%poly)
198 select type (twf => ebcs_tab%tab(ii)%poly)
199 type is (t_ebcs_inlet)
200 CALL hm_read_ebcs_inlet(igrsurf, npc1, multi_fvm,
unitab, id, titr, uid, lsubmodel, key2, sub_index, twf)
206 allocate (t_ebcs_fluxout :: EBCS_TAB%tab(ii)%poly)
207 select type (twf => EBCS_TAB%tab(ii)%poly)
208 type is (t_ebcs_fluxout)
209 CALL HM_READ_EBCS_FLUXOUT(IGRSURF, MULTI_FVM, UNITAB, ID, TITR, UID, LSUBMODEL, twf)
215 allocate (t_ebcs_nrf :: EBCS_TAB%tab(ii)%poly)
216 select type (twf => EBCS_TAB%tab(ii)%poly)
218 CALL HM_READ_EBCS_NRF(IGRSURF, MULTI_FVM, UNITAB, ID, TITR, UID, LSUBMODEL, twf)
224 allocate (t_ebcs_propellant :: EBCS_TAB%tab(ii)%poly)
225 select type (twf => EBCS_TAB%tab(ii)%poly)
226 type is (t_ebcs_propellant)
227 CALL HM_READ_EBCS_PROPELLANT(IGRSURF, MULTI_FVM, UNITAB, ID, TITR, UID, LSUBMODEL,NSURF, twf)
233 allocate (t_ebcs_cyclic :: EBCS_TAB%tab(ii)%poly)
234 select type (twf => EBCS_TAB%tab(ii)%poly)
235 type is (t_ebcs_cyclic)
236 CALL HM_READ_EBCS_CYCLIC(IGRSURF, MULTI_FVM, ID, TITR, LSUBMODEL,NSURF, twf, N2D, numnod, itab )
242 allocate (t_ebcs_monvol :: EBCS_TAB%tab(ii)%poly)
243 select type (twf => EBCS_TAB%tab(ii)%poly)
244 type is (t_ebcs_monvol)
245 CALL HM_READ_EBCS_MONVOL(IGRSURF,MULTI_FVM,UNITAB, ID, TITR, UID, LSUBMODEL, twf)
250 CALL ANCMSG(MSGID = 1602, MSGTYPE = MSGERROR, ANMODE = ANINFO,
251 . I1 = ID, C1 = TRIM(TITR), C2 = "\'"//TRIM(KEY)//"\
'"//" IS NOT A VALID KEYWORD FOR EBCS OPTIONS")
254 EBCS_TAB%tab(II)%poly%type = TYP
255 EBCS_TAB%tab(II)%poly%ebcs_id = ID
257 CALL HM_GET_INTV('entityid
', SURF_ID, IS_AVAILABLE, LSUBMODEL)
259 IF (SURF_ID > 0) THEN
260 EBCS_TAB%tab(II)%poly%surf_id = 0
262 IF (IGRSURF(JJ)%ID == SURF_ID) THEN
263 EBCS_TAB%tab(II)%poly%surf_id = JJ
268 IF (EBCS_TAB%tab(II)%poly%surf_id > 0) THEN
269 CALL EBCS_TAB%tab(II)%poly%set_nodes_elems(IGRSURF(JJ)%NSEG, NUMNOD, IGRSURF(JJ)%NODES)
270 !secondary surface with EBCS/CYCLIC
271 IF(EBCS_TAB%tab(II)%poly%type == 12)then
272 surf_id2 = EBCS_TAB%tab(II)%poly%surf_id2
273 CALL EBCS_TAB%tab(II)%poly%set_nodes_elems_secondary_surface(IGRSURF(surf_id2)%NSEG, NUMNOD, IGRSURF(surf_id2)%NODES)
276 IS_EBCS_PARALLEL = .FALSE.
277.OR.
IF(EBCS_TAB%tab(II)%poly%type == 10 EBCS_TAB%tab(II)%poly%type == 11)THEN
278 IS_EBCS_PARALLEL = .TRUE.
281.NOT.
IF( IS_EBCS_PARALLEL) THEN
282 DO JJ = 1, EBCS_TAB%tab(II)%poly%nb_node
283 CALL IFRONTPLUS(EBCS_TAB%tab(II)%poly%node_list(jj), 1)
287 DO JJ = 1, EBCS_TAB%tab(II)%poly%nb_node
288 FLAGKIN(EBCS_TAB%tab(II)%poly%node_list(jj)) = 1
299 & 5X,' elementary boundary conditions
'/,
300 & 5X,' ------------------------------
')