OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
law90_upd.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!|| law90_upd ../starter/source/materials/mat/mat090/law90_upd.F
25!||--- called by ------------------------------------------------------
26!|| updmat ../starter/source/materials/updmat.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| func_slope ../starter/source/tools/curve/func_slope.F
30!||--- uses -----------------------------------------------------
31!|| message_mod ../starter/share/message_module/message_mod.F
32!|| table_mod ../starter/share/modules1/table_mod.F
33!||====================================================================
34 SUBROUTINE law90_upd(IOUT,TITR,MAT_ID,UPARAM,IPM, FUNC_ID,NPC,PLD,PM,
35 . NFUNCT)
36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE message_mod
40 USE table_mod
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "param_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 CHARACTER(LEN=NCHARTITLE) :: TITR
54 INTEGER ,INTENT(IN) :: NFUNCT
55 INTEGER MAT_ID,IOUT,ID_F1,ID_F2
56 INTEGER NPC(*), FUNC_ID(NFUNCT), IPM(NPROPMI)
57 my_real
58 . uparam(*),pld(*),pm(npropm)
59! TYPE(TTABLE) TABLE(*)
60 TARGET ipm
61 INTEGER, DIMENSION(:), POINTER :: IFUNC
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER NFUNC,I,J
66 INTEGER IPRINT, LP,IndexDesign0
67
68 my_real
69 . stiff,stiffc,stifft, emax_curve, emin_curve,eini_curve,
70 . stiffmin,stiffmax,stiffini,stfavg,scalefac,e0,
71 . epsmax,ec_max,emax,g,c1,nu
72
73 COMMON /mincfprt/iprint, lp
74 COMMON /index_sqp/indexdesign0
75C=======================================================================
76 nfunc = ipm(10)
77 ifunc => ipm(10+1:10+nfunc)
78C=======================================================================
79c
80 emax_curve = zero
81 emin_curve = ep20
82 eini_curve = zero
83 epsmax = one
84 DO j = 1, nfunc
85 scalefac= uparam(10 + nfunc + j )
86 CALL func_slope(ifunc(j),scalefac,npc,pld,stiffmin,stiffmax,stiffini,stfavg)
87 emax_curve = max(emax_curve, stiffmax )
88 emin_curve = min(emin_curve, stiffmin)
89 eini_curve = max(eini_curve, stiffini)
90 ENDDO ! NFUNC
91 e0 = uparam(1)
92 IF(e0 < eini_curve) THEN
93 e0 = eini_curve
94 uparam(1) = e0
95 CALL ancmsg(msgid=865, msgtype=msgwarning, anmode=aninfo_blind_1,
96 . i1=mat_id,
97 . c1=titr,
98 . r1=e0)
99 ENDIF
100 IF(emax_curve <= e0) THEN
101 emax = e0
102 ELSE
103 emax = min(emax_curve,hundred*e0 ) !
104 ENDIF
105 ec_max = max(e0,emax)
106 uparam(11 + 2*nfunc) = emax
107 uparam(12 + 2*nfunc) = epsmax
108 nu = uparam(5)
109 c1 = e0/three/(one - two*nu)
110 g = half*e0/(one + nu)
111 pm(20) = e0
112 pm(22) = g
113 pm(24) = ec_max
114 pm(32) = c1
115!
116 WRITE(iout,1000)
117 WRITE(iout,1001) trim(titr),mat_id,90
118 WRITE(iout,1002) emax
119 WRITE(iout,1003) ec_max
120c----------------
121 RETURN
1221000 FORMAT(
123 & 5x,' TABULATED NON LINEAR VISCO ELASTIC LAW',/,
124 & 5x,' ----------------------------- --------',//)
1251001 FORMAT(/
126 & 5x,a,/,
127 & 5x,'MATERIAL NUMBER . . . . . . . . . . . .=',i10/,
128 & 5x,'MATERIAL LAW. . . . . . . . . . . . . .=',i10/)
1291002 FORMAT(
130 & 5x,'MAXIMUM YOUNG''S MODULUS. . . . . . . .=',1pg20.13/)
1311003 FORMAT(
132 & 5x,'YOUNG''S MODULUS FOR HG COMPUTE . . . .=',1pg20.13/)
133
134 END
#define my_real
Definition cppsort.cpp:32
subroutine func_slope(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition func_slope.F:37
subroutine law90_upd(iout, titr, mat_id, uparam, ipm, func_id, npc, pld, pm, nfunct)
Definition law90_upd.F:36
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889