OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_get_float_array_index_dim.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| hm_get_float_array_index_dim ../starter/source/devtools/hm_reader/hm_get_float_array_index_dim.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_bem ../starter/source/loads/bem/hm_read_bem.F
27!|| hm_read_fail_inievo ../starter/source/materials/fail/inievo/hm_read_fail_inievo.F
28!|| hm_read_inject1 ../starter/source/properties/injector/hm_read_inject1.F
29!|| hm_read_mat36 ../starter/source/materials/mat/mat036/hm_read_mat36.F
30!|| hm_read_mat51 ../starter/source/materials/mat/mat051/hm_read_mat51.F
31!|| hm_read_mat57 ../starter/source/materials/mat/mat057/hm_read_mat57.F90
32!|| hm_read_mat59 ../starter/source/materials/mat/mat059/hm_read_mat59.F
33!|| hm_read_mat66 ../starter/source/materials/mat/mat066/hm_read_mat66.F
34!|| hm_read_mat70 ../starter/source/materials/mat/mat070/hm_read_mat70.F
35!|| hm_read_mat87 ../starter/source/materials/mat/mat087/hm_read_mat87.F90
36!|| hm_read_mat88 ../starter/source/materials/mat/mat088/hm_read_mat88.F
37!|| hm_read_mat90 ../starter/source/materials/mat/mat090/hm_read_mat90.F
38!|| hm_read_monvol_type4 ../starter/source/airbag/hm_read_monvol_type4.F
39!|| hm_read_monvol_type7 ../starter/source/airbag/hm_read_monvol_type7.F
40!|| hm_read_prop26 ../starter/source/properties/spring/hm_read_prop26.F
41!||--- calls -----------------------------------------------------
42!||--- uses -----------------------------------------------------
43!|| message_mod ../starter/share/message_module/message_mod.F
44!|| submodel_mod ../starter/share/modules1/submodel_mod.F
45!||====================================================================
46 SUBROUTINE hm_get_float_array_index_dim(NAME,DIM_FAC,INDEX,IS_AVAILABLE,LSUBMODEL,UNITAB)
47C-----------------------------------------------
48C ROUTINE DESCRIPTION :
49C ===================
50C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
51C PICK VALUE IN A LIST OF VALUES
52C ASK INDEX_TH (REAL) VALUE OF 'NAME' FIELD DEFINED IN .cfg FILE
53C RETURN DIMENSION FACTOR
54C-----------------------------------------------
55C DUMMY ARGUMENTS DESCRIPTION:
56C ===================
57C
58C NAME DESCRIPTION
59C
60C NAME FIELD NAME
61C DIM_FAC UNIT DIMENSION FACTOR
62C INDEX INDEX NUMBER OF THE VALUE
63C IS_AVAILABLE VALUE AVAILABLE IN MODEL OR NOT
64C LSUBMODEL SUBMODEL STRUCTURE
65C UNITAB UNIT ARRAY
66C============================================================================
67C M o d u l e s
68C-----------------------------------------------
69 use, INTRINSIC :: iso_c_binding, only: c_bool
70 USE unitab_mod
71 USE message_mod
73C-----------------------------------------------
74C I m p l i c i t T y p e s
75C-----------------------------------------------
76#include "implicit_f.inc"
77C-----------------------------------------------
78C C o m m o n B l o c k s
79C-----------------------------------------------
80C-----------------------------------------------
81C D u m m y A r g u m e n t s
82C-----------------------------------------------
83C INPUT ARGUMENTS
84 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
85 INTEGER,INTENT(IN)::INDEX
86 CHARACTER*(*),INTENT(IN)::NAME
87 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
88C OUTPUT ARGUMENTS
89 my_real,INTENT(OUT) :: dim_fac
90 LOGICAL,INTENT(OUT) :: IS_AVAILABLE
91C-----------------------------------------------
92C L o c a l V a r i a b l e s
93C-----------------------------------------------
94 INTEGER :: J,SUB_ID,IFLAGUNIT,UID
95 my_real :: fac_l,fac_m,fac_t,fac
96 real*8 :: dval,length_dim,mass_dim,time_dim
97 LOGICAL(KIND=C_BOOL) :: C_IS_AVAILABLE
98C-----------------------------------------------
99 c_is_available = .false.
100 length_dim = zero
101 mass_dim = zero
102 time_dim = zero
103 fac = one
104C--------------------------------------------------
105 CALL cpp_get_floatv_floatd_index(name(1:len_trim(name)),len_trim(name),dval,index,c_is_available,
106 . length_dim,mass_dim,time_dim,uid,sub_id)
107 is_available = c_is_available
108C--------------------------------------------------
109C ID OFFSETS FOR //SUBMODEL
110C--------------------------------------------------
111 IF(sub_id /= 0 .AND. uid == 0)THEN
112 IF(lsubmodel(sub_id)%UID /= 0)THEN
113 uid = lsubmodel(sub_id)%UID
114 ENDIF
115 ENDIF
116C--------------------------------------------------
117c APPLY UNIT SYSTEM
118C--------------------------------------------------
119 iflagunit = 0
120 fac_m = zero
121 fac_l = zero
122 fac_t = zero
123 DO j=1,unitab%NUNITS
124 IF (unitab%UNIT_ID(j) == uid) THEN
125 fac_m = unitab%FAC_M(j)
126 fac_l = unitab%FAC_L(j)
127 fac_t = unitab%FAC_T(j)
128 iflagunit = 1
129 EXIT
130 ENDIF
131 ENDDO
132 IF (fac_m /= zero) fac = fac * (fac_m ** mass_dim )
133 IF (fac_l /= zero) fac = fac * (fac_l ** length_dim)
134 IF (fac_t /= zero) fac = fac * (fac_t ** time_dim )
135C--------------------------------------------------
136 dim_fac = fac
137C--------------------------------------------------
138 RETURN
139C
140 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_float_array_index_dim(name, dim_fac, index, is_available, lsubmodel, unitab)
integer nsubmod