OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
law111_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/.
23C
24!||====================================================================
25!|| law111_upd ../starter/source/materials/mat/mat111/law111_upd.F
26!||--- called by ------------------------------------------------------
27!|| updmat ../starter/source/materials/updmat.F
28!||--- calls -----------------------------------------------------
29!|| ancmsg ../starter/source/output/message/message.F
30!|| arret ../starter/source/system/arret.F
31!|| func_slope ../starter/source/tools/curve/func_slope.F
32!||--- uses -----------------------------------------------------
33!|| message_mod ../starter/share/message_module/message_mod.F
34!|| table_mod ../starter/share/modules1/table_mod.F
35!||====================================================================
36 SUBROUTINE law111_upd(IOUT,TITR ,MAT_ID,UPARAM,NFUNC,
37 . IFUNC, FUNC_ID,NPC ,PLD ,PM,IPM)
38C-----------------------------------------------
39C M o d u l e s
40C-----------------------------------------------
41 USE message_mod
42 USE table_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "param_c.inc"
52C-----------------------------------------------
53C D u m m y A r g u m e n t s
54C-----------------------------------------------
55 CHARACTER(LEN=NCHARTITLE) :: TITR
56 INTEGER MAT_ID,IOUT, NFUNC
57 INTEGER NPC(*), FUNC_ID(*), IPM(NPROPMI)
58 my_real uparam(*),pld(*),pm(npropm)
59 INTEGER, DIMENSION(NFUNC):: IFUNC
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER N,K,ITEST,II,JJ,NSTART,IC1,IC2,NOGD,NDATA,NMULA,IFC,ICRYPT,
64 . icheck,ncomp
65 my_real e,nu,gs,rbulk,d,young,errtol,ave_slope,mu,mu_max,mu_min,dx,
66 . scalefac,stiffmin,stiffmax,stiffini,stfavg
67 my_real , DIMENSION(:), ALLOCATABLE :: stress,stretch
68C====================================================================
69! IDENTIFICATION
70!====================================================================
71 icrypt = 0 !
72 nstart = 2
73 errtol = fiveem3
74 ifc = ifunc(1)
75 ic1 = npc(ifc)
76 ic2 = npc(ifc + 1)
77 scalefac = uparam(3)
78 nogd=(ic2-ic1)/2
79 ndata=nogd
80C
81C !! check if the curve don't have (0,0) point.
82C
83 icheck = 0
84 ncomp = 0
85 DO jj = ic1,ic2 - 4,2
86 IF (pld(jj) == zero .AND. pld(jj + 1) == zero )icheck = 1
87 IF (pld(jj) < zero ) ncomp = ncomp + 1
88 ENDDO
89 IF (icheck == 0 ) THEN
90 ! Error message
91 CALL ancmsg(msgid=1896,
92 . msgtype=msgerror,
93 . anmode=aninfo,
94 . i1=mat_id,
95 . c1=titr,
96 . i2=func_id(ifc)) ! Id_function
97 CALL arret(2)
98 ENDIF
99!! IF (NCOMP == 0 ) THEN ! No curve definition in compression => warning
100!! CALL ANCMSG(MSGID=1917,
101!! . MSGTYPE=MSGWARNING,
102!! . ANMODE=ANINFO,
103!! . I1=MAT_ID,
104!! . C1=TITR,
105!! . I2=FUNC_ID(IFC)) ! Id_function
106!! ENDIF
107c
108 ALLOCATE (stretch(nogd))
109 ALLOCATE (stress(nogd))
110c
111 ave_slope = zero
112 jj=0
113 stretch=zero
114 stress=zero
115 mu=zero
116 rbulk=zero
117 gs=zero
118c
119 CALL func_slope(ifunc(1),scalefac,npc,pld,stiffmin,stiffmax,stiffini,stfavg)
120C
121 nu = uparam(1)
122 !!GS = STIFFMAX
123 gs = stiffini
124C
125 rbulk=two*gs*(one+nu)
126 . /max(em30,three*(one-two*nu))
127 uparam(4) = gs
128 uparam(5) = rbulk
129 uparam(6) = uparam(4)
130 IF(ncomp == 0) uparam(7) = 1
131!! UPARAM(6)=TWO*STIFFMIN*(ONE+NU)
132!! . /MAX(EM30,THREE*(ONE-TWO*NU))
133c parameters
134 young = two*gs*(one + nu)
135 pm(20) = young
136 pm(21) = nu
137 pm(22) = gs
138 pm(24) = young/(one - nu**2)
139 pm(32) = rbulk
140 pm(100) = rbulk !PARMAT(1)
141C-----------
142C Formulation for solid elements time step computation.
143 ipm(252)= 2
144 pm(105) = two*gs/(rbulk + four_over_3*gs)
145C
146 IF (icrypt == 0) THEN
147 WRITE(iout,1000)
148 WRITE(iout,1100)gs,rbulk
149 ENDIF
150c----------------
151c end of optimization loop
152c----------------
153 RETURN
154c----------------
155 1000 FORMAT
156 & (//5x, ' PARAMETERS FOR HYPERELASTIC_MATERIAL LAW111 ' ,/,
157 & 5x, ' --------------------------------------------------')
158 1100 FORMAT(
159C
160 & 5x,'MARLOW LAW',/,
161 & 5x,'INITIAL SHEAR MODULUS. . . . . . . . . . .=',1pg20.13/
162 & 5x,'BULK MODULUS . . . . . . . . . . . . . . .=',1pg20.13//)
163c-----------
164 RETURN
165 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 law111_upd(iout, titr, mat_id, uparam, nfunc, ifunc, func_id, npc, pld, pm, ipm)
Definition law111_upd.F:38
#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
subroutine arret(nn)
Definition arret.F:87