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 247 of file hm_option_read_key.F.

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