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 414 of file hm_get_floatv.F.

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