OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_option_read_key.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine hm_option_read_key (lsubmodel, option_id, unit_id, submodel_index, submodel_id, option_titr, keyword1, keyword2, keyword3, keyword4, opt_pos)

Function/Subroutine Documentation

◆ hm_option_read_key()

subroutine hm_option_read_key ( type(submodel_data), dimension(nsubmod) lsubmodel,
integer, optional option_id,
integer, optional unit_id,
integer, optional submodel_index,
integer, optional submodel_id,
character*(*), optional option_titr,
character*(*), optional keyword1,
character*(*), optional keyword2,
character*(*), optional keyword3,
character*(*), optional keyword4,
integer, optional opt_pos )

Definition at line 249 of file hm_option_read_key.F.

251C-----------------------------------------------
252C ROUTINE DESCRIPTION :
253C ===================
254C GENERIC ROUTINE USING OPTIONAL FIELDS
255C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
256C IN CARD :
257C /KEYWORD1/KEYWORD2/KEYWORD3/KEYWORD4/OPTION_ID/UNIT_ID
258C OPTION_TITR
259C-----------------------------------------------
260C DUMMY ARGUMENTS DESCRIPTION:
261C ===================
262C
263C NAME DESCRIPTION
264C
265C LSUBMODEL SUBMODEL STRUCTURE
266C OPTION_ID OPTIONAL : ID OF THE OPTION
267C UNIT_ID OPTIONAL : UNIT ID OF THE OPTION
268C SUBMODEL_INDEX OPTIONAL : SUBMODEL INDEX OF THE OPTION
269C SUBMODEL_ID OPTIONAL : SUBMODEL ID OF THE OPTION
270C OPTION_TITR OPTIONAL : TITLE OF THE OPTION
271C KEYWORD1 OPTIONAL : KEYWORD1 OF THE OPTION
272C KEYWORD2 OPTIONAL : KEYWORD2 OF THE OPTION
273C KEYWORD3 OPTIONAL : KEYWORD3 OF THE OPTION
274C KEYWORD4 OPTIONAL : KEYWORD4 OF THE OPTION
275C============================================================================
276C M o d u l e s
277C-----------------------------------------------
278 USE message_mod
281C-----------------------------------------------
282C I m p l i c i t T y p e s
283C-----------------------------------------------
284#include "implicit_f.inc"
285C-----------------------------------------------
286C D u m m y A r g u m e n t s
287C-----------------------------------------------
288 INTEGER :: OPTION_ID,UNIT_ID,SUBMODEL_INDEX,SUBMODEL_ID,OPT_POS
289 CHARACTER*(*) :: KEYWORD1,KEYWORD2,KEYWORD3,KEYWORD4
290 CHARACTER*(*) :: OPTION_TITR
291 TYPE(SUBMODEL_DATA) :: LSUBMODEL(NSUBMOD)
292 OPTIONAL :: option_id,unit_id,submodel_index,submodel_id,keyword1,keyword2,keyword3,keyword4,option_titr,opt_pos
293C-----------------------------------------------
294C L o c a l V a r i a b l e s
295C-----------------------------------------------
296 INTEGER OFFSET_CATEGORY,CPT,CPT1,CPT2,IOK,S_KEYWORD,S_TITR_TMP,TMP_OPTION_ID,TMP_UNIT_ID,TMP_SUBMODEL_INDEX,MY_POSITION
297 CHARACTER(LEN=NCHARLINE) :: KEYWORD,TITR_TMP
298 LOGICAL SET_COLLECT_OFFSET
299C-----------------------------------------------
300C E x t e r n a l F u n c t i o n s
301C-----------------------------------------------
302 offset_category = 0
303 keyword=''
304 tmp_option_id = 0
305 tmp_unit_id = 0
306 tmp_submodel_index = 0
307 my_position = 0
308 IF(PRESENT(option_titr)) option_titr=''
309 IF(PRESENT(keyword1)) keyword1=''
310 IF(PRESENT(keyword2)) keyword2=''
311 IF(PRESENT(keyword3)) keyword3=''
312 IF(PRESENT(keyword4)) keyword4=''
313 IF(PRESENT(opt_pos)) my_position=opt_pos
314C--------------------------------------------------
315 CALL cpp_option_read(tmp_option_id,tmp_unit_id,tmp_submodel_index,keyword,s_keyword,
316 . titr_tmp,s_titr_tmp,offset_category,my_position)
317C--------------------------------------------------
318 IF(PRESENT(option_id)) option_id = tmp_option_id
319 IF(PRESENT(unit_id)) unit_id = tmp_unit_id
320 IF(PRESENT(submodel_index)) submodel_index = tmp_submodel_index
321 IF(PRESENT(submodel_id)) THEN
322 IF(tmp_submodel_index /= 0) THEN
323 submodel_id = lsubmodel(tmp_submodel_index)%NOSUBMOD
324 ELSE
325 submodel_id = 0
326 ENDIF
327 ENDIF
328 IF(PRESENT(option_titr)) option_titr(1:s_titr_tmp) = titr_tmp(1:s_titr_tmp)
329C--------------------------------------------------
330 cpt = 2
331 cpt1 = 2
332 cpt2 = 2
333 iok = 0
334
335 DO WHILE (cpt < ncharline .AND. iok == 0)
336 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
337 cpt2 = cpt
338 iok = 1
339 ENDIF
340 cpt = cpt + 1
341 ENDDO
342 IF(PRESENT(keyword1)) keyword1(1:cpt2-cpt1) = keyword(cpt1:min((cpt2-1),s_keyword))
343 cpt1 = cpt2+1
344 iok = 0
345 DO WHILE (cpt < ncharline .AND. iok == 0)
346 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
347 cpt2 = cpt
348 iok = 1
349 ENDIF
350 cpt = cpt + 1
351 ENDDO
352 IF(PRESENT(keyword2)) keyword2(1:cpt2-cpt1) = keyword(cpt1:min((cpt2-1),s_keyword))
353 cpt1 = cpt2+1
354 iok = 0
355 DO WHILE (cpt < ncharline .AND. iok == 0)
356 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
357 cpt2 = cpt
358 iok = 1
359 ENDIF
360 cpt = cpt + 1
361 ENDDO
362 IF(PRESENT(keyword3)) keyword3(1:cpt2-cpt1) = keyword(cpt1:min((cpt2-1),s_keyword))
363 cpt1 = cpt2+1
364 iok = 0
365 DO WHILE (cpt < ncharline .AND. iok == 0)
366 IF(keyword(cpt:cpt) == '/' .OR. keyword(cpt:cpt) == ' ') THEN
367 cpt2 = cpt
368 iok = 1
369 ENDIF
370 cpt = cpt + 1
371 ENDDO
372 IF(PRESENT(keyword4)) keyword4(1:cpt2-cpt1) = keyword(cpt1:min((cpt2-1),s_keyword))
373
374C--------------------------------------------------
375C ID OFFSETS EXCEPTION //SUBMODEL
376C--------------------------------------------------
377 set_collect_offset = .true.
378 IF(keyword(1:12) == '/SET/COLLECT') set_collect_offset = .false.
379C
380 IF(PRESENT(unit_id)) THEN
381 IF(tmp_submodel_index /= 0 )THEN
382 IF(lsubmodel(tmp_submodel_index)%UID /= 0)THEN
383 unit_id = lsubmodel(tmp_submodel_index)%UID
384 ENDIF
385 ENDIF
386 ENDIF
387C--------------------------------------------------
388 RETURN
389C
#define min(a, b)
Definition macros.h:20
integer, parameter ncharline
integer nsubmod