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