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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_get_floatv_dim (name, dim_fac, is_available, lsubmodel, unitab)

Function/Subroutine Documentation

◆ hm_get_floatv_dim()

subroutine hm_get_floatv_dim ( character*(*), intent(in) name,
intent(out) dim_fac,
logical, intent(out) is_available,
type(submodel_data), dimension(*), intent(in) lsubmodel,
type (unit_type_), intent(in) unitab )

Definition at line 158 of file hm_get_floatv_dim.F.

159C-----------------------------------------------
160C ROUTINE DESCRIPTION :
161C ===================
162C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
163C PICK VALUE
164C ASK (REAL) VALUE OF 'NAME' FIELD DEFINED IN .cfg FILE
165C RETURN DIMENSION FACTOR
166C-----------------------------------------------
167C DUMMY ARGUMENTS DESCRIPTION:
168C ===================
169C
170C NAME DESCRIPTION
171C
172C NAME FIELD NAME
173C DIM_FAC UNIT DIMENSION FACTOR
174C IS_AVAILABLE VALUE AVAILABLE IN MODEL OR NOT
175C LSUBMODEL SUBMODEL STRUCTURE
176C UNITAB UNIT ARRAY
177C============================================================================
178C M o d u l e s
179C-----------------------------------------------
180 USE unitab_mod
181 USE message_mod
182 USE submodel_mod
183 use, INTRINSIC :: iso_c_binding, only: c_bool
184
185C-----------------------------------------------
186C I m p l i c i t T y p e s
187C-----------------------------------------------
188#include "implicit_f.inc"
189C-----------------------------------------------
190C C o m m o n B l o c k s
191C-----------------------------------------------
192C-----------------------------------------------
193C D u m m y A r g u m e n t s
194C-----------------------------------------------
195C INPUT ARGUMENTS
196 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
197 CHARACTER*(*),INTENT(IN)::NAME
198 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(*)
199C OUTPUT ARGUMENTS
200 my_real,
201 . INTENT(OUT)::dim_fac
202 LOGICAL,INTENT(OUT)::IS_AVAILABLE
203C-----------------------------------------------
204C L o c a l V a r i a b l e s
205C-----------------------------------------------
206 INTEGER I,J,VALUE_TYPE,SUB_ID,IFLAGUNIT,UID
207 my_real
208 . fac_l,fac_m,fac_t,fac
209 real*8 dval,length_dim,mass_dim,time_dim
210 LOGICAL(KIND=C_BOOL) :: C_IS_AVAILABLE
211
212C-----------------------------------------------
213 c_is_available = .false.
214 length_dim = zero
215 mass_dim = zero
216 time_dim = zero
217 fac = one
218C--------------------------------------------------
219 CALL cpp_get_floatv_floatd(name(1:len_trim(name)),len_trim(name),dval,c_is_available,
220 . length_dim,mass_dim,time_dim,uid,sub_id)
221 is_available = c_is_available
222C--------------------------------------------------
223C ID OFFSETS FOR //SUBMODEL
224C--------------------------------------------------
225 IF(sub_id /= 0 .AND. uid == 0)THEN
226 IF(lsubmodel(sub_id)%UID /= 0)THEN
227 uid = lsubmodel(sub_id)%UID
228 ENDIF
229 ENDIF
230C--------------------------------------------------
231c APPLY UNIT SYSTEM
232C--------------------------------------------------
233 iflagunit = 0
234 fac_m = zero
235 fac_l = zero
236 fac_t = zero
237 DO j=1,unitab%NUNITS
238 IF (unitab%UNIT_ID(j) == uid) THEN
239 fac_m = unitab%FAC_M(j)
240 fac_l = unitab%FAC_L(j)
241 fac_t = unitab%FAC_T(j)
242 iflagunit = 1
243 EXIT
244 ENDIF
245 ENDDO
246 IF (fac_m /= zero) fac = fac * (fac_m ** mass_dim )
247 IF (fac_l /= zero) fac = fac * (fac_l ** length_dim)
248 IF (fac_t /= zero) fac = fac * (fac_t ** time_dim )
249C--------------------------------------------------
250 dim_fac = fac
251c print *,'dim factor=',NAME(1:LEN_TRIM(NAME)),DIM_FAC,LENGTH_DIM,MASS_DIM,TIME_DIM
252C--------------------------------------------------
253 RETURN
254C
#define my_real
Definition cppsort.cpp:32