OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_prop46.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_read_prop46 ../starter/source/properties/spring/hm_read_prop46.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_prop_generic ../starter/source/properties/hm_read_prop_generic.F
27!||--- calls -----------------------------------------------------
28!|| hm_get_floatv ../starter/source/devtools/hm_reader/hm_get_floatv.F
29!|| hm_get_floatv_dim ../starter/source/devtools/hm_reader/hm_get_floatv_dim.F
30!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
31!|| hm_option_is_encrypted ../starter/source/devtools/hm_reader/hm_option_is_encrypted.F
32!|| set_u_geo ../starter/source/user_interface/uaccess.F
33!|| set_u_pnu ../starter/source/user_interface/uaccess.F
34!||--- uses -----------------------------------------------------
35!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
36!|| message_mod ../starter/share/message_module/message_mod.F
37!|| submodel_mod ../starter/share/modules1/submodel_mod.F
38!||====================================================================
39 SUBROUTINE hm_read_prop46(IOUT,NUVAR ,PARGEO, UNITAB,IGTYP,
40 . ID,PROP_TAG,TITR,LSUBMODEL,IUNIT)
41C-----------------------------------------------
42 USE unitab_mod
43 USE message_mod
44 USE elbuftag_mod
45 USE submodel_mod
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51C----------+---------+---+---+--------------------------------------------
52C VAR | SIZE |TYP| RW| DEFINITION
53C----------+---------+---+---+--------------------------------------------
54C IIN | 1 | I | R | INPUT FILE UNIT (D00 file)
55C IOUT | 1 | I | R | OUTPUT FILE UNIT (L00 file)
56C NUVAR | 1 | I | W | NUMBER OF USER ELEMENT VARIABLES
57C----------+---------+---+---+--------------------------------------------
58C PARGEO | * | F | W | 1)SKEW NUMBER
59C | | | | 2)STIFNESS FOR INTERFACE
60C | | | | 3)FRONT WAVE OPTION
61C | | | | 4)... not yet used
62C----------+---------+---+---+--------------------------------------------
63C-----------------------------------------------
64C C o m m o n B l o c k s
65C-----------------------------------------------
66#include "tablen_c.inc"
67C----------+---------+---+---+--------------------------------------------
68C
69C This subroutine read the user geometry parameters.
70C
71C The geometry datas has to bee stored in radioss storage
72C with the function SET_U_GEO(value_index,value).
73C
74C If some standard radioss functions (time function or
75C x,y function) are used, this function IDs has to
76C bee stored with the function SET_U_PNU(func_index,func_id,KFUNC).
77C
78C If this property refers to a user material, this
79C material IDs has to bee stored with the function
80C SET_U_PNU(mat_index,mat_id,KMAT).
81C
82C If this property refers to a user property, this
83C sub-property IDs has to bee stored with the function
84C SET_U_PNU(sub_prop_index,sub_prop_id,KMAT).
85C
86C SET_U_GEO and SET_U_PNU return 0 if no error
87C SET_U_GEO and SET_U_PNU return the maximum allowed index
88C if index is larger than this maximum
89C-----------------------------------------------
90C D u m m y A r g u m e n t s
91C-----------------------------------------------
92 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
93 INTEGER IOUT,NUVAR,IGTYP,ID,IUNIT
94 my_real pargeo(*)
95 CHARACTER(LEN=NCHARTITLE) :: TITR
96 TYPE(prop_tag_) , DIMENSION(0:MAXPROP) :: PROP_TAG
97 TYPE(submodel_data),INTENT(IN)::LSUBMODEL(*)
98C=======================================================================
99C-----------------------------------------------
100C L o c a l V a r i a b l e s
101C-----------------------------------------------
102 INTEGER IFUNC1,IFUNC2,IFUNC3,IFUNC4,IFUNC5,IERROR,KFUNC,
103 . epsi,idens
104 my_real
105 . amas,elastif,xlim1,xlim2,xk,damp,fac_m, fac_l, fac_t,fscale,
106 . scalet,scalex,scalev,scalef,r_epsi,scalex_unit,scalev_unit
107 LOGICAL IS_AVAILABLE, IS_ENCRYPTED
108C-----------------------------------------------
109
110 INTEGER SET_U_PNU,SET_U_GEO
111 EXTERNAL set_u_pnu,set_u_geo
112 parameter(kfunc=29)
113 !PARAMETER (KMAT=31)
114 !PARAMETER (KPROP=30)
115C
116C=======================================================================
117C
118 is_encrypted = .false.
119 is_available = .false.
120C
121C--------------------------------------------------
122C EXTRACT DATA (IS OPTION CRYPTED)
123C--------------------------------------------------
124 CALL hm_option_is_encrypted(is_encrypted)
125C--------------------------------------------------
126C EXTRACT DATAS (INTEGER VALUES)
127C--------------------------------------------------
128 CALL hm_get_intv('FUN_A1',ifunc1,is_available,lsubmodel)
129 CALL hm_get_intv('FUN_B1',ifunc2,is_available,lsubmodel)
130 CALL hm_get_intv('FUN_C1',ifunc3,is_available,lsubmodel)
131 CALL hm_get_intv('FUN_D1',ifunc4,is_available,lsubmodel)
132 CALL hm_get_intv('MAT_IMASS',idens,is_available,lsubmodel)
133 CALL hm_get_intv('EPSI',epsi,is_available,lsubmodel)
134C--------------------------------------------------
135C EXTRACT DATAS (REAL VALUES)
136C--------------------------------------------------
137 CALL hm_get_floatv('PROP_MASS',amas,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv('STIFF0',elastif,is_available,lsubmodel,unitab)
139 CALL hm_get_floatv('VEL_X',xlim1,is_available,lsubmodel,unitab)
140 CALL hm_get_floatv('NFORCE',xlim2,is_available,lsubmodel,unitab)
141 CALL hm_get_floatv('STIFF1',xk,is_available,lsubmodel,unitab)
142 CALL hm_get_floatv('DAMP1',damp,is_available,lsubmodel,unitab)
143C-- Optional ligne
144 CALL hm_get_floatv('FScale11',scalet,is_available,lsubmodel,unitab)
145 CALL hm_get_floatv('FScale22',scalex,is_available,lsubmodel,unitab)
146 CALL hm_get_floatv('FScale21',scalev,is_available,lsubmodel,unitab)
147 CALL hm_get_floatv('fscale12',SCALEF,IS_AVAILABLE,LSUBMODEL,UNITAB)
148C
149 CALL HM_GET_FLOATV_DIM('fscale22',SCALEX_UNIT,IS_AVAILABLE,LSUBMODEL,UNITAB)
150 CALL HM_GET_FLOATV_DIM('fscale21',SCALEV_UNIT,IS_AVAILABLE,LSUBMODEL,UNITAB)
151C----------------------
152C
153.NOT. IF( IS_ENCRYPTED)THEN
154 WRITE(IOUT,1400) ID
155 ELSE
156 WRITE(IOUT,1500) ID
157 ENDIF
158C
159 FAC_M = UNITAB%FAC_M(IUNIT)
160 FAC_L = UNITAB%FAC_L(IUNIT)
161 FAC_T = UNITAB%FAC_T(IUNIT)
162 FSCALE = FAC_M * FAC_L / (FAC_T **TWO)
163c WRITE(IOUT,*) ' My User routine : Debug Start USER'
164c WRITE(IOUT,*) ' *** MAT MUSCLE ***'
165 NUVAR = 4
166C
167 !default contact stiff
168 IF (XK == ZERO)THEN
169 XK = ELASTIF
170 ENDIF
171 PARGEO(1) = ZERO
172 PARGEO(2) = XK
173C front wave = 1
174 PARGEO(3) = ONE
175C
176 IF (XLIM1 == ZERO) XLIM1 = EP30*SCALEV_UNIT
177 IF (SCALET == ZERO) SCALET = ONE*FAC_T
178 IF (SCALEX == ZERO) SCALEX = ONE*SCALEX_UNIT
179 IF (SCALEV == ZERO) SCALEV = ONE*SCALEV_UNIT
180 IF (SCALEF == ZERO) SCALEF = ONE*FSCALE
181C
182 IERROR = SET_U_GEO(1,AMAS)
183 IERROR = SET_U_GEO(2,ELASTIF)
184 IERROR = SET_U_GEO(3,XLIM1)
185 IERROR = SET_U_GEO(4,XLIM2)
186 IERROR = SET_U_GEO(5,XK)
187 IERROR = SET_U_GEO(6,DAMP)
188 R_EPSI = EPSI
189 IERROR = SET_U_GEO(7,R_EPSI)
190 IERROR = SET_U_GEO(8,SCALET)
191 IERROR = SET_U_GEO(9,SCALEX)
192 IERROR = SET_U_GEO(10,SCALEV)
193 IERROR = SET_U_GEO(11,SCALEF)
194 IERROR = SET_U_GEO(12,(REAL(IDENS)+EM05))
195C
196 IFUNC5 = 0
197 IERROR = SET_U_PNU(1,IFUNC1,KFUNC)
198 IERROR = SET_U_PNU(2,IFUNC2,KFUNC)
199 IERROR = SET_U_PNU(3,IFUNC3,KFUNC)
200 IERROR = SET_U_PNU(4,IFUNC4,KFUNC)
201 IERROR = SET_U_PNU(5,IFUNC5,KFUNC)
202C
203.NOT. IF( IS_ENCRYPTED)THEN
204 WRITE(IOUT,1000)
205 . AMAS,ELASTIF,XLIM1,XLIM2,XK,DAMP,EPSI,
206 . IFUNC1,IFUNC2,IFUNC3,
207 . IFUNC4,IDENS,SCALEF,SCALET,SCALEX,SCALEV
208 ENDIF
209C
210C-----------------------------
211C PROPERTY BUFFER
212C-----------------------------
213
214 PROP_TAG(IGTYP)%G_FOR = 3
215 PROP_TAG(IGTYP)%G_MOM = 5
216 PROP_TAG(IGTYP)%G_SKEW = 6
217 PROP_TAG(IGTYP)%G_MASS = 1
218 PROP_TAG(IGTYP)%G_V_REPCVT = 3 ! -- VITESSES REPERE CONVECTEE (V_REPCVT)
219 PROP_TAG(IGTYP)%G_VR_REPCVT = 3 ! -- VITESSES REPERE CONVECTEE (VR_REPCVT)
220 PROP_TAG(IGTYP)%G_NUVAR = NUVAR
221C
222 RETURN
223C
224 1000 FORMAT(
225 & 5X,'mass per element . . . . . . . . . . . . .=',E12.4/,
226 & 5X,'stiffness per unit length. . . . . . . . .=',E12.4/,
227 & 5X,'maximum strain rate. . . . . . . . . . . .=',E12.4/,
228 & 5X,'maximum force. . . . . . . . . . . . . . .=',E12.4/,
229 & 5X,'stiffness for interface. . . . . . . . . .=',E12.4/,
230 & 5X,'damping VALUE. . . . . . . . . . . . . . .=',E12.4/,
231 & 5X,'elongation calculation flag:1=l;0=l/l_o-1 =',I10/,
232C & 5X,' (1: elongation=L , 0(def): =(L / L_0) -1)',E12.4/,
233 & 5X,'force vs. time active FUNCTION id. . . . .=',I10/,
234 & 5X,'force vs. deflection active function id. .=',I10/,
235 & 5X,'force vs. velocity active function id. . .=',I10/,
236 & 5X,'force vs. deflection passive function id .=',I10/,
237C & 5X,'DEBUGGING FUNCTION ID. . . . . . . . . . .=',I10/,
238 & 5X,'flag for mass input. . . . . . . . . . . .=',I10/,
239 & 5X,'force scale factor . . . . . . . . . . . .=',E12.4/,
240 & 5X,'time scale factor . . . . . . . . . . . .=',E12.4/,
241 & 5X,'elongation scale factor . . . . . . . . .=',E12.4/,
242 & 5X,'velocity scale factor . . . . . . . . . .=',E12.4//)
243C
244 1400 FORMAT(
245 & 5X,'user property set'/,
246 & 5X,'property set number . . . . . . . . . .=',I10)
247C
248 1500 FORMAT(
249 & 5X,'user property set'/,
250 & 5X,'property set number . . . . . . . . . .=',I10,
251 & 5X,'confidential data'//)
252C
253 END
#define my_real
Definition cppsort.cpp:32
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
Definition damping.F:882
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine hm_read_prop46(iout, nuvar, pargeo, unitab, igtyp, id, prop_tag, titr, lsubmodel, iunit)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle