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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_get_floatv (name, rval, is_available, lsubmodel, unitab)

Function/Subroutine Documentation

◆ hm_get_floatv()

subroutine hm_get_floatv ( character*(*), intent(in) name,
intent(out) rval,
logical, intent(out) is_available,
type(submodel_data), dimension(nsubmod), intent(in) lsubmodel,
type (unit_type_), intent(in) unitab )

Definition at line 417 of file hm_get_floatv.F.

418C-----------------------------------------------
419C ROUTINE DESCRIPTION :
420C ===================
421C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
422C PICK VALUE
423C ASK (REAL) VALUE OF 'NAME' FIELD DEFINED IN .cfg FILE
424C APPLY AUTOMATICALLY UNIT SYSTEM USING DIMENSION DEFINED IN .cfg FILE
425C-----------------------------------------------
426C DUMMY ARGUMENTS DESCRIPTION:
427C ===================
428C
429C NAME DESCRIPTION
430C
431C NAME FIELD NAME
432C RVAL REAL VALUE OF THE FIELD
433C IS_AVAILABLE VALUE AVAILABLE IN MODEL OR NOT
434C LSUBMODEL SUBMODEL STRUCTURE
435C UNITAB UNIT ARRAY
436C============================================================================
437C M o d u l e s
438C-----------------------------------------------
439 use, INTRINSIC :: iso_c_binding, only: c_bool
440 USE message_mod
442 USE unitab_mod
443C-----------------------------------------------
444C I m p l i c i t T y p e s
445C-----------------------------------------------
446#include "implicit_f.inc"
447C-----------------------------------------------
448C C o m m o n B l o c k s
449C-----------------------------------------------
450C-----------------------------------------------
451C D u m m y A r g u m e n t s
452C-----------------------------------------------
453C INPUT ARGUMENTS
454 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
455 CHARACTER*(*),INTENT(IN) :: NAME
456 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
457C OUTPUT ARGUMENTS
458 my_real,INTENT(OUT) :: rval
459 LOGICAL,INTENT(OUT) :: IS_AVAILABLE
460C-----------------------------------------------
461C L o c a l V a r i a b l e s
462C-----------------------------------------------
463 INTEGER :: J,SUB_ID,IFLAGUNIT,UID
464 my_real :: fac_l,fac_m,fac_t,fac
465 real*8 :: dval,length_dim,mass_dim,time_dim
466 LOGICAL(KIND=C_BOOL) :: C_IS_AVAILABLE
467C-----------------------------------------------
468 c_is_available = .false.
469 length_dim = zero
470 mass_dim = zero
471 time_dim = zero
472 fac = one
473C--------------------------------------------------
474 CALL cpp_get_floatv_floatd(name(1:len_trim(name)),len_trim(name),dval,c_is_available,
475 . length_dim,mass_dim,time_dim,uid,sub_id)
476 is_available = c_is_available
477C--------------------------------------------------
478C ID OFFSETS FOR //SUBMODEL
479C--------------------------------------------------
480 IF(sub_id /= 0 .AND. uid == 0)THEN
481 IF(lsubmodel(sub_id)%UID /= 0)THEN
482 uid = lsubmodel(sub_id)%UID
483 ENDIF
484 ENDIF
485C--------------------------------------------------
486c APPLY UNIT SYSTEM
487C--------------------------------------------------
488 iflagunit = 0
489 fac_m = zero
490 fac_l = zero
491 fac_t = zero
492 DO j=1,unitab%NUNITS
493 IF (unitab%UNIT_ID(j) == uid) THEN
494 fac_m = unitab%FAC_M(j)
495 fac_l = unitab%FAC_L(j)
496 fac_t = unitab%FAC_T(j)
497 iflagunit = 1
498 EXIT
499 ENDIF
500 ENDDO
501 IF (fac_m /= zero) fac = fac * (fac_m ** mass_dim )
502 IF (fac_l /= zero) fac = fac * (fac_l ** length_dim)
503 IF (fac_t /= zero) fac = fac * (fac_t ** time_dim )
504C--------------------------------------------------
505 rval = dval * fac
506c print *,'real value=',NAME(1:LEN_TRIM(NAME)),RVAL,LENGTH_DIM,MASS_DIM,TIME_DIM
507C--------------------------------------------------
508 RETURN
509C
#define my_real
Definition cppsort.cpp:32
integer nsubmod