OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
r2r_matparam_copy.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!|| r2r_matparam_copy ../starter/source/elements/elbuf_init/r2r_matparam_copy.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE r2r_matparam_copy(MATPARAM_TAB, MATPARAM_INI, NUMMAT0 ,NUMMAT )
30C-----------------------------------------------
31C M o d u l e s
32C-----------------------------------------------
33 USE matparam_def_mod
34 USE multimat_param_mod
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C D u m m y A r g u m e n t s
41C-----------------------------------------------
42 INTEGER NUMMAT0,NUMMAT
43 TYPE(matparam_struct_) ,DIMENSION(NUMMAT ) :: MATPARAM_TAB
44 TYPE(matparam_struct_) ,DIMENSION(NUMMAT0) :: MATPARAM_INI
45C-----------------------------------------------
46C L o c a l V a r i a b l e s
47C-----------------------------------------------
48 INTEGER I,J,IFAIL,NUPARAM,NIPARAM,NFAIL,IMAT,NBMAT
49C=======================================================================
50c Copy matparam from standard materials
51c
52 DO i = 1,nummat0
53 nuparam = matparam_ini(i)%NUPARAM
54 niparam = matparam_ini(i)%NIPARAM
55 nfail = matparam_ini(i)%NFAIL
56 nbmat = matparam_ini(i)%MULTIMAT%NB
57 matparam_tab(i)%ILAW = matparam_ini(i)%ILAW
58 matparam_tab(i)%MAT_ID = matparam_ini(i)%MAT_ID
59 matparam_tab(i)%NUPARAM = nuparam
60 matparam_tab(i)%NIPARAM = niparam
61 matparam_tab(i)%NFUNC = matparam_ini(i)%NFUNC
62 matparam_tab(i)%NTABLE = matparam_ini(i)%NTABLE
63 matparam_tab(i)%NSUBMAT = matparam_ini(i)%NSUBMAT
64 matparam_tab(i)%NFAIL = nfail
65 matparam_tab(i)%IVISC = matparam_ini(i)%IVISC
66 matparam_tab(i)%IEOS = matparam_ini(i)%IEOS
67 matparam_tab(i)%ITHERM = matparam_ini(i)%ITHERM
68 matparam_tab(i)%IEXPAN = matparam_ini(i)%IEXPAN
69 matparam_tab(i)%IALE = matparam_ini(i)%IALE
70 matparam_tab(i)%ITURB = matparam_ini(i)%ITURB
71 matparam_tab(i)%HEAT_FLAG = matparam_ini(i)%HEAT_FLAG
72 matparam_tab(i)%COMPRESSIBILITY = matparam_ini(i)%COMPRESSIBILITY
73 matparam_tab(i)%SMSTR = matparam_ini(i)%SMSTR
74 matparam_tab(i)%STRAIN_FORMULATION = matparam_ini(i)%STRAIN_FORMULATION
75 matparam_tab(i)%IPRES = matparam_ini(i)%IPRES
76 matparam_tab(i)%ORTHOTROPY = matparam_ini(i)%ORTHOTROPY
77 matparam_tab(i)%NLOC = matparam_ini(i)%NLOC
78 matparam_tab(i)%IFAILWAVE = matparam_ini(i)%IFAILWAVE
79 matparam_tab(i)%IXFEM = matparam_ini(i)%IXFEM
80c
81 matparam_tab(i)%VISC%ILAW = matparam_ini(i)%VISC%ILAW
82 matparam_tab(i)%VISC%NUPARAM = matparam_ini(i)%VISC%NUPARAM
83 matparam_tab(i)%VISC%NIPARAM = matparam_ini(i)%VISC%NIPARAM
84 matparam_tab(i)%VISC%NUVAR = matparam_ini(i)%VISC%NUVAR
85 matparam_tab(i)%VISC%NFUNC = matparam_ini(i)%VISC%NFUNC
86 matparam_tab(i)%VISC%NTABLE = matparam_ini(i)%VISC%NTABLE
87c
88 matparam_tab(i)%PROP_SOLID = matparam_ini(i)%PROP_SOLID
89 matparam_tab(i)%PROP_SHELL = matparam_ini(i)%PROP_SHELL
90 matparam_tab(i)%PROP_BEAM = matparam_ini(i)%PROP_BEAM
91 matparam_tab(i)%PROP_SPRING = matparam_ini(i)%PROP_SPRING
92 matparam_tab(i)%PROP_TRUSS = matparam_ini(i)%PROP_TRUSS
93 matparam_tab(i)%PROP_SPH = matparam_ini(i)%PROP_SPH
94c
95 matparam_tab(i)%RHO = matparam_ini(i)%RHO
96 matparam_tab(i)%RHO0 = matparam_ini(i)%RHO0
97 matparam_tab(i)%YOUNG = matparam_ini(i)%YOUNG
98 matparam_tab(i)%SHEAR = matparam_ini(i)%SHEAR
99 matparam_tab(i)%BULK = matparam_ini(i)%BULK
100 matparam_tab(i)%NU = matparam_ini(i)%NU
101 matparam_tab(i)%STIFF_CONTACT = matparam_ini(i)%STIFF_CONTACT
102 matparam_tab(i)%STIFF_HGLASS = matparam_ini(i)%STIFF_HGLASS
103 matparam_tab(i)%STIFF_TSTEP = matparam_ini(i)%STIFF_TSTEP
104c
105 matparam_tab(i)%COMPATIBILITY_EOS = matparam_ini(i)%COMPATIBILITY_EOS
106c
107 ALLOCATE(matparam_tab(i)%UPARAM(nuparam))
108 IF (nuparam > 0) THEN
109 matparam_tab(i)%UPARAM(1:nuparam) = matparam_ini(i)%UPARAM(1:nuparam)
110 END IF
111!
112 ALLOCATE(matparam_tab(i)%IPARAM(niparam))
113 IF (niparam > 0) THEN
114 matparam_tab(i)%IPARAM(1:niparam) = matparam_ini(i)%IPARAM(1:niparam)
115 END IF
116
117 ALLOCATE(matparam_tab(i)%FAIL(nfail))
118 IF (nfail > 0) THEN
119 DO ifail=1,nfail
120 matparam_tab(i)%FAIL(ifail)%KEYWORD = matparam_ini(i)%FAIL(ifail)%KEYWORD
121 matparam_tab(i)%FAIL(ifail)%IRUPT = matparam_ini(i)%FAIL(ifail)%IRUPT
122 matparam_tab(i)%FAIL(ifail)%FAIL_ID = matparam_ini(i)%FAIL(ifail)%FAIL_ID
123 matparam_tab(i)%FAIL(ifail)%NUPARAM = matparam_ini(i)%FAIL(ifail)%NUPARAM
124 matparam_tab(i)%FAIL(ifail)%NIPARAM = matparam_ini(i)%FAIL(ifail)%NIPARAM
125 matparam_tab(i)%FAIL(ifail)%NUVAR = matparam_ini(i)%FAIL(ifail)%NUVAR
126 matparam_tab(i)%FAIL(ifail)%NFUNC = matparam_ini(i)%FAIL(ifail)%NFUNC
127 matparam_tab(i)%FAIL(ifail)%NTABLE = matparam_ini(i)%FAIL(ifail)%NTABLE
128 matparam_tab(i)%FAIL(ifail)%NMOD = matparam_ini(i)%FAIL(ifail)%NMOD
129 matparam_tab(i)%FAIL(ifail)%FAIL_IP = matparam_ini(i)%FAIL(ifail)%FAIL_IP
130 matparam_tab(i)%FAIL(ifail)%PTHK = matparam_ini(i)%FAIL(ifail)%PTHK
131 ALLOCATE(matparam_tab(i)%FAIL(ifail)%UPARAM(matparam_tab(i)%FAIL(ifail)%NUPARAM))
132 DO j=1,matparam_tab(i)%FAIL(ifail)%NUPARAM
133 matparam_tab(i)%FAIL(ifail)%UPARAM(j) = matparam_ini(i)%FAIL(ifail)%UPARAM(j)
134 END DO
135 ALLOCATE(matparam_tab(i)%FAIL(ifail)%IPARAM(matparam_tab(i)%FAIL(ifail)%NIPARAM))
136 DO j=1,matparam_tab(i)%FAIL(ifail)%NIPARAM
137 matparam_tab(i)%FAIL(ifail)%IPARAM(j) = matparam_ini(i)%FAIL(ifail)%IPARAM(j)
138 END DO
139 ALLOCATE(matparam_tab(i)%FAIL(ifail)%IFUNC(matparam_tab(i)%FAIL(ifail)%NFUNC))
140 DO j=1,matparam_tab(i)%FAIL(ifail)%NFUNC
141 matparam_tab(i)%FAIL(ifail)%IFUNC(j) = matparam_ini(i)%FAIL(ifail)%IFUNC(j)
142 END DO
143 ALLOCATE(matparam_tab(i)%FAIL(ifail)%TABLE(matparam_tab(i)%FAIL(ifail)%NTABLE))
144 DO j=1,matparam_tab(i)%FAIL(ifail)%NTABLE
145 matparam_tab(i)%FAIL(ifail)%TABLE(j) = matparam_ini(i)%FAIL(ifail)%TABLE(j)
146 END DO
147 END DO ! NFAIL
148 ENDIF
149c
150 ALLOCATE(matparam_tab(i)%MULTIMAT%MID(nbmat))
151 ALLOCATE(matparam_tab(i)%MULTIMAT%VFRAC(nbmat))
152 IF (nbmat > 0) THEN
153 DO imat=1,nbmat
154 matparam_tab(i)%MULTIMAT%MID(imat) = matparam_ini(i)%MULTIMAT%MID(imat)
155 matparam_tab(i)%MULTIMAT%VFRAC(imat) = matparam_ini(i)%MULTIMAT%VFRAC(imat)
156 END DO ! IMAT
157 ENDIF
158!
159 IF (matparam_tab(i)%ITHERM > 0 .or. matparam_tab(i)%IEXPAN > 0) THEN
160 matparam_tab(i)%THERM%iform = matparam_ini(i)%THERM%iform
161 matparam_tab(i)%THERM%tini = matparam_ini(i)%THERM%tini
162 matparam_tab(i)%THERM%tref = matparam_ini(i)%THERM%tref
163 matparam_tab(i)%THERM%tmelt = matparam_ini(i)%THERM%tmelt
164 matparam_tab(i)%THERM%rhocp = matparam_ini(i)%THERM%rhocp
165 matparam_tab(i)%THERM%as = matparam_ini(i)%THERM%as
166 matparam_tab(i)%THERM%bs = matparam_ini(i)%THERM%bs
167 matparam_tab(i)%THERM%al = matparam_ini(i)%THERM%al
168 matparam_tab(i)%THERM%bl = matparam_ini(i)%THERM%bl
169 matparam_tab(i)%THERM%efrac = matparam_ini(i)%THERM%efrac
170 matparam_tab(i)%THERM%func_thexp = matparam_ini(i)%THERM%func_thexp
171 matparam_tab(i)%THERM%scale_thexp = matparam_ini(i)%THERM%scale_thexp
172 END IF
173 ENDDO
174!
175 ! copy of matparam between subdomains must be completed with further evolution of MATPARAM structure
176c
177c Fill matparam for additional rad2rad void materials
178c
179 DO i = nummat0+1,nummat
180 matparam_tab(i)%ILAW = 0
181 matparam_tab(i)%MAT_ID = 0
182 matparam_tab(i)%NUPARAM = 0
183 matparam_tab(i)%NIPARAM = 0
184 matparam_tab(i)%NFUNC = 0
185 matparam_tab(i)%NTABLE = 0
186 matparam_tab(i)%NSUBMAT = 0
187 matparam_tab(i)%NFAIL = 0
188 matparam_tab(i)%IVISC = 0
189 matparam_tab(i)%IEOS = 0
190 matparam_tab(i)%ITHERM = 0
191 matparam_tab(i)%IEXPAN = 0
192 matparam_tab(i)%IALE = 0
193 matparam_tab(i)%ITURB = 0
194 matparam_tab(i)%HEAT_FLAG = 0
195 matparam_tab(i)%COMPRESSIBILITY = 0
196 matparam_tab(i)%SMSTR = 0
197 matparam_tab(i)%STRAIN_FORMULATION = 0
198 matparam_tab(i)%IPRES = 0
199 matparam_tab(i)%ORTHOTROPY = 0
200 matparam_tab(i)%NLOC = 0
201 matparam_tab(i)%IFAILWAVE = 0
202 matparam_tab(i)%IXFEM = 0
203c
204 matparam_tab(i)%VISC%ILAW = 0
205 matparam_tab(i)%VISC%NUPARAM = 0
206 matparam_tab(i)%VISC%NIPARAM = 0
207 matparam_tab(i)%VISC%NUVAR = 0
208 matparam_tab(i)%VISC%NFUNC = 0
209 matparam_tab(i)%VISC%NTABLE = 0
210c
211 matparam_tab(i)%PROP_SOLID = 1
212 matparam_tab(i)%PROP_SHELL = 1
213 matparam_tab(i)%PROP_BEAM = 3
214 matparam_tab(i)%PROP_SPRING = 2
215 matparam_tab(i)%PROP_TRUSS = 1
216 matparam_tab(i)%PROP_SPH = 1
217 matparam_tab(i)%COMPATIBILITY_EOS = 0
218c
219 matparam_tab(i)%MULTIMAT%NB = 0
220c
221 matparam_tab(i)%RHO = zero
222 matparam_tab(i)%RHO0 = zero
223 matparam_tab(i)%YOUNG = zero
224 matparam_tab(i)%SHEAR = zero
225 matparam_tab(i)%BULK = zero
226 matparam_tab(i)%NU = zero
227 matparam_tab(i)%STIFF_CONTACT = zero
228 matparam_tab(i)%STIFF_HGLASS = zero
229 matparam_tab(i)%STIFF_TSTEP = zero
230 ENDDO
231c-----------------------------------------------
232 RETURN
233 END
subroutine r2r_matparam_copy(matparam_tab, matparam_ini, nummat0, nummat)