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