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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_get_float_array_index (name, rval, index, is_available, lsubmodel, unitab)

Function/Subroutine Documentation

◆ hm_get_float_array_index()

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

Definition at line 104 of file hm_get_float_array_index.F.

105C-----------------------------------------------
106C ROUTINE DESCRIPTION :
107C ===================
108C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
109C PICK VALUE IN A LIST OF VALUES
110C ASK INDEX_TH (REAL) VALUE OF 'NAME' FIELD DEFINED IN .cfg FILE
111C APPLY AUTOMATICALLY UNIT SYSTEM USING DIMENSION DEFINED IN .cfg FILE
112C-----------------------------------------------
113C DUMMY ARGUMENTS DESCRIPTION:
114C ===================
115C
116C NAME DESCRIPTION
117C
118C NAME FIELD NAME
119C RVAL REAL VALUE OF THE FIELD
120C INDEX INDEX NUMBER OF THE VALUE
121C IS_AVAILABLE VALUE AVAILABLE IN MODEL OR NOT
122C LSUBMODEL SUBMODEL STRUCTURE
123C UNITAB UNIT ARRAY
124C============================================================================
125C M o d u l e s
126C-----------------------------------------------
127 use, INTRINSIC :: iso_c_binding, only: c_bool
128 USE message_mod
130 USE unitab_mod
131C-----------------------------------------------
132C I m p l i c i t T y p e s
133C-----------------------------------------------
134#include "implicit_f.inc"
135C-----------------------------------------------
136C C o m m o n B l o c k s
137C-----------------------------------------------
138C-----------------------------------------------
139C D u m m y A r g u m e n t s
140C-----------------------------------------------
141C INPUT ARGUMENTS
142 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
143 INTEGER,INTENT(IN) :: INDEX
144 CHARACTER*(*),INTENT(IN) :: NAME
145 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
146C OUTPUT ARGUMENTS
147 my_real,INTENT(OUT) :: rval
148 LOGICAL,INTENT(OUT) :: IS_AVAILABLE
149C-----------------------------------------------
150C L o c a l V a r i a b l e s
151C-----------------------------------------------
152 INTEGER J,SUB_ID,IFLAGUNIT,UID
153 my_real :: fac_l,fac_m,fac_t,fac
154 real*8 dval,length_dim,mass_dim,time_dim
155 LOGICAL(KIND=C_BOOL) C_IS_AVAILABLE
156C-----------------------------------------------
157 c_is_available = .false.
158 length_dim = zero
159 mass_dim = zero
160 time_dim = zero
161 fac = one
162C--------------------------------------------------
163 CALL cpp_get_floatv_floatd_index(name(1:len_trim(name)),len_trim(name),dval,index,c_is_available,
164 . length_dim,mass_dim,time_dim,uid,sub_id)
165 is_available = c_is_available
166C--------------------------------------------------
167C ID OFFSETS FOR //SUBMODEL
168C--------------------------------------------------
169 IF(sub_id /= 0 .AND. uid == 0)THEN
170 IF(lsubmodel(sub_id)%UID /= 0)THEN
171 uid = lsubmodel(sub_id)%UID
172 ENDIF
173 ENDIF
174C--------------------------------------------------
175c APPLY UNIT SYSTEM
176C--------------------------------------------------
177 iflagunit = 0
178 fac_m = zero
179 fac_l = zero
180 fac_t = zero
181 DO j=1,unitab%NUNITS
182 IF (unitab%UNIT_ID(j) == uid) THEN
183 fac_m = unitab%FAC_M(j)
184 fac_l = unitab%FAC_L(j)
185 fac_t = unitab%FAC_T(j)
186 iflagunit = 1
187 EXIT
188 ENDIF
189 ENDDO
190 IF (fac_m /= zero) fac = fac * (fac_m ** mass_dim )
191 IF (fac_l /= zero) fac = fac * (fac_l ** length_dim)
192 IF (fac_t /= zero) fac = fac * (fac_t ** time_dim )
193C--------------------------------------------------
194 rval = dval * fac
195C--------------------------------------------------
196 RETURN
197C
#define my_real
Definition cppsort.cpp:32
integer nsubmod