OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_get_float_array_2indexes.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_2indexes ../starter/source/devtools/hm_reader/hm_get_float_array_2indexes.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_drape ../starter/source/properties/composite_options/drape/hm_read_drape.F
27!|| hm_read_prop17 ../starter/source/properties/shell/hm_read_prop17.F
28!|| hm_read_prop51 ../starter/source/properties/shell/hm_read_prop51.F
29!|| hm_read_stack ../starter/source/stack/hm_read_stack.F
30!||--- calls -----------------------------------------------------
31!||--- uses -----------------------------------------------------
32!|| message_mod ../starter/share/message_module/message_mod.F
33!|| submodel_mod ../starter/share/modules1/submodel_mod.F
34!||====================================================================
35 SUBROUTINE hm_get_float_array_2indexes(NAME,RVAL,INDEX1,INDEX2,IS_AVAILABLE,LSUBMODEL,UNITAB)
36C-----------------------------------------------
37C ROUTINE DESCRIPTION :
38C ===================
39C REQUEST DATA INTO MODEL NEUTRAL OBJECT DATABASE USING HM_READER
40C PICK VALUE IN A LIST OF VALUES
41C ASK (INDEX1_TH,INDEX2)_TH (REAL) VALUE OF 'NAME' FIELD DEFINED IN .cfg FILE
42C APPLY AUTOMATICALLY UNIT SYSTEM USING DIMENSION DEFINED IN .cfg FILE
43C-----------------------------------------------
44C DUMMY ARGUMENTS DESCRIPTION:
45C ===================
46C
47C NAME DESCRIPTION
48C
49C NAME FIELD NAME
50C RVAL REAL VALUE OF THE FIELD
51C INDEX1 INDEX NUMBER OF THE VALUE (ROW)
52C INDEX2 INDEX NUMBER OF THE VALUE (COLUMN)
53C IS_AVAILABLE VALUE AVAILABLE IN MODEL OR NOT
54C LSUBMODEL SUBMODEL STRUCTURE
55C UNITAB UNIT ARRAY
56C============================================================================
57C M o d u l e s
58C-----------------------------------------------
59 use, INTRINSIC :: iso_c_binding, only: c_bool
60 USE message_mod
61 USE submodel_mod
62 USE unitab_mod
63C-----------------------------------------------
64C I m p l i c i t T y p e s
65C-----------------------------------------------
66#include "implicit_f.inc"
67C-----------------------------------------------
68C C o m m o n B l o c k s
69C-----------------------------------------------
70C-----------------------------------------------
71C D u m m y A r g u m e n t s
72C-----------------------------------------------
73C INPUT ARGUMENTS
74 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
75 INTEGER,INTENT(IN)::INDEX1,INDEX2
76 CHARACTER*(*),INTENT(IN)::NAME
77 TYPE(submodel_data),INTENT(IN)::LSUBMODEL(*)
78C OUTPUT ARGUMENTS
79 my_real,
80 . INTENT(OUT)::rval
81 LOGICAL,INTENT(OUT)::IS_AVAILABLE
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 INTEGER :: I,J,VALUE_TYPE,SUB_ID,IFLAGUNIT,UID
86 my_real :: fac_l,fac_m,fac_t,fac
87 real*8 dval,length_dim,mass_dim,time_dim
88 LOGICAL(KIND=C_BOOL) C_IS_AVAILABLE
89C-----------------------------------------------
90 c_is_available = .false.
91 length_dim = zero
92 mass_dim = zero
93 time_dim = zero
94 fac = one
95C--------------------------------------------------
96 CALL cpp_get_floatv_2index(name(1:len_trim(name)),len_trim(name),dval,index1,c_is_available,
97 . length_dim,mass_dim,time_dim,uid,sub_id,index2)
98 is_available = c_is_available
99C--------------------------------------------------
100C ID OFFSETS FOR //SUBMODEL
101C--------------------------------------------------
102 IF(sub_id /= 0 .AND. uid == 0)THEN
103 IF(lsubmodel(sub_id)%UID /= 0)THEN
104 uid = lsubmodel(sub_id)%UID
105 ENDIF
106 ENDIF
107C--------------------------------------------------
108c APPLY UNIT SYSTEM
109C--------------------------------------------------
110 iflagunit = 0
111 fac_m = zero
112 fac_l = zero
113 fac_t = zero
114 DO j=1,unitab%NUNITS
115 IF (unitab%UNIT_ID(j) == uid) THEN
116 fac_m = unitab%FAC_M(j)
117 fac_l = unitab%FAC_L(j)
118 fac_t = unitab%FAC_T(j)
119 iflagunit = 1
120 EXIT
121 ENDIF
122 ENDDO
123 IF (fac_m /= zero) fac = fac * (fac_m ** mass_dim )
124 IF (fac_l /= zero) fac = fac * (fac_l ** length_dim)
125 IF (fac_t /= zero) fac = fac * (fac_t ** time_dim )
126C--------------------------------------------------
127 rval = dval * fac
128C--------------------------------------------------
129 RETURN
130C
131 END
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_float_array_2indexes(name, rval, index1, index2, is_available, lsubmodel, unitab)